From 6b1866d1021a87090bb0a3c856acd2d1f47e3c23 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Wed, 13 Sep 2017 12:30:50 -0700 Subject: [PATCH] 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 0000000..2e9b303 --- /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 00cbbdf..9d3ac0b 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 0000000..00da804 --- /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 0000000..13ae1c3 --- /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 2107107..c91f149 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 72f1506..928f43a 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 0000000..75f4192 --- /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 0000000..d89cde3 --- /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 0000000..81291d5 --- /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 0000000..aa76b0c --- /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 0000000..fc138ac --- /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 0000000..016f1c9 --- /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 0000000..004265d --- /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 0000000..dfe3b35 --- /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 0000000..0288b27 --- /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 0000000..363d92c --- /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 0000000..3d5bb00 --- /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 0000000..4125e31 --- /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 0000000..d6dc934 --- /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 0000000..cb9cd9e --- /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 0000000..69f41d6 --- /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 0000000..ffdea53 --- /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 0000000..8f3d7fb --- /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 0000000..1fb2d9d --- /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 0000000..812404f --- /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 0000000..843ae59 --- /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 0000000..9582fb1 --- /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 0000000..81e77a7 --- /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 0000000..132d896 --- /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":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6285b1b --- /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 0000000..f73cfb1 --- /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 0000000..8b2bb3a --- /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 0000000..e7de65e --- /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 0000000..29d78d4 --- /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 0000000..1f7b420 --- /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 0000000..1e09e39 --- /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 0000000..f8d5f33 --- /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 0000000..d3c2385 --- /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 0000000..4a8f7e4 --- /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 0000000..4c84a0b --- /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 0000000..18092ef --- /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 0000000..7f03d98 --- /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 0000000..45284b6 --- /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 0000000..4c78fae --- /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