├── .eslintrc.json ├── .github └── workflows │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── build.js ├── es.exe ├── package-lock.json ├── package.json ├── screenshot.png └── src ├── background.png ├── bgm.mp3 ├── index.css ├── index.html ├── index.js ├── main.js └── package.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true, 5 | "node": true 6 | }, 7 | "extends": [ 8 | "standard" 9 | ], 10 | "parserOptions": { 11 | "ecmaVersion": 13, 12 | "sourceType": "module" 13 | }, 14 | "rules": { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | release: 5 | types: 6 | - created 7 | 8 | jobs: 9 | release: 10 | runs-on: windows-latest 11 | steps: 12 | - name: Check out git repository 13 | uses: actions/checkout@v3 14 | 15 | - name: Install Node.js 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: 18 19 | 20 | - name: Install dependencies 21 | run: npm install --production 22 | 23 | - name: Build 24 | run: npm run build 25 | 26 | - name: Upload binaries to release 27 | uses: svenstaro/upload-release-action@v2 28 | with: 29 | repo_token: ${{ secrets.GITHUB_TOKEN }} 30 | file: CefDetectorX.zip 31 | tag: ${{ github.ref }} 32 | 33 | - name: Upload binaries to release 34 | uses: svenstaro/upload-release-action@v2 35 | with: 36 | repo_token: ${{ secrets.GITHUB_TOKEN }} 37 | file: CefDetectorX-with-bgm.zip 38 | tag: ${{ github.ref }} 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pak 2 | *.dll 3 | electron.exe 4 | *.dat 5 | LICENSES.chromium.html 6 | *.bin 7 | version 8 | locales 9 | default_app.asar 10 | vk_swiftshader_icd.json 11 | node_modules 12 | *.zip 13 | mini_electron.exe 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2022 Shirasawa 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CEF Detector X - 一眼CEF X: 年轻人的第二款 Windows CEF检测器 [![Release](https://github.com/ShirasawaSama/CefDetectorX/actions/workflows/release.yml/badge.svg)](https://github.com/ShirasawaSama/CefDetectorX/actions/workflows/release.yml) 2 | 3 | Check how many CEFs are on your Windows. 4 | 5 | **【2 代使用 Electron 编写并提供更多功能】** 6 | 7 | 看看你电脑 **(Windows)** 上有多少个 [CEF (Chromium Embedded Framework)](https://bitbucket.org/chromiumembedded/cef/). 8 | 9 | > **Note** 10 | > 欢迎你把程序截图发到 [Discussions](https://github.com/ShirasawaSama/CefDetectorX/discussions/17) 中, 看看谁才是真的 **《超级CEF王》** 11 | 12 | > 你说的对,但是《LibCEF》是由谷歌自主研发的一款全新开放浏览器内核。第三方代码运行在在一个被称作「CEF」的浏览器沙盒,在这里,被前端程序员选中的代码将被授予「libcef.dll」,导引浏览器之力‌。你将扮演一位名为「电脑用户」的冤种角色,在各种软件的安装中下载类型各异、体积庞大的 CEF 们,被它们一起占用硬盘空间,吃光你的内存——同时,逐步发掘「CEF」的真相。 13 | 14 | ## 截屏 15 | 16 | ![Screenshot](./screenshot.png) 17 | 18 | ## 使用 19 | 20 | **你首先需要安装 [Everything](https://www.voidtools.com/) 并完成全硬盘的扫描.** 21 | 22 | 从 [Release](https://github.com/ShirasawaSama/CefDetectorX/releases) 页面下载最新的压缩包, 解压后运行 `CefDetectorX.exe` 即可. 23 | 24 | > **Warning** 25 | > 不支持精简版Everything, 它不允许 [IPC](https://www.voidtools.com/zh-cn/support/everything/sdk/ipc/) 26 | 27 | 28 | ## 特性 29 | 30 | - 检测 CEF 的类型: 如 [libcef](https://bitbucket.org/chromiumembedded/cef/src/master/)、[Electron](https://www.electronjs.org/)、[NWJS](https://nwjs.io/)、[CefSharp](http://cefsharp.github.io/)、[MiniBlink](https://github.com/weolar/miniblink49)、[MiniElectron](https://github.com/weolar/miniblink49)、[Edge](https://www.microsoft.com/en-us/edge) 和 [Chrome](https://www.google.com/chrome/) 31 | - 显示总空间占用 32 | - 显示当前所运行的进程 (绿色文件名) 33 | - 单独显示每个程序的空间占用并按大小排序 34 | - 支持自定义背景音乐 (默认为: [The Magnificent Seven](https://soundcloud.com/7kruzes/the-magnificent-seven), 替换 resources/app/bgm.mp3 即可) 35 | - 可以通过添加参数 `--no-bgm` 的形式来关闭背景音乐 36 | 37 | ## 作者 38 | 39 | Shirasawa 40 | 41 | 创意来自 @Lakr233 的 [SafariYYDS](https://github.com/Lakr233/SafariYYDS) 项目. 42 | 43 | ## 协议 44 | 45 | [MIT](./LICENSE) 46 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | const JSZip = require('jszip') 2 | const fs = require('fs') 3 | const path = require('path') 4 | 5 | const files = [ 6 | ...fs.readdirSync('src').map(it => ['src/' + it, 'resources/app/' + it]), 7 | 'LICENSE', 8 | 'es.exe', 9 | 'README.md' 10 | ] 11 | 12 | const electronRoot = path.resolve(require.resolve('electron'), '../dist') 13 | const walkDir = dir => fs.promises.readdir(dir).then(list => Promise.all(list.map(async file => { 14 | const cur = path.join(dir, file) 15 | if ((await fs.promises.stat(cur)).isDirectory()) await walkDir(cur) 16 | else { 17 | const name = path.relative(electronRoot, cur).replace(/\\/g, '/') 18 | if (name === 'LICENSE' || name.startsWith('resources/')) return 19 | files.push([cur, name.startsWith('electron') ? 'CefDetectorX' + name.replace(/^electron/, '') : name]) 20 | } 21 | }))) 22 | 23 | const ZIP_OPTIONS = { type: 'nodebuffer', compression: 'DEFLATE', compressionOptions: { level: 9 } } 24 | const zip = new JSZip() 25 | walkDir(electronRoot) 26 | .then(() => Promise.all(files.map(it => fs.promises.readFile(typeof it === 'string' ? it : it[0]).then(data => zip.file('CefDetectorX/' + (typeof it === 'string' ? it : it[1]), data))))) 27 | .then(() => console.log(Object.keys(zip.files))) 28 | .then(() => zip.generateAsync(ZIP_OPTIONS)) 29 | .then(data => fs.promises.writeFile('CefDetectorX-with-bgm.zip', data)) 30 | .then(() => zip.remove('CefDetectorX/resources/app/bgm.mp3').generateAsync(ZIP_OPTIONS)) 31 | .then(data => fs.promises.writeFile('CefDetectorX.zip', data)) 32 | -------------------------------------------------------------------------------- /es.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShirasawaSama/CefDetectorX/64f47b013e560251527255da5b0dd94523e9ef8e/es.exe -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cef-detector-x", 3 | "version": "0.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "cef-detector-x", 9 | "version": "0.1.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "electron": "^24.0.0", 13 | "jszip": "^3.10.1" 14 | }, 15 | "devDependencies": { 16 | "eslint": "^8.28.0", 17 | "eslint-config-standard": "^17.0.0", 18 | "eslint-plugin-import": "^2.26.0", 19 | "eslint-plugin-n": "^15.5.1", 20 | "eslint-plugin-promise": "^6.1.1" 21 | } 22 | }, 23 | "node_modules/@electron/get": { 24 | "version": "2.0.2", 25 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", 26 | "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", 27 | "dependencies": { 28 | "debug": "^4.1.1", 29 | "env-paths": "^2.2.0", 30 | "fs-extra": "^8.1.0", 31 | "got": "^11.8.5", 32 | "progress": "^2.0.3", 33 | "semver": "^6.2.0", 34 | "sumchecker": "^3.0.1" 35 | }, 36 | "engines": { 37 | "node": ">=12" 38 | }, 39 | "optionalDependencies": { 40 | "global-agent": "^3.0.0" 41 | } 42 | }, 43 | "node_modules/@electron/get/node_modules/semver": { 44 | "version": "6.3.0", 45 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 46 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 47 | "bin": { 48 | "semver": "bin/semver.js" 49 | } 50 | }, 51 | "node_modules/@eslint/eslintrc": { 52 | "version": "1.3.3", 53 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", 54 | "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", 55 | "dev": true, 56 | "dependencies": { 57 | "ajv": "^6.12.4", 58 | "debug": "^4.3.2", 59 | "espree": "^9.4.0", 60 | "globals": "^13.15.0", 61 | "ignore": "^5.2.0", 62 | "import-fresh": "^3.2.1", 63 | "js-yaml": "^4.1.0", 64 | "minimatch": "^3.1.2", 65 | "strip-json-comments": "^3.1.1" 66 | }, 67 | "engines": { 68 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 69 | }, 70 | "funding": { 71 | "url": "https://opencollective.com/eslint" 72 | } 73 | }, 74 | "node_modules/@humanwhocodes/config-array": { 75 | "version": "0.11.7", 76 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", 77 | "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", 78 | "dev": true, 79 | "dependencies": { 80 | "@humanwhocodes/object-schema": "^1.2.1", 81 | "debug": "^4.1.1", 82 | "minimatch": "^3.0.5" 83 | }, 84 | "engines": { 85 | "node": ">=10.10.0" 86 | } 87 | }, 88 | "node_modules/@humanwhocodes/module-importer": { 89 | "version": "1.0.1", 90 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 91 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 92 | "dev": true, 93 | "engines": { 94 | "node": ">=12.22" 95 | }, 96 | "funding": { 97 | "type": "github", 98 | "url": "https://github.com/sponsors/nzakas" 99 | } 100 | }, 101 | "node_modules/@humanwhocodes/object-schema": { 102 | "version": "1.2.1", 103 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 104 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 105 | "dev": true 106 | }, 107 | "node_modules/@nodelib/fs.scandir": { 108 | "version": "2.1.5", 109 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 110 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 111 | "dev": true, 112 | "dependencies": { 113 | "@nodelib/fs.stat": "2.0.5", 114 | "run-parallel": "^1.1.9" 115 | }, 116 | "engines": { 117 | "node": ">= 8" 118 | } 119 | }, 120 | "node_modules/@nodelib/fs.stat": { 121 | "version": "2.0.5", 122 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 123 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 124 | "dev": true, 125 | "engines": { 126 | "node": ">= 8" 127 | } 128 | }, 129 | "node_modules/@nodelib/fs.walk": { 130 | "version": "1.2.8", 131 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 132 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 133 | "dev": true, 134 | "dependencies": { 135 | "@nodelib/fs.scandir": "2.1.5", 136 | "fastq": "^1.6.0" 137 | }, 138 | "engines": { 139 | "node": ">= 8" 140 | } 141 | }, 142 | "node_modules/@sindresorhus/is": { 143 | "version": "4.6.0", 144 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", 145 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", 146 | "engines": { 147 | "node": ">=10" 148 | }, 149 | "funding": { 150 | "url": "https://github.com/sindresorhus/is?sponsor=1" 151 | } 152 | }, 153 | "node_modules/@szmarczak/http-timer": { 154 | "version": "4.0.6", 155 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", 156 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", 157 | "dependencies": { 158 | "defer-to-connect": "^2.0.0" 159 | }, 160 | "engines": { 161 | "node": ">=10" 162 | } 163 | }, 164 | "node_modules/@types/cacheable-request": { 165 | "version": "6.0.3", 166 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", 167 | "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", 168 | "dependencies": { 169 | "@types/http-cache-semantics": "*", 170 | "@types/keyv": "^3.1.4", 171 | "@types/node": "*", 172 | "@types/responselike": "^1.0.0" 173 | } 174 | }, 175 | "node_modules/@types/http-cache-semantics": { 176 | "version": "4.0.1", 177 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", 178 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" 179 | }, 180 | "node_modules/@types/json5": { 181 | "version": "0.0.29", 182 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 183 | "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", 184 | "dev": true 185 | }, 186 | "node_modules/@types/keyv": { 187 | "version": "3.1.4", 188 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", 189 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", 190 | "dependencies": { 191 | "@types/node": "*" 192 | } 193 | }, 194 | "node_modules/@types/node": { 195 | "version": "18.15.11", 196 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", 197 | "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" 198 | }, 199 | "node_modules/@types/responselike": { 200 | "version": "1.0.0", 201 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 202 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 203 | "dependencies": { 204 | "@types/node": "*" 205 | } 206 | }, 207 | "node_modules/@types/yauzl": { 208 | "version": "2.10.0", 209 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 210 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 211 | "optional": true, 212 | "dependencies": { 213 | "@types/node": "*" 214 | } 215 | }, 216 | "node_modules/acorn": { 217 | "version": "8.8.1", 218 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", 219 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", 220 | "dev": true, 221 | "bin": { 222 | "acorn": "bin/acorn" 223 | }, 224 | "engines": { 225 | "node": ">=0.4.0" 226 | } 227 | }, 228 | "node_modules/acorn-jsx": { 229 | "version": "5.3.2", 230 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 231 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 232 | "dev": true, 233 | "peerDependencies": { 234 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 235 | } 236 | }, 237 | "node_modules/ajv": { 238 | "version": "6.12.6", 239 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 240 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 241 | "dev": true, 242 | "dependencies": { 243 | "fast-deep-equal": "^3.1.1", 244 | "fast-json-stable-stringify": "^2.0.0", 245 | "json-schema-traverse": "^0.4.1", 246 | "uri-js": "^4.2.2" 247 | }, 248 | "funding": { 249 | "type": "github", 250 | "url": "https://github.com/sponsors/epoberezkin" 251 | } 252 | }, 253 | "node_modules/ansi-regex": { 254 | "version": "5.0.1", 255 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 256 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 257 | "dev": true, 258 | "engines": { 259 | "node": ">=8" 260 | } 261 | }, 262 | "node_modules/ansi-styles": { 263 | "version": "4.3.0", 264 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 265 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 266 | "dev": true, 267 | "dependencies": { 268 | "color-convert": "^2.0.1" 269 | }, 270 | "engines": { 271 | "node": ">=8" 272 | }, 273 | "funding": { 274 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 275 | } 276 | }, 277 | "node_modules/argparse": { 278 | "version": "2.0.1", 279 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 280 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 281 | "dev": true 282 | }, 283 | "node_modules/array-includes": { 284 | "version": "3.1.6", 285 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", 286 | "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", 287 | "dev": true, 288 | "dependencies": { 289 | "call-bind": "^1.0.2", 290 | "define-properties": "^1.1.4", 291 | "es-abstract": "^1.20.4", 292 | "get-intrinsic": "^1.1.3", 293 | "is-string": "^1.0.7" 294 | }, 295 | "engines": { 296 | "node": ">= 0.4" 297 | }, 298 | "funding": { 299 | "url": "https://github.com/sponsors/ljharb" 300 | } 301 | }, 302 | "node_modules/array.prototype.flat": { 303 | "version": "1.3.1", 304 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", 305 | "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", 306 | "dev": true, 307 | "dependencies": { 308 | "call-bind": "^1.0.2", 309 | "define-properties": "^1.1.4", 310 | "es-abstract": "^1.20.4", 311 | "es-shim-unscopables": "^1.0.0" 312 | }, 313 | "engines": { 314 | "node": ">= 0.4" 315 | }, 316 | "funding": { 317 | "url": "https://github.com/sponsors/ljharb" 318 | } 319 | }, 320 | "node_modules/balanced-match": { 321 | "version": "1.0.2", 322 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 323 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 324 | "dev": true 325 | }, 326 | "node_modules/boolean": { 327 | "version": "3.2.0", 328 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", 329 | "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", 330 | "optional": true 331 | }, 332 | "node_modules/brace-expansion": { 333 | "version": "1.1.11", 334 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 335 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 336 | "dev": true, 337 | "dependencies": { 338 | "balanced-match": "^1.0.0", 339 | "concat-map": "0.0.1" 340 | } 341 | }, 342 | "node_modules/buffer-crc32": { 343 | "version": "0.2.13", 344 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 345 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 346 | "engines": { 347 | "node": "*" 348 | } 349 | }, 350 | "node_modules/builtins": { 351 | "version": "5.0.1", 352 | "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", 353 | "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", 354 | "dev": true, 355 | "dependencies": { 356 | "semver": "^7.0.0" 357 | } 358 | }, 359 | "node_modules/cacheable-lookup": { 360 | "version": "5.0.4", 361 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 362 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", 363 | "engines": { 364 | "node": ">=10.6.0" 365 | } 366 | }, 367 | "node_modules/cacheable-request": { 368 | "version": "7.0.2", 369 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", 370 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", 371 | "dependencies": { 372 | "clone-response": "^1.0.2", 373 | "get-stream": "^5.1.0", 374 | "http-cache-semantics": "^4.0.0", 375 | "keyv": "^4.0.0", 376 | "lowercase-keys": "^2.0.0", 377 | "normalize-url": "^6.0.1", 378 | "responselike": "^2.0.0" 379 | }, 380 | "engines": { 381 | "node": ">=8" 382 | } 383 | }, 384 | "node_modules/call-bind": { 385 | "version": "1.0.2", 386 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 387 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 388 | "dev": true, 389 | "dependencies": { 390 | "function-bind": "^1.1.1", 391 | "get-intrinsic": "^1.0.2" 392 | }, 393 | "funding": { 394 | "url": "https://github.com/sponsors/ljharb" 395 | } 396 | }, 397 | "node_modules/callsites": { 398 | "version": "3.1.0", 399 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 400 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 401 | "dev": true, 402 | "engines": { 403 | "node": ">=6" 404 | } 405 | }, 406 | "node_modules/chalk": { 407 | "version": "4.1.2", 408 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 409 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 410 | "dev": true, 411 | "dependencies": { 412 | "ansi-styles": "^4.1.0", 413 | "supports-color": "^7.1.0" 414 | }, 415 | "engines": { 416 | "node": ">=10" 417 | }, 418 | "funding": { 419 | "url": "https://github.com/chalk/chalk?sponsor=1" 420 | } 421 | }, 422 | "node_modules/clone-response": { 423 | "version": "1.0.3", 424 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", 425 | "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 426 | "dependencies": { 427 | "mimic-response": "^1.0.0" 428 | }, 429 | "funding": { 430 | "url": "https://github.com/sponsors/sindresorhus" 431 | } 432 | }, 433 | "node_modules/color-convert": { 434 | "version": "2.0.1", 435 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 436 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 437 | "dev": true, 438 | "dependencies": { 439 | "color-name": "~1.1.4" 440 | }, 441 | "engines": { 442 | "node": ">=7.0.0" 443 | } 444 | }, 445 | "node_modules/color-name": { 446 | "version": "1.1.4", 447 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 448 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 449 | "dev": true 450 | }, 451 | "node_modules/concat-map": { 452 | "version": "0.0.1", 453 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 454 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 455 | "dev": true 456 | }, 457 | "node_modules/core-util-is": { 458 | "version": "1.0.3", 459 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 460 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 461 | }, 462 | "node_modules/cross-spawn": { 463 | "version": "7.0.3", 464 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 465 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 466 | "dev": true, 467 | "dependencies": { 468 | "path-key": "^3.1.0", 469 | "shebang-command": "^2.0.0", 470 | "which": "^2.0.1" 471 | }, 472 | "engines": { 473 | "node": ">= 8" 474 | } 475 | }, 476 | "node_modules/debug": { 477 | "version": "4.3.4", 478 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 479 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 480 | "dependencies": { 481 | "ms": "2.1.2" 482 | }, 483 | "engines": { 484 | "node": ">=6.0" 485 | }, 486 | "peerDependenciesMeta": { 487 | "supports-color": { 488 | "optional": true 489 | } 490 | } 491 | }, 492 | "node_modules/decompress-response": { 493 | "version": "6.0.0", 494 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 495 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 496 | "dependencies": { 497 | "mimic-response": "^3.1.0" 498 | }, 499 | "engines": { 500 | "node": ">=10" 501 | }, 502 | "funding": { 503 | "url": "https://github.com/sponsors/sindresorhus" 504 | } 505 | }, 506 | "node_modules/decompress-response/node_modules/mimic-response": { 507 | "version": "3.1.0", 508 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 509 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 510 | "engines": { 511 | "node": ">=10" 512 | }, 513 | "funding": { 514 | "url": "https://github.com/sponsors/sindresorhus" 515 | } 516 | }, 517 | "node_modules/deep-is": { 518 | "version": "0.1.4", 519 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 520 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 521 | "dev": true 522 | }, 523 | "node_modules/defer-to-connect": { 524 | "version": "2.0.1", 525 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 526 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", 527 | "engines": { 528 | "node": ">=10" 529 | } 530 | }, 531 | "node_modules/define-properties": { 532 | "version": "1.1.4", 533 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 534 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 535 | "devOptional": true, 536 | "dependencies": { 537 | "has-property-descriptors": "^1.0.0", 538 | "object-keys": "^1.1.1" 539 | }, 540 | "engines": { 541 | "node": ">= 0.4" 542 | }, 543 | "funding": { 544 | "url": "https://github.com/sponsors/ljharb" 545 | } 546 | }, 547 | "node_modules/detect-node": { 548 | "version": "2.1.0", 549 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", 550 | "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", 551 | "optional": true 552 | }, 553 | "node_modules/doctrine": { 554 | "version": "3.0.0", 555 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 556 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 557 | "dev": true, 558 | "dependencies": { 559 | "esutils": "^2.0.2" 560 | }, 561 | "engines": { 562 | "node": ">=6.0.0" 563 | } 564 | }, 565 | "node_modules/electron": { 566 | "version": "24.0.0", 567 | "resolved": "https://registry.npmjs.org/electron/-/electron-24.0.0.tgz", 568 | "integrity": "sha512-QmL8L53fQ+xOAp8m2mSGNewhDvJqQttCxrcesf0cqndKQDsIq4QvR35wGJqHg7MyPQKcBErLhZj9QvRheO5qnA==", 569 | "hasInstallScript": true, 570 | "dependencies": { 571 | "@electron/get": "^2.0.0", 572 | "@types/node": "^18.11.18", 573 | "extract-zip": "^2.0.1" 574 | }, 575 | "bin": { 576 | "electron": "cli.js" 577 | }, 578 | "engines": { 579 | "node": ">= 12.20.55" 580 | } 581 | }, 582 | "node_modules/end-of-stream": { 583 | "version": "1.4.4", 584 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 585 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 586 | "dependencies": { 587 | "once": "^1.4.0" 588 | } 589 | }, 590 | "node_modules/env-paths": { 591 | "version": "2.2.1", 592 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 593 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 594 | "engines": { 595 | "node": ">=6" 596 | } 597 | }, 598 | "node_modules/es-abstract": { 599 | "version": "1.20.4", 600 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", 601 | "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", 602 | "dev": true, 603 | "dependencies": { 604 | "call-bind": "^1.0.2", 605 | "es-to-primitive": "^1.2.1", 606 | "function-bind": "^1.1.1", 607 | "function.prototype.name": "^1.1.5", 608 | "get-intrinsic": "^1.1.3", 609 | "get-symbol-description": "^1.0.0", 610 | "has": "^1.0.3", 611 | "has-property-descriptors": "^1.0.0", 612 | "has-symbols": "^1.0.3", 613 | "internal-slot": "^1.0.3", 614 | "is-callable": "^1.2.7", 615 | "is-negative-zero": "^2.0.2", 616 | "is-regex": "^1.1.4", 617 | "is-shared-array-buffer": "^1.0.2", 618 | "is-string": "^1.0.7", 619 | "is-weakref": "^1.0.2", 620 | "object-inspect": "^1.12.2", 621 | "object-keys": "^1.1.1", 622 | "object.assign": "^4.1.4", 623 | "regexp.prototype.flags": "^1.4.3", 624 | "safe-regex-test": "^1.0.0", 625 | "string.prototype.trimend": "^1.0.5", 626 | "string.prototype.trimstart": "^1.0.5", 627 | "unbox-primitive": "^1.0.2" 628 | }, 629 | "engines": { 630 | "node": ">= 0.4" 631 | }, 632 | "funding": { 633 | "url": "https://github.com/sponsors/ljharb" 634 | } 635 | }, 636 | "node_modules/es-shim-unscopables": { 637 | "version": "1.0.0", 638 | "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", 639 | "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", 640 | "dev": true, 641 | "dependencies": { 642 | "has": "^1.0.3" 643 | } 644 | }, 645 | "node_modules/es-to-primitive": { 646 | "version": "1.2.1", 647 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 648 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 649 | "dev": true, 650 | "dependencies": { 651 | "is-callable": "^1.1.4", 652 | "is-date-object": "^1.0.1", 653 | "is-symbol": "^1.0.2" 654 | }, 655 | "engines": { 656 | "node": ">= 0.4" 657 | }, 658 | "funding": { 659 | "url": "https://github.com/sponsors/ljharb" 660 | } 661 | }, 662 | "node_modules/es6-error": { 663 | "version": "4.1.1", 664 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 665 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 666 | "optional": true 667 | }, 668 | "node_modules/escape-string-regexp": { 669 | "version": "4.0.0", 670 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 671 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 672 | "devOptional": true, 673 | "engines": { 674 | "node": ">=10" 675 | }, 676 | "funding": { 677 | "url": "https://github.com/sponsors/sindresorhus" 678 | } 679 | }, 680 | "node_modules/eslint": { 681 | "version": "8.28.0", 682 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", 683 | "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", 684 | "dev": true, 685 | "dependencies": { 686 | "@eslint/eslintrc": "^1.3.3", 687 | "@humanwhocodes/config-array": "^0.11.6", 688 | "@humanwhocodes/module-importer": "^1.0.1", 689 | "@nodelib/fs.walk": "^1.2.8", 690 | "ajv": "^6.10.0", 691 | "chalk": "^4.0.0", 692 | "cross-spawn": "^7.0.2", 693 | "debug": "^4.3.2", 694 | "doctrine": "^3.0.0", 695 | "escape-string-regexp": "^4.0.0", 696 | "eslint-scope": "^7.1.1", 697 | "eslint-utils": "^3.0.0", 698 | "eslint-visitor-keys": "^3.3.0", 699 | "espree": "^9.4.0", 700 | "esquery": "^1.4.0", 701 | "esutils": "^2.0.2", 702 | "fast-deep-equal": "^3.1.3", 703 | "file-entry-cache": "^6.0.1", 704 | "find-up": "^5.0.0", 705 | "glob-parent": "^6.0.2", 706 | "globals": "^13.15.0", 707 | "grapheme-splitter": "^1.0.4", 708 | "ignore": "^5.2.0", 709 | "import-fresh": "^3.0.0", 710 | "imurmurhash": "^0.1.4", 711 | "is-glob": "^4.0.0", 712 | "is-path-inside": "^3.0.3", 713 | "js-sdsl": "^4.1.4", 714 | "js-yaml": "^4.1.0", 715 | "json-stable-stringify-without-jsonify": "^1.0.1", 716 | "levn": "^0.4.1", 717 | "lodash.merge": "^4.6.2", 718 | "minimatch": "^3.1.2", 719 | "natural-compare": "^1.4.0", 720 | "optionator": "^0.9.1", 721 | "regexpp": "^3.2.0", 722 | "strip-ansi": "^6.0.1", 723 | "strip-json-comments": "^3.1.0", 724 | "text-table": "^0.2.0" 725 | }, 726 | "bin": { 727 | "eslint": "bin/eslint.js" 728 | }, 729 | "engines": { 730 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 731 | }, 732 | "funding": { 733 | "url": "https://opencollective.com/eslint" 734 | } 735 | }, 736 | "node_modules/eslint-config-standard": { 737 | "version": "17.0.0", 738 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", 739 | "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", 740 | "dev": true, 741 | "funding": [ 742 | { 743 | "type": "github", 744 | "url": "https://github.com/sponsors/feross" 745 | }, 746 | { 747 | "type": "patreon", 748 | "url": "https://www.patreon.com/feross" 749 | }, 750 | { 751 | "type": "consulting", 752 | "url": "https://feross.org/support" 753 | } 754 | ], 755 | "peerDependencies": { 756 | "eslint": "^8.0.1", 757 | "eslint-plugin-import": "^2.25.2", 758 | "eslint-plugin-n": "^15.0.0", 759 | "eslint-plugin-promise": "^6.0.0" 760 | } 761 | }, 762 | "node_modules/eslint-import-resolver-node": { 763 | "version": "0.3.6", 764 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 765 | "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 766 | "dev": true, 767 | "dependencies": { 768 | "debug": "^3.2.7", 769 | "resolve": "^1.20.0" 770 | } 771 | }, 772 | "node_modules/eslint-import-resolver-node/node_modules/debug": { 773 | "version": "3.2.7", 774 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 775 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 776 | "dev": true, 777 | "dependencies": { 778 | "ms": "^2.1.1" 779 | } 780 | }, 781 | "node_modules/eslint-module-utils": { 782 | "version": "2.7.4", 783 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", 784 | "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", 785 | "dev": true, 786 | "dependencies": { 787 | "debug": "^3.2.7" 788 | }, 789 | "engines": { 790 | "node": ">=4" 791 | }, 792 | "peerDependenciesMeta": { 793 | "eslint": { 794 | "optional": true 795 | } 796 | } 797 | }, 798 | "node_modules/eslint-module-utils/node_modules/debug": { 799 | "version": "3.2.7", 800 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 801 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 802 | "dev": true, 803 | "dependencies": { 804 | "ms": "^2.1.1" 805 | } 806 | }, 807 | "node_modules/eslint-plugin-es": { 808 | "version": "4.1.0", 809 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", 810 | "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", 811 | "dev": true, 812 | "dependencies": { 813 | "eslint-utils": "^2.0.0", 814 | "regexpp": "^3.0.0" 815 | }, 816 | "engines": { 817 | "node": ">=8.10.0" 818 | }, 819 | "funding": { 820 | "url": "https://github.com/sponsors/mysticatea" 821 | }, 822 | "peerDependencies": { 823 | "eslint": ">=4.19.1" 824 | } 825 | }, 826 | "node_modules/eslint-plugin-es/node_modules/eslint-utils": { 827 | "version": "2.1.0", 828 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 829 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 830 | "dev": true, 831 | "dependencies": { 832 | "eslint-visitor-keys": "^1.1.0" 833 | }, 834 | "engines": { 835 | "node": ">=6" 836 | }, 837 | "funding": { 838 | "url": "https://github.com/sponsors/mysticatea" 839 | } 840 | }, 841 | "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { 842 | "version": "1.3.0", 843 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 844 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 845 | "dev": true, 846 | "engines": { 847 | "node": ">=4" 848 | } 849 | }, 850 | "node_modules/eslint-plugin-import": { 851 | "version": "2.26.0", 852 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", 853 | "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", 854 | "dev": true, 855 | "dependencies": { 856 | "array-includes": "^3.1.4", 857 | "array.prototype.flat": "^1.2.5", 858 | "debug": "^2.6.9", 859 | "doctrine": "^2.1.0", 860 | "eslint-import-resolver-node": "^0.3.6", 861 | "eslint-module-utils": "^2.7.3", 862 | "has": "^1.0.3", 863 | "is-core-module": "^2.8.1", 864 | "is-glob": "^4.0.3", 865 | "minimatch": "^3.1.2", 866 | "object.values": "^1.1.5", 867 | "resolve": "^1.22.0", 868 | "tsconfig-paths": "^3.14.1" 869 | }, 870 | "engines": { 871 | "node": ">=4" 872 | }, 873 | "peerDependencies": { 874 | "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" 875 | } 876 | }, 877 | "node_modules/eslint-plugin-import/node_modules/debug": { 878 | "version": "2.6.9", 879 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 880 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 881 | "dev": true, 882 | "dependencies": { 883 | "ms": "2.0.0" 884 | } 885 | }, 886 | "node_modules/eslint-plugin-import/node_modules/doctrine": { 887 | "version": "2.1.0", 888 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 889 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 890 | "dev": true, 891 | "dependencies": { 892 | "esutils": "^2.0.2" 893 | }, 894 | "engines": { 895 | "node": ">=0.10.0" 896 | } 897 | }, 898 | "node_modules/eslint-plugin-import/node_modules/ms": { 899 | "version": "2.0.0", 900 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 901 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 902 | "dev": true 903 | }, 904 | "node_modules/eslint-plugin-n": { 905 | "version": "15.5.1", 906 | "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.5.1.tgz", 907 | "integrity": "sha512-kAd+xhZm7brHoFLzKLB7/FGRFJNg/srmv67mqb7tto22rpr4wv/LV6RuXzAfv3jbab7+k1wi42PsIhGviywaaw==", 908 | "dev": true, 909 | "dependencies": { 910 | "builtins": "^5.0.1", 911 | "eslint-plugin-es": "^4.1.0", 912 | "eslint-utils": "^3.0.0", 913 | "ignore": "^5.1.1", 914 | "is-core-module": "^2.11.0", 915 | "minimatch": "^3.1.2", 916 | "resolve": "^1.22.1", 917 | "semver": "^7.3.8" 918 | }, 919 | "engines": { 920 | "node": ">=12.22.0" 921 | }, 922 | "funding": { 923 | "url": "https://github.com/sponsors/mysticatea" 924 | }, 925 | "peerDependencies": { 926 | "eslint": ">=7.0.0" 927 | } 928 | }, 929 | "node_modules/eslint-plugin-promise": { 930 | "version": "6.1.1", 931 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", 932 | "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", 933 | "dev": true, 934 | "engines": { 935 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 936 | }, 937 | "peerDependencies": { 938 | "eslint": "^7.0.0 || ^8.0.0" 939 | } 940 | }, 941 | "node_modules/eslint-scope": { 942 | "version": "7.1.1", 943 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 944 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 945 | "dev": true, 946 | "dependencies": { 947 | "esrecurse": "^4.3.0", 948 | "estraverse": "^5.2.0" 949 | }, 950 | "engines": { 951 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 952 | } 953 | }, 954 | "node_modules/eslint-utils": { 955 | "version": "3.0.0", 956 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 957 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 958 | "dev": true, 959 | "dependencies": { 960 | "eslint-visitor-keys": "^2.0.0" 961 | }, 962 | "engines": { 963 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" 964 | }, 965 | "funding": { 966 | "url": "https://github.com/sponsors/mysticatea" 967 | }, 968 | "peerDependencies": { 969 | "eslint": ">=5" 970 | } 971 | }, 972 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 973 | "version": "2.1.0", 974 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 975 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 976 | "dev": true, 977 | "engines": { 978 | "node": ">=10" 979 | } 980 | }, 981 | "node_modules/eslint-visitor-keys": { 982 | "version": "3.3.0", 983 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 984 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 985 | "dev": true, 986 | "engines": { 987 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 988 | } 989 | }, 990 | "node_modules/espree": { 991 | "version": "9.4.1", 992 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", 993 | "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", 994 | "dev": true, 995 | "dependencies": { 996 | "acorn": "^8.8.0", 997 | "acorn-jsx": "^5.3.2", 998 | "eslint-visitor-keys": "^3.3.0" 999 | }, 1000 | "engines": { 1001 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1002 | }, 1003 | "funding": { 1004 | "url": "https://opencollective.com/eslint" 1005 | } 1006 | }, 1007 | "node_modules/esquery": { 1008 | "version": "1.4.0", 1009 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1010 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1011 | "dev": true, 1012 | "dependencies": { 1013 | "estraverse": "^5.1.0" 1014 | }, 1015 | "engines": { 1016 | "node": ">=0.10" 1017 | } 1018 | }, 1019 | "node_modules/esrecurse": { 1020 | "version": "4.3.0", 1021 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1022 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1023 | "dev": true, 1024 | "dependencies": { 1025 | "estraverse": "^5.2.0" 1026 | }, 1027 | "engines": { 1028 | "node": ">=4.0" 1029 | } 1030 | }, 1031 | "node_modules/estraverse": { 1032 | "version": "5.3.0", 1033 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1034 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1035 | "dev": true, 1036 | "engines": { 1037 | "node": ">=4.0" 1038 | } 1039 | }, 1040 | "node_modules/esutils": { 1041 | "version": "2.0.3", 1042 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1043 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1044 | "dev": true, 1045 | "engines": { 1046 | "node": ">=0.10.0" 1047 | } 1048 | }, 1049 | "node_modules/extract-zip": { 1050 | "version": "2.0.1", 1051 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 1052 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 1053 | "dependencies": { 1054 | "debug": "^4.1.1", 1055 | "get-stream": "^5.1.0", 1056 | "yauzl": "^2.10.0" 1057 | }, 1058 | "bin": { 1059 | "extract-zip": "cli.js" 1060 | }, 1061 | "engines": { 1062 | "node": ">= 10.17.0" 1063 | }, 1064 | "optionalDependencies": { 1065 | "@types/yauzl": "^2.9.1" 1066 | } 1067 | }, 1068 | "node_modules/fast-deep-equal": { 1069 | "version": "3.1.3", 1070 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1071 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1072 | "dev": true 1073 | }, 1074 | "node_modules/fast-json-stable-stringify": { 1075 | "version": "2.1.0", 1076 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1077 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1078 | "dev": true 1079 | }, 1080 | "node_modules/fast-levenshtein": { 1081 | "version": "2.0.6", 1082 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1083 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1084 | "dev": true 1085 | }, 1086 | "node_modules/fastq": { 1087 | "version": "1.13.0", 1088 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 1089 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 1090 | "dev": true, 1091 | "dependencies": { 1092 | "reusify": "^1.0.4" 1093 | } 1094 | }, 1095 | "node_modules/fd-slicer": { 1096 | "version": "1.1.0", 1097 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1098 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 1099 | "dependencies": { 1100 | "pend": "~1.2.0" 1101 | } 1102 | }, 1103 | "node_modules/file-entry-cache": { 1104 | "version": "6.0.1", 1105 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1106 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1107 | "dev": true, 1108 | "dependencies": { 1109 | "flat-cache": "^3.0.4" 1110 | }, 1111 | "engines": { 1112 | "node": "^10.12.0 || >=12.0.0" 1113 | } 1114 | }, 1115 | "node_modules/find-up": { 1116 | "version": "5.0.0", 1117 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1118 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1119 | "dev": true, 1120 | "dependencies": { 1121 | "locate-path": "^6.0.0", 1122 | "path-exists": "^4.0.0" 1123 | }, 1124 | "engines": { 1125 | "node": ">=10" 1126 | }, 1127 | "funding": { 1128 | "url": "https://github.com/sponsors/sindresorhus" 1129 | } 1130 | }, 1131 | "node_modules/flat-cache": { 1132 | "version": "3.0.4", 1133 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1134 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1135 | "dev": true, 1136 | "dependencies": { 1137 | "flatted": "^3.1.0", 1138 | "rimraf": "^3.0.2" 1139 | }, 1140 | "engines": { 1141 | "node": "^10.12.0 || >=12.0.0" 1142 | } 1143 | }, 1144 | "node_modules/flatted": { 1145 | "version": "3.2.7", 1146 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 1147 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 1148 | "dev": true 1149 | }, 1150 | "node_modules/fs-extra": { 1151 | "version": "8.1.0", 1152 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1153 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1154 | "dependencies": { 1155 | "graceful-fs": "^4.2.0", 1156 | "jsonfile": "^4.0.0", 1157 | "universalify": "^0.1.0" 1158 | }, 1159 | "engines": { 1160 | "node": ">=6 <7 || >=8" 1161 | } 1162 | }, 1163 | "node_modules/fs.realpath": { 1164 | "version": "1.0.0", 1165 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1166 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1167 | "dev": true 1168 | }, 1169 | "node_modules/function-bind": { 1170 | "version": "1.1.1", 1171 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1172 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1173 | "devOptional": true 1174 | }, 1175 | "node_modules/function.prototype.name": { 1176 | "version": "1.1.5", 1177 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", 1178 | "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", 1179 | "dev": true, 1180 | "dependencies": { 1181 | "call-bind": "^1.0.2", 1182 | "define-properties": "^1.1.3", 1183 | "es-abstract": "^1.19.0", 1184 | "functions-have-names": "^1.2.2" 1185 | }, 1186 | "engines": { 1187 | "node": ">= 0.4" 1188 | }, 1189 | "funding": { 1190 | "url": "https://github.com/sponsors/ljharb" 1191 | } 1192 | }, 1193 | "node_modules/functions-have-names": { 1194 | "version": "1.2.3", 1195 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 1196 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 1197 | "dev": true, 1198 | "funding": { 1199 | "url": "https://github.com/sponsors/ljharb" 1200 | } 1201 | }, 1202 | "node_modules/get-intrinsic": { 1203 | "version": "1.1.3", 1204 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1205 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1206 | "devOptional": true, 1207 | "dependencies": { 1208 | "function-bind": "^1.1.1", 1209 | "has": "^1.0.3", 1210 | "has-symbols": "^1.0.3" 1211 | }, 1212 | "funding": { 1213 | "url": "https://github.com/sponsors/ljharb" 1214 | } 1215 | }, 1216 | "node_modules/get-stream": { 1217 | "version": "5.2.0", 1218 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1219 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1220 | "dependencies": { 1221 | "pump": "^3.0.0" 1222 | }, 1223 | "engines": { 1224 | "node": ">=8" 1225 | }, 1226 | "funding": { 1227 | "url": "https://github.com/sponsors/sindresorhus" 1228 | } 1229 | }, 1230 | "node_modules/get-symbol-description": { 1231 | "version": "1.0.0", 1232 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1233 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1234 | "dev": true, 1235 | "dependencies": { 1236 | "call-bind": "^1.0.2", 1237 | "get-intrinsic": "^1.1.1" 1238 | }, 1239 | "engines": { 1240 | "node": ">= 0.4" 1241 | }, 1242 | "funding": { 1243 | "url": "https://github.com/sponsors/ljharb" 1244 | } 1245 | }, 1246 | "node_modules/glob": { 1247 | "version": "7.2.3", 1248 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1249 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "fs.realpath": "^1.0.0", 1253 | "inflight": "^1.0.4", 1254 | "inherits": "2", 1255 | "minimatch": "^3.1.1", 1256 | "once": "^1.3.0", 1257 | "path-is-absolute": "^1.0.0" 1258 | }, 1259 | "engines": { 1260 | "node": "*" 1261 | }, 1262 | "funding": { 1263 | "url": "https://github.com/sponsors/isaacs" 1264 | } 1265 | }, 1266 | "node_modules/glob-parent": { 1267 | "version": "6.0.2", 1268 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1269 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1270 | "dev": true, 1271 | "dependencies": { 1272 | "is-glob": "^4.0.3" 1273 | }, 1274 | "engines": { 1275 | "node": ">=10.13.0" 1276 | } 1277 | }, 1278 | "node_modules/global-agent": { 1279 | "version": "3.0.0", 1280 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", 1281 | "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", 1282 | "optional": true, 1283 | "dependencies": { 1284 | "boolean": "^3.0.1", 1285 | "es6-error": "^4.1.1", 1286 | "matcher": "^3.0.0", 1287 | "roarr": "^2.15.3", 1288 | "semver": "^7.3.2", 1289 | "serialize-error": "^7.0.1" 1290 | }, 1291 | "engines": { 1292 | "node": ">=10.0" 1293 | } 1294 | }, 1295 | "node_modules/globals": { 1296 | "version": "13.18.0", 1297 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", 1298 | "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", 1299 | "dev": true, 1300 | "dependencies": { 1301 | "type-fest": "^0.20.2" 1302 | }, 1303 | "engines": { 1304 | "node": ">=8" 1305 | }, 1306 | "funding": { 1307 | "url": "https://github.com/sponsors/sindresorhus" 1308 | } 1309 | }, 1310 | "node_modules/globalthis": { 1311 | "version": "1.0.3", 1312 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 1313 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 1314 | "optional": true, 1315 | "dependencies": { 1316 | "define-properties": "^1.1.3" 1317 | }, 1318 | "engines": { 1319 | "node": ">= 0.4" 1320 | }, 1321 | "funding": { 1322 | "url": "https://github.com/sponsors/ljharb" 1323 | } 1324 | }, 1325 | "node_modules/got": { 1326 | "version": "11.8.5", 1327 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", 1328 | "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", 1329 | "dependencies": { 1330 | "@sindresorhus/is": "^4.0.0", 1331 | "@szmarczak/http-timer": "^4.0.5", 1332 | "@types/cacheable-request": "^6.0.1", 1333 | "@types/responselike": "^1.0.0", 1334 | "cacheable-lookup": "^5.0.3", 1335 | "cacheable-request": "^7.0.2", 1336 | "decompress-response": "^6.0.0", 1337 | "http2-wrapper": "^1.0.0-beta.5.2", 1338 | "lowercase-keys": "^2.0.0", 1339 | "p-cancelable": "^2.0.0", 1340 | "responselike": "^2.0.0" 1341 | }, 1342 | "engines": { 1343 | "node": ">=10.19.0" 1344 | }, 1345 | "funding": { 1346 | "url": "https://github.com/sindresorhus/got?sponsor=1" 1347 | } 1348 | }, 1349 | "node_modules/graceful-fs": { 1350 | "version": "4.2.10", 1351 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1352 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 1353 | }, 1354 | "node_modules/grapheme-splitter": { 1355 | "version": "1.0.4", 1356 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 1357 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 1358 | "dev": true 1359 | }, 1360 | "node_modules/has": { 1361 | "version": "1.0.3", 1362 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1363 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1364 | "devOptional": true, 1365 | "dependencies": { 1366 | "function-bind": "^1.1.1" 1367 | }, 1368 | "engines": { 1369 | "node": ">= 0.4.0" 1370 | } 1371 | }, 1372 | "node_modules/has-bigints": { 1373 | "version": "1.0.2", 1374 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 1375 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 1376 | "dev": true, 1377 | "funding": { 1378 | "url": "https://github.com/sponsors/ljharb" 1379 | } 1380 | }, 1381 | "node_modules/has-flag": { 1382 | "version": "4.0.0", 1383 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1384 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1385 | "dev": true, 1386 | "engines": { 1387 | "node": ">=8" 1388 | } 1389 | }, 1390 | "node_modules/has-property-descriptors": { 1391 | "version": "1.0.0", 1392 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1393 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1394 | "devOptional": true, 1395 | "dependencies": { 1396 | "get-intrinsic": "^1.1.1" 1397 | }, 1398 | "funding": { 1399 | "url": "https://github.com/sponsors/ljharb" 1400 | } 1401 | }, 1402 | "node_modules/has-symbols": { 1403 | "version": "1.0.3", 1404 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1405 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1406 | "devOptional": true, 1407 | "engines": { 1408 | "node": ">= 0.4" 1409 | }, 1410 | "funding": { 1411 | "url": "https://github.com/sponsors/ljharb" 1412 | } 1413 | }, 1414 | "node_modules/has-tostringtag": { 1415 | "version": "1.0.0", 1416 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1417 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1418 | "dev": true, 1419 | "dependencies": { 1420 | "has-symbols": "^1.0.2" 1421 | }, 1422 | "engines": { 1423 | "node": ">= 0.4" 1424 | }, 1425 | "funding": { 1426 | "url": "https://github.com/sponsors/ljharb" 1427 | } 1428 | }, 1429 | "node_modules/http-cache-semantics": { 1430 | "version": "4.1.0", 1431 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1432 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 1433 | }, 1434 | "node_modules/http2-wrapper": { 1435 | "version": "1.0.3", 1436 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 1437 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 1438 | "dependencies": { 1439 | "quick-lru": "^5.1.1", 1440 | "resolve-alpn": "^1.0.0" 1441 | }, 1442 | "engines": { 1443 | "node": ">=10.19.0" 1444 | } 1445 | }, 1446 | "node_modules/ignore": { 1447 | "version": "5.2.1", 1448 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", 1449 | "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", 1450 | "dev": true, 1451 | "engines": { 1452 | "node": ">= 4" 1453 | } 1454 | }, 1455 | "node_modules/immediate": { 1456 | "version": "3.0.6", 1457 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 1458 | "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" 1459 | }, 1460 | "node_modules/import-fresh": { 1461 | "version": "3.3.0", 1462 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1463 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1464 | "dev": true, 1465 | "dependencies": { 1466 | "parent-module": "^1.0.0", 1467 | "resolve-from": "^4.0.0" 1468 | }, 1469 | "engines": { 1470 | "node": ">=6" 1471 | }, 1472 | "funding": { 1473 | "url": "https://github.com/sponsors/sindresorhus" 1474 | } 1475 | }, 1476 | "node_modules/imurmurhash": { 1477 | "version": "0.1.4", 1478 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1479 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1480 | "dev": true, 1481 | "engines": { 1482 | "node": ">=0.8.19" 1483 | } 1484 | }, 1485 | "node_modules/inflight": { 1486 | "version": "1.0.6", 1487 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1488 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1489 | "dev": true, 1490 | "dependencies": { 1491 | "once": "^1.3.0", 1492 | "wrappy": "1" 1493 | } 1494 | }, 1495 | "node_modules/inherits": { 1496 | "version": "2.0.4", 1497 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1498 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1499 | }, 1500 | "node_modules/internal-slot": { 1501 | "version": "1.0.3", 1502 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 1503 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 1504 | "dev": true, 1505 | "dependencies": { 1506 | "get-intrinsic": "^1.1.0", 1507 | "has": "^1.0.3", 1508 | "side-channel": "^1.0.4" 1509 | }, 1510 | "engines": { 1511 | "node": ">= 0.4" 1512 | } 1513 | }, 1514 | "node_modules/is-bigint": { 1515 | "version": "1.0.4", 1516 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1517 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1518 | "dev": true, 1519 | "dependencies": { 1520 | "has-bigints": "^1.0.1" 1521 | }, 1522 | "funding": { 1523 | "url": "https://github.com/sponsors/ljharb" 1524 | } 1525 | }, 1526 | "node_modules/is-boolean-object": { 1527 | "version": "1.1.2", 1528 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1529 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1530 | "dev": true, 1531 | "dependencies": { 1532 | "call-bind": "^1.0.2", 1533 | "has-tostringtag": "^1.0.0" 1534 | }, 1535 | "engines": { 1536 | "node": ">= 0.4" 1537 | }, 1538 | "funding": { 1539 | "url": "https://github.com/sponsors/ljharb" 1540 | } 1541 | }, 1542 | "node_modules/is-callable": { 1543 | "version": "1.2.7", 1544 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 1545 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 1546 | "dev": true, 1547 | "engines": { 1548 | "node": ">= 0.4" 1549 | }, 1550 | "funding": { 1551 | "url": "https://github.com/sponsors/ljharb" 1552 | } 1553 | }, 1554 | "node_modules/is-core-module": { 1555 | "version": "2.11.0", 1556 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1557 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1558 | "dev": true, 1559 | "dependencies": { 1560 | "has": "^1.0.3" 1561 | }, 1562 | "funding": { 1563 | "url": "https://github.com/sponsors/ljharb" 1564 | } 1565 | }, 1566 | "node_modules/is-date-object": { 1567 | "version": "1.0.5", 1568 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1569 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1570 | "dev": true, 1571 | "dependencies": { 1572 | "has-tostringtag": "^1.0.0" 1573 | }, 1574 | "engines": { 1575 | "node": ">= 0.4" 1576 | }, 1577 | "funding": { 1578 | "url": "https://github.com/sponsors/ljharb" 1579 | } 1580 | }, 1581 | "node_modules/is-extglob": { 1582 | "version": "2.1.1", 1583 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1584 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1585 | "dev": true, 1586 | "engines": { 1587 | "node": ">=0.10.0" 1588 | } 1589 | }, 1590 | "node_modules/is-glob": { 1591 | "version": "4.0.3", 1592 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1593 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1594 | "dev": true, 1595 | "dependencies": { 1596 | "is-extglob": "^2.1.1" 1597 | }, 1598 | "engines": { 1599 | "node": ">=0.10.0" 1600 | } 1601 | }, 1602 | "node_modules/is-negative-zero": { 1603 | "version": "2.0.2", 1604 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1605 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1606 | "dev": true, 1607 | "engines": { 1608 | "node": ">= 0.4" 1609 | }, 1610 | "funding": { 1611 | "url": "https://github.com/sponsors/ljharb" 1612 | } 1613 | }, 1614 | "node_modules/is-number-object": { 1615 | "version": "1.0.7", 1616 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1617 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1618 | "dev": true, 1619 | "dependencies": { 1620 | "has-tostringtag": "^1.0.0" 1621 | }, 1622 | "engines": { 1623 | "node": ">= 0.4" 1624 | }, 1625 | "funding": { 1626 | "url": "https://github.com/sponsors/ljharb" 1627 | } 1628 | }, 1629 | "node_modules/is-path-inside": { 1630 | "version": "3.0.3", 1631 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1632 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1633 | "dev": true, 1634 | "engines": { 1635 | "node": ">=8" 1636 | } 1637 | }, 1638 | "node_modules/is-regex": { 1639 | "version": "1.1.4", 1640 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1641 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1642 | "dev": true, 1643 | "dependencies": { 1644 | "call-bind": "^1.0.2", 1645 | "has-tostringtag": "^1.0.0" 1646 | }, 1647 | "engines": { 1648 | "node": ">= 0.4" 1649 | }, 1650 | "funding": { 1651 | "url": "https://github.com/sponsors/ljharb" 1652 | } 1653 | }, 1654 | "node_modules/is-shared-array-buffer": { 1655 | "version": "1.0.2", 1656 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1657 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1658 | "dev": true, 1659 | "dependencies": { 1660 | "call-bind": "^1.0.2" 1661 | }, 1662 | "funding": { 1663 | "url": "https://github.com/sponsors/ljharb" 1664 | } 1665 | }, 1666 | "node_modules/is-string": { 1667 | "version": "1.0.7", 1668 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1669 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1670 | "dev": true, 1671 | "dependencies": { 1672 | "has-tostringtag": "^1.0.0" 1673 | }, 1674 | "engines": { 1675 | "node": ">= 0.4" 1676 | }, 1677 | "funding": { 1678 | "url": "https://github.com/sponsors/ljharb" 1679 | } 1680 | }, 1681 | "node_modules/is-symbol": { 1682 | "version": "1.0.4", 1683 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1684 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1685 | "dev": true, 1686 | "dependencies": { 1687 | "has-symbols": "^1.0.2" 1688 | }, 1689 | "engines": { 1690 | "node": ">= 0.4" 1691 | }, 1692 | "funding": { 1693 | "url": "https://github.com/sponsors/ljharb" 1694 | } 1695 | }, 1696 | "node_modules/is-weakref": { 1697 | "version": "1.0.2", 1698 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1699 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1700 | "dev": true, 1701 | "dependencies": { 1702 | "call-bind": "^1.0.2" 1703 | }, 1704 | "funding": { 1705 | "url": "https://github.com/sponsors/ljharb" 1706 | } 1707 | }, 1708 | "node_modules/isarray": { 1709 | "version": "1.0.0", 1710 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1711 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 1712 | }, 1713 | "node_modules/isexe": { 1714 | "version": "2.0.0", 1715 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1716 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1717 | "dev": true 1718 | }, 1719 | "node_modules/js-sdsl": { 1720 | "version": "4.2.0", 1721 | "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", 1722 | "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", 1723 | "dev": true, 1724 | "funding": { 1725 | "type": "opencollective", 1726 | "url": "https://opencollective.com/js-sdsl" 1727 | } 1728 | }, 1729 | "node_modules/js-yaml": { 1730 | "version": "4.1.0", 1731 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1732 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1733 | "dev": true, 1734 | "dependencies": { 1735 | "argparse": "^2.0.1" 1736 | }, 1737 | "bin": { 1738 | "js-yaml": "bin/js-yaml.js" 1739 | } 1740 | }, 1741 | "node_modules/json-buffer": { 1742 | "version": "3.0.1", 1743 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1744 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 1745 | }, 1746 | "node_modules/json-schema-traverse": { 1747 | "version": "0.4.1", 1748 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1749 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1750 | "dev": true 1751 | }, 1752 | "node_modules/json-stable-stringify-without-jsonify": { 1753 | "version": "1.0.1", 1754 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1755 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1756 | "dev": true 1757 | }, 1758 | "node_modules/json-stringify-safe": { 1759 | "version": "5.0.1", 1760 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1761 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 1762 | "optional": true 1763 | }, 1764 | "node_modules/json5": { 1765 | "version": "1.0.1", 1766 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1767 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1768 | "dev": true, 1769 | "dependencies": { 1770 | "minimist": "^1.2.0" 1771 | }, 1772 | "bin": { 1773 | "json5": "lib/cli.js" 1774 | } 1775 | }, 1776 | "node_modules/jsonfile": { 1777 | "version": "4.0.0", 1778 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1779 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1780 | "optionalDependencies": { 1781 | "graceful-fs": "^4.1.6" 1782 | } 1783 | }, 1784 | "node_modules/jszip": { 1785 | "version": "3.10.1", 1786 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", 1787 | "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", 1788 | "dependencies": { 1789 | "lie": "~3.3.0", 1790 | "pako": "~1.0.2", 1791 | "readable-stream": "~2.3.6", 1792 | "setimmediate": "^1.0.5" 1793 | } 1794 | }, 1795 | "node_modules/keyv": { 1796 | "version": "4.5.2", 1797 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", 1798 | "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", 1799 | "dependencies": { 1800 | "json-buffer": "3.0.1" 1801 | } 1802 | }, 1803 | "node_modules/levn": { 1804 | "version": "0.4.1", 1805 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1806 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1807 | "dev": true, 1808 | "dependencies": { 1809 | "prelude-ls": "^1.2.1", 1810 | "type-check": "~0.4.0" 1811 | }, 1812 | "engines": { 1813 | "node": ">= 0.8.0" 1814 | } 1815 | }, 1816 | "node_modules/lie": { 1817 | "version": "3.3.0", 1818 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 1819 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 1820 | "dependencies": { 1821 | "immediate": "~3.0.5" 1822 | } 1823 | }, 1824 | "node_modules/locate-path": { 1825 | "version": "6.0.0", 1826 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1827 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1828 | "dev": true, 1829 | "dependencies": { 1830 | "p-locate": "^5.0.0" 1831 | }, 1832 | "engines": { 1833 | "node": ">=10" 1834 | }, 1835 | "funding": { 1836 | "url": "https://github.com/sponsors/sindresorhus" 1837 | } 1838 | }, 1839 | "node_modules/lodash.merge": { 1840 | "version": "4.6.2", 1841 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1842 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1843 | "dev": true 1844 | }, 1845 | "node_modules/lowercase-keys": { 1846 | "version": "2.0.0", 1847 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 1848 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 1849 | "engines": { 1850 | "node": ">=8" 1851 | } 1852 | }, 1853 | "node_modules/lru-cache": { 1854 | "version": "6.0.0", 1855 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1856 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1857 | "devOptional": true, 1858 | "dependencies": { 1859 | "yallist": "^4.0.0" 1860 | }, 1861 | "engines": { 1862 | "node": ">=10" 1863 | } 1864 | }, 1865 | "node_modules/matcher": { 1866 | "version": "3.0.0", 1867 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", 1868 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", 1869 | "optional": true, 1870 | "dependencies": { 1871 | "escape-string-regexp": "^4.0.0" 1872 | }, 1873 | "engines": { 1874 | "node": ">=10" 1875 | } 1876 | }, 1877 | "node_modules/mimic-response": { 1878 | "version": "1.0.1", 1879 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1880 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 1881 | "engines": { 1882 | "node": ">=4" 1883 | } 1884 | }, 1885 | "node_modules/minimatch": { 1886 | "version": "3.1.2", 1887 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1888 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1889 | "dev": true, 1890 | "dependencies": { 1891 | "brace-expansion": "^1.1.7" 1892 | }, 1893 | "engines": { 1894 | "node": "*" 1895 | } 1896 | }, 1897 | "node_modules/minimist": { 1898 | "version": "1.2.7", 1899 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 1900 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 1901 | "dev": true, 1902 | "funding": { 1903 | "url": "https://github.com/sponsors/ljharb" 1904 | } 1905 | }, 1906 | "node_modules/ms": { 1907 | "version": "2.1.2", 1908 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1909 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1910 | }, 1911 | "node_modules/natural-compare": { 1912 | "version": "1.4.0", 1913 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1914 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1915 | "dev": true 1916 | }, 1917 | "node_modules/normalize-url": { 1918 | "version": "6.1.0", 1919 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 1920 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", 1921 | "engines": { 1922 | "node": ">=10" 1923 | }, 1924 | "funding": { 1925 | "url": "https://github.com/sponsors/sindresorhus" 1926 | } 1927 | }, 1928 | "node_modules/object-inspect": { 1929 | "version": "1.12.2", 1930 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1931 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 1932 | "dev": true, 1933 | "funding": { 1934 | "url": "https://github.com/sponsors/ljharb" 1935 | } 1936 | }, 1937 | "node_modules/object-keys": { 1938 | "version": "1.1.1", 1939 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1940 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1941 | "devOptional": true, 1942 | "engines": { 1943 | "node": ">= 0.4" 1944 | } 1945 | }, 1946 | "node_modules/object.assign": { 1947 | "version": "4.1.4", 1948 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", 1949 | "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", 1950 | "dev": true, 1951 | "dependencies": { 1952 | "call-bind": "^1.0.2", 1953 | "define-properties": "^1.1.4", 1954 | "has-symbols": "^1.0.3", 1955 | "object-keys": "^1.1.1" 1956 | }, 1957 | "engines": { 1958 | "node": ">= 0.4" 1959 | }, 1960 | "funding": { 1961 | "url": "https://github.com/sponsors/ljharb" 1962 | } 1963 | }, 1964 | "node_modules/object.values": { 1965 | "version": "1.1.6", 1966 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", 1967 | "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", 1968 | "dev": true, 1969 | "dependencies": { 1970 | "call-bind": "^1.0.2", 1971 | "define-properties": "^1.1.4", 1972 | "es-abstract": "^1.20.4" 1973 | }, 1974 | "engines": { 1975 | "node": ">= 0.4" 1976 | }, 1977 | "funding": { 1978 | "url": "https://github.com/sponsors/ljharb" 1979 | } 1980 | }, 1981 | "node_modules/once": { 1982 | "version": "1.4.0", 1983 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1984 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1985 | "dependencies": { 1986 | "wrappy": "1" 1987 | } 1988 | }, 1989 | "node_modules/optionator": { 1990 | "version": "0.9.1", 1991 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1992 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1993 | "dev": true, 1994 | "dependencies": { 1995 | "deep-is": "^0.1.3", 1996 | "fast-levenshtein": "^2.0.6", 1997 | "levn": "^0.4.1", 1998 | "prelude-ls": "^1.2.1", 1999 | "type-check": "^0.4.0", 2000 | "word-wrap": "^1.2.3" 2001 | }, 2002 | "engines": { 2003 | "node": ">= 0.8.0" 2004 | } 2005 | }, 2006 | "node_modules/p-cancelable": { 2007 | "version": "2.1.1", 2008 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 2009 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", 2010 | "engines": { 2011 | "node": ">=8" 2012 | } 2013 | }, 2014 | "node_modules/p-limit": { 2015 | "version": "3.1.0", 2016 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2017 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2018 | "dev": true, 2019 | "dependencies": { 2020 | "yocto-queue": "^0.1.0" 2021 | }, 2022 | "engines": { 2023 | "node": ">=10" 2024 | }, 2025 | "funding": { 2026 | "url": "https://github.com/sponsors/sindresorhus" 2027 | } 2028 | }, 2029 | "node_modules/p-locate": { 2030 | "version": "5.0.0", 2031 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2032 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2033 | "dev": true, 2034 | "dependencies": { 2035 | "p-limit": "^3.0.2" 2036 | }, 2037 | "engines": { 2038 | "node": ">=10" 2039 | }, 2040 | "funding": { 2041 | "url": "https://github.com/sponsors/sindresorhus" 2042 | } 2043 | }, 2044 | "node_modules/pako": { 2045 | "version": "1.0.11", 2046 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 2047 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 2048 | }, 2049 | "node_modules/parent-module": { 2050 | "version": "1.0.1", 2051 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2052 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2053 | "dev": true, 2054 | "dependencies": { 2055 | "callsites": "^3.0.0" 2056 | }, 2057 | "engines": { 2058 | "node": ">=6" 2059 | } 2060 | }, 2061 | "node_modules/path-exists": { 2062 | "version": "4.0.0", 2063 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2064 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2065 | "dev": true, 2066 | "engines": { 2067 | "node": ">=8" 2068 | } 2069 | }, 2070 | "node_modules/path-is-absolute": { 2071 | "version": "1.0.1", 2072 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2073 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2074 | "dev": true, 2075 | "engines": { 2076 | "node": ">=0.10.0" 2077 | } 2078 | }, 2079 | "node_modules/path-key": { 2080 | "version": "3.1.1", 2081 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2082 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2083 | "dev": true, 2084 | "engines": { 2085 | "node": ">=8" 2086 | } 2087 | }, 2088 | "node_modules/path-parse": { 2089 | "version": "1.0.7", 2090 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2091 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2092 | "dev": true 2093 | }, 2094 | "node_modules/pend": { 2095 | "version": "1.2.0", 2096 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 2097 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 2098 | }, 2099 | "node_modules/prelude-ls": { 2100 | "version": "1.2.1", 2101 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2102 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2103 | "dev": true, 2104 | "engines": { 2105 | "node": ">= 0.8.0" 2106 | } 2107 | }, 2108 | "node_modules/process-nextick-args": { 2109 | "version": "2.0.1", 2110 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2111 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2112 | }, 2113 | "node_modules/progress": { 2114 | "version": "2.0.3", 2115 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2116 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2117 | "engines": { 2118 | "node": ">=0.4.0" 2119 | } 2120 | }, 2121 | "node_modules/pump": { 2122 | "version": "3.0.0", 2123 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2124 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2125 | "dependencies": { 2126 | "end-of-stream": "^1.1.0", 2127 | "once": "^1.3.1" 2128 | } 2129 | }, 2130 | "node_modules/punycode": { 2131 | "version": "2.1.1", 2132 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2133 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2134 | "dev": true, 2135 | "engines": { 2136 | "node": ">=6" 2137 | } 2138 | }, 2139 | "node_modules/queue-microtask": { 2140 | "version": "1.2.3", 2141 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2142 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2143 | "dev": true, 2144 | "funding": [ 2145 | { 2146 | "type": "github", 2147 | "url": "https://github.com/sponsors/feross" 2148 | }, 2149 | { 2150 | "type": "patreon", 2151 | "url": "https://www.patreon.com/feross" 2152 | }, 2153 | { 2154 | "type": "consulting", 2155 | "url": "https://feross.org/support" 2156 | } 2157 | ] 2158 | }, 2159 | "node_modules/quick-lru": { 2160 | "version": "5.1.1", 2161 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 2162 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 2163 | "engines": { 2164 | "node": ">=10" 2165 | }, 2166 | "funding": { 2167 | "url": "https://github.com/sponsors/sindresorhus" 2168 | } 2169 | }, 2170 | "node_modules/readable-stream": { 2171 | "version": "2.3.7", 2172 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2173 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2174 | "dependencies": { 2175 | "core-util-is": "~1.0.0", 2176 | "inherits": "~2.0.3", 2177 | "isarray": "~1.0.0", 2178 | "process-nextick-args": "~2.0.0", 2179 | "safe-buffer": "~5.1.1", 2180 | "string_decoder": "~1.1.1", 2181 | "util-deprecate": "~1.0.1" 2182 | } 2183 | }, 2184 | "node_modules/regexp.prototype.flags": { 2185 | "version": "1.4.3", 2186 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 2187 | "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 2188 | "dev": true, 2189 | "dependencies": { 2190 | "call-bind": "^1.0.2", 2191 | "define-properties": "^1.1.3", 2192 | "functions-have-names": "^1.2.2" 2193 | }, 2194 | "engines": { 2195 | "node": ">= 0.4" 2196 | }, 2197 | "funding": { 2198 | "url": "https://github.com/sponsors/ljharb" 2199 | } 2200 | }, 2201 | "node_modules/regexpp": { 2202 | "version": "3.2.0", 2203 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2204 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2205 | "dev": true, 2206 | "engines": { 2207 | "node": ">=8" 2208 | }, 2209 | "funding": { 2210 | "url": "https://github.com/sponsors/mysticatea" 2211 | } 2212 | }, 2213 | "node_modules/resolve": { 2214 | "version": "1.22.1", 2215 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2216 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2217 | "dev": true, 2218 | "dependencies": { 2219 | "is-core-module": "^2.9.0", 2220 | "path-parse": "^1.0.7", 2221 | "supports-preserve-symlinks-flag": "^1.0.0" 2222 | }, 2223 | "bin": { 2224 | "resolve": "bin/resolve" 2225 | }, 2226 | "funding": { 2227 | "url": "https://github.com/sponsors/ljharb" 2228 | } 2229 | }, 2230 | "node_modules/resolve-alpn": { 2231 | "version": "1.2.1", 2232 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 2233 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" 2234 | }, 2235 | "node_modules/resolve-from": { 2236 | "version": "4.0.0", 2237 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2238 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2239 | "dev": true, 2240 | "engines": { 2241 | "node": ">=4" 2242 | } 2243 | }, 2244 | "node_modules/responselike": { 2245 | "version": "2.0.1", 2246 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", 2247 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", 2248 | "dependencies": { 2249 | "lowercase-keys": "^2.0.0" 2250 | }, 2251 | "funding": { 2252 | "url": "https://github.com/sponsors/sindresorhus" 2253 | } 2254 | }, 2255 | "node_modules/reusify": { 2256 | "version": "1.0.4", 2257 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2258 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2259 | "dev": true, 2260 | "engines": { 2261 | "iojs": ">=1.0.0", 2262 | "node": ">=0.10.0" 2263 | } 2264 | }, 2265 | "node_modules/rimraf": { 2266 | "version": "3.0.2", 2267 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2268 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2269 | "dev": true, 2270 | "dependencies": { 2271 | "glob": "^7.1.3" 2272 | }, 2273 | "bin": { 2274 | "rimraf": "bin.js" 2275 | }, 2276 | "funding": { 2277 | "url": "https://github.com/sponsors/isaacs" 2278 | } 2279 | }, 2280 | "node_modules/roarr": { 2281 | "version": "2.15.4", 2282 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", 2283 | "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", 2284 | "optional": true, 2285 | "dependencies": { 2286 | "boolean": "^3.0.1", 2287 | "detect-node": "^2.0.4", 2288 | "globalthis": "^1.0.1", 2289 | "json-stringify-safe": "^5.0.1", 2290 | "semver-compare": "^1.0.0", 2291 | "sprintf-js": "^1.1.2" 2292 | }, 2293 | "engines": { 2294 | "node": ">=8.0" 2295 | } 2296 | }, 2297 | "node_modules/run-parallel": { 2298 | "version": "1.2.0", 2299 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2300 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2301 | "dev": true, 2302 | "funding": [ 2303 | { 2304 | "type": "github", 2305 | "url": "https://github.com/sponsors/feross" 2306 | }, 2307 | { 2308 | "type": "patreon", 2309 | "url": "https://www.patreon.com/feross" 2310 | }, 2311 | { 2312 | "type": "consulting", 2313 | "url": "https://feross.org/support" 2314 | } 2315 | ], 2316 | "dependencies": { 2317 | "queue-microtask": "^1.2.2" 2318 | } 2319 | }, 2320 | "node_modules/safe-buffer": { 2321 | "version": "5.1.2", 2322 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2323 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2324 | }, 2325 | "node_modules/safe-regex-test": { 2326 | "version": "1.0.0", 2327 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", 2328 | "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", 2329 | "dev": true, 2330 | "dependencies": { 2331 | "call-bind": "^1.0.2", 2332 | "get-intrinsic": "^1.1.3", 2333 | "is-regex": "^1.1.4" 2334 | }, 2335 | "funding": { 2336 | "url": "https://github.com/sponsors/ljharb" 2337 | } 2338 | }, 2339 | "node_modules/semver": { 2340 | "version": "7.3.8", 2341 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 2342 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 2343 | "devOptional": true, 2344 | "dependencies": { 2345 | "lru-cache": "^6.0.0" 2346 | }, 2347 | "bin": { 2348 | "semver": "bin/semver.js" 2349 | }, 2350 | "engines": { 2351 | "node": ">=10" 2352 | } 2353 | }, 2354 | "node_modules/semver-compare": { 2355 | "version": "1.0.0", 2356 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 2357 | "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", 2358 | "optional": true 2359 | }, 2360 | "node_modules/serialize-error": { 2361 | "version": "7.0.1", 2362 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", 2363 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", 2364 | "optional": true, 2365 | "dependencies": { 2366 | "type-fest": "^0.13.1" 2367 | }, 2368 | "engines": { 2369 | "node": ">=10" 2370 | }, 2371 | "funding": { 2372 | "url": "https://github.com/sponsors/sindresorhus" 2373 | } 2374 | }, 2375 | "node_modules/serialize-error/node_modules/type-fest": { 2376 | "version": "0.13.1", 2377 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", 2378 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", 2379 | "optional": true, 2380 | "engines": { 2381 | "node": ">=10" 2382 | }, 2383 | "funding": { 2384 | "url": "https://github.com/sponsors/sindresorhus" 2385 | } 2386 | }, 2387 | "node_modules/setimmediate": { 2388 | "version": "1.0.5", 2389 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2390 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" 2391 | }, 2392 | "node_modules/shebang-command": { 2393 | "version": "2.0.0", 2394 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2395 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2396 | "dev": true, 2397 | "dependencies": { 2398 | "shebang-regex": "^3.0.0" 2399 | }, 2400 | "engines": { 2401 | "node": ">=8" 2402 | } 2403 | }, 2404 | "node_modules/shebang-regex": { 2405 | "version": "3.0.0", 2406 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2407 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2408 | "dev": true, 2409 | "engines": { 2410 | "node": ">=8" 2411 | } 2412 | }, 2413 | "node_modules/side-channel": { 2414 | "version": "1.0.4", 2415 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2416 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2417 | "dev": true, 2418 | "dependencies": { 2419 | "call-bind": "^1.0.0", 2420 | "get-intrinsic": "^1.0.2", 2421 | "object-inspect": "^1.9.0" 2422 | }, 2423 | "funding": { 2424 | "url": "https://github.com/sponsors/ljharb" 2425 | } 2426 | }, 2427 | "node_modules/sprintf-js": { 2428 | "version": "1.1.2", 2429 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 2430 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 2431 | "optional": true 2432 | }, 2433 | "node_modules/string_decoder": { 2434 | "version": "1.1.1", 2435 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2436 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2437 | "dependencies": { 2438 | "safe-buffer": "~5.1.0" 2439 | } 2440 | }, 2441 | "node_modules/string.prototype.trimend": { 2442 | "version": "1.0.6", 2443 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", 2444 | "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", 2445 | "dev": true, 2446 | "dependencies": { 2447 | "call-bind": "^1.0.2", 2448 | "define-properties": "^1.1.4", 2449 | "es-abstract": "^1.20.4" 2450 | }, 2451 | "funding": { 2452 | "url": "https://github.com/sponsors/ljharb" 2453 | } 2454 | }, 2455 | "node_modules/string.prototype.trimstart": { 2456 | "version": "1.0.6", 2457 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", 2458 | "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", 2459 | "dev": true, 2460 | "dependencies": { 2461 | "call-bind": "^1.0.2", 2462 | "define-properties": "^1.1.4", 2463 | "es-abstract": "^1.20.4" 2464 | }, 2465 | "funding": { 2466 | "url": "https://github.com/sponsors/ljharb" 2467 | } 2468 | }, 2469 | "node_modules/strip-ansi": { 2470 | "version": "6.0.1", 2471 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2472 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2473 | "dev": true, 2474 | "dependencies": { 2475 | "ansi-regex": "^5.0.1" 2476 | }, 2477 | "engines": { 2478 | "node": ">=8" 2479 | } 2480 | }, 2481 | "node_modules/strip-bom": { 2482 | "version": "3.0.0", 2483 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2484 | "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", 2485 | "dev": true, 2486 | "engines": { 2487 | "node": ">=4" 2488 | } 2489 | }, 2490 | "node_modules/strip-json-comments": { 2491 | "version": "3.1.1", 2492 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2493 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2494 | "dev": true, 2495 | "engines": { 2496 | "node": ">=8" 2497 | }, 2498 | "funding": { 2499 | "url": "https://github.com/sponsors/sindresorhus" 2500 | } 2501 | }, 2502 | "node_modules/sumchecker": { 2503 | "version": "3.0.1", 2504 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", 2505 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", 2506 | "dependencies": { 2507 | "debug": "^4.1.0" 2508 | }, 2509 | "engines": { 2510 | "node": ">= 8.0" 2511 | } 2512 | }, 2513 | "node_modules/supports-color": { 2514 | "version": "7.2.0", 2515 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2516 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2517 | "dev": true, 2518 | "dependencies": { 2519 | "has-flag": "^4.0.0" 2520 | }, 2521 | "engines": { 2522 | "node": ">=8" 2523 | } 2524 | }, 2525 | "node_modules/supports-preserve-symlinks-flag": { 2526 | "version": "1.0.0", 2527 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2528 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2529 | "dev": true, 2530 | "engines": { 2531 | "node": ">= 0.4" 2532 | }, 2533 | "funding": { 2534 | "url": "https://github.com/sponsors/ljharb" 2535 | } 2536 | }, 2537 | "node_modules/text-table": { 2538 | "version": "0.2.0", 2539 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2540 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2541 | "dev": true 2542 | }, 2543 | "node_modules/tsconfig-paths": { 2544 | "version": "3.14.1", 2545 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", 2546 | "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", 2547 | "dev": true, 2548 | "dependencies": { 2549 | "@types/json5": "^0.0.29", 2550 | "json5": "^1.0.1", 2551 | "minimist": "^1.2.6", 2552 | "strip-bom": "^3.0.0" 2553 | } 2554 | }, 2555 | "node_modules/type-check": { 2556 | "version": "0.4.0", 2557 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2558 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2559 | "dev": true, 2560 | "dependencies": { 2561 | "prelude-ls": "^1.2.1" 2562 | }, 2563 | "engines": { 2564 | "node": ">= 0.8.0" 2565 | } 2566 | }, 2567 | "node_modules/type-fest": { 2568 | "version": "0.20.2", 2569 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2570 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2571 | "dev": true, 2572 | "engines": { 2573 | "node": ">=10" 2574 | }, 2575 | "funding": { 2576 | "url": "https://github.com/sponsors/sindresorhus" 2577 | } 2578 | }, 2579 | "node_modules/unbox-primitive": { 2580 | "version": "1.0.2", 2581 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 2582 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 2583 | "dev": true, 2584 | "dependencies": { 2585 | "call-bind": "^1.0.2", 2586 | "has-bigints": "^1.0.2", 2587 | "has-symbols": "^1.0.3", 2588 | "which-boxed-primitive": "^1.0.2" 2589 | }, 2590 | "funding": { 2591 | "url": "https://github.com/sponsors/ljharb" 2592 | } 2593 | }, 2594 | "node_modules/universalify": { 2595 | "version": "0.1.2", 2596 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 2597 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 2598 | "engines": { 2599 | "node": ">= 4.0.0" 2600 | } 2601 | }, 2602 | "node_modules/uri-js": { 2603 | "version": "4.4.1", 2604 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2605 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2606 | "dev": true, 2607 | "dependencies": { 2608 | "punycode": "^2.1.0" 2609 | } 2610 | }, 2611 | "node_modules/util-deprecate": { 2612 | "version": "1.0.2", 2613 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2614 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2615 | }, 2616 | "node_modules/which": { 2617 | "version": "2.0.2", 2618 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2619 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2620 | "dev": true, 2621 | "dependencies": { 2622 | "isexe": "^2.0.0" 2623 | }, 2624 | "bin": { 2625 | "node-which": "bin/node-which" 2626 | }, 2627 | "engines": { 2628 | "node": ">= 8" 2629 | } 2630 | }, 2631 | "node_modules/which-boxed-primitive": { 2632 | "version": "1.0.2", 2633 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2634 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2635 | "dev": true, 2636 | "dependencies": { 2637 | "is-bigint": "^1.0.1", 2638 | "is-boolean-object": "^1.1.0", 2639 | "is-number-object": "^1.0.4", 2640 | "is-string": "^1.0.5", 2641 | "is-symbol": "^1.0.3" 2642 | }, 2643 | "funding": { 2644 | "url": "https://github.com/sponsors/ljharb" 2645 | } 2646 | }, 2647 | "node_modules/word-wrap": { 2648 | "version": "1.2.3", 2649 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2650 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2651 | "dev": true, 2652 | "engines": { 2653 | "node": ">=0.10.0" 2654 | } 2655 | }, 2656 | "node_modules/wrappy": { 2657 | "version": "1.0.2", 2658 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2659 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2660 | }, 2661 | "node_modules/yallist": { 2662 | "version": "4.0.0", 2663 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2664 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2665 | "devOptional": true 2666 | }, 2667 | "node_modules/yauzl": { 2668 | "version": "2.10.0", 2669 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 2670 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 2671 | "dependencies": { 2672 | "buffer-crc32": "~0.2.3", 2673 | "fd-slicer": "~1.1.0" 2674 | } 2675 | }, 2676 | "node_modules/yocto-queue": { 2677 | "version": "0.1.0", 2678 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2679 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2680 | "dev": true, 2681 | "engines": { 2682 | "node": ">=10" 2683 | }, 2684 | "funding": { 2685 | "url": "https://github.com/sponsors/sindresorhus" 2686 | } 2687 | } 2688 | } 2689 | } 2690 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cef-detector-x", 3 | "version": "0.1.0", 4 | "description": "Check how many CEFs are on your Windows.", 5 | "private": true, 6 | "scripts": { 7 | "start": "electron src", 8 | "build": "node build" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/ShirasawaSama/CefDetector.git" 13 | }, 14 | "keywords": [ 15 | "CEF", 16 | "electron", 17 | "libcef" 18 | ], 19 | "author": "Shirasawa", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/ShirasawaSama/CefDetector/issues" 23 | }, 24 | "homepage": "https://github.com/ShirasawaSama/CefDetector#readme", 25 | "devDependencies": { 26 | "eslint": "^8.28.0", 27 | "eslint-config-standard": "^17.0.0", 28 | "eslint-plugin-import": "^2.26.0", 29 | "eslint-plugin-n": "^15.5.1", 30 | "eslint-plugin-promise": "^6.1.1" 31 | }, 32 | "dependencies": { 33 | "electron": "^24.0.0", 34 | "jszip": "^3.10.1" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShirasawaSama/CefDetectorX/64f47b013e560251527255da5b0dd94523e9ef8e/screenshot.png -------------------------------------------------------------------------------- /src/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShirasawaSama/CefDetectorX/64f47b013e560251527255da5b0dd94523e9ef8e/src/background.png -------------------------------------------------------------------------------- /src/bgm.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShirasawaSama/CefDetectorX/64f47b013e560251527255da5b0dd94523e9ef8e/src/bgm.mp3 -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-image: url(background.png); 3 | background-size: 100% 100%; 4 | background-repeat: no-repeat; 5 | width: 100vw; 6 | height: 100vh; 7 | margin: 0; 8 | display: flex; 9 | flex-direction: column; 10 | align-items: center; 11 | } 12 | 13 | iframe { 14 | position: fixed; 15 | bottom: 0; 16 | right: 0; 17 | } 18 | 19 | audio { 20 | height: 28px; 21 | width: 280px; 22 | bottom: 10px; 23 | right: 10px; 24 | border-radius: 100px; 25 | position: fixed; 26 | box-shadow: rgba(0, 0, 0, .2) 0 3px 3px -2px, rgba(0, 0, 0, .14) 0 3px 4px 0, rgba(0, 0, 0, .12) 0 1px 8px 0; 27 | } 28 | 29 | img, h3 { 30 | width: 36px; 31 | height: 36px; 32 | margin-bottom: 6px; 33 | } 34 | 35 | main { 36 | position: absolute; 37 | top: 30vh; 38 | bottom: 10vh; 39 | overflow-y: auto; 40 | overflow-x: hidden; 41 | padding: 0 10vw; 42 | display: flex; 43 | flex-wrap: wrap; 44 | } 45 | 46 | section { 47 | width: 80px; 48 | height: 90px; 49 | margin: 6px; 50 | background: rgba(255, 255, 255, 0.3); 51 | padding: 12px 6px; 52 | border: 1px solid rgba(255, 255, 255, 0.3); 53 | border-radius: 4px; 54 | transition: .3s; 55 | cursor: pointer; 56 | user-select: none; 57 | display: inline-flex; 58 | flex-direction: column; 59 | justify-content: center; 60 | align-items: center; 61 | backdrop-filter: blur(3px); 62 | text-align: center; 63 | } 64 | 65 | section:hover { 66 | background: rgba(255, 255, 255, 0.55); 67 | border: 1px solid rgba(255, 255, 255, 0.55); 68 | } 69 | 70 | h2 { 71 | margin-top: 21vh; 72 | -webkit-text-stroke: 0.8px rgba(255, 255, 255, 0.8); 73 | } 74 | 75 | h3 { 76 | margin: 0; 77 | } 78 | 79 | h6 { 80 | margin: 0; 81 | text-overflow: ellipsis; 82 | overflow: hidden; 83 | letter-spacing: -0.1px; 84 | white-space: nowrap; 85 | width: 76px; 86 | } 87 | 88 | p { 89 | margin: 0; 90 | font-size: 10px; 91 | letter-spacing: -0.6px; 92 | } 93 | 94 | .running { 95 | color: #4caf50; 96 | } 97 | 98 | sub { 99 | font-size: 9px; 100 | letter-spacing: -0.6px; 101 | color: rgba(0, 0, 0, .84); 102 | } 103 | 104 | a { 105 | position: fixed; 106 | left: 10px; 107 | bottom: 20px; 108 | font-size: 12px; 109 | color: rgba(255, 255, 255, 0.8); 110 | transition: .3s; 111 | } 112 | 113 | a:hover { 114 | color: #fff; 115 | } 116 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | CEF Detector X 8 | 9 | 10 | 11 |

这台电脑上总共有 0 个 Chromium 内核的应用

12 |
13 | Repo: github.com/ShirasawaSama/CefDetectorX (求个STAR!) 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const { exec } = require('child_process') 2 | const { shell, ipcRenderer } = require('electron') 3 | const fs = require('original-fs').promises 4 | const path = require('path') 5 | 6 | document.getElementsByTagName('a')[0].onclick = () => shell.openExternal('https://github.com/ShirasawaSama/CefDetectorX') 7 | 8 | let cnt = 0 9 | let totalSize = 0 10 | const sizes = ['B', 'KB', 'MB', 'GB', 'TB'] 11 | const execAsync = cmd => new Promise(resolve => exec(cmd, { maxBuffer: 1000 * 1000 * 10, windowsHide: true }, (err, stdout, stderr) => { 12 | if (err || stderr) console.error(err || stderr) 13 | resolve(stdout || '') 14 | })) 15 | const exists = file => fs.stat(file).then(it => it.isFile(), () => false) 16 | const dirSize = async (dir, cache = { }, deep = 0) => { 17 | if (deep > 10) return 18 | try { 19 | const stats = await fs.stat(dir) 20 | if (cache[stats.ino]) return 21 | cache[stats.ino] = true 22 | totalSize += stats.size 23 | if (stats.isDirectory()) { 24 | await Promise.all((await fs.readdir(dir)).map(it => dirSize(path.join(dir, it), cache, deep + 1))) 25 | } 26 | } catch { } 27 | } 28 | 29 | const LIBCEF = 'cef_string_utf8_to_utf16' 30 | const ELECTRON = 'third_party/electron_node' 31 | const ELECTRON2 = 'register_atom_browser_web_contents' 32 | const CEF_SHARP = 'CefSharp.Internals' 33 | const NWJS = 'url-nwjs' 34 | const MINI_ELECTRON = 'napi_create_buffer' 35 | const MINI_BLINK = 'miniblink' 36 | 37 | ipcRenderer 38 | .invoke('has-args', 'no-bgm') 39 | .then(async val => { 40 | if (val) return 41 | if (await exists(path.join(__dirname, 'bgm.mp3'))) { 42 | const audio = new Audio('bgm.mp3') 43 | audio.autoplay = true 44 | audio.loop = true 45 | audio.controls = true 46 | document.body.appendChild(audio) 47 | } else { 48 | const iframe = document.createElement('iframe') 49 | iframe.src = 'https://music.163.com/outchain/player?type=2&id=5264829&auto=1&height=32' 50 | iframe.frameBorder = 0 51 | iframe.border = 0 52 | iframe.marginwidth = 0 53 | iframe.marginheight = 0 54 | iframe.width = 280 55 | iframe.height = 52 56 | document.body.appendChild(iframe) 57 | } 58 | }) 59 | 60 | const prettySize = len => { 61 | let order = 0 62 | while (len >= 1024 && order < sizes.length - 1) { 63 | order++ 64 | len /= 1024 65 | } 66 | return len.toFixed(2) + ' ' + sizes[order] 67 | } 68 | 69 | const cache = { } 70 | const nodes = [] 71 | const mainElm = document.getElementsByTagName('main')[0] 72 | const titleElm = document.getElementsByTagName('h2')[0] 73 | const addApp = async (file, type, isDir = false) => { 74 | console.log('Found:', type, file) 75 | if (cache[file]) return 76 | const prevSize = totalSize 77 | await dirSize(isDir ? file : path.dirname(file)) 78 | cache[file] = true 79 | const elm = document.createElement('section') 80 | const fileName = path.basename(file) 81 | elm.title = file 82 | nodes.push([totalSize - prevSize, elm]) 83 | const icon = await ipcRenderer.invoke('get-app-icon', file) 84 | elm.innerHTML = (icon ? `${fileName}` : '

?

') + 85 | `
${fileName}

${type}

${prettySize(totalSize - prevSize)}` 86 | elm.onclick = () => isDir ? shell.openPath(file) : shell.showItemInFolder(file) 87 | mainElm.appendChild(elm) 88 | 89 | titleElm.innerText = `这台电脑上总共有 ${++cnt} 个 Chromium 内核的应用 (${prettySize(totalSize)})` 90 | } 91 | 92 | const processes = { } 93 | try { 94 | (await execAsync('wmic process get ExecutablePath')).replace(/\r/g, '').replace(/ +\n/g, '\n').split('\n').forEach(it => (processes[it] = 1)) 95 | } catch (e) { 96 | console.error(e) 97 | } 98 | 99 | const search = async (file) => { 100 | console.log('Searching:', file) 101 | try { 102 | let f = path.join(file, 'msedge.exe') 103 | if (await exists(f)) { 104 | await addApp(f, 'Edge') 105 | return [true] 106 | } 107 | if (await exists(path.join(file, 'chrome_pwa_launcher.exe')) && await exists(f = path.join(file, '../chrome.exe'))) { 108 | await addApp(f, 'Chrome') 109 | return [true] 110 | } 111 | let firstExe 112 | for (const it of (await fs.readdir(file)).filter(it => it.endsWith('.exe'))) { 113 | const fileName = path.join(file, it) 114 | const data = await fs.readFile(fileName) 115 | const fileNameLowerCase = it.toLowerCase() 116 | let type 117 | if (data.includes(ELECTRON) || data.includes(ELECTRON2)) type = 'Electron' 118 | else if (data.includes(NWJS)) type = 'NWJS' 119 | else if (data.includes(CEF_SHARP)) type = 'CefSharp' 120 | else if (data.includes(LIBCEF)) type = 'CEF' 121 | else if (!firstExe && !fileNameLowerCase.includes('unins') && !fileNameLowerCase.includes('setup') && !fileNameLowerCase.includes('report')) { 122 | firstExe = fileName 123 | continue 124 | } else continue 125 | await addApp(fileName, type) 126 | return [true] 127 | } 128 | return [false, firstExe] 129 | } catch (e) { 130 | console.error(e) 131 | return [false] 132 | } 133 | } 134 | 135 | const cache2 = { } 136 | const searchCef = async (stdout, defaultType = 'Unknown') => { 137 | for (const file of stdout.replace(/\r/g, '').split('\n')) { 138 | if (file.includes('$RECYCLE.BIN') || file.includes('OneDrive') || /\.log$/i.test(file)) continue 139 | const dir = path.dirname(file) 140 | if (cache2[dir]) continue 141 | cache2[dir] = true 142 | if (await fs.stat(file).then(it => it.isDirectory(), () => true)) continue 143 | let res = await search(dir) 144 | if (res[0]) continue 145 | if (res[1]) await addApp(res[1], defaultType) 146 | else { 147 | res = await search(path.dirname(dir)) 148 | if (res[0]) continue 149 | if (res[1]) await addApp(res[1], defaultType) 150 | else await addApp(dir, defaultType, true) 151 | } 152 | } 153 | } 154 | await searchCef(await execAsync('es.exe -regex _100_(.+?)\\.pak$')) 155 | await searchCef(await execAsync('es.exe -s libcef'), 'CEF') 156 | 157 | for (const file of (await execAsync('es.exe -regex node(.*?)\\.dll')).replace(/\r/g, '').split('\n')) { 158 | if (file.includes('$RECYCLE.BIN') || file.includes('OneDrive') || await fs.stat(file).then(it => it.isDirectory(), () => true)) continue 159 | const dir = path.dirname(file) 160 | for (const it of (await fs.readdir(dir)).filter(it => it.endsWith('.exe'))) { 161 | const fileName = path.join(dir, it) 162 | const data = await fs.readFile(fileName) 163 | let type 164 | if (data.includes(MINI_ELECTRON)) type = 'Mini Electron' 165 | else if (data.includes(MINI_BLINK)) type = 'Mini Blink' 166 | else continue 167 | await addApp(fileName, type) 168 | break 169 | } 170 | } 171 | 172 | if (nodes.length) nodes.sort(([a], [b]) => b - a).forEach(([_, elm], i) => (elm.style.order = i.toString())) 173 | else titleElm.innerText = '这台电脑上没有 Chromium 内核的应用 (也有可能是你没装 Everything)' 174 | titleElm.className = 'running' 175 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | const { app, BrowserWindow, ipcMain } = require('electron') 2 | 3 | ipcMain.handle('has-args', (_, arg) => app.commandLine.hasSwitch(arg)) 4 | ipcMain.handle('get-app-icon', (_, path) => app.getFileIcon(path, { size: 'large' }).then(icon => icon.toPNG().toString('base64'), () => '')) 5 | 6 | const createWindow = () => { 7 | const window = new BrowserWindow({ 8 | width: 830, 9 | height: 680, 10 | autoHideMenuBar: true, 11 | webPreferences: { 12 | nodeIntegration: true, 13 | contextIsolation: false 14 | } 15 | }) 16 | window.webContents.setWindowOpenHandler(() => ({ action: 'deny' })) 17 | window.loadFile('index.html') 18 | } 19 | 20 | app.whenReady().then(() => { 21 | createWindow() 22 | app.on('activate', () => BrowserWindow.getAllWindows().length === 0 && createWindow()) 23 | }) 24 | 25 | if (process.platform !== 'darwin') app.on('window-all-closed', () => app.quit()) 26 | -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Shirasawa", 3 | "license": "MIT", 4 | "version": "0.1.0", 5 | "private": true, 6 | "main": "main.js" 7 | } 8 | --------------------------------------------------------------------------------