├── .editorconfig ├── .github └── workflows │ └── codeql-analysis.yml ├── .gitignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src ├── excel-markdown-helpers.ts ├── excel-markdown-tables.ts ├── extension.ts ├── interfaces.ts ├── table-alignment-syntax.ts └── test │ ├── runTest.ts │ └── suite │ ├── excel-markdown-helpers.test.ts │ ├── excel-markdown-tables.test.ts │ └── index.ts ├── tsconfig.json └── vsc-extension-quickstart.md /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | [*.md] 11 | trim_trailing_whitespace = false 12 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ master ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ master ] 20 | schedule: 21 | - cron: '22 17 * * 1' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'javascript' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] 37 | # Learn more: 38 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed 39 | 40 | steps: 41 | - name: Checkout repository 42 | uses: actions/checkout@v2 43 | 44 | # Initializes the CodeQL tools for scanning. 45 | - name: Initialize CodeQL 46 | uses: github/codeql-action/init@v1 47 | with: 48 | languages: ${{ matrix.language }} 49 | # If you wish to specify custom queries, you can do so here or in a config file. 50 | # By default, queries listed here will override any specified in a config file. 51 | # Prefix the list here with "+" to use these queries and those in the config file. 52 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 53 | 54 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 55 | # If this step fails, then you should remove it and run the build manually (see below) 56 | - name: Autobuild 57 | uses: github/codeql-action/autobuild@v1 58 | 59 | # ℹ️ Command-line programs to run using the OS shell. 60 | # 📚 https://git.io/JvXDl 61 | 62 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 63 | # and modify them (or add more) to build your code if your project 64 | # uses a compiled language 65 | 66 | #- run: | 67 | # make bootstrap 68 | # make release 69 | 70 | - name: Perform CodeQL Analysis 71 | uses: github/codeql-action/analyze@v1 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | .vscode-test/ 4 | .vsix 5 | coverage/ 6 | .nyc_output/ 7 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "${defaultBuildTask}" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "${defaultBuildTask}" 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | } 9 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": "build" 15 | }, 16 | { 17 | "type": "npm", 18 | "script": "compile", 19 | "group": { 20 | "kind": "build", 21 | "isDefault": true 22 | } 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | out/**/*.map 5 | src/** 6 | .gitignore 7 | tsconfig.json 8 | vsc-extension-quickstart.md 9 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to the "excel-to-markdown-table" extension will be documented in this file. 3 | 4 | ## [1.2.1] - 2020-04-06 5 | - Fixed bug with extension not auto-loading upon calling it 6 | 7 | ## [1.2.0] - 2020-01-19 8 | - Adds support for newlines within cells 9 | 10 | ## [1.1.0] - 2018-09-23 11 | - Refactoring to separate files (@tylerhaigh) 12 | - Added test cases (@tylerhaigh) 13 | 14 | ## [1.0.0] - 2018-09-22 15 | - Fixes bug with trailing null cell (@deshorsley) 16 | - Partial test coverage in place (@deshorsley) 17 | 18 | ## [0.3.1] - 2018-02-18 19 | - Clarified readme as to when the extension is activated 20 | 21 | ## [0.3.0] - 2018-02-04 22 | - Added extension command 23 | - Added keyboard shortcut 24 | - Removed minimum table size constraints 25 | 26 | ## [0.2.0] - 2018-02-03 27 | - Fixed versioning 28 | - Now only considers data with >1 columns as a table 29 | - Added GIF to readme 30 | 31 | ## [0.1.0] - 2018-02-03 32 | - Added table format checker to avoid formatting non Excel clipboard pastes 33 | - Cleaned up logic and made it a bit prettier 34 | 35 | ## [0.0.1] - 2018-02-02 36 | - Initial release -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Sebastian Holmqvist 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # excel-to-markdown-table README 2 | 3 | This VSCode extension converts Excel data to Markdown table format. Available through command `Excel to Markdown table` and keyboard shortcut `Shift+Alt+V`. 4 | 5 | ![excel-to-markdown-table](https://user-images.githubusercontent.com/1297882/35767301-2fd0c490-08ea-11e8-89d7-933238fed3f2.gif) 6 | 7 | Optionally align columns by prepending the headers with `^[lcr]` for left, center and right alignment. E.g `^lHeader` for left aligning the columns named *Header*. 8 | 9 | Based on https://github.com/thisdavej/copy-excel-paste-markdown and the work of @jonmagic and @thisdavej 10 | 11 | ## Contributors 12 | * @deshorsley for bug fix and test coverage! 13 | * @tylerhaigh for refactoring and test coverage! 14 | * @usagi for new line handling and refactoring! 15 | * @trackds for migrating to internal VSCode clipboard API 16 | 17 | ## Known Issues 18 | * None 19 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "excel-to-markdown-table", 3 | "version": "1.3.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "excel-to-markdown-table", 9 | "version": "1.3.0", 10 | "devDependencies": { 11 | "@types/mocha": "^5.2.7", 12 | "@types/node": "^13.13.52", 13 | "@types/vscode": "^1.59.0", 14 | "nyc": "^15.1.0", 15 | "source-map-support": "^0.5.19", 16 | "ts-node": "^8.10.2", 17 | "typescript": "^3.9.10", 18 | "vscode-test": "^1.6.1" 19 | }, 20 | "engines": { 21 | "vscode": "^1.59.0" 22 | } 23 | }, 24 | "node_modules/@babel/code-frame": { 25 | "version": "7.22.13", 26 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", 27 | "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", 28 | "dev": true, 29 | "dependencies": { 30 | "@babel/highlight": "^7.22.13", 31 | "chalk": "^2.4.2" 32 | }, 33 | "engines": { 34 | "node": ">=6.9.0" 35 | } 36 | }, 37 | "node_modules/@babel/compat-data": { 38 | "version": "7.15.0", 39 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", 40 | "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", 41 | "dev": true, 42 | "engines": { 43 | "node": ">=6.9.0" 44 | } 45 | }, 46 | "node_modules/@babel/core": { 47 | "version": "7.15.0", 48 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", 49 | "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", 50 | "dev": true, 51 | "dependencies": { 52 | "@babel/code-frame": "^7.14.5", 53 | "@babel/generator": "^7.15.0", 54 | "@babel/helper-compilation-targets": "^7.15.0", 55 | "@babel/helper-module-transforms": "^7.15.0", 56 | "@babel/helpers": "^7.14.8", 57 | "@babel/parser": "^7.15.0", 58 | "@babel/template": "^7.14.5", 59 | "@babel/traverse": "^7.15.0", 60 | "@babel/types": "^7.15.0", 61 | "convert-source-map": "^1.7.0", 62 | "debug": "^4.1.0", 63 | "gensync": "^1.0.0-beta.2", 64 | "json5": "^2.1.2", 65 | "semver": "^6.3.0", 66 | "source-map": "^0.5.0" 67 | }, 68 | "engines": { 69 | "node": ">=6.9.0" 70 | }, 71 | "funding": { 72 | "type": "opencollective", 73 | "url": "https://opencollective.com/babel" 74 | } 75 | }, 76 | "node_modules/@babel/generator": { 77 | "version": "7.23.0", 78 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", 79 | "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", 80 | "dev": true, 81 | "dependencies": { 82 | "@babel/types": "^7.23.0", 83 | "@jridgewell/gen-mapping": "^0.3.2", 84 | "@jridgewell/trace-mapping": "^0.3.17", 85 | "jsesc": "^2.5.1" 86 | }, 87 | "engines": { 88 | "node": ">=6.9.0" 89 | } 90 | }, 91 | "node_modules/@babel/helper-compilation-targets": { 92 | "version": "7.15.0", 93 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", 94 | "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", 95 | "dev": true, 96 | "dependencies": { 97 | "@babel/compat-data": "^7.15.0", 98 | "@babel/helper-validator-option": "^7.14.5", 99 | "browserslist": "^4.16.6", 100 | "semver": "^6.3.0" 101 | }, 102 | "engines": { 103 | "node": ">=6.9.0" 104 | }, 105 | "peerDependencies": { 106 | "@babel/core": "^7.0.0" 107 | } 108 | }, 109 | "node_modules/@babel/helper-environment-visitor": { 110 | "version": "7.22.20", 111 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", 112 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", 113 | "dev": true, 114 | "engines": { 115 | "node": ">=6.9.0" 116 | } 117 | }, 118 | "node_modules/@babel/helper-function-name": { 119 | "version": "7.23.0", 120 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", 121 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", 122 | "dev": true, 123 | "dependencies": { 124 | "@babel/template": "^7.22.15", 125 | "@babel/types": "^7.23.0" 126 | }, 127 | "engines": { 128 | "node": ">=6.9.0" 129 | } 130 | }, 131 | "node_modules/@babel/helper-hoist-variables": { 132 | "version": "7.22.5", 133 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", 134 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", 135 | "dev": true, 136 | "dependencies": { 137 | "@babel/types": "^7.22.5" 138 | }, 139 | "engines": { 140 | "node": ">=6.9.0" 141 | } 142 | }, 143 | "node_modules/@babel/helper-member-expression-to-functions": { 144 | "version": "7.15.0", 145 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", 146 | "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", 147 | "dev": true, 148 | "dependencies": { 149 | "@babel/types": "^7.15.0" 150 | }, 151 | "engines": { 152 | "node": ">=6.9.0" 153 | } 154 | }, 155 | "node_modules/@babel/helper-module-imports": { 156 | "version": "7.14.5", 157 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", 158 | "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", 159 | "dev": true, 160 | "dependencies": { 161 | "@babel/types": "^7.14.5" 162 | }, 163 | "engines": { 164 | "node": ">=6.9.0" 165 | } 166 | }, 167 | "node_modules/@babel/helper-module-transforms": { 168 | "version": "7.15.0", 169 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", 170 | "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", 171 | "dev": true, 172 | "dependencies": { 173 | "@babel/helper-module-imports": "^7.14.5", 174 | "@babel/helper-replace-supers": "^7.15.0", 175 | "@babel/helper-simple-access": "^7.14.8", 176 | "@babel/helper-split-export-declaration": "^7.14.5", 177 | "@babel/helper-validator-identifier": "^7.14.9", 178 | "@babel/template": "^7.14.5", 179 | "@babel/traverse": "^7.15.0", 180 | "@babel/types": "^7.15.0" 181 | }, 182 | "engines": { 183 | "node": ">=6.9.0" 184 | } 185 | }, 186 | "node_modules/@babel/helper-optimise-call-expression": { 187 | "version": "7.14.5", 188 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", 189 | "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", 190 | "dev": true, 191 | "dependencies": { 192 | "@babel/types": "^7.14.5" 193 | }, 194 | "engines": { 195 | "node": ">=6.9.0" 196 | } 197 | }, 198 | "node_modules/@babel/helper-replace-supers": { 199 | "version": "7.15.0", 200 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", 201 | "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", 202 | "dev": true, 203 | "dependencies": { 204 | "@babel/helper-member-expression-to-functions": "^7.15.0", 205 | "@babel/helper-optimise-call-expression": "^7.14.5", 206 | "@babel/traverse": "^7.15.0", 207 | "@babel/types": "^7.15.0" 208 | }, 209 | "engines": { 210 | "node": ">=6.9.0" 211 | } 212 | }, 213 | "node_modules/@babel/helper-simple-access": { 214 | "version": "7.14.8", 215 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", 216 | "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", 217 | "dev": true, 218 | "dependencies": { 219 | "@babel/types": "^7.14.8" 220 | }, 221 | "engines": { 222 | "node": ">=6.9.0" 223 | } 224 | }, 225 | "node_modules/@babel/helper-split-export-declaration": { 226 | "version": "7.22.6", 227 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", 228 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", 229 | "dev": true, 230 | "dependencies": { 231 | "@babel/types": "^7.22.5" 232 | }, 233 | "engines": { 234 | "node": ">=6.9.0" 235 | } 236 | }, 237 | "node_modules/@babel/helper-string-parser": { 238 | "version": "7.22.5", 239 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", 240 | "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", 241 | "dev": true, 242 | "engines": { 243 | "node": ">=6.9.0" 244 | } 245 | }, 246 | "node_modules/@babel/helper-validator-identifier": { 247 | "version": "7.22.20", 248 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 249 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 250 | "dev": true, 251 | "engines": { 252 | "node": ">=6.9.0" 253 | } 254 | }, 255 | "node_modules/@babel/helper-validator-option": { 256 | "version": "7.14.5", 257 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", 258 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", 259 | "dev": true, 260 | "engines": { 261 | "node": ">=6.9.0" 262 | } 263 | }, 264 | "node_modules/@babel/helpers": { 265 | "version": "7.15.3", 266 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", 267 | "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", 268 | "dev": true, 269 | "dependencies": { 270 | "@babel/template": "^7.14.5", 271 | "@babel/traverse": "^7.15.0", 272 | "@babel/types": "^7.15.0" 273 | }, 274 | "engines": { 275 | "node": ">=6.9.0" 276 | } 277 | }, 278 | "node_modules/@babel/highlight": { 279 | "version": "7.22.20", 280 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", 281 | "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", 282 | "dev": true, 283 | "dependencies": { 284 | "@babel/helper-validator-identifier": "^7.22.20", 285 | "chalk": "^2.4.2", 286 | "js-tokens": "^4.0.0" 287 | }, 288 | "engines": { 289 | "node": ">=6.9.0" 290 | } 291 | }, 292 | "node_modules/@babel/parser": { 293 | "version": "7.23.0", 294 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", 295 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", 296 | "dev": true, 297 | "bin": { 298 | "parser": "bin/babel-parser.js" 299 | }, 300 | "engines": { 301 | "node": ">=6.0.0" 302 | } 303 | }, 304 | "node_modules/@babel/template": { 305 | "version": "7.22.15", 306 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", 307 | "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", 308 | "dev": true, 309 | "dependencies": { 310 | "@babel/code-frame": "^7.22.13", 311 | "@babel/parser": "^7.22.15", 312 | "@babel/types": "^7.22.15" 313 | }, 314 | "engines": { 315 | "node": ">=6.9.0" 316 | } 317 | }, 318 | "node_modules/@babel/traverse": { 319 | "version": "7.23.2", 320 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", 321 | "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", 322 | "dev": true, 323 | "dependencies": { 324 | "@babel/code-frame": "^7.22.13", 325 | "@babel/generator": "^7.23.0", 326 | "@babel/helper-environment-visitor": "^7.22.20", 327 | "@babel/helper-function-name": "^7.23.0", 328 | "@babel/helper-hoist-variables": "^7.22.5", 329 | "@babel/helper-split-export-declaration": "^7.22.6", 330 | "@babel/parser": "^7.23.0", 331 | "@babel/types": "^7.23.0", 332 | "debug": "^4.1.0", 333 | "globals": "^11.1.0" 334 | }, 335 | "engines": { 336 | "node": ">=6.9.0" 337 | } 338 | }, 339 | "node_modules/@babel/types": { 340 | "version": "7.23.0", 341 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", 342 | "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", 343 | "dev": true, 344 | "dependencies": { 345 | "@babel/helper-string-parser": "^7.22.5", 346 | "@babel/helper-validator-identifier": "^7.22.20", 347 | "to-fast-properties": "^2.0.0" 348 | }, 349 | "engines": { 350 | "node": ">=6.9.0" 351 | } 352 | }, 353 | "node_modules/@istanbuljs/load-nyc-config": { 354 | "version": "1.1.0", 355 | "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", 356 | "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", 357 | "dev": true, 358 | "dependencies": { 359 | "camelcase": "^5.3.1", 360 | "find-up": "^4.1.0", 361 | "get-package-type": "^0.1.0", 362 | "js-yaml": "^3.13.1", 363 | "resolve-from": "^5.0.0" 364 | }, 365 | "engines": { 366 | "node": ">=8" 367 | } 368 | }, 369 | "node_modules/@istanbuljs/schema": { 370 | "version": "0.1.3", 371 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 372 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 373 | "dev": true, 374 | "engines": { 375 | "node": ">=8" 376 | } 377 | }, 378 | "node_modules/@jridgewell/gen-mapping": { 379 | "version": "0.3.3", 380 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 381 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 382 | "dev": true, 383 | "dependencies": { 384 | "@jridgewell/set-array": "^1.0.1", 385 | "@jridgewell/sourcemap-codec": "^1.4.10", 386 | "@jridgewell/trace-mapping": "^0.3.9" 387 | }, 388 | "engines": { 389 | "node": ">=6.0.0" 390 | } 391 | }, 392 | "node_modules/@jridgewell/resolve-uri": { 393 | "version": "3.1.1", 394 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 395 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 396 | "dev": true, 397 | "engines": { 398 | "node": ">=6.0.0" 399 | } 400 | }, 401 | "node_modules/@jridgewell/set-array": { 402 | "version": "1.1.2", 403 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 404 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 405 | "dev": true, 406 | "engines": { 407 | "node": ">=6.0.0" 408 | } 409 | }, 410 | "node_modules/@jridgewell/sourcemap-codec": { 411 | "version": "1.4.15", 412 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 413 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 414 | "dev": true 415 | }, 416 | "node_modules/@jridgewell/trace-mapping": { 417 | "version": "0.3.19", 418 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", 419 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", 420 | "dev": true, 421 | "dependencies": { 422 | "@jridgewell/resolve-uri": "^3.1.0", 423 | "@jridgewell/sourcemap-codec": "^1.4.14" 424 | } 425 | }, 426 | "node_modules/@tootallnate/once": { 427 | "version": "1.1.2", 428 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 429 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 430 | "dev": true, 431 | "engines": { 432 | "node": ">= 6" 433 | } 434 | }, 435 | "node_modules/@types/mocha": { 436 | "version": "5.2.7", 437 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", 438 | "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", 439 | "dev": true 440 | }, 441 | "node_modules/@types/node": { 442 | "version": "13.13.52", 443 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz", 444 | "integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==", 445 | "dev": true 446 | }, 447 | "node_modules/@types/vscode": { 448 | "version": "1.59.0", 449 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.59.0.tgz", 450 | "integrity": "sha512-Zg38rusx2nU6gy6QdF7v4iqgxNfxzlBlDhrRCjOiPQp+sfaNrp3f9J6OHIhpGNN1oOAca4+9Hq0+8u3jwzPMlQ==", 451 | "dev": true 452 | }, 453 | "node_modules/agent-base": { 454 | "version": "6.0.2", 455 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 456 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 457 | "dev": true, 458 | "dependencies": { 459 | "debug": "4" 460 | }, 461 | "engines": { 462 | "node": ">= 6.0.0" 463 | } 464 | }, 465 | "node_modules/aggregate-error": { 466 | "version": "3.1.0", 467 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 468 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 469 | "dev": true, 470 | "dependencies": { 471 | "clean-stack": "^2.0.0", 472 | "indent-string": "^4.0.0" 473 | }, 474 | "engines": { 475 | "node": ">=8" 476 | } 477 | }, 478 | "node_modules/ansi-regex": { 479 | "version": "5.0.1", 480 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 481 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 482 | "dev": true, 483 | "engines": { 484 | "node": ">=8" 485 | } 486 | }, 487 | "node_modules/ansi-styles": { 488 | "version": "3.2.1", 489 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 490 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 491 | "dev": true, 492 | "dependencies": { 493 | "color-convert": "^1.9.0" 494 | }, 495 | "engines": { 496 | "node": ">=4" 497 | } 498 | }, 499 | "node_modules/append-transform": { 500 | "version": "2.0.0", 501 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", 502 | "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", 503 | "dev": true, 504 | "dependencies": { 505 | "default-require-extensions": "^3.0.0" 506 | }, 507 | "engines": { 508 | "node": ">=8" 509 | } 510 | }, 511 | "node_modules/archy": { 512 | "version": "1.0.0", 513 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 514 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 515 | "dev": true 516 | }, 517 | "node_modules/arg": { 518 | "version": "4.1.3", 519 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 520 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 521 | "dev": true 522 | }, 523 | "node_modules/argparse": { 524 | "version": "1.0.10", 525 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 526 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 527 | "dev": true, 528 | "dependencies": { 529 | "sprintf-js": "~1.0.2" 530 | } 531 | }, 532 | "node_modules/balanced-match": { 533 | "version": "1.0.2", 534 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 535 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 536 | "dev": true 537 | }, 538 | "node_modules/big-integer": { 539 | "version": "1.6.48", 540 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", 541 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", 542 | "dev": true, 543 | "engines": { 544 | "node": ">=0.6" 545 | } 546 | }, 547 | "node_modules/binary": { 548 | "version": "0.3.0", 549 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", 550 | "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", 551 | "dev": true, 552 | "dependencies": { 553 | "buffers": "~0.1.1", 554 | "chainsaw": "~0.1.0" 555 | }, 556 | "engines": { 557 | "node": "*" 558 | } 559 | }, 560 | "node_modules/bluebird": { 561 | "version": "3.4.7", 562 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", 563 | "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", 564 | "dev": true 565 | }, 566 | "node_modules/brace-expansion": { 567 | "version": "1.1.11", 568 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 569 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 570 | "dev": true, 571 | "dependencies": { 572 | "balanced-match": "^1.0.0", 573 | "concat-map": "0.0.1" 574 | } 575 | }, 576 | "node_modules/browserslist": { 577 | "version": "4.16.7", 578 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz", 579 | "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==", 580 | "dev": true, 581 | "dependencies": { 582 | "caniuse-lite": "^1.0.30001248", 583 | "colorette": "^1.2.2", 584 | "electron-to-chromium": "^1.3.793", 585 | "escalade": "^3.1.1", 586 | "node-releases": "^1.1.73" 587 | }, 588 | "bin": { 589 | "browserslist": "cli.js" 590 | }, 591 | "engines": { 592 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 593 | }, 594 | "funding": { 595 | "type": "opencollective", 596 | "url": "https://opencollective.com/browserslist" 597 | } 598 | }, 599 | "node_modules/buffer-from": { 600 | "version": "1.1.2", 601 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 602 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 603 | "dev": true 604 | }, 605 | "node_modules/buffer-indexof-polyfill": { 606 | "version": "1.0.2", 607 | "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", 608 | "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", 609 | "dev": true, 610 | "engines": { 611 | "node": ">=0.10" 612 | } 613 | }, 614 | "node_modules/buffers": { 615 | "version": "0.1.1", 616 | "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", 617 | "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", 618 | "dev": true, 619 | "engines": { 620 | "node": ">=0.2.0" 621 | } 622 | }, 623 | "node_modules/caching-transform": { 624 | "version": "4.0.0", 625 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", 626 | "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", 627 | "dev": true, 628 | "dependencies": { 629 | "hasha": "^5.0.0", 630 | "make-dir": "^3.0.0", 631 | "package-hash": "^4.0.0", 632 | "write-file-atomic": "^3.0.0" 633 | }, 634 | "engines": { 635 | "node": ">=8" 636 | } 637 | }, 638 | "node_modules/camelcase": { 639 | "version": "5.3.1", 640 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 641 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 642 | "dev": true, 643 | "engines": { 644 | "node": ">=6" 645 | } 646 | }, 647 | "node_modules/caniuse-lite": { 648 | "version": "1.0.30001251", 649 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", 650 | "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==", 651 | "dev": true, 652 | "funding": { 653 | "type": "opencollective", 654 | "url": "https://opencollective.com/browserslist" 655 | } 656 | }, 657 | "node_modules/chainsaw": { 658 | "version": "0.1.0", 659 | "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", 660 | "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", 661 | "dev": true, 662 | "dependencies": { 663 | "traverse": ">=0.3.0 <0.4" 664 | }, 665 | "engines": { 666 | "node": "*" 667 | } 668 | }, 669 | "node_modules/chalk": { 670 | "version": "2.4.2", 671 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 672 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 673 | "dev": true, 674 | "dependencies": { 675 | "ansi-styles": "^3.2.1", 676 | "escape-string-regexp": "^1.0.5", 677 | "supports-color": "^5.3.0" 678 | }, 679 | "engines": { 680 | "node": ">=4" 681 | } 682 | }, 683 | "node_modules/clean-stack": { 684 | "version": "2.2.0", 685 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 686 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 687 | "dev": true, 688 | "engines": { 689 | "node": ">=6" 690 | } 691 | }, 692 | "node_modules/cliui": { 693 | "version": "6.0.0", 694 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 695 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 696 | "dev": true, 697 | "dependencies": { 698 | "string-width": "^4.2.0", 699 | "strip-ansi": "^6.0.0", 700 | "wrap-ansi": "^6.2.0" 701 | } 702 | }, 703 | "node_modules/color-convert": { 704 | "version": "1.9.3", 705 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 706 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 707 | "dev": true, 708 | "dependencies": { 709 | "color-name": "1.1.3" 710 | } 711 | }, 712 | "node_modules/color-name": { 713 | "version": "1.1.3", 714 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 715 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 716 | "dev": true 717 | }, 718 | "node_modules/colorette": { 719 | "version": "1.3.0", 720 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", 721 | "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", 722 | "dev": true 723 | }, 724 | "node_modules/commondir": { 725 | "version": "1.0.1", 726 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 727 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 728 | "dev": true 729 | }, 730 | "node_modules/concat-map": { 731 | "version": "0.0.1", 732 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 733 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 734 | "dev": true 735 | }, 736 | "node_modules/convert-source-map": { 737 | "version": "1.8.0", 738 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 739 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 740 | "dev": true, 741 | "dependencies": { 742 | "safe-buffer": "~5.1.1" 743 | } 744 | }, 745 | "node_modules/core-util-is": { 746 | "version": "1.0.2", 747 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 748 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 749 | "dev": true 750 | }, 751 | "node_modules/cross-spawn": { 752 | "version": "7.0.3", 753 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 754 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 755 | "dev": true, 756 | "dependencies": { 757 | "path-key": "^3.1.0", 758 | "shebang-command": "^2.0.0", 759 | "which": "^2.0.1" 760 | }, 761 | "engines": { 762 | "node": ">= 8" 763 | } 764 | }, 765 | "node_modules/debug": { 766 | "version": "4.3.2", 767 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 768 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 769 | "dev": true, 770 | "dependencies": { 771 | "ms": "2.1.2" 772 | }, 773 | "engines": { 774 | "node": ">=6.0" 775 | }, 776 | "peerDependenciesMeta": { 777 | "supports-color": { 778 | "optional": true 779 | } 780 | } 781 | }, 782 | "node_modules/decamelize": { 783 | "version": "1.2.0", 784 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 785 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 786 | "dev": true, 787 | "engines": { 788 | "node": ">=0.10.0" 789 | } 790 | }, 791 | "node_modules/default-require-extensions": { 792 | "version": "3.0.0", 793 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", 794 | "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", 795 | "dev": true, 796 | "dependencies": { 797 | "strip-bom": "^4.0.0" 798 | }, 799 | "engines": { 800 | "node": ">=8" 801 | } 802 | }, 803 | "node_modules/diff": { 804 | "version": "4.0.2", 805 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 806 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 807 | "dev": true, 808 | "engines": { 809 | "node": ">=0.3.1" 810 | } 811 | }, 812 | "node_modules/duplexer2": { 813 | "version": "0.1.4", 814 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 815 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 816 | "dev": true, 817 | "dependencies": { 818 | "readable-stream": "^2.0.2" 819 | } 820 | }, 821 | "node_modules/electron-to-chromium": { 822 | "version": "1.3.806", 823 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.806.tgz", 824 | "integrity": "sha512-AH/otJLAAecgyrYp0XK1DPiGVWcOgwPeJBOLeuFQ5l//vhQhwC9u6d+GijClqJAmsHG4XDue81ndSQPohUu0xA==", 825 | "dev": true 826 | }, 827 | "node_modules/emoji-regex": { 828 | "version": "8.0.0", 829 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 830 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 831 | "dev": true 832 | }, 833 | "node_modules/es6-error": { 834 | "version": "4.1.1", 835 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 836 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 837 | "dev": true 838 | }, 839 | "node_modules/escalade": { 840 | "version": "3.1.1", 841 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 842 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 843 | "dev": true, 844 | "engines": { 845 | "node": ">=6" 846 | } 847 | }, 848 | "node_modules/escape-string-regexp": { 849 | "version": "1.0.5", 850 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 851 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 852 | "dev": true, 853 | "engines": { 854 | "node": ">=0.8.0" 855 | } 856 | }, 857 | "node_modules/esprima": { 858 | "version": "4.0.1", 859 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 860 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 861 | "dev": true, 862 | "bin": { 863 | "esparse": "bin/esparse.js", 864 | "esvalidate": "bin/esvalidate.js" 865 | }, 866 | "engines": { 867 | "node": ">=4" 868 | } 869 | }, 870 | "node_modules/find-cache-dir": { 871 | "version": "3.3.1", 872 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", 873 | "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", 874 | "dev": true, 875 | "dependencies": { 876 | "commondir": "^1.0.1", 877 | "make-dir": "^3.0.2", 878 | "pkg-dir": "^4.1.0" 879 | }, 880 | "engines": { 881 | "node": ">=8" 882 | }, 883 | "funding": { 884 | "url": "https://github.com/avajs/find-cache-dir?sponsor=1" 885 | } 886 | }, 887 | "node_modules/find-up": { 888 | "version": "4.1.0", 889 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 890 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 891 | "dev": true, 892 | "dependencies": { 893 | "locate-path": "^5.0.0", 894 | "path-exists": "^4.0.0" 895 | }, 896 | "engines": { 897 | "node": ">=8" 898 | } 899 | }, 900 | "node_modules/foreground-child": { 901 | "version": "2.0.0", 902 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", 903 | "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", 904 | "dev": true, 905 | "dependencies": { 906 | "cross-spawn": "^7.0.0", 907 | "signal-exit": "^3.0.2" 908 | }, 909 | "engines": { 910 | "node": ">=8.0.0" 911 | } 912 | }, 913 | "node_modules/fromentries": { 914 | "version": "1.3.2", 915 | "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", 916 | "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", 917 | "dev": true, 918 | "funding": [ 919 | { 920 | "type": "github", 921 | "url": "https://github.com/sponsors/feross" 922 | }, 923 | { 924 | "type": "patreon", 925 | "url": "https://www.patreon.com/feross" 926 | }, 927 | { 928 | "type": "consulting", 929 | "url": "https://feross.org/support" 930 | } 931 | ] 932 | }, 933 | "node_modules/fs.realpath": { 934 | "version": "1.0.0", 935 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 936 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 937 | "dev": true 938 | }, 939 | "node_modules/fstream": { 940 | "version": "1.0.12", 941 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", 942 | "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", 943 | "dev": true, 944 | "dependencies": { 945 | "graceful-fs": "^4.1.2", 946 | "inherits": "~2.0.0", 947 | "mkdirp": ">=0.5 0", 948 | "rimraf": "2" 949 | }, 950 | "engines": { 951 | "node": ">=0.6" 952 | } 953 | }, 954 | "node_modules/fstream/node_modules/rimraf": { 955 | "version": "2.7.1", 956 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 957 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 958 | "dev": true, 959 | "dependencies": { 960 | "glob": "^7.1.3" 961 | }, 962 | "bin": { 963 | "rimraf": "bin.js" 964 | } 965 | }, 966 | "node_modules/gensync": { 967 | "version": "1.0.0-beta.2", 968 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 969 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 970 | "dev": true, 971 | "engines": { 972 | "node": ">=6.9.0" 973 | } 974 | }, 975 | "node_modules/get-caller-file": { 976 | "version": "2.0.5", 977 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 978 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 979 | "dev": true, 980 | "engines": { 981 | "node": "6.* || 8.* || >= 10.*" 982 | } 983 | }, 984 | "node_modules/get-package-type": { 985 | "version": "0.1.0", 986 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 987 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 988 | "dev": true, 989 | "engines": { 990 | "node": ">=8.0.0" 991 | } 992 | }, 993 | "node_modules/glob": { 994 | "version": "7.1.7", 995 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 996 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 997 | "dev": true, 998 | "dependencies": { 999 | "fs.realpath": "^1.0.0", 1000 | "inflight": "^1.0.4", 1001 | "inherits": "2", 1002 | "minimatch": "^3.0.4", 1003 | "once": "^1.3.0", 1004 | "path-is-absolute": "^1.0.0" 1005 | }, 1006 | "engines": { 1007 | "node": "*" 1008 | }, 1009 | "funding": { 1010 | "url": "https://github.com/sponsors/isaacs" 1011 | } 1012 | }, 1013 | "node_modules/globals": { 1014 | "version": "11.12.0", 1015 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1016 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1017 | "dev": true, 1018 | "engines": { 1019 | "node": ">=4" 1020 | } 1021 | }, 1022 | "node_modules/graceful-fs": { 1023 | "version": "4.2.8", 1024 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 1025 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 1026 | "dev": true 1027 | }, 1028 | "node_modules/has-flag": { 1029 | "version": "3.0.0", 1030 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1031 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1032 | "dev": true, 1033 | "engines": { 1034 | "node": ">=4" 1035 | } 1036 | }, 1037 | "node_modules/hasha": { 1038 | "version": "5.2.2", 1039 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", 1040 | "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", 1041 | "dev": true, 1042 | "dependencies": { 1043 | "is-stream": "^2.0.0", 1044 | "type-fest": "^0.8.0" 1045 | }, 1046 | "engines": { 1047 | "node": ">=8" 1048 | }, 1049 | "funding": { 1050 | "url": "https://github.com/sponsors/sindresorhus" 1051 | } 1052 | }, 1053 | "node_modules/html-escaper": { 1054 | "version": "2.0.2", 1055 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1056 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1057 | "dev": true 1058 | }, 1059 | "node_modules/http-proxy-agent": { 1060 | "version": "4.0.1", 1061 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 1062 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 1063 | "dev": true, 1064 | "dependencies": { 1065 | "@tootallnate/once": "1", 1066 | "agent-base": "6", 1067 | "debug": "4" 1068 | }, 1069 | "engines": { 1070 | "node": ">= 6" 1071 | } 1072 | }, 1073 | "node_modules/https-proxy-agent": { 1074 | "version": "5.0.0", 1075 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1076 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1077 | "dev": true, 1078 | "dependencies": { 1079 | "agent-base": "6", 1080 | "debug": "4" 1081 | }, 1082 | "engines": { 1083 | "node": ">= 6" 1084 | } 1085 | }, 1086 | "node_modules/imurmurhash": { 1087 | "version": "0.1.4", 1088 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1089 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1090 | "dev": true, 1091 | "engines": { 1092 | "node": ">=0.8.19" 1093 | } 1094 | }, 1095 | "node_modules/indent-string": { 1096 | "version": "4.0.0", 1097 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1098 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1099 | "dev": true, 1100 | "engines": { 1101 | "node": ">=8" 1102 | } 1103 | }, 1104 | "node_modules/inflight": { 1105 | "version": "1.0.6", 1106 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1107 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1108 | "dev": true, 1109 | "dependencies": { 1110 | "once": "^1.3.0", 1111 | "wrappy": "1" 1112 | } 1113 | }, 1114 | "node_modules/inherits": { 1115 | "version": "2.0.4", 1116 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1117 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1118 | "dev": true 1119 | }, 1120 | "node_modules/is-fullwidth-code-point": { 1121 | "version": "3.0.0", 1122 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1123 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1124 | "dev": true, 1125 | "engines": { 1126 | "node": ">=8" 1127 | } 1128 | }, 1129 | "node_modules/is-stream": { 1130 | "version": "2.0.1", 1131 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1132 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1133 | "dev": true, 1134 | "engines": { 1135 | "node": ">=8" 1136 | }, 1137 | "funding": { 1138 | "url": "https://github.com/sponsors/sindresorhus" 1139 | } 1140 | }, 1141 | "node_modules/is-typedarray": { 1142 | "version": "1.0.0", 1143 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1144 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 1145 | "dev": true 1146 | }, 1147 | "node_modules/is-windows": { 1148 | "version": "1.0.2", 1149 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1150 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1151 | "dev": true, 1152 | "engines": { 1153 | "node": ">=0.10.0" 1154 | } 1155 | }, 1156 | "node_modules/isarray": { 1157 | "version": "1.0.0", 1158 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1159 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1160 | "dev": true 1161 | }, 1162 | "node_modules/isexe": { 1163 | "version": "2.0.0", 1164 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1165 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1166 | "dev": true 1167 | }, 1168 | "node_modules/istanbul-lib-coverage": { 1169 | "version": "3.0.0", 1170 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", 1171 | "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", 1172 | "dev": true, 1173 | "engines": { 1174 | "node": ">=8" 1175 | } 1176 | }, 1177 | "node_modules/istanbul-lib-hook": { 1178 | "version": "3.0.0", 1179 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", 1180 | "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", 1181 | "dev": true, 1182 | "dependencies": { 1183 | "append-transform": "^2.0.0" 1184 | }, 1185 | "engines": { 1186 | "node": ">=8" 1187 | } 1188 | }, 1189 | "node_modules/istanbul-lib-instrument": { 1190 | "version": "4.0.3", 1191 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", 1192 | "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", 1193 | "dev": true, 1194 | "dependencies": { 1195 | "@babel/core": "^7.7.5", 1196 | "@istanbuljs/schema": "^0.1.2", 1197 | "istanbul-lib-coverage": "^3.0.0", 1198 | "semver": "^6.3.0" 1199 | }, 1200 | "engines": { 1201 | "node": ">=8" 1202 | } 1203 | }, 1204 | "node_modules/istanbul-lib-processinfo": { 1205 | "version": "2.0.2", 1206 | "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", 1207 | "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", 1208 | "dev": true, 1209 | "dependencies": { 1210 | "archy": "^1.0.0", 1211 | "cross-spawn": "^7.0.0", 1212 | "istanbul-lib-coverage": "^3.0.0-alpha.1", 1213 | "make-dir": "^3.0.0", 1214 | "p-map": "^3.0.0", 1215 | "rimraf": "^3.0.0", 1216 | "uuid": "^3.3.3" 1217 | }, 1218 | "engines": { 1219 | "node": ">=8" 1220 | } 1221 | }, 1222 | "node_modules/istanbul-lib-report": { 1223 | "version": "3.0.0", 1224 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 1225 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 1226 | "dev": true, 1227 | "dependencies": { 1228 | "istanbul-lib-coverage": "^3.0.0", 1229 | "make-dir": "^3.0.0", 1230 | "supports-color": "^7.1.0" 1231 | }, 1232 | "engines": { 1233 | "node": ">=8" 1234 | } 1235 | }, 1236 | "node_modules/istanbul-lib-report/node_modules/has-flag": { 1237 | "version": "4.0.0", 1238 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1239 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1240 | "dev": true, 1241 | "engines": { 1242 | "node": ">=8" 1243 | } 1244 | }, 1245 | "node_modules/istanbul-lib-report/node_modules/supports-color": { 1246 | "version": "7.2.0", 1247 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1248 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1249 | "dev": true, 1250 | "dependencies": { 1251 | "has-flag": "^4.0.0" 1252 | }, 1253 | "engines": { 1254 | "node": ">=8" 1255 | } 1256 | }, 1257 | "node_modules/istanbul-lib-source-maps": { 1258 | "version": "4.0.0", 1259 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", 1260 | "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", 1261 | "dev": true, 1262 | "dependencies": { 1263 | "debug": "^4.1.1", 1264 | "istanbul-lib-coverage": "^3.0.0", 1265 | "source-map": "^0.6.1" 1266 | }, 1267 | "engines": { 1268 | "node": ">=8" 1269 | } 1270 | }, 1271 | "node_modules/istanbul-lib-source-maps/node_modules/source-map": { 1272 | "version": "0.6.1", 1273 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1274 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1275 | "dev": true, 1276 | "engines": { 1277 | "node": ">=0.10.0" 1278 | } 1279 | }, 1280 | "node_modules/istanbul-reports": { 1281 | "version": "3.0.2", 1282 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", 1283 | "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", 1284 | "dev": true, 1285 | "dependencies": { 1286 | "html-escaper": "^2.0.0", 1287 | "istanbul-lib-report": "^3.0.0" 1288 | }, 1289 | "engines": { 1290 | "node": ">=8" 1291 | } 1292 | }, 1293 | "node_modules/js-tokens": { 1294 | "version": "4.0.0", 1295 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1296 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1297 | "dev": true 1298 | }, 1299 | "node_modules/js-yaml": { 1300 | "version": "3.14.1", 1301 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1302 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1303 | "dev": true, 1304 | "dependencies": { 1305 | "argparse": "^1.0.7", 1306 | "esprima": "^4.0.0" 1307 | }, 1308 | "bin": { 1309 | "js-yaml": "bin/js-yaml.js" 1310 | } 1311 | }, 1312 | "node_modules/jsesc": { 1313 | "version": "2.5.2", 1314 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1315 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1316 | "dev": true, 1317 | "bin": { 1318 | "jsesc": "bin/jsesc" 1319 | }, 1320 | "engines": { 1321 | "node": ">=4" 1322 | } 1323 | }, 1324 | "node_modules/json5": { 1325 | "version": "2.2.3", 1326 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1327 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1328 | "dev": true, 1329 | "bin": { 1330 | "json5": "lib/cli.js" 1331 | }, 1332 | "engines": { 1333 | "node": ">=6" 1334 | } 1335 | }, 1336 | "node_modules/listenercount": { 1337 | "version": "1.0.1", 1338 | "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", 1339 | "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", 1340 | "dev": true 1341 | }, 1342 | "node_modules/locate-path": { 1343 | "version": "5.0.0", 1344 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1345 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1346 | "dev": true, 1347 | "dependencies": { 1348 | "p-locate": "^4.1.0" 1349 | }, 1350 | "engines": { 1351 | "node": ">=8" 1352 | } 1353 | }, 1354 | "node_modules/lodash.flattendeep": { 1355 | "version": "4.4.0", 1356 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 1357 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 1358 | "dev": true 1359 | }, 1360 | "node_modules/make-dir": { 1361 | "version": "3.1.0", 1362 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1363 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1364 | "dev": true, 1365 | "dependencies": { 1366 | "semver": "^6.0.0" 1367 | }, 1368 | "engines": { 1369 | "node": ">=8" 1370 | }, 1371 | "funding": { 1372 | "url": "https://github.com/sponsors/sindresorhus" 1373 | } 1374 | }, 1375 | "node_modules/make-error": { 1376 | "version": "1.3.6", 1377 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1378 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 1379 | "dev": true 1380 | }, 1381 | "node_modules/minimatch": { 1382 | "version": "3.1.2", 1383 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1384 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1385 | "dev": true, 1386 | "dependencies": { 1387 | "brace-expansion": "^1.1.7" 1388 | }, 1389 | "engines": { 1390 | "node": "*" 1391 | } 1392 | }, 1393 | "node_modules/minimist": { 1394 | "version": "1.2.6", 1395 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1396 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1397 | "dev": true 1398 | }, 1399 | "node_modules/mkdirp": { 1400 | "version": "0.5.5", 1401 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1402 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1403 | "dev": true, 1404 | "dependencies": { 1405 | "minimist": "^1.2.5" 1406 | }, 1407 | "bin": { 1408 | "mkdirp": "bin/cmd.js" 1409 | } 1410 | }, 1411 | "node_modules/ms": { 1412 | "version": "2.1.2", 1413 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1414 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1415 | "dev": true 1416 | }, 1417 | "node_modules/node-preload": { 1418 | "version": "0.2.1", 1419 | "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", 1420 | "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", 1421 | "dev": true, 1422 | "dependencies": { 1423 | "process-on-spawn": "^1.0.0" 1424 | }, 1425 | "engines": { 1426 | "node": ">=8" 1427 | } 1428 | }, 1429 | "node_modules/node-releases": { 1430 | "version": "1.1.74", 1431 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz", 1432 | "integrity": "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw==", 1433 | "dev": true 1434 | }, 1435 | "node_modules/nyc": { 1436 | "version": "15.1.0", 1437 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", 1438 | "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", 1439 | "dev": true, 1440 | "dependencies": { 1441 | "@istanbuljs/load-nyc-config": "^1.0.0", 1442 | "@istanbuljs/schema": "^0.1.2", 1443 | "caching-transform": "^4.0.0", 1444 | "convert-source-map": "^1.7.0", 1445 | "decamelize": "^1.2.0", 1446 | "find-cache-dir": "^3.2.0", 1447 | "find-up": "^4.1.0", 1448 | "foreground-child": "^2.0.0", 1449 | "get-package-type": "^0.1.0", 1450 | "glob": "^7.1.6", 1451 | "istanbul-lib-coverage": "^3.0.0", 1452 | "istanbul-lib-hook": "^3.0.0", 1453 | "istanbul-lib-instrument": "^4.0.0", 1454 | "istanbul-lib-processinfo": "^2.0.2", 1455 | "istanbul-lib-report": "^3.0.0", 1456 | "istanbul-lib-source-maps": "^4.0.0", 1457 | "istanbul-reports": "^3.0.2", 1458 | "make-dir": "^3.0.0", 1459 | "node-preload": "^0.2.1", 1460 | "p-map": "^3.0.0", 1461 | "process-on-spawn": "^1.0.0", 1462 | "resolve-from": "^5.0.0", 1463 | "rimraf": "^3.0.0", 1464 | "signal-exit": "^3.0.2", 1465 | "spawn-wrap": "^2.0.0", 1466 | "test-exclude": "^6.0.0", 1467 | "yargs": "^15.0.2" 1468 | }, 1469 | "bin": { 1470 | "nyc": "bin/nyc.js" 1471 | }, 1472 | "engines": { 1473 | "node": ">=8.9" 1474 | } 1475 | }, 1476 | "node_modules/once": { 1477 | "version": "1.4.0", 1478 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1479 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1480 | "dev": true, 1481 | "dependencies": { 1482 | "wrappy": "1" 1483 | } 1484 | }, 1485 | "node_modules/p-limit": { 1486 | "version": "2.3.0", 1487 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1488 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1489 | "dev": true, 1490 | "dependencies": { 1491 | "p-try": "^2.0.0" 1492 | }, 1493 | "engines": { 1494 | "node": ">=6" 1495 | }, 1496 | "funding": { 1497 | "url": "https://github.com/sponsors/sindresorhus" 1498 | } 1499 | }, 1500 | "node_modules/p-locate": { 1501 | "version": "4.1.0", 1502 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1503 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1504 | "dev": true, 1505 | "dependencies": { 1506 | "p-limit": "^2.2.0" 1507 | }, 1508 | "engines": { 1509 | "node": ">=8" 1510 | } 1511 | }, 1512 | "node_modules/p-map": { 1513 | "version": "3.0.0", 1514 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", 1515 | "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", 1516 | "dev": true, 1517 | "dependencies": { 1518 | "aggregate-error": "^3.0.0" 1519 | }, 1520 | "engines": { 1521 | "node": ">=8" 1522 | } 1523 | }, 1524 | "node_modules/p-try": { 1525 | "version": "2.2.0", 1526 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1527 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1528 | "dev": true, 1529 | "engines": { 1530 | "node": ">=6" 1531 | } 1532 | }, 1533 | "node_modules/package-hash": { 1534 | "version": "4.0.0", 1535 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", 1536 | "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", 1537 | "dev": true, 1538 | "dependencies": { 1539 | "graceful-fs": "^4.1.15", 1540 | "hasha": "^5.0.0", 1541 | "lodash.flattendeep": "^4.4.0", 1542 | "release-zalgo": "^1.0.0" 1543 | }, 1544 | "engines": { 1545 | "node": ">=8" 1546 | } 1547 | }, 1548 | "node_modules/path-exists": { 1549 | "version": "4.0.0", 1550 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1551 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1552 | "dev": true, 1553 | "engines": { 1554 | "node": ">=8" 1555 | } 1556 | }, 1557 | "node_modules/path-is-absolute": { 1558 | "version": "1.0.1", 1559 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1560 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1561 | "dev": true, 1562 | "engines": { 1563 | "node": ">=0.10.0" 1564 | } 1565 | }, 1566 | "node_modules/path-key": { 1567 | "version": "3.1.1", 1568 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1569 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1570 | "dev": true, 1571 | "engines": { 1572 | "node": ">=8" 1573 | } 1574 | }, 1575 | "node_modules/pkg-dir": { 1576 | "version": "4.2.0", 1577 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1578 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1579 | "dev": true, 1580 | "dependencies": { 1581 | "find-up": "^4.0.0" 1582 | }, 1583 | "engines": { 1584 | "node": ">=8" 1585 | } 1586 | }, 1587 | "node_modules/process-nextick-args": { 1588 | "version": "2.0.1", 1589 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1590 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1591 | "dev": true 1592 | }, 1593 | "node_modules/process-on-spawn": { 1594 | "version": "1.0.0", 1595 | "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", 1596 | "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", 1597 | "dev": true, 1598 | "dependencies": { 1599 | "fromentries": "^1.2.0" 1600 | }, 1601 | "engines": { 1602 | "node": ">=8" 1603 | } 1604 | }, 1605 | "node_modules/readable-stream": { 1606 | "version": "2.3.7", 1607 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1608 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1609 | "dev": true, 1610 | "dependencies": { 1611 | "core-util-is": "~1.0.0", 1612 | "inherits": "~2.0.3", 1613 | "isarray": "~1.0.0", 1614 | "process-nextick-args": "~2.0.0", 1615 | "safe-buffer": "~5.1.1", 1616 | "string_decoder": "~1.1.1", 1617 | "util-deprecate": "~1.0.1" 1618 | } 1619 | }, 1620 | "node_modules/release-zalgo": { 1621 | "version": "1.0.0", 1622 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 1623 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 1624 | "dev": true, 1625 | "dependencies": { 1626 | "es6-error": "^4.0.1" 1627 | }, 1628 | "engines": { 1629 | "node": ">=4" 1630 | } 1631 | }, 1632 | "node_modules/require-directory": { 1633 | "version": "2.1.1", 1634 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1635 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1636 | "dev": true, 1637 | "engines": { 1638 | "node": ">=0.10.0" 1639 | } 1640 | }, 1641 | "node_modules/require-main-filename": { 1642 | "version": "2.0.0", 1643 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1644 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1645 | "dev": true 1646 | }, 1647 | "node_modules/resolve-from": { 1648 | "version": "5.0.0", 1649 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 1650 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 1651 | "dev": true, 1652 | "engines": { 1653 | "node": ">=8" 1654 | } 1655 | }, 1656 | "node_modules/rimraf": { 1657 | "version": "3.0.2", 1658 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1659 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1660 | "dev": true, 1661 | "dependencies": { 1662 | "glob": "^7.1.3" 1663 | }, 1664 | "bin": { 1665 | "rimraf": "bin.js" 1666 | }, 1667 | "funding": { 1668 | "url": "https://github.com/sponsors/isaacs" 1669 | } 1670 | }, 1671 | "node_modules/safe-buffer": { 1672 | "version": "5.1.2", 1673 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1674 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1675 | "dev": true 1676 | }, 1677 | "node_modules/semver": { 1678 | "version": "6.3.0", 1679 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1680 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1681 | "dev": true, 1682 | "bin": { 1683 | "semver": "bin/semver.js" 1684 | } 1685 | }, 1686 | "node_modules/set-blocking": { 1687 | "version": "2.0.0", 1688 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1689 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1690 | "dev": true 1691 | }, 1692 | "node_modules/setimmediate": { 1693 | "version": "1.0.5", 1694 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1695 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 1696 | "dev": true 1697 | }, 1698 | "node_modules/shebang-command": { 1699 | "version": "2.0.0", 1700 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1701 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1702 | "dev": true, 1703 | "dependencies": { 1704 | "shebang-regex": "^3.0.0" 1705 | }, 1706 | "engines": { 1707 | "node": ">=8" 1708 | } 1709 | }, 1710 | "node_modules/shebang-regex": { 1711 | "version": "3.0.0", 1712 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1713 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1714 | "dev": true, 1715 | "engines": { 1716 | "node": ">=8" 1717 | } 1718 | }, 1719 | "node_modules/signal-exit": { 1720 | "version": "3.0.3", 1721 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1722 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 1723 | "dev": true 1724 | }, 1725 | "node_modules/source-map": { 1726 | "version": "0.5.7", 1727 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1728 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1729 | "dev": true, 1730 | "engines": { 1731 | "node": ">=0.10.0" 1732 | } 1733 | }, 1734 | "node_modules/source-map-support": { 1735 | "version": "0.5.19", 1736 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 1737 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 1738 | "dev": true, 1739 | "dependencies": { 1740 | "buffer-from": "^1.0.0", 1741 | "source-map": "^0.6.0" 1742 | } 1743 | }, 1744 | "node_modules/source-map-support/node_modules/source-map": { 1745 | "version": "0.6.1", 1746 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1747 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1748 | "dev": true, 1749 | "engines": { 1750 | "node": ">=0.10.0" 1751 | } 1752 | }, 1753 | "node_modules/spawn-wrap": { 1754 | "version": "2.0.0", 1755 | "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", 1756 | "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", 1757 | "dev": true, 1758 | "dependencies": { 1759 | "foreground-child": "^2.0.0", 1760 | "is-windows": "^1.0.2", 1761 | "make-dir": "^3.0.0", 1762 | "rimraf": "^3.0.0", 1763 | "signal-exit": "^3.0.2", 1764 | "which": "^2.0.1" 1765 | }, 1766 | "engines": { 1767 | "node": ">=8" 1768 | } 1769 | }, 1770 | "node_modules/sprintf-js": { 1771 | "version": "1.0.3", 1772 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1773 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1774 | "dev": true 1775 | }, 1776 | "node_modules/string_decoder": { 1777 | "version": "1.1.1", 1778 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1779 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1780 | "dev": true, 1781 | "dependencies": { 1782 | "safe-buffer": "~5.1.0" 1783 | } 1784 | }, 1785 | "node_modules/string-width": { 1786 | "version": "4.2.2", 1787 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1788 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1789 | "dev": true, 1790 | "dependencies": { 1791 | "emoji-regex": "^8.0.0", 1792 | "is-fullwidth-code-point": "^3.0.0", 1793 | "strip-ansi": "^6.0.0" 1794 | }, 1795 | "engines": { 1796 | "node": ">=8" 1797 | } 1798 | }, 1799 | "node_modules/strip-ansi": { 1800 | "version": "6.0.0", 1801 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1802 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1803 | "dev": true, 1804 | "dependencies": { 1805 | "ansi-regex": "^5.0.0" 1806 | }, 1807 | "engines": { 1808 | "node": ">=8" 1809 | } 1810 | }, 1811 | "node_modules/strip-bom": { 1812 | "version": "4.0.0", 1813 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 1814 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 1815 | "dev": true, 1816 | "engines": { 1817 | "node": ">=8" 1818 | } 1819 | }, 1820 | "node_modules/supports-color": { 1821 | "version": "5.5.0", 1822 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1823 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1824 | "dev": true, 1825 | "dependencies": { 1826 | "has-flag": "^3.0.0" 1827 | }, 1828 | "engines": { 1829 | "node": ">=4" 1830 | } 1831 | }, 1832 | "node_modules/test-exclude": { 1833 | "version": "6.0.0", 1834 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 1835 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 1836 | "dev": true, 1837 | "dependencies": { 1838 | "@istanbuljs/schema": "^0.1.2", 1839 | "glob": "^7.1.4", 1840 | "minimatch": "^3.0.4" 1841 | }, 1842 | "engines": { 1843 | "node": ">=8" 1844 | } 1845 | }, 1846 | "node_modules/to-fast-properties": { 1847 | "version": "2.0.0", 1848 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1849 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 1850 | "dev": true, 1851 | "engines": { 1852 | "node": ">=4" 1853 | } 1854 | }, 1855 | "node_modules/traverse": { 1856 | "version": "0.3.9", 1857 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", 1858 | "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", 1859 | "dev": true, 1860 | "engines": { 1861 | "node": "*" 1862 | } 1863 | }, 1864 | "node_modules/ts-node": { 1865 | "version": "8.10.2", 1866 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", 1867 | "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", 1868 | "dev": true, 1869 | "dependencies": { 1870 | "arg": "^4.1.0", 1871 | "diff": "^4.0.1", 1872 | "make-error": "^1.1.1", 1873 | "source-map-support": "^0.5.17", 1874 | "yn": "3.1.1" 1875 | }, 1876 | "bin": { 1877 | "ts-node": "dist/bin.js", 1878 | "ts-node-script": "dist/bin-script.js", 1879 | "ts-node-transpile-only": "dist/bin-transpile.js", 1880 | "ts-script": "dist/bin-script-deprecated.js" 1881 | }, 1882 | "engines": { 1883 | "node": ">=6.0.0" 1884 | }, 1885 | "peerDependencies": { 1886 | "typescript": ">=2.7" 1887 | } 1888 | }, 1889 | "node_modules/type-fest": { 1890 | "version": "0.8.1", 1891 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1892 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1893 | "dev": true, 1894 | "engines": { 1895 | "node": ">=8" 1896 | } 1897 | }, 1898 | "node_modules/typedarray-to-buffer": { 1899 | "version": "3.1.5", 1900 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 1901 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 1902 | "dev": true, 1903 | "dependencies": { 1904 | "is-typedarray": "^1.0.0" 1905 | } 1906 | }, 1907 | "node_modules/typescript": { 1908 | "version": "3.9.10", 1909 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", 1910 | "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", 1911 | "dev": true, 1912 | "bin": { 1913 | "tsc": "bin/tsc", 1914 | "tsserver": "bin/tsserver" 1915 | }, 1916 | "engines": { 1917 | "node": ">=4.2.0" 1918 | } 1919 | }, 1920 | "node_modules/unzipper": { 1921 | "version": "0.10.11", 1922 | "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", 1923 | "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", 1924 | "dev": true, 1925 | "dependencies": { 1926 | "big-integer": "^1.6.17", 1927 | "binary": "~0.3.0", 1928 | "bluebird": "~3.4.1", 1929 | "buffer-indexof-polyfill": "~1.0.0", 1930 | "duplexer2": "~0.1.4", 1931 | "fstream": "^1.0.12", 1932 | "graceful-fs": "^4.2.2", 1933 | "listenercount": "~1.0.1", 1934 | "readable-stream": "~2.3.6", 1935 | "setimmediate": "~1.0.4" 1936 | } 1937 | }, 1938 | "node_modules/util-deprecate": { 1939 | "version": "1.0.2", 1940 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1941 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1942 | "dev": true 1943 | }, 1944 | "node_modules/uuid": { 1945 | "version": "3.4.0", 1946 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1947 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 1948 | "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.", 1949 | "dev": true, 1950 | "bin": { 1951 | "uuid": "bin/uuid" 1952 | } 1953 | }, 1954 | "node_modules/vscode-test": { 1955 | "version": "1.6.1", 1956 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", 1957 | "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", 1958 | "dev": true, 1959 | "dependencies": { 1960 | "http-proxy-agent": "^4.0.1", 1961 | "https-proxy-agent": "^5.0.0", 1962 | "rimraf": "^3.0.2", 1963 | "unzipper": "^0.10.11" 1964 | }, 1965 | "engines": { 1966 | "node": ">=8.9.3" 1967 | } 1968 | }, 1969 | "node_modules/which": { 1970 | "version": "2.0.2", 1971 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1972 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1973 | "dev": true, 1974 | "dependencies": { 1975 | "isexe": "^2.0.0" 1976 | }, 1977 | "bin": { 1978 | "node-which": "bin/node-which" 1979 | }, 1980 | "engines": { 1981 | "node": ">= 8" 1982 | } 1983 | }, 1984 | "node_modules/which-module": { 1985 | "version": "2.0.0", 1986 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1987 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1988 | "dev": true 1989 | }, 1990 | "node_modules/wrap-ansi": { 1991 | "version": "6.2.0", 1992 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1993 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1994 | "dev": true, 1995 | "dependencies": { 1996 | "ansi-styles": "^4.0.0", 1997 | "string-width": "^4.1.0", 1998 | "strip-ansi": "^6.0.0" 1999 | }, 2000 | "engines": { 2001 | "node": ">=8" 2002 | } 2003 | }, 2004 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 2005 | "version": "4.3.0", 2006 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2007 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2008 | "dev": true, 2009 | "dependencies": { 2010 | "color-convert": "^2.0.1" 2011 | }, 2012 | "engines": { 2013 | "node": ">=8" 2014 | }, 2015 | "funding": { 2016 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2017 | } 2018 | }, 2019 | "node_modules/wrap-ansi/node_modules/color-convert": { 2020 | "version": "2.0.1", 2021 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2022 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2023 | "dev": true, 2024 | "dependencies": { 2025 | "color-name": "~1.1.4" 2026 | }, 2027 | "engines": { 2028 | "node": ">=7.0.0" 2029 | } 2030 | }, 2031 | "node_modules/wrap-ansi/node_modules/color-name": { 2032 | "version": "1.1.4", 2033 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2034 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2035 | "dev": true 2036 | }, 2037 | "node_modules/wrappy": { 2038 | "version": "1.0.2", 2039 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2040 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2041 | "dev": true 2042 | }, 2043 | "node_modules/write-file-atomic": { 2044 | "version": "3.0.3", 2045 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 2046 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 2047 | "dev": true, 2048 | "dependencies": { 2049 | "imurmurhash": "^0.1.4", 2050 | "is-typedarray": "^1.0.0", 2051 | "signal-exit": "^3.0.2", 2052 | "typedarray-to-buffer": "^3.1.5" 2053 | } 2054 | }, 2055 | "node_modules/y18n": { 2056 | "version": "4.0.3", 2057 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 2058 | "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", 2059 | "dev": true 2060 | }, 2061 | "node_modules/yargs": { 2062 | "version": "15.4.1", 2063 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", 2064 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 2065 | "dev": true, 2066 | "dependencies": { 2067 | "cliui": "^6.0.0", 2068 | "decamelize": "^1.2.0", 2069 | "find-up": "^4.1.0", 2070 | "get-caller-file": "^2.0.1", 2071 | "require-directory": "^2.1.1", 2072 | "require-main-filename": "^2.0.0", 2073 | "set-blocking": "^2.0.0", 2074 | "string-width": "^4.2.0", 2075 | "which-module": "^2.0.0", 2076 | "y18n": "^4.0.0", 2077 | "yargs-parser": "^18.1.2" 2078 | }, 2079 | "engines": { 2080 | "node": ">=8" 2081 | } 2082 | }, 2083 | "node_modules/yargs-parser": { 2084 | "version": "18.1.3", 2085 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 2086 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 2087 | "dev": true, 2088 | "dependencies": { 2089 | "camelcase": "^5.0.0", 2090 | "decamelize": "^1.2.0" 2091 | }, 2092 | "engines": { 2093 | "node": ">=6" 2094 | } 2095 | }, 2096 | "node_modules/yn": { 2097 | "version": "3.1.1", 2098 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 2099 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 2100 | "dev": true, 2101 | "engines": { 2102 | "node": ">=6" 2103 | } 2104 | } 2105 | }, 2106 | "dependencies": { 2107 | "@babel/code-frame": { 2108 | "version": "7.22.13", 2109 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", 2110 | "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", 2111 | "dev": true, 2112 | "requires": { 2113 | "@babel/highlight": "^7.22.13", 2114 | "chalk": "^2.4.2" 2115 | } 2116 | }, 2117 | "@babel/compat-data": { 2118 | "version": "7.15.0", 2119 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", 2120 | "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", 2121 | "dev": true 2122 | }, 2123 | "@babel/core": { 2124 | "version": "7.15.0", 2125 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", 2126 | "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", 2127 | "dev": true, 2128 | "requires": { 2129 | "@babel/code-frame": "^7.14.5", 2130 | "@babel/generator": "^7.15.0", 2131 | "@babel/helper-compilation-targets": "^7.15.0", 2132 | "@babel/helper-module-transforms": "^7.15.0", 2133 | "@babel/helpers": "^7.14.8", 2134 | "@babel/parser": "^7.15.0", 2135 | "@babel/template": "^7.14.5", 2136 | "@babel/traverse": "^7.15.0", 2137 | "@babel/types": "^7.15.0", 2138 | "convert-source-map": "^1.7.0", 2139 | "debug": "^4.1.0", 2140 | "gensync": "^1.0.0-beta.2", 2141 | "json5": "^2.1.2", 2142 | "semver": "^6.3.0", 2143 | "source-map": "^0.5.0" 2144 | } 2145 | }, 2146 | "@babel/generator": { 2147 | "version": "7.23.0", 2148 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", 2149 | "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", 2150 | "dev": true, 2151 | "requires": { 2152 | "@babel/types": "^7.23.0", 2153 | "@jridgewell/gen-mapping": "^0.3.2", 2154 | "@jridgewell/trace-mapping": "^0.3.17", 2155 | "jsesc": "^2.5.1" 2156 | } 2157 | }, 2158 | "@babel/helper-compilation-targets": { 2159 | "version": "7.15.0", 2160 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", 2161 | "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", 2162 | "dev": true, 2163 | "requires": { 2164 | "@babel/compat-data": "^7.15.0", 2165 | "@babel/helper-validator-option": "^7.14.5", 2166 | "browserslist": "^4.16.6", 2167 | "semver": "^6.3.0" 2168 | } 2169 | }, 2170 | "@babel/helper-environment-visitor": { 2171 | "version": "7.22.20", 2172 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", 2173 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", 2174 | "dev": true 2175 | }, 2176 | "@babel/helper-function-name": { 2177 | "version": "7.23.0", 2178 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", 2179 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", 2180 | "dev": true, 2181 | "requires": { 2182 | "@babel/template": "^7.22.15", 2183 | "@babel/types": "^7.23.0" 2184 | } 2185 | }, 2186 | "@babel/helper-hoist-variables": { 2187 | "version": "7.22.5", 2188 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", 2189 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", 2190 | "dev": true, 2191 | "requires": { 2192 | "@babel/types": "^7.22.5" 2193 | } 2194 | }, 2195 | "@babel/helper-member-expression-to-functions": { 2196 | "version": "7.15.0", 2197 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", 2198 | "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", 2199 | "dev": true, 2200 | "requires": { 2201 | "@babel/types": "^7.15.0" 2202 | } 2203 | }, 2204 | "@babel/helper-module-imports": { 2205 | "version": "7.14.5", 2206 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", 2207 | "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", 2208 | "dev": true, 2209 | "requires": { 2210 | "@babel/types": "^7.14.5" 2211 | } 2212 | }, 2213 | "@babel/helper-module-transforms": { 2214 | "version": "7.15.0", 2215 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", 2216 | "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", 2217 | "dev": true, 2218 | "requires": { 2219 | "@babel/helper-module-imports": "^7.14.5", 2220 | "@babel/helper-replace-supers": "^7.15.0", 2221 | "@babel/helper-simple-access": "^7.14.8", 2222 | "@babel/helper-split-export-declaration": "^7.14.5", 2223 | "@babel/helper-validator-identifier": "^7.14.9", 2224 | "@babel/template": "^7.14.5", 2225 | "@babel/traverse": "^7.15.0", 2226 | "@babel/types": "^7.15.0" 2227 | } 2228 | }, 2229 | "@babel/helper-optimise-call-expression": { 2230 | "version": "7.14.5", 2231 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", 2232 | "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", 2233 | "dev": true, 2234 | "requires": { 2235 | "@babel/types": "^7.14.5" 2236 | } 2237 | }, 2238 | "@babel/helper-replace-supers": { 2239 | "version": "7.15.0", 2240 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", 2241 | "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", 2242 | "dev": true, 2243 | "requires": { 2244 | "@babel/helper-member-expression-to-functions": "^7.15.0", 2245 | "@babel/helper-optimise-call-expression": "^7.14.5", 2246 | "@babel/traverse": "^7.15.0", 2247 | "@babel/types": "^7.15.0" 2248 | } 2249 | }, 2250 | "@babel/helper-simple-access": { 2251 | "version": "7.14.8", 2252 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", 2253 | "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", 2254 | "dev": true, 2255 | "requires": { 2256 | "@babel/types": "^7.14.8" 2257 | } 2258 | }, 2259 | "@babel/helper-split-export-declaration": { 2260 | "version": "7.22.6", 2261 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", 2262 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", 2263 | "dev": true, 2264 | "requires": { 2265 | "@babel/types": "^7.22.5" 2266 | } 2267 | }, 2268 | "@babel/helper-string-parser": { 2269 | "version": "7.22.5", 2270 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", 2271 | "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", 2272 | "dev": true 2273 | }, 2274 | "@babel/helper-validator-identifier": { 2275 | "version": "7.22.20", 2276 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 2277 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 2278 | "dev": true 2279 | }, 2280 | "@babel/helper-validator-option": { 2281 | "version": "7.14.5", 2282 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", 2283 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", 2284 | "dev": true 2285 | }, 2286 | "@babel/helpers": { 2287 | "version": "7.15.3", 2288 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", 2289 | "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", 2290 | "dev": true, 2291 | "requires": { 2292 | "@babel/template": "^7.14.5", 2293 | "@babel/traverse": "^7.15.0", 2294 | "@babel/types": "^7.15.0" 2295 | } 2296 | }, 2297 | "@babel/highlight": { 2298 | "version": "7.22.20", 2299 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", 2300 | "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", 2301 | "dev": true, 2302 | "requires": { 2303 | "@babel/helper-validator-identifier": "^7.22.20", 2304 | "chalk": "^2.4.2", 2305 | "js-tokens": "^4.0.0" 2306 | } 2307 | }, 2308 | "@babel/parser": { 2309 | "version": "7.23.0", 2310 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", 2311 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", 2312 | "dev": true 2313 | }, 2314 | "@babel/template": { 2315 | "version": "7.22.15", 2316 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", 2317 | "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", 2318 | "dev": true, 2319 | "requires": { 2320 | "@babel/code-frame": "^7.22.13", 2321 | "@babel/parser": "^7.22.15", 2322 | "@babel/types": "^7.22.15" 2323 | } 2324 | }, 2325 | "@babel/traverse": { 2326 | "version": "7.23.2", 2327 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", 2328 | "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", 2329 | "dev": true, 2330 | "requires": { 2331 | "@babel/code-frame": "^7.22.13", 2332 | "@babel/generator": "^7.23.0", 2333 | "@babel/helper-environment-visitor": "^7.22.20", 2334 | "@babel/helper-function-name": "^7.23.0", 2335 | "@babel/helper-hoist-variables": "^7.22.5", 2336 | "@babel/helper-split-export-declaration": "^7.22.6", 2337 | "@babel/parser": "^7.23.0", 2338 | "@babel/types": "^7.23.0", 2339 | "debug": "^4.1.0", 2340 | "globals": "^11.1.0" 2341 | } 2342 | }, 2343 | "@babel/types": { 2344 | "version": "7.23.0", 2345 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", 2346 | "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", 2347 | "dev": true, 2348 | "requires": { 2349 | "@babel/helper-string-parser": "^7.22.5", 2350 | "@babel/helper-validator-identifier": "^7.22.20", 2351 | "to-fast-properties": "^2.0.0" 2352 | } 2353 | }, 2354 | "@istanbuljs/load-nyc-config": { 2355 | "version": "1.1.0", 2356 | "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", 2357 | "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", 2358 | "dev": true, 2359 | "requires": { 2360 | "camelcase": "^5.3.1", 2361 | "find-up": "^4.1.0", 2362 | "get-package-type": "^0.1.0", 2363 | "js-yaml": "^3.13.1", 2364 | "resolve-from": "^5.0.0" 2365 | } 2366 | }, 2367 | "@istanbuljs/schema": { 2368 | "version": "0.1.3", 2369 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 2370 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 2371 | "dev": true 2372 | }, 2373 | "@jridgewell/gen-mapping": { 2374 | "version": "0.3.3", 2375 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 2376 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 2377 | "dev": true, 2378 | "requires": { 2379 | "@jridgewell/set-array": "^1.0.1", 2380 | "@jridgewell/sourcemap-codec": "^1.4.10", 2381 | "@jridgewell/trace-mapping": "^0.3.9" 2382 | } 2383 | }, 2384 | "@jridgewell/resolve-uri": { 2385 | "version": "3.1.1", 2386 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 2387 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 2388 | "dev": true 2389 | }, 2390 | "@jridgewell/set-array": { 2391 | "version": "1.1.2", 2392 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 2393 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 2394 | "dev": true 2395 | }, 2396 | "@jridgewell/sourcemap-codec": { 2397 | "version": "1.4.15", 2398 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 2399 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 2400 | "dev": true 2401 | }, 2402 | "@jridgewell/trace-mapping": { 2403 | "version": "0.3.19", 2404 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", 2405 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", 2406 | "dev": true, 2407 | "requires": { 2408 | "@jridgewell/resolve-uri": "^3.1.0", 2409 | "@jridgewell/sourcemap-codec": "^1.4.14" 2410 | } 2411 | }, 2412 | "@tootallnate/once": { 2413 | "version": "1.1.2", 2414 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 2415 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 2416 | "dev": true 2417 | }, 2418 | "@types/mocha": { 2419 | "version": "5.2.7", 2420 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", 2421 | "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", 2422 | "dev": true 2423 | }, 2424 | "@types/node": { 2425 | "version": "13.13.52", 2426 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz", 2427 | "integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==", 2428 | "dev": true 2429 | }, 2430 | "@types/vscode": { 2431 | "version": "1.59.0", 2432 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.59.0.tgz", 2433 | "integrity": "sha512-Zg38rusx2nU6gy6QdF7v4iqgxNfxzlBlDhrRCjOiPQp+sfaNrp3f9J6OHIhpGNN1oOAca4+9Hq0+8u3jwzPMlQ==", 2434 | "dev": true 2435 | }, 2436 | "agent-base": { 2437 | "version": "6.0.2", 2438 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 2439 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 2440 | "dev": true, 2441 | "requires": { 2442 | "debug": "4" 2443 | } 2444 | }, 2445 | "aggregate-error": { 2446 | "version": "3.1.0", 2447 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 2448 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 2449 | "dev": true, 2450 | "requires": { 2451 | "clean-stack": "^2.0.0", 2452 | "indent-string": "^4.0.0" 2453 | } 2454 | }, 2455 | "ansi-regex": { 2456 | "version": "5.0.1", 2457 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2458 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2459 | "dev": true 2460 | }, 2461 | "ansi-styles": { 2462 | "version": "3.2.1", 2463 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2464 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2465 | "dev": true, 2466 | "requires": { 2467 | "color-convert": "^1.9.0" 2468 | } 2469 | }, 2470 | "append-transform": { 2471 | "version": "2.0.0", 2472 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", 2473 | "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", 2474 | "dev": true, 2475 | "requires": { 2476 | "default-require-extensions": "^3.0.0" 2477 | } 2478 | }, 2479 | "archy": { 2480 | "version": "1.0.0", 2481 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 2482 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 2483 | "dev": true 2484 | }, 2485 | "arg": { 2486 | "version": "4.1.3", 2487 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 2488 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 2489 | "dev": true 2490 | }, 2491 | "argparse": { 2492 | "version": "1.0.10", 2493 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 2494 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 2495 | "dev": true, 2496 | "requires": { 2497 | "sprintf-js": "~1.0.2" 2498 | } 2499 | }, 2500 | "balanced-match": { 2501 | "version": "1.0.2", 2502 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2503 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2504 | "dev": true 2505 | }, 2506 | "big-integer": { 2507 | "version": "1.6.48", 2508 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", 2509 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", 2510 | "dev": true 2511 | }, 2512 | "binary": { 2513 | "version": "0.3.0", 2514 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", 2515 | "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", 2516 | "dev": true, 2517 | "requires": { 2518 | "buffers": "~0.1.1", 2519 | "chainsaw": "~0.1.0" 2520 | } 2521 | }, 2522 | "bluebird": { 2523 | "version": "3.4.7", 2524 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", 2525 | "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", 2526 | "dev": true 2527 | }, 2528 | "brace-expansion": { 2529 | "version": "1.1.11", 2530 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2531 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2532 | "dev": true, 2533 | "requires": { 2534 | "balanced-match": "^1.0.0", 2535 | "concat-map": "0.0.1" 2536 | } 2537 | }, 2538 | "browserslist": { 2539 | "version": "4.16.7", 2540 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz", 2541 | "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==", 2542 | "dev": true, 2543 | "requires": { 2544 | "caniuse-lite": "^1.0.30001248", 2545 | "colorette": "^1.2.2", 2546 | "electron-to-chromium": "^1.3.793", 2547 | "escalade": "^3.1.1", 2548 | "node-releases": "^1.1.73" 2549 | } 2550 | }, 2551 | "buffer-from": { 2552 | "version": "1.1.2", 2553 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 2554 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 2555 | "dev": true 2556 | }, 2557 | "buffer-indexof-polyfill": { 2558 | "version": "1.0.2", 2559 | "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", 2560 | "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", 2561 | "dev": true 2562 | }, 2563 | "buffers": { 2564 | "version": "0.1.1", 2565 | "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", 2566 | "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", 2567 | "dev": true 2568 | }, 2569 | "caching-transform": { 2570 | "version": "4.0.0", 2571 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", 2572 | "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", 2573 | "dev": true, 2574 | "requires": { 2575 | "hasha": "^5.0.0", 2576 | "make-dir": "^3.0.0", 2577 | "package-hash": "^4.0.0", 2578 | "write-file-atomic": "^3.0.0" 2579 | } 2580 | }, 2581 | "camelcase": { 2582 | "version": "5.3.1", 2583 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 2584 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 2585 | "dev": true 2586 | }, 2587 | "caniuse-lite": { 2588 | "version": "1.0.30001251", 2589 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", 2590 | "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==", 2591 | "dev": true 2592 | }, 2593 | "chainsaw": { 2594 | "version": "0.1.0", 2595 | "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", 2596 | "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", 2597 | "dev": true, 2598 | "requires": { 2599 | "traverse": ">=0.3.0 <0.4" 2600 | } 2601 | }, 2602 | "chalk": { 2603 | "version": "2.4.2", 2604 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2605 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2606 | "dev": true, 2607 | "requires": { 2608 | "ansi-styles": "^3.2.1", 2609 | "escape-string-regexp": "^1.0.5", 2610 | "supports-color": "^5.3.0" 2611 | } 2612 | }, 2613 | "clean-stack": { 2614 | "version": "2.2.0", 2615 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 2616 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 2617 | "dev": true 2618 | }, 2619 | "cliui": { 2620 | "version": "6.0.0", 2621 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 2622 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 2623 | "dev": true, 2624 | "requires": { 2625 | "string-width": "^4.2.0", 2626 | "strip-ansi": "^6.0.0", 2627 | "wrap-ansi": "^6.2.0" 2628 | } 2629 | }, 2630 | "color-convert": { 2631 | "version": "1.9.3", 2632 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2633 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2634 | "dev": true, 2635 | "requires": { 2636 | "color-name": "1.1.3" 2637 | } 2638 | }, 2639 | "color-name": { 2640 | "version": "1.1.3", 2641 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2642 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2643 | "dev": true 2644 | }, 2645 | "colorette": { 2646 | "version": "1.3.0", 2647 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", 2648 | "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", 2649 | "dev": true 2650 | }, 2651 | "commondir": { 2652 | "version": "1.0.1", 2653 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 2654 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 2655 | "dev": true 2656 | }, 2657 | "concat-map": { 2658 | "version": "0.0.1", 2659 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2660 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 2661 | "dev": true 2662 | }, 2663 | "convert-source-map": { 2664 | "version": "1.8.0", 2665 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 2666 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 2667 | "dev": true, 2668 | "requires": { 2669 | "safe-buffer": "~5.1.1" 2670 | } 2671 | }, 2672 | "core-util-is": { 2673 | "version": "1.0.2", 2674 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 2675 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 2676 | "dev": true 2677 | }, 2678 | "cross-spawn": { 2679 | "version": "7.0.3", 2680 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2681 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2682 | "dev": true, 2683 | "requires": { 2684 | "path-key": "^3.1.0", 2685 | "shebang-command": "^2.0.0", 2686 | "which": "^2.0.1" 2687 | } 2688 | }, 2689 | "debug": { 2690 | "version": "4.3.2", 2691 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 2692 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 2693 | "dev": true, 2694 | "requires": { 2695 | "ms": "2.1.2" 2696 | } 2697 | }, 2698 | "decamelize": { 2699 | "version": "1.2.0", 2700 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 2701 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 2702 | "dev": true 2703 | }, 2704 | "default-require-extensions": { 2705 | "version": "3.0.0", 2706 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", 2707 | "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", 2708 | "dev": true, 2709 | "requires": { 2710 | "strip-bom": "^4.0.0" 2711 | } 2712 | }, 2713 | "diff": { 2714 | "version": "4.0.2", 2715 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 2716 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 2717 | "dev": true 2718 | }, 2719 | "duplexer2": { 2720 | "version": "0.1.4", 2721 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 2722 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 2723 | "dev": true, 2724 | "requires": { 2725 | "readable-stream": "^2.0.2" 2726 | } 2727 | }, 2728 | "electron-to-chromium": { 2729 | "version": "1.3.806", 2730 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.806.tgz", 2731 | "integrity": "sha512-AH/otJLAAecgyrYp0XK1DPiGVWcOgwPeJBOLeuFQ5l//vhQhwC9u6d+GijClqJAmsHG4XDue81ndSQPohUu0xA==", 2732 | "dev": true 2733 | }, 2734 | "emoji-regex": { 2735 | "version": "8.0.0", 2736 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2737 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2738 | "dev": true 2739 | }, 2740 | "es6-error": { 2741 | "version": "4.1.1", 2742 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 2743 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 2744 | "dev": true 2745 | }, 2746 | "escalade": { 2747 | "version": "3.1.1", 2748 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2749 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2750 | "dev": true 2751 | }, 2752 | "escape-string-regexp": { 2753 | "version": "1.0.5", 2754 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2755 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2756 | "dev": true 2757 | }, 2758 | "esprima": { 2759 | "version": "4.0.1", 2760 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 2761 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 2762 | "dev": true 2763 | }, 2764 | "find-cache-dir": { 2765 | "version": "3.3.1", 2766 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", 2767 | "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", 2768 | "dev": true, 2769 | "requires": { 2770 | "commondir": "^1.0.1", 2771 | "make-dir": "^3.0.2", 2772 | "pkg-dir": "^4.1.0" 2773 | } 2774 | }, 2775 | "find-up": { 2776 | "version": "4.1.0", 2777 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 2778 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 2779 | "dev": true, 2780 | "requires": { 2781 | "locate-path": "^5.0.0", 2782 | "path-exists": "^4.0.0" 2783 | } 2784 | }, 2785 | "foreground-child": { 2786 | "version": "2.0.0", 2787 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", 2788 | "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", 2789 | "dev": true, 2790 | "requires": { 2791 | "cross-spawn": "^7.0.0", 2792 | "signal-exit": "^3.0.2" 2793 | } 2794 | }, 2795 | "fromentries": { 2796 | "version": "1.3.2", 2797 | "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", 2798 | "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", 2799 | "dev": true 2800 | }, 2801 | "fs.realpath": { 2802 | "version": "1.0.0", 2803 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2804 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2805 | "dev": true 2806 | }, 2807 | "fstream": { 2808 | "version": "1.0.12", 2809 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", 2810 | "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", 2811 | "dev": true, 2812 | "requires": { 2813 | "graceful-fs": "^4.1.2", 2814 | "inherits": "~2.0.0", 2815 | "mkdirp": ">=0.5 0", 2816 | "rimraf": "2" 2817 | }, 2818 | "dependencies": { 2819 | "rimraf": { 2820 | "version": "2.7.1", 2821 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 2822 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 2823 | "dev": true, 2824 | "requires": { 2825 | "glob": "^7.1.3" 2826 | } 2827 | } 2828 | } 2829 | }, 2830 | "gensync": { 2831 | "version": "1.0.0-beta.2", 2832 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2833 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2834 | "dev": true 2835 | }, 2836 | "get-caller-file": { 2837 | "version": "2.0.5", 2838 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2839 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2840 | "dev": true 2841 | }, 2842 | "get-package-type": { 2843 | "version": "0.1.0", 2844 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 2845 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 2846 | "dev": true 2847 | }, 2848 | "glob": { 2849 | "version": "7.1.7", 2850 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 2851 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 2852 | "dev": true, 2853 | "requires": { 2854 | "fs.realpath": "^1.0.0", 2855 | "inflight": "^1.0.4", 2856 | "inherits": "2", 2857 | "minimatch": "^3.0.4", 2858 | "once": "^1.3.0", 2859 | "path-is-absolute": "^1.0.0" 2860 | } 2861 | }, 2862 | "globals": { 2863 | "version": "11.12.0", 2864 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2865 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2866 | "dev": true 2867 | }, 2868 | "graceful-fs": { 2869 | "version": "4.2.8", 2870 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 2871 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 2872 | "dev": true 2873 | }, 2874 | "has-flag": { 2875 | "version": "3.0.0", 2876 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2877 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2878 | "dev": true 2879 | }, 2880 | "hasha": { 2881 | "version": "5.2.2", 2882 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", 2883 | "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", 2884 | "dev": true, 2885 | "requires": { 2886 | "is-stream": "^2.0.0", 2887 | "type-fest": "^0.8.0" 2888 | } 2889 | }, 2890 | "html-escaper": { 2891 | "version": "2.0.2", 2892 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2893 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2894 | "dev": true 2895 | }, 2896 | "http-proxy-agent": { 2897 | "version": "4.0.1", 2898 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 2899 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 2900 | "dev": true, 2901 | "requires": { 2902 | "@tootallnate/once": "1", 2903 | "agent-base": "6", 2904 | "debug": "4" 2905 | } 2906 | }, 2907 | "https-proxy-agent": { 2908 | "version": "5.0.0", 2909 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 2910 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 2911 | "dev": true, 2912 | "requires": { 2913 | "agent-base": "6", 2914 | "debug": "4" 2915 | } 2916 | }, 2917 | "imurmurhash": { 2918 | "version": "0.1.4", 2919 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2920 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2921 | "dev": true 2922 | }, 2923 | "indent-string": { 2924 | "version": "4.0.0", 2925 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 2926 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 2927 | "dev": true 2928 | }, 2929 | "inflight": { 2930 | "version": "1.0.6", 2931 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2932 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2933 | "dev": true, 2934 | "requires": { 2935 | "once": "^1.3.0", 2936 | "wrappy": "1" 2937 | } 2938 | }, 2939 | "inherits": { 2940 | "version": "2.0.4", 2941 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2942 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2943 | "dev": true 2944 | }, 2945 | "is-fullwidth-code-point": { 2946 | "version": "3.0.0", 2947 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2948 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2949 | "dev": true 2950 | }, 2951 | "is-stream": { 2952 | "version": "2.0.1", 2953 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2954 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2955 | "dev": true 2956 | }, 2957 | "is-typedarray": { 2958 | "version": "1.0.0", 2959 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2960 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 2961 | "dev": true 2962 | }, 2963 | "is-windows": { 2964 | "version": "1.0.2", 2965 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2966 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2967 | "dev": true 2968 | }, 2969 | "isarray": { 2970 | "version": "1.0.0", 2971 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2972 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2973 | "dev": true 2974 | }, 2975 | "isexe": { 2976 | "version": "2.0.0", 2977 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2978 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2979 | "dev": true 2980 | }, 2981 | "istanbul-lib-coverage": { 2982 | "version": "3.0.0", 2983 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", 2984 | "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", 2985 | "dev": true 2986 | }, 2987 | "istanbul-lib-hook": { 2988 | "version": "3.0.0", 2989 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", 2990 | "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", 2991 | "dev": true, 2992 | "requires": { 2993 | "append-transform": "^2.0.0" 2994 | } 2995 | }, 2996 | "istanbul-lib-instrument": { 2997 | "version": "4.0.3", 2998 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", 2999 | "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", 3000 | "dev": true, 3001 | "requires": { 3002 | "@babel/core": "^7.7.5", 3003 | "@istanbuljs/schema": "^0.1.2", 3004 | "istanbul-lib-coverage": "^3.0.0", 3005 | "semver": "^6.3.0" 3006 | } 3007 | }, 3008 | "istanbul-lib-processinfo": { 3009 | "version": "2.0.2", 3010 | "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", 3011 | "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", 3012 | "dev": true, 3013 | "requires": { 3014 | "archy": "^1.0.0", 3015 | "cross-spawn": "^7.0.0", 3016 | "istanbul-lib-coverage": "^3.0.0-alpha.1", 3017 | "make-dir": "^3.0.0", 3018 | "p-map": "^3.0.0", 3019 | "rimraf": "^3.0.0", 3020 | "uuid": "^3.3.3" 3021 | } 3022 | }, 3023 | "istanbul-lib-report": { 3024 | "version": "3.0.0", 3025 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 3026 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 3027 | "dev": true, 3028 | "requires": { 3029 | "istanbul-lib-coverage": "^3.0.0", 3030 | "make-dir": "^3.0.0", 3031 | "supports-color": "^7.1.0" 3032 | }, 3033 | "dependencies": { 3034 | "has-flag": { 3035 | "version": "4.0.0", 3036 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3037 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3038 | "dev": true 3039 | }, 3040 | "supports-color": { 3041 | "version": "7.2.0", 3042 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3043 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3044 | "dev": true, 3045 | "requires": { 3046 | "has-flag": "^4.0.0" 3047 | } 3048 | } 3049 | } 3050 | }, 3051 | "istanbul-lib-source-maps": { 3052 | "version": "4.0.0", 3053 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", 3054 | "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", 3055 | "dev": true, 3056 | "requires": { 3057 | "debug": "^4.1.1", 3058 | "istanbul-lib-coverage": "^3.0.0", 3059 | "source-map": "^0.6.1" 3060 | }, 3061 | "dependencies": { 3062 | "source-map": { 3063 | "version": "0.6.1", 3064 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3065 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3066 | "dev": true 3067 | } 3068 | } 3069 | }, 3070 | "istanbul-reports": { 3071 | "version": "3.0.2", 3072 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", 3073 | "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", 3074 | "dev": true, 3075 | "requires": { 3076 | "html-escaper": "^2.0.0", 3077 | "istanbul-lib-report": "^3.0.0" 3078 | } 3079 | }, 3080 | "js-tokens": { 3081 | "version": "4.0.0", 3082 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3083 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3084 | "dev": true 3085 | }, 3086 | "js-yaml": { 3087 | "version": "3.14.1", 3088 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 3089 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 3090 | "dev": true, 3091 | "requires": { 3092 | "argparse": "^1.0.7", 3093 | "esprima": "^4.0.0" 3094 | } 3095 | }, 3096 | "jsesc": { 3097 | "version": "2.5.2", 3098 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 3099 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 3100 | "dev": true 3101 | }, 3102 | "json5": { 3103 | "version": "2.2.3", 3104 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 3105 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 3106 | "dev": true 3107 | }, 3108 | "listenercount": { 3109 | "version": "1.0.1", 3110 | "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", 3111 | "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", 3112 | "dev": true 3113 | }, 3114 | "locate-path": { 3115 | "version": "5.0.0", 3116 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 3117 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 3118 | "dev": true, 3119 | "requires": { 3120 | "p-locate": "^4.1.0" 3121 | } 3122 | }, 3123 | "lodash.flattendeep": { 3124 | "version": "4.4.0", 3125 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 3126 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 3127 | "dev": true 3128 | }, 3129 | "make-dir": { 3130 | "version": "3.1.0", 3131 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 3132 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 3133 | "dev": true, 3134 | "requires": { 3135 | "semver": "^6.0.0" 3136 | } 3137 | }, 3138 | "make-error": { 3139 | "version": "1.3.6", 3140 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 3141 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 3142 | "dev": true 3143 | }, 3144 | "minimatch": { 3145 | "version": "3.1.2", 3146 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3147 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3148 | "dev": true, 3149 | "requires": { 3150 | "brace-expansion": "^1.1.7" 3151 | } 3152 | }, 3153 | "minimist": { 3154 | "version": "1.2.6", 3155 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3156 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 3157 | "dev": true 3158 | }, 3159 | "mkdirp": { 3160 | "version": "0.5.5", 3161 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 3162 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 3163 | "dev": true, 3164 | "requires": { 3165 | "minimist": "^1.2.5" 3166 | } 3167 | }, 3168 | "ms": { 3169 | "version": "2.1.2", 3170 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3171 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3172 | "dev": true 3173 | }, 3174 | "node-preload": { 3175 | "version": "0.2.1", 3176 | "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", 3177 | "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", 3178 | "dev": true, 3179 | "requires": { 3180 | "process-on-spawn": "^1.0.0" 3181 | } 3182 | }, 3183 | "node-releases": { 3184 | "version": "1.1.74", 3185 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz", 3186 | "integrity": "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw==", 3187 | "dev": true 3188 | }, 3189 | "nyc": { 3190 | "version": "15.1.0", 3191 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", 3192 | "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", 3193 | "dev": true, 3194 | "requires": { 3195 | "@istanbuljs/load-nyc-config": "^1.0.0", 3196 | "@istanbuljs/schema": "^0.1.2", 3197 | "caching-transform": "^4.0.0", 3198 | "convert-source-map": "^1.7.0", 3199 | "decamelize": "^1.2.0", 3200 | "find-cache-dir": "^3.2.0", 3201 | "find-up": "^4.1.0", 3202 | "foreground-child": "^2.0.0", 3203 | "get-package-type": "^0.1.0", 3204 | "glob": "^7.1.6", 3205 | "istanbul-lib-coverage": "^3.0.0", 3206 | "istanbul-lib-hook": "^3.0.0", 3207 | "istanbul-lib-instrument": "^4.0.0", 3208 | "istanbul-lib-processinfo": "^2.0.2", 3209 | "istanbul-lib-report": "^3.0.0", 3210 | "istanbul-lib-source-maps": "^4.0.0", 3211 | "istanbul-reports": "^3.0.2", 3212 | "make-dir": "^3.0.0", 3213 | "node-preload": "^0.2.1", 3214 | "p-map": "^3.0.0", 3215 | "process-on-spawn": "^1.0.0", 3216 | "resolve-from": "^5.0.0", 3217 | "rimraf": "^3.0.0", 3218 | "signal-exit": "^3.0.2", 3219 | "spawn-wrap": "^2.0.0", 3220 | "test-exclude": "^6.0.0", 3221 | "yargs": "^15.0.2" 3222 | } 3223 | }, 3224 | "once": { 3225 | "version": "1.4.0", 3226 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3227 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3228 | "dev": true, 3229 | "requires": { 3230 | "wrappy": "1" 3231 | } 3232 | }, 3233 | "p-limit": { 3234 | "version": "2.3.0", 3235 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 3236 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 3237 | "dev": true, 3238 | "requires": { 3239 | "p-try": "^2.0.0" 3240 | } 3241 | }, 3242 | "p-locate": { 3243 | "version": "4.1.0", 3244 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 3245 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 3246 | "dev": true, 3247 | "requires": { 3248 | "p-limit": "^2.2.0" 3249 | } 3250 | }, 3251 | "p-map": { 3252 | "version": "3.0.0", 3253 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", 3254 | "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", 3255 | "dev": true, 3256 | "requires": { 3257 | "aggregate-error": "^3.0.0" 3258 | } 3259 | }, 3260 | "p-try": { 3261 | "version": "2.2.0", 3262 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3263 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3264 | "dev": true 3265 | }, 3266 | "package-hash": { 3267 | "version": "4.0.0", 3268 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", 3269 | "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", 3270 | "dev": true, 3271 | "requires": { 3272 | "graceful-fs": "^4.1.15", 3273 | "hasha": "^5.0.0", 3274 | "lodash.flattendeep": "^4.4.0", 3275 | "release-zalgo": "^1.0.0" 3276 | } 3277 | }, 3278 | "path-exists": { 3279 | "version": "4.0.0", 3280 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3281 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3282 | "dev": true 3283 | }, 3284 | "path-is-absolute": { 3285 | "version": "1.0.1", 3286 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3287 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3288 | "dev": true 3289 | }, 3290 | "path-key": { 3291 | "version": "3.1.1", 3292 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3293 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3294 | "dev": true 3295 | }, 3296 | "pkg-dir": { 3297 | "version": "4.2.0", 3298 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3299 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3300 | "dev": true, 3301 | "requires": { 3302 | "find-up": "^4.0.0" 3303 | } 3304 | }, 3305 | "process-nextick-args": { 3306 | "version": "2.0.1", 3307 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3308 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3309 | "dev": true 3310 | }, 3311 | "process-on-spawn": { 3312 | "version": "1.0.0", 3313 | "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", 3314 | "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", 3315 | "dev": true, 3316 | "requires": { 3317 | "fromentries": "^1.2.0" 3318 | } 3319 | }, 3320 | "readable-stream": { 3321 | "version": "2.3.7", 3322 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3323 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3324 | "dev": true, 3325 | "requires": { 3326 | "core-util-is": "~1.0.0", 3327 | "inherits": "~2.0.3", 3328 | "isarray": "~1.0.0", 3329 | "process-nextick-args": "~2.0.0", 3330 | "safe-buffer": "~5.1.1", 3331 | "string_decoder": "~1.1.1", 3332 | "util-deprecate": "~1.0.1" 3333 | } 3334 | }, 3335 | "release-zalgo": { 3336 | "version": "1.0.0", 3337 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 3338 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 3339 | "dev": true, 3340 | "requires": { 3341 | "es6-error": "^4.0.1" 3342 | } 3343 | }, 3344 | "require-directory": { 3345 | "version": "2.1.1", 3346 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3347 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3348 | "dev": true 3349 | }, 3350 | "require-main-filename": { 3351 | "version": "2.0.0", 3352 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 3353 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 3354 | "dev": true 3355 | }, 3356 | "resolve-from": { 3357 | "version": "5.0.0", 3358 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3359 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3360 | "dev": true 3361 | }, 3362 | "rimraf": { 3363 | "version": "3.0.2", 3364 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3365 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3366 | "dev": true, 3367 | "requires": { 3368 | "glob": "^7.1.3" 3369 | } 3370 | }, 3371 | "safe-buffer": { 3372 | "version": "5.1.2", 3373 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3374 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3375 | "dev": true 3376 | }, 3377 | "semver": { 3378 | "version": "6.3.0", 3379 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3380 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3381 | "dev": true 3382 | }, 3383 | "set-blocking": { 3384 | "version": "2.0.0", 3385 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3386 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 3387 | "dev": true 3388 | }, 3389 | "setimmediate": { 3390 | "version": "1.0.5", 3391 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 3392 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 3393 | "dev": true 3394 | }, 3395 | "shebang-command": { 3396 | "version": "2.0.0", 3397 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3398 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3399 | "dev": true, 3400 | "requires": { 3401 | "shebang-regex": "^3.0.0" 3402 | } 3403 | }, 3404 | "shebang-regex": { 3405 | "version": "3.0.0", 3406 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3407 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3408 | "dev": true 3409 | }, 3410 | "signal-exit": { 3411 | "version": "3.0.3", 3412 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 3413 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 3414 | "dev": true 3415 | }, 3416 | "source-map": { 3417 | "version": "0.5.7", 3418 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3419 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3420 | "dev": true 3421 | }, 3422 | "source-map-support": { 3423 | "version": "0.5.19", 3424 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 3425 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 3426 | "dev": true, 3427 | "requires": { 3428 | "buffer-from": "^1.0.0", 3429 | "source-map": "^0.6.0" 3430 | }, 3431 | "dependencies": { 3432 | "source-map": { 3433 | "version": "0.6.1", 3434 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3435 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3436 | "dev": true 3437 | } 3438 | } 3439 | }, 3440 | "spawn-wrap": { 3441 | "version": "2.0.0", 3442 | "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", 3443 | "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", 3444 | "dev": true, 3445 | "requires": { 3446 | "foreground-child": "^2.0.0", 3447 | "is-windows": "^1.0.2", 3448 | "make-dir": "^3.0.0", 3449 | "rimraf": "^3.0.0", 3450 | "signal-exit": "^3.0.2", 3451 | "which": "^2.0.1" 3452 | } 3453 | }, 3454 | "sprintf-js": { 3455 | "version": "1.0.3", 3456 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3457 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3458 | "dev": true 3459 | }, 3460 | "string_decoder": { 3461 | "version": "1.1.1", 3462 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3463 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3464 | "dev": true, 3465 | "requires": { 3466 | "safe-buffer": "~5.1.0" 3467 | } 3468 | }, 3469 | "string-width": { 3470 | "version": "4.2.2", 3471 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 3472 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 3473 | "dev": true, 3474 | "requires": { 3475 | "emoji-regex": "^8.0.0", 3476 | "is-fullwidth-code-point": "^3.0.0", 3477 | "strip-ansi": "^6.0.0" 3478 | } 3479 | }, 3480 | "strip-ansi": { 3481 | "version": "6.0.0", 3482 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3483 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3484 | "dev": true, 3485 | "requires": { 3486 | "ansi-regex": "^5.0.0" 3487 | } 3488 | }, 3489 | "strip-bom": { 3490 | "version": "4.0.0", 3491 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 3492 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 3493 | "dev": true 3494 | }, 3495 | "supports-color": { 3496 | "version": "5.5.0", 3497 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3498 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3499 | "dev": true, 3500 | "requires": { 3501 | "has-flag": "^3.0.0" 3502 | } 3503 | }, 3504 | "test-exclude": { 3505 | "version": "6.0.0", 3506 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 3507 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 3508 | "dev": true, 3509 | "requires": { 3510 | "@istanbuljs/schema": "^0.1.2", 3511 | "glob": "^7.1.4", 3512 | "minimatch": "^3.0.4" 3513 | } 3514 | }, 3515 | "to-fast-properties": { 3516 | "version": "2.0.0", 3517 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3518 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 3519 | "dev": true 3520 | }, 3521 | "traverse": { 3522 | "version": "0.3.9", 3523 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", 3524 | "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", 3525 | "dev": true 3526 | }, 3527 | "ts-node": { 3528 | "version": "8.10.2", 3529 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", 3530 | "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", 3531 | "dev": true, 3532 | "requires": { 3533 | "arg": "^4.1.0", 3534 | "diff": "^4.0.1", 3535 | "make-error": "^1.1.1", 3536 | "source-map-support": "^0.5.17", 3537 | "yn": "3.1.1" 3538 | } 3539 | }, 3540 | "type-fest": { 3541 | "version": "0.8.1", 3542 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3543 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 3544 | "dev": true 3545 | }, 3546 | "typedarray-to-buffer": { 3547 | "version": "3.1.5", 3548 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 3549 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 3550 | "dev": true, 3551 | "requires": { 3552 | "is-typedarray": "^1.0.0" 3553 | } 3554 | }, 3555 | "typescript": { 3556 | "version": "3.9.10", 3557 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", 3558 | "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", 3559 | "dev": true 3560 | }, 3561 | "unzipper": { 3562 | "version": "0.10.11", 3563 | "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", 3564 | "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", 3565 | "dev": true, 3566 | "requires": { 3567 | "big-integer": "^1.6.17", 3568 | "binary": "~0.3.0", 3569 | "bluebird": "~3.4.1", 3570 | "buffer-indexof-polyfill": "~1.0.0", 3571 | "duplexer2": "~0.1.4", 3572 | "fstream": "^1.0.12", 3573 | "graceful-fs": "^4.2.2", 3574 | "listenercount": "~1.0.1", 3575 | "readable-stream": "~2.3.6", 3576 | "setimmediate": "~1.0.4" 3577 | } 3578 | }, 3579 | "util-deprecate": { 3580 | "version": "1.0.2", 3581 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3582 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3583 | "dev": true 3584 | }, 3585 | "uuid": { 3586 | "version": "3.4.0", 3587 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 3588 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 3589 | "dev": true 3590 | }, 3591 | "vscode-test": { 3592 | "version": "1.6.1", 3593 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", 3594 | "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", 3595 | "dev": true, 3596 | "requires": { 3597 | "http-proxy-agent": "^4.0.1", 3598 | "https-proxy-agent": "^5.0.0", 3599 | "rimraf": "^3.0.2", 3600 | "unzipper": "^0.10.11" 3601 | } 3602 | }, 3603 | "which": { 3604 | "version": "2.0.2", 3605 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3606 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3607 | "dev": true, 3608 | "requires": { 3609 | "isexe": "^2.0.0" 3610 | } 3611 | }, 3612 | "which-module": { 3613 | "version": "2.0.0", 3614 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 3615 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 3616 | "dev": true 3617 | }, 3618 | "wrap-ansi": { 3619 | "version": "6.2.0", 3620 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 3621 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 3622 | "dev": true, 3623 | "requires": { 3624 | "ansi-styles": "^4.0.0", 3625 | "string-width": "^4.1.0", 3626 | "strip-ansi": "^6.0.0" 3627 | }, 3628 | "dependencies": { 3629 | "ansi-styles": { 3630 | "version": "4.3.0", 3631 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3632 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3633 | "dev": true, 3634 | "requires": { 3635 | "color-convert": "^2.0.1" 3636 | } 3637 | }, 3638 | "color-convert": { 3639 | "version": "2.0.1", 3640 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3641 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3642 | "dev": true, 3643 | "requires": { 3644 | "color-name": "~1.1.4" 3645 | } 3646 | }, 3647 | "color-name": { 3648 | "version": "1.1.4", 3649 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3650 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3651 | "dev": true 3652 | } 3653 | } 3654 | }, 3655 | "wrappy": { 3656 | "version": "1.0.2", 3657 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3658 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3659 | "dev": true 3660 | }, 3661 | "write-file-atomic": { 3662 | "version": "3.0.3", 3663 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 3664 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 3665 | "dev": true, 3666 | "requires": { 3667 | "imurmurhash": "^0.1.4", 3668 | "is-typedarray": "^1.0.0", 3669 | "signal-exit": "^3.0.2", 3670 | "typedarray-to-buffer": "^3.1.5" 3671 | } 3672 | }, 3673 | "y18n": { 3674 | "version": "4.0.3", 3675 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 3676 | "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", 3677 | "dev": true 3678 | }, 3679 | "yargs": { 3680 | "version": "15.4.1", 3681 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", 3682 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 3683 | "dev": true, 3684 | "requires": { 3685 | "cliui": "^6.0.0", 3686 | "decamelize": "^1.2.0", 3687 | "find-up": "^4.1.0", 3688 | "get-caller-file": "^2.0.1", 3689 | "require-directory": "^2.1.1", 3690 | "require-main-filename": "^2.0.0", 3691 | "set-blocking": "^2.0.0", 3692 | "string-width": "^4.2.0", 3693 | "which-module": "^2.0.0", 3694 | "y18n": "^4.0.0", 3695 | "yargs-parser": "^18.1.2" 3696 | } 3697 | }, 3698 | "yargs-parser": { 3699 | "version": "18.1.3", 3700 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 3701 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 3702 | "dev": true, 3703 | "requires": { 3704 | "camelcase": "^5.0.0", 3705 | "decamelize": "^1.2.0" 3706 | } 3707 | }, 3708 | "yn": { 3709 | "version": "3.1.1", 3710 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 3711 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 3712 | "dev": true 3713 | } 3714 | } 3715 | } 3716 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "excel-to-markdown-table", 3 | "displayName": "Excel to Markdown table", 4 | "description": "Copy Excel data and convert to Markdown table format", 5 | "version": "1.3.0", 6 | "publisher": "csholmq", 7 | "repository": { 8 | "url": "https://github.com/csholmq/vscode-excel-to-markdown-table" 9 | }, 10 | "engines": { 11 | "vscode": "^1.59.0" 12 | }, 13 | "categories": [ 14 | "Other" 15 | ], 16 | "activationEvents": [ 17 | "onCommand:extension.excelToMarkdown", 18 | "onLanguage:markdown" 19 | ], 20 | "main": "./out/extension", 21 | "contributes": { 22 | "keybindings": { 23 | "key": "shift+alt+v", 24 | "command": "extension.excelToMarkdown", 25 | "title": "Excel to Markdown table", 26 | "when": "editorLangId == 'markdown'" 27 | }, 28 | "commands": { 29 | "command": "extension.excelToMarkdown", 30 | "title": "Excel to Markdown table" 31 | } 32 | }, 33 | "scripts": { 34 | "vscode:prepublish": "npm run compile", 35 | "compile": "tsc -p ./", 36 | "watch": "tsc -watch -p ./", 37 | "pretest": "npm run compile", 38 | "test": "node ./out/test/runTest.js", 39 | "mocha": "./node_modules/.bin/mocha --opts ./src/test/mocha.opts", 40 | "coverage": "./node_modules/.bin/nyc npm run mocha" 41 | }, 42 | "devDependencies": { 43 | "@types/mocha": "^5.2.7", 44 | "@types/node": "^13.13.52", 45 | "@types/vscode": "^1.59.0", 46 | "nyc": "^15.1.0", 47 | "source-map-support": "^0.5.19", 48 | "ts-node": "^8.10.2", 49 | "typescript": "^3.9.10", 50 | "vscode-test": "^1.6.1" 51 | }, 52 | "dependencies": {}, 53 | "nyc": { 54 | "extension": [ 55 | ".ts", 56 | ".tsx" 57 | ], 58 | "include": [ 59 | "src/**/*.ts" 60 | ], 61 | "exclude": [ 62 | "**/*.d.ts", 63 | "**/*.test.ts", 64 | "src/test/index.ts" 65 | ], 66 | "reporter": [ 67 | "html" 68 | ], 69 | "all": true 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/excel-markdown-helpers.ts: -------------------------------------------------------------------------------- 1 | import { TableCellAlignment, TableSizeMetadata } from './interfaces' 2 | import { ALIGNED_LEFT_SYNTAX, ALIGNED_CENTER_SYNTAX, ALIGNED_RIGHT_SYNTAX } from './table-alignment-syntax' 3 | 4 | const ALIGNED_LEFT = "l"; 5 | const ALIGNED_RIGHT = "r"; 6 | const ALIGNED_CENTER = "c"; 7 | const EXCEL_COLUMN_DELIMITER = "\t"; 8 | const MARKDOWN_NEWLINE = "
"; 9 | const UNESCAPED_DOUBLE_QUOTE = '"'; 10 | 11 | // UNI_NEXT_LINE = '\u0085' 12 | // UNI_LINE_SEPARATOR = '\u2028' 13 | // UNI_PARAGRAPH_SEPARATOR = `\u2029` 14 | const EXCEL_ROW_DELIMITER_REGEX = /[\n\u0085\u2028\u2029]|\r\n?/g 15 | const COLUMN_ALIGNMENT_REGEX = /^(\^[lcr])/i; 16 | const EXCEL_NEWLINE_ESCAPED_CELL_REGEX = /"([^\t]*(?<=[^\r])\n[^\t]*)"/g; 17 | const EXCEL_NEWLINE_REGEX = /\n/g; 18 | const EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX = /""/g; 19 | 20 | /** 21 | * Apply markdown syntax to create padded cells for each row of data in the table 22 | * @param rows Rows of text data 23 | * @param columnWidths Width of each column in the destination table 24 | */ 25 | export function addMarkdownSyntax(rows: string[][], columnWidths: number[]) { 26 | return rows.map(function (row, rowIndex) { 27 | // | Name | Title | Email Address | 28 | // |--------------|-------|----------------| 29 | // | Jane Atler | CEO | jane@acme.com | 30 | // | John Doherty | CTO | john@acme.com | 31 | // | Sally Smith | CFO | sally@acme.com | 32 | return "| " + row.map(function (column, index) { 33 | // Create a padded string from the cell content 34 | return column + Array(columnWidths[index] - column.length + 1).join(" "); 35 | }).join(" | ") + " |"; 36 | }); 37 | } 38 | 39 | /** 40 | * Adds Alignment colons and inserts Header hyphens 41 | * @param markdownRows Each row in the markdown output table 42 | * @param columnWidths Padded widths for each column 43 | * @param colAlignments Alignments for each cell's text (l = left, c = center, r = right) 44 | */ 45 | export function addAlignmentSyntax(markdownRows: string[], columnWidths: number[], colAlignments: string[]):string[] { 46 | // Deepcopy: https://stackoverflow.com/questions/35504310/deep-copy-an-array-in-angular-2-typescript#35504348 47 | let result = Object.assign([], markdownRows); 48 | 49 | // Insert the markdown alignment syntax as second row in the output table 50 | result.splice(1, 0, 51 | "|" + columnWidths.map(function (width, index) { 52 | let {prefix, postfix, adjust} = calculateAlignmentMarkdownSyntaxMetadata(colAlignments[index]); 53 | return prefix + Array(columnWidths[index] + 3 - adjust).join("-") + postfix; 54 | }).join("|") + "|"); 55 | return result; 56 | } 57 | 58 | /** 59 | * Derives the Markdown Alignment syntax metadata on how to align the cell text 60 | * @param alignment The cell text alignment (l = left, c = center, r = right) 61 | */ 62 | export function calculateAlignmentMarkdownSyntaxMetadata(alignment: string) : TableCellAlignment { 63 | 64 | switch (alignment) { 65 | case ALIGNED_LEFT: return ALIGNED_LEFT_SYNTAX 66 | case ALIGNED_CENTER: return ALIGNED_CENTER_SYNTAX 67 | case ALIGNED_RIGHT: return ALIGNED_RIGHT_SYNTAX 68 | default: return ALIGNED_LEFT_SYNTAX 69 | } 70 | } 71 | 72 | /** 73 | * Derives alignments from excel table data and calculates 74 | * column padding for each column 75 | * @param rows Table of data from Excel 76 | */ 77 | export function getColumnWidthsAndAlignments(rows: string[][]) : TableSizeMetadata { 78 | let colAlignments: string[]=[]; 79 | return { 80 | columnWidths: rows[0].map(function (column, columnIndex) { 81 | // Derive column alignment from excel column header text 82 | let alignment = columnAlignment(column); 83 | colAlignments.push(alignment); 84 | 85 | // Replace header text with unaligned header text 86 | column = column.replace(COLUMN_ALIGNMENT_REGEX, ""); 87 | rows[0][columnIndex] = column; 88 | 89 | // Return max width for this column at columnIndex to 90 | // support all rows in the table 91 | return columnWidth(rows, columnIndex); 92 | }), 93 | colAlignments: colAlignments 94 | }; 95 | } 96 | 97 | /** 98 | * Maps the original header alignment to an internal alignment 99 | * @param columnHeaderText The original Excel column header text 100 | */ 101 | export function columnAlignment(columnHeaderText: string): string { 102 | 103 | var m = columnHeaderText.match(COLUMN_ALIGNMENT_REGEX); 104 | 105 | if (m) { 106 | var alignChar = m[1][1].toLowerCase(); 107 | return columnAlignmentFromChar(alignChar); 108 | } 109 | 110 | // Default to left alignment 111 | return ALIGNED_LEFT; 112 | } 113 | 114 | /** 115 | * Maps the original column alignment to an internal alignment 116 | * @param alignChar Alignment character (l = left, c = center, r = right) 117 | */ 118 | export function columnAlignmentFromChar(alignChar: string) { 119 | switch (alignChar) { 120 | case ALIGNED_LEFT: return ALIGNED_LEFT; 121 | case ALIGNED_CENTER: return ALIGNED_CENTER; 122 | case ALIGNED_RIGHT: return ALIGNED_RIGHT; 123 | default: return ALIGNED_LEFT 124 | } 125 | } 126 | 127 | /** 128 | * Calculates the max content length across all rows of the table 129 | * for the given column index 130 | * @param rows All rows of the original Excel table 131 | * @param columnIndex The column index to calculate the length for 132 | */ 133 | export function columnWidth(rows: string[][], columnIndex: number) : number{ 134 | return Math.max.apply(null, rows.map(function (row) { 135 | return (row[columnIndex] && row[columnIndex].length) || 0; 136 | })) 137 | } 138 | 139 | /** 140 | * Takes the raw clipboard content and creates a table-like structure from the data 141 | * @param data The raw content from the clipboard 142 | */ 143 | export function splitIntoRowsAndColumns(data: string):string[][] { 144 | // Split rows on newline 145 | var rows = data.split(EXCEL_ROW_DELIMITER_REGEX).map(function (row) { 146 | // Split columns on tab 147 | return row.split(EXCEL_COLUMN_DELIMITER); 148 | }); 149 | 150 | return rows; 151 | } 152 | 153 | /** 154 | * Replace an intra-cell-newlines 155 | * @param data The raw content from the Excel via the clipboard 156 | * @see https://github.com/csholmq/vscode-excel-to-markdown-table/issues/3 157 | */ 158 | export function replaceIntraCellNewline(data: string):string { 159 | let cellReplacer = _ => _.slice(1, -1) 160 | .replace(EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX, UNESCAPED_DOUBLE_QUOTE) 161 | .replace(EXCEL_NEWLINE_REGEX, MARKDOWN_NEWLINE); 162 | return data.replace(EXCEL_NEWLINE_ESCAPED_CELL_REGEX, cellReplacer); 163 | } -------------------------------------------------------------------------------- /src/excel-markdown-tables.ts: -------------------------------------------------------------------------------- 1 | import * as helper from './excel-markdown-helpers'; 2 | 3 | const LINE_ENDING = "\n" 4 | 5 | /** 6 | * Converts a string payload into a Markdown formatted table 7 | * @param rawData A table-like string 8 | */ 9 | export function excelToMarkdown(rawData: string): string { 10 | let data = rawData.trim(); 11 | var intraCellNewlineReplacedData = helper.replaceIntraCellNewline(data) 12 | var rows = helper.splitIntoRowsAndColumns(intraCellNewlineReplacedData); 13 | var {columnWidths, colAlignments } = helper.getColumnWidthsAndAlignments(rows); 14 | const markdownRows = helper.addMarkdownSyntax(rows, columnWidths); 15 | 16 | return helper.addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING); 17 | } 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // The module 'vscode' contains the VS Code extensibility API 4 | // Import the module and reference it with the alias vscode in your code below 5 | import * as vscode from 'vscode'; 6 | import {excelToMarkdown} from './excel-markdown-tables' 7 | 8 | 9 | /** 10 | * Registers the extension with VS Code 11 | * This extension will run when the editor's language is set to 'markdown'. 12 | * The extension can be called through Ctrl-Shift-P and selecting the XXX Option, 13 | * or by using the shortcut Shift-Alt-V 14 | * @param context 15 | */ 16 | export function activate(context: vscode.ExtensionContext) { 17 | var disposable = vscode.commands.registerCommand('extension.excelToMarkdown', async () => { 18 | const text = await vscode.env.clipboard.readText(); 19 | pasteText(text); 20 | }); 21 | 22 | context.subscriptions.push(disposable); 23 | } 24 | 25 | 26 | 27 | // this method is called when your extension is deactivated 28 | export function deactivate() { 29 | } 30 | 31 | 32 | /** 33 | * Converts the clipboard contents to a markdown table and pastes into the document 34 | * @param rawData The raw clipboard contents containing the excel table to convert 35 | */ 36 | function pasteText(rawData: string) { 37 | 38 | let paste = excelToMarkdown(rawData); 39 | 40 | let editor = vscode.window.activeTextEditor; 41 | editor.edit(_ => _.replace(editor.selection, paste)); 42 | } 43 | -------------------------------------------------------------------------------- /src/interfaces.ts: -------------------------------------------------------------------------------- 1 | export interface TableCellAlignment { 2 | prefix: string, 3 | postfix: string, 4 | adjust: number 5 | } 6 | 7 | export interface TableSizeMetadata { 8 | columnWidths: number[], 9 | colAlignments: string[] 10 | } -------------------------------------------------------------------------------- /src/table-alignment-syntax.ts: -------------------------------------------------------------------------------- 1 | import { TableCellAlignment } from './interfaces'; 2 | 3 | export const ALIGNED_LEFT_SYNTAX: TableCellAlignment = { 4 | prefix: "", 5 | postfix: "", 6 | adjust: 0 7 | } 8 | 9 | export const ALIGNED_RIGHT_SYNTAX: TableCellAlignment = { 10 | prefix: "", 11 | postfix: ":", 12 | adjust: 1 13 | } 14 | 15 | export const ALIGNED_CENTER_SYNTAX: TableCellAlignment = { 16 | prefix: ":", 17 | postfix: ":", 18 | adjust: 2 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | import { runTests } from 'vscode-test'; 4 | 5 | async function main() { 6 | try { 7 | // The folder containing the Extension Manifest package.json 8 | // Passed to `--extensionDevelopmentPath` 9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 10 | 11 | // The path to test runner 12 | // Passed to --extensionTestsPath 13 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 14 | 15 | // Download VS Code, unzip it and run the integration test 16 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 17 | } catch (err) { 18 | console.error('Failed to run tests'); 19 | process.exit(1); 20 | } 21 | } 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /src/test/suite/excel-markdown-helpers.test.ts: -------------------------------------------------------------------------------- 1 | 2 | import * as assert from 'assert'; 3 | 4 | import * as hlp from '../../excel-markdown-helpers'; 5 | import { TableSizeMetadata } from '../../interfaces'; 6 | 7 | describe('Helper Tests', () => { 8 | describe('columnWidth', () => { 9 | it("columnWidth", () => { 10 | const row = [["first", "second"]]; 11 | 12 | assert.equal(hlp.columnWidth(row, 0), 5); 13 | assert.equal(hlp.columnWidth(row, 1), 6); 14 | }); 15 | }); 16 | 17 | describe('splitIntoRowsAndColumns', () => { 18 | it("splitIntoRowsAndColumns", () => { 19 | assert.deepEqual(hlp.splitIntoRowsAndColumns("first\tsecond"), [["first", "second"]]), "Basic split not working"; 20 | assert.deepEqual(hlp.splitIntoRowsAndColumns("first\tsecond\t\t"), [["first", "second", "", ""]], "Should add empty tabs as columns"); 21 | assert.deepEqual(hlp.splitIntoRowsAndColumns("first\tsecond\r\nnew\trow"),[["first","second"],["new","row"]]); 22 | }); 23 | }); 24 | 25 | 26 | describe("addMarkdownSyntax", () => { 27 | 28 | it('should generate header for single column', () => { 29 | assert.equal(hlp.addMarkdownSyntax([["test"]], [4]), "| test |"); 30 | }); 31 | 32 | it('should generate header for multiple columns', () => { 33 | assert.equal(hlp.addMarkdownSyntax([["test", "column2"]], [4, 7]), "| test | column2 |"); 34 | assert.equal(hlp.addMarkdownSyntax([["test", "column2", "x"]], [4, 7, 1]), "| test | column2 | x |"); 35 | }); 36 | 37 | it('should generate header for multiple rows and columns', () => { 38 | let rows = [ 39 | ["test", "column2"], 40 | ["123", "test"] 41 | ]; 42 | let colWidths = [4, 7]; 43 | let expected = [ 44 | "| test | column2 |", 45 | "| 123 | test |" 46 | ]; 47 | 48 | let actual = hlp.addMarkdownSyntax(rows, colWidths); 49 | assert.deepEqual(actual, expected); 50 | }); 51 | 52 | }); 53 | 54 | 55 | describe('addAlignmentSyntax', () => { 56 | it("addAlignmentSyntax", () => { 57 | assert.deepEqual(hlp.addAlignmentSyntax(["test"], [5], []), [ 'test', '|-------|' ]); 58 | }); 59 | }); 60 | 61 | 62 | describe('calculateAlignmentMarkdownSyntaxMetadata', () => { 63 | it('should get markdown syntax for valid alignment characters', () => { 64 | assert.deepEqual(hlp.calculateAlignmentMarkdownSyntaxMetadata('l'), { prefix: '', postfix: '', adjust: 0 }); 65 | assert.deepEqual(hlp.calculateAlignmentMarkdownSyntaxMetadata('c'), { prefix: ':', postfix: ':', adjust: 2 }); 66 | assert.deepEqual(hlp.calculateAlignmentMarkdownSyntaxMetadata('r'), { prefix: '', postfix: ':', adjust: 1 }); 67 | }); 68 | 69 | it('should get default let-aligned markdown syntax for non-valid alignment characters', () => { 70 | assert.deepEqual(hlp.calculateAlignmentMarkdownSyntaxMetadata('x'), { prefix: '', postfix: '', adjust: 0 }); 71 | assert.deepEqual(hlp.calculateAlignmentMarkdownSyntaxMetadata('?'), { prefix: '', postfix: '', adjust: 0 }); 72 | }); 73 | }); 74 | 75 | describe('getColumnWidthsAndAlignments', () => { 76 | it('should get widths and alignment for single row of data', () => { 77 | let rows = [['test', 'column']]; 78 | let expected: TableSizeMetadata = { 79 | columnWidths: [4,6], 80 | colAlignments: ['l', 'l'] 81 | } 82 | assert.deepEqual(hlp.getColumnWidthsAndAlignments(rows), expected); 83 | }); 84 | 85 | it('should get widths and alignment for multiple rows of data', () => { 86 | let rows = [['^ltest', '^ccolumn', '^rright', '^xinvalid'], [ 'x', 'longstring', '', '123' ]]; 87 | let expected: TableSizeMetadata = { 88 | columnWidths: [4,10, 5, 9], 89 | colAlignments: ['l', 'c', 'r', 'l'] 90 | } 91 | assert.deepEqual(hlp.getColumnWidthsAndAlignments(rows), expected); 92 | }); 93 | }); 94 | 95 | describe('columnAlignment', () => { 96 | it('should get correct alignment for valid alignment characters', () => { 97 | assert.equal(hlp.columnAlignment('^ltext'), 'l'); 98 | assert.equal(hlp.columnAlignment('^ctext'), 'c'); 99 | assert.equal(hlp.columnAlignment('^rtext'), 'r'); 100 | 101 | }); 102 | 103 | it('should get default left alignment for non-valid alignment characters', () => { 104 | assert.equal(hlp.columnAlignment('^xtext'), 'l'); 105 | assert.equal(hlp.columnAlignment('^?text'), 'l'); 106 | }); 107 | }); 108 | 109 | describe('columnAlignmentFromChar', () => { 110 | it('should get correct alignment character for valid input', () => { 111 | assert.equal(hlp.columnAlignmentFromChar('l'), 'l'); 112 | assert.equal(hlp.columnAlignmentFromChar('c'), 'c'); 113 | assert.equal(hlp.columnAlignmentFromChar('r'), 'r'); 114 | }); 115 | 116 | it('should get default left alignment for non valid input', () => { 117 | assert.equal(hlp.columnAlignmentFromChar('x'), 'l'); 118 | assert.equal(hlp.columnAlignmentFromChar('?'), 'l'); 119 | }); 120 | }); 121 | 122 | describe('replaceIntraCellNewline', () => { 123 | it('should replace an intra-cell-newline and unescape a double quotes correctly', () => { 124 | let rawData = '"aaa\tbbb"\tccc\r\n"""dd\nzz"""\t"ee\nff"\t"g"g"'; 125 | let expected = '"aaa\tbbb"\tccc\r\n"dd
zz"\tee
ff\t"g"g"'; 126 | 127 | let actual = hlp.replaceIntraCellNewline(rawData); 128 | assert.deepEqual(actual, expected); 129 | }); 130 | }); 131 | 132 | }); 133 | -------------------------------------------------------------------------------- /src/test/suite/excel-markdown-tables.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | 3 | import * as emt from '../../excel-markdown-tables'; 4 | 5 | describe("Excel Markdown tables API Tests", () => { 6 | 7 | it("excelToMarkdown", () => { 8 | assert.equal(emt.excelToMarkdown("test"), "| test |\n|------|"); 9 | assert.equal(emt.excelToMarkdown("one\ttwo\r\nthree"),"| one | two |\n|-------|-----|\n| three |"); 10 | }); 11 | 12 | it("excelToMarkdown - Alignment", () => { 13 | assert.equal(emt.excelToMarkdown("^rtest"), "| test |\n|-----:|"); 14 | assert.equal(emt.excelToMarkdown("^ctest"), "| test |\n|:----:|"); 15 | assert.equal(emt.excelToMarkdown("^ltest"), "| test |\n|------|"); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | 5 | export function run(): Promise { 6 | // Create the mocha test 7 | const mocha = new Mocha({ 8 | ui: 'tdd', 9 | }); 10 | mocha.useColors(true); 11 | 12 | const testsRoot = path.resolve(__dirname, '..'); 13 | 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | 20 | // Add files to the test suite 21 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 22 | 23 | try { 24 | // Run the mocha test 25 | mocha.run(failures => { 26 | if (failures > 0) { 27 | e(new Error(`${failures} tests failed.`)); 28 | } else { 29 | c(); 30 | } 31 | }); 32 | } catch (err) { 33 | e(err); 34 | } 35 | }); 36 | }); 37 | } 38 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src" 11 | }, 12 | "exclude": [ 13 | "node_modules", 14 | ".vscode-test" 15 | ] 16 | } -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your VS Code Extension 2 | 3 | ## What's in the folder 4 | * This folder contains all of the files necessary for your extension. 5 | * `package.json` - this is the manifest file in which you declare your extension and command. 6 | The sample plugin registers a command and defines its title and command name. With this information 7 | VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. 8 | * `src/extension.ts` - this is the main file where you will provide the implementation of your command. 9 | The file exports one function, `activate`, which is called the very first time your extension is 10 | activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. 11 | We pass the function containing the implementation of the command as the second parameter to 12 | `registerCommand`. 13 | 14 | ## Get up and running straight away 15 | * Press `F5` to open a new window with your extension loaded. 16 | * Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. 17 | * Set breakpoints in your code inside `src/extension.ts` to debug your extension. 18 | * Find output from your extension in the debug console. 19 | 20 | ## Make changes 21 | * You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. 22 | * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. 23 | 24 | ## Explore the API 25 | * You can open the full set of our API when you open the file `node_modules/vscode/vscode.d.ts`. 26 | 27 | ## Run tests 28 | * Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Launch Tests`. 29 | * Press `F5` to run the tests in a new window with your extension loaded. 30 | * See the output of the test result in the debug console. 31 | * Make changes to `test/extension.test.ts` or create new test files inside the `test` folder. 32 | * By convention, the test runner will only consider files matching the name pattern `**.test.ts`. 33 | * You can create folders inside the `test` folder to structure your tests any way you want. 34 | --------------------------------------------------------------------------------