Update NPM packages
This commit is contained in:
		
							parent
							
								
									40fe78158e
								
							
						
					
					
						commit
						85bdb8f4a9
					
				
							
								
								
									
										629
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										629
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -2453,6 +2453,77 @@ if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { | |||||||
| exports.debug = debug; // for test
 | exports.debug = debug; // for test
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 176: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const core_1 = __webpack_require__(470); | ||||||
|  | /** | ||||||
|  |  * Status Reporter that displays information about the progress/status of an artifact that is being uploaded or downloaded | ||||||
|  |  * | ||||||
|  |  * Variable display time that can be adjusted using the displayFrequencyInMilliseconds variable | ||||||
|  |  * The total status of the upload/download gets displayed according to this value | ||||||
|  |  * If there is a large file that is being uploaded, extra information about the individual status can also be displayed using the updateLargeFileStatus function | ||||||
|  |  */ | ||||||
|  | class StatusReporter { | ||||||
|  |     constructor(displayFrequencyInMilliseconds) { | ||||||
|  |         this.totalNumberOfFilesToProcess = 0; | ||||||
|  |         this.processedCount = 0; | ||||||
|  |         this.largeFiles = new Map(); | ||||||
|  |         this.totalFileStatus = undefined; | ||||||
|  |         this.largeFileStatus = undefined; | ||||||
|  |         this.displayFrequencyInMilliseconds = displayFrequencyInMilliseconds; | ||||||
|  |     } | ||||||
|  |     setTotalNumberOfFilesToProcess(fileTotal) { | ||||||
|  |         this.totalNumberOfFilesToProcess = fileTotal; | ||||||
|  |     } | ||||||
|  |     start() { | ||||||
|  |         // displays information about the total upload/download status
 | ||||||
|  |         this.totalFileStatus = setInterval(() => { | ||||||
|  |             // display 1 decimal place without any rounding
 | ||||||
|  |             const percentage = this.formatPercentage(this.processedCount, this.totalNumberOfFilesToProcess); | ||||||
|  |             core_1.info(`Total file count: ${this.totalNumberOfFilesToProcess} ---- Processed file #${this.processedCount} (${percentage.slice(0, percentage.indexOf('.') + 2)}%)`); | ||||||
|  |         }, this.displayFrequencyInMilliseconds); | ||||||
|  |         // displays extra information about any large files that take a significant amount of time to upload or download every 1 second
 | ||||||
|  |         this.largeFileStatus = setInterval(() => { | ||||||
|  |             for (const value of Array.from(this.largeFiles.values())) { | ||||||
|  |                 core_1.info(value); | ||||||
|  |             } | ||||||
|  |             // delete all entires in the map after displaying the information so it will not be displayed again unless explicitly added
 | ||||||
|  |             this.largeFiles.clear(); | ||||||
|  |         }, 1000); | ||||||
|  |     } | ||||||
|  |     // if there is a large file that is being uploaded in chunks, this is used to display extra information about the status of the upload
 | ||||||
|  |     updateLargeFileStatus(fileName, numerator, denominator) { | ||||||
|  |         // display 1 decimal place without any rounding
 | ||||||
|  |         const percentage = this.formatPercentage(numerator, denominator); | ||||||
|  |         const displayInformation = `Uploading ${fileName} (${percentage.slice(0, percentage.indexOf('.') + 2)}%)`; | ||||||
|  |         // any previously added display information should be overwritten for the specific large file because a map is being used
 | ||||||
|  |         this.largeFiles.set(fileName, displayInformation); | ||||||
|  |     } | ||||||
|  |     stop() { | ||||||
|  |         if (this.totalFileStatus) { | ||||||
|  |             clearInterval(this.totalFileStatus); | ||||||
|  |         } | ||||||
|  |         if (this.largeFileStatus) { | ||||||
|  |             clearInterval(this.largeFileStatus); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     incrementProcessedCount() { | ||||||
|  |         this.processedCount++; | ||||||
|  |     } | ||||||
|  |     formatPercentage(numerator, denominator) { | ||||||
|  |         // toFixed() rounds, so use extra precision to display accurate information even though 4 decimal places are not displayed
 | ||||||
|  |         return ((numerator / denominator) * 100).toFixed(4).toString(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.StatusReporter = StatusReporter; | ||||||
|  | //# sourceMappingURL=status-reporter.js.map
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 211: | /***/ 211: | ||||||
| @ -2480,75 +2551,6 @@ exports.create = create; | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 221: |  | ||||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { |  | ||||||
| 
 |  | ||||||
| "use strict"; |  | ||||||
| 
 |  | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); |  | ||||||
| const core_1 = __webpack_require__(470); |  | ||||||
| /** |  | ||||||
|  * Upload Status Reporter that displays information about the progress/status of an artifact that is being uploaded |  | ||||||
|  * |  | ||||||
|  * Every 10 seconds, the total status of the upload gets displayed. If there is a large file that is being uploaded, |  | ||||||
|  * extra information about the individual status of an upload can also be displayed |  | ||||||
|  */ |  | ||||||
| class UploadStatusReporter { |  | ||||||
|     constructor() { |  | ||||||
|         this.totalNumberOfFilesToUpload = 0; |  | ||||||
|         this.processedCount = 0; |  | ||||||
|         this.largeUploads = new Map(); |  | ||||||
|         this.totalUploadStatus = undefined; |  | ||||||
|         this.largeFileUploadStatus = undefined; |  | ||||||
|     } |  | ||||||
|     setTotalNumberOfFilesToUpload(fileTotal) { |  | ||||||
|         this.totalNumberOfFilesToUpload = fileTotal; |  | ||||||
|     } |  | ||||||
|     start() { |  | ||||||
|         const _this = this; |  | ||||||
|         // displays information about the total upload status every 10 seconds
 |  | ||||||
|         this.totalUploadStatus = setInterval(function () { |  | ||||||
|             // display 1 decimal place without any rounding
 |  | ||||||
|             const percentage = _this.formatPercentage(_this.processedCount, _this.totalNumberOfFilesToUpload); |  | ||||||
|             core_1.info(`Total file(s): ${_this.totalNumberOfFilesToUpload} ---- Processed file #${_this.processedCount} (${percentage.slice(0, percentage.indexOf('.') + 2)}%)`); |  | ||||||
|         }, 10000); |  | ||||||
|         // displays extra information about any large files that take a significant amount of time to upload every 1 second
 |  | ||||||
|         this.largeFileUploadStatus = setInterval(function () { |  | ||||||
|             for (const value of Array.from(_this.largeUploads.values())) { |  | ||||||
|                 core_1.info(value); |  | ||||||
|             } |  | ||||||
|             // delete all entires in the map after displaying the information so it will not be displayed again unless explicitly added
 |  | ||||||
|             _this.largeUploads = new Map(); |  | ||||||
|         }, 1000); |  | ||||||
|     } |  | ||||||
|     updateLargeFileStatus(fileName, numerator, denomiator) { |  | ||||||
|         // display 1 decimal place without any rounding
 |  | ||||||
|         const percentage = this.formatPercentage(numerator, denomiator); |  | ||||||
|         const displayInformation = `Uploading ${fileName} (${percentage.slice(0, percentage.indexOf('.') + 2)}%)`; |  | ||||||
|         // any previously added display information should be overwritten for the specific large file because a map is being used
 |  | ||||||
|         this.largeUploads.set(fileName, displayInformation); |  | ||||||
|     } |  | ||||||
|     stop() { |  | ||||||
|         if (this.totalUploadStatus) { |  | ||||||
|             clearInterval(this.totalUploadStatus); |  | ||||||
|         } |  | ||||||
|         if (this.largeFileUploadStatus) { |  | ||||||
|             clearInterval(this.largeFileUploadStatus); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     incrementProcessedCount() { |  | ||||||
|         this.processedCount++; |  | ||||||
|     } |  | ||||||
|     formatPercentage(numerator, denominator) { |  | ||||||
|         // toFixed() rounds, so use extra precision to display accurate information even though 4 decimal places are not displayed
 |  | ||||||
|         return ((numerator / denominator) * 100).toFixed(4).toString(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| exports.UploadStatusReporter = UploadStatusReporter; |  | ||||||
| //# sourceMappingURL=upload-status-reporter.js.map
 |  | ||||||
| 
 |  | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 226: | /***/ 226: | ||||||
| /***/ (function(__unusedmodule, exports) { | /***/ (function(__unusedmodule, exports) { | ||||||
| 
 | 
 | ||||||
| @ -3809,6 +3811,8 @@ class DefaultArtifactClient { | |||||||
|             else { |             else { | ||||||
|                 // Create all necessary directories recursively before starting any download
 |                 // Create all necessary directories recursively before starting any download
 | ||||||
|                 yield utils_1.createDirectoriesForArtifact(downloadSpecification.directoryStructure); |                 yield utils_1.createDirectoriesForArtifact(downloadSpecification.directoryStructure); | ||||||
|  |                 core.info('Directory structure has been setup for the artifact'); | ||||||
|  |                 yield utils_1.createEmptyFilesForArtifact(downloadSpecification.emptyFilesToCreate); | ||||||
|                 yield downloadHttpClient.downloadSingleArtifact(downloadSpecification.filesToDownload); |                 yield downloadHttpClient.downloadSingleArtifact(downloadSpecification.filesToDownload); | ||||||
|             } |             } | ||||||
|             return { |             return { | ||||||
| @ -3843,6 +3847,7 @@ class DefaultArtifactClient { | |||||||
|                 } |                 } | ||||||
|                 else { |                 else { | ||||||
|                     yield utils_1.createDirectoriesForArtifact(downloadSpecification.directoryStructure); |                     yield utils_1.createDirectoriesForArtifact(downloadSpecification.directoryStructure); | ||||||
|  |                     yield utils_1.createEmptyFilesForArtifact(downloadSpecification.emptyFilesToCreate); | ||||||
|                     yield downloadHttpClient.downloadSingleArtifact(downloadSpecification.filesToDownload); |                     yield downloadHttpClient.downloadSingleArtifact(downloadSpecification.filesToDownload); | ||||||
|                 } |                 } | ||||||
|                 response.push({ |                 response.push({ | ||||||
| @ -4018,22 +4023,34 @@ run(); | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | // The number of concurrent uploads that happens at the same time
 | ||||||
| function getUploadFileConcurrency() { | function getUploadFileConcurrency() { | ||||||
|     return 2; |     return 2; | ||||||
| } | } | ||||||
| exports.getUploadFileConcurrency = getUploadFileConcurrency; | exports.getUploadFileConcurrency = getUploadFileConcurrency; | ||||||
|  | // When uploading large files that can't be uploaded with a single http call, this controls
 | ||||||
|  | // the chunk size that is used during upload
 | ||||||
| function getUploadChunkSize() { | function getUploadChunkSize() { | ||||||
|     return 4 * 1024 * 1024; // 4 MB Chunks
 |     return 4 * 1024 * 1024; // 4 MB Chunks
 | ||||||
| } | } | ||||||
| exports.getUploadChunkSize = getUploadChunkSize; | exports.getUploadChunkSize = getUploadChunkSize; | ||||||
| function getUploadRetryCount() { | // The maximum number of retries that can be attempted before an upload or download fails
 | ||||||
|     return 3; | function getRetryLimit() { | ||||||
|  |     return 5; | ||||||
| } | } | ||||||
| exports.getUploadRetryCount = getUploadRetryCount; | exports.getRetryLimit = getRetryLimit; | ||||||
| function getRetryWaitTimeInMilliseconds() { | // With exponential backoff, the larger the retry count, the larger the wait time before another attempt
 | ||||||
|     return 10000; | // The retry multiplier controls by how much the backOff time increases depending on the number of retries
 | ||||||
|  | function getRetryMultiplier() { | ||||||
|  |     return 1.5; | ||||||
| } | } | ||||||
| exports.getRetryWaitTimeInMilliseconds = getRetryWaitTimeInMilliseconds; | exports.getRetryMultiplier = getRetryMultiplier; | ||||||
|  | // The initial wait time if an upload or download fails and a retry is being attempted for the first time
 | ||||||
|  | function getInitialRetryIntervalInMilliseconds() { | ||||||
|  |     return 3000; | ||||||
|  | } | ||||||
|  | exports.getInitialRetryIntervalInMilliseconds = getInitialRetryIntervalInMilliseconds; | ||||||
|  | // The number of concurrent downloads that happens at the same time
 | ||||||
| function getDownloadFileConcurrency() { | function getDownloadFileConcurrency() { | ||||||
|     return 2; |     return 2; | ||||||
| } | } | ||||||
| @ -5218,12 +5235,14 @@ const path = __importStar(__webpack_require__(622)); | |||||||
|  * @param includeRootDirectory specifies if there should be an extra directory (denoted by the artifact name) where the artifact files should be downloaded to |  * @param includeRootDirectory specifies if there should be an extra directory (denoted by the artifact name) where the artifact files should be downloaded to | ||||||
|  */ |  */ | ||||||
| function getDownloadSpecification(artifactName, artifactEntries, downloadPath, includeRootDirectory) { | function getDownloadSpecification(artifactName, artifactEntries, downloadPath, includeRootDirectory) { | ||||||
|  |     // use a set for the directory paths so that there are no duplicates
 | ||||||
|     const directories = new Set(); |     const directories = new Set(); | ||||||
|     const specifications = { |     const specifications = { | ||||||
|         rootDownloadLocation: includeRootDirectory |         rootDownloadLocation: includeRootDirectory | ||||||
|             ? path.join(downloadPath, artifactName) |             ? path.join(downloadPath, artifactName) | ||||||
|             : downloadPath, |             : downloadPath, | ||||||
|         directoryStructure: [], |         directoryStructure: [], | ||||||
|  |         emptyFilesToCreate: [], | ||||||
|         filesToDownload: [] |         filesToDownload: [] | ||||||
|     }; |     }; | ||||||
|     for (const entry of artifactEntries) { |     for (const entry of artifactEntries) { | ||||||
| @ -5241,6 +5260,11 @@ function getDownloadSpecification(artifactName, artifactEntries, downloadPath, i | |||||||
|             if (entry.itemType === 'file') { |             if (entry.itemType === 'file') { | ||||||
|                 // Get the directories that we need to create from the filePath for each individual file
 |                 // Get the directories that we need to create from the filePath for each individual file
 | ||||||
|                 directories.add(path.dirname(filePath)); |                 directories.add(path.dirname(filePath)); | ||||||
|  |                 if (entry.fileLength === 0) { | ||||||
|  |                     // An empty file was uploaded, create the empty files locally so that no extra http calls are made
 | ||||||
|  |                     specifications.emptyFilesToCreate.push(filePath); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|                     specifications.filesToDownload.push({ |                     specifications.filesToDownload.push({ | ||||||
|                         sourceLocation: entry.contentLocation, |                         sourceLocation: entry.contentLocation, | ||||||
|                         targetPath: filePath |                         targetPath: filePath | ||||||
| @ -5248,6 +5272,7 @@ function getDownloadSpecification(artifactName, artifactEntries, downloadPath, i | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|     specifications.directoryStructure = Array.from(directories); |     specifications.directoryStructure = Array.from(directories); | ||||||
|     return specifications; |     return specifications; | ||||||
| } | } | ||||||
| @ -5290,6 +5315,7 @@ var HttpCodes; | |||||||
|     HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; |     HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; | ||||||
|     HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; |     HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; | ||||||
|     HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; |     HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; | ||||||
|  |     HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; | ||||||
|     HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; |     HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; | ||||||
|     HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; |     HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; | ||||||
|     HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; |     HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; | ||||||
| @ -6458,6 +6484,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const fs = __importStar(__webpack_require__(747)); | const fs = __importStar(__webpack_require__(747)); | ||||||
|  | const core = __importStar(__webpack_require__(470)); | ||||||
| const tmp = __importStar(__webpack_require__(875)); | const tmp = __importStar(__webpack_require__(875)); | ||||||
| const stream = __importStar(__webpack_require__(794)); | const stream = __importStar(__webpack_require__(794)); | ||||||
| const utils_1 = __webpack_require__(870); | const utils_1 = __webpack_require__(870); | ||||||
| @ -6465,15 +6492,14 @@ const config_variables_1 = __webpack_require__(401); | |||||||
| const util_1 = __webpack_require__(669); | const util_1 = __webpack_require__(669); | ||||||
| const url_1 = __webpack_require__(835); | const url_1 = __webpack_require__(835); | ||||||
| const perf_hooks_1 = __webpack_require__(630); | const perf_hooks_1 = __webpack_require__(630); | ||||||
| const upload_status_reporter_1 = __webpack_require__(221); | const status_reporter_1 = __webpack_require__(176); | ||||||
| const core_1 = __webpack_require__(470); |  | ||||||
| const http_manager_1 = __webpack_require__(452); | const http_manager_1 = __webpack_require__(452); | ||||||
| const upload_gzip_1 = __webpack_require__(647); | const upload_gzip_1 = __webpack_require__(647); | ||||||
| const stat = util_1.promisify(fs.stat); | const stat = util_1.promisify(fs.stat); | ||||||
| class UploadHttpClient { | class UploadHttpClient { | ||||||
|     constructor() { |     constructor() { | ||||||
|         this.uploadHttpManager = new http_manager_1.HttpManager(config_variables_1.getUploadFileConcurrency()); |         this.uploadHttpManager = new http_manager_1.HttpManager(config_variables_1.getUploadFileConcurrency()); | ||||||
|         this.statusReporter = new upload_status_reporter_1.UploadStatusReporter(); |         this.statusReporter = new status_reporter_1.StatusReporter(10000); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Creates a file container for the new artifact in the remote blob storage/file service |      * Creates a file container for the new artifact in the remote blob storage/file service | ||||||
| @ -6488,18 +6514,22 @@ class UploadHttpClient { | |||||||
|             }; |             }; | ||||||
|             const data = JSON.stringify(parameters, null, 2); |             const data = JSON.stringify(parameters, null, 2); | ||||||
|             const artifactUrl = utils_1.getArtifactUrl(); |             const artifactUrl = utils_1.getArtifactUrl(); | ||||||
|             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediatly
 |             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 | ||||||
|             const client = this.uploadHttpManager.getClient(0); |             const client = this.uploadHttpManager.getClient(0); | ||||||
|             const requestOptions = utils_1.getRequestOptions('application/json', false, false); |             const requestOptions = utils_1.getUploadRequestOptions('application/json', false); | ||||||
|             const rawResponse = yield client.post(artifactUrl, data, requestOptions); |             const rawResponse = yield client.post(artifactUrl, data, requestOptions); | ||||||
|             const body = yield rawResponse.readBody(); |             const body = yield rawResponse.readBody(); | ||||||
|             if (utils_1.isSuccessStatusCode(rawResponse.message.statusCode) && body) { |             if (utils_1.isSuccessStatusCode(rawResponse.message.statusCode) && body) { | ||||||
|                 return JSON.parse(body); |                 return JSON.parse(body); | ||||||
|             } |             } | ||||||
|  |             else if (utils_1.isForbiddenStatusCode(rawResponse.message.statusCode)) { | ||||||
|  |                 // if a 403 is returned when trying to create a file container, the customer has exceeded
 | ||||||
|  |                 // their storage quota so no new artifact containers can be created
 | ||||||
|  |                 throw new Error(`Artifact storage quota has been hit. Unable to upload any new artifacts`); | ||||||
|  |             } | ||||||
|             else { |             else { | ||||||
|                 // eslint-disable-next-line no-console
 |                 utils_1.displayHttpDiagnostics(rawResponse); | ||||||
|                 console.log(rawResponse); |                 throw new Error(`Unable to create a container for the artifact ${artifactName} at ${artifactUrl}`); | ||||||
|                 throw new Error(`Unable to create a container for the artifact ${artifactName}`); |  | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @ -6513,7 +6543,7 @@ class UploadHttpClient { | |||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             const FILE_CONCURRENCY = config_variables_1.getUploadFileConcurrency(); |             const FILE_CONCURRENCY = config_variables_1.getUploadFileConcurrency(); | ||||||
|             const MAX_CHUNK_SIZE = config_variables_1.getUploadChunkSize(); |             const MAX_CHUNK_SIZE = config_variables_1.getUploadChunkSize(); | ||||||
|             core_1.debug(`File Concurrency: ${FILE_CONCURRENCY}, and Chunk Size: ${MAX_CHUNK_SIZE}`); |             core.debug(`File Concurrency: ${FILE_CONCURRENCY}, and Chunk Size: ${MAX_CHUNK_SIZE}`); | ||||||
|             const parameters = []; |             const parameters = []; | ||||||
|             // by default, file uploads will continue if there is an error unless specified differently in the options
 |             // by default, file uploads will continue if there is an error unless specified differently in the options
 | ||||||
|             let continueOnError = true; |             let continueOnError = true; | ||||||
| @ -6540,7 +6570,7 @@ class UploadHttpClient { | |||||||
|             let uploadFileSize = 0; |             let uploadFileSize = 0; | ||||||
|             let totalFileSize = 0; |             let totalFileSize = 0; | ||||||
|             let abortPendingFileUploads = false; |             let abortPendingFileUploads = false; | ||||||
|             this.statusReporter.setTotalNumberOfFilesToUpload(filesToUpload.length); |             this.statusReporter.setTotalNumberOfFilesToProcess(filesToUpload.length); | ||||||
|             this.statusReporter.start(); |             this.statusReporter.start(); | ||||||
|             // only allow a certain amount of files to be uploaded at once, this is done to reduce potential errors
 |             // only allow a certain amount of files to be uploaded at once, this is done to reduce potential errors
 | ||||||
|             yield Promise.all(parallelUploads.map((index) => __awaiter(this, void 0, void 0, function* () { |             yield Promise.all(parallelUploads.map((index) => __awaiter(this, void 0, void 0, function* () { | ||||||
| @ -6553,13 +6583,16 @@ class UploadHttpClient { | |||||||
|                     } |                     } | ||||||
|                     const startTime = perf_hooks_1.performance.now(); |                     const startTime = perf_hooks_1.performance.now(); | ||||||
|                     const uploadFileResult = yield this.uploadFileAsync(index, currentFileParameters); |                     const uploadFileResult = yield this.uploadFileAsync(index, currentFileParameters); | ||||||
|                     core_1.debug(`File: ${++completedFiles}/${filesToUpload.length}. ${currentFileParameters.file} took ${(perf_hooks_1.performance.now() - startTime).toFixed(3)} milliseconds to finish upload`); |                     if (core.isDebug()) { | ||||||
|                     uploadFileSize += uploadFileResult.successfullUploadSize; |                         core.debug(`File: ${++completedFiles}/${filesToUpload.length}. ${currentFileParameters.file} took ${(perf_hooks_1.performance.now() - startTime).toFixed(3)} milliseconds to finish upload`); | ||||||
|  |                     } | ||||||
|  |                     uploadFileSize += uploadFileResult.successfulUploadSize; | ||||||
|                     totalFileSize += uploadFileResult.totalSize; |                     totalFileSize += uploadFileResult.totalSize; | ||||||
|                     if (uploadFileResult.isSuccess === false) { |                     if (uploadFileResult.isSuccess === false) { | ||||||
|                         failedItemsToReport.push(currentFileParameters.file); |                         failedItemsToReport.push(currentFileParameters.file); | ||||||
|                         if (!continueOnError) { |                         if (!continueOnError) { | ||||||
|                             // existing uploads will be able to finish however all pending uploads will fail fast
 |                             // fail fast
 | ||||||
|  |                             core.error(`aborting artifact upload`); | ||||||
|                             abortPendingFileUploads = true; |                             abortPendingFileUploads = true; | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @ -6569,7 +6602,7 @@ class UploadHttpClient { | |||||||
|             this.statusReporter.stop(); |             this.statusReporter.stop(); | ||||||
|             // done uploading, safety dispose all connections
 |             // done uploading, safety dispose all connections
 | ||||||
|             this.uploadHttpManager.disposeAndReplaceAllClients(); |             this.uploadHttpManager.disposeAndReplaceAllClients(); | ||||||
|             core_1.info(`Total size of all the files uploaded is ${uploadFileSize} bytes`); |             core.info(`Total size of all the files uploaded is ${uploadFileSize} bytes`); | ||||||
|             return { |             return { | ||||||
|                 uploadSize: uploadFileSize, |                 uploadSize: uploadFileSize, | ||||||
|                 totalSize: totalFileSize, |                 totalSize: totalFileSize, | ||||||
| @ -6592,7 +6625,7 @@ class UploadHttpClient { | |||||||
|             let failedChunkSizes = 0; |             let failedChunkSizes = 0; | ||||||
|             let uploadFileSize = 0; |             let uploadFileSize = 0; | ||||||
|             let isGzip = true; |             let isGzip = true; | ||||||
|             // the file that is being uploaded is less than 64k in size, to increase thoroughput and to minimize disk I/O
 |             // the file that is being uploaded is less than 64k in size, to increase throughput and to minimize disk I/O
 | ||||||
|             // for creating a new GZip file, an in-memory buffer is used for compression
 |             // for creating a new GZip file, an in-memory buffer is used for compression
 | ||||||
|             if (totalFileSize < 65536) { |             if (totalFileSize < 65536) { | ||||||
|                 const buffer = yield upload_gzip_1.createGZipFileInBuffer(parameters.file); |                 const buffer = yield upload_gzip_1.createGZipFileInBuffer(parameters.file); | ||||||
| @ -6615,16 +6648,16 @@ class UploadHttpClient { | |||||||
|                     // chunk failed to upload
 |                     // chunk failed to upload
 | ||||||
|                     isUploadSuccessful = false; |                     isUploadSuccessful = false; | ||||||
|                     failedChunkSizes += uploadFileSize; |                     failedChunkSizes += uploadFileSize; | ||||||
|                     core_1.warning(`Aborting upload for ${parameters.file} due to failure`); |                     core.warning(`Aborting upload for ${parameters.file} due to failure`); | ||||||
|                 } |                 } | ||||||
|                 return { |                 return { | ||||||
|                     isSuccess: isUploadSuccessful, |                     isSuccess: isUploadSuccessful, | ||||||
|                     successfullUploadSize: uploadFileSize - failedChunkSizes, |                     successfulUploadSize: uploadFileSize - failedChunkSizes, | ||||||
|                     totalSize: totalFileSize |                     totalSize: totalFileSize | ||||||
|                 }; |                 }; | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 // the file that is being uploaded is greater than 64k in size, a temprorary file gets created on disk using the
 |                 // the file that is being uploaded is greater than 64k in size, a temporary file gets created on disk using the
 | ||||||
|                 // npm tmp-promise package and this file gets used during compression for the GZip file that gets created
 |                 // npm tmp-promise package and this file gets used during compression for the GZip file that gets created
 | ||||||
|                 return tmp |                 return tmp | ||||||
|                     .file() |                     .file() | ||||||
| @ -6643,11 +6676,6 @@ class UploadHttpClient { | |||||||
|                     // upload only a single chunk at a time
 |                     // upload only a single chunk at a time
 | ||||||
|                     while (offset < uploadFileSize) { |                     while (offset < uploadFileSize) { | ||||||
|                         const chunkSize = Math.min(uploadFileSize - offset, parameters.maxChunkSize); |                         const chunkSize = Math.min(uploadFileSize - offset, parameters.maxChunkSize); | ||||||
|                         if (abortFileUpload) { |  | ||||||
|                             // if we don't want to continue in the event of an error, any pending upload chunks will be marked as failed
 |  | ||||||
|                             failedChunkSizes += chunkSize; |  | ||||||
|                             continue; |  | ||||||
|                         } |  | ||||||
|                         // if an individual file is greater than 100MB (1024*1024*100) in size, display extra information about the upload status
 |                         // if an individual file is greater than 100MB (1024*1024*100) in size, display extra information about the upload status
 | ||||||
|                         if (uploadFileSize > 104857600) { |                         if (uploadFileSize > 104857600) { | ||||||
|                             this.statusReporter.updateLargeFileStatus(parameters.file, offset, uploadFileSize); |                             this.statusReporter.updateLargeFileStatus(parameters.file, offset, uploadFileSize); | ||||||
| @ -6655,6 +6683,11 @@ class UploadHttpClient { | |||||||
|                         const start = offset; |                         const start = offset; | ||||||
|                         const end = offset + chunkSize - 1; |                         const end = offset + chunkSize - 1; | ||||||
|                         offset += parameters.maxChunkSize; |                         offset += parameters.maxChunkSize; | ||||||
|  |                         if (abortFileUpload) { | ||||||
|  |                             // if we don't want to continue in the event of an error, any pending upload chunks will be marked as failed
 | ||||||
|  |                             failedChunkSizes += chunkSize; | ||||||
|  |                             continue; | ||||||
|  |                         } | ||||||
|                         const result = yield this.uploadChunk(httpClientIndex, parameters.resourceUrl, fs.createReadStream(uploadFilePath, { |                         const result = yield this.uploadChunk(httpClientIndex, parameters.resourceUrl, fs.createReadStream(uploadFilePath, { | ||||||
|                             start, |                             start, | ||||||
|                             end, |                             end, | ||||||
| @ -6665,7 +6698,7 @@ class UploadHttpClient { | |||||||
|                             // successfully uploaded so the server may report a different size for what was uploaded
 |                             // successfully uploaded so the server may report a different size for what was uploaded
 | ||||||
|                             isUploadSuccessful = false; |                             isUploadSuccessful = false; | ||||||
|                             failedChunkSizes += chunkSize; |                             failedChunkSizes += chunkSize; | ||||||
|                             core_1.warning(`Aborting upload for ${parameters.file} due to failure`); |                             core.warning(`Aborting upload for ${parameters.file} due to failure`); | ||||||
|                             abortFileUpload = true; |                             abortFileUpload = true; | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @ -6675,7 +6708,7 @@ class UploadHttpClient { | |||||||
|                     return new Promise(resolve => { |                     return new Promise(resolve => { | ||||||
|                         resolve({ |                         resolve({ | ||||||
|                             isSuccess: isUploadSuccessful, |                             isSuccess: isUploadSuccessful, | ||||||
|                             successfullUploadSize: uploadFileSize - failedChunkSizes, |                             successfulUploadSize: uploadFileSize - failedChunkSizes, | ||||||
|                             totalSize: totalFileSize |                             totalSize: totalFileSize | ||||||
|                         }); |                         }); | ||||||
|                     }); |                     }); | ||||||
| @ -6699,17 +6732,57 @@ class UploadHttpClient { | |||||||
|     uploadChunk(httpClientIndex, resourceUrl, data, start, end, uploadFileSize, isGzip, totalFileSize) { |     uploadChunk(httpClientIndex, resourceUrl, data, start, end, uploadFileSize, isGzip, totalFileSize) { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             // prepare all the necessary headers before making any http call
 |             // prepare all the necessary headers before making any http call
 | ||||||
|             const requestOptions = utils_1.getRequestOptions('application/octet-stream', true, isGzip, totalFileSize, end - start + 1, utils_1.getContentRange(start, end, uploadFileSize)); |             const requestOptions = utils_1.getUploadRequestOptions('application/octet-stream', true, isGzip, totalFileSize, end - start + 1, utils_1.getContentRange(start, end, uploadFileSize)); | ||||||
|             const uploadChunkRequest = () => __awaiter(this, void 0, void 0, function* () { |             const uploadChunkRequest = () => __awaiter(this, void 0, void 0, function* () { | ||||||
|                 const client = this.uploadHttpManager.getClient(httpClientIndex); |                 const client = this.uploadHttpManager.getClient(httpClientIndex); | ||||||
|                 return yield client.sendStream('PUT', resourceUrl, data, requestOptions); |                 return yield client.sendStream('PUT', resourceUrl, data, requestOptions); | ||||||
|             }); |             }); | ||||||
|             let retryCount = 0; |             let retryCount = 0; | ||||||
|             const retryLimit = config_variables_1.getUploadRetryCount(); |             const retryLimit = config_variables_1.getRetryLimit(); | ||||||
|  |             // Increments the current retry count and then checks if the retry limit has been reached
 | ||||||
|  |             // If there have been too many retries, fail so the download stops
 | ||||||
|  |             const incrementAndCheckRetryLimit = (response) => { | ||||||
|  |                 retryCount++; | ||||||
|  |                 if (retryCount > retryLimit) { | ||||||
|  |                     if (response) { | ||||||
|  |                         utils_1.displayHttpDiagnostics(response); | ||||||
|  |                     } | ||||||
|  |                     core.info(`Retry limit has been reached for chunk at offset ${start} to ${resourceUrl}`); | ||||||
|  |                     return true; | ||||||
|  |                 } | ||||||
|  |                 return false; | ||||||
|  |             }; | ||||||
|  |             const backOff = (retryAfterValue) => __awaiter(this, void 0, void 0, function* () { | ||||||
|  |                 this.uploadHttpManager.disposeAndReplaceClient(httpClientIndex); | ||||||
|  |                 if (retryAfterValue) { | ||||||
|  |                     core.info(`Backoff due to too many requests, retry #${retryCount}. Waiting for ${retryAfterValue} milliseconds before continuing the upload`); | ||||||
|  |                     yield new Promise(resolve => setTimeout(resolve, retryAfterValue)); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     const backoffTime = utils_1.getExponentialRetryTimeInMilliseconds(retryCount); | ||||||
|  |                     core.info(`Exponential backoff for retry #${retryCount}. Waiting for ${backoffTime} milliseconds before continuing the upload at offset ${start}`); | ||||||
|  |                     yield new Promise(resolve => setTimeout(resolve, backoffTime)); | ||||||
|  |                 } | ||||||
|  |                 core.info(`Finished backoff for retry #${retryCount}, continuing with upload`); | ||||||
|  |                 return; | ||||||
|  |             }); | ||||||
|             // allow for failed chunks to be retried multiple times
 |             // allow for failed chunks to be retried multiple times
 | ||||||
|             while (retryCount <= retryLimit) { |             while (retryCount <= retryLimit) { | ||||||
|  |                 let response; | ||||||
|                 try { |                 try { | ||||||
|                     const response = yield uploadChunkRequest(); |                     response = yield uploadChunkRequest(); | ||||||
|  |                 } | ||||||
|  |                 catch (error) { | ||||||
|  |                     // if an error is caught, it is usually indicative of a timeout so retry the upload
 | ||||||
|  |                     core.info(`An error has been caught http-client index ${httpClientIndex}, retrying the upload`); | ||||||
|  |                     // eslint-disable-next-line no-console
 | ||||||
|  |                     console.log(error); | ||||||
|  |                     if (incrementAndCheckRetryLimit()) { | ||||||
|  |                         return false; | ||||||
|  |                     } | ||||||
|  |                     yield backOff(); | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|                 // Always read the body of the response. There is potential for a resource leak if the body is not read which will
 |                 // Always read the body of the response. There is potential for a resource leak if the body is not read which will
 | ||||||
|                 // result in the connection remaining open along with unintended consequences when trying to dispose of the client
 |                 // result in the connection remaining open along with unintended consequences when trying to dispose of the client
 | ||||||
|                 yield response.readBody(); |                 yield response.readBody(); | ||||||
| @ -6717,39 +6790,20 @@ class UploadHttpClient { | |||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|                 else if (utils_1.isRetryableStatusCode(response.message.statusCode)) { |                 else if (utils_1.isRetryableStatusCode(response.message.statusCode)) { | ||||||
|                         retryCount++; |                     core.info(`A ${response.message.statusCode} status code has been received, will attempt to retry the upload`); | ||||||
|                         if (retryCount > retryLimit) { |                     if (incrementAndCheckRetryLimit(response)) { | ||||||
|                             core_1.info(`Retry limit has been reached for chunk at offset ${start} to ${resourceUrl}`); |  | ||||||
|                         return false; |                         return false; | ||||||
|                     } |                     } | ||||||
|                         else { |                     utils_1.isThrottledStatusCode(response.message.statusCode) | ||||||
|                             core_1.info(`HTTP ${response.message.statusCode} during chunk upload, will retry at offset ${start} after ${config_variables_1.getRetryWaitTimeInMilliseconds} milliseconds. Retry count #${retryCount}. URL ${resourceUrl}`); |                         ? yield backOff(utils_1.tryGetRetryAfterValueTimeInMilliseconds(response.message.headers)) | ||||||
|                             this.uploadHttpManager.disposeAndReplaceClient(httpClientIndex); |                         : yield backOff(); | ||||||
|                             yield new Promise(resolve => setTimeout(resolve, config_variables_1.getRetryWaitTimeInMilliseconds())); |  | ||||||
|                         } |  | ||||||
|                 } |                 } | ||||||
|                 else { |                 else { | ||||||
|                         core_1.info(`#ERROR# Unable to upload chunk to ${resourceUrl}`); |                     core.error(`Unexpected response. Unable to upload chunk to ${resourceUrl}`); | ||||||
|                         // eslint-disable-next-line no-console
 |                     utils_1.displayHttpDiagnostics(response); | ||||||
|                         console.log(response); |  | ||||||
|                     return false; |                     return false; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|                 catch (error) { |  | ||||||
|                     // eslint-disable-next-line no-console
 |  | ||||||
|                     console.log(error); |  | ||||||
|                     retryCount++; |  | ||||||
|                     if (retryCount > retryLimit) { |  | ||||||
|                         core_1.info(`Retry limit has been reached for chunk at offset ${start} to ${resourceUrl}`); |  | ||||||
|                         return false; |  | ||||||
|                     } |  | ||||||
|                     else { |  | ||||||
|                         core_1.info(`Retrying chunk upload after encountering an error`); |  | ||||||
|                         this.uploadHttpManager.disposeAndReplaceClient(httpClientIndex); |  | ||||||
|                         yield new Promise(resolve => setTimeout(resolve, config_variables_1.getRetryWaitTimeInMilliseconds())); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             return false; |             return false; | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @ -6759,26 +6813,26 @@ class UploadHttpClient { | |||||||
|      */ |      */ | ||||||
|     patchArtifactSize(size, artifactName) { |     patchArtifactSize(size, artifactName) { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             const requestOptions = utils_1.getRequestOptions('application/json', false, false); |             const requestOptions = utils_1.getUploadRequestOptions('application/json', false); | ||||||
|             const resourceUrl = new url_1.URL(utils_1.getArtifactUrl()); |             const resourceUrl = new url_1.URL(utils_1.getArtifactUrl()); | ||||||
|             resourceUrl.searchParams.append('artifactName', artifactName); |             resourceUrl.searchParams.append('artifactName', artifactName); | ||||||
|             const parameters = { Size: size }; |             const parameters = { Size: size }; | ||||||
|             const data = JSON.stringify(parameters, null, 2); |             const data = JSON.stringify(parameters, null, 2); | ||||||
|             core_1.debug(`URL is ${resourceUrl.toString()}`); |             core.debug(`URL is ${resourceUrl.toString()}`); | ||||||
|             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediatly
 |             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 | ||||||
|             const client = this.uploadHttpManager.getClient(0); |             const client = this.uploadHttpManager.getClient(0); | ||||||
|             const rawResponse = yield client.patch(resourceUrl.toString(), data, requestOptions); |             const response = yield client.patch(resourceUrl.toString(), data, requestOptions); | ||||||
|             const body = yield rawResponse.readBody(); |             const body = yield response.readBody(); | ||||||
|             if (utils_1.isSuccessStatusCode(rawResponse.message.statusCode)) { |             if (utils_1.isSuccessStatusCode(response.message.statusCode)) { | ||||||
|                 core_1.debug(`Artifact ${artifactName} has been successfully uploaded, total size ${size}`); |                 core.debug(`Artifact ${artifactName} has been successfully uploaded, total size in bytes: ${size}`); | ||||||
|             } |             } | ||||||
|             else if (rawResponse.message.statusCode === 404) { |             else if (response.message.statusCode === 404) { | ||||||
|                 throw new Error(`An Artifact with the name ${artifactName} was not found`); |                 throw new Error(`An Artifact with the name ${artifactName} was not found`); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 // eslint-disable-next-line no-console
 |                 utils_1.displayHttpDiagnostics(response); | ||||||
|                 console.log(body); |                 core.info(body); | ||||||
|                 throw new Error(`Unable to finish uploading artifact ${artifactName}`); |                 throw new Error(`Unable to finish uploading artifact ${artifactName} to ${resourceUrl}`); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @ -6955,7 +7009,7 @@ function createGZipFileInBuffer(originalFilePath) { | |||||||
|             const inputStream = fs.createReadStream(originalFilePath); |             const inputStream = fs.createReadStream(originalFilePath); | ||||||
|             const gzip = zlib.createGzip(); |             const gzip = zlib.createGzip(); | ||||||
|             inputStream.pipe(gzip); |             inputStream.pipe(gzip); | ||||||
|             // read stream into buffer, using experimental async itterators see https://github.com/nodejs/readable-stream/issues/403#issuecomment-479069043
 |             // read stream into buffer, using experimental async iterators see https://github.com/nodejs/readable-stream/issues/403#issuecomment-479069043
 | ||||||
|             const chunks = []; |             const chunks = []; | ||||||
|             try { |             try { | ||||||
|                 for (var gzip_1 = __asyncValues(gzip), gzip_1_1; gzip_1_1 = yield gzip_1.next(), !gzip_1_1.done;) { |                 for (var gzip_1 = __asyncValues(gzip), gzip_1_1; gzip_1_1 = yield gzip_1.next(), !gzip_1_1.done;) { | ||||||
| @ -7178,15 +7232,19 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const fs = __importStar(__webpack_require__(747)); | const fs = __importStar(__webpack_require__(747)); | ||||||
|  | const core = __importStar(__webpack_require__(470)); | ||||||
| const zlib = __importStar(__webpack_require__(761)); | const zlib = __importStar(__webpack_require__(761)); | ||||||
| const utils_1 = __webpack_require__(870); | const utils_1 = __webpack_require__(870); | ||||||
| const url_1 = __webpack_require__(835); | const url_1 = __webpack_require__(835); | ||||||
|  | const status_reporter_1 = __webpack_require__(176); | ||||||
|  | const perf_hooks_1 = __webpack_require__(630); | ||||||
| const http_manager_1 = __webpack_require__(452); | const http_manager_1 = __webpack_require__(452); | ||||||
| const config_variables_1 = __webpack_require__(401); | const config_variables_1 = __webpack_require__(401); | ||||||
| const core_1 = __webpack_require__(470); |  | ||||||
| class DownloadHttpClient { | class DownloadHttpClient { | ||||||
|     constructor() { |     constructor() { | ||||||
|         this.downloadHttpManager = new http_manager_1.HttpManager(config_variables_1.getDownloadFileConcurrency()); |         this.downloadHttpManager = new http_manager_1.HttpManager(config_variables_1.getDownloadFileConcurrency()); | ||||||
|  |         // downloads are usually significantly faster than uploads so display status information every second
 | ||||||
|  |         this.statusReporter = new status_reporter_1.StatusReporter(1000); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Gets a list of all artifacts that are in a specific container |      * Gets a list of all artifacts that are in a specific container | ||||||
| @ -7194,17 +7252,16 @@ class DownloadHttpClient { | |||||||
|     listArtifacts() { |     listArtifacts() { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             const artifactUrl = utils_1.getArtifactUrl(); |             const artifactUrl = utils_1.getArtifactUrl(); | ||||||
|             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediatly
 |             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 | ||||||
|             const client = this.downloadHttpManager.getClient(0); |             const client = this.downloadHttpManager.getClient(0); | ||||||
|             const requestOptions = utils_1.getRequestOptions('application/json'); |             const requestOptions = utils_1.getDownloadRequestOptions('application/json'); | ||||||
|             const rawResponse = yield client.get(artifactUrl, requestOptions); |             const response = yield client.get(artifactUrl, requestOptions); | ||||||
|             const body = yield rawResponse.readBody(); |             const body = yield response.readBody(); | ||||||
|             if (utils_1.isSuccessStatusCode(rawResponse.message.statusCode) && body) { |             if (utils_1.isSuccessStatusCode(response.message.statusCode) && body) { | ||||||
|                 return JSON.parse(body); |                 return JSON.parse(body); | ||||||
|             } |             } | ||||||
|             // eslint-disable-next-line no-console
 |             utils_1.displayHttpDiagnostics(response); | ||||||
|             console.log(rawResponse); |             throw new Error(`Unable to list artifacts for the run. Resource Url ${artifactUrl}`); | ||||||
|             throw new Error(`Unable to list artifacts for the run`); |  | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
| @ -7217,17 +7274,15 @@ class DownloadHttpClient { | |||||||
|             // the itemPath search parameter controls which containers will be returned
 |             // the itemPath search parameter controls which containers will be returned
 | ||||||
|             const resourceUrl = new url_1.URL(containerUrl); |             const resourceUrl = new url_1.URL(containerUrl); | ||||||
|             resourceUrl.searchParams.append('itemPath', artifactName); |             resourceUrl.searchParams.append('itemPath', artifactName); | ||||||
|             // no concurrent calls so a single httpClient without the http-manager is sufficient
 |             // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 | ||||||
|             const client = utils_1.createHttpClient(); |             const client = this.downloadHttpManager.getClient(0); | ||||||
|             // no keep-alive header, client disposal is not necessary
 |             const requestOptions = utils_1.getDownloadRequestOptions('application/json'); | ||||||
|             const requestOptions = utils_1.getRequestOptions('application/json'); |             const response = yield client.get(resourceUrl.toString(), requestOptions); | ||||||
|             const rawResponse = yield client.get(resourceUrl.toString(), requestOptions); |             const body = yield response.readBody(); | ||||||
|             const body = yield rawResponse.readBody(); |             if (utils_1.isSuccessStatusCode(response.message.statusCode) && body) { | ||||||
|             if (utils_1.isSuccessStatusCode(rawResponse.message.statusCode) && body) { |  | ||||||
|                 return JSON.parse(body); |                 return JSON.parse(body); | ||||||
|             } |             } | ||||||
|             // eslint-disable-next-line no-console
 |             utils_1.displayHttpDiagnostics(response); | ||||||
|             console.log(rawResponse); |  | ||||||
|             throw new Error(`Unable to get ContainersItems from ${resourceUrl}`); |             throw new Error(`Unable to get ContainersItems from ${resourceUrl}`); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @ -7239,18 +7294,34 @@ class DownloadHttpClient { | |||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             const DOWNLOAD_CONCURRENCY = config_variables_1.getDownloadFileConcurrency(); |             const DOWNLOAD_CONCURRENCY = config_variables_1.getDownloadFileConcurrency(); | ||||||
|             // limit the number of files downloaded at a single time
 |             // limit the number of files downloaded at a single time
 | ||||||
|  |             core.debug(`Download file concurrency is set to ${DOWNLOAD_CONCURRENCY}`); | ||||||
|             const parallelDownloads = [...new Array(DOWNLOAD_CONCURRENCY).keys()]; |             const parallelDownloads = [...new Array(DOWNLOAD_CONCURRENCY).keys()]; | ||||||
|  |             let currentFile = 0; | ||||||
|             let downloadedFiles = 0; |             let downloadedFiles = 0; | ||||||
|  |             core.info(`Total number of files that will be downloaded: ${downloadItems.length}`); | ||||||
|  |             this.statusReporter.setTotalNumberOfFilesToProcess(downloadItems.length); | ||||||
|  |             this.statusReporter.start(); | ||||||
|             yield Promise.all(parallelDownloads.map((index) => __awaiter(this, void 0, void 0, function* () { |             yield Promise.all(parallelDownloads.map((index) => __awaiter(this, void 0, void 0, function* () { | ||||||
|                 while (downloadedFiles < downloadItems.length) { |                 while (currentFile < downloadItems.length) { | ||||||
|                     const currentFileToDownload = downloadItems[downloadedFiles]; |                     const currentFileToDownload = downloadItems[currentFile]; | ||||||
|                     downloadedFiles += 1; |                     currentFile += 1; | ||||||
|  |                     const startTime = perf_hooks_1.performance.now(); | ||||||
|                     yield this.downloadIndividualFile(index, currentFileToDownload.sourceLocation, currentFileToDownload.targetPath); |                     yield this.downloadIndividualFile(index, currentFileToDownload.sourceLocation, currentFileToDownload.targetPath); | ||||||
|  |                     if (core.isDebug()) { | ||||||
|  |                         core.debug(`File: ${++downloadedFiles}/${downloadItems.length}. ${currentFileToDownload.targetPath} took ${(perf_hooks_1.performance.now() - startTime).toFixed(3)} milliseconds to finish downloading`); | ||||||
|                     } |                     } | ||||||
|             }))); |                     this.statusReporter.incrementProcessedCount(); | ||||||
|             // done downloading, safety dispose all connections
 |                 } | ||||||
|  |             }))) | ||||||
|  |                 .catch(error => { | ||||||
|  |                 throw new Error(`Unable to download the artifact: ${error}`); | ||||||
|  |             }) | ||||||
|  |                 .finally(() => { | ||||||
|  |                 this.statusReporter.stop(); | ||||||
|  |                 // safety dispose all connections
 | ||||||
|                 this.downloadHttpManager.disposeAndReplaceAllClients(); |                 this.downloadHttpManager.disposeAndReplaceAllClients(); | ||||||
|             }); |             }); | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Downloads an individual file |      * Downloads an individual file | ||||||
| @ -7260,64 +7331,114 @@ class DownloadHttpClient { | |||||||
|      */ |      */ | ||||||
|     downloadIndividualFile(httpClientIndex, artifactLocation, downloadPath) { |     downloadIndividualFile(httpClientIndex, artifactLocation, downloadPath) { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             const stream = fs.createWriteStream(downloadPath); |             let retryCount = 0; | ||||||
|  |             const retryLimit = config_variables_1.getRetryLimit(); | ||||||
|  |             const destinationStream = fs.createWriteStream(downloadPath); | ||||||
|  |             const requestOptions = utils_1.getDownloadRequestOptions('application/json', true, true); | ||||||
|  |             // a single GET request is used to download a file
 | ||||||
|  |             const makeDownloadRequest = () => __awaiter(this, void 0, void 0, function* () { | ||||||
|                 const client = this.downloadHttpManager.getClient(httpClientIndex); |                 const client = this.downloadHttpManager.getClient(httpClientIndex); | ||||||
|             const requestOptions = utils_1.getRequestOptions('application/octet-stream', true); |                 return yield client.get(artifactLocation, requestOptions); | ||||||
|             const response = yield client.get(artifactLocation, requestOptions); |             }); | ||||||
|             // check the response headers to determine if the file was compressed using gzip
 |             // check the response headers to determine if the file was compressed using gzip
 | ||||||
|             const isGzip = (headers) => { |             const isGzip = (headers) => { | ||||||
|                 return ('content-encoding' in headers && headers['content-encoding'] === 'gzip'); |                 return ('content-encoding' in headers && headers['content-encoding'] === 'gzip'); | ||||||
|             }; |             }; | ||||||
|  |             // Increments the current retry count and then checks if the retry limit has been reached
 | ||||||
|  |             // If there have been too many retries, fail so the download stops. If there is a retryAfterValue value provided,
 | ||||||
|  |             // it will be used
 | ||||||
|  |             const backOff = (retryAfterValue) => __awaiter(this, void 0, void 0, function* () { | ||||||
|  |                 retryCount++; | ||||||
|  |                 if (retryCount > retryLimit) { | ||||||
|  |                     return Promise.reject(new Error(`Retry limit has been reached. Unable to download ${artifactLocation}`)); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     this.downloadHttpManager.disposeAndReplaceClient(httpClientIndex); | ||||||
|  |                     if (retryAfterValue) { | ||||||
|  |                         // Back off by waiting the specified time denoted by the retry-after header
 | ||||||
|  |                         core.info(`Backoff due to too many requests, retry #${retryCount}. Waiting for ${retryAfterValue} milliseconds before continuing the download`); | ||||||
|  |                         yield new Promise(resolve => setTimeout(resolve, retryAfterValue)); | ||||||
|  |                     } | ||||||
|  |                     else { | ||||||
|  |                         // Back off using an exponential value that depends on the retry count
 | ||||||
|  |                         const backoffTime = utils_1.getExponentialRetryTimeInMilliseconds(retryCount); | ||||||
|  |                         core.info(`Exponential backoff for retry #${retryCount}. Waiting for ${backoffTime} milliseconds before continuing the download`); | ||||||
|  |                         yield new Promise(resolve => setTimeout(resolve, backoffTime)); | ||||||
|  |                     } | ||||||
|  |                     core.info(`Finished backoff for retry #${retryCount}, continuing with download`); | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  |             // keep trying to download a file until a retry limit has been reached
 | ||||||
|  |             while (retryCount <= retryLimit) { | ||||||
|  |                 let response; | ||||||
|  |                 try { | ||||||
|  |                     response = yield makeDownloadRequest(); | ||||||
|  |                 } | ||||||
|  |                 catch (error) { | ||||||
|  |                     // if an error is caught, it is usually indicative of a timeout so retry the download
 | ||||||
|  |                     core.info('An error occurred while attempting to download a file'); | ||||||
|  |                     // eslint-disable-next-line no-console
 | ||||||
|  |                     console.log(error); | ||||||
|  |                     // increment the retryCount and use exponential backoff to wait before making the next request
 | ||||||
|  |                     yield backOff(); | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|                 if (utils_1.isSuccessStatusCode(response.message.statusCode)) { |                 if (utils_1.isSuccessStatusCode(response.message.statusCode)) { | ||||||
|                 yield this.pipeResponseToStream(response, stream, isGzip(response.message.headers)); |                     // The body contains the contents of the file however calling response.readBody() causes all the content to be converted to a string
 | ||||||
|  |                     // which can cause some gzip encoded data to be lost
 | ||||||
|  |                     // Instead of using response.readBody(), response.message is a readableStream that can be directly used to get the raw body contents
 | ||||||
|  |                     return this.pipeResponseToFile(response, destinationStream, isGzip(response.message.headers)); | ||||||
|                 } |                 } | ||||||
|                 else if (utils_1.isRetryableStatusCode(response.message.statusCode)) { |                 else if (utils_1.isRetryableStatusCode(response.message.statusCode)) { | ||||||
|                 core_1.warning(`Received http ${response.message.statusCode} during file download, will retry ${artifactLocation} after 10 seconds`); |                     core.info(`A ${response.message.statusCode} response code has been received while attempting to download an artifact`); | ||||||
|                 // if an error is encountered, dispose of the http connection, and create a new one
 |                     // if a throttled status code is received, try to get the retryAfter header value, else differ to standard exponential backoff
 | ||||||
|                 this.downloadHttpManager.disposeAndReplaceClient(httpClientIndex); |                     utils_1.isThrottledStatusCode(response.message.statusCode) | ||||||
|                 yield new Promise(resolve => setTimeout(resolve, config_variables_1.getRetryWaitTimeInMilliseconds())); |                         ? yield backOff(utils_1.tryGetRetryAfterValueTimeInMilliseconds(response.message.headers)) | ||||||
|                 const retryResponse = yield client.get(artifactLocation); |                         : yield backOff(); | ||||||
|                 if (utils_1.isSuccessStatusCode(retryResponse.message.statusCode)) { |  | ||||||
|                     yield this.pipeResponseToStream(response, stream, isGzip(response.message.headers)); |  | ||||||
|                 } |                 } | ||||||
|                 else { |                 else { | ||||||
|                     // eslint-disable-next-line no-console
 |                     // Some unexpected response code, fail immediately and stop the download
 | ||||||
|                     console.log(retryResponse); |                     utils_1.displayHttpDiagnostics(response); | ||||||
|                     throw new Error(`Unable to download ${artifactLocation}`); |                     return Promise.reject(new Error(`Unexpected http ${response.message.statusCode} during download for ${artifactLocation}`)); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             else { |  | ||||||
|                 // eslint-disable-next-line no-console
 |  | ||||||
|                 console.log(response); |  | ||||||
|                 throw new Error(`Unable to download ${artifactLocation}`); |  | ||||||
|             } |  | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Pipes the response from downloading an individual file to the appropriate stream |      * Pipes the response from downloading an individual file to the appropriate destination stream while decoding gzip content if necessary | ||||||
|      * @param response the http response recieved when downloading a file |      * @param response the http response received when downloading a file | ||||||
|      * @param stream the stream where the file should be written to |      * @param destinationStream the stream where the file should be written to | ||||||
|      * @param isGzip does the response need to be be uncompressed |      * @param isGzip a boolean denoting if the content is compressed using gzip and if we need to decode it | ||||||
|      */ |      */ | ||||||
|     pipeResponseToStream(response, stream, isGzip) { |     pipeResponseToFile(response, destinationStream, isGzip) { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             return new Promise(resolve => { |             yield new Promise((resolve, reject) => { | ||||||
|                 if (isGzip) { |                 if (isGzip) { | ||||||
|                     // pipe the response into gunzip to decompress
 |  | ||||||
|                     const gunzip = zlib.createGunzip(); |                     const gunzip = zlib.createGunzip(); | ||||||
|                     response.message |                     response.message | ||||||
|                         .pipe(gunzip) |                         .pipe(gunzip) | ||||||
|                         .pipe(stream) |                         .pipe(destinationStream) | ||||||
|                         .on('close', () => { |                         .on('close', () => { | ||||||
|                         resolve(); |                         resolve(); | ||||||
|  |                     }) | ||||||
|  |                         .on('error', error => { | ||||||
|  |                         core.error(`An error has been encountered while decompressing and writing a downloaded file to ${destinationStream.path}`); | ||||||
|  |                         reject(error); | ||||||
|                     }); |                     }); | ||||||
|                 } |                 } | ||||||
|                 else { |                 else { | ||||||
|                     response.message.pipe(stream).on('close', () => { |                     response.message | ||||||
|  |                         .pipe(destinationStream) | ||||||
|  |                         .on('close', () => { | ||||||
|                         resolve(); |                         resolve(); | ||||||
|  |                     }) | ||||||
|  |                         .on('error', error => { | ||||||
|  |                         core.error(`An error has been encountered while writing a downloaded file to ${destinationStream.path}`); | ||||||
|  |                         reject(error); | ||||||
|                     }); |                     }); | ||||||
|                 } |                 } | ||||||
|             }); |             }); | ||||||
|  |             return; | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -7593,6 +7714,23 @@ const fs_1 = __webpack_require__(747); | |||||||
| const http_client_1 = __webpack_require__(539); | const http_client_1 = __webpack_require__(539); | ||||||
| const auth_1 = __webpack_require__(226); | const auth_1 = __webpack_require__(226); | ||||||
| const config_variables_1 = __webpack_require__(401); | const config_variables_1 = __webpack_require__(401); | ||||||
|  | /** | ||||||
|  |  * Returns a retry time in milliseconds that exponentially gets larger | ||||||
|  |  * depending on the amount of retries that have been attempted | ||||||
|  |  */ | ||||||
|  | function getExponentialRetryTimeInMilliseconds(retryCount) { | ||||||
|  |     if (retryCount < 0) { | ||||||
|  |         throw new Error('RetryCount should not be negative'); | ||||||
|  |     } | ||||||
|  |     else if (retryCount === 0) { | ||||||
|  |         return config_variables_1.getInitialRetryIntervalInMilliseconds(); | ||||||
|  |     } | ||||||
|  |     const minTime = config_variables_1.getInitialRetryIntervalInMilliseconds() * config_variables_1.getRetryMultiplier() * retryCount; | ||||||
|  |     const maxTime = minTime * config_variables_1.getRetryMultiplier(); | ||||||
|  |     // returns a random number between the minTime (inclusive) and the maxTime (exclusive)
 | ||||||
|  |     return Math.random() * (maxTime - minTime) + minTime; | ||||||
|  | } | ||||||
|  | exports.getExponentialRetryTimeInMilliseconds = getExponentialRetryTimeInMilliseconds; | ||||||
| /** | /** | ||||||
|  * Parses a env variable that is a number |  * Parses a env variable that is a number | ||||||
|  */ |  */ | ||||||
| @ -7618,6 +7756,13 @@ function isSuccessStatusCode(statusCode) { | |||||||
|     return statusCode >= 200 && statusCode < 300; |     return statusCode >= 200 && statusCode < 300; | ||||||
| } | } | ||||||
| exports.isSuccessStatusCode = isSuccessStatusCode; | exports.isSuccessStatusCode = isSuccessStatusCode; | ||||||
|  | function isForbiddenStatusCode(statusCode) { | ||||||
|  |     if (!statusCode) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     return statusCode === http_client_1.HttpCodes.Forbidden; | ||||||
|  | } | ||||||
|  | exports.isForbiddenStatusCode = isForbiddenStatusCode; | ||||||
| function isRetryableStatusCode(statusCode) { | function isRetryableStatusCode(statusCode) { | ||||||
|     if (!statusCode) { |     if (!statusCode) { | ||||||
|         return false; |         return false; | ||||||
| @ -7625,11 +7770,40 @@ function isRetryableStatusCode(statusCode) { | |||||||
|     const retryableStatusCodes = [ |     const retryableStatusCodes = [ | ||||||
|         http_client_1.HttpCodes.BadGateway, |         http_client_1.HttpCodes.BadGateway, | ||||||
|         http_client_1.HttpCodes.ServiceUnavailable, |         http_client_1.HttpCodes.ServiceUnavailable, | ||||||
|         http_client_1.HttpCodes.GatewayTimeout |         http_client_1.HttpCodes.GatewayTimeout, | ||||||
|  |         http_client_1.HttpCodes.TooManyRequests | ||||||
|     ]; |     ]; | ||||||
|     return retryableStatusCodes.includes(statusCode); |     return retryableStatusCodes.includes(statusCode); | ||||||
| } | } | ||||||
| exports.isRetryableStatusCode = isRetryableStatusCode; | exports.isRetryableStatusCode = isRetryableStatusCode; | ||||||
|  | function isThrottledStatusCode(statusCode) { | ||||||
|  |     if (!statusCode) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     return statusCode === http_client_1.HttpCodes.TooManyRequests; | ||||||
|  | } | ||||||
|  | exports.isThrottledStatusCode = isThrottledStatusCode; | ||||||
|  | /** | ||||||
|  |  * Attempts to get the retry-after value from a set of http headers. The retry time | ||||||
|  |  * is originally denoted in seconds, so if present, it is converted to milliseconds | ||||||
|  |  * @param headers all the headers received when making an http call | ||||||
|  |  */ | ||||||
|  | function tryGetRetryAfterValueTimeInMilliseconds(headers) { | ||||||
|  |     if (headers['retry-after']) { | ||||||
|  |         const retryTime = Number(headers['retry-after']); | ||||||
|  |         if (!isNaN(retryTime)) { | ||||||
|  |             core_1.info(`Retry-After header is present with a value of ${retryTime}`); | ||||||
|  |             return retryTime * 1000; | ||||||
|  |         } | ||||||
|  |         core_1.info(`Returned retry-after header value: ${retryTime} is non-numeric and cannot be used`); | ||||||
|  |         return undefined; | ||||||
|  |     } | ||||||
|  |     core_1.info(`No retry-after header was found. Dumping all headers for diagnostic purposes`); | ||||||
|  |     // eslint-disable-next-line no-console
 | ||||||
|  |     console.log(headers); | ||||||
|  |     return undefined; | ||||||
|  | } | ||||||
|  | exports.tryGetRetryAfterValueTimeInMilliseconds = tryGetRetryAfterValueTimeInMilliseconds; | ||||||
| function getContentRange(start, end, total) { | function getContentRange(start, end, total) { | ||||||
|     // Format: `bytes start-end/fileSize
 |     // Format: `bytes start-end/fileSize
 | ||||||
|     // start and end are inclusive
 |     // start and end are inclusive
 | ||||||
| @ -7639,20 +7813,48 @@ function getContentRange(start, end, total) { | |||||||
| } | } | ||||||
| exports.getContentRange = getContentRange; | exports.getContentRange = getContentRange; | ||||||
| /** | /** | ||||||
|  * Sets all the necessary headers when making HTTP calls |  * Sets all the necessary headers when downloading an artifact | ||||||
|  |  * @param {string} contentType the type of content being uploaded | ||||||
|  |  * @param {boolean} isKeepAlive is the same connection being used to make multiple calls | ||||||
|  |  * @param {boolean} acceptGzip can we accept a gzip encoded response | ||||||
|  |  * @param {string} acceptType the type of content that we can accept | ||||||
|  |  * @returns appropriate request options to make a specific http call during artifact download | ||||||
|  |  */ | ||||||
|  | function getDownloadRequestOptions(contentType, isKeepAlive, acceptGzip) { | ||||||
|  |     const requestOptions = {}; | ||||||
|  |     if (contentType) { | ||||||
|  |         requestOptions['Content-Type'] = contentType; | ||||||
|  |     } | ||||||
|  |     if (isKeepAlive) { | ||||||
|  |         requestOptions['Connection'] = 'Keep-Alive'; | ||||||
|  |         // keep alive for at least 10 seconds before closing the connection
 | ||||||
|  |         requestOptions['Keep-Alive'] = '10'; | ||||||
|  |     } | ||||||
|  |     if (acceptGzip) { | ||||||
|  |         // if we are expecting a response with gzip encoding, it should be using an octet-stream in the accept header
 | ||||||
|  |         requestOptions['Accept-Encoding'] = 'gzip'; | ||||||
|  |         requestOptions['Accept'] = `application/octet-stream;api-version=${getApiVersion()}`; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         // default to application/json if we are not working with gzip content
 | ||||||
|  |         requestOptions['Accept'] = `application/json;api-version=${getApiVersion()}`; | ||||||
|  |     } | ||||||
|  |     return requestOptions; | ||||||
|  | } | ||||||
|  | exports.getDownloadRequestOptions = getDownloadRequestOptions; | ||||||
|  | /** | ||||||
|  |  * Sets all the necessary headers when uploading an artifact | ||||||
|  * @param {string} contentType the type of content being uploaded |  * @param {string} contentType the type of content being uploaded | ||||||
|  * @param {boolean} isKeepAlive is the same connection being used to make multiple calls |  * @param {boolean} isKeepAlive is the same connection being used to make multiple calls | ||||||
|  * @param {boolean} isGzip is the connection being used to upload GZip compressed content |  * @param {boolean} isGzip is the connection being used to upload GZip compressed content | ||||||
|  * @param {number} uncompressedLength the original size of the content if something is being uploaded that has been compressed |  * @param {number} uncompressedLength the original size of the content if something is being uploaded that has been compressed | ||||||
|  * @param {number} contentLength the length of the content that is being uploaded |  * @param {number} contentLength the length of the content that is being uploaded | ||||||
|  * @param {string} contentRange the range of the content that is being uploaded |  * @param {string} contentRange the range of the content that is being uploaded | ||||||
|  * @returns appropriate request options to make a specific http call |  * @returns appropriate request options to make a specific http call during artifact upload | ||||||
|  */ |  */ | ||||||
| function getRequestOptions(contentType, isKeepAlive, isGzip, uncompressedLength, contentLength, contentRange) { | function getUploadRequestOptions(contentType, isKeepAlive, isGzip, uncompressedLength, contentLength, contentRange) { | ||||||
|     const requestOptions = { |     const requestOptions = {}; | ||||||
|         // same Accept type for each http call that gets made
 |     requestOptions['Accept'] = `application/json;api-version=${getApiVersion()}`; | ||||||
|         Accept: `application/json;api-version=${getApiVersion()}` |  | ||||||
|     }; |  | ||||||
|     if (contentType) { |     if (contentType) { | ||||||
|         requestOptions['Content-Type'] = contentType; |         requestOptions['Content-Type'] = contentType; | ||||||
|     } |     } | ||||||
| @ -7673,7 +7875,7 @@ function getRequestOptions(contentType, isKeepAlive, isGzip, uncompressedLength, | |||||||
|     } |     } | ||||||
|     return requestOptions; |     return requestOptions; | ||||||
| } | } | ||||||
| exports.getRequestOptions = getRequestOptions; | exports.getUploadRequestOptions = getUploadRequestOptions; | ||||||
| function createHttpClient() { | function createHttpClient() { | ||||||
|     return new http_client_1.HttpClient('action/artifact', [ |     return new http_client_1.HttpClient('action/artifact', [ | ||||||
|         new auth_1.BearerCredentialHandler(config_variables_1.getRuntimeToken()) |         new auth_1.BearerCredentialHandler(config_variables_1.getRuntimeToken()) | ||||||
| @ -7686,6 +7888,23 @@ function getArtifactUrl() { | |||||||
|     return artifactUrl; |     return artifactUrl; | ||||||
| } | } | ||||||
| exports.getArtifactUrl = getArtifactUrl; | exports.getArtifactUrl = getArtifactUrl; | ||||||
|  | /** | ||||||
|  |  * Uh oh! Something might have gone wrong during either upload or download. The IHtttpClientResponse object contains information | ||||||
|  |  * about the http call that was made by the actions http client. This information might be useful to display for diagnostic purposes, but | ||||||
|  |  * this entire object is really big and most of the information is not really useful. This function takes the response object and displays only | ||||||
|  |  * the information that we want. | ||||||
|  |  * | ||||||
|  |  * Certain information such as the TLSSocket and the Readable state are not really useful for diagnostic purposes so they can be avoided. | ||||||
|  |  * Other information such as the headers, the response code and message might be useful, so this is displayed. | ||||||
|  |  */ | ||||||
|  | function displayHttpDiagnostics(response) { | ||||||
|  |     core_1.info(`##### Begin Diagnostic HTTP information #####
 | ||||||
|  | Status Code: ${response.message.statusCode} | ||||||
|  | Status Message: ${response.message.statusMessage} | ||||||
|  | Header Information: ${JSON.stringify(response.message.headers, undefined, 2)} | ||||||
|  | ###### End Diagnostic HTTP information ######`);
 | ||||||
|  | } | ||||||
|  | exports.displayHttpDiagnostics = displayHttpDiagnostics; | ||||||
| /** | /** | ||||||
|  * Invalid characters that cannot be in the artifact name or an uploaded file. Will be rejected |  * Invalid characters that cannot be in the artifact name or an uploaded file. Will be rejected | ||||||
|  * from the server if attempted to be sent over. These characters are not allowed due to limitations with certain |  * from the server if attempted to be sent over. These characters are not allowed due to limitations with certain | ||||||
| @ -7747,6 +7966,14 @@ function createDirectoriesForArtifact(directories) { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.createDirectoriesForArtifact = createDirectoriesForArtifact; | exports.createDirectoriesForArtifact = createDirectoriesForArtifact; | ||||||
|  | function createEmptyFilesForArtifact(emptyFilesToCreate) { | ||||||
|  |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |         for (const filePath of emptyFilesToCreate) { | ||||||
|  |             yield (yield fs_1.promises.open(filePath, 'w')).close(); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | exports.createEmptyFilesForArtifact = createEmptyFilesForArtifact; | ||||||
| //# sourceMappingURL=utils.js.map
 | //# sourceMappingURL=utils.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
|  | |||||||
							
								
								
									
										1439
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1439
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -5,13 +5,13 @@ | |||||||
|   "requires": true, |   "requires": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/artifact": { |     "@actions/artifact": { | ||||||
|       "version": "0.2.0", |       "version": "0.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-0.2.0.tgz", |       "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-0.3.0.tgz", | ||||||
|       "integrity": "sha512-JR+Y8u4xLR16Oi1qQy4nAdEjfgdZL7sgtMO2Ni020dAV0ji7E71NibCpp3Pfm5GXzvdDQ0FZ6XwUoyS1RPXL9g==", |       "integrity": "sha512-t35sO6q2nVEb0Y/4GOKK7XlBo1qqnKlapMry46OFjFelsGmAgHMGMBq16s4Q0XCJrvToAhiRUcf3wZ8xyByDuw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@actions/core": "^1.2.1", |         "@actions/core": "^1.2.1", | ||||||
|         "@actions/http-client": "^1.0.6", |         "@actions/http-client": "^1.0.7", | ||||||
|         "@types/tmp": "^0.1.0", |         "@types/tmp": "^0.1.0", | ||||||
|         "tmp": "^0.1.0", |         "tmp": "^0.1.0", | ||||||
|         "tmp-promise": "^2.0.2" |         "tmp-promise": "^2.0.2" | ||||||
| @ -45,9 +45,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@actions/http-client": { |     "@actions/http-client": { | ||||||
|       "version": "1.0.6", |       "version": "1.0.7", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.6.tgz", |       "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.7.tgz", | ||||||
|       "integrity": "sha512-LGmio4w98UyGX33b/W6V6Nx/sQHRXZ859YlMkn36wPsXPB82u8xTVlA/Dq2DXrm6lEq9RVmisRJa1c+HETAIJA==", |       "integrity": "sha512-PY3ys/XH5WMekkHyZhYSa/scYvlE5T/TV/T++vABHuY5ZRgtiBZkn2L2tV5Pv/xDCl59lSZb9WwRuWExDyAsSg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "tunnel": "0.0.6" |         "tunnel": "0.0.6" | ||||||
| @ -69,28 +69,103 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@babel/core": { |     "@babel/core": { | ||||||
|       "version": "7.8.4", |       "version": "7.9.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", |       "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", | ||||||
|       "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", |       "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/code-frame": "^7.8.3", |         "@babel/code-frame": "^7.8.3", | ||||||
|         "@babel/generator": "^7.8.4", |         "@babel/generator": "^7.9.0", | ||||||
|         "@babel/helpers": "^7.8.4", |         "@babel/helper-module-transforms": "^7.9.0", | ||||||
|         "@babel/parser": "^7.8.4", |         "@babel/helpers": "^7.9.0", | ||||||
|         "@babel/template": "^7.8.3", |         "@babel/parser": "^7.9.0", | ||||||
|         "@babel/traverse": "^7.8.4", |         "@babel/template": "^7.8.6", | ||||||
|         "@babel/types": "^7.8.3", |         "@babel/traverse": "^7.9.0", | ||||||
|  |         "@babel/types": "^7.9.0", | ||||||
|         "convert-source-map": "^1.7.0", |         "convert-source-map": "^1.7.0", | ||||||
|         "debug": "^4.1.0", |         "debug": "^4.1.0", | ||||||
|         "gensync": "^1.0.0-beta.1", |         "gensync": "^1.0.0-beta.1", | ||||||
|         "json5": "^2.1.0", |         "json5": "^2.1.2", | ||||||
|         "lodash": "^4.17.13", |         "lodash": "^4.17.13", | ||||||
|         "resolve": "^1.3.2", |         "resolve": "^1.3.2", | ||||||
|         "semver": "^5.4.1", |         "semver": "^5.4.1", | ||||||
|         "source-map": "^0.5.0" |         "source-map": "^0.5.0" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|  |         "@babel/generator": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/types": "^7.9.5", | ||||||
|  |             "jsesc": "^2.5.1", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "source-map": "^0.5.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/helper-function-name": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-get-function-arity": "^7.8.3", | ||||||
|  |             "@babel/template": "^7.8.3", | ||||||
|  |             "@babel/types": "^7.9.5" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/parser": { | ||||||
|  |           "version": "7.9.4", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", | ||||||
|  |           "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "@babel/template": { | ||||||
|  |           "version": "7.8.6", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", | ||||||
|  |           "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/code-frame": "^7.8.3", | ||||||
|  |             "@babel/parser": "^7.8.6", | ||||||
|  |             "@babel/types": "^7.8.6" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/traverse": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/code-frame": "^7.8.3", | ||||||
|  |             "@babel/generator": "^7.9.5", | ||||||
|  |             "@babel/helper-function-name": "^7.9.5", | ||||||
|  |             "@babel/helper-split-export-declaration": "^7.8.3", | ||||||
|  |             "@babel/parser": "^7.9.0", | ||||||
|  |             "@babel/types": "^7.9.5", | ||||||
|  |             "debug": "^4.1.0", | ||||||
|  |             "globals": "^11.1.0", | ||||||
|  |             "lodash": "^4.17.13" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/types": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-validator-identifier": "^7.9.5", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "to-fast-properties": "^2.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "globals": { | ||||||
|  |           "version": "11.12.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", | ||||||
|  |           "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|         "semver": { |         "semver": { | ||||||
|           "version": "5.7.1", |           "version": "5.7.1", | ||||||
|           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", |           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||||||
| @ -131,12 +206,171 @@ | |||||||
|         "@babel/types": "^7.8.3" |         "@babel/types": "^7.8.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "@babel/helper-member-expression-to-functions": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/types": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/helper-module-imports": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/types": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/helper-module-transforms": { | ||||||
|  |       "version": "7.9.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", | ||||||
|  |       "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-module-imports": "^7.8.3", | ||||||
|  |         "@babel/helper-replace-supers": "^7.8.6", | ||||||
|  |         "@babel/helper-simple-access": "^7.8.3", | ||||||
|  |         "@babel/helper-split-export-declaration": "^7.8.3", | ||||||
|  |         "@babel/template": "^7.8.6", | ||||||
|  |         "@babel/types": "^7.9.0", | ||||||
|  |         "lodash": "^4.17.13" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/parser": { | ||||||
|  |           "version": "7.9.4", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", | ||||||
|  |           "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "@babel/template": { | ||||||
|  |           "version": "7.8.6", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", | ||||||
|  |           "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/code-frame": "^7.8.3", | ||||||
|  |             "@babel/parser": "^7.8.6", | ||||||
|  |             "@babel/types": "^7.8.6" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/types": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-validator-identifier": "^7.9.5", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "to-fast-properties": "^2.0.0" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/helper-optimise-call-expression": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/types": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@babel/helper-plugin-utils": { |     "@babel/helper-plugin-utils": { | ||||||
|       "version": "7.8.3", |       "version": "7.8.3", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", |       "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", | ||||||
|       "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", |       "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "@babel/helper-replace-supers": { | ||||||
|  |       "version": "7.8.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", | ||||||
|  |       "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-member-expression-to-functions": "^7.8.3", | ||||||
|  |         "@babel/helper-optimise-call-expression": "^7.8.3", | ||||||
|  |         "@babel/traverse": "^7.8.6", | ||||||
|  |         "@babel/types": "^7.8.6" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/generator": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/types": "^7.9.5", | ||||||
|  |             "jsesc": "^2.5.1", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "source-map": "^0.5.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/helper-function-name": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-get-function-arity": "^7.8.3", | ||||||
|  |             "@babel/template": "^7.8.3", | ||||||
|  |             "@babel/types": "^7.9.5" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/parser": { | ||||||
|  |           "version": "7.9.4", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", | ||||||
|  |           "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "@babel/traverse": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/code-frame": "^7.8.3", | ||||||
|  |             "@babel/generator": "^7.9.5", | ||||||
|  |             "@babel/helper-function-name": "^7.9.5", | ||||||
|  |             "@babel/helper-split-export-declaration": "^7.8.3", | ||||||
|  |             "@babel/parser": "^7.9.0", | ||||||
|  |             "@babel/types": "^7.9.5", | ||||||
|  |             "debug": "^4.1.0", | ||||||
|  |             "globals": "^11.1.0", | ||||||
|  |             "lodash": "^4.17.13" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/types": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-validator-identifier": "^7.9.5", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "to-fast-properties": "^2.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "globals": { | ||||||
|  |           "version": "11.12.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", | ||||||
|  |           "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", | ||||||
|  |           "dev": true | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/helper-simple-access": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/template": "^7.8.3", | ||||||
|  |         "@babel/types": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@babel/helper-split-export-declaration": { |     "@babel/helper-split-export-declaration": { | ||||||
|       "version": "7.8.3", |       "version": "7.8.3", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", |       "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", | ||||||
| @ -146,15 +380,86 @@ | |||||||
|         "@babel/types": "^7.8.3" |         "@babel/types": "^7.8.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "@babel/helper-validator-identifier": { | ||||||
|  |       "version": "7.9.5", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", | ||||||
|  |       "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "@babel/helpers": { |     "@babel/helpers": { | ||||||
|       "version": "7.8.4", |       "version": "7.9.2", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", |       "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", | ||||||
|       "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", |       "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/template": "^7.8.3", |         "@babel/template": "^7.8.3", | ||||||
|         "@babel/traverse": "^7.8.4", |         "@babel/traverse": "^7.9.0", | ||||||
|         "@babel/types": "^7.8.3" |         "@babel/types": "^7.9.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/generator": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/types": "^7.9.5", | ||||||
|  |             "jsesc": "^2.5.1", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "source-map": "^0.5.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/helper-function-name": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-get-function-arity": "^7.8.3", | ||||||
|  |             "@babel/template": "^7.8.3", | ||||||
|  |             "@babel/types": "^7.9.5" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/parser": { | ||||||
|  |           "version": "7.9.4", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", | ||||||
|  |           "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "@babel/traverse": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/code-frame": "^7.8.3", | ||||||
|  |             "@babel/generator": "^7.9.5", | ||||||
|  |             "@babel/helper-function-name": "^7.9.5", | ||||||
|  |             "@babel/helper-split-export-declaration": "^7.8.3", | ||||||
|  |             "@babel/parser": "^7.9.0", | ||||||
|  |             "@babel/types": "^7.9.5", | ||||||
|  |             "debug": "^4.1.0", | ||||||
|  |             "globals": "^11.1.0", | ||||||
|  |             "lodash": "^4.17.13" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@babel/types": { | ||||||
|  |           "version": "7.9.5", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", | ||||||
|  |           "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@babel/helper-validator-identifier": "^7.9.5", | ||||||
|  |             "lodash": "^4.17.13", | ||||||
|  |             "to-fast-properties": "^2.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "globals": { | ||||||
|  |           "version": "11.12.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", | ||||||
|  |           "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", | ||||||
|  |           "dev": true | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@babel/highlight": { |     "@babel/highlight": { | ||||||
| @ -226,6 +531,15 @@ | |||||||
|       "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", |       "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "@babel/plugin-syntax-async-generators": { | ||||||
|  |       "version": "7.8.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", | ||||||
|  |       "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@babel/plugin-syntax-bigint": { |     "@babel/plugin-syntax-bigint": { | ||||||
|       "version": "7.8.3", |       "version": "7.8.3", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", | ||||||
| @ -235,6 +549,51 @@ | |||||||
|         "@babel/helper-plugin-utils": "^7.8.0" |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "@babel/plugin-syntax-class-properties": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/plugin-syntax-json-strings": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/plugin-syntax-logical-assignment-operators": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/plugin-syntax-nullish-coalescing-operator": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/plugin-syntax-numeric-separator": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@babel/plugin-syntax-object-rest-spread": { |     "@babel/plugin-syntax-object-rest-spread": { | ||||||
|       "version": "7.8.3", |       "version": "7.8.3", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", | ||||||
| @ -244,6 +603,24 @@ | |||||||
|         "@babel/helper-plugin-utils": "^7.8.0" |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "@babel/plugin-syntax-optional-catch-binding": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@babel/plugin-syntax-optional-chaining": { | ||||||
|  |       "version": "7.8.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", | ||||||
|  |       "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/helper-plugin-utils": "^7.8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@babel/runtime": { |     "@babel/runtime": { | ||||||
|       "version": "7.8.7", |       "version": "7.8.7", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz", |       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz", | ||||||
| @ -317,9 +694,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@cnakazawa/watch": { |     "@cnakazawa/watch": { | ||||||
|       "version": "1.0.3", |       "version": "1.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", |       "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", | ||||||
|       "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", |       "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "exec-sh": "^0.3.2", |         "exec-sh": "^0.3.2", | ||||||
| @ -327,9 +704,9 @@ | |||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "minimist": { |         "minimist": { | ||||||
|           "version": "1.2.0", |           "version": "1.2.5", | ||||||
|           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", |           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | ||||||
|           "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", |           "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", | ||||||
|           "dev": true |           "dev": true | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| @ -366,9 +743,9 @@ | |||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         "p-limit": { |         "p-limit": { | ||||||
|           "version": "2.2.2", |           "version": "2.3.0", | ||||||
|           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", |           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", | ||||||
|           "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", |           "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", | ||||||
|           "dev": true, |           "dev": true, | ||||||
|           "requires": { |           "requires": { | ||||||
|             "p-try": "^2.0.0" |             "p-try": "^2.0.0" | ||||||
| @ -410,48 +787,48 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@jest/console": { |     "@jest/console": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.3.0.tgz", | ||||||
|       "integrity": "sha512-3P1DpqAMK/L07ag/Y9/Jup5iDEG9P4pRAuZiMQnU0JB3UOvCyYCjCoxr7sIA80SeyUCUKrr24fKAxVpmBgQonA==", |       "integrity": "sha512-LvSDNqpmZIZyweFaEQ6wKY7CbexPitlsLHGJtcooNECo0An/w49rFhjCJzu6efeb6+a3ee946xss1Jcd9r03UQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/source-map": "^25.1.0", |         "@jest/source-map": "^25.2.6", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "slash": "^3.0.0" |         "slash": "^3.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/core": { |     "@jest/core": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.3.0.tgz", | ||||||
|       "integrity": "sha512-iz05+NmwCmZRzMXvMo6KFipW7nzhbpEawrKrkkdJzgytavPse0biEnCNr2wRlyCsp3SmKaEY+SGv7YWYQnIdig==", |       "integrity": "sha512-+D5a/tFf6pA/Gqft2DLBp/yeSRgXhlJ+Wpst0X/ZkfTRP54qDR3C61VfHwaex+GzZBiTcE9vQeoZ2v5T10+Mqw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/console": "^25.1.0", |         "@jest/console": "^25.3.0", | ||||||
|         "@jest/reporters": "^25.1.0", |         "@jest/reporters": "^25.3.0", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/transform": "^25.1.0", |         "@jest/transform": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "ansi-escapes": "^4.2.1", |         "ansi-escapes": "^4.2.1", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "exit": "^0.1.2", |         "exit": "^0.1.2", | ||||||
|         "graceful-fs": "^4.2.3", |         "graceful-fs": "^4.2.3", | ||||||
|         "jest-changed-files": "^25.1.0", |         "jest-changed-files": "^25.3.0", | ||||||
|         "jest-config": "^25.1.0", |         "jest-config": "^25.3.0", | ||||||
|         "jest-haste-map": "^25.1.0", |         "jest-haste-map": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-regex-util": "^25.1.0", |         "jest-regex-util": "^25.2.6", | ||||||
|         "jest-resolve": "^25.1.0", |         "jest-resolve": "^25.3.0", | ||||||
|         "jest-resolve-dependencies": "^25.1.0", |         "jest-resolve-dependencies": "^25.3.0", | ||||||
|         "jest-runner": "^25.1.0", |         "jest-runner": "^25.3.0", | ||||||
|         "jest-runtime": "^25.1.0", |         "jest-runtime": "^25.3.0", | ||||||
|         "jest-snapshot": "^25.1.0", |         "jest-snapshot": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jest-validate": "^25.1.0", |         "jest-validate": "^25.3.0", | ||||||
|         "jest-watcher": "^25.1.0", |         "jest-watcher": "^25.3.0", | ||||||
|         "micromatch": "^4.0.2", |         "micromatch": "^4.0.2", | ||||||
|         "p-each-series": "^2.1.0", |         "p-each-series": "^2.1.0", | ||||||
|         "realpath-native": "^1.1.0", |         "realpath-native": "^2.0.0", | ||||||
|         "rimraf": "^3.0.0", |         "rimraf": "^3.0.0", | ||||||
|         "slash": "^3.0.0", |         "slash": "^3.0.0", | ||||||
|         "strip-ansi": "^6.0.0" |         "strip-ansi": "^6.0.0" | ||||||
| @ -478,41 +855,40 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/environment": { |     "@jest/environment": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.3.0.tgz", | ||||||
|       "integrity": "sha512-cTpUtsjU4cum53VqBDlcW0E4KbQF03Cn0jckGPW/5rrE9tb+porD3+hhLtHAwhthsqfyF+bizyodTlsRA++sHg==", |       "integrity": "sha512-vgooqwJTHLLak4fE+TaCGeYP7Tz1Y3CKOsNxR1sE0V3nx3KRUHn3NUnt+wbcfd5yQWKZQKAfW6wqbuwQLrXo3g==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/fake-timers": "^25.1.0", |         "@jest/fake-timers": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "jest-mock": "^25.1.0" |         "jest-mock": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/fake-timers": { |     "@jest/fake-timers": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.3.0.tgz", | ||||||
|       "integrity": "sha512-Eu3dysBzSAO1lD7cylZd/CVKdZZ1/43SF35iYBNV1Lvvn2Undp3Grwsv8PrzvbLhqwRzDd4zxrY4gsiHc+wygQ==", |       "integrity": "sha512-NHAj7WbsyR3qBJPpBwSwqaq2WluIvUQsyzpJTN7XDVk7VnlC/y1BAnaYZL3vbPIP8Nhm0Ae5DJe0KExr/SdMJQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-mock": "^25.1.0", |         "jest-mock": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "lolex": "^5.0.0" |         "lolex": "^5.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/reporters": { |     "@jest/reporters": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.3.0.tgz", | ||||||
|       "integrity": "sha512-ORLT7hq2acJQa8N+NKfs68ZtHFnJPxsGqmofxW7v7urVhzJvpKZG9M7FAcgh9Ee1ZbCteMrirHA3m5JfBtAaDg==", |       "integrity": "sha512-1u0ZBygs0C9DhdYgLCrRfZfNKQa+9+J7Uo+Z9z0RWLHzgsxhoG32lrmMOtUw48yR6bLNELdvzormwUqSk4H4Vg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@bcoe/v8-coverage": "^0.2.3", |         "@bcoe/v8-coverage": "^0.2.3", | ||||||
|         "@jest/console": "^25.1.0", |         "@jest/console": "^25.3.0", | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/transform": "^25.3.0", | ||||||
|         "@jest/transform": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |  | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "collect-v8-coverage": "^1.0.0", |         "collect-v8-coverage": "^1.0.0", | ||||||
|         "exit": "^0.1.2", |         "exit": "^0.1.2", | ||||||
| @ -521,12 +897,11 @@ | |||||||
|         "istanbul-lib-instrument": "^4.0.0", |         "istanbul-lib-instrument": "^4.0.0", | ||||||
|         "istanbul-lib-report": "^3.0.0", |         "istanbul-lib-report": "^3.0.0", | ||||||
|         "istanbul-lib-source-maps": "^4.0.0", |         "istanbul-lib-source-maps": "^4.0.0", | ||||||
|         "istanbul-reports": "^3.0.0", |         "istanbul-reports": "^3.0.2", | ||||||
|         "jest-haste-map": "^25.1.0", |         "jest-haste-map": "^25.3.0", | ||||||
|         "jest-resolve": "^25.1.0", |         "jest-resolve": "^25.3.0", | ||||||
|         "jest-runtime": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-worker": "^25.2.6", | ||||||
|         "jest-worker": "^25.1.0", |  | ||||||
|         "node-notifier": "^6.0.0", |         "node-notifier": "^6.0.0", | ||||||
|         "slash": "^3.0.0", |         "slash": "^3.0.0", | ||||||
|         "source-map": "^0.6.0", |         "source-map": "^0.6.0", | ||||||
| @ -544,9 +919,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/source-map": { |     "@jest/source-map": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.2.6.tgz", | ||||||
|       "integrity": "sha512-ohf2iKT0xnLWcIUhL6U6QN+CwFWf9XnrM2a6ybL9NXxJjgYijjLSitkYHIdzkd8wFliH73qj/+epIpTiWjRtAA==", |       "integrity": "sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "callsites": "^3.0.0", |         "callsites": "^3.0.0", | ||||||
| @ -563,49 +938,48 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/test-result": { |     "@jest/test-result": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.3.0.tgz", | ||||||
|       "integrity": "sha512-FZzSo36h++U93vNWZ0KgvlNuZ9pnDnztvaM7P/UcTx87aPDotG18bXifkf1Ji44B7k/eIatmMzkBapnAzjkJkg==", |       "integrity": "sha512-mqrGuiiPXl1ap09Mydg4O782F3ouDQfsKqtQzIjitpwv3t1cHDwCto21jThw6WRRE+dKcWQvLG70GpyLJICfGw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/console": "^25.1.0", |         "@jest/console": "^25.3.0", | ||||||
|         "@jest/transform": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |  | ||||||
|         "@types/istanbul-lib-coverage": "^2.0.0", |         "@types/istanbul-lib-coverage": "^2.0.0", | ||||||
|         "collect-v8-coverage": "^1.0.0" |         "collect-v8-coverage": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/test-sequencer": { |     "@jest/test-sequencer": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.3.0.tgz", | ||||||
|       "integrity": "sha512-WgZLRgVr2b4l/7ED1J1RJQBOharxS11EFhmwDqknpknE0Pm87HLZVS2Asuuw+HQdfQvm2aXL2FvvBLxOD1D0iw==", |       "integrity": "sha512-Xvns3xbji7JCvVcDGvqJ/pf4IpmohPODumoPEZJ0/VgC5gI4XaNVIBET2Dq5Czu6Gk3xFcmhtthh/MBOTljdNg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "jest-haste-map": "^25.1.0", |         "jest-haste-map": "^25.3.0", | ||||||
|         "jest-runner": "^25.1.0", |         "jest-runner": "^25.3.0", | ||||||
|         "jest-runtime": "^25.1.0" |         "jest-runtime": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/transform": { |     "@jest/transform": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.3.0.tgz", | ||||||
|       "integrity": "sha512-4ktrQ2TPREVeM+KxB4zskAT84SnmG1vaz4S+51aTefyqn3zocZUnliLLm5Fsl85I3p/kFPN4CRp1RElIfXGegQ==", |       "integrity": "sha512-W01p8kTDvvEX6kd0tJc7Y5VdYyFaKwNWy1HQz6Jqlhu48z/8Gxp+yFCDVj+H8Rc7ezl3Mg0hDaGuFVkmHOqirg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/core": "^7.1.0", |         "@babel/core": "^7.1.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "babel-plugin-istanbul": "^6.0.0", |         "babel-plugin-istanbul": "^6.0.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "convert-source-map": "^1.4.0", |         "convert-source-map": "^1.4.0", | ||||||
|         "fast-json-stable-stringify": "^2.0.0", |         "fast-json-stable-stringify": "^2.0.0", | ||||||
|         "graceful-fs": "^4.2.3", |         "graceful-fs": "^4.2.3", | ||||||
|         "jest-haste-map": "^25.1.0", |         "jest-haste-map": "^25.3.0", | ||||||
|         "jest-regex-util": "^25.1.0", |         "jest-regex-util": "^25.2.6", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "micromatch": "^4.0.2", |         "micromatch": "^4.0.2", | ||||||
|         "pirates": "^4.0.1", |         "pirates": "^4.0.1", | ||||||
|         "realpath-native": "^1.1.0", |         "realpath-native": "^2.0.0", | ||||||
|         "slash": "^3.0.0", |         "slash": "^3.0.0", | ||||||
|         "source-map": "^0.6.1", |         "source-map": "^0.6.1", | ||||||
|         "write-file-atomic": "^3.0.0" |         "write-file-atomic": "^3.0.0" | ||||||
| @ -620,9 +994,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jest/types": { |     "@jest/types": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.3.0.tgz", | ||||||
|       "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", |       "integrity": "sha512-UkaDNewdqXAmCDbN2GlUM6amDKS78eCqiw/UmF5nE0mmLTd6moJkiZJML/X52Ke3LH7Swhw883IRXq8o9nWjVw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@types/istanbul-lib-coverage": "^2.0.0", |         "@types/istanbul-lib-coverage": "^2.0.0", | ||||||
| @ -632,18 +1006,18 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@sinonjs/commons": { |     "@sinonjs/commons": { | ||||||
|       "version": "1.7.0", |       "version": "1.7.2", | ||||||
|       "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz", |       "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", | ||||||
|       "integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==", |       "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "type-detect": "4.0.8" |         "type-detect": "4.0.8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@types/babel__core": { |     "@types/babel__core": { | ||||||
|       "version": "7.1.3", |       "version": "7.1.7", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", |       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz", | ||||||
|       "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", |       "integrity": "sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/parser": "^7.1.0", |         "@babel/parser": "^7.1.0", | ||||||
| @ -673,9 +1047,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@types/babel__traverse": { |     "@types/babel__traverse": { | ||||||
|       "version": "7.0.8", |       "version": "7.0.10", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", |       "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.10.tgz", | ||||||
|       "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", |       "integrity": "sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/types": "^7.3.0" |         "@babel/types": "^7.3.0" | ||||||
| @ -719,13 +1093,13 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@types/jest": { |     "@types/jest": { | ||||||
|       "version": "25.1.4", |       "version": "25.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.1.4.tgz", |       "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.1.tgz", | ||||||
|       "integrity": "sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw==", |       "integrity": "sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "jest-diff": "^25.1.0", |         "jest-diff": "^25.2.1", | ||||||
|         "pretty-format": "^25.1.0" |         "pretty-format": "^25.2.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@types/json-schema": { |     "@types/json-schema": { | ||||||
| @ -735,9 +1109,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@types/node": { |     "@types/node": { | ||||||
|       "version": "12.12.30", |       "version": "13.11.1", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.30.tgz", |       "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", | ||||||
|       "integrity": "sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg==", |       "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@types/normalize-package-data": { |     "@types/normalize-package-data": { | ||||||
| @ -746,6 +1120,12 @@ | |||||||
|       "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", |       "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "@types/prettier": { | ||||||
|  |       "version": "1.19.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", | ||||||
|  |       "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "@types/stack-utils": { |     "@types/stack-utils": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", | ||||||
| @ -759,9 +1139,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@types/yargs": { |     "@types/yargs": { | ||||||
|       "version": "15.0.3", |       "version": "15.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.3.tgz", |       "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", | ||||||
|       "integrity": "sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ==", |       "integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@types/yargs-parser": "*" |         "@types/yargs-parser": "*" | ||||||
| @ -798,15 +1178,53 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@typescript-eslint/parser": { |     "@typescript-eslint/parser": { | ||||||
|       "version": "2.23.0", |       "version": "2.27.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.23.0.tgz", |       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.27.0.tgz", | ||||||
|       "integrity": "sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg==", |       "integrity": "sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@types/eslint-visitor-keys": "^1.0.0", |         "@types/eslint-visitor-keys": "^1.0.0", | ||||||
|         "@typescript-eslint/experimental-utils": "2.23.0", |         "@typescript-eslint/experimental-utils": "2.27.0", | ||||||
|         "@typescript-eslint/typescript-estree": "2.23.0", |         "@typescript-eslint/typescript-estree": "2.27.0", | ||||||
|         "eslint-visitor-keys": "^1.1.0" |         "eslint-visitor-keys": "^1.1.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@typescript-eslint/experimental-utils": { | ||||||
|  |           "version": "2.27.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz", | ||||||
|  |           "integrity": "sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "@types/json-schema": "^7.0.3", | ||||||
|  |             "@typescript-eslint/typescript-estree": "2.27.0", | ||||||
|  |             "eslint-scope": "^5.0.0", | ||||||
|  |             "eslint-utils": "^2.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "@typescript-eslint/typescript-estree": { | ||||||
|  |           "version": "2.27.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz", | ||||||
|  |           "integrity": "sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "debug": "^4.1.1", | ||||||
|  |             "eslint-visitor-keys": "^1.1.0", | ||||||
|  |             "glob": "^7.1.6", | ||||||
|  |             "is-glob": "^4.0.1", | ||||||
|  |             "lodash": "^4.17.15", | ||||||
|  |             "semver": "^6.3.0", | ||||||
|  |             "tsutils": "^3.17.1" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "eslint-utils": { | ||||||
|  |           "version": "2.0.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", | ||||||
|  |           "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "eslint-visitor-keys": "^1.1.0" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@typescript-eslint/typescript-estree": { |     "@typescript-eslint/typescript-estree": { | ||||||
| @ -825,9 +1243,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@zeit/ncc": { |     "@zeit/ncc": { | ||||||
|       "version": "0.20.5", |       "version": "0.22.1", | ||||||
|       "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz", |       "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.1.tgz", | ||||||
|       "integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==", |       "integrity": "sha512-Qq3bMuonkcnV/96jhy9SQYdh39NXHxNMJ1O31ZFzWG9n52fR2DLtgrNzhj/ahlEjnBziMLGVWDbaS9sf03/fEw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "abab": { |     "abab": { | ||||||
| @ -853,9 +1271,9 @@ | |||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "acorn": { |         "acorn": { | ||||||
|           "version": "6.4.0", |           "version": "6.4.1", | ||||||
|           "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", |           "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", | ||||||
|           "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", |           "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", | ||||||
|           "dev": true |           "dev": true | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| @ -1067,16 +1485,16 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "babel-jest": { |     "babel-jest": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.3.0.tgz", | ||||||
|       "integrity": "sha512-tz0VxUhhOE2y+g8R2oFrO/2VtVjA1lkJeavlhExuRBg3LdNJY9gwQ+Vcvqt9+cqy71MCTJhewvTB7Qtnnr9SWg==", |       "integrity": "sha512-qiXeX1Cmw4JZ5yQ4H57WpkO0MZ61Qj+YnsVUwAMnDV5ls+yHon11XjarDdgP7H8lTmiEi6biiZA8y3Tmvx6pCg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/transform": "^25.1.0", |         "@jest/transform": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "@types/babel__core": "^7.1.0", |         "@types/babel__core": "^7.1.7", | ||||||
|         "babel-plugin-istanbul": "^6.0.0", |         "babel-plugin-istanbul": "^6.0.0", | ||||||
|         "babel-preset-jest": "^25.1.0", |         "babel-preset-jest": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "slash": "^3.0.0" |         "slash": "^3.0.0" | ||||||
|       } |       } | ||||||
| @ -1095,23 +1513,40 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "babel-plugin-jest-hoist": { |     "babel-plugin-jest-hoist": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.6.tgz", | ||||||
|       "integrity": "sha512-oIsopO41vW4YFZ9yNYoLQATnnN46lp+MZ6H4VvPKFkcc2/fkl3CfE/NZZSmnEIEsJRmJAgkVEK0R7Zbl50CpTw==", |       "integrity": "sha512-qE2xjMathybYxjiGFJg0mLFrz0qNp83aNZycWDY/SuHiZNq+vQfRQtuINqyXyue1ELd8Rd+1OhFSLjms8msMbw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@types/babel__traverse": "^7.0.6" |         "@types/babel__traverse": "^7.0.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "babel-preset-jest": { |     "babel-preset-current-node-syntax": { | ||||||
|       "version": "25.1.0", |       "version": "0.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz", | ||||||
|       "integrity": "sha512-eCGn64olaqwUMaugXsTtGAM2I0QTahjEtnRu0ql8Ie+gDWAc1N6wqN0k2NilnyTunM69Pad7gJY7LOtwLimoFQ==", |       "integrity": "sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/plugin-syntax-bigint": "^7.0.0", |         "@babel/plugin-syntax-async-generators": "^7.8.4", | ||||||
|         "@babel/plugin-syntax-object-rest-spread": "^7.0.0", |         "@babel/plugin-syntax-bigint": "^7.8.3", | ||||||
|         "babel-plugin-jest-hoist": "^25.1.0" |         "@babel/plugin-syntax-class-properties": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-json-strings": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-numeric-separator": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-object-rest-spread": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", | ||||||
|  |         "@babel/plugin-syntax-optional-chaining": "^7.8.3" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "babel-preset-jest": { | ||||||
|  |       "version": "25.3.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.3.0.tgz", | ||||||
|  |       "integrity": "sha512-tjdvLKNMwDI9r+QWz9sZUQGTq1dpoxjUqFUpEasAc7MOtHg9XuLT2fx0udFG+k1nvMV0WvHHVAN7VmCZ+1Zxbw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "babel-plugin-jest-hoist": "^25.2.6", | ||||||
|  |         "babel-preset-current-node-syntax": "^0.1.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "balanced-match": { |     "balanced-match": { | ||||||
| @ -1204,9 +1639,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "browser-process-hrtime": { |     "browser-process-hrtime": { | ||||||
|       "version": "0.1.3", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", |       "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", | ||||||
|       "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", |       "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "browser-resolve": { |     "browser-resolve": { | ||||||
| @ -1383,9 +1818,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "collect-v8-coverage": { |     "collect-v8-coverage": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", | ||||||
|       "integrity": "sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ==", |       "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "collection-visit": { |     "collection-visit": { | ||||||
| @ -1815,6 +2250,12 @@ | |||||||
|       "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", |       "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "deepmerge": { | ||||||
|  |       "version": "4.2.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", | ||||||
|  |       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "define-properties": { |     "define-properties": { | ||||||
|       "version": "1.1.3", |       "version": "1.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", |       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", | ||||||
| @ -1878,9 +2319,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "diff-sequences": { |     "diff-sequences": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", | ||||||
|       "integrity": "sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==", |       "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "doctrine": { |     "doctrine": { | ||||||
| @ -2534,17 +2975,17 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "expect": { |     "expect": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/expect/-/expect-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/expect/-/expect-25.3.0.tgz", | ||||||
|       "integrity": "sha512-wqHzuoapQkhc3OKPlrpetsfueuEiMf3iWh0R8+duCu9PIjXoP7HgD5aeypwTnXUAjC8aMsiVDaWwlbJ1RlQ38g==", |       "integrity": "sha512-buboTXML2h/L0Kh44Ys2Cx49mX20ISc5KDirkxIs3Q9AJv0kazweUAbukegr+nHDOvFRKmxdojjIHCjqAceYfg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "ansi-styles": "^4.0.0", |         "ansi-styles": "^4.0.0", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "jest-matcher-utils": "^25.1.0", |         "jest-matcher-utils": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-regex-util": "^25.1.0" |         "jest-regex-util": "^25.2.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "extend": { |     "extend": { | ||||||
| @ -3029,9 +3470,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "html-escaper": { |     "html-escaper": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", | ||||||
|       "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", |       "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "http-signature": { |     "http-signature": { | ||||||
| @ -3106,9 +3547,9 @@ | |||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         "p-limit": { |         "p-limit": { | ||||||
|           "version": "2.2.2", |           "version": "2.3.0", | ||||||
|           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", |           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", | ||||||
|           "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", |           "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", | ||||||
|           "dev": true, |           "dev": true, | ||||||
|           "requires": { |           "requires": { | ||||||
|             "p-try": "^2.0.0" |             "p-try": "^2.0.0" | ||||||
| @ -3529,9 +3970,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "istanbul-reports": { |     "istanbul-reports": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", | ||||||
|       "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==", |       "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "html-escaper": "^2.0.0", |         "html-escaper": "^2.0.0", | ||||||
| @ -3539,54 +3980,54 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest": { |     "jest": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest/-/jest-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest/-/jest-25.3.0.tgz", | ||||||
|       "integrity": "sha512-FV6jEruneBhokkt9MQk0WUFoNTwnF76CLXtwNMfsc0um0TlB/LG2yxUd0KqaFjEJ9laQmVWQWS0sG/t2GsuI0w==", |       "integrity": "sha512-iKd5ShQSHzFT5IL/6h5RZJhApgqXSoPxhp5HEi94v6OAw9QkF8T7X+liEU2eEHJ1eMFYTHmeWLrpBWulsDpaUg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/core": "^25.1.0", |         "@jest/core": "^25.3.0", | ||||||
|         "import-local": "^3.0.2", |         "import-local": "^3.0.2", | ||||||
|         "jest-cli": "^25.1.0" |         "jest-cli": "^25.3.0" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "jest-cli": { |         "jest-cli": { | ||||||
|           "version": "25.1.0", |           "version": "25.3.0", | ||||||
|           "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.1.0.tgz", |           "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.3.0.tgz", | ||||||
|           "integrity": "sha512-p+aOfczzzKdo3AsLJlhs8J5EW6ffVidfSZZxXedJ0mHPBOln1DccqFmGCoO8JWd4xRycfmwy1eoQkMsF8oekPg==", |           "integrity": "sha512-XpNQPlW1tzpP7RGG8dxpkRegYDuLjzSiENu92+CYM87nEbmEPb3b4+yo8xcsHOnj0AG7DUt9b3uG8LuHI3MDzw==", | ||||||
|           "dev": true, |           "dev": true, | ||||||
|           "requires": { |           "requires": { | ||||||
|             "@jest/core": "^25.1.0", |             "@jest/core": "^25.3.0", | ||||||
|             "@jest/test-result": "^25.1.0", |             "@jest/test-result": "^25.3.0", | ||||||
|             "@jest/types": "^25.1.0", |             "@jest/types": "^25.3.0", | ||||||
|             "chalk": "^3.0.0", |             "chalk": "^3.0.0", | ||||||
|             "exit": "^0.1.2", |             "exit": "^0.1.2", | ||||||
|             "import-local": "^3.0.2", |             "import-local": "^3.0.2", | ||||||
|             "is-ci": "^2.0.0", |             "is-ci": "^2.0.0", | ||||||
|             "jest-config": "^25.1.0", |             "jest-config": "^25.3.0", | ||||||
|             "jest-util": "^25.1.0", |             "jest-util": "^25.3.0", | ||||||
|             "jest-validate": "^25.1.0", |             "jest-validate": "^25.3.0", | ||||||
|             "prompts": "^2.0.1", |             "prompts": "^2.0.1", | ||||||
|             "realpath-native": "^1.1.0", |             "realpath-native": "^2.0.0", | ||||||
|             "yargs": "^15.0.0" |             "yargs": "^15.3.1" | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-changed-files": { |     "jest-changed-files": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.3.0.tgz", | ||||||
|       "integrity": "sha512-bdL1aHjIVy3HaBO3eEQeemGttsq1BDlHgWcOjEOIAcga7OOEGWHD2WSu8HhL7I1F0mFFyci8VKU4tRNk+qtwDA==", |       "integrity": "sha512-eqd5hyLbUjIVvLlJ3vQ/MoPxsxfESVXG9gvU19XXjKzxr+dXmZIqCXiY0OiYaibwlHZBJl2Vebkc0ADEMzCXew==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "execa": "^3.2.0", |         "execa": "^3.2.0", | ||||||
|         "throat": "^5.0.0" |         "throat": "^5.0.0" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "cross-spawn": { |         "cross-spawn": { | ||||||
|           "version": "7.0.1", |           "version": "7.0.2", | ||||||
|           "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", |           "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", | ||||||
|           "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", |           "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", | ||||||
|           "dev": true, |           "dev": true, | ||||||
|           "requires": { |           "requires": { | ||||||
|             "path-key": "^3.1.0", |             "path-key": "^3.1.0", | ||||||
| @ -3675,196 +4116,210 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-circus": { |     "jest-circus": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-25.3.0.tgz", | ||||||
|       "integrity": "sha512-Axlcr2YMxVarMW4SiZhCFCjNKhdF4xF9AIdltyutQOKyyDT795Kl/fzI95O0l8idE51Npj2wDj5GhrV7uEoEJA==", |       "integrity": "sha512-Eu9nwvgBiJhriEwItjwSIkIAsmMTd8xciUweGge8vUHtXap/JkM9oF30DXskhsF2UwkdKiijQ75dReO5q2AOvA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/traverse": "^7.1.0", |         "@babel/traverse": "^7.1.0", | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/environment": "^25.3.0", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "co": "^4.6.0", |         "co": "^4.6.0", | ||||||
|         "expect": "^25.1.0", |         "expect": "^25.3.0", | ||||||
|         "is-generator-fn": "^2.0.0", |         "is-generator-fn": "^2.0.0", | ||||||
|         "jest-each": "^25.1.0", |         "jest-each": "^25.3.0", | ||||||
|         "jest-matcher-utils": "^25.1.0", |         "jest-matcher-utils": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-snapshot": "^25.1.0", |         "jest-runtime": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-snapshot": "^25.3.0", | ||||||
|         "pretty-format": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|  |         "pretty-format": "^25.3.0", | ||||||
|         "stack-utils": "^1.0.1", |         "stack-utils": "^1.0.1", | ||||||
|         "throat": "^5.0.0" |         "throat": "^5.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-config": { |     "jest-config": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.3.0.tgz", | ||||||
|       "integrity": "sha512-tLmsg4SZ5H7tuhBC5bOja0HEblM0coS3Wy5LTCb2C8ZV6eWLewHyK+3qSq9Bi29zmWQ7ojdCd3pxpx4l4d2uGw==", |       "integrity": "sha512-CmF1JnNWFmoCSPC4tnU52wnVBpuxHjilA40qH/03IHxIevkjUInSMwaDeE6ACfxMPTLidBGBCO3EbxvzPbo8wA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/core": "^7.1.0", |         "@babel/core": "^7.1.0", | ||||||
|         "@jest/test-sequencer": "^25.1.0", |         "@jest/test-sequencer": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "babel-jest": "^25.1.0", |         "babel-jest": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|  |         "deepmerge": "^4.2.2", | ||||||
|         "glob": "^7.1.1", |         "glob": "^7.1.1", | ||||||
|         "jest-environment-jsdom": "^25.1.0", |         "jest-environment-jsdom": "^25.3.0", | ||||||
|         "jest-environment-node": "^25.1.0", |         "jest-environment-node": "^25.3.0", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "jest-jasmine2": "^25.1.0", |         "jest-jasmine2": "^25.3.0", | ||||||
|         "jest-regex-util": "^25.1.0", |         "jest-regex-util": "^25.2.6", | ||||||
|         "jest-resolve": "^25.1.0", |         "jest-resolve": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jest-validate": "^25.1.0", |         "jest-validate": "^25.3.0", | ||||||
|         "micromatch": "^4.0.2", |         "micromatch": "^4.0.2", | ||||||
|         "pretty-format": "^25.1.0", |         "pretty-format": "^25.3.0", | ||||||
|         "realpath-native": "^1.1.0" |         "realpath-native": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-diff": { |     "jest-diff": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.3.0.tgz", | ||||||
|       "integrity": "sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==", |       "integrity": "sha512-vyvs6RPoVdiwARwY4kqFWd4PirPLm2dmmkNzKqo38uZOzJvLee87yzDjIZLmY1SjM3XR5DwsUH+cdQ12vgqi1w==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "diff-sequences": "^25.1.0", |         "diff-sequences": "^25.2.6", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "pretty-format": "^25.1.0" |         "pretty-format": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-docblock": { |     "jest-docblock": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", | ||||||
|       "integrity": "sha512-370P/mh1wzoef6hUKiaMcsPtIapY25suP6JqM70V9RJvdKLrV4GaGbfUseUVk4FZJw4oTZ1qSCJNdrClKt5JQA==", |       "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "detect-newline": "^3.0.0" |         "detect-newline": "^3.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-each": { |     "jest-each": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.3.0.tgz", | ||||||
|       "integrity": "sha512-R9EL8xWzoPySJ5wa0DXFTj7NrzKpRD40Jy+zQDp3Qr/2QmevJgkN9GqioCGtAJ2bW9P/MQRznQHQQhoeAyra7A==", |       "integrity": "sha512-aBfS4VOf/Qs95yUlX6d6WBv0szvOcTkTTyCIaLuQGj4bSHsT+Wd9dDngVHrCe5uytxpN8VM+NAloI6nbPjXfXw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "pretty-format": "^25.1.0" |         "pretty-format": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-environment-jsdom": { |     "jest-environment-jsdom": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.3.0.tgz", | ||||||
|       "integrity": "sha512-ILb4wdrwPAOHX6W82GGDUiaXSSOE274ciuov0lztOIymTChKFtC02ddyicRRCdZlB5YSrv3vzr1Z5xjpEe1OHQ==", |       "integrity": "sha512-jdE4bQN+k2QEZ9sWOxsqDJvMzbdFSCN/4tw8X0TQaCqyzKz58PyEf41oIr4WO7ERdp7WaJGBSUKF7imR3UW1lg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/environment": "^25.3.0", | ||||||
|         "@jest/fake-timers": "^25.1.0", |         "@jest/fake-timers": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "jest-mock": "^25.1.0", |         "jest-mock": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jsdom": "^15.1.1" |         "jsdom": "^15.2.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-environment-node": { |     "jest-environment-node": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.3.0.tgz", | ||||||
|       "integrity": "sha512-U9kFWTtAPvhgYY5upnH9rq8qZkj6mYLup5l1caAjjx9uNnkLHN2xgZy5mo4SyLdmrh/EtB9UPpKFShvfQHD0Iw==", |       "integrity": "sha512-XO09S29Nx1NU7TiMPHMoDIkxoGBuKSTbE+sHp0gXbeLDXhIdhysUI25kOqFFSD9AuDgvPvxWCXrvNqiFsOH33g==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/environment": "^25.3.0", | ||||||
|         "@jest/fake-timers": "^25.1.0", |         "@jest/fake-timers": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "jest-mock": "^25.1.0", |         "jest-mock": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0" |         "jest-util": "^25.3.0", | ||||||
|  |         "semver": "^6.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-get-type": { |     "jest-get-type": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", | ||||||
|       "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", |       "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "jest-haste-map": { |     "jest-haste-map": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.3.0.tgz", | ||||||
|       "integrity": "sha512-/2oYINIdnQZAqyWSn1GTku571aAfs8NxzSErGek65Iu5o8JYb+113bZysRMcC/pjE5v9w0Yz+ldbj9NxrFyPyw==", |       "integrity": "sha512-LjXaRa+F8wwtSxo9G+hHD/Cp63PPQzvaBL9XCVoJD2rrcJO0Zr2+YYzAFWWYJ5GlPUkoaJFJtOuk0sL6MJY80A==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "anymatch": "^3.0.3", |         "anymatch": "^3.0.3", | ||||||
|         "fb-watchman": "^2.0.0", |         "fb-watchman": "^2.0.0", | ||||||
|         "fsevents": "^2.1.2", |         "fsevents": "^2.1.2", | ||||||
|         "graceful-fs": "^4.2.3", |         "graceful-fs": "^4.2.3", | ||||||
|         "jest-serializer": "^25.1.0", |         "jest-serializer": "^25.2.6", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jest-worker": "^25.1.0", |         "jest-worker": "^25.2.6", | ||||||
|         "micromatch": "^4.0.2", |         "micromatch": "^4.0.2", | ||||||
|         "sane": "^4.0.3", |         "sane": "^4.0.3", | ||||||
|         "walker": "^1.0.7" |         "walker": "^1.0.7", | ||||||
|  |         "which": "^2.0.2" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "which": { | ||||||
|  |           "version": "2.0.2", | ||||||
|  |           "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||||
|  |           "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "isexe": "^2.0.0" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-jasmine2": { |     "jest-jasmine2": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.3.0.tgz", | ||||||
|       "integrity": "sha512-GdncRq7jJ7sNIQ+dnXvpKO2MyP6j3naNK41DTTjEAhLEdpImaDA9zSAZwDhijjSF/D7cf4O5fdyUApGBZleaEg==", |       "integrity": "sha512-NCYOGE6+HNzYFSui52SefgpsnIzvxjn6KAgqw66BdRp37xpMD/4kujDHLNW5bS5i53os5TcMn6jYrzQRO8VPrQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/traverse": "^7.1.0", |         "@babel/traverse": "^7.1.0", | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/environment": "^25.3.0", | ||||||
|         "@jest/source-map": "^25.1.0", |         "@jest/source-map": "^25.2.6", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "co": "^4.6.0", |         "co": "^4.6.0", | ||||||
|         "expect": "^25.1.0", |         "expect": "^25.3.0", | ||||||
|         "is-generator-fn": "^2.0.0", |         "is-generator-fn": "^2.0.0", | ||||||
|         "jest-each": "^25.1.0", |         "jest-each": "^25.3.0", | ||||||
|         "jest-matcher-utils": "^25.1.0", |         "jest-matcher-utils": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-runtime": "^25.1.0", |         "jest-runtime": "^25.3.0", | ||||||
|         "jest-snapshot": "^25.1.0", |         "jest-snapshot": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "pretty-format": "^25.1.0", |         "pretty-format": "^25.3.0", | ||||||
|         "throat": "^5.0.0" |         "throat": "^5.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-leak-detector": { |     "jest-leak-detector": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.3.0.tgz", | ||||||
|       "integrity": "sha512-3xRI264dnhGaMHRvkFyEKpDeaRzcEBhyNrOG5oT8xPxOyUAblIAQnpiR3QXu4wDor47MDTiHbiFcbypdLcLW5w==", |       "integrity": "sha512-jk7k24dMIfk8LUSQQGN8PyOy9+J0NAfHZWiDmUDYVMctY8FLJQ1eQ8+PjMoN8PgwhLIggUqgYJnyRFvUz3jLRw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "pretty-format": "^25.1.0" |         "pretty-format": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-matcher-utils": { |     "jest-matcher-utils": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.3.0.tgz", | ||||||
|       "integrity": "sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==", |       "integrity": "sha512-ZBUJ2fchNIZt+fyzkuCFBb8SKaU//Rln45augfUtbHaGyVxCO++ANARdBK9oPGXU3hEDgyy7UHnOP/qNOJXFUg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "jest-diff": "^25.1.0", |         "jest-diff": "^25.3.0", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "pretty-format": "^25.1.0" |         "pretty-format": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-message-util": { |     "jest-message-util": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.3.0.tgz", | ||||||
|       "integrity": "sha512-Nr/Iwar2COfN22aCqX0kCVbXgn8IBm9nWf4xwGr5Olv/KZh0CZ32RKgZWMVDXGdOahicM10/fgjdimGNX/ttCQ==", |       "integrity": "sha512-5QNy9Id4WxJbRITEbA1T1kem9bk7y2fD0updZMSTNHtbEDnYOGLDPAuFBhFgVmOZpv0n6OMdVkK+WhyXEPCcOw==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/code-frame": "^7.0.0", |         "@babel/code-frame": "^7.0.0", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |  | ||||||
|         "@types/stack-utils": "^1.0.1", |         "@types/stack-utils": "^1.0.1", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "micromatch": "^4.0.2", |         "micromatch": "^4.0.2", | ||||||
| @ -3873,12 +4328,12 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-mock": { |     "jest-mock": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.3.0.tgz", | ||||||
|       "integrity": "sha512-28/u0sqS+42vIfcd1mlcg4ZVDmSUYuNvImP4X2lX5hRMLW+CN0BeiKVD4p+ujKKbSPKd3rg/zuhCF+QBLJ4vag==", |       "integrity": "sha512-yRn6GbuqB4j3aYu+Z1ezwRiZfp0o9om5uOcBovVtkcRLeBCNP5mT0ysdenUsxAHnQUgGwPOE1wwhtQYe6NKirQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0" |         "@jest/types": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-pnp-resolver": { |     "jest-pnp-resolver": { | ||||||
| @ -3888,93 +4343,94 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "jest-regex-util": { |     "jest-regex-util": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", | ||||||
|       "integrity": "sha512-9lShaDmDpqwg+xAd73zHydKrBbbrIi08Kk9YryBEBybQFg/lBWR/2BDjjiSE7KIppM9C5+c03XiDaZ+m4Pgs1w==", |       "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "jest-resolve": { |     "jest-resolve": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.3.0.tgz", | ||||||
|       "integrity": "sha512-XkBQaU1SRCHj2Evz2Lu4Czs+uIgJXWypfO57L7JYccmAXv4slXA6hzNblmcRmf7P3cQ1mE7fL3ABV6jAwk4foQ==", |       "integrity": "sha512-IHoQAAybulsJ+ZgWis+ekYKDAoFkVH5Nx/znpb41zRtpxj4fr2WNV9iDqavdSm8GIpMlsfZxbC/fV9DhW0q9VQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "browser-resolve": "^1.11.3", |         "browser-resolve": "^1.11.3", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "jest-pnp-resolver": "^1.2.1", |         "jest-pnp-resolver": "^1.2.1", | ||||||
|         "realpath-native": "^1.1.0" |         "realpath-native": "^2.0.0", | ||||||
|  |         "resolve": "^1.15.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-resolve-dependencies": { |     "jest-resolve-dependencies": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.3.0.tgz", | ||||||
|       "integrity": "sha512-Cu/Je38GSsccNy4I2vL12ZnBlD170x2Oh1devzuM9TLH5rrnLW1x51lN8kpZLYTvzx9j+77Y5pqBaTqfdzVzrw==", |       "integrity": "sha512-bDUlLYmHW+f7J7KgcY2lkq8EMRqKonRl0XoD4Wp5SJkgAxKJnsaIOlrrVNTfXYf+YOu3VCjm/Ac2hPF2nfsCIA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "jest-regex-util": "^25.1.0", |         "jest-regex-util": "^25.2.6", | ||||||
|         "jest-snapshot": "^25.1.0" |         "jest-snapshot": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-runner": { |     "jest-runner": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.3.0.tgz", | ||||||
|       "integrity": "sha512-su3O5fy0ehwgt+e8Wy7A8CaxxAOCMzL4gUBftSs0Ip32S0epxyZPDov9Znvkl1nhVOJNf4UwAsnqfc3plfQH9w==", |       "integrity": "sha512-csDqSC9qGHYWDrzrElzEgFbteztFeZJmKhSgY5jlCIcN0+PhActzRNku0DA1Xa1HxGOb0/AfbP1EGJlP4fGPtA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/console": "^25.1.0", |         "@jest/console": "^25.3.0", | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/environment": "^25.3.0", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "exit": "^0.1.2", |         "exit": "^0.1.2", | ||||||
|         "graceful-fs": "^4.2.3", |         "graceful-fs": "^4.2.3", | ||||||
|         "jest-config": "^25.1.0", |         "jest-config": "^25.3.0", | ||||||
|         "jest-docblock": "^25.1.0", |         "jest-docblock": "^25.3.0", | ||||||
|         "jest-haste-map": "^25.1.0", |         "jest-haste-map": "^25.3.0", | ||||||
|         "jest-jasmine2": "^25.1.0", |         "jest-jasmine2": "^25.3.0", | ||||||
|         "jest-leak-detector": "^25.1.0", |         "jest-leak-detector": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-resolve": "^25.1.0", |         "jest-resolve": "^25.3.0", | ||||||
|         "jest-runtime": "^25.1.0", |         "jest-runtime": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jest-worker": "^25.1.0", |         "jest-worker": "^25.2.6", | ||||||
|         "source-map-support": "^0.5.6", |         "source-map-support": "^0.5.6", | ||||||
|         "throat": "^5.0.0" |         "throat": "^5.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-runtime": { |     "jest-runtime": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.3.0.tgz", | ||||||
|       "integrity": "sha512-mpPYYEdbExKBIBB16ryF6FLZTc1Rbk9Nx0ryIpIMiDDkOeGa0jQOKVI/QeGvVGlunKKm62ywcioeFVzIbK03bA==", |       "integrity": "sha512-gn5KYB1wxXRM3nfw8fVpthFu60vxQUCr+ShGq41+ZBFF3DRHZRKj3HDWVAVB4iTNBj2y04QeAo5cZ/boYaPg0w==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/console": "^25.1.0", |         "@jest/console": "^25.3.0", | ||||||
|         "@jest/environment": "^25.1.0", |         "@jest/environment": "^25.3.0", | ||||||
|         "@jest/source-map": "^25.1.0", |         "@jest/source-map": "^25.2.6", | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/transform": "^25.1.0", |         "@jest/transform": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "@types/yargs": "^15.0.0", |         "@types/yargs": "^15.0.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "collect-v8-coverage": "^1.0.0", |         "collect-v8-coverage": "^1.0.0", | ||||||
|         "exit": "^0.1.2", |         "exit": "^0.1.2", | ||||||
|         "glob": "^7.1.3", |         "glob": "^7.1.3", | ||||||
|         "graceful-fs": "^4.2.3", |         "graceful-fs": "^4.2.3", | ||||||
|         "jest-config": "^25.1.0", |         "jest-config": "^25.3.0", | ||||||
|         "jest-haste-map": "^25.1.0", |         "jest-haste-map": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-mock": "^25.1.0", |         "jest-mock": "^25.3.0", | ||||||
|         "jest-regex-util": "^25.1.0", |         "jest-regex-util": "^25.2.6", | ||||||
|         "jest-resolve": "^25.1.0", |         "jest-resolve": "^25.3.0", | ||||||
|         "jest-snapshot": "^25.1.0", |         "jest-snapshot": "^25.3.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "jest-validate": "^25.1.0", |         "jest-validate": "^25.3.0", | ||||||
|         "realpath-native": "^1.1.0", |         "realpath-native": "^2.0.0", | ||||||
|         "slash": "^3.0.0", |         "slash": "^3.0.0", | ||||||
|         "strip-bom": "^4.0.0", |         "strip-bom": "^4.0.0", | ||||||
|         "yargs": "^15.0.0" |         "yargs": "^15.3.1" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "strip-bom": { |         "strip-bom": { | ||||||
| @ -3986,84 +4442,77 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-serializer": { |     "jest-serializer": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.2.6.tgz", | ||||||
|       "integrity": "sha512-20Wkq5j7o84kssBwvyuJ7Xhn7hdPeTXndnwIblKDR2/sy1SUm6rWWiG9kSCgJPIfkDScJCIsTtOKdlzfIHOfKA==", |       "integrity": "sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "jest-snapshot": { |     "jest-snapshot": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.3.0.tgz", | ||||||
|       "integrity": "sha512-xZ73dFYN8b/+X2hKLXz4VpBZGIAn7muD/DAg+pXtDzDGw3iIV10jM7WiHqhCcpDZfGiKEj7/2HXAEPtHTj0P2A==", |       "integrity": "sha512-GGpR6Oro2htJPKh5RX4PR1xwo5jCEjtvSPLW1IS7N85y+2bWKbiknHpJJRKSdGXghElb5hWaeQASJI4IiRayGg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/types": "^7.0.0", |         "@babel/types": "^7.0.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|  |         "@types/prettier": "^1.19.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "expect": "^25.1.0", |         "expect": "^25.3.0", | ||||||
|         "jest-diff": "^25.1.0", |         "jest-diff": "^25.3.0", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "jest-matcher-utils": "^25.1.0", |         "jest-matcher-utils": "^25.3.0", | ||||||
|         "jest-message-util": "^25.1.0", |         "jest-message-util": "^25.3.0", | ||||||
|         "jest-resolve": "^25.1.0", |         "jest-resolve": "^25.3.0", | ||||||
|         "mkdirp": "^0.5.1", |         "make-dir": "^3.0.0", | ||||||
|         "natural-compare": "^1.4.0", |         "natural-compare": "^1.4.0", | ||||||
|         "pretty-format": "^25.1.0", |         "pretty-format": "^25.3.0", | ||||||
|         "semver": "^7.1.1" |         "semver": "^6.3.0" | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "semver": { |  | ||||||
|           "version": "7.1.2", |  | ||||||
|           "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", |  | ||||||
|           "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==", |  | ||||||
|           "dev": true |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-util": { |     "jest-util": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.3.0.tgz", | ||||||
|       "integrity": "sha512-7did6pLQ++87Qsj26Fs/TIwZMUFBXQ+4XXSodRNy3luch2DnRXsSnmpVtxxQ0Yd6WTipGpbhh2IFP1mq6/fQGw==", |       "integrity": "sha512-dc625P/KS/CpWTJJJxKc4bA3A6c+PJGBAqS8JTJqx4HqPoKNqXg/Ec8biL2Z1TabwK7E7Ilf0/ukSEXM1VwzNA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "is-ci": "^2.0.0", |         "is-ci": "^2.0.0", | ||||||
|         "mkdirp": "^0.5.1" |         "make-dir": "^3.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-validate": { |     "jest-validate": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.3.0.tgz", | ||||||
|       "integrity": "sha512-kGbZq1f02/zVO2+t1KQGSVoCTERc5XeObLwITqC6BTRH3Adv7NZdYqCpKIZLUgpLXf2yISzQ465qOZpul8abXA==", |       "integrity": "sha512-3WuXgIZ4HXUvW6gk9twFFkT9j6zUorKnF2oEY8VEsHb7x5LGvVlN3WUsbqazVKuyXwvikO2zFJ/YTySMsMje2w==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "camelcase": "^5.3.1", |         "camelcase": "^5.3.1", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "jest-get-type": "^25.1.0", |         "jest-get-type": "^25.2.6", | ||||||
|         "leven": "^3.1.0", |         "leven": "^3.1.0", | ||||||
|         "pretty-format": "^25.1.0" |         "pretty-format": "^25.3.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-watcher": { |     "jest-watcher": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.3.0.tgz", | ||||||
|       "integrity": "sha512-Q9eZ7pyaIr6xfU24OeTg4z1fUqBF/4MP6J801lyQfg7CsnZ/TCzAPvCfckKdL5dlBBEKBeHV0AdyjFZ5eWj4ig==", |       "integrity": "sha512-dtFkfidFCS9Ucv8azOg2hkiY3sgJEHeTLtGFHS+jfBEE7eRtrO6+2r1BokyDkaG2FOD7485r/SgpC1MFAENfeA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/test-result": "^25.1.0", |         "@jest/test-result": "^25.3.0", | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "ansi-escapes": "^4.2.1", |         "ansi-escapes": "^4.2.1", | ||||||
|         "chalk": "^3.0.0", |         "chalk": "^3.0.0", | ||||||
|         "jest-util": "^25.1.0", |         "jest-util": "^25.3.0", | ||||||
|         "string-length": "^3.1.0" |         "string-length": "^3.1.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jest-worker": { |     "jest-worker": { | ||||||
|       "version": "25.1.0", |       "version": "25.2.6", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.2.6.tgz", | ||||||
|       "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", |       "integrity": "sha512-FJn9XDUSxcOR4cwDzRfL1z56rUofNTFs539FGASpd50RHdb6EVkhxQqktodW2mI49l+W3H+tFJDotCHUQF6dmA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "merge-stream": "^2.0.0", |         "merge-stream": "^2.0.0", | ||||||
| @ -4169,18 +4618,18 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "json5": { |     "json5": { | ||||||
|       "version": "2.1.1", |       "version": "2.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", |       "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", | ||||||
|       "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", |       "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "minimist": "^1.2.0" |         "minimist": "^1.2.5" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "minimist": { |         "minimist": { | ||||||
|           "version": "1.2.0", |           "version": "1.2.5", | ||||||
|           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", |           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | ||||||
|           "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", |           "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", | ||||||
|           "dev": true |           "dev": true | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| @ -4300,9 +4749,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "make-dir": { |     "make-dir": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", | ||||||
|       "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", |       "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "semver": "^6.0.0" |         "semver": "^6.0.0" | ||||||
| @ -4636,16 +5085,6 @@ | |||||||
|         "has": "^1.0.3" |         "has": "^1.0.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "object.getownpropertydescriptors": { |  | ||||||
|       "version": "2.1.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", |  | ||||||
|       "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "define-properties": "^1.1.3", |  | ||||||
|         "es-abstract": "^1.17.0-next.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "object.pick": { |     "object.pick": { | ||||||
|       "version": "1.3.0", |       "version": "1.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", |       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", | ||||||
| @ -4811,9 +5250,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "picomatch": { |     "picomatch": { | ||||||
|       "version": "2.2.1", |       "version": "2.2.2", | ||||||
|       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", |       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", | ||||||
|       "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", |       "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "pify": { |     "pify": { | ||||||
| @ -4859,9 +5298,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "prettier": { |     "prettier": { | ||||||
|       "version": "1.19.1", |       "version": "2.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", |       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", | ||||||
|       "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", |       "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "prettier-linter-helpers": { |     "prettier-linter-helpers": { | ||||||
| @ -4874,12 +5313,12 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "pretty-format": { |     "pretty-format": { | ||||||
|       "version": "25.1.0", |       "version": "25.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", |       "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.3.0.tgz", | ||||||
|       "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", |       "integrity": "sha512-wToHwF8bkQknIcFkBqNfKu4+UZqnrLn/Vr+wwKQwwvPzkBfDDKp/qIabFqdgtoi5PEnM8LFByVsOrHoa3SpTVA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@jest/types": "^25.1.0", |         "@jest/types": "^25.3.0", | ||||||
|         "ansi-regex": "^5.0.0", |         "ansi-regex": "^5.0.0", | ||||||
|         "ansi-styles": "^4.0.0", |         "ansi-styles": "^4.0.0", | ||||||
|         "react-is": "^16.12.0" |         "react-is": "^16.12.0" | ||||||
| @ -4892,13 +5331,13 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "prompts": { |     "prompts": { | ||||||
|       "version": "2.3.0", |       "version": "2.3.2", | ||||||
|       "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz", |       "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", | ||||||
|       "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==", |       "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "kleur": "^3.0.3", |         "kleur": "^3.0.3", | ||||||
|         "sisteransi": "^1.0.3" |         "sisteransi": "^1.0.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "prop-types": { |     "prop-types": { | ||||||
| @ -4913,9 +5352,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "psl": { |     "psl": { | ||||||
|       "version": "1.7.0", |       "version": "1.8.0", | ||||||
|       "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", |       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", | ||||||
|       "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", |       "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "pump": { |     "pump": { | ||||||
| @ -5052,13 +5491,10 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "realpath-native": { |     "realpath-native": { | ||||||
|       "version": "1.1.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", | ||||||
|       "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", |       "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", | ||||||
|       "dev": true, |       "dev": true | ||||||
|       "requires": { |  | ||||||
|         "util.promisify": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |     }, | ||||||
|     "regenerator-runtime": { |     "regenerator-runtime": { | ||||||
|       "version": "0.13.5", |       "version": "0.13.5", | ||||||
| @ -5429,9 +5865,9 @@ | |||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         "minimist": { |         "minimist": { | ||||||
|           "version": "1.2.0", |           "version": "1.2.5", | ||||||
|           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", |           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | ||||||
|           "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", |           "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", | ||||||
|           "dev": true |           "dev": true | ||||||
|         }, |         }, | ||||||
|         "normalize-path": { |         "normalize-path": { | ||||||
| @ -5538,9 +5974,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "sisteransi": { |     "sisteransi": { | ||||||
|       "version": "1.0.4", |       "version": "1.0.5", | ||||||
|       "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", | ||||||
|       "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==", |       "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "slash": { |     "slash": { | ||||||
| @ -6183,9 +6619,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "ts-jest": { |     "ts-jest": { | ||||||
|       "version": "25.2.1", |       "version": "25.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.2.1.tgz", |       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.3.1.tgz", | ||||||
|       "integrity": "sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A==", |       "integrity": "sha512-O53FtKguoMUByalAJW+NWEv7c4tus5ckmhfa7/V0jBb2z8v5rDSLFC1Ate7wLknYPC1euuhY6eJjQq4FtOZrkg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "bs-logger": "0.x", |         "bs-logger": "0.x", | ||||||
| @ -6194,16 +6630,17 @@ | |||||||
|         "json5": "2.x", |         "json5": "2.x", | ||||||
|         "lodash.memoize": "4.x", |         "lodash.memoize": "4.x", | ||||||
|         "make-error": "1.x", |         "make-error": "1.x", | ||||||
|         "mkdirp": "0.x", |         "micromatch": "4.x", | ||||||
|  |         "mkdirp": "1.x", | ||||||
|         "resolve": "1.x", |         "resolve": "1.x", | ||||||
|         "semver": "^5.5", |         "semver": "6.x", | ||||||
|         "yargs-parser": "^16.1.0" |         "yargs-parser": "18.x" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "semver": { |         "mkdirp": { | ||||||
|           "version": "5.7.1", |           "version": "1.0.4", | ||||||
|           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", |           "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", | ||||||
|           "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", |           "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", | ||||||
|           "dev": true |           "dev": true | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| @ -6353,18 +6790,6 @@ | |||||||
|       "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", |       "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "util.promisify": { |  | ||||||
|       "version": "1.0.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", |  | ||||||
|       "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "define-properties": "^1.1.3", |  | ||||||
|         "es-abstract": "^1.17.2", |  | ||||||
|         "has-symbols": "^1.0.1", |  | ||||||
|         "object.getownpropertydescriptors": "^2.1.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "uuid": { |     "uuid": { | ||||||
|       "version": "3.4.0", |       "version": "3.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", |       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", | ||||||
| @ -6378,9 +6803,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "v8-to-istanbul": { |     "v8-to-istanbul": { | ||||||
|       "version": "4.1.2", |       "version": "4.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.2.tgz", |       "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz", | ||||||
|       "integrity": "sha512-G9R+Hpw0ITAmPSr47lSlc5A1uekSYzXxTMlFxso2xoffwo4jQnzbv1p9yXIinO8UMZKfAFewaCHwWvnH4Jb4Ug==", |       "integrity": "sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@types/istanbul-lib-coverage": "^2.0.1", |         "@types/istanbul-lib-coverage": "^2.0.1", | ||||||
| @ -6418,12 +6843,12 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "w3c-hr-time": { |     "w3c-hr-time": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", | ||||||
|       "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", |       "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "browser-process-hrtime": "^0.1.2" |         "browser-process-hrtime": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "w3c-xmlserializer": { |     "w3c-xmlserializer": { | ||||||
| @ -6543,9 +6968,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "write-file-atomic": { |     "write-file-atomic": { | ||||||
|       "version": "3.0.1", |       "version": "3.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", |       "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", | ||||||
|       "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", |       "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "imurmurhash": "^0.1.4", |         "imurmurhash": "^0.1.4", | ||||||
| @ -6555,9 +6980,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "ws": { |     "ws": { | ||||||
|       "version": "7.2.1", |       "version": "7.2.3", | ||||||
|       "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz", |       "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", | ||||||
|       "integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A==", |       "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "xml-name-validator": { |     "xml-name-validator": { | ||||||
| @ -6588,9 +7013,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "yargs": { |     "yargs": { | ||||||
|       "version": "15.1.0", |       "version": "15.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", |       "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", | ||||||
|       "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", |       "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "cliui": "^6.0.0", |         "cliui": "^6.0.0", | ||||||
| @ -6603,7 +7028,7 @@ | |||||||
|         "string-width": "^4.2.0", |         "string-width": "^4.2.0", | ||||||
|         "which-module": "^2.0.0", |         "which-module": "^2.0.0", | ||||||
|         "y18n": "^4.0.0", |         "y18n": "^4.0.0", | ||||||
|         "yargs-parser": "^16.1.0" |         "yargs-parser": "^18.1.1" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "find-up": { |         "find-up": { | ||||||
| @ -6626,9 +7051,9 @@ | |||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         "p-limit": { |         "p-limit": { | ||||||
|           "version": "2.2.2", |           "version": "2.3.0", | ||||||
|           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", |           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", | ||||||
|           "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", |           "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", | ||||||
|           "dev": true, |           "dev": true, | ||||||
|           "requires": { |           "requires": { | ||||||
|             "p-try": "^2.0.0" |             "p-try": "^2.0.0" | ||||||
| @ -6658,9 +7083,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "yargs-parser": { |     "yargs-parser": { | ||||||
|       "version": "16.1.0", |       "version": "18.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", |       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", | ||||||
|       "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", |       "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "camelcase": "^5.0.0", |         "camelcase": "^5.0.0", | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
								
							| @ -29,23 +29,23 @@ | |||||||
|   }, |   }, | ||||||
|   "homepage": "https://github.com/actions/upload-artifact#readme", |   "homepage": "https://github.com/actions/upload-artifact#readme", | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@actions/artifact": "^0.2.0", |     "@actions/artifact": "^0.3.0", | ||||||
|     "@actions/core": "^1.2.3", |     "@actions/core": "^1.2.3", | ||||||
|     "@actions/glob": "^0.1.0", |     "@actions/glob": "^0.1.0", | ||||||
|     "@actions/io": "^1.0.2", |     "@actions/io": "^1.0.2", | ||||||
|     "@types/jest": "^25.1.4", |     "@types/jest": "^25.2.1", | ||||||
|     "@types/node": "^12.12.30", |     "@types/node": "^13.11.1", | ||||||
|     "@typescript-eslint/parser": "^2.23.0", |     "@typescript-eslint/parser": "^2.27.0", | ||||||
|     "@zeit/ncc": "^0.20.5", |     "@zeit/ncc": "^0.22.1", | ||||||
|     "concurrently": "^5.1.0", |     "concurrently": "^5.1.0", | ||||||
|     "eslint": "^6.8.0", |     "eslint": "^6.8.0", | ||||||
|     "eslint-plugin-github": "^3.4.1", |     "eslint-plugin-github": "^3.4.1", | ||||||
|     "eslint-plugin-jest": "^23.8.2", |     "eslint-plugin-jest": "^23.8.2", | ||||||
|     "glob": "^7.1.6", |     "glob": "^7.1.6", | ||||||
|     "jest": "^25.1.0", |     "jest": "^25.3.0", | ||||||
|     "jest-circus": "^25.1.0", |     "jest-circus": "^25.3.0", | ||||||
|     "prettier": "^1.19.1", |     "prettier": "^2.0.4", | ||||||
|     "ts-jest": "^25.2.1", |     "ts-jest": "^25.3.1", | ||||||
|     "typescript": "^3.8.3" |     "typescript": "^3.8.3" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user