├── .editorconfig ├── .eslintrc.json ├── .github ├── funding.yml └── workflows │ └── release-binaries.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── build └── index.sh ├── example.js ├── index.js ├── install.js ├── package-lock.json ├── package.json └── test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | end_of_line = lf 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | indent_style = spaces 10 | indent_size = 2 11 | 12 | [example.js] 13 | indent_style = tab 14 | indent_size = 4 15 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "env": { 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true 7 | }, 8 | "parserOptions": { 9 | "ecmaVersion": 2018 10 | }, 11 | "globals": { 12 | "Atomics": "readonly", 13 | "SharedArrayBuffer": "readonly" 14 | }, 15 | "rules": { 16 | "no-unused-vars": "off" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.github/funding.yml: -------------------------------------------------------------------------------- 1 | custom: https://ffmpeg.org/donations.html 2 | patreon: johnvansickle 3 | custom: https://www.paypal.me/johnvansickle 4 | custom: bitcoin:13pZjChR1gR6wqzGMuwLAzqeVR5o9XGoCP 5 | custom: https://www.johnvansickle.com/ffmpeg/ 6 | -------------------------------------------------------------------------------- /.github/workflows/release-binaries.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | tags: 4 | - "b*" 5 | 6 | name: Release Binaries 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - name: Download Binaries 15 | run: sh ./build/index.sh 16 | 17 | - name: Compress Binaries 18 | run: | 19 | set -e 20 | set -o pipefail 21 | cat bin/darwin-x64 | gzip --best >bin/darwin-x64.gz 22 | cat bin/darwin-arm64 | gzip --best >bin/darwin-arm64.gz 23 | cat bin/freebsd-x64 | gzip --best >bin/freebsd-x64.gz 24 | cat bin/linux-arm | gzip --best >bin/linux-arm.gz 25 | cat bin/linux-arm64 | gzip --best >bin/linux-arm64.gz 26 | cat bin/linux-ia32 | gzip --best >bin/linux-ia32.gz 27 | cat bin/linux-x64 | gzip --best >bin/linux-x64.gz 28 | cat bin/win32-ia32 | gzip --best >bin/win32-ia32.gz 29 | cat bin/win32-x64 | gzip --best >bin/win32-x64.gz 30 | ls -l bin 31 | shell: bash 32 | 33 | - name: Create Release 34 | id: create_release 35 | uses: actions/create-release@v1 36 | env: 37 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 38 | with: 39 | tag_name: ${{ github.ref }} 40 | release_name: Release ${{ github.ref }} 41 | 42 | - uses: actions/upload-release-asset@v1.0.1 43 | env: 44 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 45 | with: 46 | upload_url: ${{ steps.create_release.outputs.upload_url }} 47 | asset_path: bin/darwin-x64 48 | asset_name: darwin-x64 49 | asset_content_type: application/octet-stream 50 | - uses: actions/upload-release-asset@v1.0.1 51 | env: 52 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 53 | with: 54 | upload_url: ${{ steps.create_release.outputs.upload_url }} 55 | asset_path: bin/darwin-x64.gz 56 | asset_name: darwin-x64.gz 57 | asset_content_type: application/octet-stream 58 | 59 | - uses: actions/upload-release-asset@v1.0.1 60 | env: 61 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 62 | with: 63 | upload_url: ${{ steps.create_release.outputs.upload_url }} 64 | asset_path: bin/darwin-x64.README 65 | asset_name: darwin-x64.README 66 | asset_content_type: text/plain 67 | 68 | - uses: actions/upload-release-asset@v1.0.1 69 | env: 70 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 71 | with: 72 | upload_url: ${{ steps.create_release.outputs.upload_url }} 73 | asset_path: bin/darwin-arm64 74 | asset_name: darwin-arm64 75 | asset_content_type: application/octet-stream 76 | - uses: actions/upload-release-asset@v1.0.1 77 | env: 78 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 79 | with: 80 | upload_url: ${{ steps.create_release.outputs.upload_url }} 81 | asset_path: bin/darwin-arm64.gz 82 | asset_name: darwin-arm64.gz 83 | asset_content_type: application/octet-stream 84 | 85 | - uses: actions/upload-release-asset@v1.0.1 86 | env: 87 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 88 | with: 89 | upload_url: ${{ steps.create_release.outputs.upload_url }} 90 | asset_path: bin/darwin-arm64.README 91 | asset_name: darwin-arm64.README 92 | asset_content_type: text/plain 93 | 94 | - uses: actions/upload-release-asset@v1.0.1 95 | env: 96 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 97 | with: 98 | upload_url: ${{ steps.create_release.outputs.upload_url }} 99 | asset_path: bin/freebsd-x64 100 | asset_name: freebsd-x64 101 | asset_content_type: application/octet-stream 102 | - uses: actions/upload-release-asset@v1.0.1 103 | env: 104 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 105 | with: 106 | upload_url: ${{ steps.create_release.outputs.upload_url }} 107 | asset_path: bin/freebsd-x64.gz 108 | asset_name: freebsd-x64.gz 109 | asset_content_type: application/octet-stream 110 | 111 | - uses: actions/upload-release-asset@v1.0.1 112 | env: 113 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 114 | with: 115 | upload_url: ${{ steps.create_release.outputs.upload_url }} 116 | asset_path: bin/linux-arm 117 | asset_name: linux-arm 118 | asset_content_type: application/octet-stream 119 | - uses: actions/upload-release-asset@v1.0.1 120 | env: 121 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 122 | with: 123 | upload_url: ${{ steps.create_release.outputs.upload_url }} 124 | asset_path: bin/linux-arm.gz 125 | asset_name: linux-arm.gz 126 | asset_content_type: application/octet-stream 127 | 128 | - uses: actions/upload-release-asset@v1.0.1 129 | env: 130 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 131 | with: 132 | upload_url: ${{ steps.create_release.outputs.upload_url }} 133 | asset_path: bin/linux-arm.README 134 | asset_name: linux-arm.README 135 | asset_content_type: text/plain 136 | 137 | - uses: actions/upload-release-asset@v1.0.1 138 | env: 139 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 140 | with: 141 | upload_url: ${{ steps.create_release.outputs.upload_url }} 142 | asset_path: bin/linux-arm.LICENSE 143 | asset_name: linux-arm.LICENSE 144 | asset_content_type: text/plain 145 | 146 | - uses: actions/upload-release-asset@v1.0.1 147 | env: 148 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 149 | with: 150 | upload_url: ${{ steps.create_release.outputs.upload_url }} 151 | asset_path: bin/linux-arm64 152 | asset_name: linux-arm64 153 | asset_content_type: application/octet-stream 154 | - uses: actions/upload-release-asset@v1.0.1 155 | env: 156 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 157 | with: 158 | upload_url: ${{ steps.create_release.outputs.upload_url }} 159 | asset_path: bin/linux-arm64.gz 160 | asset_name: linux-arm64.gz 161 | asset_content_type: application/octet-stream 162 | 163 | - uses: actions/upload-release-asset@v1.0.1 164 | env: 165 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 166 | with: 167 | upload_url: ${{ steps.create_release.outputs.upload_url }} 168 | asset_path: bin/linux-arm64.README 169 | asset_name: linux-arm64.README 170 | asset_content_type: text/plain 171 | 172 | - uses: actions/upload-release-asset@v1.0.1 173 | env: 174 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 175 | with: 176 | upload_url: ${{ steps.create_release.outputs.upload_url }} 177 | asset_path: bin/linux-arm64.LICENSE 178 | asset_name: linux-arm64.LICENSE 179 | asset_content_type: text/plain 180 | 181 | - uses: actions/upload-release-asset@v1.0.1 182 | env: 183 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 184 | with: 185 | upload_url: ${{ steps.create_release.outputs.upload_url }} 186 | asset_path: bin/linux-ia32 187 | asset_name: linux-ia32 188 | asset_content_type: application/octet-stream 189 | - uses: actions/upload-release-asset@v1.0.1 190 | env: 191 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 192 | with: 193 | upload_url: ${{ steps.create_release.outputs.upload_url }} 194 | asset_path: bin/linux-ia32.gz 195 | asset_name: linux-ia32.gz 196 | asset_content_type: application/octet-stream 197 | 198 | - uses: actions/upload-release-asset@v1.0.1 199 | env: 200 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 201 | with: 202 | upload_url: ${{ steps.create_release.outputs.upload_url }} 203 | asset_path: bin/linux-ia32.README 204 | asset_name: linux-ia32.README 205 | asset_content_type: text/plain 206 | 207 | - uses: actions/upload-release-asset@v1.0.1 208 | env: 209 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 210 | with: 211 | upload_url: ${{ steps.create_release.outputs.upload_url }} 212 | asset_path: bin/linux-ia32.LICENSE 213 | asset_name: linux-ia32.LICENSE 214 | asset_content_type: text/plain 215 | 216 | - uses: actions/upload-release-asset@v1.0.1 217 | env: 218 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 219 | with: 220 | upload_url: ${{ steps.create_release.outputs.upload_url }} 221 | asset_path: bin/linux-x64 222 | asset_name: linux-x64 223 | asset_content_type: application/octet-stream 224 | - uses: actions/upload-release-asset@v1.0.1 225 | env: 226 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 227 | with: 228 | upload_url: ${{ steps.create_release.outputs.upload_url }} 229 | asset_path: bin/linux-x64.gz 230 | asset_name: linux-x64.gz 231 | asset_content_type: application/octet-stream 232 | 233 | - uses: actions/upload-release-asset@v1.0.1 234 | env: 235 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 236 | with: 237 | upload_url: ${{ steps.create_release.outputs.upload_url }} 238 | asset_path: bin/linux-x64.README 239 | asset_name: linux-x64.README 240 | asset_content_type: text/plain 241 | 242 | - uses: actions/upload-release-asset@v1.0.1 243 | env: 244 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 245 | with: 246 | upload_url: ${{ steps.create_release.outputs.upload_url }} 247 | asset_path: bin/linux-x64.LICENSE 248 | asset_name: linux-x64.LICENSE 249 | asset_content_type: text/plain 250 | 251 | - uses: actions/upload-release-asset@v1.0.1 252 | env: 253 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 254 | with: 255 | upload_url: ${{ steps.create_release.outputs.upload_url }} 256 | asset_path: bin/win32-ia32 257 | asset_name: win32-ia32 258 | asset_content_type: application/octet-stream 259 | - uses: actions/upload-release-asset@v1.0.1 260 | env: 261 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 262 | with: 263 | upload_url: ${{ steps.create_release.outputs.upload_url }} 264 | asset_path: bin/win32-ia32.gz 265 | asset_name: win32-ia32.gz 266 | asset_content_type: application/octet-stream 267 | 268 | - uses: actions/upload-release-asset@v1.0.1 269 | env: 270 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 271 | with: 272 | upload_url: ${{ steps.create_release.outputs.upload_url }} 273 | asset_path: bin/win32-ia32.LICENSE 274 | asset_name: win32-ia32.LICENSE 275 | asset_content_type: text/plain 276 | 277 | - uses: actions/upload-release-asset@v1.0.1 278 | env: 279 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 280 | with: 281 | upload_url: ${{ steps.create_release.outputs.upload_url }} 282 | asset_path: bin/win32-x64 283 | asset_name: win32-x64 284 | asset_content_type: application/octet-stream 285 | - uses: actions/upload-release-asset@v1.0.1 286 | env: 287 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 288 | with: 289 | upload_url: ${{ steps.create_release.outputs.upload_url }} 290 | asset_path: bin/win32-x64.gz 291 | asset_name: win32-x64.gz 292 | asset_content_type: application/octet-stream 293 | 294 | - uses: actions/upload-release-asset@v1.0.1 295 | env: 296 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 297 | with: 298 | upload_url: ${{ steps.create_release.outputs.upload_url }} 299 | asset_path: bin/win32-x64.LICENSE 300 | asset_name: win32-x64.LICENSE 301 | asset_content_type: text/plain 302 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .DS_Store 3 | node_modules/ 4 | npm-debug.log 5 | 6 | build/* 7 | !build/index.sh 8 | 9 | bin/* 10 | 11 | /ffmpeg 12 | /ffmpeg.exe 13 | /ffmpeg.README 14 | /ffmpeg.LICENSE 15 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 'stable' 4 | - 'lts/*' 5 | - 'lts/dubnium' 6 | addons: 7 | apt: 8 | packages: 9 | - unzip 10 | - tar 11 | script: 12 | - npm run install 13 | - npm test 14 | - 'file=$(npm pack -s) && file=$(realpath $file)' 15 | - 'cd $(mktemp -d) && npm init -y' 16 | - 'touch foo && env FFMPEG_BIN=$(realpath foo) npm i "$file"' 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020, Eugene Ware and contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 2. Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 3. Neither the name of Eugene Ware nor the names of its contributors 13 | may be used to endorse or promote products derived from this software 14 | without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY EUGENE WARE ''AS IS'' AND ANY 17 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL EUGENE WARE BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ffmpeg-static 2 | 3 | **[ffmpeg](https://ffmpeg.org) static binaries for Mac OSX, Linux, Windows and FreeBSD.** 4 | 5 | Supports macOS (64-bit and arm64), Linux (32 and 64-bit, armhf, arm64), Windows (32 and 64-bit) and FreeBSD (64-bit). [The ffmpeg version currently used is `4.4`.](https://github.com/eugeneware/ffmpeg-static/releases/tag/b4.4) 6 | 7 | *Note:* The version of `ffmpeg-static` follows [SemVer](http://semver.org). When releasing new versions, **we do *not* consider breaking changes in `ffmpeg` itself**, but only the JS interface (see below). To stop `ffmpeg-static` from breaking your code by getting updated, [lock the version down](https://docs.npmjs.com/files/package.json#dependencies) or use a [lockfile](https://docs.npmjs.com/files/package-lock.json). 8 | 9 | [![npm version](https://img.shields.io/npm/v/ffmpeg-static.svg)](https://www.npmjs.com/package/ffmpeg-static) 10 | [![build status](https://travis-ci.org/eugeneware/ffmpeg-static.svg?branch=master)](http://travis-ci.org/eugeneware/ffmpeg-static) 11 | ![minimum Node.js version](https://img.shields.io/node/v/ffmpeg-static.svg) 12 | 13 | ## Installation 14 | 15 | This module is installed via npm: 16 | 17 | ``` bash 18 | $ npm install ffmpeg-static 19 | ``` 20 | 21 | *Note:* During installation, it will download the appropriate `ffmpeg` binary from the [`b4.4` GitHub release](https://github.com/eugeneware/ffmpeg-static/releases/tag/b4.4). Use and distribution of the binary releases of FFmpeg are covered by their respective license. 22 | 23 | ### Electron & other cross-platform packaging tools 24 | 25 | Because `ffmpeg-static` will download a binary specific to the OS/platform, you need to purge `node_modules` before (re-)packaging your app *for a different OS/platform* ([read more in #35](https://github.com/eugeneware/ffmpeg-static/issues/35#issuecomment-630225392)). 26 | 27 | ## Example Usage 28 | 29 | Returns the path of a statically linked ffmpeg binary on the local filesystem. 30 | 31 | ``` js 32 | var pathToFfmpeg = require('ffmpeg-static'); 33 | console.log(pathToFfmpeg); 34 | ``` 35 | 36 | ``` 37 | /Users/j/playground/node_modules/ffmpeg-static/ffmpeg 38 | ``` 39 | 40 | Check the [example script](example.js) for a more thorough example. 41 | 42 | ## Sources of the binaries 43 | 44 | [The build script](build/index.sh) downloads binaries from these locations: 45 | 46 | - [Windows x64 builds](https://github.com/ShareX/FFmpeg/) 47 | - [Windows x86 builds](https://github.com/sudo-nautilus/FFmpeg-Builds-Win32/) 48 | - [Linux builds](https://johnvansickle.com/ffmpeg/) 49 | - macOS builds [for Intel](https://evermeet.cx/pub/ffmpeg/) / [for ARM (Apple Silicon)](https://osxexperts.net/) 50 | - [FreeBSD builds](https://github.com/Thefrank/ffmpeg-static-freebsd/releases) 51 | 52 | The build script extracts build information and (when possible) the license file from the downloaded package or the distribution server. Please consult the individual build's project site for exact source versions, which you can locate based on the version information included in the README file. 53 | 54 | ## Show your support 55 | 56 | This npm package includes statically linked binaries that are produced by the following individuals. Please consider supporting and donating to them who have been providing quality binary builds for many years: 57 | 58 | - **Windows builds**: [Jaex](https://getsharex.com/donate/) 59 | - **Linux builds**: [John Van Sickle](https://www.johnvansickle.com/ffmpeg/) 60 | - **macOS builds**: [Helmut K. C. Tessarek](https://evermeet.cx/ffmpeg/#donations) 61 | 62 | ## Building the project 63 | 64 | The `unzip`, `tar` CLI executables need to be installed. On macOS, use `brew install gnu-tar xz`. 65 | -------------------------------------------------------------------------------- /build/index.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | cd $(dirname $0) 4 | 5 | set +e 6 | tar_exec=$(command -v gtar) 7 | if [ $? -ne 0 ]; then 8 | tar_exec=$(command -v tar) 9 | fi 10 | set -e 11 | echo using tar executable at $tar_exec 12 | 13 | mkdir -p ../bin 14 | 15 | download () { 16 | curl -L -# --compressed -A 'https://github.com/eugeneware/ffmpeg-static build script' -o $2 $1 17 | } 18 | 19 | echo 'windows x64' 20 | echo ' downloading from gyan.dev' 21 | download 'https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.7z' win32-x64.7z 22 | echo ' extracting' 23 | tmpdir=$(mktemp -d) 24 | 7zr e -y -bd -o"$tmpdir" win32-x64.7z >/dev/null 25 | mv "$tmpdir/ffmpeg.exe" ../bin/win32-x64 26 | mv "$tmpdir/LICENSE" ../bin/win32-x64.LICENSE 27 | mv "$tmpdir/README.txt" ../bin/win32-x64.README 28 | 29 | echo 'windows ia32' 30 | echo ' downloading from github.com' 31 | download 'https://github.com/sudo-nautilus/FFmpeg-Builds-Win32/releases/download/autobuild-2021-06-17-12-48/ffmpeg-n4.4-19-g8d172d9409-win32-gpl-4.4.zip' win32-ia32.zip 32 | echo ' extracting' 33 | unzip -o -d ../bin -j win32-ia32.zip '*/bin/ffmpeg.exe' 34 | mv ../bin/ffmpeg.exe ../bin/win32-ia32 35 | curl -s -L 'https://raw.githubusercontent.com/sudo-nautilus/FFmpeg-Builds-Win32/master/LICENSE' -o ../bin/win32-ia32.LICENSE 36 | 37 | echo 'linux x64' 38 | echo ' downloading from johnvansickle.com' 39 | download 'https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz' linux-x64.tar.xz 40 | echo ' extracting' 41 | xzcat linux-x64.tar.xz | $tar_exec -x -C ../bin --strip-components 1 --wildcards '*/ffmpeg' 42 | mv ../bin/ffmpeg ../bin/linux-x64 43 | xzcat linux-x64.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/GPLv3.txt' >../bin/linux-x64.LICENSE 44 | xzcat linux-x64.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/readme.txt' >../bin/linux-x64.README 45 | 46 | echo 'linux ia32' 47 | echo ' downloading from johnvansickle.com' 48 | download 'https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-i686-static.tar.xz' linux-ia32.tar.xz 49 | echo ' extracting' 50 | xzcat linux-ia32.tar.xz | $tar_exec -x -C ../bin --strip-components 1 --wildcards '*/ffmpeg' 51 | mv ../bin/ffmpeg ../bin/linux-ia32 52 | xzcat linux-ia32.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/GPLv3.txt' >../bin/linux-ia32.LICENSE 53 | xzcat linux-ia32.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/readme.txt' >../bin/linux-ia32.README 54 | 55 | echo 'linux arm' 56 | echo ' downloading from johnvansickle.com' 57 | download 'https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz' linux-arm.tar.xz 58 | echo ' extracting' 59 | xzcat linux-arm.tar.xz | $tar_exec -x -C ../bin --strip-components 1 --wildcards '*/ffmpeg' 60 | mv ../bin/ffmpeg ../bin/linux-arm 61 | xzcat linux-arm.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/GPLv3.txt' >../bin/linux-arm.LICENSE 62 | xzcat linux-arm.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/readme.txt' >../bin/linux-arm.README 63 | 64 | echo 'linux arm64' 65 | echo ' downloading from johnvansickle.com' 66 | download 'https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-arm64-static.tar.xz' linux-arm64.tar.xz 67 | echo ' extracting' 68 | xzcat linux-arm64.tar.xz | $tar_exec -x -C ../bin --strip-components 1 --wildcards '*/ffmpeg' 69 | mv ../bin/ffmpeg ../bin/linux-arm64 70 | xzcat linux-arm64.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/GPLv3.txt' >../bin/linux-arm64.LICENSE 71 | xzcat linux-arm64.tar.xz | $tar_exec -x --ignore-case --wildcards -O '**/readme.txt' >../bin/linux-arm64.README 72 | 73 | echo 'darwin x64' 74 | echo ' downloading from evermeet.cx' 75 | download 'https://evermeet.cx/ffmpeg/getrelease/ffmpeg/zip' darwin-x64.zip 76 | echo ' extracting' 77 | unzip -o -d ../bin -j darwin-x64.zip ffmpeg 78 | mv ../bin/ffmpeg ../bin/darwin-x64 79 | curl -s -L 'https://git.ffmpeg.org/gitweb/ffmpeg.git/blob_plain/HEAD:/LICENSE.md' -o ../bin/darwin-x64.LICENSE 80 | curl -s -L 'https://evermeet.cx/ffmpeg/info/ffmpeg/release' | jq --tab '.' >../bin/darwin-x64.README 81 | 82 | echo 'darwin arm64' 83 | echo ' downloading from osxexperts.net' 84 | download 'https://www.osxexperts.net/ffmpeg44arm.zip' darwin-arm64.zip 85 | echo ' extracting' 86 | unzip -o -d ../bin -j darwin-arm64.zip ffmpeg 87 | mv ../bin/ffmpeg ../bin/darwin-arm64 88 | curl -s -L 'https://git.ffmpeg.org/gitweb/ffmpeg.git/blob_plain/HEAD:/LICENSE.md' -o ../bin/darwin-arm64.LICENSE 89 | curl -s -L 'https://git.ffmpeg.org/gitweb/ffmpeg.git/blob_plain/HEAD:/README.md' -o ../bin/darwin-arm64.README 90 | 91 | echo 'freebsd x64' 92 | echo ' downloading from github.com/Thefrank/ffmpeg-static-freebsd' 93 | download 'https://github.com/Thefrank/ffmpeg-static-freebsd/releases/download/v4.4/ffmpeg' ../bin/freebsd-x64 94 | chmod +x ../bin/freebsd-x64 95 | -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict' 3 | 4 | const {join} = require('path') 5 | const shell = require('any-shell-escape') 6 | const {exec} = require('child_process') 7 | 8 | const argv = process.argv.slice(2) 9 | if (argv.includes('-h') || argv.includes('--help')) { 10 | console.info(` 11 | This is just a simple CLI wrapper around the powerful ffmpeg CLI tool. 12 | This script just showcases how to use ffmpeg-static; It wouldn't make 13 | sense to hide a flexible tool behind a limited wrapper script. 14 | Usage: 15 | ./example.js src-audio-file.m4a dest-audio-file.mp3 16 | `) 17 | process.exit(0) 18 | } 19 | 20 | const [src, dest] = argv 21 | const makeMp3 = shell([ 22 | 'ffmpeg', '-y', '-v', 'error', 23 | '-i', join(process.cwd(), src), 24 | '-acodec', 'mp3', 25 | '-format', 'mp3', 26 | join(process.cwd(), dest) 27 | ]) 28 | 29 | exec(makeMp3, (err) => { 30 | if (err) { 31 | console.error(err) 32 | process.exit(1) 33 | } else { 34 | console.info('done!') 35 | } 36 | }) 37 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | if (process.env.FFMPEG_BIN) { 4 | module.exports = process.env.FFMPEG_BIN 5 | } else { 6 | var os = require('os') 7 | var path = require('path') 8 | 9 | var binaries = Object.assign(Object.create(null), { 10 | darwin: ['x64', 'arm64'], 11 | freebsd: ['x64'], 12 | linux: ['x64', 'ia32', 'arm64', 'arm'], 13 | win32: ['x64', 'ia32'] 14 | }) 15 | 16 | var platform = process.env.npm_config_platform || os.platform() 17 | var arch = process.env.npm_config_arch || os.arch() 18 | 19 | var ffmpegPath = path.join( 20 | __dirname, 21 | platform === 'win32' ? 'ffmpeg.exe' : 'ffmpeg' 22 | ) 23 | 24 | if (!binaries[platform] || binaries[platform].indexOf(arch) === -1) { 25 | ffmpegPath = null 26 | } 27 | 28 | module.exports = ffmpegPath 29 | } 30 | -------------------------------------------------------------------------------- /install.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | var fs = require("fs"); 4 | var os = require("os"); 5 | const {encode: encodeQuery} = require('querystring') 6 | const {strictEqual} = require('assert') 7 | const envPaths = require('env-paths') 8 | const FileCache = require('@derhuerst/http-basic/lib/FileCache').default 9 | const {extname} = require('path') 10 | var ProgressBar = require("progress"); 11 | var request = require('@derhuerst/http-basic') 12 | const {createGunzip} = require('zlib') 13 | const {pipeline} = require('stream') 14 | var ffmpegPath = require("."); 15 | var pkg = require("./package"); 16 | 17 | const exitOnError = (err) => { 18 | console.error(err) 19 | process.exit(1) 20 | } 21 | const exitOnErrorOrWarnWith = (msg) => (err) => { 22 | if (err.statusCode === 404) console.warn(msg) 23 | else exitOnError(err) 24 | } 25 | 26 | if (!ffmpegPath) { 27 | exitOnError('ffmpeg-static install failed: No binary found for architecture') 28 | } 29 | 30 | try { 31 | if (fs.statSync(ffmpegPath).isFile()) { 32 | console.info('ffmpeg is installed already.') 33 | process.exit(0) 34 | } 35 | } catch (err) { 36 | if (err && err.code !== 'ENOENT') exitOnError(err) 37 | } 38 | 39 | let agent = false 40 | // https://github.com/request/request/blob/a9557c9e7de2c57d92d9bab68a416a87d255cd3d/lib/getProxyFromURI.js#L66-L71 41 | const proxyUrl = ( 42 | process.env.HTTPS_PROXY || 43 | process.env.https_proxy || 44 | process.env.HTTP_PROXY || 45 | process.env.http_proxy 46 | ) 47 | if (proxyUrl) { 48 | const HttpsProxyAgent = require('https-proxy-agent') 49 | const {hostname, port, protocol} = new URL(proxyUrl) 50 | agent = new HttpsProxyAgent({hostname, port, protocol}) 51 | } 52 | 53 | // https://advancedweb.hu/how-s3-signed-urls-work/ 54 | const normalizeS3Url = (url) => { 55 | url = new URL(url) 56 | if (url.hostname.slice(-17) !== '.s3.amazonaws.com') return url.href 57 | const query = Array.from(url.searchParams.entries()) 58 | .filter(([key]) => key.slice(0, 6).toLowerCase() !== 'x-amz-') 59 | .reduce((query, [key, val]) => ({...query, [key]: val}), {}) 60 | url.search = encodeQuery(query) 61 | return url.href 62 | } 63 | strictEqual( 64 | normalizeS3Url('https://example.org/foo?bar'), 65 | 'https://example.org/foo?bar' 66 | ) 67 | strictEqual( 68 | normalizeS3Url('https://github-production-release-asset-2e65be.s3.amazonaws.com/29458513/26341680-4231-11ea-8e36-ae454621d74a?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200405%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200405T225358Z&X-Amz-Expires=300&X-Amz-Signature=d6415097af04cf62ea9b69d3c1a421278e96bcb069afa48cf021ec3b6941bae4&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Ddarwin-x64&response-content-type=application%2Foctet-stream'), 69 | 'https://github-production-release-asset-2e65be.s3.amazonaws.com/29458513/26341680-4231-11ea-8e36-ae454621d74a?actor_id=0&response-content-disposition=attachment%3B%20filename%3Ddarwin-x64&response-content-type=application%2Foctet-stream' 70 | ) 71 | 72 | const cache = new FileCache(envPaths(pkg.name).cache) 73 | cache.getCacheKey = (url) => { 74 | return FileCache.prototype.getCacheKey(normalizeS3Url(url)) 75 | } 76 | 77 | const isGzUrl = (url) => { 78 | const path = new URL(url).pathname.split('/') 79 | const filename = path[path.length - 1] 80 | return filename && extname(filename) === '.gz' 81 | } 82 | 83 | const noop = () => {} 84 | function downloadFile(url, destinationPath, progressCallback = noop) { 85 | let fulfill, reject; 86 | let totalBytes = 0; 87 | 88 | const promise = new Promise((x, y) => { 89 | fulfill = x; 90 | reject = y; 91 | }); 92 | 93 | request('GET', url, { 94 | agent, 95 | followRedirects: true, 96 | maxRedirects: 3, 97 | gzip: true, 98 | cache, 99 | timeout: 30 * 1000, // 30s 100 | retry: true, 101 | }, (err, response) => { 102 | if (err || response.statusCode !== 200) { 103 | err = err || new Error('Download failed.') 104 | if (response) { 105 | err.url = response.url 106 | err.statusCode = response.statusCode 107 | } 108 | reject(err) 109 | return; 110 | } 111 | 112 | const file = fs.createWriteStream(destinationPath); 113 | const streams = isGzUrl(url) 114 | ? [response.body, createGunzip(), file] 115 | : [response.body, file] 116 | pipeline( 117 | ...streams, 118 | (err) => { 119 | if (err) { 120 | err.url = response.url 121 | err.statusCode = response.statusCode 122 | reject(err) 123 | } else fulfill() 124 | } 125 | ) 126 | 127 | if (!response.fromCache && progressCallback) { 128 | const cLength = response.headers["content-length"] 129 | totalBytes = cLength ? parseInt(cLength, 10) : null 130 | response.body.on('data', (chunk) => { 131 | progressCallback(chunk.length, totalBytes); 132 | }); 133 | } 134 | }); 135 | 136 | return promise; 137 | } 138 | 139 | let progressBar = null; 140 | function onProgress(deltaBytes, totalBytes) { 141 | if (totalBytes === null) return; 142 | if (!progressBar) { 143 | progressBar = new ProgressBar(`Downloading ffmpeg ${releaseName} [:bar] :percent :etas `, { 144 | complete: "|", 145 | incomplete: " ", 146 | width: 20, 147 | total: totalBytes 148 | }); 149 | } 150 | 151 | progressBar.tick(deltaBytes); 152 | } 153 | 154 | const release = ( 155 | process.env.FFMPEG_BINARY_RELEASE || 156 | pkg['ffmpeg-static']['binary-release-tag'] 157 | ) 158 | const releaseName = ( 159 | pkg['ffmpeg-static']['binary-release-name'] || 160 | release 161 | ) 162 | const arch = process.env.npm_config_arch || os.arch() 163 | const platform = process.env.npm_config_platform || os.platform() 164 | 165 | const baseUrl = `https://github.com/eugeneware/ffmpeg-static/releases/download/${release}` 166 | const downloadUrl = `${baseUrl}/${platform}-${arch}.gz` 167 | const readmeUrl = `${baseUrl}/${platform}-${arch}.README` 168 | const licenseUrl = `${baseUrl}/${platform}-${arch}.LICENSE` 169 | 170 | downloadFile(downloadUrl, ffmpegPath, onProgress) 171 | .then(() => { 172 | fs.chmodSync(ffmpegPath, 0o755) // make executable 173 | }) 174 | .catch(exitOnError) 175 | 176 | .then(() => downloadFile(readmeUrl, `${ffmpegPath}.README`)) 177 | .catch(exitOnErrorOrWarnWith('Failed to download the ffmpeg README.')) 178 | 179 | .then(() => downloadFile(licenseUrl, `${ffmpegPath}.LICENSE`)) 180 | .catch(exitOnErrorOrWarnWith('Failed to download the ffmpeg LICENSE.')) 181 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ffmpeg-static", 3 | "version": "4.4.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ffmpeg-static", 9 | "version": "4.4.0", 10 | "hasInstallScript": true, 11 | "license": "GPL-3.0-or-later", 12 | "dependencies": { 13 | "@derhuerst/http-basic": "^8.2.0", 14 | "env-paths": "^2.2.0", 15 | "https-proxy-agent": "^5.0.0", 16 | "progress": "^2.0.3" 17 | }, 18 | "devDependencies": { 19 | "any-shell-escape": "^0.1.1", 20 | "eslint": "^7.30.0" 21 | }, 22 | "engines": { 23 | "node": ">=10" 24 | } 25 | }, 26 | "node_modules/@babel/code-frame": { 27 | "version": "7.12.11", 28 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 29 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 30 | "dev": true, 31 | "dependencies": { 32 | "@babel/highlight": "^7.10.4" 33 | } 34 | }, 35 | "node_modules/@babel/helper-validator-identifier": { 36 | "version": "7.12.11", 37 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 38 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 39 | "dev": true 40 | }, 41 | "node_modules/@babel/highlight": { 42 | "version": "7.13.10", 43 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", 44 | "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", 45 | "dev": true, 46 | "dependencies": { 47 | "@babel/helper-validator-identifier": "^7.12.11", 48 | "chalk": "^2.0.0", 49 | "js-tokens": "^4.0.0" 50 | } 51 | }, 52 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 53 | "version": "3.2.1", 54 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 55 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 56 | "dev": true, 57 | "dependencies": { 58 | "color-convert": "^1.9.0" 59 | }, 60 | "engines": { 61 | "node": ">=4" 62 | } 63 | }, 64 | "node_modules/@babel/highlight/node_modules/chalk": { 65 | "version": "2.4.2", 66 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 67 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 68 | "dev": true, 69 | "dependencies": { 70 | "ansi-styles": "^3.2.1", 71 | "escape-string-regexp": "^1.0.5", 72 | "supports-color": "^5.3.0" 73 | }, 74 | "engines": { 75 | "node": ">=4" 76 | } 77 | }, 78 | "node_modules/@babel/highlight/node_modules/color-convert": { 79 | "version": "1.9.3", 80 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 81 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 82 | "dev": true, 83 | "dependencies": { 84 | "color-name": "1.1.3" 85 | } 86 | }, 87 | "node_modules/@babel/highlight/node_modules/color-name": { 88 | "version": "1.1.3", 89 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 90 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 91 | "dev": true 92 | }, 93 | "node_modules/@babel/highlight/node_modules/has-flag": { 94 | "version": "3.0.0", 95 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 96 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 97 | "dev": true, 98 | "engines": { 99 | "node": ">=4" 100 | } 101 | }, 102 | "node_modules/@babel/highlight/node_modules/supports-color": { 103 | "version": "5.5.0", 104 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 105 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 106 | "dev": true, 107 | "dependencies": { 108 | "has-flag": "^3.0.0" 109 | }, 110 | "engines": { 111 | "node": ">=4" 112 | } 113 | }, 114 | "node_modules/@derhuerst/http-basic": { 115 | "version": "8.2.1", 116 | "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.1.tgz", 117 | "integrity": "sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw==", 118 | "dependencies": { 119 | "caseless": "^0.12.0", 120 | "concat-stream": "^1.6.2", 121 | "http-response-object": "^3.0.1", 122 | "parse-cache-control": "^1.0.1" 123 | }, 124 | "engines": { 125 | "node": ">=6.0.0" 126 | } 127 | }, 128 | "node_modules/@eslint/eslintrc": { 129 | "version": "0.4.3", 130 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", 131 | "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", 132 | "dev": true, 133 | "dependencies": { 134 | "ajv": "^6.12.4", 135 | "debug": "^4.1.1", 136 | "espree": "^7.3.0", 137 | "globals": "^13.9.0", 138 | "ignore": "^4.0.6", 139 | "import-fresh": "^3.2.1", 140 | "js-yaml": "^3.13.1", 141 | "minimatch": "^3.0.4", 142 | "strip-json-comments": "^3.1.1" 143 | }, 144 | "engines": { 145 | "node": "^10.12.0 || >=12.0.0" 146 | } 147 | }, 148 | "node_modules/@humanwhocodes/config-array": { 149 | "version": "0.5.0", 150 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 151 | "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", 152 | "dev": true, 153 | "dependencies": { 154 | "@humanwhocodes/object-schema": "^1.2.0", 155 | "debug": "^4.1.1", 156 | "minimatch": "^3.0.4" 157 | }, 158 | "engines": { 159 | "node": ">=10.10.0" 160 | } 161 | }, 162 | "node_modules/@humanwhocodes/object-schema": { 163 | "version": "1.2.0", 164 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", 165 | "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", 166 | "dev": true 167 | }, 168 | "node_modules/@types/node": { 169 | "version": "10.17.55", 170 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.55.tgz", 171 | "integrity": "sha512-koZJ89uLZufDvToeWO5BrC4CR4OUfHnUz2qoPs/daQH6qq3IN62QFxCTZ+bKaCE0xaoCAJYE4AXre8AbghCrhg==" 172 | }, 173 | "node_modules/acorn": { 174 | "version": "7.4.1", 175 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 176 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 177 | "dev": true, 178 | "bin": { 179 | "acorn": "bin/acorn" 180 | }, 181 | "engines": { 182 | "node": ">=0.4.0" 183 | } 184 | }, 185 | "node_modules/acorn-jsx": { 186 | "version": "5.3.2", 187 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 188 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 189 | "dev": true, 190 | "peerDependencies": { 191 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 192 | } 193 | }, 194 | "node_modules/agent-base": { 195 | "version": "6.0.2", 196 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 197 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 198 | "dependencies": { 199 | "debug": "4" 200 | }, 201 | "engines": { 202 | "node": ">= 6.0.0" 203 | } 204 | }, 205 | "node_modules/ajv": { 206 | "version": "6.12.6", 207 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 208 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 209 | "dev": true, 210 | "dependencies": { 211 | "fast-deep-equal": "^3.1.1", 212 | "fast-json-stable-stringify": "^2.0.0", 213 | "json-schema-traverse": "^0.4.1", 214 | "uri-js": "^4.2.2" 215 | }, 216 | "funding": { 217 | "type": "github", 218 | "url": "https://github.com/sponsors/epoberezkin" 219 | } 220 | }, 221 | "node_modules/ansi-colors": { 222 | "version": "4.1.1", 223 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 224 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 225 | "dev": true, 226 | "engines": { 227 | "node": ">=6" 228 | } 229 | }, 230 | "node_modules/ansi-regex": { 231 | "version": "5.0.0", 232 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 233 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 234 | "dev": true, 235 | "engines": { 236 | "node": ">=8" 237 | } 238 | }, 239 | "node_modules/ansi-styles": { 240 | "version": "4.3.0", 241 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 242 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 243 | "dev": true, 244 | "dependencies": { 245 | "color-convert": "^2.0.1" 246 | }, 247 | "engines": { 248 | "node": ">=8" 249 | }, 250 | "funding": { 251 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 252 | } 253 | }, 254 | "node_modules/any-shell-escape": { 255 | "version": "0.1.1", 256 | "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", 257 | "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", 258 | "dev": true 259 | }, 260 | "node_modules/argparse": { 261 | "version": "1.0.10", 262 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 263 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 264 | "dev": true, 265 | "dependencies": { 266 | "sprintf-js": "~1.0.2" 267 | } 268 | }, 269 | "node_modules/astral-regex": { 270 | "version": "2.0.0", 271 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 272 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 273 | "dev": true, 274 | "engines": { 275 | "node": ">=8" 276 | } 277 | }, 278 | "node_modules/balanced-match": { 279 | "version": "1.0.0", 280 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 281 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 282 | "dev": true 283 | }, 284 | "node_modules/brace-expansion": { 285 | "version": "1.1.11", 286 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 287 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 288 | "dev": true, 289 | "dependencies": { 290 | "balanced-match": "^1.0.0", 291 | "concat-map": "0.0.1" 292 | } 293 | }, 294 | "node_modules/buffer-from": { 295 | "version": "1.1.1", 296 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 297 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 298 | }, 299 | "node_modules/callsites": { 300 | "version": "3.1.0", 301 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 302 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 303 | "dev": true, 304 | "engines": { 305 | "node": ">=6" 306 | } 307 | }, 308 | "node_modules/caseless": { 309 | "version": "0.12.0", 310 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 311 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 312 | }, 313 | "node_modules/chalk": { 314 | "version": "4.1.0", 315 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 316 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 317 | "dev": true, 318 | "dependencies": { 319 | "ansi-styles": "^4.1.0", 320 | "supports-color": "^7.1.0" 321 | }, 322 | "engines": { 323 | "node": ">=10" 324 | }, 325 | "funding": { 326 | "url": "https://github.com/chalk/chalk?sponsor=1" 327 | } 328 | }, 329 | "node_modules/color-convert": { 330 | "version": "2.0.1", 331 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 332 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 333 | "dev": true, 334 | "dependencies": { 335 | "color-name": "~1.1.4" 336 | }, 337 | "engines": { 338 | "node": ">=7.0.0" 339 | } 340 | }, 341 | "node_modules/color-name": { 342 | "version": "1.1.4", 343 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 344 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 345 | "dev": true 346 | }, 347 | "node_modules/concat-map": { 348 | "version": "0.0.1", 349 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 350 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 351 | "dev": true 352 | }, 353 | "node_modules/concat-stream": { 354 | "version": "1.6.2", 355 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 356 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 357 | "engines": [ 358 | "node >= 0.8" 359 | ], 360 | "dependencies": { 361 | "buffer-from": "^1.0.0", 362 | "inherits": "^2.0.3", 363 | "readable-stream": "^2.2.2", 364 | "typedarray": "^0.0.6" 365 | } 366 | }, 367 | "node_modules/core-util-is": { 368 | "version": "1.0.2", 369 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 370 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 371 | }, 372 | "node_modules/cross-spawn": { 373 | "version": "7.0.3", 374 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 375 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 376 | "dev": true, 377 | "dependencies": { 378 | "path-key": "^3.1.0", 379 | "shebang-command": "^2.0.0", 380 | "which": "^2.0.1" 381 | }, 382 | "engines": { 383 | "node": ">= 8" 384 | } 385 | }, 386 | "node_modules/debug": { 387 | "version": "4.3.1", 388 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 389 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 390 | "dependencies": { 391 | "ms": "2.1.2" 392 | }, 393 | "engines": { 394 | "node": ">=6.0" 395 | }, 396 | "peerDependenciesMeta": { 397 | "supports-color": { 398 | "optional": true 399 | } 400 | } 401 | }, 402 | "node_modules/deep-is": { 403 | "version": "0.1.3", 404 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 405 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 406 | "dev": true 407 | }, 408 | "node_modules/doctrine": { 409 | "version": "3.0.0", 410 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 411 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 412 | "dev": true, 413 | "dependencies": { 414 | "esutils": "^2.0.2" 415 | }, 416 | "engines": { 417 | "node": ">=6.0.0" 418 | } 419 | }, 420 | "node_modules/emoji-regex": { 421 | "version": "8.0.0", 422 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 423 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 424 | "dev": true 425 | }, 426 | "node_modules/enquirer": { 427 | "version": "2.3.6", 428 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 429 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 430 | "dev": true, 431 | "dependencies": { 432 | "ansi-colors": "^4.1.1" 433 | }, 434 | "engines": { 435 | "node": ">=8.6" 436 | } 437 | }, 438 | "node_modules/env-paths": { 439 | "version": "2.2.1", 440 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 441 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 442 | "engines": { 443 | "node": ">=6" 444 | } 445 | }, 446 | "node_modules/escape-string-regexp": { 447 | "version": "1.0.5", 448 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 449 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 450 | "dev": true, 451 | "engines": { 452 | "node": ">=0.8.0" 453 | } 454 | }, 455 | "node_modules/eslint": { 456 | "version": "7.30.0", 457 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", 458 | "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", 459 | "dev": true, 460 | "dependencies": { 461 | "@babel/code-frame": "7.12.11", 462 | "@eslint/eslintrc": "^0.4.2", 463 | "@humanwhocodes/config-array": "^0.5.0", 464 | "ajv": "^6.10.0", 465 | "chalk": "^4.0.0", 466 | "cross-spawn": "^7.0.2", 467 | "debug": "^4.0.1", 468 | "doctrine": "^3.0.0", 469 | "enquirer": "^2.3.5", 470 | "escape-string-regexp": "^4.0.0", 471 | "eslint-scope": "^5.1.1", 472 | "eslint-utils": "^2.1.0", 473 | "eslint-visitor-keys": "^2.0.0", 474 | "espree": "^7.3.1", 475 | "esquery": "^1.4.0", 476 | "esutils": "^2.0.2", 477 | "fast-deep-equal": "^3.1.3", 478 | "file-entry-cache": "^6.0.1", 479 | "functional-red-black-tree": "^1.0.1", 480 | "glob-parent": "^5.1.2", 481 | "globals": "^13.6.0", 482 | "ignore": "^4.0.6", 483 | "import-fresh": "^3.0.0", 484 | "imurmurhash": "^0.1.4", 485 | "is-glob": "^4.0.0", 486 | "js-yaml": "^3.13.1", 487 | "json-stable-stringify-without-jsonify": "^1.0.1", 488 | "levn": "^0.4.1", 489 | "lodash.merge": "^4.6.2", 490 | "minimatch": "^3.0.4", 491 | "natural-compare": "^1.4.0", 492 | "optionator": "^0.9.1", 493 | "progress": "^2.0.0", 494 | "regexpp": "^3.1.0", 495 | "semver": "^7.2.1", 496 | "strip-ansi": "^6.0.0", 497 | "strip-json-comments": "^3.1.0", 498 | "table": "^6.0.9", 499 | "text-table": "^0.2.0", 500 | "v8-compile-cache": "^2.0.3" 501 | }, 502 | "bin": { 503 | "eslint": "bin/eslint.js" 504 | }, 505 | "engines": { 506 | "node": "^10.12.0 || >=12.0.0" 507 | }, 508 | "funding": { 509 | "url": "https://opencollective.com/eslint" 510 | } 511 | }, 512 | "node_modules/eslint-scope": { 513 | "version": "5.1.1", 514 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 515 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 516 | "dev": true, 517 | "dependencies": { 518 | "esrecurse": "^4.3.0", 519 | "estraverse": "^4.1.1" 520 | }, 521 | "engines": { 522 | "node": ">=8.0.0" 523 | } 524 | }, 525 | "node_modules/eslint-utils": { 526 | "version": "2.1.0", 527 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 528 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 529 | "dev": true, 530 | "dependencies": { 531 | "eslint-visitor-keys": "^1.1.0" 532 | }, 533 | "engines": { 534 | "node": ">=6" 535 | }, 536 | "funding": { 537 | "url": "https://github.com/sponsors/mysticatea" 538 | } 539 | }, 540 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 541 | "version": "1.3.0", 542 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 543 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 544 | "dev": true, 545 | "engines": { 546 | "node": ">=4" 547 | } 548 | }, 549 | "node_modules/eslint-visitor-keys": { 550 | "version": "2.0.0", 551 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", 552 | "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", 553 | "dev": true, 554 | "engines": { 555 | "node": ">=10" 556 | } 557 | }, 558 | "node_modules/eslint/node_modules/escape-string-regexp": { 559 | "version": "4.0.0", 560 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 561 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 562 | "dev": true, 563 | "engines": { 564 | "node": ">=10" 565 | }, 566 | "funding": { 567 | "url": "https://github.com/sponsors/sindresorhus" 568 | } 569 | }, 570 | "node_modules/espree": { 571 | "version": "7.3.1", 572 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 573 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 574 | "dev": true, 575 | "dependencies": { 576 | "acorn": "^7.4.0", 577 | "acorn-jsx": "^5.3.1", 578 | "eslint-visitor-keys": "^1.3.0" 579 | }, 580 | "engines": { 581 | "node": "^10.12.0 || >=12.0.0" 582 | } 583 | }, 584 | "node_modules/espree/node_modules/eslint-visitor-keys": { 585 | "version": "1.3.0", 586 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 587 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 588 | "dev": true, 589 | "engines": { 590 | "node": ">=4" 591 | } 592 | }, 593 | "node_modules/esprima": { 594 | "version": "4.0.1", 595 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 596 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 597 | "dev": true, 598 | "bin": { 599 | "esparse": "bin/esparse.js", 600 | "esvalidate": "bin/esvalidate.js" 601 | }, 602 | "engines": { 603 | "node": ">=4" 604 | } 605 | }, 606 | "node_modules/esquery": { 607 | "version": "1.4.0", 608 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 609 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 610 | "dev": true, 611 | "dependencies": { 612 | "estraverse": "^5.1.0" 613 | }, 614 | "engines": { 615 | "node": ">=0.10" 616 | } 617 | }, 618 | "node_modules/esquery/node_modules/estraverse": { 619 | "version": "5.2.0", 620 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 621 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 622 | "dev": true, 623 | "engines": { 624 | "node": ">=4.0" 625 | } 626 | }, 627 | "node_modules/esrecurse": { 628 | "version": "4.3.0", 629 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 630 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 631 | "dev": true, 632 | "dependencies": { 633 | "estraverse": "^5.2.0" 634 | }, 635 | "engines": { 636 | "node": ">=4.0" 637 | } 638 | }, 639 | "node_modules/esrecurse/node_modules/estraverse": { 640 | "version": "5.2.0", 641 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 642 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 643 | "dev": true, 644 | "engines": { 645 | "node": ">=4.0" 646 | } 647 | }, 648 | "node_modules/estraverse": { 649 | "version": "4.3.0", 650 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 651 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 652 | "dev": true, 653 | "engines": { 654 | "node": ">=4.0" 655 | } 656 | }, 657 | "node_modules/esutils": { 658 | "version": "2.0.3", 659 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 660 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 661 | "dev": true, 662 | "engines": { 663 | "node": ">=0.10.0" 664 | } 665 | }, 666 | "node_modules/fast-deep-equal": { 667 | "version": "3.1.3", 668 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 669 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 670 | "dev": true 671 | }, 672 | "node_modules/fast-json-stable-stringify": { 673 | "version": "2.1.0", 674 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 675 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 676 | "dev": true 677 | }, 678 | "node_modules/fast-levenshtein": { 679 | "version": "2.0.6", 680 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 681 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 682 | "dev": true 683 | }, 684 | "node_modules/file-entry-cache": { 685 | "version": "6.0.1", 686 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 687 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 688 | "dev": true, 689 | "dependencies": { 690 | "flat-cache": "^3.0.4" 691 | }, 692 | "engines": { 693 | "node": "^10.12.0 || >=12.0.0" 694 | } 695 | }, 696 | "node_modules/flat-cache": { 697 | "version": "3.0.4", 698 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 699 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 700 | "dev": true, 701 | "dependencies": { 702 | "flatted": "^3.1.0", 703 | "rimraf": "^3.0.2" 704 | }, 705 | "engines": { 706 | "node": "^10.12.0 || >=12.0.0" 707 | } 708 | }, 709 | "node_modules/flatted": { 710 | "version": "3.1.1", 711 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", 712 | "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", 713 | "dev": true 714 | }, 715 | "node_modules/fs.realpath": { 716 | "version": "1.0.0", 717 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 718 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 719 | "dev": true 720 | }, 721 | "node_modules/functional-red-black-tree": { 722 | "version": "1.0.1", 723 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 724 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 725 | "dev": true 726 | }, 727 | "node_modules/glob": { 728 | "version": "7.1.6", 729 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 730 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 731 | "dev": true, 732 | "dependencies": { 733 | "fs.realpath": "^1.0.0", 734 | "inflight": "^1.0.4", 735 | "inherits": "2", 736 | "minimatch": "^3.0.4", 737 | "once": "^1.3.0", 738 | "path-is-absolute": "^1.0.0" 739 | }, 740 | "engines": { 741 | "node": "*" 742 | }, 743 | "funding": { 744 | "url": "https://github.com/sponsors/isaacs" 745 | } 746 | }, 747 | "node_modules/glob-parent": { 748 | "version": "5.1.2", 749 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 750 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 751 | "dev": true, 752 | "dependencies": { 753 | "is-glob": "^4.0.1" 754 | }, 755 | "engines": { 756 | "node": ">= 6" 757 | } 758 | }, 759 | "node_modules/globals": { 760 | "version": "13.10.0", 761 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", 762 | "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", 763 | "dev": true, 764 | "dependencies": { 765 | "type-fest": "^0.20.2" 766 | }, 767 | "engines": { 768 | "node": ">=8" 769 | }, 770 | "funding": { 771 | "url": "https://github.com/sponsors/sindresorhus" 772 | } 773 | }, 774 | "node_modules/has-flag": { 775 | "version": "4.0.0", 776 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 777 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 778 | "dev": true, 779 | "engines": { 780 | "node": ">=8" 781 | } 782 | }, 783 | "node_modules/http-response-object": { 784 | "version": "3.0.2", 785 | "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", 786 | "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", 787 | "dependencies": { 788 | "@types/node": "^10.0.3" 789 | } 790 | }, 791 | "node_modules/https-proxy-agent": { 792 | "version": "5.0.0", 793 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 794 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 795 | "dependencies": { 796 | "agent-base": "6", 797 | "debug": "4" 798 | }, 799 | "engines": { 800 | "node": ">= 6" 801 | } 802 | }, 803 | "node_modules/ignore": { 804 | "version": "4.0.6", 805 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 806 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 807 | "dev": true, 808 | "engines": { 809 | "node": ">= 4" 810 | } 811 | }, 812 | "node_modules/import-fresh": { 813 | "version": "3.3.0", 814 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 815 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 816 | "dev": true, 817 | "dependencies": { 818 | "parent-module": "^1.0.0", 819 | "resolve-from": "^4.0.0" 820 | }, 821 | "engines": { 822 | "node": ">=6" 823 | }, 824 | "funding": { 825 | "url": "https://github.com/sponsors/sindresorhus" 826 | } 827 | }, 828 | "node_modules/imurmurhash": { 829 | "version": "0.1.4", 830 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 831 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 832 | "dev": true, 833 | "engines": { 834 | "node": ">=0.8.19" 835 | } 836 | }, 837 | "node_modules/inflight": { 838 | "version": "1.0.6", 839 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 840 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 841 | "dev": true, 842 | "dependencies": { 843 | "once": "^1.3.0", 844 | "wrappy": "1" 845 | } 846 | }, 847 | "node_modules/inherits": { 848 | "version": "2.0.4", 849 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 850 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 851 | }, 852 | "node_modules/is-extglob": { 853 | "version": "2.1.1", 854 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 855 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 856 | "dev": true, 857 | "engines": { 858 | "node": ">=0.10.0" 859 | } 860 | }, 861 | "node_modules/is-fullwidth-code-point": { 862 | "version": "3.0.0", 863 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 864 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 865 | "dev": true, 866 | "engines": { 867 | "node": ">=8" 868 | } 869 | }, 870 | "node_modules/is-glob": { 871 | "version": "4.0.1", 872 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 873 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 874 | "dev": true, 875 | "dependencies": { 876 | "is-extglob": "^2.1.1" 877 | }, 878 | "engines": { 879 | "node": ">=0.10.0" 880 | } 881 | }, 882 | "node_modules/isarray": { 883 | "version": "1.0.0", 884 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 885 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 886 | }, 887 | "node_modules/isexe": { 888 | "version": "2.0.0", 889 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 890 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 891 | "dev": true 892 | }, 893 | "node_modules/js-tokens": { 894 | "version": "4.0.0", 895 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 896 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 897 | "dev": true 898 | }, 899 | "node_modules/js-yaml": { 900 | "version": "3.14.1", 901 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 902 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 903 | "dev": true, 904 | "dependencies": { 905 | "argparse": "^1.0.7", 906 | "esprima": "^4.0.0" 907 | }, 908 | "bin": { 909 | "js-yaml": "bin/js-yaml.js" 910 | } 911 | }, 912 | "node_modules/json-schema-traverse": { 913 | "version": "0.4.1", 914 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 915 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 916 | "dev": true 917 | }, 918 | "node_modules/json-stable-stringify-without-jsonify": { 919 | "version": "1.0.1", 920 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 921 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 922 | "dev": true 923 | }, 924 | "node_modules/levn": { 925 | "version": "0.4.1", 926 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 927 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 928 | "dev": true, 929 | "dependencies": { 930 | "prelude-ls": "^1.2.1", 931 | "type-check": "~0.4.0" 932 | }, 933 | "engines": { 934 | "node": ">= 0.8.0" 935 | } 936 | }, 937 | "node_modules/lodash.clonedeep": { 938 | "version": "4.5.0", 939 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 940 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 941 | "dev": true 942 | }, 943 | "node_modules/lodash.merge": { 944 | "version": "4.6.2", 945 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 946 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 947 | "dev": true 948 | }, 949 | "node_modules/lodash.truncate": { 950 | "version": "4.4.2", 951 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 952 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 953 | "dev": true 954 | }, 955 | "node_modules/lru-cache": { 956 | "version": "6.0.0", 957 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 958 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 959 | "dev": true, 960 | "dependencies": { 961 | "yallist": "^4.0.0" 962 | }, 963 | "engines": { 964 | "node": ">=10" 965 | } 966 | }, 967 | "node_modules/minimatch": { 968 | "version": "3.0.4", 969 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 970 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 971 | "dev": true, 972 | "dependencies": { 973 | "brace-expansion": "^1.1.7" 974 | }, 975 | "engines": { 976 | "node": "*" 977 | } 978 | }, 979 | "node_modules/ms": { 980 | "version": "2.1.2", 981 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 982 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 983 | }, 984 | "node_modules/natural-compare": { 985 | "version": "1.4.0", 986 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 987 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 988 | "dev": true 989 | }, 990 | "node_modules/once": { 991 | "version": "1.4.0", 992 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 993 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 994 | "dev": true, 995 | "dependencies": { 996 | "wrappy": "1" 997 | } 998 | }, 999 | "node_modules/optionator": { 1000 | "version": "0.9.1", 1001 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1002 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1003 | "dev": true, 1004 | "dependencies": { 1005 | "deep-is": "^0.1.3", 1006 | "fast-levenshtein": "^2.0.6", 1007 | "levn": "^0.4.1", 1008 | "prelude-ls": "^1.2.1", 1009 | "type-check": "^0.4.0", 1010 | "word-wrap": "^1.2.3" 1011 | }, 1012 | "engines": { 1013 | "node": ">= 0.8.0" 1014 | } 1015 | }, 1016 | "node_modules/parent-module": { 1017 | "version": "1.0.1", 1018 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1019 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1020 | "dev": true, 1021 | "dependencies": { 1022 | "callsites": "^3.0.0" 1023 | }, 1024 | "engines": { 1025 | "node": ">=6" 1026 | } 1027 | }, 1028 | "node_modules/parse-cache-control": { 1029 | "version": "1.0.1", 1030 | "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", 1031 | "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" 1032 | }, 1033 | "node_modules/path-is-absolute": { 1034 | "version": "1.0.1", 1035 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1036 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1037 | "dev": true, 1038 | "engines": { 1039 | "node": ">=0.10.0" 1040 | } 1041 | }, 1042 | "node_modules/path-key": { 1043 | "version": "3.1.1", 1044 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1045 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1046 | "dev": true, 1047 | "engines": { 1048 | "node": ">=8" 1049 | } 1050 | }, 1051 | "node_modules/prelude-ls": { 1052 | "version": "1.2.1", 1053 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1054 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1055 | "dev": true, 1056 | "engines": { 1057 | "node": ">= 0.8.0" 1058 | } 1059 | }, 1060 | "node_modules/process-nextick-args": { 1061 | "version": "2.0.1", 1062 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1063 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1064 | }, 1065 | "node_modules/progress": { 1066 | "version": "2.0.3", 1067 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1068 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1069 | "engines": { 1070 | "node": ">=0.4.0" 1071 | } 1072 | }, 1073 | "node_modules/punycode": { 1074 | "version": "2.1.1", 1075 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1076 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1077 | "dev": true, 1078 | "engines": { 1079 | "node": ">=6" 1080 | } 1081 | }, 1082 | "node_modules/readable-stream": { 1083 | "version": "2.3.7", 1084 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1085 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1086 | "dependencies": { 1087 | "core-util-is": "~1.0.0", 1088 | "inherits": "~2.0.3", 1089 | "isarray": "~1.0.0", 1090 | "process-nextick-args": "~2.0.0", 1091 | "safe-buffer": "~5.1.1", 1092 | "string_decoder": "~1.1.1", 1093 | "util-deprecate": "~1.0.1" 1094 | } 1095 | }, 1096 | "node_modules/regexpp": { 1097 | "version": "3.1.0", 1098 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 1099 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 1100 | "dev": true, 1101 | "engines": { 1102 | "node": ">=8" 1103 | }, 1104 | "funding": { 1105 | "url": "https://github.com/sponsors/mysticatea" 1106 | } 1107 | }, 1108 | "node_modules/require-from-string": { 1109 | "version": "2.0.2", 1110 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 1111 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 1112 | "dev": true, 1113 | "engines": { 1114 | "node": ">=0.10.0" 1115 | } 1116 | }, 1117 | "node_modules/resolve-from": { 1118 | "version": "4.0.0", 1119 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1120 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1121 | "dev": true, 1122 | "engines": { 1123 | "node": ">=4" 1124 | } 1125 | }, 1126 | "node_modules/rimraf": { 1127 | "version": "3.0.2", 1128 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1129 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1130 | "dev": true, 1131 | "dependencies": { 1132 | "glob": "^7.1.3" 1133 | }, 1134 | "bin": { 1135 | "rimraf": "bin.js" 1136 | }, 1137 | "funding": { 1138 | "url": "https://github.com/sponsors/isaacs" 1139 | } 1140 | }, 1141 | "node_modules/safe-buffer": { 1142 | "version": "5.1.2", 1143 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1144 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1145 | }, 1146 | "node_modules/semver": { 1147 | "version": "7.3.4", 1148 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 1149 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 1150 | "dev": true, 1151 | "dependencies": { 1152 | "lru-cache": "^6.0.0" 1153 | }, 1154 | "bin": { 1155 | "semver": "bin/semver.js" 1156 | }, 1157 | "engines": { 1158 | "node": ">=10" 1159 | } 1160 | }, 1161 | "node_modules/shebang-command": { 1162 | "version": "2.0.0", 1163 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1164 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1165 | "dev": true, 1166 | "dependencies": { 1167 | "shebang-regex": "^3.0.0" 1168 | }, 1169 | "engines": { 1170 | "node": ">=8" 1171 | } 1172 | }, 1173 | "node_modules/shebang-regex": { 1174 | "version": "3.0.0", 1175 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1176 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1177 | "dev": true, 1178 | "engines": { 1179 | "node": ">=8" 1180 | } 1181 | }, 1182 | "node_modules/slice-ansi": { 1183 | "version": "4.0.0", 1184 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 1185 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 1186 | "dev": true, 1187 | "dependencies": { 1188 | "ansi-styles": "^4.0.0", 1189 | "astral-regex": "^2.0.0", 1190 | "is-fullwidth-code-point": "^3.0.0" 1191 | }, 1192 | "engines": { 1193 | "node": ">=10" 1194 | }, 1195 | "funding": { 1196 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 1197 | } 1198 | }, 1199 | "node_modules/sprintf-js": { 1200 | "version": "1.0.3", 1201 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1202 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1203 | "dev": true 1204 | }, 1205 | "node_modules/string_decoder": { 1206 | "version": "1.1.1", 1207 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1208 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1209 | "dependencies": { 1210 | "safe-buffer": "~5.1.0" 1211 | } 1212 | }, 1213 | "node_modules/string-width": { 1214 | "version": "4.2.2", 1215 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1216 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1217 | "dev": true, 1218 | "dependencies": { 1219 | "emoji-regex": "^8.0.0", 1220 | "is-fullwidth-code-point": "^3.0.0", 1221 | "strip-ansi": "^6.0.0" 1222 | }, 1223 | "engines": { 1224 | "node": ">=8" 1225 | } 1226 | }, 1227 | "node_modules/strip-ansi": { 1228 | "version": "6.0.0", 1229 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1230 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1231 | "dev": true, 1232 | "dependencies": { 1233 | "ansi-regex": "^5.0.0" 1234 | }, 1235 | "engines": { 1236 | "node": ">=8" 1237 | } 1238 | }, 1239 | "node_modules/strip-json-comments": { 1240 | "version": "3.1.1", 1241 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1242 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1243 | "dev": true, 1244 | "engines": { 1245 | "node": ">=8" 1246 | }, 1247 | "funding": { 1248 | "url": "https://github.com/sponsors/sindresorhus" 1249 | } 1250 | }, 1251 | "node_modules/supports-color": { 1252 | "version": "7.2.0", 1253 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1254 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1255 | "dev": true, 1256 | "dependencies": { 1257 | "has-flag": "^4.0.0" 1258 | }, 1259 | "engines": { 1260 | "node": ">=8" 1261 | } 1262 | }, 1263 | "node_modules/table": { 1264 | "version": "6.7.1", 1265 | "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", 1266 | "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", 1267 | "dev": true, 1268 | "dependencies": { 1269 | "ajv": "^8.0.1", 1270 | "lodash.clonedeep": "^4.5.0", 1271 | "lodash.truncate": "^4.4.2", 1272 | "slice-ansi": "^4.0.0", 1273 | "string-width": "^4.2.0", 1274 | "strip-ansi": "^6.0.0" 1275 | }, 1276 | "engines": { 1277 | "node": ">=10.0.0" 1278 | } 1279 | }, 1280 | "node_modules/table/node_modules/ajv": { 1281 | "version": "8.6.2", 1282 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", 1283 | "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", 1284 | "dev": true, 1285 | "dependencies": { 1286 | "fast-deep-equal": "^3.1.1", 1287 | "json-schema-traverse": "^1.0.0", 1288 | "require-from-string": "^2.0.2", 1289 | "uri-js": "^4.2.2" 1290 | }, 1291 | "funding": { 1292 | "type": "github", 1293 | "url": "https://github.com/sponsors/epoberezkin" 1294 | } 1295 | }, 1296 | "node_modules/table/node_modules/json-schema-traverse": { 1297 | "version": "1.0.0", 1298 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1299 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1300 | "dev": true 1301 | }, 1302 | "node_modules/text-table": { 1303 | "version": "0.2.0", 1304 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1305 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1306 | "dev": true 1307 | }, 1308 | "node_modules/type-check": { 1309 | "version": "0.4.0", 1310 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1311 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1312 | "dev": true, 1313 | "dependencies": { 1314 | "prelude-ls": "^1.2.1" 1315 | }, 1316 | "engines": { 1317 | "node": ">= 0.8.0" 1318 | } 1319 | }, 1320 | "node_modules/type-fest": { 1321 | "version": "0.20.2", 1322 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1323 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1324 | "dev": true, 1325 | "engines": { 1326 | "node": ">=10" 1327 | }, 1328 | "funding": { 1329 | "url": "https://github.com/sponsors/sindresorhus" 1330 | } 1331 | }, 1332 | "node_modules/typedarray": { 1333 | "version": "0.0.6", 1334 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1335 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 1336 | }, 1337 | "node_modules/uri-js": { 1338 | "version": "4.4.1", 1339 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1340 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1341 | "dev": true, 1342 | "dependencies": { 1343 | "punycode": "^2.1.0" 1344 | } 1345 | }, 1346 | "node_modules/util-deprecate": { 1347 | "version": "1.0.2", 1348 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1349 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1350 | }, 1351 | "node_modules/v8-compile-cache": { 1352 | "version": "2.3.0", 1353 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1354 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1355 | "dev": true 1356 | }, 1357 | "node_modules/which": { 1358 | "version": "2.0.2", 1359 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1360 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1361 | "dev": true, 1362 | "dependencies": { 1363 | "isexe": "^2.0.0" 1364 | }, 1365 | "bin": { 1366 | "node-which": "bin/node-which" 1367 | }, 1368 | "engines": { 1369 | "node": ">= 8" 1370 | } 1371 | }, 1372 | "node_modules/word-wrap": { 1373 | "version": "1.2.3", 1374 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1375 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1376 | "dev": true, 1377 | "engines": { 1378 | "node": ">=0.10.0" 1379 | } 1380 | }, 1381 | "node_modules/wrappy": { 1382 | "version": "1.0.2", 1383 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1384 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1385 | "dev": true 1386 | }, 1387 | "node_modules/yallist": { 1388 | "version": "4.0.0", 1389 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1390 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1391 | "dev": true 1392 | } 1393 | }, 1394 | "dependencies": { 1395 | "@babel/code-frame": { 1396 | "version": "7.12.11", 1397 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 1398 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 1399 | "dev": true, 1400 | "requires": { 1401 | "@babel/highlight": "^7.10.4" 1402 | } 1403 | }, 1404 | "@babel/helper-validator-identifier": { 1405 | "version": "7.12.11", 1406 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 1407 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 1408 | "dev": true 1409 | }, 1410 | "@babel/highlight": { 1411 | "version": "7.13.10", 1412 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", 1413 | "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", 1414 | "dev": true, 1415 | "requires": { 1416 | "@babel/helper-validator-identifier": "^7.12.11", 1417 | "chalk": "^2.0.0", 1418 | "js-tokens": "^4.0.0" 1419 | }, 1420 | "dependencies": { 1421 | "ansi-styles": { 1422 | "version": "3.2.1", 1423 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1424 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1425 | "dev": true, 1426 | "requires": { 1427 | "color-convert": "^1.9.0" 1428 | } 1429 | }, 1430 | "chalk": { 1431 | "version": "2.4.2", 1432 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1433 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1434 | "dev": true, 1435 | "requires": { 1436 | "ansi-styles": "^3.2.1", 1437 | "escape-string-regexp": "^1.0.5", 1438 | "supports-color": "^5.3.0" 1439 | } 1440 | }, 1441 | "color-convert": { 1442 | "version": "1.9.3", 1443 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1444 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1445 | "dev": true, 1446 | "requires": { 1447 | "color-name": "1.1.3" 1448 | } 1449 | }, 1450 | "color-name": { 1451 | "version": "1.1.3", 1452 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1453 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1454 | "dev": true 1455 | }, 1456 | "has-flag": { 1457 | "version": "3.0.0", 1458 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1459 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1460 | "dev": true 1461 | }, 1462 | "supports-color": { 1463 | "version": "5.5.0", 1464 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1465 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1466 | "dev": true, 1467 | "requires": { 1468 | "has-flag": "^3.0.0" 1469 | } 1470 | } 1471 | } 1472 | }, 1473 | "@derhuerst/http-basic": { 1474 | "version": "8.2.1", 1475 | "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.1.tgz", 1476 | "integrity": "sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw==", 1477 | "requires": { 1478 | "caseless": "^0.12.0", 1479 | "concat-stream": "^1.6.2", 1480 | "http-response-object": "^3.0.1", 1481 | "parse-cache-control": "^1.0.1" 1482 | } 1483 | }, 1484 | "@eslint/eslintrc": { 1485 | "version": "0.4.3", 1486 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", 1487 | "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", 1488 | "dev": true, 1489 | "requires": { 1490 | "ajv": "^6.12.4", 1491 | "debug": "^4.1.1", 1492 | "espree": "^7.3.0", 1493 | "globals": "^13.9.0", 1494 | "ignore": "^4.0.6", 1495 | "import-fresh": "^3.2.1", 1496 | "js-yaml": "^3.13.1", 1497 | "minimatch": "^3.0.4", 1498 | "strip-json-comments": "^3.1.1" 1499 | } 1500 | }, 1501 | "@humanwhocodes/config-array": { 1502 | "version": "0.5.0", 1503 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 1504 | "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", 1505 | "dev": true, 1506 | "requires": { 1507 | "@humanwhocodes/object-schema": "^1.2.0", 1508 | "debug": "^4.1.1", 1509 | "minimatch": "^3.0.4" 1510 | } 1511 | }, 1512 | "@humanwhocodes/object-schema": { 1513 | "version": "1.2.0", 1514 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", 1515 | "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", 1516 | "dev": true 1517 | }, 1518 | "@types/node": { 1519 | "version": "10.17.55", 1520 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.55.tgz", 1521 | "integrity": "sha512-koZJ89uLZufDvToeWO5BrC4CR4OUfHnUz2qoPs/daQH6qq3IN62QFxCTZ+bKaCE0xaoCAJYE4AXre8AbghCrhg==" 1522 | }, 1523 | "acorn": { 1524 | "version": "7.4.1", 1525 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 1526 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 1527 | "dev": true 1528 | }, 1529 | "acorn-jsx": { 1530 | "version": "5.3.2", 1531 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1532 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1533 | "dev": true, 1534 | "requires": {} 1535 | }, 1536 | "agent-base": { 1537 | "version": "6.0.2", 1538 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1539 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1540 | "requires": { 1541 | "debug": "4" 1542 | } 1543 | }, 1544 | "ajv": { 1545 | "version": "6.12.6", 1546 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1547 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1548 | "dev": true, 1549 | "requires": { 1550 | "fast-deep-equal": "^3.1.1", 1551 | "fast-json-stable-stringify": "^2.0.0", 1552 | "json-schema-traverse": "^0.4.1", 1553 | "uri-js": "^4.2.2" 1554 | } 1555 | }, 1556 | "ansi-colors": { 1557 | "version": "4.1.1", 1558 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 1559 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 1560 | "dev": true 1561 | }, 1562 | "ansi-regex": { 1563 | "version": "5.0.0", 1564 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 1565 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 1566 | "dev": true 1567 | }, 1568 | "ansi-styles": { 1569 | "version": "4.3.0", 1570 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1571 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1572 | "dev": true, 1573 | "requires": { 1574 | "color-convert": "^2.0.1" 1575 | } 1576 | }, 1577 | "any-shell-escape": { 1578 | "version": "0.1.1", 1579 | "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", 1580 | "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", 1581 | "dev": true 1582 | }, 1583 | "argparse": { 1584 | "version": "1.0.10", 1585 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1586 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1587 | "dev": true, 1588 | "requires": { 1589 | "sprintf-js": "~1.0.2" 1590 | } 1591 | }, 1592 | "astral-regex": { 1593 | "version": "2.0.0", 1594 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 1595 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 1596 | "dev": true 1597 | }, 1598 | "balanced-match": { 1599 | "version": "1.0.0", 1600 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1601 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1602 | "dev": true 1603 | }, 1604 | "brace-expansion": { 1605 | "version": "1.1.11", 1606 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1607 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1608 | "dev": true, 1609 | "requires": { 1610 | "balanced-match": "^1.0.0", 1611 | "concat-map": "0.0.1" 1612 | } 1613 | }, 1614 | "buffer-from": { 1615 | "version": "1.1.1", 1616 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 1617 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 1618 | }, 1619 | "callsites": { 1620 | "version": "3.1.0", 1621 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1622 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1623 | "dev": true 1624 | }, 1625 | "caseless": { 1626 | "version": "0.12.0", 1627 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 1628 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 1629 | }, 1630 | "chalk": { 1631 | "version": "4.1.0", 1632 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 1633 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 1634 | "dev": true, 1635 | "requires": { 1636 | "ansi-styles": "^4.1.0", 1637 | "supports-color": "^7.1.0" 1638 | } 1639 | }, 1640 | "color-convert": { 1641 | "version": "2.0.1", 1642 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1643 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1644 | "dev": true, 1645 | "requires": { 1646 | "color-name": "~1.1.4" 1647 | } 1648 | }, 1649 | "color-name": { 1650 | "version": "1.1.4", 1651 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1652 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1653 | "dev": true 1654 | }, 1655 | "concat-map": { 1656 | "version": "0.0.1", 1657 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1658 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1659 | "dev": true 1660 | }, 1661 | "concat-stream": { 1662 | "version": "1.6.2", 1663 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 1664 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 1665 | "requires": { 1666 | "buffer-from": "^1.0.0", 1667 | "inherits": "^2.0.3", 1668 | "readable-stream": "^2.2.2", 1669 | "typedarray": "^0.0.6" 1670 | } 1671 | }, 1672 | "core-util-is": { 1673 | "version": "1.0.2", 1674 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1675 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1676 | }, 1677 | "cross-spawn": { 1678 | "version": "7.0.3", 1679 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1680 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1681 | "dev": true, 1682 | "requires": { 1683 | "path-key": "^3.1.0", 1684 | "shebang-command": "^2.0.0", 1685 | "which": "^2.0.1" 1686 | } 1687 | }, 1688 | "debug": { 1689 | "version": "4.3.1", 1690 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 1691 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 1692 | "requires": { 1693 | "ms": "2.1.2" 1694 | } 1695 | }, 1696 | "deep-is": { 1697 | "version": "0.1.3", 1698 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1699 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 1700 | "dev": true 1701 | }, 1702 | "doctrine": { 1703 | "version": "3.0.0", 1704 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1705 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1706 | "dev": true, 1707 | "requires": { 1708 | "esutils": "^2.0.2" 1709 | } 1710 | }, 1711 | "emoji-regex": { 1712 | "version": "8.0.0", 1713 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1714 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1715 | "dev": true 1716 | }, 1717 | "enquirer": { 1718 | "version": "2.3.6", 1719 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 1720 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 1721 | "dev": true, 1722 | "requires": { 1723 | "ansi-colors": "^4.1.1" 1724 | } 1725 | }, 1726 | "env-paths": { 1727 | "version": "2.2.1", 1728 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 1729 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" 1730 | }, 1731 | "escape-string-regexp": { 1732 | "version": "1.0.5", 1733 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1734 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1735 | "dev": true 1736 | }, 1737 | "eslint": { 1738 | "version": "7.30.0", 1739 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", 1740 | "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", 1741 | "dev": true, 1742 | "requires": { 1743 | "@babel/code-frame": "7.12.11", 1744 | "@eslint/eslintrc": "^0.4.2", 1745 | "@humanwhocodes/config-array": "^0.5.0", 1746 | "ajv": "^6.10.0", 1747 | "chalk": "^4.0.0", 1748 | "cross-spawn": "^7.0.2", 1749 | "debug": "^4.0.1", 1750 | "doctrine": "^3.0.0", 1751 | "enquirer": "^2.3.5", 1752 | "escape-string-regexp": "^4.0.0", 1753 | "eslint-scope": "^5.1.1", 1754 | "eslint-utils": "^2.1.0", 1755 | "eslint-visitor-keys": "^2.0.0", 1756 | "espree": "^7.3.1", 1757 | "esquery": "^1.4.0", 1758 | "esutils": "^2.0.2", 1759 | "fast-deep-equal": "^3.1.3", 1760 | "file-entry-cache": "^6.0.1", 1761 | "functional-red-black-tree": "^1.0.1", 1762 | "glob-parent": "^5.1.2", 1763 | "globals": "^13.6.0", 1764 | "ignore": "^4.0.6", 1765 | "import-fresh": "^3.0.0", 1766 | "imurmurhash": "^0.1.4", 1767 | "is-glob": "^4.0.0", 1768 | "js-yaml": "^3.13.1", 1769 | "json-stable-stringify-without-jsonify": "^1.0.1", 1770 | "levn": "^0.4.1", 1771 | "lodash.merge": "^4.6.2", 1772 | "minimatch": "^3.0.4", 1773 | "natural-compare": "^1.4.0", 1774 | "optionator": "^0.9.1", 1775 | "progress": "^2.0.0", 1776 | "regexpp": "^3.1.0", 1777 | "semver": "^7.2.1", 1778 | "strip-ansi": "^6.0.0", 1779 | "strip-json-comments": "^3.1.0", 1780 | "table": "^6.0.9", 1781 | "text-table": "^0.2.0", 1782 | "v8-compile-cache": "^2.0.3" 1783 | }, 1784 | "dependencies": { 1785 | "escape-string-regexp": { 1786 | "version": "4.0.0", 1787 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1788 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1789 | "dev": true 1790 | } 1791 | } 1792 | }, 1793 | "eslint-scope": { 1794 | "version": "5.1.1", 1795 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1796 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1797 | "dev": true, 1798 | "requires": { 1799 | "esrecurse": "^4.3.0", 1800 | "estraverse": "^4.1.1" 1801 | } 1802 | }, 1803 | "eslint-utils": { 1804 | "version": "2.1.0", 1805 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 1806 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 1807 | "dev": true, 1808 | "requires": { 1809 | "eslint-visitor-keys": "^1.1.0" 1810 | }, 1811 | "dependencies": { 1812 | "eslint-visitor-keys": { 1813 | "version": "1.3.0", 1814 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1815 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1816 | "dev": true 1817 | } 1818 | } 1819 | }, 1820 | "eslint-visitor-keys": { 1821 | "version": "2.0.0", 1822 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", 1823 | "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", 1824 | "dev": true 1825 | }, 1826 | "espree": { 1827 | "version": "7.3.1", 1828 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 1829 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 1830 | "dev": true, 1831 | "requires": { 1832 | "acorn": "^7.4.0", 1833 | "acorn-jsx": "^5.3.1", 1834 | "eslint-visitor-keys": "^1.3.0" 1835 | }, 1836 | "dependencies": { 1837 | "eslint-visitor-keys": { 1838 | "version": "1.3.0", 1839 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1840 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1841 | "dev": true 1842 | } 1843 | } 1844 | }, 1845 | "esprima": { 1846 | "version": "4.0.1", 1847 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1848 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1849 | "dev": true 1850 | }, 1851 | "esquery": { 1852 | "version": "1.4.0", 1853 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1854 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1855 | "dev": true, 1856 | "requires": { 1857 | "estraverse": "^5.1.0" 1858 | }, 1859 | "dependencies": { 1860 | "estraverse": { 1861 | "version": "5.2.0", 1862 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1863 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1864 | "dev": true 1865 | } 1866 | } 1867 | }, 1868 | "esrecurse": { 1869 | "version": "4.3.0", 1870 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1871 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1872 | "dev": true, 1873 | "requires": { 1874 | "estraverse": "^5.2.0" 1875 | }, 1876 | "dependencies": { 1877 | "estraverse": { 1878 | "version": "5.2.0", 1879 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1880 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1881 | "dev": true 1882 | } 1883 | } 1884 | }, 1885 | "estraverse": { 1886 | "version": "4.3.0", 1887 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1888 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1889 | "dev": true 1890 | }, 1891 | "esutils": { 1892 | "version": "2.0.3", 1893 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1894 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1895 | "dev": true 1896 | }, 1897 | "fast-deep-equal": { 1898 | "version": "3.1.3", 1899 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1900 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1901 | "dev": true 1902 | }, 1903 | "fast-json-stable-stringify": { 1904 | "version": "2.1.0", 1905 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1906 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1907 | "dev": true 1908 | }, 1909 | "fast-levenshtein": { 1910 | "version": "2.0.6", 1911 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1912 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1913 | "dev": true 1914 | }, 1915 | "file-entry-cache": { 1916 | "version": "6.0.1", 1917 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1918 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1919 | "dev": true, 1920 | "requires": { 1921 | "flat-cache": "^3.0.4" 1922 | } 1923 | }, 1924 | "flat-cache": { 1925 | "version": "3.0.4", 1926 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1927 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1928 | "dev": true, 1929 | "requires": { 1930 | "flatted": "^3.1.0", 1931 | "rimraf": "^3.0.2" 1932 | } 1933 | }, 1934 | "flatted": { 1935 | "version": "3.1.1", 1936 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", 1937 | "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", 1938 | "dev": true 1939 | }, 1940 | "fs.realpath": { 1941 | "version": "1.0.0", 1942 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1943 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1944 | "dev": true 1945 | }, 1946 | "functional-red-black-tree": { 1947 | "version": "1.0.1", 1948 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1949 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1950 | "dev": true 1951 | }, 1952 | "glob": { 1953 | "version": "7.1.6", 1954 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1955 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1956 | "dev": true, 1957 | "requires": { 1958 | "fs.realpath": "^1.0.0", 1959 | "inflight": "^1.0.4", 1960 | "inherits": "2", 1961 | "minimatch": "^3.0.4", 1962 | "once": "^1.3.0", 1963 | "path-is-absolute": "^1.0.0" 1964 | } 1965 | }, 1966 | "glob-parent": { 1967 | "version": "5.1.2", 1968 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1969 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1970 | "dev": true, 1971 | "requires": { 1972 | "is-glob": "^4.0.1" 1973 | } 1974 | }, 1975 | "globals": { 1976 | "version": "13.10.0", 1977 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", 1978 | "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", 1979 | "dev": true, 1980 | "requires": { 1981 | "type-fest": "^0.20.2" 1982 | } 1983 | }, 1984 | "has-flag": { 1985 | "version": "4.0.0", 1986 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1987 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1988 | "dev": true 1989 | }, 1990 | "http-response-object": { 1991 | "version": "3.0.2", 1992 | "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", 1993 | "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", 1994 | "requires": { 1995 | "@types/node": "^10.0.3" 1996 | } 1997 | }, 1998 | "https-proxy-agent": { 1999 | "version": "5.0.0", 2000 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 2001 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 2002 | "requires": { 2003 | "agent-base": "6", 2004 | "debug": "4" 2005 | } 2006 | }, 2007 | "ignore": { 2008 | "version": "4.0.6", 2009 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 2010 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 2011 | "dev": true 2012 | }, 2013 | "import-fresh": { 2014 | "version": "3.3.0", 2015 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2016 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2017 | "dev": true, 2018 | "requires": { 2019 | "parent-module": "^1.0.0", 2020 | "resolve-from": "^4.0.0" 2021 | } 2022 | }, 2023 | "imurmurhash": { 2024 | "version": "0.1.4", 2025 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2026 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2027 | "dev": true 2028 | }, 2029 | "inflight": { 2030 | "version": "1.0.6", 2031 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2032 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2033 | "dev": true, 2034 | "requires": { 2035 | "once": "^1.3.0", 2036 | "wrappy": "1" 2037 | } 2038 | }, 2039 | "inherits": { 2040 | "version": "2.0.4", 2041 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2042 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2043 | }, 2044 | "is-extglob": { 2045 | "version": "2.1.1", 2046 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2047 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2048 | "dev": true 2049 | }, 2050 | "is-fullwidth-code-point": { 2051 | "version": "3.0.0", 2052 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2053 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2054 | "dev": true 2055 | }, 2056 | "is-glob": { 2057 | "version": "4.0.1", 2058 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 2059 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 2060 | "dev": true, 2061 | "requires": { 2062 | "is-extglob": "^2.1.1" 2063 | } 2064 | }, 2065 | "isarray": { 2066 | "version": "1.0.0", 2067 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2068 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 2069 | }, 2070 | "isexe": { 2071 | "version": "2.0.0", 2072 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2073 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2074 | "dev": true 2075 | }, 2076 | "js-tokens": { 2077 | "version": "4.0.0", 2078 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2079 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2080 | "dev": true 2081 | }, 2082 | "js-yaml": { 2083 | "version": "3.14.1", 2084 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 2085 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2086 | "dev": true, 2087 | "requires": { 2088 | "argparse": "^1.0.7", 2089 | "esprima": "^4.0.0" 2090 | } 2091 | }, 2092 | "json-schema-traverse": { 2093 | "version": "0.4.1", 2094 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2095 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2096 | "dev": true 2097 | }, 2098 | "json-stable-stringify-without-jsonify": { 2099 | "version": "1.0.1", 2100 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2101 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2102 | "dev": true 2103 | }, 2104 | "levn": { 2105 | "version": "0.4.1", 2106 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2107 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2108 | "dev": true, 2109 | "requires": { 2110 | "prelude-ls": "^1.2.1", 2111 | "type-check": "~0.4.0" 2112 | } 2113 | }, 2114 | "lodash.clonedeep": { 2115 | "version": "4.5.0", 2116 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 2117 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 2118 | "dev": true 2119 | }, 2120 | "lodash.merge": { 2121 | "version": "4.6.2", 2122 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2123 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2124 | "dev": true 2125 | }, 2126 | "lodash.truncate": { 2127 | "version": "4.4.2", 2128 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 2129 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 2130 | "dev": true 2131 | }, 2132 | "lru-cache": { 2133 | "version": "6.0.0", 2134 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2135 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2136 | "dev": true, 2137 | "requires": { 2138 | "yallist": "^4.0.0" 2139 | } 2140 | }, 2141 | "minimatch": { 2142 | "version": "3.0.4", 2143 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2144 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2145 | "dev": true, 2146 | "requires": { 2147 | "brace-expansion": "^1.1.7" 2148 | } 2149 | }, 2150 | "ms": { 2151 | "version": "2.1.2", 2152 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2153 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2154 | }, 2155 | "natural-compare": { 2156 | "version": "1.4.0", 2157 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2158 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2159 | "dev": true 2160 | }, 2161 | "once": { 2162 | "version": "1.4.0", 2163 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2164 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2165 | "dev": true, 2166 | "requires": { 2167 | "wrappy": "1" 2168 | } 2169 | }, 2170 | "optionator": { 2171 | "version": "0.9.1", 2172 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2173 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2174 | "dev": true, 2175 | "requires": { 2176 | "deep-is": "^0.1.3", 2177 | "fast-levenshtein": "^2.0.6", 2178 | "levn": "^0.4.1", 2179 | "prelude-ls": "^1.2.1", 2180 | "type-check": "^0.4.0", 2181 | "word-wrap": "^1.2.3" 2182 | } 2183 | }, 2184 | "parent-module": { 2185 | "version": "1.0.1", 2186 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2187 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2188 | "dev": true, 2189 | "requires": { 2190 | "callsites": "^3.0.0" 2191 | } 2192 | }, 2193 | "parse-cache-control": { 2194 | "version": "1.0.1", 2195 | "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", 2196 | "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" 2197 | }, 2198 | "path-is-absolute": { 2199 | "version": "1.0.1", 2200 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2201 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2202 | "dev": true 2203 | }, 2204 | "path-key": { 2205 | "version": "3.1.1", 2206 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2207 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2208 | "dev": true 2209 | }, 2210 | "prelude-ls": { 2211 | "version": "1.2.1", 2212 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2213 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2214 | "dev": true 2215 | }, 2216 | "process-nextick-args": { 2217 | "version": "2.0.1", 2218 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2219 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2220 | }, 2221 | "progress": { 2222 | "version": "2.0.3", 2223 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2224 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 2225 | }, 2226 | "punycode": { 2227 | "version": "2.1.1", 2228 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2229 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2230 | "dev": true 2231 | }, 2232 | "readable-stream": { 2233 | "version": "2.3.7", 2234 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2235 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2236 | "requires": { 2237 | "core-util-is": "~1.0.0", 2238 | "inherits": "~2.0.3", 2239 | "isarray": "~1.0.0", 2240 | "process-nextick-args": "~2.0.0", 2241 | "safe-buffer": "~5.1.1", 2242 | "string_decoder": "~1.1.1", 2243 | "util-deprecate": "~1.0.1" 2244 | } 2245 | }, 2246 | "regexpp": { 2247 | "version": "3.1.0", 2248 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 2249 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 2250 | "dev": true 2251 | }, 2252 | "require-from-string": { 2253 | "version": "2.0.2", 2254 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2255 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2256 | "dev": true 2257 | }, 2258 | "resolve-from": { 2259 | "version": "4.0.0", 2260 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2261 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2262 | "dev": true 2263 | }, 2264 | "rimraf": { 2265 | "version": "3.0.2", 2266 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2267 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2268 | "dev": true, 2269 | "requires": { 2270 | "glob": "^7.1.3" 2271 | } 2272 | }, 2273 | "safe-buffer": { 2274 | "version": "5.1.2", 2275 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2276 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2277 | }, 2278 | "semver": { 2279 | "version": "7.3.4", 2280 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 2281 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 2282 | "dev": true, 2283 | "requires": { 2284 | "lru-cache": "^6.0.0" 2285 | } 2286 | }, 2287 | "shebang-command": { 2288 | "version": "2.0.0", 2289 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2290 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2291 | "dev": true, 2292 | "requires": { 2293 | "shebang-regex": "^3.0.0" 2294 | } 2295 | }, 2296 | "shebang-regex": { 2297 | "version": "3.0.0", 2298 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2299 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2300 | "dev": true 2301 | }, 2302 | "slice-ansi": { 2303 | "version": "4.0.0", 2304 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 2305 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 2306 | "dev": true, 2307 | "requires": { 2308 | "ansi-styles": "^4.0.0", 2309 | "astral-regex": "^2.0.0", 2310 | "is-fullwidth-code-point": "^3.0.0" 2311 | } 2312 | }, 2313 | "sprintf-js": { 2314 | "version": "1.0.3", 2315 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2316 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2317 | "dev": true 2318 | }, 2319 | "string_decoder": { 2320 | "version": "1.1.1", 2321 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2322 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2323 | "requires": { 2324 | "safe-buffer": "~5.1.0" 2325 | } 2326 | }, 2327 | "string-width": { 2328 | "version": "4.2.2", 2329 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 2330 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 2331 | "dev": true, 2332 | "requires": { 2333 | "emoji-regex": "^8.0.0", 2334 | "is-fullwidth-code-point": "^3.0.0", 2335 | "strip-ansi": "^6.0.0" 2336 | } 2337 | }, 2338 | "strip-ansi": { 2339 | "version": "6.0.0", 2340 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2341 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2342 | "dev": true, 2343 | "requires": { 2344 | "ansi-regex": "^5.0.0" 2345 | } 2346 | }, 2347 | "strip-json-comments": { 2348 | "version": "3.1.1", 2349 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2350 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2351 | "dev": true 2352 | }, 2353 | "supports-color": { 2354 | "version": "7.2.0", 2355 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2356 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2357 | "dev": true, 2358 | "requires": { 2359 | "has-flag": "^4.0.0" 2360 | } 2361 | }, 2362 | "table": { 2363 | "version": "6.7.1", 2364 | "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", 2365 | "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", 2366 | "dev": true, 2367 | "requires": { 2368 | "ajv": "^8.0.1", 2369 | "lodash.clonedeep": "^4.5.0", 2370 | "lodash.truncate": "^4.4.2", 2371 | "slice-ansi": "^4.0.0", 2372 | "string-width": "^4.2.0", 2373 | "strip-ansi": "^6.0.0" 2374 | }, 2375 | "dependencies": { 2376 | "ajv": { 2377 | "version": "8.6.2", 2378 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", 2379 | "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", 2380 | "dev": true, 2381 | "requires": { 2382 | "fast-deep-equal": "^3.1.1", 2383 | "json-schema-traverse": "^1.0.0", 2384 | "require-from-string": "^2.0.2", 2385 | "uri-js": "^4.2.2" 2386 | } 2387 | }, 2388 | "json-schema-traverse": { 2389 | "version": "1.0.0", 2390 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2391 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2392 | "dev": true 2393 | } 2394 | } 2395 | }, 2396 | "text-table": { 2397 | "version": "0.2.0", 2398 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2399 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2400 | "dev": true 2401 | }, 2402 | "type-check": { 2403 | "version": "0.4.0", 2404 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2405 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2406 | "dev": true, 2407 | "requires": { 2408 | "prelude-ls": "^1.2.1" 2409 | } 2410 | }, 2411 | "type-fest": { 2412 | "version": "0.20.2", 2413 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2414 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2415 | "dev": true 2416 | }, 2417 | "typedarray": { 2418 | "version": "0.0.6", 2419 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2420 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 2421 | }, 2422 | "uri-js": { 2423 | "version": "4.4.1", 2424 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2425 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2426 | "dev": true, 2427 | "requires": { 2428 | "punycode": "^2.1.0" 2429 | } 2430 | }, 2431 | "util-deprecate": { 2432 | "version": "1.0.2", 2433 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2434 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2435 | }, 2436 | "v8-compile-cache": { 2437 | "version": "2.3.0", 2438 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2439 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2440 | "dev": true 2441 | }, 2442 | "which": { 2443 | "version": "2.0.2", 2444 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2445 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2446 | "dev": true, 2447 | "requires": { 2448 | "isexe": "^2.0.0" 2449 | } 2450 | }, 2451 | "word-wrap": { 2452 | "version": "1.2.3", 2453 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2454 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2455 | "dev": true 2456 | }, 2457 | "wrappy": { 2458 | "version": "1.0.2", 2459 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2460 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2461 | "dev": true 2462 | }, 2463 | "yallist": { 2464 | "version": "4.0.0", 2465 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2466 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2467 | "dev": true 2468 | } 2469 | } 2470 | } 2471 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ffmpeg-static", 3 | "version": "4.4.0", 4 | "description": "ffmpeg static binaries for Mac OSX and Linux and Windows", 5 | "main": "index.js", 6 | "files": [ 7 | "index.js", 8 | "install.js", 9 | "example.js" 10 | ], 11 | "scripts": { 12 | "install": "node install.js", 13 | "test": "node test.js", 14 | "lint": "eslint .", 15 | "prepublishOnly": "npm run lint && npm run install && npm test" 16 | }, 17 | "ffmpeg-static": { 18 | "binary-release-tag": "b4.4", 19 | "binary-release-name": "4.4" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "https://github.com/eugeneware/ffmpeg-static" 24 | }, 25 | "keywords": [ 26 | "ffmpeg", 27 | "static", 28 | "library", 29 | "binary", 30 | "binaries", 31 | "mac", 32 | "linux", 33 | "windows" 34 | ], 35 | "authors": [ 36 | "Eugene Ware ", 37 | "Jannis R " 38 | ], 39 | "contributors": [ 40 | "Thefrank (https://github.com/Thefrank)" 41 | ], 42 | "license": "GPL-3.0-or-later", 43 | "bugs": { 44 | "url": "https://github.com/eugeneware/ffmpeg-static/issues" 45 | }, 46 | "engines": { 47 | "node": ">=10" 48 | }, 49 | "dependencies": { 50 | "@derhuerst/http-basic": "^8.2.0", 51 | "env-paths": "^2.2.0", 52 | "https-proxy-agent": "^5.0.0", 53 | "progress": "^2.0.3" 54 | }, 55 | "devDependencies": { 56 | "any-shell-escape": "^0.1.1", 57 | "eslint": "^7.30.0" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const {ok, strictEqual} = require('assert') 4 | const {isAbsolute} = require('path') 5 | const fs = require('fs') 6 | const {spawnSync} = require('child_process') 7 | const shell = require('any-shell-escape') 8 | const ffmpegPath = require('.') 9 | 10 | console.info('TAP version 12') 11 | console.info('1..4') 12 | 13 | ok(isAbsolute(ffmpegPath)) 14 | console.info('ok 1 - ffmpeg path is absolute') 15 | 16 | ok(fs.statSync(ffmpegPath).isFile(ffmpegPath)) 17 | console.info(`ok 2 - ${ffmpegPath} is a file`) 18 | 19 | fs.accessSync(ffmpegPath, fs.constants.X_OK) 20 | console.info(`ok 3 - ${ffmpegPath} is executable`) 21 | 22 | const {status} = spawnSync(ffmpegPath, ['--help'], { 23 | stdio: ['ignore', 'ignore', 'pipe'], // stdin, stdout, stderr 24 | }) 25 | strictEqual(status, 0) 26 | console.info(`ok 4 - \`${ffmpegPath} --help\` works`) 27 | --------------------------------------------------------------------------------