├── .azure-pipelines └── azure-pipelines.yml ├── .gitignore ├── LICENSE ├── SECURITY.md ├── azure-devops-extension.json ├── configs ├── dev.json ├── release.json └── test.json ├── css └── wsjfSettings.css ├── images ├── icon-refresh.png └── logo.png ├── marketplace ├── AutoCalcWSJF.gif ├── RecalculateWSJF.png ├── WSJF-Setting.png ├── WSJF-create-fields.png ├── WSJF-used-values.png ├── WSJF_on_form.png └── details.md ├── package-lock.json ├── package.json ├── readme.md ├── src ├── wsjf.tsx ├── wsjfModels.tsx └── wsjfSettings.tsx ├── tsconfig.json ├── wsjf.html └── wsjfSettings.html /.azure-pipelines/azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | variables: 2 | - name: version.MajorMinor # Manually adjust the version number as needed for semantic versioning. Patch is auto-incremented. 3 | value: '1.2' 4 | - name: extensionName 5 | value: 'WSJF-extension' 6 | - name: marketplaceServiceConnection 7 | value: 'marketplaceServiceConnection' 8 | - name: publisherId 9 | value: 'MS-Agile-SAFe' 10 | - name: publicExtensionName 11 | value: "WSJF (Weighted Shortest Job First)" 12 | 13 | name: $(version.MajorMinor)$(rev:.r) 14 | 15 | trigger: 16 | branches: 17 | include: 18 | - master 19 | 20 | pr: none 21 | 22 | resources: 23 | repositories: 24 | - repository: pipeline-templates 25 | type: git 26 | name: DevLabs Extensions/pipeline-templates 27 | ref: main 28 | 29 | stages: 30 | - stage: 'Build' 31 | jobs: 32 | - job: 'BuildPack' 33 | displayName: "Build and package" 34 | pool: 35 | vmImage: ubuntu-latest 36 | steps: 37 | - task: NodeTool@0 38 | inputs: 39 | versionSpec: '14.x' 40 | - template: build.yml@pipeline-templates 41 | - template: package.yml@pipeline-templates 42 | parameters: 43 | extensionName: $(extensionName) 44 | outputPath: 'out' 45 | rootPath: './' 46 | 47 | - stage: 'DeployDev' 48 | displayName: 'Deploy to dev' 49 | dependsOn: Build 50 | condition: succeeded() 51 | jobs: 52 | - template: deploy.yml@pipeline-templates 53 | parameters: 54 | environment: 'dev' 55 | extensionName: $(extensionName) 56 | marketplaceConnectedServiceName: $(marketplaceServiceConnection) 57 | publisherId: $(publisherId) 58 | publicExtensionName: $(publicExtensionName) 59 | updateTaskVersion: true 60 | 61 | - stage: 'DeployTest' 62 | displayName: 'Deploy to Test' 63 | dependsOn: DeployDev 64 | condition: succeeded() 65 | jobs: 66 | - template: deploy.yml@pipeline-templates 67 | parameters: 68 | environment: 'test' 69 | extensionName: $(extensionName) 70 | marketplaceConnectedServiceName: $(marketplaceServiceConnection) 71 | publisherId: $(publisherId) 72 | publicExtensionName: $(publicExtensionName) 73 | updateTaskVersion: true 74 | 75 | - stage: 'DeployRelease' 76 | displayName: 'Deploy Release' 77 | dependsOn: DeployTest 78 | condition: succeeded() 79 | jobs: 80 | - template: deploy.yml@pipeline-templates 81 | parameters: 82 | environment: 'public' 83 | extensionName: $(extensionName) 84 | marketplaceConnectedServiceName: $(marketplaceServiceConnection) 85 | publisherId: $(publisherId) 86 | publicExtensionName: $(publicExtensionName) 87 | extensionVisibility: 'public' 88 | updateTaskVersion: true 89 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | *.vsix 4 | *.log -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. All rights reserved. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). 40 | 41 | 42 | -------------------------------------------------------------------------------- /azure-devops-extension.json: -------------------------------------------------------------------------------- 1 | { 2 | "public": false, 3 | "manifestVersion": 1, 4 | "id": "WSJF-extension", 5 | "publisher": "MS-Agile-SAFe", 6 | "version": "1.2.0", 7 | "name": "WSJF (Weighted Shortest Job First)", 8 | "description": "Auto calculates WSJF (weighted shortest job first) per work item and stores it in a work item field.", 9 | "categories": [ 10 | "Azure Boards" 11 | ], 12 | "tags": [ 13 | "WSJF", 14 | "SAFe" 15 | ], 16 | "targets": [ 17 | { 18 | "id": "Microsoft.VisualStudio.Services" 19 | } 20 | ], 21 | "contributions": [ 22 | { 23 | "id": "wsjf-work-item-form-observer", 24 | "type": "ms.vss-work-web.work-item-notifications", 25 | "description": "Update the 'WSJF' field when other fields on the form change.", 26 | "targets": [ 27 | "ms.vss-work-web.work-item-form" 28 | ], 29 | "properties": { 30 | "uri": "wsjf.html" 31 | } 32 | }, 33 | { 34 | "id": "wsjf-settings-hub", 35 | "type": "ms.vss-web.hub", 36 | "description": "Collection level settings experience for managing fields used to calculate WSJF.", 37 | "targets": [ 38 | "ms.vss-web.collection-admin-hub-group" 39 | ], 40 | "properties": { 41 | "name": "WSJF", 42 | "uri": "wsjfSettings.html" 43 | } 44 | }, 45 | { 46 | "id": "wsjf-contextMenu", 47 | "type": "ms.vss-web.action", 48 | "description": "Work item context menu action to update the WSJF field value for the selected work items.", 49 | "targets": [ 50 | "ms.vss-work-web.work-item-context-menu" 51 | ], 52 | "properties": { 53 | "text": "Recalculate WSJF values", 54 | "title": "Update the WSJF value for the selected work items", 55 | "icon": "images/icon-refresh.png", 56 | "groupId": "SAFe", 57 | "uri": "wsjf.html" 58 | } 59 | } 60 | ], 61 | "files": [ 62 | { 63 | "path": "css", 64 | "addressable": true 65 | }, 66 | { 67 | "path": "marketplace", 68 | "addressable": true 69 | }, 70 | { 71 | "path": "images", 72 | "addressable": true 73 | }, 74 | { 75 | "path": "dist", 76 | "addressable": true, 77 | "packagePath": "scripts" 78 | }, 79 | { 80 | "path": "wsjf.html", 81 | "addressable": true 82 | }, 83 | { 84 | "path": "wsjfSettings.html", 85 | "addressable": true 86 | }, 87 | { 88 | "path": "node_modules/vss-web-extension-sdk/lib", 89 | "addressable": true, 90 | "packagePath": "lib" 91 | } 92 | ], 93 | "scopes": [ 94 | "vso.work", 95 | "vso.work_write" 96 | ], 97 | "icons": { 98 | "default": "images/logo.png" 99 | }, 100 | "content": { 101 | "details": { 102 | "path": "marketplace/details.md" 103 | }, 104 | "license": { 105 | "path": "LICENSE" 106 | } 107 | }, 108 | "links": { 109 | "support": { 110 | "uri": "https://github.com/Microsoft/vsts-wsjf-extension/issues" 111 | } 112 | }, 113 | "repository": { 114 | "type": "git", 115 | "uri": "https://github.com/Microsoft/vsts-wsjf-extension" 116 | }, 117 | "branding": { 118 | "color": "rgb(220, 235, 252)", 119 | "theme": "light" 120 | }, 121 | "demands": [ 122 | "api-version/3.0" 123 | ] 124 | } -------------------------------------------------------------------------------- /configs/dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "public": false, 3 | "id": "WSJF-extension-dev", 4 | "name": "WSJF (Weighted Shortest Job First) (dev)" 5 | } -------------------------------------------------------------------------------- /configs/release.json: -------------------------------------------------------------------------------- 1 | { 2 | "galleryFlags": [ 3 | "Public" 4 | ], 5 | "public": true 6 | } -------------------------------------------------------------------------------- /configs/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "public": false, 3 | "id": "WSJF-extension-test", 4 | "name": "WSJF (Weighted Shortest Job First) (test)" 5 | } -------------------------------------------------------------------------------- /css/wsjfSettings.css: -------------------------------------------------------------------------------- 1 | .description-text, .description-image { 2 | margin-left: 20px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | .menu-bar { 7 | overflow: hidden; 8 | margin: 0 10px; 9 | border-top: 1px solid #ccc; 10 | border-bottom: 1px solid #ccc; 11 | font: 12px Segoe UI,Helvetica Neue,Helvetica,Arial,Verdana; 12 | color: #1e1e1e; 13 | 14 | } 15 | 16 | .settings-control { 17 | margin-top: 20px; 18 | margin-left: 20px; 19 | } 20 | 21 | .settings-control .combo { 22 | width: 400px; 23 | } -------------------------------------------------------------------------------- /images/icon-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/images/icon-refresh.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/images/logo.png -------------------------------------------------------------------------------- /marketplace/AutoCalcWSJF.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/marketplace/AutoCalcWSJF.gif -------------------------------------------------------------------------------- /marketplace/RecalculateWSJF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/marketplace/RecalculateWSJF.png -------------------------------------------------------------------------------- /marketplace/WSJF-Setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/marketplace/WSJF-Setting.png -------------------------------------------------------------------------------- /marketplace/WSJF-create-fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/marketplace/WSJF-create-fields.png -------------------------------------------------------------------------------- /marketplace/WSJF-used-values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/marketplace/WSJF-used-values.png -------------------------------------------------------------------------------- /marketplace/WSJF_on_form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/AzureDevOps-WSJF-Extension/e98959cdd5f1f2fa0ac16528733347e2da35f341/marketplace/WSJF_on_form.png -------------------------------------------------------------------------------- /marketplace/details.md: -------------------------------------------------------------------------------- 1 | # WSJF (Weighted Shortest Job First) 2 | 3 | Weighted Shortest Job First (WSJF) is a prioritization technique used in the Scaled Agile Framework (SAFe) to sequence work items based on their economic impact and size. It calculates the Cost of Delay (considering user value, time criticality, and risk reduction/opportunity enablement) divided by the job size to determine priority. WSJF helps teams maximize ROI by ensuring the most valuable tasks are tackled first, fostering efficient resource allocation and decision-making in agile environments. 4 | 5 | # Documentation 6 | 7 | The [Scaled Agile Framework](http://www.scaledagileframework.com) defines [WSJF (Weighted Shortest Job First)](http://www.scaledagileframework.com/wsjf/) as a calculation of cost of delay vs. job size which can help teams prioritize their portfolio backlogs with the items contributing the highest ROI. 8 | 9 | ![WSJF = Business Value + Time Criticality + Risk Reduction | Opportunity Enablement /Effort](marketplace/WSJF-used-values.png) 10 | 11 | ### The values used to calculate WSJF 12 | 13 | - Business Value 14 | - Time Criticality 15 | - Risk Reduction | Opportunity Enablement 16 | - Job Size (Effort) 17 | 18 | ### The steps below shows how to configure and use the WSJF extension 19 | 20 | 1. Create Fields 21 | 22 | - The first thing you need is to create the fields that will store the RR-OE and WSJF values. Create a custom decimal field through the process hub and add it to the work items you want to display WSJF data on. 23 | ![Create a custom decimal field](marketplace/WSJF-create-fields.png) 24 | 25 | 2. Configure WSJF 26 | 27 | - Navigate to the "WSJF" hub in the organisation settings. From here, you must specify the fields that will be used for Business Value, Time Criticality, Job Size and WSJF. The first three are defaulted to the fields provided out of the box by Microsoft but can be changed to custom fields if you prefer. 28 | ![WSJF displaying on the work item form](marketplace/WSJF-Setting.png) 29 | 30 | 3. Auto calculated WSJF field on the form 31 | 32 | - WSJF is automatically updated when the form is loaded. 33 | - WSJF is automatically updated when the Business Value, Time Criticality, Effort, or Risk Reduction fields are updated. 34 | ![WSJF is automatically updated on the work item form](marketplace/AutoCalcWSJF.gif) 35 | 36 | 4. Recalculate WSJF context menu item 37 | 38 | - Update WSJF for all selected work items on the backlog or query grid. 39 | ![Recalculate WSJF on the backlog](marketplace/RecalculateWSJF.png) 40 | 41 | _NOTE: If you're using Azure DevOps Server, you need to use witadmin to [Create a custom decimal field](https://www.visualstudio.com/en-us/docs/work/customize/add-modify-field#to-add-a-custom-field)_ 42 | 43 | ## Adding RROE and WSJF Score Values (For Azure DevOps Server) 44 | 45 | Export your WorkItem.XML file (ie. Epic.XML) using [WITAdmin](https://learn.microsoft.com/en-us/previous-versions/azure/devops/reference/witadmin/witadmin-import-export-manage-wits?view=tfs-2018) 46 | At the bottom of your "Fields" section add the following (Name and reference names may vary): 47 | 48 | ```xml 49 | 53 | WSJF Risk-Reduction 54 | 55 | 59 | WSJF Score 60 | 61 | ``` 62 | 63 | 3. Under your `
` and `` tags, choose where you would like the WSJF calculation to go and add: 64 | 65 | ```xml 66 |
67 | 68 | 72 | 76 | 80 | 84 | 88 | 89 |
90 | 91 | ``` 92 | 93 | - After this is done, open up your WSJF tab and adjust your settings 94 | ![WSJF displaying on the work item form](marketplace/WSJF-Setting.png) 95 | 96 | ## Support 97 | 98 | ## How to file issues and get help 99 | 100 | This project uses [GitHub Issues](https://github.com/microsoft/AzureDevOps-WSJF-Extension/issues) to track bugs and feature requests. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or feature request as a new Issue. 101 | 102 | ## Microsoft Support Policy 103 | 104 | Support for this project is limited to the resources listed above. 105 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AzureDevOps-WSJF-Extension", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "1.0.0", 9 | "dependencies": { 10 | "q": "^1.5.1", 11 | "vss-web-extension-sdk": "^5.141.0" 12 | }, 13 | "devDependencies": { 14 | "tfx-cli": "^0.11.0", 15 | "typescript": "^4.5.2" 16 | } 17 | }, 18 | "node_modules/@babel/code-frame": { 19 | "version": "7.16.7", 20 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 21 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 22 | "dev": true, 23 | "dependencies": { 24 | "@babel/highlight": "^7.16.7" 25 | }, 26 | "engines": { 27 | "node": ">=6.9.0" 28 | } 29 | }, 30 | "node_modules/@babel/helper-validator-identifier": { 31 | "version": "7.16.7", 32 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 33 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 34 | "dev": true, 35 | "engines": { 36 | "node": ">=6.9.0" 37 | } 38 | }, 39 | "node_modules/@babel/highlight": { 40 | "version": "7.16.10", 41 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 42 | "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 43 | "dev": true, 44 | "dependencies": { 45 | "@babel/helper-validator-identifier": "^7.16.7", 46 | "chalk": "^2.0.0", 47 | "js-tokens": "^4.0.0" 48 | }, 49 | "engines": { 50 | "node": ">=6.9.0" 51 | } 52 | }, 53 | "node_modules/@colors/colors": { 54 | "version": "1.5.0", 55 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 56 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 57 | "dev": true, 58 | "engines": { 59 | "node": ">=0.1.90" 60 | } 61 | }, 62 | "node_modules/@types/jquery": { 63 | "version": "3.3.22", 64 | "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.22.tgz", 65 | "integrity": "sha512-a4JDcIhJhHYnoWCkG3xT2CZxXZeA92JeREESorg0DMQ3ZsjuKF48h7XK4l5Gl2GRa/ItGRpKMT0pyK88yRgqXQ==", 66 | "dependencies": { 67 | "@types/sizzle": "*" 68 | } 69 | }, 70 | "node_modules/@types/jqueryui": { 71 | "version": "1.12.6", 72 | "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.6.tgz", 73 | "integrity": "sha512-lF4aIWtQ3Xbd6J+9WXz/day1pyf39ZMO/KUrigFAuMQ6FFVw2xZBIRCUwA7/CEnab1Bb7b4ko304Lxrp2xw8hQ==", 74 | "dependencies": { 75 | "@types/jquery": "*" 76 | } 77 | }, 78 | "node_modules/@types/knockout": { 79 | "version": "3.4.60", 80 | "resolved": "https://registry.npmjs.org/@types/knockout/-/knockout-3.4.60.tgz", 81 | "integrity": "sha512-0qFy/G5y+c2CrhUCCEDbodGfMXzVXVBdwpdHBxAVT0qDfnD3XD6dtEb73D1nn0Ip6/IJctSyLW/VpFkakoe5TQ==" 82 | }, 83 | "node_modules/@types/minimist": { 84 | "version": "1.2.2", 85 | "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", 86 | "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", 87 | "dev": true 88 | }, 89 | "node_modules/@types/mousetrap": { 90 | "version": "1.5.34", 91 | "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.5.34.tgz", 92 | "integrity": "sha512-a2yhRIADupQfOFM75v7GfcQQLUxU705+i/xcZ3N/3PK3Xdo31SUfuCUByWPGOHB1e38m7MxTx/D8FPVsJXZKJw==" 93 | }, 94 | "node_modules/@types/normalize-package-data": { 95 | "version": "2.4.1", 96 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 97 | "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 98 | "dev": true 99 | }, 100 | "node_modules/@types/react": { 101 | "version": "15.6.21", 102 | "resolved": "https://registry.npmjs.org/@types/react/-/react-15.6.21.tgz", 103 | "integrity": "sha512-XpKrM3ohs7pPOWpwPnaAoxbXMI5REcBTZm/c+WTLpfaAoDf99pnQAkTkg6DyPpnkmBbykhowaBd0sHP0+K7n0g==" 104 | }, 105 | "node_modules/@types/requirejs": { 106 | "version": "2.1.31", 107 | "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz", 108 | "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==" 109 | }, 110 | "node_modules/@types/sizzle": { 111 | "version": "2.3.2", 112 | "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", 113 | "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" 114 | }, 115 | "node_modules/ansi-styles": { 116 | "version": "3.2.1", 117 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 118 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 119 | "dev": true, 120 | "dependencies": { 121 | "color-convert": "^1.9.0" 122 | }, 123 | "engines": { 124 | "node": ">=4" 125 | } 126 | }, 127 | "node_modules/app-root-path": { 128 | "version": "1.0.0", 129 | "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.0.0.tgz", 130 | "integrity": "sha1-LHKZF0vGHLhv46SnmOAeSTt9U30=", 131 | "dev": true 132 | }, 133 | "node_modules/arch": { 134 | "version": "2.2.0", 135 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", 136 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", 137 | "dev": true, 138 | "funding": [ 139 | { 140 | "type": "github", 141 | "url": "https://github.com/sponsors/feross" 142 | }, 143 | { 144 | "type": "patreon", 145 | "url": "https://www.patreon.com/feross" 146 | }, 147 | { 148 | "type": "consulting", 149 | "url": "https://feross.org/support" 150 | } 151 | ] 152 | }, 153 | "node_modules/archiver": { 154 | "version": "2.0.3", 155 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.3.tgz", 156 | "integrity": "sha1-tDYLtYSvFDeZGUJxbyHXxSPR270=", 157 | "dev": true, 158 | "dependencies": { 159 | "archiver-utils": "^1.3.0", 160 | "async": "^2.0.0", 161 | "buffer-crc32": "^0.2.1", 162 | "glob": "^7.0.0", 163 | "lodash": "^4.8.0", 164 | "readable-stream": "^2.0.0", 165 | "tar-stream": "^1.5.0", 166 | "walkdir": "^0.0.11", 167 | "zip-stream": "^1.2.0" 168 | }, 169 | "engines": { 170 | "node": ">= 4" 171 | } 172 | }, 173 | "node_modules/archiver-utils": { 174 | "version": "1.3.0", 175 | "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", 176 | "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", 177 | "dev": true, 178 | "dependencies": { 179 | "glob": "^7.0.0", 180 | "graceful-fs": "^4.1.0", 181 | "lazystream": "^1.0.0", 182 | "lodash": "^4.8.0", 183 | "normalize-path": "^2.0.0", 184 | "readable-stream": "^2.0.0" 185 | }, 186 | "engines": { 187 | "node": ">= 0.10.0" 188 | } 189 | }, 190 | "node_modules/archiver/node_modules/async": { 191 | "version": "2.6.3", 192 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 193 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 194 | "dev": true, 195 | "dependencies": { 196 | "lodash": "^4.17.14" 197 | } 198 | }, 199 | "node_modules/arrify": { 200 | "version": "1.0.1", 201 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 202 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 203 | "dev": true, 204 | "engines": { 205 | "node": ">=0.10.0" 206 | } 207 | }, 208 | "node_modules/async": { 209 | "version": "1.5.2", 210 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 211 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 212 | "dev": true 213 | }, 214 | "node_modules/azure-devops-node-api": { 215 | "version": "10.2.2", 216 | "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz", 217 | "integrity": "sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow==", 218 | "dev": true, 219 | "dependencies": { 220 | "tunnel": "0.0.6", 221 | "typed-rest-client": "^1.8.4" 222 | } 223 | }, 224 | "node_modules/balanced-match": { 225 | "version": "1.0.2", 226 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 227 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 228 | "dev": true 229 | }, 230 | "node_modules/base64-js": { 231 | "version": "1.5.1", 232 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 233 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 234 | "dev": true, 235 | "funding": [ 236 | { 237 | "type": "github", 238 | "url": "https://github.com/sponsors/feross" 239 | }, 240 | { 241 | "type": "patreon", 242 | "url": "https://www.patreon.com/feross" 243 | }, 244 | { 245 | "type": "consulting", 246 | "url": "https://feross.org/support" 247 | } 248 | ] 249 | }, 250 | "node_modules/bl": { 251 | "version": "1.2.3", 252 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 253 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 254 | "dev": true, 255 | "dependencies": { 256 | "readable-stream": "^2.3.5", 257 | "safe-buffer": "^5.1.1" 258 | } 259 | }, 260 | "node_modules/brace-expansion": { 261 | "version": "1.1.11", 262 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 263 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 264 | "dev": true, 265 | "dependencies": { 266 | "balanced-match": "^1.0.0", 267 | "concat-map": "0.0.1" 268 | } 269 | }, 270 | "node_modules/buffer": { 271 | "version": "5.7.1", 272 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 273 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 274 | "dev": true, 275 | "funding": [ 276 | { 277 | "type": "github", 278 | "url": "https://github.com/sponsors/feross" 279 | }, 280 | { 281 | "type": "patreon", 282 | "url": "https://www.patreon.com/feross" 283 | }, 284 | { 285 | "type": "consulting", 286 | "url": "https://feross.org/support" 287 | } 288 | ], 289 | "dependencies": { 290 | "base64-js": "^1.3.1", 291 | "ieee754": "^1.1.13" 292 | } 293 | }, 294 | "node_modules/buffer-alloc": { 295 | "version": "1.2.0", 296 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 297 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 298 | "dev": true, 299 | "dependencies": { 300 | "buffer-alloc-unsafe": "^1.1.0", 301 | "buffer-fill": "^1.0.0" 302 | } 303 | }, 304 | "node_modules/buffer-alloc-unsafe": { 305 | "version": "1.1.0", 306 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 307 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", 308 | "dev": true 309 | }, 310 | "node_modules/buffer-crc32": { 311 | "version": "0.2.13", 312 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 313 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 314 | "dev": true, 315 | "engines": { 316 | "node": "*" 317 | } 318 | }, 319 | "node_modules/buffer-fill": { 320 | "version": "1.0.0", 321 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 322 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", 323 | "dev": true 324 | }, 325 | "node_modules/call-bind": { 326 | "version": "1.0.2", 327 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 328 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 329 | "dev": true, 330 | "dependencies": { 331 | "function-bind": "^1.1.1", 332 | "get-intrinsic": "^1.0.2" 333 | }, 334 | "funding": { 335 | "url": "https://github.com/sponsors/ljharb" 336 | } 337 | }, 338 | "node_modules/camelcase": { 339 | "version": "6.3.0", 340 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 341 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 342 | "dev": true, 343 | "engines": { 344 | "node": ">=10" 345 | }, 346 | "funding": { 347 | "url": "https://github.com/sponsors/sindresorhus" 348 | } 349 | }, 350 | "node_modules/camelcase-keys": { 351 | "version": "7.0.2", 352 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", 353 | "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", 354 | "dev": true, 355 | "dependencies": { 356 | "camelcase": "^6.3.0", 357 | "map-obj": "^4.1.0", 358 | "quick-lru": "^5.1.1", 359 | "type-fest": "^1.2.1" 360 | }, 361 | "engines": { 362 | "node": ">=12" 363 | }, 364 | "funding": { 365 | "url": "https://github.com/sponsors/sindresorhus" 366 | } 367 | }, 368 | "node_modules/chalk": { 369 | "version": "2.4.2", 370 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 371 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 372 | "dev": true, 373 | "dependencies": { 374 | "ansi-styles": "^3.2.1", 375 | "escape-string-regexp": "^1.0.5", 376 | "supports-color": "^5.3.0" 377 | }, 378 | "engines": { 379 | "node": ">=4" 380 | } 381 | }, 382 | "node_modules/clipboardy": { 383 | "version": "1.2.3", 384 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", 385 | "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", 386 | "dev": true, 387 | "dependencies": { 388 | "arch": "^2.1.0", 389 | "execa": "^0.8.0" 390 | }, 391 | "engines": { 392 | "node": ">=4" 393 | } 394 | }, 395 | "node_modules/color-convert": { 396 | "version": "1.9.3", 397 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 398 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 399 | "dev": true, 400 | "dependencies": { 401 | "color-name": "1.1.3" 402 | } 403 | }, 404 | "node_modules/color-name": { 405 | "version": "1.1.3", 406 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 407 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 408 | "dev": true 409 | }, 410 | "node_modules/colors": { 411 | "version": "1.3.3", 412 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", 413 | "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", 414 | "dev": true, 415 | "engines": { 416 | "node": ">=0.1.90" 417 | } 418 | }, 419 | "node_modules/compress-commons": { 420 | "version": "1.2.2", 421 | "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", 422 | "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", 423 | "dev": true, 424 | "dependencies": { 425 | "buffer-crc32": "^0.2.1", 426 | "crc32-stream": "^2.0.0", 427 | "normalize-path": "^2.0.0", 428 | "readable-stream": "^2.0.0" 429 | }, 430 | "engines": { 431 | "node": ">= 0.10.0" 432 | } 433 | }, 434 | "node_modules/concat-map": { 435 | "version": "0.0.1", 436 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 437 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 438 | "dev": true 439 | }, 440 | "node_modules/core-util-is": { 441 | "version": "1.0.3", 442 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 443 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 444 | "dev": true 445 | }, 446 | "node_modules/crc": { 447 | "version": "3.8.0", 448 | "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", 449 | "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", 450 | "dev": true, 451 | "dependencies": { 452 | "buffer": "^5.1.0" 453 | } 454 | }, 455 | "node_modules/crc32-stream": { 456 | "version": "2.0.0", 457 | "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", 458 | "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", 459 | "dev": true, 460 | "dependencies": { 461 | "crc": "^3.4.4", 462 | "readable-stream": "^2.0.0" 463 | }, 464 | "engines": { 465 | "node": ">= 0.10.0" 466 | } 467 | }, 468 | "node_modules/cross-spawn": { 469 | "version": "5.1.0", 470 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 471 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 472 | "dev": true, 473 | "dependencies": { 474 | "lru-cache": "^4.0.1", 475 | "shebang-command": "^1.2.0", 476 | "which": "^1.2.9" 477 | } 478 | }, 479 | "node_modules/cycle": { 480 | "version": "1.0.3", 481 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 482 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", 483 | "dev": true, 484 | "engines": { 485 | "node": ">=0.4.0" 486 | } 487 | }, 488 | "node_modules/dateformat": { 489 | "version": "1.0.11", 490 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.11.tgz", 491 | "integrity": "sha1-8ny+56ASu/uC6gUVYtOXf2CT27E=", 492 | "dev": true, 493 | "dependencies": { 494 | "get-stdin": "*", 495 | "meow": "*" 496 | }, 497 | "bin": { 498 | "dateformat": "bin/cli.js" 499 | }, 500 | "engines": { 501 | "node": "*" 502 | } 503 | }, 504 | "node_modules/decamelize": { 505 | "version": "5.0.1", 506 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", 507 | "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", 508 | "dev": true, 509 | "engines": { 510 | "node": ">=10" 511 | }, 512 | "funding": { 513 | "url": "https://github.com/sponsors/sindresorhus" 514 | } 515 | }, 516 | "node_modules/decamelize-keys": { 517 | "version": "1.1.0", 518 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", 519 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", 520 | "dev": true, 521 | "dependencies": { 522 | "decamelize": "^1.1.0", 523 | "map-obj": "^1.0.0" 524 | }, 525 | "engines": { 526 | "node": ">=0.10.0" 527 | } 528 | }, 529 | "node_modules/decamelize-keys/node_modules/decamelize": { 530 | "version": "1.2.0", 531 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 532 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 533 | "dev": true, 534 | "engines": { 535 | "node": ">=0.10.0" 536 | } 537 | }, 538 | "node_modules/decamelize-keys/node_modules/map-obj": { 539 | "version": "1.0.1", 540 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 541 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 542 | "dev": true, 543 | "engines": { 544 | "node": ">=0.10.0" 545 | } 546 | }, 547 | "node_modules/define-properties": { 548 | "version": "1.1.3", 549 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 550 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 551 | "dev": true, 552 | "dependencies": { 553 | "object-keys": "^1.0.12" 554 | }, 555 | "engines": { 556 | "node": ">= 0.4" 557 | } 558 | }, 559 | "node_modules/end-of-stream": { 560 | "version": "1.4.4", 561 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 562 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 563 | "dev": true, 564 | "dependencies": { 565 | "once": "^1.4.0" 566 | } 567 | }, 568 | "node_modules/error-ex": { 569 | "version": "1.3.2", 570 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 571 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 572 | "dev": true, 573 | "dependencies": { 574 | "is-arrayish": "^0.2.1" 575 | } 576 | }, 577 | "node_modules/es-abstract": { 578 | "version": "1.19.2", 579 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", 580 | "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", 581 | "dev": true, 582 | "dependencies": { 583 | "call-bind": "^1.0.2", 584 | "es-to-primitive": "^1.2.1", 585 | "function-bind": "^1.1.1", 586 | "get-intrinsic": "^1.1.1", 587 | "get-symbol-description": "^1.0.0", 588 | "has": "^1.0.3", 589 | "has-symbols": "^1.0.3", 590 | "internal-slot": "^1.0.3", 591 | "is-callable": "^1.2.4", 592 | "is-negative-zero": "^2.0.2", 593 | "is-regex": "^1.1.4", 594 | "is-shared-array-buffer": "^1.0.1", 595 | "is-string": "^1.0.7", 596 | "is-weakref": "^1.0.2", 597 | "object-inspect": "^1.12.0", 598 | "object-keys": "^1.1.1", 599 | "object.assign": "^4.1.2", 600 | "string.prototype.trimend": "^1.0.4", 601 | "string.prototype.trimstart": "^1.0.4", 602 | "unbox-primitive": "^1.0.1" 603 | }, 604 | "engines": { 605 | "node": ">= 0.4" 606 | }, 607 | "funding": { 608 | "url": "https://github.com/sponsors/ljharb" 609 | } 610 | }, 611 | "node_modules/es-to-primitive": { 612 | "version": "1.2.1", 613 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 614 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 615 | "dev": true, 616 | "dependencies": { 617 | "is-callable": "^1.1.4", 618 | "is-date-object": "^1.0.1", 619 | "is-symbol": "^1.0.2" 620 | }, 621 | "engines": { 622 | "node": ">= 0.4" 623 | }, 624 | "funding": { 625 | "url": "https://github.com/sponsors/ljharb" 626 | } 627 | }, 628 | "node_modules/escape-string-regexp": { 629 | "version": "1.0.5", 630 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 631 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 632 | "dev": true, 633 | "engines": { 634 | "node": ">=0.8.0" 635 | } 636 | }, 637 | "node_modules/execa": { 638 | "version": "0.8.0", 639 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", 640 | "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", 641 | "dev": true, 642 | "dependencies": { 643 | "cross-spawn": "^5.0.1", 644 | "get-stream": "^3.0.0", 645 | "is-stream": "^1.1.0", 646 | "npm-run-path": "^2.0.0", 647 | "p-finally": "^1.0.0", 648 | "signal-exit": "^3.0.0", 649 | "strip-eof": "^1.0.0" 650 | }, 651 | "engines": { 652 | "node": ">=4" 653 | } 654 | }, 655 | "node_modules/eyes": { 656 | "version": "0.1.8", 657 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 658 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", 659 | "dev": true, 660 | "engines": { 661 | "node": "> 0.1.90" 662 | } 663 | }, 664 | "node_modules/find-up": { 665 | "version": "5.0.0", 666 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 667 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 668 | "dev": true, 669 | "dependencies": { 670 | "locate-path": "^6.0.0", 671 | "path-exists": "^4.0.0" 672 | }, 673 | "engines": { 674 | "node": ">=10" 675 | }, 676 | "funding": { 677 | "url": "https://github.com/sponsors/sindresorhus" 678 | } 679 | }, 680 | "node_modules/for-each": { 681 | "version": "0.3.3", 682 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 683 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 684 | "dev": true, 685 | "dependencies": { 686 | "is-callable": "^1.1.3" 687 | } 688 | }, 689 | "node_modules/fs-constants": { 690 | "version": "1.0.0", 691 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 692 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 693 | "dev": true 694 | }, 695 | "node_modules/fs.realpath": { 696 | "version": "1.0.0", 697 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 698 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 699 | "dev": true 700 | }, 701 | "node_modules/function-bind": { 702 | "version": "1.1.1", 703 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 704 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 705 | "dev": true 706 | }, 707 | "node_modules/get-intrinsic": { 708 | "version": "1.1.1", 709 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 710 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 711 | "dev": true, 712 | "dependencies": { 713 | "function-bind": "^1.1.1", 714 | "has": "^1.0.3", 715 | "has-symbols": "^1.0.1" 716 | }, 717 | "funding": { 718 | "url": "https://github.com/sponsors/ljharb" 719 | } 720 | }, 721 | "node_modules/get-stdin": { 722 | "version": "9.0.0", 723 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", 724 | "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", 725 | "dev": true, 726 | "engines": { 727 | "node": ">=12" 728 | }, 729 | "funding": { 730 | "url": "https://github.com/sponsors/sindresorhus" 731 | } 732 | }, 733 | "node_modules/get-stream": { 734 | "version": "3.0.0", 735 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 736 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 737 | "dev": true, 738 | "engines": { 739 | "node": ">=4" 740 | } 741 | }, 742 | "node_modules/get-symbol-description": { 743 | "version": "1.0.0", 744 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 745 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 746 | "dev": true, 747 | "dependencies": { 748 | "call-bind": "^1.0.2", 749 | "get-intrinsic": "^1.1.1" 750 | }, 751 | "engines": { 752 | "node": ">= 0.4" 753 | }, 754 | "funding": { 755 | "url": "https://github.com/sponsors/ljharb" 756 | } 757 | }, 758 | "node_modules/glob": { 759 | "version": "7.1.2", 760 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 761 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 762 | "dev": true, 763 | "dependencies": { 764 | "fs.realpath": "^1.0.0", 765 | "inflight": "^1.0.4", 766 | "inherits": "2", 767 | "minimatch": "^3.0.4", 768 | "once": "^1.3.0", 769 | "path-is-absolute": "^1.0.0" 770 | }, 771 | "engines": { 772 | "node": "*" 773 | } 774 | }, 775 | "node_modules/graceful-fs": { 776 | "version": "4.2.10", 777 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 778 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 779 | "dev": true 780 | }, 781 | "node_modules/hard-rejection": { 782 | "version": "2.1.0", 783 | "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", 784 | "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", 785 | "dev": true, 786 | "engines": { 787 | "node": ">=6" 788 | } 789 | }, 790 | "node_modules/has": { 791 | "version": "1.0.3", 792 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 793 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 794 | "dev": true, 795 | "dependencies": { 796 | "function-bind": "^1.1.1" 797 | }, 798 | "engines": { 799 | "node": ">= 0.4.0" 800 | } 801 | }, 802 | "node_modules/has-bigints": { 803 | "version": "1.0.1", 804 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 805 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 806 | "dev": true, 807 | "funding": { 808 | "url": "https://github.com/sponsors/ljharb" 809 | } 810 | }, 811 | "node_modules/has-flag": { 812 | "version": "3.0.0", 813 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 814 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 815 | "dev": true, 816 | "engines": { 817 | "node": ">=4" 818 | } 819 | }, 820 | "node_modules/has-symbols": { 821 | "version": "1.0.3", 822 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 823 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 824 | "dev": true, 825 | "engines": { 826 | "node": ">= 0.4" 827 | }, 828 | "funding": { 829 | "url": "https://github.com/sponsors/ljharb" 830 | } 831 | }, 832 | "node_modules/has-tostringtag": { 833 | "version": "1.0.0", 834 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 835 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 836 | "dev": true, 837 | "dependencies": { 838 | "has-symbols": "^1.0.2" 839 | }, 840 | "engines": { 841 | "node": ">= 0.4" 842 | }, 843 | "funding": { 844 | "url": "https://github.com/sponsors/ljharb" 845 | } 846 | }, 847 | "node_modules/hosted-git-info": { 848 | "version": "4.1.0", 849 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", 850 | "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", 851 | "dev": true, 852 | "dependencies": { 853 | "lru-cache": "^6.0.0" 854 | }, 855 | "engines": { 856 | "node": ">=10" 857 | } 858 | }, 859 | "node_modules/hosted-git-info/node_modules/lru-cache": { 860 | "version": "6.0.0", 861 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 862 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 863 | "dev": true, 864 | "dependencies": { 865 | "yallist": "^4.0.0" 866 | }, 867 | "engines": { 868 | "node": ">=10" 869 | } 870 | }, 871 | "node_modules/hosted-git-info/node_modules/yallist": { 872 | "version": "4.0.0", 873 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 874 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 875 | "dev": true 876 | }, 877 | "node_modules/ieee754": { 878 | "version": "1.2.1", 879 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 880 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 881 | "dev": true, 882 | "funding": [ 883 | { 884 | "type": "github", 885 | "url": "https://github.com/sponsors/feross" 886 | }, 887 | { 888 | "type": "patreon", 889 | "url": "https://www.patreon.com/feross" 890 | }, 891 | { 892 | "type": "consulting", 893 | "url": "https://feross.org/support" 894 | } 895 | ] 896 | }, 897 | "node_modules/immediate": { 898 | "version": "3.0.6", 899 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 900 | "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", 901 | "dev": true 902 | }, 903 | "node_modules/indent-string": { 904 | "version": "5.0.0", 905 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", 906 | "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", 907 | "dev": true, 908 | "engines": { 909 | "node": ">=12" 910 | }, 911 | "funding": { 912 | "url": "https://github.com/sponsors/sindresorhus" 913 | } 914 | }, 915 | "node_modules/inflight": { 916 | "version": "1.0.6", 917 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 918 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 919 | "dev": true, 920 | "dependencies": { 921 | "once": "^1.3.0", 922 | "wrappy": "1" 923 | } 924 | }, 925 | "node_modules/inherits": { 926 | "version": "2.0.4", 927 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 928 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 929 | "dev": true 930 | }, 931 | "node_modules/internal-slot": { 932 | "version": "1.0.3", 933 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 934 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 935 | "dev": true, 936 | "dependencies": { 937 | "get-intrinsic": "^1.1.0", 938 | "has": "^1.0.3", 939 | "side-channel": "^1.0.4" 940 | }, 941 | "engines": { 942 | "node": ">= 0.4" 943 | } 944 | }, 945 | "node_modules/interpret": { 946 | "version": "1.4.0", 947 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", 948 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", 949 | "dev": true, 950 | "engines": { 951 | "node": ">= 0.10" 952 | } 953 | }, 954 | "node_modules/is-arrayish": { 955 | "version": "0.2.1", 956 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 957 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 958 | "dev": true 959 | }, 960 | "node_modules/is-bigint": { 961 | "version": "1.0.4", 962 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 963 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 964 | "dev": true, 965 | "dependencies": { 966 | "has-bigints": "^1.0.1" 967 | }, 968 | "funding": { 969 | "url": "https://github.com/sponsors/ljharb" 970 | } 971 | }, 972 | "node_modules/is-boolean-object": { 973 | "version": "1.1.2", 974 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 975 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 976 | "dev": true, 977 | "dependencies": { 978 | "call-bind": "^1.0.2", 979 | "has-tostringtag": "^1.0.0" 980 | }, 981 | "engines": { 982 | "node": ">= 0.4" 983 | }, 984 | "funding": { 985 | "url": "https://github.com/sponsors/ljharb" 986 | } 987 | }, 988 | "node_modules/is-callable": { 989 | "version": "1.2.4", 990 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 991 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 992 | "dev": true, 993 | "engines": { 994 | "node": ">= 0.4" 995 | }, 996 | "funding": { 997 | "url": "https://github.com/sponsors/ljharb" 998 | } 999 | }, 1000 | "node_modules/is-core-module": { 1001 | "version": "2.8.1", 1002 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 1003 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 1004 | "dev": true, 1005 | "dependencies": { 1006 | "has": "^1.0.3" 1007 | }, 1008 | "funding": { 1009 | "url": "https://github.com/sponsors/ljharb" 1010 | } 1011 | }, 1012 | "node_modules/is-date-object": { 1013 | "version": "1.0.5", 1014 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1015 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1016 | "dev": true, 1017 | "dependencies": { 1018 | "has-tostringtag": "^1.0.0" 1019 | }, 1020 | "engines": { 1021 | "node": ">= 0.4" 1022 | }, 1023 | "funding": { 1024 | "url": "https://github.com/sponsors/ljharb" 1025 | } 1026 | }, 1027 | "node_modules/is-negative-zero": { 1028 | "version": "2.0.2", 1029 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1030 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1031 | "dev": true, 1032 | "engines": { 1033 | "node": ">= 0.4" 1034 | }, 1035 | "funding": { 1036 | "url": "https://github.com/sponsors/ljharb" 1037 | } 1038 | }, 1039 | "node_modules/is-number-object": { 1040 | "version": "1.0.7", 1041 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1042 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1043 | "dev": true, 1044 | "dependencies": { 1045 | "has-tostringtag": "^1.0.0" 1046 | }, 1047 | "engines": { 1048 | "node": ">= 0.4" 1049 | }, 1050 | "funding": { 1051 | "url": "https://github.com/sponsors/ljharb" 1052 | } 1053 | }, 1054 | "node_modules/is-plain-obj": { 1055 | "version": "1.1.0", 1056 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1057 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 1058 | "dev": true, 1059 | "engines": { 1060 | "node": ">=0.10.0" 1061 | } 1062 | }, 1063 | "node_modules/is-regex": { 1064 | "version": "1.1.4", 1065 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1066 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1067 | "dev": true, 1068 | "dependencies": { 1069 | "call-bind": "^1.0.2", 1070 | "has-tostringtag": "^1.0.0" 1071 | }, 1072 | "engines": { 1073 | "node": ">= 0.4" 1074 | }, 1075 | "funding": { 1076 | "url": "https://github.com/sponsors/ljharb" 1077 | } 1078 | }, 1079 | "node_modules/is-shared-array-buffer": { 1080 | "version": "1.0.2", 1081 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1082 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1083 | "dev": true, 1084 | "dependencies": { 1085 | "call-bind": "^1.0.2" 1086 | }, 1087 | "funding": { 1088 | "url": "https://github.com/sponsors/ljharb" 1089 | } 1090 | }, 1091 | "node_modules/is-stream": { 1092 | "version": "1.1.0", 1093 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1094 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1095 | "dev": true, 1096 | "engines": { 1097 | "node": ">=0.10.0" 1098 | } 1099 | }, 1100 | "node_modules/is-string": { 1101 | "version": "1.0.7", 1102 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1103 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1104 | "dev": true, 1105 | "dependencies": { 1106 | "has-tostringtag": "^1.0.0" 1107 | }, 1108 | "engines": { 1109 | "node": ">= 0.4" 1110 | }, 1111 | "funding": { 1112 | "url": "https://github.com/sponsors/ljharb" 1113 | } 1114 | }, 1115 | "node_modules/is-symbol": { 1116 | "version": "1.0.4", 1117 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1118 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1119 | "dev": true, 1120 | "dependencies": { 1121 | "has-symbols": "^1.0.2" 1122 | }, 1123 | "engines": { 1124 | "node": ">= 0.4" 1125 | }, 1126 | "funding": { 1127 | "url": "https://github.com/sponsors/ljharb" 1128 | } 1129 | }, 1130 | "node_modules/is-weakref": { 1131 | "version": "1.0.2", 1132 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1133 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1134 | "dev": true, 1135 | "dependencies": { 1136 | "call-bind": "^1.0.2" 1137 | }, 1138 | "funding": { 1139 | "url": "https://github.com/sponsors/ljharb" 1140 | } 1141 | }, 1142 | "node_modules/isarray": { 1143 | "version": "1.0.0", 1144 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1145 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1146 | "dev": true 1147 | }, 1148 | "node_modules/isexe": { 1149 | "version": "2.0.0", 1150 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1151 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1152 | "dev": true 1153 | }, 1154 | "node_modules/isstream": { 1155 | "version": "0.1.2", 1156 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1157 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 1158 | "dev": true 1159 | }, 1160 | "node_modules/jju": { 1161 | "version": "1.4.0", 1162 | "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", 1163 | "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", 1164 | "dev": true 1165 | }, 1166 | "node_modules/js-tokens": { 1167 | "version": "4.0.0", 1168 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1169 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1170 | "dev": true 1171 | }, 1172 | "node_modules/json-in-place": { 1173 | "version": "1.0.1", 1174 | "resolved": "https://registry.npmjs.org/json-in-place/-/json-in-place-1.0.1.tgz", 1175 | "integrity": "sha1-ih7NJaac4ZAFUs1xUr2TdU3k4fA=", 1176 | "dev": true, 1177 | "dependencies": { 1178 | "json-lexer": "1.1.1" 1179 | } 1180 | }, 1181 | "node_modules/json-lexer": { 1182 | "version": "1.1.1", 1183 | "resolved": "https://registry.npmjs.org/json-lexer/-/json-lexer-1.1.1.tgz", 1184 | "integrity": "sha1-vT7V1+Vgudma0iNPKMpwb7N3t9Q=", 1185 | "dev": true 1186 | }, 1187 | "node_modules/json-parse-even-better-errors": { 1188 | "version": "2.3.1", 1189 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1190 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1191 | "dev": true 1192 | }, 1193 | "node_modules/jszip": { 1194 | "version": "3.9.0", 1195 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.0.tgz", 1196 | "integrity": "sha512-Vb3SMfASUN1EKrFzv5A5+lTaZnzLzT5E6A9zyT7WFqMSfhT2Z7iS5FgSOjx2Olm3MDj8OqKj6GHyP2kMt1Ir6w==", 1197 | "dev": true, 1198 | "dependencies": { 1199 | "lie": "~3.3.0", 1200 | "pako": "~1.0.2", 1201 | "readable-stream": "~2.3.6", 1202 | "set-immediate-shim": "~1.0.1" 1203 | } 1204 | }, 1205 | "node_modules/kind-of": { 1206 | "version": "6.0.3", 1207 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1208 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1209 | "dev": true, 1210 | "engines": { 1211 | "node": ">=0.10.0" 1212 | } 1213 | }, 1214 | "node_modules/lazystream": { 1215 | "version": "1.0.1", 1216 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", 1217 | "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", 1218 | "dev": true, 1219 | "dependencies": { 1220 | "readable-stream": "^2.0.5" 1221 | }, 1222 | "engines": { 1223 | "node": ">= 0.6.3" 1224 | } 1225 | }, 1226 | "node_modules/lie": { 1227 | "version": "3.3.0", 1228 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 1229 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 1230 | "dev": true, 1231 | "dependencies": { 1232 | "immediate": "~3.0.5" 1233 | } 1234 | }, 1235 | "node_modules/lines-and-columns": { 1236 | "version": "1.2.4", 1237 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1238 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1239 | "dev": true 1240 | }, 1241 | "node_modules/locate-path": { 1242 | "version": "6.0.0", 1243 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1244 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1245 | "dev": true, 1246 | "dependencies": { 1247 | "p-locate": "^5.0.0" 1248 | }, 1249 | "engines": { 1250 | "node": ">=10" 1251 | }, 1252 | "funding": { 1253 | "url": "https://github.com/sponsors/sindresorhus" 1254 | } 1255 | }, 1256 | "node_modules/lodash": { 1257 | "version": "4.17.21", 1258 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1259 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1260 | "dev": true 1261 | }, 1262 | "node_modules/lru-cache": { 1263 | "version": "4.1.5", 1264 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1265 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1266 | "dev": true, 1267 | "dependencies": { 1268 | "pseudomap": "^1.0.2", 1269 | "yallist": "^2.1.2" 1270 | } 1271 | }, 1272 | "node_modules/map-obj": { 1273 | "version": "4.3.0", 1274 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", 1275 | "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", 1276 | "dev": true, 1277 | "engines": { 1278 | "node": ">=8" 1279 | }, 1280 | "funding": { 1281 | "url": "https://github.com/sponsors/sindresorhus" 1282 | } 1283 | }, 1284 | "node_modules/meow": { 1285 | "version": "10.1.2", 1286 | "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.2.tgz", 1287 | "integrity": "sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q==", 1288 | "dev": true, 1289 | "dependencies": { 1290 | "@types/minimist": "^1.2.2", 1291 | "camelcase-keys": "^7.0.0", 1292 | "decamelize": "^5.0.0", 1293 | "decamelize-keys": "^1.1.0", 1294 | "hard-rejection": "^2.1.0", 1295 | "minimist-options": "4.1.0", 1296 | "normalize-package-data": "^3.0.2", 1297 | "read-pkg-up": "^8.0.0", 1298 | "redent": "^4.0.0", 1299 | "trim-newlines": "^4.0.2", 1300 | "type-fest": "^1.2.2", 1301 | "yargs-parser": "^20.2.9" 1302 | }, 1303 | "engines": { 1304 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1305 | }, 1306 | "funding": { 1307 | "url": "https://github.com/sponsors/sindresorhus" 1308 | } 1309 | }, 1310 | "node_modules/min-indent": { 1311 | "version": "1.0.1", 1312 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 1313 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 1314 | "dev": true, 1315 | "engines": { 1316 | "node": ">=4" 1317 | } 1318 | }, 1319 | "node_modules/minimatch": { 1320 | "version": "3.1.2", 1321 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1322 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1323 | "dev": true, 1324 | "dependencies": { 1325 | "brace-expansion": "^1.1.7" 1326 | }, 1327 | "engines": { 1328 | "node": "*" 1329 | } 1330 | }, 1331 | "node_modules/minimist": { 1332 | "version": "1.2.6", 1333 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1334 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1335 | "dev": true 1336 | }, 1337 | "node_modules/minimist-options": { 1338 | "version": "4.1.0", 1339 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", 1340 | "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", 1341 | "dev": true, 1342 | "dependencies": { 1343 | "arrify": "^1.0.1", 1344 | "is-plain-obj": "^1.1.0", 1345 | "kind-of": "^6.0.3" 1346 | }, 1347 | "engines": { 1348 | "node": ">= 6" 1349 | } 1350 | }, 1351 | "node_modules/mkdirp": { 1352 | "version": "1.0.4", 1353 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1354 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1355 | "dev": true, 1356 | "bin": { 1357 | "mkdirp": "bin/cmd.js" 1358 | }, 1359 | "engines": { 1360 | "node": ">=10" 1361 | } 1362 | }, 1363 | "node_modules/mute-stream": { 1364 | "version": "0.0.8", 1365 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1366 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1367 | "dev": true 1368 | }, 1369 | "node_modules/normalize-package-data": { 1370 | "version": "3.0.3", 1371 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", 1372 | "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "hosted-git-info": "^4.0.1", 1376 | "is-core-module": "^2.5.0", 1377 | "semver": "^7.3.4", 1378 | "validate-npm-package-license": "^3.0.1" 1379 | }, 1380 | "engines": { 1381 | "node": ">=10" 1382 | } 1383 | }, 1384 | "node_modules/normalize-path": { 1385 | "version": "2.1.1", 1386 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1387 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1388 | "dev": true, 1389 | "dependencies": { 1390 | "remove-trailing-separator": "^1.0.1" 1391 | }, 1392 | "engines": { 1393 | "node": ">=0.10.0" 1394 | } 1395 | }, 1396 | "node_modules/npm-run-path": { 1397 | "version": "2.0.2", 1398 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 1399 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 1400 | "dev": true, 1401 | "dependencies": { 1402 | "path-key": "^2.0.0" 1403 | }, 1404 | "engines": { 1405 | "node": ">=4" 1406 | } 1407 | }, 1408 | "node_modules/object-inspect": { 1409 | "version": "1.12.0", 1410 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1411 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 1412 | "dev": true, 1413 | "funding": { 1414 | "url": "https://github.com/sponsors/ljharb" 1415 | } 1416 | }, 1417 | "node_modules/object-keys": { 1418 | "version": "1.1.1", 1419 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1420 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1421 | "dev": true, 1422 | "engines": { 1423 | "node": ">= 0.4" 1424 | } 1425 | }, 1426 | "node_modules/object.assign": { 1427 | "version": "4.1.2", 1428 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1429 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1430 | "dev": true, 1431 | "dependencies": { 1432 | "call-bind": "^1.0.0", 1433 | "define-properties": "^1.1.3", 1434 | "has-symbols": "^1.0.1", 1435 | "object-keys": "^1.1.1" 1436 | }, 1437 | "engines": { 1438 | "node": ">= 0.4" 1439 | }, 1440 | "funding": { 1441 | "url": "https://github.com/sponsors/ljharb" 1442 | } 1443 | }, 1444 | "node_modules/object.getownpropertydescriptors": { 1445 | "version": "2.1.3", 1446 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", 1447 | "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", 1448 | "dev": true, 1449 | "dependencies": { 1450 | "call-bind": "^1.0.2", 1451 | "define-properties": "^1.1.3", 1452 | "es-abstract": "^1.19.1" 1453 | }, 1454 | "engines": { 1455 | "node": ">= 0.8" 1456 | }, 1457 | "funding": { 1458 | "url": "https://github.com/sponsors/ljharb" 1459 | } 1460 | }, 1461 | "node_modules/once": { 1462 | "version": "1.4.0", 1463 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1464 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1465 | "dev": true, 1466 | "dependencies": { 1467 | "wrappy": "1" 1468 | } 1469 | }, 1470 | "node_modules/onecolor": { 1471 | "version": "2.5.0", 1472 | "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.5.0.tgz", 1473 | "integrity": "sha1-Ila2UdyAfBAfAK7b1JklxXpEMcE=", 1474 | "dev": true, 1475 | "engines": { 1476 | "node": ">=0.4.8" 1477 | } 1478 | }, 1479 | "node_modules/os-homedir": { 1480 | "version": "1.0.2", 1481 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1482 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1483 | "dev": true, 1484 | "engines": { 1485 | "node": ">=0.10.0" 1486 | } 1487 | }, 1488 | "node_modules/os-tmpdir": { 1489 | "version": "1.0.2", 1490 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1491 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1492 | "dev": true, 1493 | "engines": { 1494 | "node": ">=0.10.0" 1495 | } 1496 | }, 1497 | "node_modules/p-finally": { 1498 | "version": "1.0.0", 1499 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1500 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 1501 | "dev": true, 1502 | "engines": { 1503 | "node": ">=4" 1504 | } 1505 | }, 1506 | "node_modules/p-limit": { 1507 | "version": "3.1.0", 1508 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1509 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1510 | "dev": true, 1511 | "dependencies": { 1512 | "yocto-queue": "^0.1.0" 1513 | }, 1514 | "engines": { 1515 | "node": ">=10" 1516 | }, 1517 | "funding": { 1518 | "url": "https://github.com/sponsors/sindresorhus" 1519 | } 1520 | }, 1521 | "node_modules/p-locate": { 1522 | "version": "5.0.0", 1523 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1524 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1525 | "dev": true, 1526 | "dependencies": { 1527 | "p-limit": "^3.0.2" 1528 | }, 1529 | "engines": { 1530 | "node": ">=10" 1531 | }, 1532 | "funding": { 1533 | "url": "https://github.com/sponsors/sindresorhus" 1534 | } 1535 | }, 1536 | "node_modules/pako": { 1537 | "version": "1.0.11", 1538 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1539 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 1540 | "dev": true 1541 | }, 1542 | "node_modules/parse-json": { 1543 | "version": "5.2.0", 1544 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1545 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1546 | "dev": true, 1547 | "dependencies": { 1548 | "@babel/code-frame": "^7.0.0", 1549 | "error-ex": "^1.3.1", 1550 | "json-parse-even-better-errors": "^2.3.0", 1551 | "lines-and-columns": "^1.1.6" 1552 | }, 1553 | "engines": { 1554 | "node": ">=8" 1555 | }, 1556 | "funding": { 1557 | "url": "https://github.com/sponsors/sindresorhus" 1558 | } 1559 | }, 1560 | "node_modules/path-exists": { 1561 | "version": "4.0.0", 1562 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1563 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1564 | "dev": true, 1565 | "engines": { 1566 | "node": ">=8" 1567 | } 1568 | }, 1569 | "node_modules/path-is-absolute": { 1570 | "version": "1.0.1", 1571 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1572 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1573 | "dev": true, 1574 | "engines": { 1575 | "node": ">=0.10.0" 1576 | } 1577 | }, 1578 | "node_modules/path-key": { 1579 | "version": "2.0.1", 1580 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1581 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1582 | "dev": true, 1583 | "engines": { 1584 | "node": ">=4" 1585 | } 1586 | }, 1587 | "node_modules/path-parse": { 1588 | "version": "1.0.7", 1589 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1590 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1591 | "dev": true 1592 | }, 1593 | "node_modules/process-nextick-args": { 1594 | "version": "2.0.1", 1595 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1596 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1597 | "dev": true 1598 | }, 1599 | "node_modules/prompt": { 1600 | "version": "1.2.2", 1601 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.2.tgz", 1602 | "integrity": "sha512-XNXhNv3PUHJDcDkISpCwSJxtw9Bor4FZnlMUDW64N/KCPdxhfVlpD5+YUXI/Z8a9QWmOhs9KSiVtR8nzPS0BYA==", 1603 | "dev": true, 1604 | "dependencies": { 1605 | "@colors/colors": "1.5.0", 1606 | "async": "~0.9.0", 1607 | "read": "1.0.x", 1608 | "revalidator": "0.1.x", 1609 | "winston": "2.x" 1610 | }, 1611 | "engines": { 1612 | "node": ">= 0.6.6" 1613 | } 1614 | }, 1615 | "node_modules/prompt/node_modules/async": { 1616 | "version": "0.9.2", 1617 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 1618 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", 1619 | "dev": true 1620 | }, 1621 | "node_modules/pseudomap": { 1622 | "version": "1.0.2", 1623 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1624 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1625 | "dev": true 1626 | }, 1627 | "node_modules/q": { 1628 | "version": "1.5.1", 1629 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 1630 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", 1631 | "engines": { 1632 | "node": ">=0.6.0", 1633 | "teleport": ">=0.2.0" 1634 | } 1635 | }, 1636 | "node_modules/qs": { 1637 | "version": "6.10.3", 1638 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 1639 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 1640 | "dev": true, 1641 | "dependencies": { 1642 | "side-channel": "^1.0.4" 1643 | }, 1644 | "engines": { 1645 | "node": ">=0.6" 1646 | }, 1647 | "funding": { 1648 | "url": "https://github.com/sponsors/ljharb" 1649 | } 1650 | }, 1651 | "node_modules/quick-lru": { 1652 | "version": "5.1.1", 1653 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1654 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 1655 | "dev": true, 1656 | "engines": { 1657 | "node": ">=10" 1658 | }, 1659 | "funding": { 1660 | "url": "https://github.com/sponsors/sindresorhus" 1661 | } 1662 | }, 1663 | "node_modules/read": { 1664 | "version": "1.0.7", 1665 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 1666 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 1667 | "dev": true, 1668 | "dependencies": { 1669 | "mute-stream": "~0.0.4" 1670 | }, 1671 | "engines": { 1672 | "node": ">=0.8" 1673 | } 1674 | }, 1675 | "node_modules/read-pkg": { 1676 | "version": "6.0.0", 1677 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", 1678 | "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", 1679 | "dev": true, 1680 | "dependencies": { 1681 | "@types/normalize-package-data": "^2.4.0", 1682 | "normalize-package-data": "^3.0.2", 1683 | "parse-json": "^5.2.0", 1684 | "type-fest": "^1.0.1" 1685 | }, 1686 | "engines": { 1687 | "node": ">=12" 1688 | }, 1689 | "funding": { 1690 | "url": "https://github.com/sponsors/sindresorhus" 1691 | } 1692 | }, 1693 | "node_modules/read-pkg-up": { 1694 | "version": "8.0.0", 1695 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", 1696 | "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", 1697 | "dev": true, 1698 | "dependencies": { 1699 | "find-up": "^5.0.0", 1700 | "read-pkg": "^6.0.0", 1701 | "type-fest": "^1.0.1" 1702 | }, 1703 | "engines": { 1704 | "node": ">=12" 1705 | }, 1706 | "funding": { 1707 | "url": "https://github.com/sponsors/sindresorhus" 1708 | } 1709 | }, 1710 | "node_modules/readable-stream": { 1711 | "version": "2.3.7", 1712 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1713 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1714 | "dev": true, 1715 | "dependencies": { 1716 | "core-util-is": "~1.0.0", 1717 | "inherits": "~2.0.3", 1718 | "isarray": "~1.0.0", 1719 | "process-nextick-args": "~2.0.0", 1720 | "safe-buffer": "~5.1.1", 1721 | "string_decoder": "~1.1.1", 1722 | "util-deprecate": "~1.0.1" 1723 | } 1724 | }, 1725 | "node_modules/rechoir": { 1726 | "version": "0.6.2", 1727 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1728 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1729 | "dev": true, 1730 | "dependencies": { 1731 | "resolve": "^1.1.6" 1732 | }, 1733 | "engines": { 1734 | "node": ">= 0.10" 1735 | } 1736 | }, 1737 | "node_modules/redent": { 1738 | "version": "4.0.0", 1739 | "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", 1740 | "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", 1741 | "dev": true, 1742 | "dependencies": { 1743 | "indent-string": "^5.0.0", 1744 | "strip-indent": "^4.0.0" 1745 | }, 1746 | "engines": { 1747 | "node": ">=12" 1748 | }, 1749 | "funding": { 1750 | "url": "https://github.com/sponsors/sindresorhus" 1751 | } 1752 | }, 1753 | "node_modules/remove-trailing-separator": { 1754 | "version": "1.1.0", 1755 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 1756 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 1757 | "dev": true 1758 | }, 1759 | "node_modules/resolve": { 1760 | "version": "1.22.0", 1761 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 1762 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 1763 | "dev": true, 1764 | "dependencies": { 1765 | "is-core-module": "^2.8.1", 1766 | "path-parse": "^1.0.7", 1767 | "supports-preserve-symlinks-flag": "^1.0.0" 1768 | }, 1769 | "bin": { 1770 | "resolve": "bin/resolve" 1771 | }, 1772 | "funding": { 1773 | "url": "https://github.com/sponsors/ljharb" 1774 | } 1775 | }, 1776 | "node_modules/revalidator": { 1777 | "version": "0.1.8", 1778 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 1779 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", 1780 | "dev": true, 1781 | "engines": { 1782 | "node": ">= 0.4.0" 1783 | } 1784 | }, 1785 | "node_modules/safe-buffer": { 1786 | "version": "5.1.2", 1787 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1788 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1789 | "dev": true 1790 | }, 1791 | "node_modules/sax": { 1792 | "version": "1.2.4", 1793 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 1794 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 1795 | "dev": true 1796 | }, 1797 | "node_modules/semver": { 1798 | "version": "7.3.5", 1799 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 1800 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 1801 | "dev": true, 1802 | "dependencies": { 1803 | "lru-cache": "^6.0.0" 1804 | }, 1805 | "bin": { 1806 | "semver": "bin/semver.js" 1807 | }, 1808 | "engines": { 1809 | "node": ">=10" 1810 | } 1811 | }, 1812 | "node_modules/semver/node_modules/lru-cache": { 1813 | "version": "6.0.0", 1814 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1815 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1816 | "dev": true, 1817 | "dependencies": { 1818 | "yallist": "^4.0.0" 1819 | }, 1820 | "engines": { 1821 | "node": ">=10" 1822 | } 1823 | }, 1824 | "node_modules/semver/node_modules/yallist": { 1825 | "version": "4.0.0", 1826 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1827 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1828 | "dev": true 1829 | }, 1830 | "node_modules/set-immediate-shim": { 1831 | "version": "1.0.1", 1832 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 1833 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 1834 | "dev": true, 1835 | "engines": { 1836 | "node": ">=0.10.0" 1837 | } 1838 | }, 1839 | "node_modules/shebang-command": { 1840 | "version": "1.2.0", 1841 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1842 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1843 | "dev": true, 1844 | "dependencies": { 1845 | "shebang-regex": "^1.0.0" 1846 | }, 1847 | "engines": { 1848 | "node": ">=0.10.0" 1849 | } 1850 | }, 1851 | "node_modules/shebang-regex": { 1852 | "version": "1.0.0", 1853 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1854 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1855 | "dev": true, 1856 | "engines": { 1857 | "node": ">=0.10.0" 1858 | } 1859 | }, 1860 | "node_modules/shelljs": { 1861 | "version": "0.8.5", 1862 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", 1863 | "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", 1864 | "dev": true, 1865 | "dependencies": { 1866 | "glob": "^7.0.0", 1867 | "interpret": "^1.0.0", 1868 | "rechoir": "^0.6.2" 1869 | }, 1870 | "bin": { 1871 | "shjs": "bin/shjs" 1872 | }, 1873 | "engines": { 1874 | "node": ">=4" 1875 | } 1876 | }, 1877 | "node_modules/side-channel": { 1878 | "version": "1.0.4", 1879 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1880 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1881 | "dev": true, 1882 | "dependencies": { 1883 | "call-bind": "^1.0.0", 1884 | "get-intrinsic": "^1.0.2", 1885 | "object-inspect": "^1.9.0" 1886 | }, 1887 | "funding": { 1888 | "url": "https://github.com/sponsors/ljharb" 1889 | } 1890 | }, 1891 | "node_modules/signal-exit": { 1892 | "version": "3.0.7", 1893 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1894 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1895 | "dev": true 1896 | }, 1897 | "node_modules/spdx-correct": { 1898 | "version": "3.1.1", 1899 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 1900 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 1901 | "dev": true, 1902 | "dependencies": { 1903 | "spdx-expression-parse": "^3.0.0", 1904 | "spdx-license-ids": "^3.0.0" 1905 | } 1906 | }, 1907 | "node_modules/spdx-exceptions": { 1908 | "version": "2.3.0", 1909 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 1910 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 1911 | "dev": true 1912 | }, 1913 | "node_modules/spdx-expression-parse": { 1914 | "version": "3.0.1", 1915 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 1916 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 1917 | "dev": true, 1918 | "dependencies": { 1919 | "spdx-exceptions": "^2.1.0", 1920 | "spdx-license-ids": "^3.0.0" 1921 | } 1922 | }, 1923 | "node_modules/spdx-license-ids": { 1924 | "version": "3.0.11", 1925 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", 1926 | "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", 1927 | "dev": true 1928 | }, 1929 | "node_modules/stack-trace": { 1930 | "version": "0.0.10", 1931 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 1932 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 1933 | "dev": true, 1934 | "engines": { 1935 | "node": "*" 1936 | } 1937 | }, 1938 | "node_modules/string_decoder": { 1939 | "version": "1.1.1", 1940 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1941 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1942 | "dev": true, 1943 | "dependencies": { 1944 | "safe-buffer": "~5.1.0" 1945 | } 1946 | }, 1947 | "node_modules/string.prototype.trimend": { 1948 | "version": "1.0.4", 1949 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 1950 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 1951 | "dev": true, 1952 | "dependencies": { 1953 | "call-bind": "^1.0.2", 1954 | "define-properties": "^1.1.3" 1955 | }, 1956 | "funding": { 1957 | "url": "https://github.com/sponsors/ljharb" 1958 | } 1959 | }, 1960 | "node_modules/string.prototype.trimstart": { 1961 | "version": "1.0.4", 1962 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 1963 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 1964 | "dev": true, 1965 | "dependencies": { 1966 | "call-bind": "^1.0.2", 1967 | "define-properties": "^1.1.3" 1968 | }, 1969 | "funding": { 1970 | "url": "https://github.com/sponsors/ljharb" 1971 | } 1972 | }, 1973 | "node_modules/strip-eof": { 1974 | "version": "1.0.0", 1975 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 1976 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 1977 | "dev": true, 1978 | "engines": { 1979 | "node": ">=0.10.0" 1980 | } 1981 | }, 1982 | "node_modules/strip-indent": { 1983 | "version": "4.0.0", 1984 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", 1985 | "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", 1986 | "dev": true, 1987 | "dependencies": { 1988 | "min-indent": "^1.0.1" 1989 | }, 1990 | "engines": { 1991 | "node": ">=12" 1992 | }, 1993 | "funding": { 1994 | "url": "https://github.com/sponsors/sindresorhus" 1995 | } 1996 | }, 1997 | "node_modules/supports-color": { 1998 | "version": "5.5.0", 1999 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2000 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2001 | "dev": true, 2002 | "dependencies": { 2003 | "has-flag": "^3.0.0" 2004 | }, 2005 | "engines": { 2006 | "node": ">=4" 2007 | } 2008 | }, 2009 | "node_modules/supports-preserve-symlinks-flag": { 2010 | "version": "1.0.0", 2011 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2012 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2013 | "dev": true, 2014 | "engines": { 2015 | "node": ">= 0.4" 2016 | }, 2017 | "funding": { 2018 | "url": "https://github.com/sponsors/ljharb" 2019 | } 2020 | }, 2021 | "node_modules/tar-stream": { 2022 | "version": "1.6.2", 2023 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", 2024 | "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", 2025 | "dev": true, 2026 | "dependencies": { 2027 | "bl": "^1.0.0", 2028 | "buffer-alloc": "^1.2.0", 2029 | "end-of-stream": "^1.0.0", 2030 | "fs-constants": "^1.0.0", 2031 | "readable-stream": "^2.3.0", 2032 | "to-buffer": "^1.1.1", 2033 | "xtend": "^4.0.0" 2034 | }, 2035 | "engines": { 2036 | "node": ">= 0.8.0" 2037 | } 2038 | }, 2039 | "node_modules/tfx-cli": { 2040 | "version": "0.11.0", 2041 | "resolved": "https://registry.npmjs.org/tfx-cli/-/tfx-cli-0.11.0.tgz", 2042 | "integrity": "sha512-2dFEjwsKz7HZDhnCXlIzUCTnYyFGd7YYCoG5m1SEcemcg4BFt5DW1gge+qUc7cWZpAXdLhN6XJR42vPncJqn3A==", 2043 | "dev": true, 2044 | "dependencies": { 2045 | "app-root-path": "1.0.0", 2046 | "archiver": "2.0.3", 2047 | "async": "^1.4.0", 2048 | "azure-devops-node-api": "^10.2.2", 2049 | "clipboardy": "~1.2.3", 2050 | "colors": "~1.3.0", 2051 | "glob": "7.1.2", 2052 | "jju": "^1.4.0", 2053 | "json-in-place": "^1.0.1", 2054 | "jszip": "^3.7.1", 2055 | "lodash": "^4.17.21", 2056 | "minimist": "^1.2.5", 2057 | "mkdirp": "^1.0.4", 2058 | "onecolor": "^2.5.0", 2059 | "os-homedir": "^1.0.1", 2060 | "prompt": "^1.2.0", 2061 | "read": "^1.0.6", 2062 | "shelljs": "^0.8.5", 2063 | "tmp": "0.0.26", 2064 | "tracer": "0.7.4", 2065 | "util.promisify": "^1.0.0", 2066 | "uuid": "^3.0.1", 2067 | "validator": "^13.7.0", 2068 | "winreg": "0.0.12", 2069 | "xml2js": "^0.4.16" 2070 | }, 2071 | "bin": { 2072 | "tfx": "_build/tfx-cli.js" 2073 | }, 2074 | "engines": { 2075 | "node": ">=8.0.0" 2076 | } 2077 | }, 2078 | "node_modules/tinytim": { 2079 | "version": "0.1.1", 2080 | "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", 2081 | "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=", 2082 | "dev": true, 2083 | "engines": { 2084 | "node": ">= 0.2.0" 2085 | } 2086 | }, 2087 | "node_modules/tmp": { 2088 | "version": "0.0.26", 2089 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.26.tgz", 2090 | "integrity": "sha1-nvqCDOKhD4H4l5VVus4/FVJs4fI=", 2091 | "dev": true, 2092 | "dependencies": { 2093 | "os-tmpdir": "~1.0.0" 2094 | }, 2095 | "engines": { 2096 | "node": ">=0.4.0" 2097 | } 2098 | }, 2099 | "node_modules/to-buffer": { 2100 | "version": "1.1.1", 2101 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 2102 | "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", 2103 | "dev": true 2104 | }, 2105 | "node_modules/tracer": { 2106 | "version": "0.7.4", 2107 | "resolved": "https://registry.npmjs.org/tracer/-/tracer-0.7.4.tgz", 2108 | "integrity": "sha1-d/oEN8+Ct2vNvNRLhHRHcuWeUlk=", 2109 | "dev": true, 2110 | "dependencies": { 2111 | "colors": "1.0.3", 2112 | "dateformat": "1.0.11", 2113 | "tinytim": "0.1.1" 2114 | }, 2115 | "engines": { 2116 | "node": ">= 0.10.0" 2117 | } 2118 | }, 2119 | "node_modules/tracer/node_modules/colors": { 2120 | "version": "1.0.3", 2121 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 2122 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", 2123 | "dev": true, 2124 | "engines": { 2125 | "node": ">=0.1.90" 2126 | } 2127 | }, 2128 | "node_modules/trim-newlines": { 2129 | "version": "4.0.2", 2130 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", 2131 | "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", 2132 | "dev": true, 2133 | "engines": { 2134 | "node": ">=12" 2135 | }, 2136 | "funding": { 2137 | "url": "https://github.com/sponsors/sindresorhus" 2138 | } 2139 | }, 2140 | "node_modules/tunnel": { 2141 | "version": "0.0.6", 2142 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 2143 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 2144 | "dev": true, 2145 | "engines": { 2146 | "node": ">=0.6.11 <=0.7.0 || >=0.7.3" 2147 | } 2148 | }, 2149 | "node_modules/type-fest": { 2150 | "version": "1.4.0", 2151 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 2152 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", 2153 | "dev": true, 2154 | "engines": { 2155 | "node": ">=10" 2156 | }, 2157 | "funding": { 2158 | "url": "https://github.com/sponsors/sindresorhus" 2159 | } 2160 | }, 2161 | "node_modules/typed-rest-client": { 2162 | "version": "1.8.6", 2163 | "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", 2164 | "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", 2165 | "dev": true, 2166 | "dependencies": { 2167 | "qs": "^6.9.1", 2168 | "tunnel": "0.0.6", 2169 | "underscore": "^1.12.1" 2170 | } 2171 | }, 2172 | "node_modules/typescript": { 2173 | "version": "4.5.2", 2174 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", 2175 | "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", 2176 | "dev": true, 2177 | "bin": { 2178 | "tsc": "bin/tsc", 2179 | "tsserver": "bin/tsserver" 2180 | }, 2181 | "engines": { 2182 | "node": ">=4.2.0" 2183 | } 2184 | }, 2185 | "node_modules/unbox-primitive": { 2186 | "version": "1.0.1", 2187 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 2188 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 2189 | "dev": true, 2190 | "dependencies": { 2191 | "function-bind": "^1.1.1", 2192 | "has-bigints": "^1.0.1", 2193 | "has-symbols": "^1.0.2", 2194 | "which-boxed-primitive": "^1.0.2" 2195 | }, 2196 | "funding": { 2197 | "url": "https://github.com/sponsors/ljharb" 2198 | } 2199 | }, 2200 | "node_modules/underscore": { 2201 | "version": "1.13.2", 2202 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", 2203 | "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", 2204 | "dev": true 2205 | }, 2206 | "node_modules/util-deprecate": { 2207 | "version": "1.0.2", 2208 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2209 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2210 | "dev": true 2211 | }, 2212 | "node_modules/util.promisify": { 2213 | "version": "1.1.1", 2214 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", 2215 | "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", 2216 | "dev": true, 2217 | "dependencies": { 2218 | "call-bind": "^1.0.0", 2219 | "define-properties": "^1.1.3", 2220 | "for-each": "^0.3.3", 2221 | "has-symbols": "^1.0.1", 2222 | "object.getownpropertydescriptors": "^2.1.1" 2223 | }, 2224 | "funding": { 2225 | "url": "https://github.com/sponsors/ljharb" 2226 | } 2227 | }, 2228 | "node_modules/uuid": { 2229 | "version": "3.4.0", 2230 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 2231 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 2232 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 2233 | "dev": true, 2234 | "bin": { 2235 | "uuid": "bin/uuid" 2236 | } 2237 | }, 2238 | "node_modules/validate-npm-package-license": { 2239 | "version": "3.0.4", 2240 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2241 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2242 | "dev": true, 2243 | "dependencies": { 2244 | "spdx-correct": "^3.0.0", 2245 | "spdx-expression-parse": "^3.0.0" 2246 | } 2247 | }, 2248 | "node_modules/validator": { 2249 | "version": "13.7.0", 2250 | "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", 2251 | "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", 2252 | "dev": true, 2253 | "engines": { 2254 | "node": ">= 0.10" 2255 | } 2256 | }, 2257 | "node_modules/vss-web-extension-sdk": { 2258 | "version": "5.141.0", 2259 | "resolved": "https://registry.npmjs.org/vss-web-extension-sdk/-/vss-web-extension-sdk-5.141.0.tgz", 2260 | "integrity": "sha512-c/r/HWQh4hljKOSNQMiFoeICckKFfU/1nxDCVFhioDHOE8B0i5aJN9rrihGilgMXugzl8K5hBsZs42eFqd30AQ==", 2261 | "dependencies": { 2262 | "@types/jquery": ">=2.0.48", 2263 | "@types/jqueryui": ">=1.11.34", 2264 | "@types/knockout": "^3.4.49", 2265 | "@types/mousetrap": "~1.5.34", 2266 | "@types/q": "0.0.32", 2267 | "@types/react": "^15.6.12", 2268 | "@types/requirejs": ">=2.1.28" 2269 | } 2270 | }, 2271 | "node_modules/vss-web-extension-sdk/node_modules/@types/q": { 2272 | "version": "0.0.32", 2273 | "resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", 2274 | "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=" 2275 | }, 2276 | "node_modules/walkdir": { 2277 | "version": "0.0.11", 2278 | "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", 2279 | "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", 2280 | "dev": true, 2281 | "engines": { 2282 | "node": ">=0.6.0" 2283 | } 2284 | }, 2285 | "node_modules/which": { 2286 | "version": "1.3.1", 2287 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2288 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2289 | "dev": true, 2290 | "dependencies": { 2291 | "isexe": "^2.0.0" 2292 | }, 2293 | "bin": { 2294 | "which": "bin/which" 2295 | } 2296 | }, 2297 | "node_modules/which-boxed-primitive": { 2298 | "version": "1.0.2", 2299 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2300 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2301 | "dev": true, 2302 | "dependencies": { 2303 | "is-bigint": "^1.0.1", 2304 | "is-boolean-object": "^1.1.0", 2305 | "is-number-object": "^1.0.4", 2306 | "is-string": "^1.0.5", 2307 | "is-symbol": "^1.0.3" 2308 | }, 2309 | "funding": { 2310 | "url": "https://github.com/sponsors/ljharb" 2311 | } 2312 | }, 2313 | "node_modules/winreg": { 2314 | "version": "0.0.12", 2315 | "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", 2316 | "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", 2317 | "dev": true 2318 | }, 2319 | "node_modules/winston": { 2320 | "version": "2.4.5", 2321 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", 2322 | "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", 2323 | "dev": true, 2324 | "dependencies": { 2325 | "async": "~1.0.0", 2326 | "colors": "1.0.x", 2327 | "cycle": "1.0.x", 2328 | "eyes": "0.1.x", 2329 | "isstream": "0.1.x", 2330 | "stack-trace": "0.0.x" 2331 | }, 2332 | "engines": { 2333 | "node": ">= 0.10.0" 2334 | } 2335 | }, 2336 | "node_modules/winston/node_modules/async": { 2337 | "version": "1.0.0", 2338 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", 2339 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", 2340 | "dev": true 2341 | }, 2342 | "node_modules/winston/node_modules/colors": { 2343 | "version": "1.0.3", 2344 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 2345 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", 2346 | "dev": true, 2347 | "engines": { 2348 | "node": ">=0.1.90" 2349 | } 2350 | }, 2351 | "node_modules/wrappy": { 2352 | "version": "1.0.2", 2353 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2354 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2355 | "dev": true 2356 | }, 2357 | "node_modules/xml2js": { 2358 | "version": "0.4.23", 2359 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", 2360 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", 2361 | "dev": true, 2362 | "dependencies": { 2363 | "sax": ">=0.6.0", 2364 | "xmlbuilder": "~11.0.0" 2365 | }, 2366 | "engines": { 2367 | "node": ">=4.0.0" 2368 | } 2369 | }, 2370 | "node_modules/xmlbuilder": { 2371 | "version": "11.0.1", 2372 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 2373 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 2374 | "dev": true, 2375 | "engines": { 2376 | "node": ">=4.0" 2377 | } 2378 | }, 2379 | "node_modules/xtend": { 2380 | "version": "4.0.2", 2381 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2382 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 2383 | "dev": true, 2384 | "engines": { 2385 | "node": ">=0.4" 2386 | } 2387 | }, 2388 | "node_modules/yallist": { 2389 | "version": "2.1.2", 2390 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2391 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 2392 | "dev": true 2393 | }, 2394 | "node_modules/yargs-parser": { 2395 | "version": "20.2.9", 2396 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2397 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 2398 | "dev": true, 2399 | "engines": { 2400 | "node": ">=10" 2401 | } 2402 | }, 2403 | "node_modules/yocto-queue": { 2404 | "version": "0.1.0", 2405 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2406 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2407 | "dev": true, 2408 | "engines": { 2409 | "node": ">=10" 2410 | }, 2411 | "funding": { 2412 | "url": "https://github.com/sponsors/sindresorhus" 2413 | } 2414 | }, 2415 | "node_modules/zip-stream": { 2416 | "version": "1.2.0", 2417 | "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", 2418 | "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", 2419 | "dev": true, 2420 | "dependencies": { 2421 | "archiver-utils": "^1.3.0", 2422 | "compress-commons": "^1.2.0", 2423 | "lodash": "^4.8.0", 2424 | "readable-stream": "^2.0.0" 2425 | }, 2426 | "engines": { 2427 | "node": ">= 0.10.0" 2428 | } 2429 | } 2430 | }, 2431 | "dependencies": { 2432 | "@babel/code-frame": { 2433 | "version": "7.16.7", 2434 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 2435 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 2436 | "dev": true, 2437 | "requires": { 2438 | "@babel/highlight": "^7.16.7" 2439 | } 2440 | }, 2441 | "@babel/helper-validator-identifier": { 2442 | "version": "7.16.7", 2443 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 2444 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 2445 | "dev": true 2446 | }, 2447 | "@babel/highlight": { 2448 | "version": "7.16.10", 2449 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 2450 | "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 2451 | "dev": true, 2452 | "requires": { 2453 | "@babel/helper-validator-identifier": "^7.16.7", 2454 | "chalk": "^2.0.0", 2455 | "js-tokens": "^4.0.0" 2456 | } 2457 | }, 2458 | "@colors/colors": { 2459 | "version": "1.5.0", 2460 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 2461 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 2462 | "dev": true 2463 | }, 2464 | "@types/jquery": { 2465 | "version": "3.3.22", 2466 | "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.22.tgz", 2467 | "integrity": "sha512-a4JDcIhJhHYnoWCkG3xT2CZxXZeA92JeREESorg0DMQ3ZsjuKF48h7XK4l5Gl2GRa/ItGRpKMT0pyK88yRgqXQ==", 2468 | "requires": { 2469 | "@types/sizzle": "*" 2470 | } 2471 | }, 2472 | "@types/jqueryui": { 2473 | "version": "1.12.6", 2474 | "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.6.tgz", 2475 | "integrity": "sha512-lF4aIWtQ3Xbd6J+9WXz/day1pyf39ZMO/KUrigFAuMQ6FFVw2xZBIRCUwA7/CEnab1Bb7b4ko304Lxrp2xw8hQ==", 2476 | "requires": { 2477 | "@types/jquery": "*" 2478 | } 2479 | }, 2480 | "@types/knockout": { 2481 | "version": "3.4.60", 2482 | "resolved": "https://registry.npmjs.org/@types/knockout/-/knockout-3.4.60.tgz", 2483 | "integrity": "sha512-0qFy/G5y+c2CrhUCCEDbodGfMXzVXVBdwpdHBxAVT0qDfnD3XD6dtEb73D1nn0Ip6/IJctSyLW/VpFkakoe5TQ==" 2484 | }, 2485 | "@types/minimist": { 2486 | "version": "1.2.2", 2487 | "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", 2488 | "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", 2489 | "dev": true 2490 | }, 2491 | "@types/mousetrap": { 2492 | "version": "1.5.34", 2493 | "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.5.34.tgz", 2494 | "integrity": "sha512-a2yhRIADupQfOFM75v7GfcQQLUxU705+i/xcZ3N/3PK3Xdo31SUfuCUByWPGOHB1e38m7MxTx/D8FPVsJXZKJw==" 2495 | }, 2496 | "@types/normalize-package-data": { 2497 | "version": "2.4.1", 2498 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 2499 | "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 2500 | "dev": true 2501 | }, 2502 | "@types/react": { 2503 | "version": "15.6.21", 2504 | "resolved": "https://registry.npmjs.org/@types/react/-/react-15.6.21.tgz", 2505 | "integrity": "sha512-XpKrM3ohs7pPOWpwPnaAoxbXMI5REcBTZm/c+WTLpfaAoDf99pnQAkTkg6DyPpnkmBbykhowaBd0sHP0+K7n0g==" 2506 | }, 2507 | "@types/requirejs": { 2508 | "version": "2.1.31", 2509 | "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz", 2510 | "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==" 2511 | }, 2512 | "@types/sizzle": { 2513 | "version": "2.3.2", 2514 | "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", 2515 | "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" 2516 | }, 2517 | "ansi-styles": { 2518 | "version": "3.2.1", 2519 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2520 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2521 | "dev": true, 2522 | "requires": { 2523 | "color-convert": "^1.9.0" 2524 | } 2525 | }, 2526 | "app-root-path": { 2527 | "version": "1.0.0", 2528 | "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.0.0.tgz", 2529 | "integrity": "sha1-LHKZF0vGHLhv46SnmOAeSTt9U30=", 2530 | "dev": true 2531 | }, 2532 | "arch": { 2533 | "version": "2.2.0", 2534 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", 2535 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", 2536 | "dev": true 2537 | }, 2538 | "archiver": { 2539 | "version": "2.0.3", 2540 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.3.tgz", 2541 | "integrity": "sha1-tDYLtYSvFDeZGUJxbyHXxSPR270=", 2542 | "dev": true, 2543 | "requires": { 2544 | "archiver-utils": "^1.3.0", 2545 | "async": "^2.0.0", 2546 | "buffer-crc32": "^0.2.1", 2547 | "glob": "^7.0.0", 2548 | "lodash": "^4.8.0", 2549 | "readable-stream": "^2.0.0", 2550 | "tar-stream": "^1.5.0", 2551 | "walkdir": "^0.0.11", 2552 | "zip-stream": "^1.2.0" 2553 | }, 2554 | "dependencies": { 2555 | "async": { 2556 | "version": "2.6.3", 2557 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 2558 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 2559 | "dev": true, 2560 | "requires": { 2561 | "lodash": "^4.17.14" 2562 | } 2563 | } 2564 | } 2565 | }, 2566 | "archiver-utils": { 2567 | "version": "1.3.0", 2568 | "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", 2569 | "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", 2570 | "dev": true, 2571 | "requires": { 2572 | "glob": "^7.0.0", 2573 | "graceful-fs": "^4.1.0", 2574 | "lazystream": "^1.0.0", 2575 | "lodash": "^4.8.0", 2576 | "normalize-path": "^2.0.0", 2577 | "readable-stream": "^2.0.0" 2578 | } 2579 | }, 2580 | "arrify": { 2581 | "version": "1.0.1", 2582 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 2583 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 2584 | "dev": true 2585 | }, 2586 | "async": { 2587 | "version": "1.5.2", 2588 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 2589 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 2590 | "dev": true 2591 | }, 2592 | "azure-devops-node-api": { 2593 | "version": "10.2.2", 2594 | "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz", 2595 | "integrity": "sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow==", 2596 | "dev": true, 2597 | "requires": { 2598 | "tunnel": "0.0.6", 2599 | "typed-rest-client": "^1.8.4" 2600 | } 2601 | }, 2602 | "balanced-match": { 2603 | "version": "1.0.2", 2604 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2605 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2606 | "dev": true 2607 | }, 2608 | "base64-js": { 2609 | "version": "1.5.1", 2610 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 2611 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 2612 | "dev": true 2613 | }, 2614 | "bl": { 2615 | "version": "1.2.3", 2616 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 2617 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 2618 | "dev": true, 2619 | "requires": { 2620 | "readable-stream": "^2.3.5", 2621 | "safe-buffer": "^5.1.1" 2622 | } 2623 | }, 2624 | "brace-expansion": { 2625 | "version": "1.1.11", 2626 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2627 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2628 | "dev": true, 2629 | "requires": { 2630 | "balanced-match": "^1.0.0", 2631 | "concat-map": "0.0.1" 2632 | } 2633 | }, 2634 | "buffer": { 2635 | "version": "5.7.1", 2636 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 2637 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 2638 | "dev": true, 2639 | "requires": { 2640 | "base64-js": "^1.3.1", 2641 | "ieee754": "^1.1.13" 2642 | } 2643 | }, 2644 | "buffer-alloc": { 2645 | "version": "1.2.0", 2646 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 2647 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 2648 | "dev": true, 2649 | "requires": { 2650 | "buffer-alloc-unsafe": "^1.1.0", 2651 | "buffer-fill": "^1.0.0" 2652 | } 2653 | }, 2654 | "buffer-alloc-unsafe": { 2655 | "version": "1.1.0", 2656 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 2657 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", 2658 | "dev": true 2659 | }, 2660 | "buffer-crc32": { 2661 | "version": "0.2.13", 2662 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 2663 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 2664 | "dev": true 2665 | }, 2666 | "buffer-fill": { 2667 | "version": "1.0.0", 2668 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 2669 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", 2670 | "dev": true 2671 | }, 2672 | "call-bind": { 2673 | "version": "1.0.2", 2674 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 2675 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 2676 | "dev": true, 2677 | "requires": { 2678 | "function-bind": "^1.1.1", 2679 | "get-intrinsic": "^1.0.2" 2680 | } 2681 | }, 2682 | "camelcase": { 2683 | "version": "6.3.0", 2684 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 2685 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 2686 | "dev": true 2687 | }, 2688 | "camelcase-keys": { 2689 | "version": "7.0.2", 2690 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", 2691 | "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", 2692 | "dev": true, 2693 | "requires": { 2694 | "camelcase": "^6.3.0", 2695 | "map-obj": "^4.1.0", 2696 | "quick-lru": "^5.1.1", 2697 | "type-fest": "^1.2.1" 2698 | } 2699 | }, 2700 | "chalk": { 2701 | "version": "2.4.2", 2702 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2703 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2704 | "dev": true, 2705 | "requires": { 2706 | "ansi-styles": "^3.2.1", 2707 | "escape-string-regexp": "^1.0.5", 2708 | "supports-color": "^5.3.0" 2709 | } 2710 | }, 2711 | "clipboardy": { 2712 | "version": "1.2.3", 2713 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", 2714 | "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", 2715 | "dev": true, 2716 | "requires": { 2717 | "arch": "^2.1.0", 2718 | "execa": "^0.8.0" 2719 | } 2720 | }, 2721 | "color-convert": { 2722 | "version": "1.9.3", 2723 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2724 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2725 | "dev": true, 2726 | "requires": { 2727 | "color-name": "1.1.3" 2728 | } 2729 | }, 2730 | "color-name": { 2731 | "version": "1.1.3", 2732 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2733 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 2734 | "dev": true 2735 | }, 2736 | "colors": { 2737 | "version": "1.3.3", 2738 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", 2739 | "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", 2740 | "dev": true 2741 | }, 2742 | "compress-commons": { 2743 | "version": "1.2.2", 2744 | "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", 2745 | "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", 2746 | "dev": true, 2747 | "requires": { 2748 | "buffer-crc32": "^0.2.1", 2749 | "crc32-stream": "^2.0.0", 2750 | "normalize-path": "^2.0.0", 2751 | "readable-stream": "^2.0.0" 2752 | } 2753 | }, 2754 | "concat-map": { 2755 | "version": "0.0.1", 2756 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2757 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 2758 | "dev": true 2759 | }, 2760 | "core-util-is": { 2761 | "version": "1.0.3", 2762 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 2763 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 2764 | "dev": true 2765 | }, 2766 | "crc": { 2767 | "version": "3.8.0", 2768 | "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", 2769 | "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", 2770 | "dev": true, 2771 | "requires": { 2772 | "buffer": "^5.1.0" 2773 | } 2774 | }, 2775 | "crc32-stream": { 2776 | "version": "2.0.0", 2777 | "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", 2778 | "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", 2779 | "dev": true, 2780 | "requires": { 2781 | "crc": "^3.4.4", 2782 | "readable-stream": "^2.0.0" 2783 | } 2784 | }, 2785 | "cross-spawn": { 2786 | "version": "5.1.0", 2787 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 2788 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 2789 | "dev": true, 2790 | "requires": { 2791 | "lru-cache": "^4.0.1", 2792 | "shebang-command": "^1.2.0", 2793 | "which": "^1.2.9" 2794 | } 2795 | }, 2796 | "cycle": { 2797 | "version": "1.0.3", 2798 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 2799 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", 2800 | "dev": true 2801 | }, 2802 | "dateformat": { 2803 | "version": "1.0.11", 2804 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.11.tgz", 2805 | "integrity": "sha1-8ny+56ASu/uC6gUVYtOXf2CT27E=", 2806 | "dev": true, 2807 | "requires": { 2808 | "get-stdin": "*", 2809 | "meow": "*" 2810 | } 2811 | }, 2812 | "decamelize": { 2813 | "version": "5.0.1", 2814 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", 2815 | "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", 2816 | "dev": true 2817 | }, 2818 | "decamelize-keys": { 2819 | "version": "1.1.0", 2820 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", 2821 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", 2822 | "dev": true, 2823 | "requires": { 2824 | "decamelize": "^1.1.0", 2825 | "map-obj": "^1.0.0" 2826 | }, 2827 | "dependencies": { 2828 | "decamelize": { 2829 | "version": "1.2.0", 2830 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 2831 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 2832 | "dev": true 2833 | }, 2834 | "map-obj": { 2835 | "version": "1.0.1", 2836 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 2837 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 2838 | "dev": true 2839 | } 2840 | } 2841 | }, 2842 | "define-properties": { 2843 | "version": "1.1.3", 2844 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 2845 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 2846 | "dev": true, 2847 | "requires": { 2848 | "object-keys": "^1.0.12" 2849 | } 2850 | }, 2851 | "end-of-stream": { 2852 | "version": "1.4.4", 2853 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 2854 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 2855 | "dev": true, 2856 | "requires": { 2857 | "once": "^1.4.0" 2858 | } 2859 | }, 2860 | "error-ex": { 2861 | "version": "1.3.2", 2862 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 2863 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 2864 | "dev": true, 2865 | "requires": { 2866 | "is-arrayish": "^0.2.1" 2867 | } 2868 | }, 2869 | "es-abstract": { 2870 | "version": "1.19.2", 2871 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", 2872 | "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", 2873 | "dev": true, 2874 | "requires": { 2875 | "call-bind": "^1.0.2", 2876 | "es-to-primitive": "^1.2.1", 2877 | "function-bind": "^1.1.1", 2878 | "get-intrinsic": "^1.1.1", 2879 | "get-symbol-description": "^1.0.0", 2880 | "has": "^1.0.3", 2881 | "has-symbols": "^1.0.3", 2882 | "internal-slot": "^1.0.3", 2883 | "is-callable": "^1.2.4", 2884 | "is-negative-zero": "^2.0.2", 2885 | "is-regex": "^1.1.4", 2886 | "is-shared-array-buffer": "^1.0.1", 2887 | "is-string": "^1.0.7", 2888 | "is-weakref": "^1.0.2", 2889 | "object-inspect": "^1.12.0", 2890 | "object-keys": "^1.1.1", 2891 | "object.assign": "^4.1.2", 2892 | "string.prototype.trimend": "^1.0.4", 2893 | "string.prototype.trimstart": "^1.0.4", 2894 | "unbox-primitive": "^1.0.1" 2895 | } 2896 | }, 2897 | "es-to-primitive": { 2898 | "version": "1.2.1", 2899 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 2900 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 2901 | "dev": true, 2902 | "requires": { 2903 | "is-callable": "^1.1.4", 2904 | "is-date-object": "^1.0.1", 2905 | "is-symbol": "^1.0.2" 2906 | } 2907 | }, 2908 | "escape-string-regexp": { 2909 | "version": "1.0.5", 2910 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2911 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2912 | "dev": true 2913 | }, 2914 | "execa": { 2915 | "version": "0.8.0", 2916 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", 2917 | "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", 2918 | "dev": true, 2919 | "requires": { 2920 | "cross-spawn": "^5.0.1", 2921 | "get-stream": "^3.0.0", 2922 | "is-stream": "^1.1.0", 2923 | "npm-run-path": "^2.0.0", 2924 | "p-finally": "^1.0.0", 2925 | "signal-exit": "^3.0.0", 2926 | "strip-eof": "^1.0.0" 2927 | } 2928 | }, 2929 | "eyes": { 2930 | "version": "0.1.8", 2931 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 2932 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", 2933 | "dev": true 2934 | }, 2935 | "find-up": { 2936 | "version": "5.0.0", 2937 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2938 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2939 | "dev": true, 2940 | "requires": { 2941 | "locate-path": "^6.0.0", 2942 | "path-exists": "^4.0.0" 2943 | } 2944 | }, 2945 | "for-each": { 2946 | "version": "0.3.3", 2947 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 2948 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 2949 | "dev": true, 2950 | "requires": { 2951 | "is-callable": "^1.1.3" 2952 | } 2953 | }, 2954 | "fs-constants": { 2955 | "version": "1.0.0", 2956 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 2957 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 2958 | "dev": true 2959 | }, 2960 | "fs.realpath": { 2961 | "version": "1.0.0", 2962 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2963 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2964 | "dev": true 2965 | }, 2966 | "function-bind": { 2967 | "version": "1.1.1", 2968 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2969 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2970 | "dev": true 2971 | }, 2972 | "get-intrinsic": { 2973 | "version": "1.1.1", 2974 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 2975 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 2976 | "dev": true, 2977 | "requires": { 2978 | "function-bind": "^1.1.1", 2979 | "has": "^1.0.3", 2980 | "has-symbols": "^1.0.1" 2981 | } 2982 | }, 2983 | "get-stdin": { 2984 | "version": "9.0.0", 2985 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", 2986 | "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", 2987 | "dev": true 2988 | }, 2989 | "get-stream": { 2990 | "version": "3.0.0", 2991 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 2992 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 2993 | "dev": true 2994 | }, 2995 | "get-symbol-description": { 2996 | "version": "1.0.0", 2997 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 2998 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 2999 | "dev": true, 3000 | "requires": { 3001 | "call-bind": "^1.0.2", 3002 | "get-intrinsic": "^1.1.1" 3003 | } 3004 | }, 3005 | "glob": { 3006 | "version": "7.1.2", 3007 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 3008 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 3009 | "dev": true, 3010 | "requires": { 3011 | "fs.realpath": "^1.0.0", 3012 | "inflight": "^1.0.4", 3013 | "inherits": "2", 3014 | "minimatch": "^3.0.4", 3015 | "once": "^1.3.0", 3016 | "path-is-absolute": "^1.0.0" 3017 | } 3018 | }, 3019 | "graceful-fs": { 3020 | "version": "4.2.10", 3021 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 3022 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 3023 | "dev": true 3024 | }, 3025 | "hard-rejection": { 3026 | "version": "2.1.0", 3027 | "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", 3028 | "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", 3029 | "dev": true 3030 | }, 3031 | "has": { 3032 | "version": "1.0.3", 3033 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 3034 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 3035 | "dev": true, 3036 | "requires": { 3037 | "function-bind": "^1.1.1" 3038 | } 3039 | }, 3040 | "has-bigints": { 3041 | "version": "1.0.1", 3042 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 3043 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 3044 | "dev": true 3045 | }, 3046 | "has-flag": { 3047 | "version": "3.0.0", 3048 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 3049 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 3050 | "dev": true 3051 | }, 3052 | "has-symbols": { 3053 | "version": "1.0.3", 3054 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 3055 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 3056 | "dev": true 3057 | }, 3058 | "has-tostringtag": { 3059 | "version": "1.0.0", 3060 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 3061 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 3062 | "dev": true, 3063 | "requires": { 3064 | "has-symbols": "^1.0.2" 3065 | } 3066 | }, 3067 | "hosted-git-info": { 3068 | "version": "4.1.0", 3069 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", 3070 | "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", 3071 | "dev": true, 3072 | "requires": { 3073 | "lru-cache": "^6.0.0" 3074 | }, 3075 | "dependencies": { 3076 | "lru-cache": { 3077 | "version": "6.0.0", 3078 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3079 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3080 | "dev": true, 3081 | "requires": { 3082 | "yallist": "^4.0.0" 3083 | } 3084 | }, 3085 | "yallist": { 3086 | "version": "4.0.0", 3087 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3088 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3089 | "dev": true 3090 | } 3091 | } 3092 | }, 3093 | "ieee754": { 3094 | "version": "1.2.1", 3095 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 3096 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 3097 | "dev": true 3098 | }, 3099 | "immediate": { 3100 | "version": "3.0.6", 3101 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 3102 | "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", 3103 | "dev": true 3104 | }, 3105 | "indent-string": { 3106 | "version": "5.0.0", 3107 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", 3108 | "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", 3109 | "dev": true 3110 | }, 3111 | "inflight": { 3112 | "version": "1.0.6", 3113 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3114 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 3115 | "dev": true, 3116 | "requires": { 3117 | "once": "^1.3.0", 3118 | "wrappy": "1" 3119 | } 3120 | }, 3121 | "inherits": { 3122 | "version": "2.0.4", 3123 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3124 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3125 | "dev": true 3126 | }, 3127 | "internal-slot": { 3128 | "version": "1.0.3", 3129 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 3130 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 3131 | "dev": true, 3132 | "requires": { 3133 | "get-intrinsic": "^1.1.0", 3134 | "has": "^1.0.3", 3135 | "side-channel": "^1.0.4" 3136 | } 3137 | }, 3138 | "interpret": { 3139 | "version": "1.4.0", 3140 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", 3141 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", 3142 | "dev": true 3143 | }, 3144 | "is-arrayish": { 3145 | "version": "0.2.1", 3146 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 3147 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 3148 | "dev": true 3149 | }, 3150 | "is-bigint": { 3151 | "version": "1.0.4", 3152 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 3153 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 3154 | "dev": true, 3155 | "requires": { 3156 | "has-bigints": "^1.0.1" 3157 | } 3158 | }, 3159 | "is-boolean-object": { 3160 | "version": "1.1.2", 3161 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 3162 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 3163 | "dev": true, 3164 | "requires": { 3165 | "call-bind": "^1.0.2", 3166 | "has-tostringtag": "^1.0.0" 3167 | } 3168 | }, 3169 | "is-callable": { 3170 | "version": "1.2.4", 3171 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 3172 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 3173 | "dev": true 3174 | }, 3175 | "is-core-module": { 3176 | "version": "2.8.1", 3177 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 3178 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 3179 | "dev": true, 3180 | "requires": { 3181 | "has": "^1.0.3" 3182 | } 3183 | }, 3184 | "is-date-object": { 3185 | "version": "1.0.5", 3186 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 3187 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 3188 | "dev": true, 3189 | "requires": { 3190 | "has-tostringtag": "^1.0.0" 3191 | } 3192 | }, 3193 | "is-negative-zero": { 3194 | "version": "2.0.2", 3195 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 3196 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 3197 | "dev": true 3198 | }, 3199 | "is-number-object": { 3200 | "version": "1.0.7", 3201 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 3202 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 3203 | "dev": true, 3204 | "requires": { 3205 | "has-tostringtag": "^1.0.0" 3206 | } 3207 | }, 3208 | "is-plain-obj": { 3209 | "version": "1.1.0", 3210 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 3211 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 3212 | "dev": true 3213 | }, 3214 | "is-regex": { 3215 | "version": "1.1.4", 3216 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 3217 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 3218 | "dev": true, 3219 | "requires": { 3220 | "call-bind": "^1.0.2", 3221 | "has-tostringtag": "^1.0.0" 3222 | } 3223 | }, 3224 | "is-shared-array-buffer": { 3225 | "version": "1.0.2", 3226 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 3227 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 3228 | "dev": true, 3229 | "requires": { 3230 | "call-bind": "^1.0.2" 3231 | } 3232 | }, 3233 | "is-stream": { 3234 | "version": "1.1.0", 3235 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 3236 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 3237 | "dev": true 3238 | }, 3239 | "is-string": { 3240 | "version": "1.0.7", 3241 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 3242 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 3243 | "dev": true, 3244 | "requires": { 3245 | "has-tostringtag": "^1.0.0" 3246 | } 3247 | }, 3248 | "is-symbol": { 3249 | "version": "1.0.4", 3250 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 3251 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 3252 | "dev": true, 3253 | "requires": { 3254 | "has-symbols": "^1.0.2" 3255 | } 3256 | }, 3257 | "is-weakref": { 3258 | "version": "1.0.2", 3259 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 3260 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 3261 | "dev": true, 3262 | "requires": { 3263 | "call-bind": "^1.0.2" 3264 | } 3265 | }, 3266 | "isarray": { 3267 | "version": "1.0.0", 3268 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3269 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 3270 | "dev": true 3271 | }, 3272 | "isexe": { 3273 | "version": "2.0.0", 3274 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3275 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 3276 | "dev": true 3277 | }, 3278 | "isstream": { 3279 | "version": "0.1.2", 3280 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 3281 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 3282 | "dev": true 3283 | }, 3284 | "jju": { 3285 | "version": "1.4.0", 3286 | "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", 3287 | "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", 3288 | "dev": true 3289 | }, 3290 | "js-tokens": { 3291 | "version": "4.0.0", 3292 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3293 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3294 | "dev": true 3295 | }, 3296 | "json-in-place": { 3297 | "version": "1.0.1", 3298 | "resolved": "https://registry.npmjs.org/json-in-place/-/json-in-place-1.0.1.tgz", 3299 | "integrity": "sha1-ih7NJaac4ZAFUs1xUr2TdU3k4fA=", 3300 | "dev": true, 3301 | "requires": { 3302 | "json-lexer": "1.1.1" 3303 | } 3304 | }, 3305 | "json-lexer": { 3306 | "version": "1.1.1", 3307 | "resolved": "https://registry.npmjs.org/json-lexer/-/json-lexer-1.1.1.tgz", 3308 | "integrity": "sha1-vT7V1+Vgudma0iNPKMpwb7N3t9Q=", 3309 | "dev": true 3310 | }, 3311 | "json-parse-even-better-errors": { 3312 | "version": "2.3.1", 3313 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 3314 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 3315 | "dev": true 3316 | }, 3317 | "jszip": { 3318 | "version": "3.9.0", 3319 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.0.tgz", 3320 | "integrity": "sha512-Vb3SMfASUN1EKrFzv5A5+lTaZnzLzT5E6A9zyT7WFqMSfhT2Z7iS5FgSOjx2Olm3MDj8OqKj6GHyP2kMt1Ir6w==", 3321 | "dev": true, 3322 | "requires": { 3323 | "lie": "~3.3.0", 3324 | "pako": "~1.0.2", 3325 | "readable-stream": "~2.3.6", 3326 | "set-immediate-shim": "~1.0.1" 3327 | } 3328 | }, 3329 | "kind-of": { 3330 | "version": "6.0.3", 3331 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 3332 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 3333 | "dev": true 3334 | }, 3335 | "lazystream": { 3336 | "version": "1.0.1", 3337 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", 3338 | "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", 3339 | "dev": true, 3340 | "requires": { 3341 | "readable-stream": "^2.0.5" 3342 | } 3343 | }, 3344 | "lie": { 3345 | "version": "3.3.0", 3346 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 3347 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 3348 | "dev": true, 3349 | "requires": { 3350 | "immediate": "~3.0.5" 3351 | } 3352 | }, 3353 | "lines-and-columns": { 3354 | "version": "1.2.4", 3355 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 3356 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3357 | "dev": true 3358 | }, 3359 | "locate-path": { 3360 | "version": "6.0.0", 3361 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3362 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3363 | "dev": true, 3364 | "requires": { 3365 | "p-locate": "^5.0.0" 3366 | } 3367 | }, 3368 | "lodash": { 3369 | "version": "4.17.21", 3370 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 3371 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 3372 | "dev": true 3373 | }, 3374 | "lru-cache": { 3375 | "version": "4.1.5", 3376 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 3377 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 3378 | "dev": true, 3379 | "requires": { 3380 | "pseudomap": "^1.0.2", 3381 | "yallist": "^2.1.2" 3382 | } 3383 | }, 3384 | "map-obj": { 3385 | "version": "4.3.0", 3386 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", 3387 | "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", 3388 | "dev": true 3389 | }, 3390 | "meow": { 3391 | "version": "10.1.2", 3392 | "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.2.tgz", 3393 | "integrity": "sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q==", 3394 | "dev": true, 3395 | "requires": { 3396 | "@types/minimist": "^1.2.2", 3397 | "camelcase-keys": "^7.0.0", 3398 | "decamelize": "^5.0.0", 3399 | "decamelize-keys": "^1.1.0", 3400 | "hard-rejection": "^2.1.0", 3401 | "minimist-options": "4.1.0", 3402 | "normalize-package-data": "^3.0.2", 3403 | "read-pkg-up": "^8.0.0", 3404 | "redent": "^4.0.0", 3405 | "trim-newlines": "^4.0.2", 3406 | "type-fest": "^1.2.2", 3407 | "yargs-parser": "^20.2.9" 3408 | } 3409 | }, 3410 | "min-indent": { 3411 | "version": "1.0.1", 3412 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 3413 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 3414 | "dev": true 3415 | }, 3416 | "minimatch": { 3417 | "version": "3.1.2", 3418 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3419 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3420 | "dev": true, 3421 | "requires": { 3422 | "brace-expansion": "^1.1.7" 3423 | } 3424 | }, 3425 | "minimist": { 3426 | "version": "1.2.6", 3427 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3428 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 3429 | "dev": true 3430 | }, 3431 | "minimist-options": { 3432 | "version": "4.1.0", 3433 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", 3434 | "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", 3435 | "dev": true, 3436 | "requires": { 3437 | "arrify": "^1.0.1", 3438 | "is-plain-obj": "^1.1.0", 3439 | "kind-of": "^6.0.3" 3440 | } 3441 | }, 3442 | "mkdirp": { 3443 | "version": "1.0.4", 3444 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 3445 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 3446 | "dev": true 3447 | }, 3448 | "mute-stream": { 3449 | "version": "0.0.8", 3450 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 3451 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 3452 | "dev": true 3453 | }, 3454 | "normalize-package-data": { 3455 | "version": "3.0.3", 3456 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", 3457 | "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", 3458 | "dev": true, 3459 | "requires": { 3460 | "hosted-git-info": "^4.0.1", 3461 | "is-core-module": "^2.5.0", 3462 | "semver": "^7.3.4", 3463 | "validate-npm-package-license": "^3.0.1" 3464 | } 3465 | }, 3466 | "normalize-path": { 3467 | "version": "2.1.1", 3468 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 3469 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 3470 | "dev": true, 3471 | "requires": { 3472 | "remove-trailing-separator": "^1.0.1" 3473 | } 3474 | }, 3475 | "npm-run-path": { 3476 | "version": "2.0.2", 3477 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 3478 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 3479 | "dev": true, 3480 | "requires": { 3481 | "path-key": "^2.0.0" 3482 | } 3483 | }, 3484 | "object-inspect": { 3485 | "version": "1.12.0", 3486 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 3487 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 3488 | "dev": true 3489 | }, 3490 | "object-keys": { 3491 | "version": "1.1.1", 3492 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 3493 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 3494 | "dev": true 3495 | }, 3496 | "object.assign": { 3497 | "version": "4.1.2", 3498 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 3499 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 3500 | "dev": true, 3501 | "requires": { 3502 | "call-bind": "^1.0.0", 3503 | "define-properties": "^1.1.3", 3504 | "has-symbols": "^1.0.1", 3505 | "object-keys": "^1.1.1" 3506 | } 3507 | }, 3508 | "object.getownpropertydescriptors": { 3509 | "version": "2.1.3", 3510 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", 3511 | "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", 3512 | "dev": true, 3513 | "requires": { 3514 | "call-bind": "^1.0.2", 3515 | "define-properties": "^1.1.3", 3516 | "es-abstract": "^1.19.1" 3517 | } 3518 | }, 3519 | "once": { 3520 | "version": "1.4.0", 3521 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3522 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3523 | "dev": true, 3524 | "requires": { 3525 | "wrappy": "1" 3526 | } 3527 | }, 3528 | "onecolor": { 3529 | "version": "2.5.0", 3530 | "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.5.0.tgz", 3531 | "integrity": "sha1-Ila2UdyAfBAfAK7b1JklxXpEMcE=", 3532 | "dev": true 3533 | }, 3534 | "os-homedir": { 3535 | "version": "1.0.2", 3536 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 3537 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 3538 | "dev": true 3539 | }, 3540 | "os-tmpdir": { 3541 | "version": "1.0.2", 3542 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3543 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 3544 | "dev": true 3545 | }, 3546 | "p-finally": { 3547 | "version": "1.0.0", 3548 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3549 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 3550 | "dev": true 3551 | }, 3552 | "p-limit": { 3553 | "version": "3.1.0", 3554 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3555 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3556 | "dev": true, 3557 | "requires": { 3558 | "yocto-queue": "^0.1.0" 3559 | } 3560 | }, 3561 | "p-locate": { 3562 | "version": "5.0.0", 3563 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3564 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3565 | "dev": true, 3566 | "requires": { 3567 | "p-limit": "^3.0.2" 3568 | } 3569 | }, 3570 | "pako": { 3571 | "version": "1.0.11", 3572 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 3573 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 3574 | "dev": true 3575 | }, 3576 | "parse-json": { 3577 | "version": "5.2.0", 3578 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 3579 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 3580 | "dev": true, 3581 | "requires": { 3582 | "@babel/code-frame": "^7.0.0", 3583 | "error-ex": "^1.3.1", 3584 | "json-parse-even-better-errors": "^2.3.0", 3585 | "lines-and-columns": "^1.1.6" 3586 | } 3587 | }, 3588 | "path-exists": { 3589 | "version": "4.0.0", 3590 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3591 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3592 | "dev": true 3593 | }, 3594 | "path-is-absolute": { 3595 | "version": "1.0.1", 3596 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3597 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3598 | "dev": true 3599 | }, 3600 | "path-key": { 3601 | "version": "2.0.1", 3602 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 3603 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 3604 | "dev": true 3605 | }, 3606 | "path-parse": { 3607 | "version": "1.0.7", 3608 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3609 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3610 | "dev": true 3611 | }, 3612 | "process-nextick-args": { 3613 | "version": "2.0.1", 3614 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3615 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3616 | "dev": true 3617 | }, 3618 | "prompt": { 3619 | "version": "1.2.2", 3620 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.2.tgz", 3621 | "integrity": "sha512-XNXhNv3PUHJDcDkISpCwSJxtw9Bor4FZnlMUDW64N/KCPdxhfVlpD5+YUXI/Z8a9QWmOhs9KSiVtR8nzPS0BYA==", 3622 | "dev": true, 3623 | "requires": { 3624 | "@colors/colors": "1.5.0", 3625 | "async": "~0.9.0", 3626 | "read": "1.0.x", 3627 | "revalidator": "0.1.x", 3628 | "winston": "2.x" 3629 | }, 3630 | "dependencies": { 3631 | "async": { 3632 | "version": "0.9.2", 3633 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 3634 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", 3635 | "dev": true 3636 | } 3637 | } 3638 | }, 3639 | "pseudomap": { 3640 | "version": "1.0.2", 3641 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 3642 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 3643 | "dev": true 3644 | }, 3645 | "q": { 3646 | "version": "1.5.1", 3647 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 3648 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" 3649 | }, 3650 | "qs": { 3651 | "version": "6.10.3", 3652 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 3653 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 3654 | "dev": true, 3655 | "requires": { 3656 | "side-channel": "^1.0.4" 3657 | } 3658 | }, 3659 | "quick-lru": { 3660 | "version": "5.1.1", 3661 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 3662 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 3663 | "dev": true 3664 | }, 3665 | "read": { 3666 | "version": "1.0.7", 3667 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 3668 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 3669 | "dev": true, 3670 | "requires": { 3671 | "mute-stream": "~0.0.4" 3672 | } 3673 | }, 3674 | "read-pkg": { 3675 | "version": "6.0.0", 3676 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", 3677 | "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", 3678 | "dev": true, 3679 | "requires": { 3680 | "@types/normalize-package-data": "^2.4.0", 3681 | "normalize-package-data": "^3.0.2", 3682 | "parse-json": "^5.2.0", 3683 | "type-fest": "^1.0.1" 3684 | } 3685 | }, 3686 | "read-pkg-up": { 3687 | "version": "8.0.0", 3688 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", 3689 | "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", 3690 | "dev": true, 3691 | "requires": { 3692 | "find-up": "^5.0.0", 3693 | "read-pkg": "^6.0.0", 3694 | "type-fest": "^1.0.1" 3695 | } 3696 | }, 3697 | "readable-stream": { 3698 | "version": "2.3.7", 3699 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3700 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3701 | "dev": true, 3702 | "requires": { 3703 | "core-util-is": "~1.0.0", 3704 | "inherits": "~2.0.3", 3705 | "isarray": "~1.0.0", 3706 | "process-nextick-args": "~2.0.0", 3707 | "safe-buffer": "~5.1.1", 3708 | "string_decoder": "~1.1.1", 3709 | "util-deprecate": "~1.0.1" 3710 | } 3711 | }, 3712 | "rechoir": { 3713 | "version": "0.6.2", 3714 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 3715 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 3716 | "dev": true, 3717 | "requires": { 3718 | "resolve": "^1.1.6" 3719 | } 3720 | }, 3721 | "redent": { 3722 | "version": "4.0.0", 3723 | "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", 3724 | "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", 3725 | "dev": true, 3726 | "requires": { 3727 | "indent-string": "^5.0.0", 3728 | "strip-indent": "^4.0.0" 3729 | } 3730 | }, 3731 | "remove-trailing-separator": { 3732 | "version": "1.1.0", 3733 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 3734 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 3735 | "dev": true 3736 | }, 3737 | "resolve": { 3738 | "version": "1.22.0", 3739 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 3740 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 3741 | "dev": true, 3742 | "requires": { 3743 | "is-core-module": "^2.8.1", 3744 | "path-parse": "^1.0.7", 3745 | "supports-preserve-symlinks-flag": "^1.0.0" 3746 | } 3747 | }, 3748 | "revalidator": { 3749 | "version": "0.1.8", 3750 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 3751 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", 3752 | "dev": true 3753 | }, 3754 | "safe-buffer": { 3755 | "version": "5.1.2", 3756 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3757 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3758 | "dev": true 3759 | }, 3760 | "sax": { 3761 | "version": "1.2.4", 3762 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 3763 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 3764 | "dev": true 3765 | }, 3766 | "semver": { 3767 | "version": "7.3.5", 3768 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 3769 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 3770 | "dev": true, 3771 | "requires": { 3772 | "lru-cache": "^6.0.0" 3773 | }, 3774 | "dependencies": { 3775 | "lru-cache": { 3776 | "version": "6.0.0", 3777 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3778 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3779 | "dev": true, 3780 | "requires": { 3781 | "yallist": "^4.0.0" 3782 | } 3783 | }, 3784 | "yallist": { 3785 | "version": "4.0.0", 3786 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3787 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3788 | "dev": true 3789 | } 3790 | } 3791 | }, 3792 | "set-immediate-shim": { 3793 | "version": "1.0.1", 3794 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 3795 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 3796 | "dev": true 3797 | }, 3798 | "shebang-command": { 3799 | "version": "1.2.0", 3800 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3801 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3802 | "dev": true, 3803 | "requires": { 3804 | "shebang-regex": "^1.0.0" 3805 | } 3806 | }, 3807 | "shebang-regex": { 3808 | "version": "1.0.0", 3809 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3810 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3811 | "dev": true 3812 | }, 3813 | "shelljs": { 3814 | "version": "0.8.5", 3815 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", 3816 | "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", 3817 | "dev": true, 3818 | "requires": { 3819 | "glob": "^7.0.0", 3820 | "interpret": "^1.0.0", 3821 | "rechoir": "^0.6.2" 3822 | } 3823 | }, 3824 | "side-channel": { 3825 | "version": "1.0.4", 3826 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3827 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3828 | "dev": true, 3829 | "requires": { 3830 | "call-bind": "^1.0.0", 3831 | "get-intrinsic": "^1.0.2", 3832 | "object-inspect": "^1.9.0" 3833 | } 3834 | }, 3835 | "signal-exit": { 3836 | "version": "3.0.7", 3837 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3838 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3839 | "dev": true 3840 | }, 3841 | "spdx-correct": { 3842 | "version": "3.1.1", 3843 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 3844 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 3845 | "dev": true, 3846 | "requires": { 3847 | "spdx-expression-parse": "^3.0.0", 3848 | "spdx-license-ids": "^3.0.0" 3849 | } 3850 | }, 3851 | "spdx-exceptions": { 3852 | "version": "2.3.0", 3853 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 3854 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 3855 | "dev": true 3856 | }, 3857 | "spdx-expression-parse": { 3858 | "version": "3.0.1", 3859 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3860 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3861 | "dev": true, 3862 | "requires": { 3863 | "spdx-exceptions": "^2.1.0", 3864 | "spdx-license-ids": "^3.0.0" 3865 | } 3866 | }, 3867 | "spdx-license-ids": { 3868 | "version": "3.0.11", 3869 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", 3870 | "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", 3871 | "dev": true 3872 | }, 3873 | "stack-trace": { 3874 | "version": "0.0.10", 3875 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 3876 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 3877 | "dev": true 3878 | }, 3879 | "string_decoder": { 3880 | "version": "1.1.1", 3881 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3882 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3883 | "dev": true, 3884 | "requires": { 3885 | "safe-buffer": "~5.1.0" 3886 | } 3887 | }, 3888 | "string.prototype.trimend": { 3889 | "version": "1.0.4", 3890 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 3891 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 3892 | "dev": true, 3893 | "requires": { 3894 | "call-bind": "^1.0.2", 3895 | "define-properties": "^1.1.3" 3896 | } 3897 | }, 3898 | "string.prototype.trimstart": { 3899 | "version": "1.0.4", 3900 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 3901 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 3902 | "dev": true, 3903 | "requires": { 3904 | "call-bind": "^1.0.2", 3905 | "define-properties": "^1.1.3" 3906 | } 3907 | }, 3908 | "strip-eof": { 3909 | "version": "1.0.0", 3910 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3911 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 3912 | "dev": true 3913 | }, 3914 | "strip-indent": { 3915 | "version": "4.0.0", 3916 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", 3917 | "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", 3918 | "dev": true, 3919 | "requires": { 3920 | "min-indent": "^1.0.1" 3921 | } 3922 | }, 3923 | "supports-color": { 3924 | "version": "5.5.0", 3925 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3926 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3927 | "dev": true, 3928 | "requires": { 3929 | "has-flag": "^3.0.0" 3930 | } 3931 | }, 3932 | "supports-preserve-symlinks-flag": { 3933 | "version": "1.0.0", 3934 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3935 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3936 | "dev": true 3937 | }, 3938 | "tar-stream": { 3939 | "version": "1.6.2", 3940 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", 3941 | "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", 3942 | "dev": true, 3943 | "requires": { 3944 | "bl": "^1.0.0", 3945 | "buffer-alloc": "^1.2.0", 3946 | "end-of-stream": "^1.0.0", 3947 | "fs-constants": "^1.0.0", 3948 | "readable-stream": "^2.3.0", 3949 | "to-buffer": "^1.1.1", 3950 | "xtend": "^4.0.0" 3951 | } 3952 | }, 3953 | "tfx-cli": { 3954 | "version": "0.11.0", 3955 | "resolved": "https://registry.npmjs.org/tfx-cli/-/tfx-cli-0.11.0.tgz", 3956 | "integrity": "sha512-2dFEjwsKz7HZDhnCXlIzUCTnYyFGd7YYCoG5m1SEcemcg4BFt5DW1gge+qUc7cWZpAXdLhN6XJR42vPncJqn3A==", 3957 | "dev": true, 3958 | "requires": { 3959 | "app-root-path": "1.0.0", 3960 | "archiver": "2.0.3", 3961 | "async": "^1.4.0", 3962 | "azure-devops-node-api": "^10.2.2", 3963 | "clipboardy": "~1.2.3", 3964 | "colors": "~1.3.0", 3965 | "glob": "7.1.2", 3966 | "jju": "^1.4.0", 3967 | "json-in-place": "^1.0.1", 3968 | "jszip": "^3.7.1", 3969 | "lodash": "^4.17.21", 3970 | "minimist": "^1.2.5", 3971 | "mkdirp": "^1.0.4", 3972 | "onecolor": "^2.5.0", 3973 | "os-homedir": "^1.0.1", 3974 | "prompt": "^1.2.0", 3975 | "read": "^1.0.6", 3976 | "shelljs": "^0.8.5", 3977 | "tmp": "0.0.26", 3978 | "tracer": "0.7.4", 3979 | "util.promisify": "^1.0.0", 3980 | "uuid": "^3.0.1", 3981 | "validator": "^13.7.0", 3982 | "winreg": "0.0.12", 3983 | "xml2js": "^0.4.16" 3984 | } 3985 | }, 3986 | "tinytim": { 3987 | "version": "0.1.1", 3988 | "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", 3989 | "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=", 3990 | "dev": true 3991 | }, 3992 | "tmp": { 3993 | "version": "0.0.26", 3994 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.26.tgz", 3995 | "integrity": "sha1-nvqCDOKhD4H4l5VVus4/FVJs4fI=", 3996 | "dev": true, 3997 | "requires": { 3998 | "os-tmpdir": "~1.0.0" 3999 | } 4000 | }, 4001 | "to-buffer": { 4002 | "version": "1.1.1", 4003 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 4004 | "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", 4005 | "dev": true 4006 | }, 4007 | "tracer": { 4008 | "version": "0.7.4", 4009 | "resolved": "https://registry.npmjs.org/tracer/-/tracer-0.7.4.tgz", 4010 | "integrity": "sha1-d/oEN8+Ct2vNvNRLhHRHcuWeUlk=", 4011 | "dev": true, 4012 | "requires": { 4013 | "colors": "1.0.3", 4014 | "dateformat": "1.0.11", 4015 | "tinytim": "0.1.1" 4016 | }, 4017 | "dependencies": { 4018 | "colors": { 4019 | "version": "1.0.3", 4020 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 4021 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", 4022 | "dev": true 4023 | } 4024 | } 4025 | }, 4026 | "trim-newlines": { 4027 | "version": "4.0.2", 4028 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", 4029 | "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", 4030 | "dev": true 4031 | }, 4032 | "tunnel": { 4033 | "version": "0.0.6", 4034 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 4035 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 4036 | "dev": true 4037 | }, 4038 | "type-fest": { 4039 | "version": "1.4.0", 4040 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 4041 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", 4042 | "dev": true 4043 | }, 4044 | "typed-rest-client": { 4045 | "version": "1.8.6", 4046 | "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", 4047 | "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", 4048 | "dev": true, 4049 | "requires": { 4050 | "qs": "^6.9.1", 4051 | "tunnel": "0.0.6", 4052 | "underscore": "^1.12.1" 4053 | } 4054 | }, 4055 | "typescript": { 4056 | "version": "4.5.2", 4057 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", 4058 | "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", 4059 | "dev": true 4060 | }, 4061 | "unbox-primitive": { 4062 | "version": "1.0.1", 4063 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 4064 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 4065 | "dev": true, 4066 | "requires": { 4067 | "function-bind": "^1.1.1", 4068 | "has-bigints": "^1.0.1", 4069 | "has-symbols": "^1.0.2", 4070 | "which-boxed-primitive": "^1.0.2" 4071 | } 4072 | }, 4073 | "underscore": { 4074 | "version": "1.13.2", 4075 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", 4076 | "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", 4077 | "dev": true 4078 | }, 4079 | "util-deprecate": { 4080 | "version": "1.0.2", 4081 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4082 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4083 | "dev": true 4084 | }, 4085 | "util.promisify": { 4086 | "version": "1.1.1", 4087 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", 4088 | "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", 4089 | "dev": true, 4090 | "requires": { 4091 | "call-bind": "^1.0.0", 4092 | "define-properties": "^1.1.3", 4093 | "for-each": "^0.3.3", 4094 | "has-symbols": "^1.0.1", 4095 | "object.getownpropertydescriptors": "^2.1.1" 4096 | } 4097 | }, 4098 | "uuid": { 4099 | "version": "3.4.0", 4100 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 4101 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 4102 | "dev": true 4103 | }, 4104 | "validate-npm-package-license": { 4105 | "version": "3.0.4", 4106 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 4107 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 4108 | "dev": true, 4109 | "requires": { 4110 | "spdx-correct": "^3.0.0", 4111 | "spdx-expression-parse": "^3.0.0" 4112 | } 4113 | }, 4114 | "validator": { 4115 | "version": "13.7.0", 4116 | "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", 4117 | "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", 4118 | "dev": true 4119 | }, 4120 | "vss-web-extension-sdk": { 4121 | "version": "5.141.0", 4122 | "resolved": "https://registry.npmjs.org/vss-web-extension-sdk/-/vss-web-extension-sdk-5.141.0.tgz", 4123 | "integrity": "sha512-c/r/HWQh4hljKOSNQMiFoeICckKFfU/1nxDCVFhioDHOE8B0i5aJN9rrihGilgMXugzl8K5hBsZs42eFqd30AQ==", 4124 | "requires": { 4125 | "@types/jquery": ">=2.0.48", 4126 | "@types/jqueryui": ">=1.11.34", 4127 | "@types/knockout": "^3.4.49", 4128 | "@types/mousetrap": "~1.5.34", 4129 | "@types/q": "0.0.32", 4130 | "@types/react": "^15.6.12", 4131 | "@types/requirejs": ">=2.1.28" 4132 | }, 4133 | "dependencies": { 4134 | "@types/q": { 4135 | "version": "0.0.32", 4136 | "resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", 4137 | "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=" 4138 | } 4139 | } 4140 | }, 4141 | "walkdir": { 4142 | "version": "0.0.11", 4143 | "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", 4144 | "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", 4145 | "dev": true 4146 | }, 4147 | "which": { 4148 | "version": "1.3.1", 4149 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4150 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4151 | "dev": true, 4152 | "requires": { 4153 | "isexe": "^2.0.0" 4154 | } 4155 | }, 4156 | "which-boxed-primitive": { 4157 | "version": "1.0.2", 4158 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 4159 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 4160 | "dev": true, 4161 | "requires": { 4162 | "is-bigint": "^1.0.1", 4163 | "is-boolean-object": "^1.1.0", 4164 | "is-number-object": "^1.0.4", 4165 | "is-string": "^1.0.5", 4166 | "is-symbol": "^1.0.3" 4167 | } 4168 | }, 4169 | "winreg": { 4170 | "version": "0.0.12", 4171 | "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", 4172 | "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", 4173 | "dev": true 4174 | }, 4175 | "winston": { 4176 | "version": "2.4.5", 4177 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", 4178 | "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", 4179 | "dev": true, 4180 | "requires": { 4181 | "async": "~1.0.0", 4182 | "colors": "1.0.x", 4183 | "cycle": "1.0.x", 4184 | "eyes": "0.1.x", 4185 | "isstream": "0.1.x", 4186 | "stack-trace": "0.0.x" 4187 | }, 4188 | "dependencies": { 4189 | "async": { 4190 | "version": "1.0.0", 4191 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", 4192 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", 4193 | "dev": true 4194 | }, 4195 | "colors": { 4196 | "version": "1.0.3", 4197 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 4198 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", 4199 | "dev": true 4200 | } 4201 | } 4202 | }, 4203 | "wrappy": { 4204 | "version": "1.0.2", 4205 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4206 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 4207 | "dev": true 4208 | }, 4209 | "xml2js": { 4210 | "version": "0.4.23", 4211 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", 4212 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", 4213 | "dev": true, 4214 | "requires": { 4215 | "sax": ">=0.6.0", 4216 | "xmlbuilder": "~11.0.0" 4217 | } 4218 | }, 4219 | "xmlbuilder": { 4220 | "version": "11.0.1", 4221 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 4222 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 4223 | "dev": true 4224 | }, 4225 | "xtend": { 4226 | "version": "4.0.2", 4227 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 4228 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 4229 | "dev": true 4230 | }, 4231 | "yallist": { 4232 | "version": "2.1.2", 4233 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 4234 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 4235 | "dev": true 4236 | }, 4237 | "yargs-parser": { 4238 | "version": "20.2.9", 4239 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 4240 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 4241 | "dev": true 4242 | }, 4243 | "yocto-queue": { 4244 | "version": "0.1.0", 4245 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4246 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4247 | "dev": true 4248 | }, 4249 | "zip-stream": { 4250 | "version": "1.2.0", 4251 | "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", 4252 | "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", 4253 | "dev": true, 4254 | "requires": { 4255 | "archiver-utils": "^1.3.0", 4256 | "compress-commons": "^1.2.0", 4257 | "lodash": "^4.8.0", 4258 | "readable-stream": "^2.0.0" 4259 | } 4260 | } 4261 | } 4262 | } 4263 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0", 3 | "devDependencies": { 4 | "tfx-cli": "^0.11.0", 5 | "typescript": "^4.5.2" 6 | }, 7 | "scripts": { 8 | "build": "tsc -p .", 9 | "build:release": "tsc -p .", 10 | "package": "tfx extension create" 11 | }, 12 | "dependencies": { 13 | "q": "^1.5.1", 14 | "vss-web-extension-sdk": "^5.141.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # WSJF (Weighted Shortest Job First) 2 | 3 | Weighted Shortest Job First (WSJF) is a prioritization technique used in the Scaled Agile Framework (SAFe) to sequence work items based on their economic impact and size. It calculates the Cost of Delay (considering user value, time criticality, and risk reduction/opportunity enablement) divided by the job size to determine priority. WSJF helps teams maximize ROI by ensuring the most valuable tasks are tackled first, fostering efficient resource allocation and decision-making in agile environments. 4 | 5 | # Documentation 6 | 7 | For detailed instructions on using the WSJF (Weighted Shortest Job First) for Azure DevOps , please refer to the official documentation. You can access the comprehensive guide by clicking [Marketplace](https://marketplace.visualstudio.com/items?itemName=MS-Agile-SAFe.WSJF-extension). This resource provides step-by-step information to help you effectively utilize the WSJF features within your Azure DevOps environment. 8 | 9 | # Support 10 | 11 | ## How to file issues and get help 12 | 13 | This project uses [GitHub Issues](https://github.com/microsoft/AzureDevOps-WSJF-Extension/issues) to track bugs and feature requests. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or feature request as a new Issue. 14 | 15 | ## Microsoft Support Policy 16 | 17 | Support for this project is limited to the resources listed above. 18 | 19 | # Contributing 20 | 21 | We welcome contributions to improve the extension. If you would like to contribute, please fork the repository and create a pull request with your changes. Your 22 | contributions help enhance the functionality and usability of the extension for the entire community. 23 | 24 | **Note:** do not publish the extension as a public extension under a different publisher as this will create a clone of the extension and it will be unclear to the 25 | community which one to use. If you feel you don't want to contribute to this repository then publish a private version for your use-case. 26 | 27 | Check out https://learn.microsoft.com/en-us/azure/devops/extend/get-started to learn how to develop Azure DevOps extensions. 28 | 29 | ### Building the extention 30 | 31 | ```bash 32 | # Install node dependencies 33 | npm install 34 | 35 | # Build the extension 36 | npm run build 37 | ``` 38 | ## About Microsoft DevLabs 39 | 40 | Microsoft DevLabs is an outlet for experiments from Microsoft, experiments that represent some of the latest ideas around developer tools. Solutions in this 41 | category are designed for broad usage, and you are encouraged to use and provide feedback on them; however, these extensions are not supported nor are any commitments made as to their longevity. -------------------------------------------------------------------------------- /src/wsjf.tsx: -------------------------------------------------------------------------------- 1 | import Q = require("q"); 2 | 3 | import TFS_Wit_Contracts = require("TFS/WorkItemTracking/Contracts"); 4 | import TFS_Wit_Client = require("TFS/WorkItemTracking/RestClient"); 5 | import TFS_Wit_Services = require("TFS/WorkItemTracking/Services"); 6 | 7 | import { StoredFieldReferences } from "./wsjfModels"; 8 | 9 | function GetStoredFields(): IPromise { 10 | var deferred = Q.defer(); 11 | VSS.getService(VSS.ServiceIds.ExtensionData).then( 12 | (dataService: IExtensionDataService) => { 13 | dataService 14 | .getValue("storedFields") 15 | .then((storedFields: StoredFieldReferences) => { 16 | if (storedFields) { 17 | console.log("Retrieved fields from storage"); 18 | deferred.resolve(storedFields); 19 | } else { 20 | deferred.reject("Failed to retrieve fields from storage"); 21 | } 22 | }); 23 | } 24 | ); 25 | return deferred.promise; 26 | } 27 | 28 | function getWorkItemFormService() { 29 | return TFS_Wit_Services.WorkItemFormService.getService(); 30 | } 31 | 32 | function updateWSJFOnForm(storedFields: StoredFieldReferences) { 33 | getWorkItemFormService().then((service) => { 34 | service.getFields().then((fields: TFS_Wit_Contracts.WorkItemField[]) => { 35 | var matchingBusinessValueFields = fields.filter( 36 | (field) => field.referenceName === storedFields.bvField 37 | ); 38 | var matchingTimeCriticalityFields = fields.filter( 39 | (field) => field.referenceName === storedFields.tcField 40 | ); 41 | var matchingRROEValueFields = fields.filter( 42 | (field) => field.referenceName === storedFields.rvField 43 | ); 44 | var matchingEffortFields = fields.filter( 45 | (field) => field.referenceName === storedFields.effortField 46 | ); 47 | var matchingWSJFFields = fields.filter( 48 | (field) => field.referenceName === storedFields.wsjfField 49 | ); 50 | var roundTo: number = storedFields.roundTo; 51 | 52 | //If this work item type has WSJF, then update WSJF 53 | 54 | service 55 | .getFieldValues([ 56 | storedFields.bvField, 57 | storedFields.tcField, 58 | storedFields.rvField, 59 | storedFields.effortField, 60 | ]) 61 | .then((values) => { 62 | var businessValue = 63 | values[storedFields.bvField] !== undefined || NaN 64 | ? Number(values[storedFields.bvField]) 65 | : 0; 66 | var timeCriticality = 67 | values[storedFields.tcField] !== undefined || NaN 68 | ? Number(values[storedFields.tcField]) 69 | : 0; 70 | var rroevalue = 71 | values[storedFields.rvField] !== undefined || NaN 72 | ? Number(values[storedFields.rvField]) 73 | : 0; 74 | var effort = 75 | values[storedFields.effortField] !== undefined || NaN 76 | ? Number(values[storedFields.effortField]) 77 | : 0; 78 | 79 | var wsjf = 0; 80 | if (effort > 0) { 81 | wsjf = (businessValue + timeCriticality + rroevalue) / effort; 82 | if (roundTo > -1) { 83 | wsjf = 84 | Math.round(wsjf * Math.pow(10, roundTo)) / 85 | Math.pow(10, roundTo); 86 | } 87 | } 88 | 89 | service.setFieldValue(storedFields.wsjfField, wsjf); 90 | }); 91 | }); 92 | }); 93 | } 94 | 95 | function updateWSJFOnGrid( 96 | workItemId, 97 | storedFields: StoredFieldReferences 98 | ): IPromise { 99 | let wsjfFields = [ 100 | storedFields.bvField, 101 | storedFields.tcField, 102 | storedFields.rvField, 103 | storedFields.effortField, 104 | storedFields.wsjfField, 105 | ]; 106 | 107 | var deferred = Q.defer(); 108 | 109 | var client = TFS_Wit_Client.getClient(); 110 | client 111 | .getWorkItem(workItemId, wsjfFields) 112 | .then((workItem: TFS_Wit_Contracts.WorkItem) => { 113 | if ( 114 | storedFields.wsjfField !== undefined && 115 | storedFields.rvField !== undefined 116 | ) { 117 | var businessValue = Number(workItem.fields[storedFields.bvField]) || 0; 118 | 119 | var timeCriticality = 120 | Number(workItem.fields[storedFields.tcField]) || 0; 121 | 122 | var rroevalue = Number(workItem.fields[storedFields.rvField]) || 0; 123 | 124 | var effort = Number(workItem.fields[storedFields.effortField]) || 0; 125 | var roundTo: number = storedFields.roundTo; 126 | 127 | var wsjf = 0; 128 | if (effort > 0) { 129 | wsjf = (businessValue + timeCriticality + rroevalue) / effort; 130 | if (roundTo > -1) { 131 | wsjf = 132 | Math.round(wsjf * Math.pow(10, roundTo)) / Math.pow(10, roundTo); 133 | } 134 | } 135 | 136 | var document = [ 137 | { 138 | from: null, 139 | op: "add", 140 | path: "/fields/" + storedFields.wsjfField, 141 | value: wsjf, 142 | }, 143 | ]; 144 | 145 | // Only update the work item if the WSJF has changed 146 | if (wsjf != workItem.fields[storedFields.wsjfField]) { 147 | client 148 | .updateWorkItem(document, workItemId) 149 | .then((updatedWorkItem: TFS_Wit_Contracts.WorkItem) => { 150 | deferred.resolve(updatedWorkItem); 151 | }); 152 | } else { 153 | deferred.reject("No relevant change to work item"); 154 | } 155 | } else { 156 | deferred.reject( 157 | "Unable to calculate WSJF, please configure fields on the collection settings page." 158 | ); 159 | } 160 | }); 161 | 162 | return deferred.promise; 163 | } 164 | 165 | var formObserver = (context) => { 166 | return { 167 | onFieldChanged: function (args) { 168 | GetStoredFields().then( 169 | (storedFields: StoredFieldReferences) => { 170 | if ( 171 | storedFields && 172 | storedFields.bvField && 173 | storedFields.effortField && 174 | storedFields.tcField && 175 | storedFields.rvField && 176 | storedFields.wsjfField 177 | ) { 178 | //If one of fields in the calculation changes 179 | if ( 180 | args.changedFields[storedFields.bvField] !== undefined || 181 | args.changedFields[storedFields.tcField] !== undefined || 182 | args.changedFields[storedFields.rvField] !== undefined || 183 | args.changedFields[storedFields.effortField] !== undefined 184 | ) { 185 | updateWSJFOnForm(storedFields); 186 | } 187 | } else { 188 | console.log( 189 | "Unable to calculate WSJF, please configure fields on the collection settings page." 190 | ); 191 | } 192 | }, 193 | (reason) => { 194 | console.log(reason); 195 | } 196 | ); 197 | }, 198 | 199 | onLoaded: function (args) { 200 | GetStoredFields().then( 201 | (storedFields: StoredFieldReferences) => { 202 | if ( 203 | storedFields && 204 | storedFields.bvField && 205 | storedFields.effortField && 206 | storedFields.tcField && 207 | storedFields.rvField && 208 | storedFields.wsjfField 209 | ) { 210 | updateWSJFOnForm(storedFields); 211 | } else { 212 | console.log( 213 | "Unable to calculate WSJF, please configure fields on the collection settings page." 214 | ); 215 | } 216 | }, 217 | (reason) => { 218 | console.log(reason); 219 | } 220 | ); 221 | }, 222 | }; 223 | }; 224 | 225 | var contextProvider = (context) => { 226 | return { 227 | execute: function (args) { 228 | GetStoredFields().then( 229 | (storedFields: StoredFieldReferences) => { 230 | if ( 231 | storedFields && 232 | storedFields.bvField && 233 | storedFields.effortField && 234 | storedFields.tcField && 235 | storedFields.rvField && 236 | storedFields.wsjfField 237 | ) { 238 | var workItemIds = args.workItemIds; 239 | var promises = []; 240 | $.each(workItemIds, function (index, workItemId) { 241 | promises.push(updateWSJFOnGrid(workItemId, storedFields)); 242 | }); 243 | 244 | // Refresh view 245 | Q.all(promises).then(() => { 246 | VSS.getService(VSS.ServiceIds.Navigation).then( 247 | (navigationService: IHostNavigationService) => { 248 | navigationService.reload(); 249 | } 250 | ); 251 | }); 252 | } else { 253 | console.log( 254 | "Unable to calculate WSJF, please configure fields on the collection settings page." 255 | ); 256 | //TODO: Disable context menu item 257 | } 258 | }, 259 | (reason) => { 260 | console.log(reason); 261 | } 262 | ); 263 | }, 264 | }; 265 | }; 266 | 267 | let extensionContext = VSS.getExtensionContext(); 268 | VSS.register( 269 | `${extensionContext.publisherId}.${extensionContext.extensionId}.wsjf-work-item-form-observer`, 270 | formObserver 271 | ); 272 | VSS.register( 273 | `${extensionContext.publisherId}.${extensionContext.extensionId}.wsjf-contextMenu`, 274 | contextProvider 275 | ); 276 | 277 | -------------------------------------------------------------------------------- /src/wsjfModels.tsx: -------------------------------------------------------------------------------- 1 | 2 | export interface StoredFieldReferences { 3 | bvField: string, 4 | tcField: string, 5 | rvField: string, 6 | effortField: string, 7 | wsjfField: string 8 | roundTo: number 9 | } -------------------------------------------------------------------------------- /src/wsjfSettings.tsx: -------------------------------------------------------------------------------- 1 | import Q = require("q"); 2 | import Controls = require("VSS/Controls"); 3 | import {Combo, IComboOptions} from "VSS/Controls/Combos"; 4 | import Menus = require("VSS/Controls/Menus"); 5 | import WIT_Client = require("TFS/WorkItemTracking/RestClient"); 6 | import Contracts = require("TFS/WorkItemTracking/Contracts"); 7 | import Utils_string = require("VSS/Utils/String"); 8 | 9 | import { StoredFieldReferences } from "./wsjfModels"; 10 | 11 | export class Settings { 12 | private _changeMade = false; 13 | private _selectedFields:StoredFieldReferences; 14 | private _fields:Contracts.WorkItemField[]; 15 | private _menuBar = null; 16 | 17 | private getSortedFieldsList():IPromise { 18 | var deferred = Q.defer(); 19 | var client = WIT_Client.getClient(); 20 | client.getFields().then((fields: Contracts.WorkItemField[]) => { 21 | this._fields = fields.filter(field => (field.type === Contracts.FieldType.Double || field.type === Contracts.FieldType.Integer)) 22 | var sortedFields = this._fields.map(field => field.name).sort((field1,field2) => { 23 | if (field1 > field2) { 24 | return 1; 25 | } 26 | 27 | if (field1 < field2) { 28 | return -1; 29 | } 30 | 31 | return 0; 32 | }); 33 | deferred.resolve(sortedFields); 34 | }); 35 | 36 | return deferred.promise; 37 | } 38 | 39 | private getFieldReferenceName(fieldName): string { 40 | let matchingFields = this._fields.filter(field => field.name === fieldName); 41 | return (matchingFields.length > 0) ? matchingFields[0].referenceName : null; 42 | } 43 | 44 | private getFieldName(fieldReferenceName): string { 45 | let matchingFields = this._fields.filter(field => field.referenceName === fieldReferenceName); 46 | return (matchingFields.length > 0) ? matchingFields[0].name : null; 47 | } 48 | 49 | private getComboOptions(id, fieldsList, initialField):IComboOptions { 50 | var that = this; 51 | return { 52 | id: id, 53 | mode: "drop", 54 | source: fieldsList, 55 | enabled: true, 56 | value: that.getFieldName(initialField), 57 | change: function () { 58 | that._changeMade = true; 59 | let fieldName = this.getText(); 60 | let fieldReferenceName: string = (this.getSelectedIndex() < 0) ? null : that.getFieldReferenceName(fieldName); 61 | 62 | switch (this._id) { 63 | case "businessValue": 64 | that._selectedFields.bvField = fieldReferenceName; 65 | break; 66 | case "timeCriticality": 67 | that._selectedFields.tcField = fieldReferenceName; 68 | break; 69 | case "rroevalue": 70 | that._selectedFields.rvField = fieldReferenceName; 71 | break; 72 | case "effort": 73 | that._selectedFields.effortField = fieldReferenceName; 74 | break; 75 | case "wsjf": 76 | that._selectedFields.wsjfField = fieldReferenceName; 77 | break; 78 | } 79 | that.updateSaveButton(); 80 | } 81 | }; 82 | } 83 | 84 | private getNumeralComboOptions(id, source: number[], initialValue: number):IComboOptions { 85 | var that = this; 86 | const currentInitialValue = initialValue ? initialValue.toString(): null 87 | return { 88 | id: id, 89 | mode: "drop", 90 | source: source, 91 | enabled: true, 92 | value: currentInitialValue, 93 | change: function () { 94 | that._changeMade = true; 95 | let num: number = +(this.getText()); 96 | 97 | switch (this._id) { 98 | case "roundTo": 99 | that._selectedFields.roundTo = num; 100 | break; 101 | } 102 | that.updateSaveButton(); 103 | } 104 | }; 105 | } 106 | 107 | public initialize() { 108 | let hubContent = $(".hub-content"); 109 | let uri = VSS.getWebContext().collection.uri + "_admin/_process"; 110 | 111 | let descriptionText = "{0} is a concept of {1} used for weighing the cost of delay with job size."; 112 | let header = $("
").addClass("description-text bowtie").appendTo(hubContent); 113 | header = $("
").addClass("description-text bowtie").appendTo(hubContent); 114 | header.html(Utils_string.format(descriptionText)); 115 | 116 | $("").addClass("description-image").appendTo(hubContent); 117 | 118 | descriptionText = "You must add a custom decimal field from the {0} to each work item type you wish to compute WSJF."; 119 | header = $("
").addClass("description-text bowtie").appendTo(hubContent); 120 | header.html(Utils_string.format(descriptionText, "process hub")); 121 | 122 | let container = $("
").addClass("wsjf-settings-container").appendTo(hubContent); 123 | 124 | var menubarOptions = { 125 | items: [ 126 | { id: "save", icon: "icon-save", title: "Save the selected field" } 127 | ], 128 | executeAction:(args) => { 129 | var command = args.get_commandName(); 130 | switch (command) { 131 | case "save": 132 | this.save(); 133 | break; 134 | default: 135 | console.log("Unhandled action: " + command); 136 | break; 137 | } 138 | } 139 | }; 140 | this._menuBar = Controls.create(Menus.MenuBar, container, menubarOptions); 141 | 142 | let bvContainer = $("
").addClass("settings-control").appendTo(container); 143 | $("