├── .github ├── FUNDING.yml └── workflows │ └── ci.yml ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── Makefile ├── PRIVACY_POLICY.md ├── README.md ├── assets ├── screenshot-1.png ├── screenshot-2.png └── screenshot-store.png ├── package-lock.json ├── package.json ├── public ├── assets │ ├── README.md │ ├── velociraptor.png │ ├── velociraptor128.png │ ├── velociraptor48.png │ └── velociraptor_monocolor.png ├── manifest.json ├── options.html └── popup.html ├── src ├── background.tsx ├── log.ts ├── options.tsx ├── popup.tsx ├── registry.tsx └── watcher.tsx ├── tsconfig.json └── webpack.config.js /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: 2 | - gfx 3 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | 15 | - name: Use Node.js 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: "16" 19 | 20 | - name: Build 21 | run: | 22 | npm ci 23 | npm run build:release 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | firebaseConfig.* 4 | .DS_Store 5 | *.zip 6 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.wordWrapColumn": 100, 3 | "workbench.tree.indent": 2, 4 | "cSpell.words": [ 5 | "velociraptor", 6 | "WatchRaptor" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2022 FUJI Goro. 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 6 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | DISTFILE=WatchRaptor.zip 2 | 3 | pack: 4 | rm -rf dist "${DISTFILE}" 5 | npm run build:release 6 | cd dist ; zip -9 -r ../${DISTFILE} * 7 | ls -lh "${DISTFILE}" 8 | -------------------------------------------------------------------------------- /PRIVACY_POLICY.md: -------------------------------------------------------------------------------- 1 | # Privacy Policy 2 | 3 | This extension does not collect user data in any form. 4 | 5 | Please confirm the extension has no permission for network access in the store. 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WatchRaptor [![CI](https://github.com/gfx/WatchRaptor/actions/workflows/ci.yml/badge.svg)](https://github.com/gfx/WatchRaptor/actions/workflows/ci.yml) 2 | 3 |
4 | 5 | WatchRaptor is a Chrome extension to watch GitHub CI statuses and makes desktop notifications for their completions. 6 | 7 | It is not difficult to set up Slack notifications (or other notifications) in a CI workflow. However, it would be annoying if you had to maintain every CI workflow with the integration of a suitable notification platform. On the other hand, this extension can watch any CI statuses as long as it is placed on GitHub. 8 | 9 | ## Features 10 | 11 | ![screenshot-1](./assets/screenshot-1.png) 12 | 13 | ↓ 14 | 15 | ![screenshot-2](./assets/screenshot-2.png) 16 | 17 | ## Install it via Chrome Web Store 18 | 19 | Chrome Web Store: [WatchRaptor](https://chrome.google.com/webstore/detail/watchraptor/ijbgmfkhhjibpjgcjfnoobechckhnnie) 20 | 21 | ## Development 22 | 23 | ### Setup 24 | 25 | ```shell 26 | npm ci 27 | ``` 28 | 29 | ### Build 30 | 31 | ```shell 32 | # build for development 33 | npm run build 34 | 35 | # build for development (watch mode) 36 | npm run build:watch 37 | 38 | # release build 39 | npm run build:release 40 | ``` 41 | 42 | ### Install it to Chrome for development 43 | 44 | 1. Open `chrome://extensions/`. 45 | 2. Turns on "Developer mode". 46 | 3. Click "Load unpacked" and then select the "dist/" dir in the repository. 47 | 48 | ## Asset Licenses 49 | 50 | See [assets/README.md](./public/assets/README.md) for details 51 | 52 | ## License 53 | 54 | Copyright 2022 FUJI Goro. 55 | 56 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 57 | 58 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 59 | -------------------------------------------------------------------------------- /assets/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/assets/screenshot-1.png -------------------------------------------------------------------------------- /assets/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/assets/screenshot-2.png -------------------------------------------------------------------------------- /assets/screenshot-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/assets/screenshot-store.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@gfx/watchraptor", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@gfx/watchraptor", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@types/chrome": "latest", 13 | "@types/react": "latest", 14 | "@types/react-dom": "latest", 15 | "react": "latest", 16 | "react-dom": "latest" 17 | }, 18 | "devDependencies": { 19 | "copy-webpack-plugin": "latest", 20 | "ts-loader": "latest", 21 | "typescript": "latest", 22 | "webpack": "latest", 23 | "webpack-cli": "latest" 24 | } 25 | }, 26 | "node_modules/@discoveryjs/json-ext": { 27 | "version": "0.5.6", 28 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", 29 | "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", 30 | "dev": true, 31 | "engines": { 32 | "node": ">=10.0.0" 33 | } 34 | }, 35 | "node_modules/@nodelib/fs.scandir": { 36 | "version": "2.1.5", 37 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 38 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 39 | "dev": true, 40 | "dependencies": { 41 | "@nodelib/fs.stat": "2.0.5", 42 | "run-parallel": "^1.1.9" 43 | }, 44 | "engines": { 45 | "node": ">= 8" 46 | } 47 | }, 48 | "node_modules/@nodelib/fs.stat": { 49 | "version": "2.0.5", 50 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 51 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 52 | "dev": true, 53 | "engines": { 54 | "node": ">= 8" 55 | } 56 | }, 57 | "node_modules/@nodelib/fs.walk": { 58 | "version": "1.2.8", 59 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 60 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 61 | "dev": true, 62 | "dependencies": { 63 | "@nodelib/fs.scandir": "2.1.5", 64 | "fastq": "^1.6.0" 65 | }, 66 | "engines": { 67 | "node": ">= 8" 68 | } 69 | }, 70 | "node_modules/@types/chrome": { 71 | "version": "0.0.170", 72 | "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.170.tgz", 73 | "integrity": "sha512-X6IKLdc/fJyCKxGlCUauL3OKmnhzS29Q2NnlErAiLC3voxvSVG1ISG+l24Q3kFZXmnc543KzElIjDQRvQ/yEBQ==", 74 | "dependencies": { 75 | "@types/filesystem": "*", 76 | "@types/har-format": "*" 77 | } 78 | }, 79 | "node_modules/@types/eslint": { 80 | "version": "8.2.1", 81 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", 82 | "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", 83 | "dev": true, 84 | "dependencies": { 85 | "@types/estree": "*", 86 | "@types/json-schema": "*" 87 | } 88 | }, 89 | "node_modules/@types/eslint-scope": { 90 | "version": "3.7.1", 91 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", 92 | "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", 93 | "dev": true, 94 | "dependencies": { 95 | "@types/eslint": "*", 96 | "@types/estree": "*" 97 | } 98 | }, 99 | "node_modules/@types/estree": { 100 | "version": "0.0.50", 101 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", 102 | "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", 103 | "dev": true 104 | }, 105 | "node_modules/@types/filesystem": { 106 | "version": "0.0.32", 107 | "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", 108 | "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", 109 | "dependencies": { 110 | "@types/filewriter": "*" 111 | } 112 | }, 113 | "node_modules/@types/filewriter": { 114 | "version": "0.0.29", 115 | "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", 116 | "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" 117 | }, 118 | "node_modules/@types/har-format": { 119 | "version": "1.2.8", 120 | "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.8.tgz", 121 | "integrity": "sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ==" 122 | }, 123 | "node_modules/@types/json-schema": { 124 | "version": "7.0.9", 125 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", 126 | "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", 127 | "dev": true 128 | }, 129 | "node_modules/@types/node": { 130 | "version": "16.11.12", 131 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", 132 | "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", 133 | "dev": true 134 | }, 135 | "node_modules/@types/prop-types": { 136 | "version": "15.7.4", 137 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", 138 | "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 139 | }, 140 | "node_modules/@types/react": { 141 | "version": "17.0.37", 142 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.37.tgz", 143 | "integrity": "sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==", 144 | "dependencies": { 145 | "@types/prop-types": "*", 146 | "@types/scheduler": "*", 147 | "csstype": "^3.0.2" 148 | } 149 | }, 150 | "node_modules/@types/react-dom": { 151 | "version": "17.0.11", 152 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", 153 | "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", 154 | "dependencies": { 155 | "@types/react": "*" 156 | } 157 | }, 158 | "node_modules/@types/scheduler": { 159 | "version": "0.16.2", 160 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 161 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 162 | }, 163 | "node_modules/@webassemblyjs/ast": { 164 | "version": "1.11.1", 165 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", 166 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", 167 | "dev": true, 168 | "dependencies": { 169 | "@webassemblyjs/helper-numbers": "1.11.1", 170 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1" 171 | } 172 | }, 173 | "node_modules/@webassemblyjs/floating-point-hex-parser": { 174 | "version": "1.11.1", 175 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", 176 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", 177 | "dev": true 178 | }, 179 | "node_modules/@webassemblyjs/helper-api-error": { 180 | "version": "1.11.1", 181 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", 182 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", 183 | "dev": true 184 | }, 185 | "node_modules/@webassemblyjs/helper-buffer": { 186 | "version": "1.11.1", 187 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", 188 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", 189 | "dev": true 190 | }, 191 | "node_modules/@webassemblyjs/helper-numbers": { 192 | "version": "1.11.1", 193 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", 194 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", 195 | "dev": true, 196 | "dependencies": { 197 | "@webassemblyjs/floating-point-hex-parser": "1.11.1", 198 | "@webassemblyjs/helper-api-error": "1.11.1", 199 | "@xtuc/long": "4.2.2" 200 | } 201 | }, 202 | "node_modules/@webassemblyjs/helper-wasm-bytecode": { 203 | "version": "1.11.1", 204 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", 205 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", 206 | "dev": true 207 | }, 208 | "node_modules/@webassemblyjs/helper-wasm-section": { 209 | "version": "1.11.1", 210 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", 211 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", 212 | "dev": true, 213 | "dependencies": { 214 | "@webassemblyjs/ast": "1.11.1", 215 | "@webassemblyjs/helper-buffer": "1.11.1", 216 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 217 | "@webassemblyjs/wasm-gen": "1.11.1" 218 | } 219 | }, 220 | "node_modules/@webassemblyjs/ieee754": { 221 | "version": "1.11.1", 222 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", 223 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", 224 | "dev": true, 225 | "dependencies": { 226 | "@xtuc/ieee754": "^1.2.0" 227 | } 228 | }, 229 | "node_modules/@webassemblyjs/leb128": { 230 | "version": "1.11.1", 231 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", 232 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", 233 | "dev": true, 234 | "dependencies": { 235 | "@xtuc/long": "4.2.2" 236 | } 237 | }, 238 | "node_modules/@webassemblyjs/utf8": { 239 | "version": "1.11.1", 240 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", 241 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", 242 | "dev": true 243 | }, 244 | "node_modules/@webassemblyjs/wasm-edit": { 245 | "version": "1.11.1", 246 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", 247 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", 248 | "dev": true, 249 | "dependencies": { 250 | "@webassemblyjs/ast": "1.11.1", 251 | "@webassemblyjs/helper-buffer": "1.11.1", 252 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 253 | "@webassemblyjs/helper-wasm-section": "1.11.1", 254 | "@webassemblyjs/wasm-gen": "1.11.1", 255 | "@webassemblyjs/wasm-opt": "1.11.1", 256 | "@webassemblyjs/wasm-parser": "1.11.1", 257 | "@webassemblyjs/wast-printer": "1.11.1" 258 | } 259 | }, 260 | "node_modules/@webassemblyjs/wasm-gen": { 261 | "version": "1.11.1", 262 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", 263 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", 264 | "dev": true, 265 | "dependencies": { 266 | "@webassemblyjs/ast": "1.11.1", 267 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 268 | "@webassemblyjs/ieee754": "1.11.1", 269 | "@webassemblyjs/leb128": "1.11.1", 270 | "@webassemblyjs/utf8": "1.11.1" 271 | } 272 | }, 273 | "node_modules/@webassemblyjs/wasm-opt": { 274 | "version": "1.11.1", 275 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", 276 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", 277 | "dev": true, 278 | "dependencies": { 279 | "@webassemblyjs/ast": "1.11.1", 280 | "@webassemblyjs/helper-buffer": "1.11.1", 281 | "@webassemblyjs/wasm-gen": "1.11.1", 282 | "@webassemblyjs/wasm-parser": "1.11.1" 283 | } 284 | }, 285 | "node_modules/@webassemblyjs/wasm-parser": { 286 | "version": "1.11.1", 287 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", 288 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", 289 | "dev": true, 290 | "dependencies": { 291 | "@webassemblyjs/ast": "1.11.1", 292 | "@webassemblyjs/helper-api-error": "1.11.1", 293 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 294 | "@webassemblyjs/ieee754": "1.11.1", 295 | "@webassemblyjs/leb128": "1.11.1", 296 | "@webassemblyjs/utf8": "1.11.1" 297 | } 298 | }, 299 | "node_modules/@webassemblyjs/wast-printer": { 300 | "version": "1.11.1", 301 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", 302 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", 303 | "dev": true, 304 | "dependencies": { 305 | "@webassemblyjs/ast": "1.11.1", 306 | "@xtuc/long": "4.2.2" 307 | } 308 | }, 309 | "node_modules/@webpack-cli/configtest": { 310 | "version": "1.1.0", 311 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", 312 | "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", 313 | "dev": true, 314 | "peerDependencies": { 315 | "webpack": "4.x.x || 5.x.x", 316 | "webpack-cli": "4.x.x" 317 | } 318 | }, 319 | "node_modules/@webpack-cli/info": { 320 | "version": "1.4.0", 321 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", 322 | "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", 323 | "dev": true, 324 | "dependencies": { 325 | "envinfo": "^7.7.3" 326 | }, 327 | "peerDependencies": { 328 | "webpack-cli": "4.x.x" 329 | } 330 | }, 331 | "node_modules/@webpack-cli/serve": { 332 | "version": "1.6.0", 333 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", 334 | "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", 335 | "dev": true, 336 | "peerDependencies": { 337 | "webpack-cli": "4.x.x" 338 | }, 339 | "peerDependenciesMeta": { 340 | "webpack-dev-server": { 341 | "optional": true 342 | } 343 | } 344 | }, 345 | "node_modules/@xtuc/ieee754": { 346 | "version": "1.2.0", 347 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 348 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 349 | "dev": true 350 | }, 351 | "node_modules/@xtuc/long": { 352 | "version": "4.2.2", 353 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 354 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 355 | "dev": true 356 | }, 357 | "node_modules/acorn": { 358 | "version": "8.6.0", 359 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", 360 | "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", 361 | "dev": true, 362 | "bin": { 363 | "acorn": "bin/acorn" 364 | }, 365 | "engines": { 366 | "node": ">=0.4.0" 367 | } 368 | }, 369 | "node_modules/acorn-import-assertions": { 370 | "version": "1.8.0", 371 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", 372 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", 373 | "dev": true, 374 | "peerDependencies": { 375 | "acorn": "^8" 376 | } 377 | }, 378 | "node_modules/ajv": { 379 | "version": "8.8.2", 380 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", 381 | "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", 382 | "dev": true, 383 | "dependencies": { 384 | "fast-deep-equal": "^3.1.1", 385 | "json-schema-traverse": "^1.0.0", 386 | "require-from-string": "^2.0.2", 387 | "uri-js": "^4.2.2" 388 | }, 389 | "funding": { 390 | "type": "github", 391 | "url": "https://github.com/sponsors/epoberezkin" 392 | } 393 | }, 394 | "node_modules/ajv-formats": { 395 | "version": "2.1.1", 396 | "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", 397 | "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", 398 | "dev": true, 399 | "dependencies": { 400 | "ajv": "^8.0.0" 401 | }, 402 | "peerDependencies": { 403 | "ajv": "^8.0.0" 404 | }, 405 | "peerDependenciesMeta": { 406 | "ajv": { 407 | "optional": true 408 | } 409 | } 410 | }, 411 | "node_modules/ajv-keywords": { 412 | "version": "5.1.0", 413 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", 414 | "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", 415 | "dev": true, 416 | "dependencies": { 417 | "fast-deep-equal": "^3.1.3" 418 | }, 419 | "peerDependencies": { 420 | "ajv": "^8.8.2" 421 | } 422 | }, 423 | "node_modules/ansi-styles": { 424 | "version": "4.3.0", 425 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 426 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 427 | "dev": true, 428 | "dependencies": { 429 | "color-convert": "^2.0.1" 430 | }, 431 | "engines": { 432 | "node": ">=8" 433 | }, 434 | "funding": { 435 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 436 | } 437 | }, 438 | "node_modules/array-union": { 439 | "version": "3.0.1", 440 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", 441 | "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", 442 | "dev": true, 443 | "engines": { 444 | "node": ">=12" 445 | }, 446 | "funding": { 447 | "url": "https://github.com/sponsors/sindresorhus" 448 | } 449 | }, 450 | "node_modules/braces": { 451 | "version": "3.0.2", 452 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 453 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 454 | "dev": true, 455 | "dependencies": { 456 | "fill-range": "^7.0.1" 457 | }, 458 | "engines": { 459 | "node": ">=8" 460 | } 461 | }, 462 | "node_modules/browserslist": { 463 | "version": "4.18.1", 464 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", 465 | "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", 466 | "dev": true, 467 | "dependencies": { 468 | "caniuse-lite": "^1.0.30001280", 469 | "electron-to-chromium": "^1.3.896", 470 | "escalade": "^3.1.1", 471 | "node-releases": "^2.0.1", 472 | "picocolors": "^1.0.0" 473 | }, 474 | "bin": { 475 | "browserslist": "cli.js" 476 | }, 477 | "engines": { 478 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 479 | }, 480 | "funding": { 481 | "type": "opencollective", 482 | "url": "https://opencollective.com/browserslist" 483 | } 484 | }, 485 | "node_modules/buffer-from": { 486 | "version": "1.1.2", 487 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 488 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 489 | "dev": true 490 | }, 491 | "node_modules/caniuse-lite": { 492 | "version": "1.0.30001286", 493 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", 494 | "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", 495 | "dev": true, 496 | "funding": { 497 | "type": "opencollective", 498 | "url": "https://opencollective.com/browserslist" 499 | } 500 | }, 501 | "node_modules/chalk": { 502 | "version": "4.1.2", 503 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 504 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 505 | "dev": true, 506 | "dependencies": { 507 | "ansi-styles": "^4.1.0", 508 | "supports-color": "^7.1.0" 509 | }, 510 | "engines": { 511 | "node": ">=10" 512 | }, 513 | "funding": { 514 | "url": "https://github.com/chalk/chalk?sponsor=1" 515 | } 516 | }, 517 | "node_modules/chrome-trace-event": { 518 | "version": "1.0.3", 519 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 520 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", 521 | "dev": true, 522 | "engines": { 523 | "node": ">=6.0" 524 | } 525 | }, 526 | "node_modules/clone-deep": { 527 | "version": "4.0.1", 528 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 529 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 530 | "dev": true, 531 | "dependencies": { 532 | "is-plain-object": "^2.0.4", 533 | "kind-of": "^6.0.2", 534 | "shallow-clone": "^3.0.0" 535 | }, 536 | "engines": { 537 | "node": ">=6" 538 | } 539 | }, 540 | "node_modules/color-convert": { 541 | "version": "2.0.1", 542 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 543 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 544 | "dev": true, 545 | "dependencies": { 546 | "color-name": "~1.1.4" 547 | }, 548 | "engines": { 549 | "node": ">=7.0.0" 550 | } 551 | }, 552 | "node_modules/color-name": { 553 | "version": "1.1.4", 554 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 555 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 556 | "dev": true 557 | }, 558 | "node_modules/colorette": { 559 | "version": "2.0.16", 560 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", 561 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", 562 | "dev": true 563 | }, 564 | "node_modules/commander": { 565 | "version": "2.20.3", 566 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 567 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 568 | "dev": true 569 | }, 570 | "node_modules/copy-webpack-plugin": { 571 | "version": "10.1.0", 572 | "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz", 573 | "integrity": "sha512-dPGo+zoW77wiF5LlwkQcZTY7FsrSm7dmovhLDHsjYyciiJ+ZhLFt2EQbw9LRUHJ586JXN0K1A70Kbudclvt00Q==", 574 | "dev": true, 575 | "dependencies": { 576 | "fast-glob": "^3.2.7", 577 | "glob-parent": "^6.0.1", 578 | "globby": "^12.0.2", 579 | "normalize-path": "^3.0.0", 580 | "schema-utils": "^4.0.0", 581 | "serialize-javascript": "^6.0.0" 582 | }, 583 | "engines": { 584 | "node": ">= 12.20.0" 585 | }, 586 | "funding": { 587 | "type": "opencollective", 588 | "url": "https://opencollective.com/webpack" 589 | }, 590 | "peerDependencies": { 591 | "webpack": "^5.1.0" 592 | } 593 | }, 594 | "node_modules/cross-spawn": { 595 | "version": "7.0.3", 596 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 597 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 598 | "dev": true, 599 | "dependencies": { 600 | "path-key": "^3.1.0", 601 | "shebang-command": "^2.0.0", 602 | "which": "^2.0.1" 603 | }, 604 | "engines": { 605 | "node": ">= 8" 606 | } 607 | }, 608 | "node_modules/csstype": { 609 | "version": "3.0.10", 610 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", 611 | "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" 612 | }, 613 | "node_modules/dir-glob": { 614 | "version": "3.0.1", 615 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 616 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 617 | "dev": true, 618 | "dependencies": { 619 | "path-type": "^4.0.0" 620 | }, 621 | "engines": { 622 | "node": ">=8" 623 | } 624 | }, 625 | "node_modules/electron-to-chromium": { 626 | "version": "1.4.16", 627 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz", 628 | "integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA==", 629 | "dev": true 630 | }, 631 | "node_modules/enhanced-resolve": { 632 | "version": "5.8.3", 633 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", 634 | "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", 635 | "dev": true, 636 | "dependencies": { 637 | "graceful-fs": "^4.2.4", 638 | "tapable": "^2.2.0" 639 | }, 640 | "engines": { 641 | "node": ">=10.13.0" 642 | } 643 | }, 644 | "node_modules/envinfo": { 645 | "version": "7.8.1", 646 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", 647 | "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", 648 | "dev": true, 649 | "bin": { 650 | "envinfo": "dist/cli.js" 651 | }, 652 | "engines": { 653 | "node": ">=4" 654 | } 655 | }, 656 | "node_modules/es-module-lexer": { 657 | "version": "0.9.3", 658 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", 659 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", 660 | "dev": true 661 | }, 662 | "node_modules/escalade": { 663 | "version": "3.1.1", 664 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 665 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 666 | "dev": true, 667 | "engines": { 668 | "node": ">=6" 669 | } 670 | }, 671 | "node_modules/eslint-scope": { 672 | "version": "5.1.1", 673 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 674 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 675 | "dev": true, 676 | "dependencies": { 677 | "esrecurse": "^4.3.0", 678 | "estraverse": "^4.1.1" 679 | }, 680 | "engines": { 681 | "node": ">=8.0.0" 682 | } 683 | }, 684 | "node_modules/esrecurse": { 685 | "version": "4.3.0", 686 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 687 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 688 | "dev": true, 689 | "dependencies": { 690 | "estraverse": "^5.2.0" 691 | }, 692 | "engines": { 693 | "node": ">=4.0" 694 | } 695 | }, 696 | "node_modules/esrecurse/node_modules/estraverse": { 697 | "version": "5.3.0", 698 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 699 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 700 | "dev": true, 701 | "engines": { 702 | "node": ">=4.0" 703 | } 704 | }, 705 | "node_modules/estraverse": { 706 | "version": "4.3.0", 707 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 708 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 709 | "dev": true, 710 | "engines": { 711 | "node": ">=4.0" 712 | } 713 | }, 714 | "node_modules/events": { 715 | "version": "3.3.0", 716 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 717 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 718 | "dev": true, 719 | "engines": { 720 | "node": ">=0.8.x" 721 | } 722 | }, 723 | "node_modules/execa": { 724 | "version": "5.1.1", 725 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 726 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 727 | "dev": true, 728 | "dependencies": { 729 | "cross-spawn": "^7.0.3", 730 | "get-stream": "^6.0.0", 731 | "human-signals": "^2.1.0", 732 | "is-stream": "^2.0.0", 733 | "merge-stream": "^2.0.0", 734 | "npm-run-path": "^4.0.1", 735 | "onetime": "^5.1.2", 736 | "signal-exit": "^3.0.3", 737 | "strip-final-newline": "^2.0.0" 738 | }, 739 | "engines": { 740 | "node": ">=10" 741 | }, 742 | "funding": { 743 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 744 | } 745 | }, 746 | "node_modules/fast-deep-equal": { 747 | "version": "3.1.3", 748 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 749 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 750 | "dev": true 751 | }, 752 | "node_modules/fast-glob": { 753 | "version": "3.2.7", 754 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", 755 | "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", 756 | "dev": true, 757 | "dependencies": { 758 | "@nodelib/fs.stat": "^2.0.2", 759 | "@nodelib/fs.walk": "^1.2.3", 760 | "glob-parent": "^5.1.2", 761 | "merge2": "^1.3.0", 762 | "micromatch": "^4.0.4" 763 | }, 764 | "engines": { 765 | "node": ">=8" 766 | } 767 | }, 768 | "node_modules/fast-glob/node_modules/glob-parent": { 769 | "version": "5.1.2", 770 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 771 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 772 | "dev": true, 773 | "dependencies": { 774 | "is-glob": "^4.0.1" 775 | }, 776 | "engines": { 777 | "node": ">= 6" 778 | } 779 | }, 780 | "node_modules/fast-json-stable-stringify": { 781 | "version": "2.1.0", 782 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 783 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 784 | "dev": true 785 | }, 786 | "node_modules/fastest-levenshtein": { 787 | "version": "1.0.12", 788 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", 789 | "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", 790 | "dev": true 791 | }, 792 | "node_modules/fastq": { 793 | "version": "1.13.0", 794 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 795 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 796 | "dev": true, 797 | "dependencies": { 798 | "reusify": "^1.0.4" 799 | } 800 | }, 801 | "node_modules/fill-range": { 802 | "version": "7.0.1", 803 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 804 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 805 | "dev": true, 806 | "dependencies": { 807 | "to-regex-range": "^5.0.1" 808 | }, 809 | "engines": { 810 | "node": ">=8" 811 | } 812 | }, 813 | "node_modules/find-up": { 814 | "version": "4.1.0", 815 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 816 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 817 | "dev": true, 818 | "dependencies": { 819 | "locate-path": "^5.0.0", 820 | "path-exists": "^4.0.0" 821 | }, 822 | "engines": { 823 | "node": ">=8" 824 | } 825 | }, 826 | "node_modules/function-bind": { 827 | "version": "1.1.1", 828 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 829 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 830 | "dev": true 831 | }, 832 | "node_modules/get-stream": { 833 | "version": "6.0.1", 834 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 835 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 836 | "dev": true, 837 | "engines": { 838 | "node": ">=10" 839 | }, 840 | "funding": { 841 | "url": "https://github.com/sponsors/sindresorhus" 842 | } 843 | }, 844 | "node_modules/glob-parent": { 845 | "version": "6.0.2", 846 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 847 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 848 | "dev": true, 849 | "dependencies": { 850 | "is-glob": "^4.0.3" 851 | }, 852 | "engines": { 853 | "node": ">=10.13.0" 854 | } 855 | }, 856 | "node_modules/glob-to-regexp": { 857 | "version": "0.4.1", 858 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 859 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 860 | "dev": true 861 | }, 862 | "node_modules/globby": { 863 | "version": "12.0.2", 864 | "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", 865 | "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", 866 | "dev": true, 867 | "dependencies": { 868 | "array-union": "^3.0.1", 869 | "dir-glob": "^3.0.1", 870 | "fast-glob": "^3.2.7", 871 | "ignore": "^5.1.8", 872 | "merge2": "^1.4.1", 873 | "slash": "^4.0.0" 874 | }, 875 | "engines": { 876 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 877 | }, 878 | "funding": { 879 | "url": "https://github.com/sponsors/sindresorhus" 880 | } 881 | }, 882 | "node_modules/graceful-fs": { 883 | "version": "4.2.8", 884 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 885 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 886 | "dev": true 887 | }, 888 | "node_modules/has": { 889 | "version": "1.0.3", 890 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 891 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 892 | "dev": true, 893 | "dependencies": { 894 | "function-bind": "^1.1.1" 895 | }, 896 | "engines": { 897 | "node": ">= 0.4.0" 898 | } 899 | }, 900 | "node_modules/has-flag": { 901 | "version": "4.0.0", 902 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 903 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 904 | "dev": true, 905 | "engines": { 906 | "node": ">=8" 907 | } 908 | }, 909 | "node_modules/human-signals": { 910 | "version": "2.1.0", 911 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 912 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 913 | "dev": true, 914 | "engines": { 915 | "node": ">=10.17.0" 916 | } 917 | }, 918 | "node_modules/ignore": { 919 | "version": "5.1.9", 920 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", 921 | "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", 922 | "dev": true, 923 | "engines": { 924 | "node": ">= 4" 925 | } 926 | }, 927 | "node_modules/import-local": { 928 | "version": "3.0.3", 929 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", 930 | "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", 931 | "dev": true, 932 | "dependencies": { 933 | "pkg-dir": "^4.2.0", 934 | "resolve-cwd": "^3.0.0" 935 | }, 936 | "bin": { 937 | "import-local-fixture": "fixtures/cli.js" 938 | }, 939 | "engines": { 940 | "node": ">=8" 941 | } 942 | }, 943 | "node_modules/interpret": { 944 | "version": "2.2.0", 945 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", 946 | "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", 947 | "dev": true, 948 | "engines": { 949 | "node": ">= 0.10" 950 | } 951 | }, 952 | "node_modules/is-core-module": { 953 | "version": "2.8.0", 954 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 955 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 956 | "dev": true, 957 | "dependencies": { 958 | "has": "^1.0.3" 959 | }, 960 | "funding": { 961 | "url": "https://github.com/sponsors/ljharb" 962 | } 963 | }, 964 | "node_modules/is-extglob": { 965 | "version": "2.1.1", 966 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 967 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 968 | "dev": true, 969 | "engines": { 970 | "node": ">=0.10.0" 971 | } 972 | }, 973 | "node_modules/is-glob": { 974 | "version": "4.0.3", 975 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 976 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 977 | "dev": true, 978 | "dependencies": { 979 | "is-extglob": "^2.1.1" 980 | }, 981 | "engines": { 982 | "node": ">=0.10.0" 983 | } 984 | }, 985 | "node_modules/is-number": { 986 | "version": "7.0.0", 987 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 988 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 989 | "dev": true, 990 | "engines": { 991 | "node": ">=0.12.0" 992 | } 993 | }, 994 | "node_modules/is-plain-object": { 995 | "version": "2.0.4", 996 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 997 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 998 | "dev": true, 999 | "dependencies": { 1000 | "isobject": "^3.0.1" 1001 | }, 1002 | "engines": { 1003 | "node": ">=0.10.0" 1004 | } 1005 | }, 1006 | "node_modules/is-stream": { 1007 | "version": "2.0.1", 1008 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1009 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1010 | "dev": true, 1011 | "engines": { 1012 | "node": ">=8" 1013 | }, 1014 | "funding": { 1015 | "url": "https://github.com/sponsors/sindresorhus" 1016 | } 1017 | }, 1018 | "node_modules/isexe": { 1019 | "version": "2.0.0", 1020 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1021 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1022 | "dev": true 1023 | }, 1024 | "node_modules/isobject": { 1025 | "version": "3.0.1", 1026 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1027 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1028 | "dev": true, 1029 | "engines": { 1030 | "node": ">=0.10.0" 1031 | } 1032 | }, 1033 | "node_modules/jest-worker": { 1034 | "version": "27.4.4", 1035 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.4.tgz", 1036 | "integrity": "sha512-jfwxYJvfua1b1XkyuyPh01ATmgg4e5fPM/muLmhy9Qc6dmiwacQB0MLHaU6IjEsv/+nAixHGxTn8WllA27Pn0w==", 1037 | "dev": true, 1038 | "dependencies": { 1039 | "@types/node": "*", 1040 | "merge-stream": "^2.0.0", 1041 | "supports-color": "^8.0.0" 1042 | }, 1043 | "engines": { 1044 | "node": ">= 10.13.0" 1045 | } 1046 | }, 1047 | "node_modules/jest-worker/node_modules/supports-color": { 1048 | "version": "8.1.1", 1049 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1050 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1051 | "dev": true, 1052 | "dependencies": { 1053 | "has-flag": "^4.0.0" 1054 | }, 1055 | "engines": { 1056 | "node": ">=10" 1057 | }, 1058 | "funding": { 1059 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1060 | } 1061 | }, 1062 | "node_modules/js-tokens": { 1063 | "version": "4.0.0", 1064 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1065 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1066 | }, 1067 | "node_modules/json-parse-better-errors": { 1068 | "version": "1.0.2", 1069 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1070 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1071 | "dev": true 1072 | }, 1073 | "node_modules/json-schema-traverse": { 1074 | "version": "1.0.0", 1075 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1076 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1077 | "dev": true 1078 | }, 1079 | "node_modules/kind-of": { 1080 | "version": "6.0.3", 1081 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1082 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1083 | "dev": true, 1084 | "engines": { 1085 | "node": ">=0.10.0" 1086 | } 1087 | }, 1088 | "node_modules/loader-runner": { 1089 | "version": "4.2.0", 1090 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", 1091 | "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", 1092 | "dev": true, 1093 | "engines": { 1094 | "node": ">=6.11.5" 1095 | } 1096 | }, 1097 | "node_modules/locate-path": { 1098 | "version": "5.0.0", 1099 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1100 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1101 | "dev": true, 1102 | "dependencies": { 1103 | "p-locate": "^4.1.0" 1104 | }, 1105 | "engines": { 1106 | "node": ">=8" 1107 | } 1108 | }, 1109 | "node_modules/loose-envify": { 1110 | "version": "1.4.0", 1111 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1112 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1113 | "dependencies": { 1114 | "js-tokens": "^3.0.0 || ^4.0.0" 1115 | }, 1116 | "bin": { 1117 | "loose-envify": "cli.js" 1118 | } 1119 | }, 1120 | "node_modules/lru-cache": { 1121 | "version": "6.0.0", 1122 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1123 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1124 | "dev": true, 1125 | "dependencies": { 1126 | "yallist": "^4.0.0" 1127 | }, 1128 | "engines": { 1129 | "node": ">=10" 1130 | } 1131 | }, 1132 | "node_modules/merge-stream": { 1133 | "version": "2.0.0", 1134 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1135 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1136 | "dev": true 1137 | }, 1138 | "node_modules/merge2": { 1139 | "version": "1.4.1", 1140 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1141 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1142 | "dev": true, 1143 | "engines": { 1144 | "node": ">= 8" 1145 | } 1146 | }, 1147 | "node_modules/micromatch": { 1148 | "version": "4.0.4", 1149 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 1150 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 1151 | "dev": true, 1152 | "dependencies": { 1153 | "braces": "^3.0.1", 1154 | "picomatch": "^2.2.3" 1155 | }, 1156 | "engines": { 1157 | "node": ">=8.6" 1158 | } 1159 | }, 1160 | "node_modules/mime-db": { 1161 | "version": "1.51.0", 1162 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 1163 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 1164 | "dev": true, 1165 | "engines": { 1166 | "node": ">= 0.6" 1167 | } 1168 | }, 1169 | "node_modules/mime-types": { 1170 | "version": "2.1.34", 1171 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 1172 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 1173 | "dev": true, 1174 | "dependencies": { 1175 | "mime-db": "1.51.0" 1176 | }, 1177 | "engines": { 1178 | "node": ">= 0.6" 1179 | } 1180 | }, 1181 | "node_modules/mimic-fn": { 1182 | "version": "2.1.0", 1183 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1184 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1185 | "dev": true, 1186 | "engines": { 1187 | "node": ">=6" 1188 | } 1189 | }, 1190 | "node_modules/neo-async": { 1191 | "version": "2.6.2", 1192 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 1193 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 1194 | "dev": true 1195 | }, 1196 | "node_modules/node-releases": { 1197 | "version": "2.0.1", 1198 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", 1199 | "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", 1200 | "dev": true 1201 | }, 1202 | "node_modules/normalize-path": { 1203 | "version": "3.0.0", 1204 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1205 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1206 | "dev": true, 1207 | "engines": { 1208 | "node": ">=0.10.0" 1209 | } 1210 | }, 1211 | "node_modules/npm-run-path": { 1212 | "version": "4.0.1", 1213 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1214 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1215 | "dev": true, 1216 | "dependencies": { 1217 | "path-key": "^3.0.0" 1218 | }, 1219 | "engines": { 1220 | "node": ">=8" 1221 | } 1222 | }, 1223 | "node_modules/object-assign": { 1224 | "version": "4.1.1", 1225 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1226 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1227 | "engines": { 1228 | "node": ">=0.10.0" 1229 | } 1230 | }, 1231 | "node_modules/onetime": { 1232 | "version": "5.1.2", 1233 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1234 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1235 | "dev": true, 1236 | "dependencies": { 1237 | "mimic-fn": "^2.1.0" 1238 | }, 1239 | "engines": { 1240 | "node": ">=6" 1241 | }, 1242 | "funding": { 1243 | "url": "https://github.com/sponsors/sindresorhus" 1244 | } 1245 | }, 1246 | "node_modules/p-limit": { 1247 | "version": "2.3.0", 1248 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1249 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "p-try": "^2.0.0" 1253 | }, 1254 | "engines": { 1255 | "node": ">=6" 1256 | }, 1257 | "funding": { 1258 | "url": "https://github.com/sponsors/sindresorhus" 1259 | } 1260 | }, 1261 | "node_modules/p-locate": { 1262 | "version": "4.1.0", 1263 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1264 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1265 | "dev": true, 1266 | "dependencies": { 1267 | "p-limit": "^2.2.0" 1268 | }, 1269 | "engines": { 1270 | "node": ">=8" 1271 | } 1272 | }, 1273 | "node_modules/p-try": { 1274 | "version": "2.2.0", 1275 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1276 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1277 | "dev": true, 1278 | "engines": { 1279 | "node": ">=6" 1280 | } 1281 | }, 1282 | "node_modules/path-exists": { 1283 | "version": "4.0.0", 1284 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1285 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1286 | "dev": true, 1287 | "engines": { 1288 | "node": ">=8" 1289 | } 1290 | }, 1291 | "node_modules/path-key": { 1292 | "version": "3.1.1", 1293 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1294 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1295 | "dev": true, 1296 | "engines": { 1297 | "node": ">=8" 1298 | } 1299 | }, 1300 | "node_modules/path-parse": { 1301 | "version": "1.0.7", 1302 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1303 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1304 | "dev": true 1305 | }, 1306 | "node_modules/path-type": { 1307 | "version": "4.0.0", 1308 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1309 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1310 | "dev": true, 1311 | "engines": { 1312 | "node": ">=8" 1313 | } 1314 | }, 1315 | "node_modules/picocolors": { 1316 | "version": "1.0.0", 1317 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1318 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1319 | "dev": true 1320 | }, 1321 | "node_modules/picomatch": { 1322 | "version": "2.3.0", 1323 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 1324 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 1325 | "dev": true, 1326 | "engines": { 1327 | "node": ">=8.6" 1328 | }, 1329 | "funding": { 1330 | "url": "https://github.com/sponsors/jonschlinkert" 1331 | } 1332 | }, 1333 | "node_modules/pkg-dir": { 1334 | "version": "4.2.0", 1335 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1336 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1337 | "dev": true, 1338 | "dependencies": { 1339 | "find-up": "^4.0.0" 1340 | }, 1341 | "engines": { 1342 | "node": ">=8" 1343 | } 1344 | }, 1345 | "node_modules/punycode": { 1346 | "version": "2.1.1", 1347 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1348 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1349 | "dev": true, 1350 | "engines": { 1351 | "node": ">=6" 1352 | } 1353 | }, 1354 | "node_modules/queue-microtask": { 1355 | "version": "1.2.3", 1356 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1357 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1358 | "dev": true, 1359 | "funding": [ 1360 | { 1361 | "type": "github", 1362 | "url": "https://github.com/sponsors/feross" 1363 | }, 1364 | { 1365 | "type": "patreon", 1366 | "url": "https://www.patreon.com/feross" 1367 | }, 1368 | { 1369 | "type": "consulting", 1370 | "url": "https://feross.org/support" 1371 | } 1372 | ] 1373 | }, 1374 | "node_modules/randombytes": { 1375 | "version": "2.1.0", 1376 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1377 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1378 | "dev": true, 1379 | "dependencies": { 1380 | "safe-buffer": "^5.1.0" 1381 | } 1382 | }, 1383 | "node_modules/react": { 1384 | "version": "17.0.2", 1385 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 1386 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 1387 | "dependencies": { 1388 | "loose-envify": "^1.1.0", 1389 | "object-assign": "^4.1.1" 1390 | }, 1391 | "engines": { 1392 | "node": ">=0.10.0" 1393 | } 1394 | }, 1395 | "node_modules/react-dom": { 1396 | "version": "17.0.2", 1397 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 1398 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 1399 | "dependencies": { 1400 | "loose-envify": "^1.1.0", 1401 | "object-assign": "^4.1.1", 1402 | "scheduler": "^0.20.2" 1403 | }, 1404 | "peerDependencies": { 1405 | "react": "17.0.2" 1406 | } 1407 | }, 1408 | "node_modules/rechoir": { 1409 | "version": "0.7.1", 1410 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", 1411 | "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", 1412 | "dev": true, 1413 | "dependencies": { 1414 | "resolve": "^1.9.0" 1415 | }, 1416 | "engines": { 1417 | "node": ">= 0.10" 1418 | } 1419 | }, 1420 | "node_modules/require-from-string": { 1421 | "version": "2.0.2", 1422 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 1423 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 1424 | "dev": true, 1425 | "engines": { 1426 | "node": ">=0.10.0" 1427 | } 1428 | }, 1429 | "node_modules/resolve": { 1430 | "version": "1.20.0", 1431 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1432 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1433 | "dev": true, 1434 | "dependencies": { 1435 | "is-core-module": "^2.2.0", 1436 | "path-parse": "^1.0.6" 1437 | }, 1438 | "funding": { 1439 | "url": "https://github.com/sponsors/ljharb" 1440 | } 1441 | }, 1442 | "node_modules/resolve-cwd": { 1443 | "version": "3.0.0", 1444 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 1445 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 1446 | "dev": true, 1447 | "dependencies": { 1448 | "resolve-from": "^5.0.0" 1449 | }, 1450 | "engines": { 1451 | "node": ">=8" 1452 | } 1453 | }, 1454 | "node_modules/resolve-from": { 1455 | "version": "5.0.0", 1456 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 1457 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 1458 | "dev": true, 1459 | "engines": { 1460 | "node": ">=8" 1461 | } 1462 | }, 1463 | "node_modules/reusify": { 1464 | "version": "1.0.4", 1465 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1466 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1467 | "dev": true, 1468 | "engines": { 1469 | "iojs": ">=1.0.0", 1470 | "node": ">=0.10.0" 1471 | } 1472 | }, 1473 | "node_modules/run-parallel": { 1474 | "version": "1.2.0", 1475 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1476 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1477 | "dev": true, 1478 | "funding": [ 1479 | { 1480 | "type": "github", 1481 | "url": "https://github.com/sponsors/feross" 1482 | }, 1483 | { 1484 | "type": "patreon", 1485 | "url": "https://www.patreon.com/feross" 1486 | }, 1487 | { 1488 | "type": "consulting", 1489 | "url": "https://feross.org/support" 1490 | } 1491 | ], 1492 | "dependencies": { 1493 | "queue-microtask": "^1.2.2" 1494 | } 1495 | }, 1496 | "node_modules/safe-buffer": { 1497 | "version": "5.2.1", 1498 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1499 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1500 | "dev": true, 1501 | "funding": [ 1502 | { 1503 | "type": "github", 1504 | "url": "https://github.com/sponsors/feross" 1505 | }, 1506 | { 1507 | "type": "patreon", 1508 | "url": "https://www.patreon.com/feross" 1509 | }, 1510 | { 1511 | "type": "consulting", 1512 | "url": "https://feross.org/support" 1513 | } 1514 | ] 1515 | }, 1516 | "node_modules/scheduler": { 1517 | "version": "0.20.2", 1518 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 1519 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 1520 | "dependencies": { 1521 | "loose-envify": "^1.1.0", 1522 | "object-assign": "^4.1.1" 1523 | } 1524 | }, 1525 | "node_modules/schema-utils": { 1526 | "version": "4.0.0", 1527 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", 1528 | "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", 1529 | "dev": true, 1530 | "dependencies": { 1531 | "@types/json-schema": "^7.0.9", 1532 | "ajv": "^8.8.0", 1533 | "ajv-formats": "^2.1.1", 1534 | "ajv-keywords": "^5.0.0" 1535 | }, 1536 | "engines": { 1537 | "node": ">= 12.13.0" 1538 | }, 1539 | "funding": { 1540 | "type": "opencollective", 1541 | "url": "https://opencollective.com/webpack" 1542 | } 1543 | }, 1544 | "node_modules/semver": { 1545 | "version": "7.3.5", 1546 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 1547 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 1548 | "dev": true, 1549 | "dependencies": { 1550 | "lru-cache": "^6.0.0" 1551 | }, 1552 | "bin": { 1553 | "semver": "bin/semver.js" 1554 | }, 1555 | "engines": { 1556 | "node": ">=10" 1557 | } 1558 | }, 1559 | "node_modules/serialize-javascript": { 1560 | "version": "6.0.0", 1561 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 1562 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 1563 | "dev": true, 1564 | "dependencies": { 1565 | "randombytes": "^2.1.0" 1566 | } 1567 | }, 1568 | "node_modules/shallow-clone": { 1569 | "version": "3.0.1", 1570 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 1571 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 1572 | "dev": true, 1573 | "dependencies": { 1574 | "kind-of": "^6.0.2" 1575 | }, 1576 | "engines": { 1577 | "node": ">=8" 1578 | } 1579 | }, 1580 | "node_modules/shebang-command": { 1581 | "version": "2.0.0", 1582 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1583 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1584 | "dev": true, 1585 | "dependencies": { 1586 | "shebang-regex": "^3.0.0" 1587 | }, 1588 | "engines": { 1589 | "node": ">=8" 1590 | } 1591 | }, 1592 | "node_modules/shebang-regex": { 1593 | "version": "3.0.0", 1594 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1595 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1596 | "dev": true, 1597 | "engines": { 1598 | "node": ">=8" 1599 | } 1600 | }, 1601 | "node_modules/signal-exit": { 1602 | "version": "3.0.6", 1603 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", 1604 | "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", 1605 | "dev": true 1606 | }, 1607 | "node_modules/slash": { 1608 | "version": "4.0.0", 1609 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 1610 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", 1611 | "dev": true, 1612 | "engines": { 1613 | "node": ">=12" 1614 | }, 1615 | "funding": { 1616 | "url": "https://github.com/sponsors/sindresorhus" 1617 | } 1618 | }, 1619 | "node_modules/source-map": { 1620 | "version": "0.6.1", 1621 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1622 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1623 | "dev": true, 1624 | "engines": { 1625 | "node": ">=0.10.0" 1626 | } 1627 | }, 1628 | "node_modules/source-map-support": { 1629 | "version": "0.5.21", 1630 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1631 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1632 | "dev": true, 1633 | "dependencies": { 1634 | "buffer-from": "^1.0.0", 1635 | "source-map": "^0.6.0" 1636 | } 1637 | }, 1638 | "node_modules/strip-final-newline": { 1639 | "version": "2.0.0", 1640 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 1641 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 1642 | "dev": true, 1643 | "engines": { 1644 | "node": ">=6" 1645 | } 1646 | }, 1647 | "node_modules/supports-color": { 1648 | "version": "7.2.0", 1649 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1650 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1651 | "dev": true, 1652 | "dependencies": { 1653 | "has-flag": "^4.0.0" 1654 | }, 1655 | "engines": { 1656 | "node": ">=8" 1657 | } 1658 | }, 1659 | "node_modules/tapable": { 1660 | "version": "2.2.1", 1661 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 1662 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 1663 | "dev": true, 1664 | "engines": { 1665 | "node": ">=6" 1666 | } 1667 | }, 1668 | "node_modules/terser": { 1669 | "version": "5.10.0", 1670 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", 1671 | "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", 1672 | "dev": true, 1673 | "dependencies": { 1674 | "commander": "^2.20.0", 1675 | "source-map": "~0.7.2", 1676 | "source-map-support": "~0.5.20" 1677 | }, 1678 | "bin": { 1679 | "terser": "bin/terser" 1680 | }, 1681 | "engines": { 1682 | "node": ">=10" 1683 | }, 1684 | "peerDependencies": { 1685 | "acorn": "^8.5.0" 1686 | }, 1687 | "peerDependenciesMeta": { 1688 | "acorn": { 1689 | "optional": true 1690 | } 1691 | } 1692 | }, 1693 | "node_modules/terser-webpack-plugin": { 1694 | "version": "5.2.5", 1695 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", 1696 | "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", 1697 | "dev": true, 1698 | "dependencies": { 1699 | "jest-worker": "^27.0.6", 1700 | "schema-utils": "^3.1.1", 1701 | "serialize-javascript": "^6.0.0", 1702 | "source-map": "^0.6.1", 1703 | "terser": "^5.7.2" 1704 | }, 1705 | "engines": { 1706 | "node": ">= 10.13.0" 1707 | }, 1708 | "funding": { 1709 | "type": "opencollective", 1710 | "url": "https://opencollective.com/webpack" 1711 | }, 1712 | "peerDependencies": { 1713 | "webpack": "^5.1.0" 1714 | }, 1715 | "peerDependenciesMeta": { 1716 | "@swc/core": { 1717 | "optional": true 1718 | }, 1719 | "esbuild": { 1720 | "optional": true 1721 | }, 1722 | "uglify-js": { 1723 | "optional": true 1724 | } 1725 | } 1726 | }, 1727 | "node_modules/terser-webpack-plugin/node_modules/ajv": { 1728 | "version": "6.12.6", 1729 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1730 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1731 | "dev": true, 1732 | "dependencies": { 1733 | "fast-deep-equal": "^3.1.1", 1734 | "fast-json-stable-stringify": "^2.0.0", 1735 | "json-schema-traverse": "^0.4.1", 1736 | "uri-js": "^4.2.2" 1737 | }, 1738 | "funding": { 1739 | "type": "github", 1740 | "url": "https://github.com/sponsors/epoberezkin" 1741 | } 1742 | }, 1743 | "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { 1744 | "version": "3.5.2", 1745 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 1746 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 1747 | "dev": true, 1748 | "peerDependencies": { 1749 | "ajv": "^6.9.1" 1750 | } 1751 | }, 1752 | "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { 1753 | "version": "0.4.1", 1754 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1755 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1756 | "dev": true 1757 | }, 1758 | "node_modules/terser-webpack-plugin/node_modules/schema-utils": { 1759 | "version": "3.1.1", 1760 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 1761 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 1762 | "dev": true, 1763 | "dependencies": { 1764 | "@types/json-schema": "^7.0.8", 1765 | "ajv": "^6.12.5", 1766 | "ajv-keywords": "^3.5.2" 1767 | }, 1768 | "engines": { 1769 | "node": ">= 10.13.0" 1770 | }, 1771 | "funding": { 1772 | "type": "opencollective", 1773 | "url": "https://opencollective.com/webpack" 1774 | } 1775 | }, 1776 | "node_modules/terser/node_modules/source-map": { 1777 | "version": "0.7.3", 1778 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 1779 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 1780 | "dev": true, 1781 | "engines": { 1782 | "node": ">= 8" 1783 | } 1784 | }, 1785 | "node_modules/to-regex-range": { 1786 | "version": "5.0.1", 1787 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1788 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1789 | "dev": true, 1790 | "dependencies": { 1791 | "is-number": "^7.0.0" 1792 | }, 1793 | "engines": { 1794 | "node": ">=8.0" 1795 | } 1796 | }, 1797 | "node_modules/ts-loader": { 1798 | "version": "9.2.6", 1799 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", 1800 | "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", 1801 | "dev": true, 1802 | "dependencies": { 1803 | "chalk": "^4.1.0", 1804 | "enhanced-resolve": "^5.0.0", 1805 | "micromatch": "^4.0.0", 1806 | "semver": "^7.3.4" 1807 | }, 1808 | "engines": { 1809 | "node": ">=12.0.0" 1810 | }, 1811 | "peerDependencies": { 1812 | "typescript": "*", 1813 | "webpack": "^5.0.0" 1814 | } 1815 | }, 1816 | "node_modules/typescript": { 1817 | "version": "4.5.3", 1818 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", 1819 | "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==", 1820 | "dev": true, 1821 | "bin": { 1822 | "tsc": "bin/tsc", 1823 | "tsserver": "bin/tsserver" 1824 | }, 1825 | "engines": { 1826 | "node": ">=4.2.0" 1827 | } 1828 | }, 1829 | "node_modules/uri-js": { 1830 | "version": "4.4.1", 1831 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1832 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1833 | "dev": true, 1834 | "dependencies": { 1835 | "punycode": "^2.1.0" 1836 | } 1837 | }, 1838 | "node_modules/watchpack": { 1839 | "version": "2.3.1", 1840 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", 1841 | "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", 1842 | "dev": true, 1843 | "dependencies": { 1844 | "glob-to-regexp": "^0.4.1", 1845 | "graceful-fs": "^4.1.2" 1846 | }, 1847 | "engines": { 1848 | "node": ">=10.13.0" 1849 | } 1850 | }, 1851 | "node_modules/webpack": { 1852 | "version": "5.65.0", 1853 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", 1854 | "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", 1855 | "dev": true, 1856 | "dependencies": { 1857 | "@types/eslint-scope": "^3.7.0", 1858 | "@types/estree": "^0.0.50", 1859 | "@webassemblyjs/ast": "1.11.1", 1860 | "@webassemblyjs/wasm-edit": "1.11.1", 1861 | "@webassemblyjs/wasm-parser": "1.11.1", 1862 | "acorn": "^8.4.1", 1863 | "acorn-import-assertions": "^1.7.6", 1864 | "browserslist": "^4.14.5", 1865 | "chrome-trace-event": "^1.0.2", 1866 | "enhanced-resolve": "^5.8.3", 1867 | "es-module-lexer": "^0.9.0", 1868 | "eslint-scope": "5.1.1", 1869 | "events": "^3.2.0", 1870 | "glob-to-regexp": "^0.4.1", 1871 | "graceful-fs": "^4.2.4", 1872 | "json-parse-better-errors": "^1.0.2", 1873 | "loader-runner": "^4.2.0", 1874 | "mime-types": "^2.1.27", 1875 | "neo-async": "^2.6.2", 1876 | "schema-utils": "^3.1.0", 1877 | "tapable": "^2.1.1", 1878 | "terser-webpack-plugin": "^5.1.3", 1879 | "watchpack": "^2.3.1", 1880 | "webpack-sources": "^3.2.2" 1881 | }, 1882 | "bin": { 1883 | "webpack": "bin/webpack.js" 1884 | }, 1885 | "engines": { 1886 | "node": ">=10.13.0" 1887 | }, 1888 | "funding": { 1889 | "type": "opencollective", 1890 | "url": "https://opencollective.com/webpack" 1891 | }, 1892 | "peerDependenciesMeta": { 1893 | "webpack-cli": { 1894 | "optional": true 1895 | } 1896 | } 1897 | }, 1898 | "node_modules/webpack-cli": { 1899 | "version": "4.9.1", 1900 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", 1901 | "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", 1902 | "dev": true, 1903 | "dependencies": { 1904 | "@discoveryjs/json-ext": "^0.5.0", 1905 | "@webpack-cli/configtest": "^1.1.0", 1906 | "@webpack-cli/info": "^1.4.0", 1907 | "@webpack-cli/serve": "^1.6.0", 1908 | "colorette": "^2.0.14", 1909 | "commander": "^7.0.0", 1910 | "execa": "^5.0.0", 1911 | "fastest-levenshtein": "^1.0.12", 1912 | "import-local": "^3.0.2", 1913 | "interpret": "^2.2.0", 1914 | "rechoir": "^0.7.0", 1915 | "webpack-merge": "^5.7.3" 1916 | }, 1917 | "bin": { 1918 | "webpack-cli": "bin/cli.js" 1919 | }, 1920 | "engines": { 1921 | "node": ">=10.13.0" 1922 | }, 1923 | "peerDependencies": { 1924 | "webpack": "4.x.x || 5.x.x" 1925 | }, 1926 | "peerDependenciesMeta": { 1927 | "@webpack-cli/generators": { 1928 | "optional": true 1929 | }, 1930 | "@webpack-cli/migrate": { 1931 | "optional": true 1932 | }, 1933 | "webpack-bundle-analyzer": { 1934 | "optional": true 1935 | }, 1936 | "webpack-dev-server": { 1937 | "optional": true 1938 | } 1939 | } 1940 | }, 1941 | "node_modules/webpack-cli/node_modules/commander": { 1942 | "version": "7.2.0", 1943 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 1944 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 1945 | "dev": true, 1946 | "engines": { 1947 | "node": ">= 10" 1948 | } 1949 | }, 1950 | "node_modules/webpack-merge": { 1951 | "version": "5.8.0", 1952 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", 1953 | "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", 1954 | "dev": true, 1955 | "dependencies": { 1956 | "clone-deep": "^4.0.1", 1957 | "wildcard": "^2.0.0" 1958 | }, 1959 | "engines": { 1960 | "node": ">=10.0.0" 1961 | } 1962 | }, 1963 | "node_modules/webpack-sources": { 1964 | "version": "3.2.2", 1965 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", 1966 | "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", 1967 | "dev": true, 1968 | "engines": { 1969 | "node": ">=10.13.0" 1970 | } 1971 | }, 1972 | "node_modules/webpack/node_modules/ajv": { 1973 | "version": "6.12.6", 1974 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1975 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1976 | "dev": true, 1977 | "dependencies": { 1978 | "fast-deep-equal": "^3.1.1", 1979 | "fast-json-stable-stringify": "^2.0.0", 1980 | "json-schema-traverse": "^0.4.1", 1981 | "uri-js": "^4.2.2" 1982 | }, 1983 | "funding": { 1984 | "type": "github", 1985 | "url": "https://github.com/sponsors/epoberezkin" 1986 | } 1987 | }, 1988 | "node_modules/webpack/node_modules/ajv-keywords": { 1989 | "version": "3.5.2", 1990 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 1991 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 1992 | "dev": true, 1993 | "peerDependencies": { 1994 | "ajv": "^6.9.1" 1995 | } 1996 | }, 1997 | "node_modules/webpack/node_modules/json-schema-traverse": { 1998 | "version": "0.4.1", 1999 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2000 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2001 | "dev": true 2002 | }, 2003 | "node_modules/webpack/node_modules/schema-utils": { 2004 | "version": "3.1.1", 2005 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 2006 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 2007 | "dev": true, 2008 | "dependencies": { 2009 | "@types/json-schema": "^7.0.8", 2010 | "ajv": "^6.12.5", 2011 | "ajv-keywords": "^3.5.2" 2012 | }, 2013 | "engines": { 2014 | "node": ">= 10.13.0" 2015 | }, 2016 | "funding": { 2017 | "type": "opencollective", 2018 | "url": "https://opencollective.com/webpack" 2019 | } 2020 | }, 2021 | "node_modules/which": { 2022 | "version": "2.0.2", 2023 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2024 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2025 | "dev": true, 2026 | "dependencies": { 2027 | "isexe": "^2.0.0" 2028 | }, 2029 | "bin": { 2030 | "node-which": "bin/node-which" 2031 | }, 2032 | "engines": { 2033 | "node": ">= 8" 2034 | } 2035 | }, 2036 | "node_modules/wildcard": { 2037 | "version": "2.0.0", 2038 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", 2039 | "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", 2040 | "dev": true 2041 | }, 2042 | "node_modules/yallist": { 2043 | "version": "4.0.0", 2044 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2045 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2046 | "dev": true 2047 | } 2048 | }, 2049 | "dependencies": { 2050 | "@discoveryjs/json-ext": { 2051 | "version": "0.5.6", 2052 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", 2053 | "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", 2054 | "dev": true 2055 | }, 2056 | "@nodelib/fs.scandir": { 2057 | "version": "2.1.5", 2058 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 2059 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 2060 | "dev": true, 2061 | "requires": { 2062 | "@nodelib/fs.stat": "2.0.5", 2063 | "run-parallel": "^1.1.9" 2064 | } 2065 | }, 2066 | "@nodelib/fs.stat": { 2067 | "version": "2.0.5", 2068 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 2069 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 2070 | "dev": true 2071 | }, 2072 | "@nodelib/fs.walk": { 2073 | "version": "1.2.8", 2074 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 2075 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 2076 | "dev": true, 2077 | "requires": { 2078 | "@nodelib/fs.scandir": "2.1.5", 2079 | "fastq": "^1.6.0" 2080 | } 2081 | }, 2082 | "@types/chrome": { 2083 | "version": "0.0.170", 2084 | "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.170.tgz", 2085 | "integrity": "sha512-X6IKLdc/fJyCKxGlCUauL3OKmnhzS29Q2NnlErAiLC3voxvSVG1ISG+l24Q3kFZXmnc543KzElIjDQRvQ/yEBQ==", 2086 | "requires": { 2087 | "@types/filesystem": "*", 2088 | "@types/har-format": "*" 2089 | } 2090 | }, 2091 | "@types/eslint": { 2092 | "version": "8.2.1", 2093 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", 2094 | "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", 2095 | "dev": true, 2096 | "requires": { 2097 | "@types/estree": "*", 2098 | "@types/json-schema": "*" 2099 | } 2100 | }, 2101 | "@types/eslint-scope": { 2102 | "version": "3.7.1", 2103 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", 2104 | "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", 2105 | "dev": true, 2106 | "requires": { 2107 | "@types/eslint": "*", 2108 | "@types/estree": "*" 2109 | } 2110 | }, 2111 | "@types/estree": { 2112 | "version": "0.0.50", 2113 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", 2114 | "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", 2115 | "dev": true 2116 | }, 2117 | "@types/filesystem": { 2118 | "version": "0.0.32", 2119 | "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", 2120 | "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", 2121 | "requires": { 2122 | "@types/filewriter": "*" 2123 | } 2124 | }, 2125 | "@types/filewriter": { 2126 | "version": "0.0.29", 2127 | "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", 2128 | "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" 2129 | }, 2130 | "@types/har-format": { 2131 | "version": "1.2.8", 2132 | "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.8.tgz", 2133 | "integrity": "sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ==" 2134 | }, 2135 | "@types/json-schema": { 2136 | "version": "7.0.9", 2137 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", 2138 | "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", 2139 | "dev": true 2140 | }, 2141 | "@types/node": { 2142 | "version": "16.11.12", 2143 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", 2144 | "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", 2145 | "dev": true 2146 | }, 2147 | "@types/prop-types": { 2148 | "version": "15.7.4", 2149 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", 2150 | "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 2151 | }, 2152 | "@types/react": { 2153 | "version": "17.0.37", 2154 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.37.tgz", 2155 | "integrity": "sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==", 2156 | "requires": { 2157 | "@types/prop-types": "*", 2158 | "@types/scheduler": "*", 2159 | "csstype": "^3.0.2" 2160 | } 2161 | }, 2162 | "@types/react-dom": { 2163 | "version": "17.0.11", 2164 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", 2165 | "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", 2166 | "requires": { 2167 | "@types/react": "*" 2168 | } 2169 | }, 2170 | "@types/scheduler": { 2171 | "version": "0.16.2", 2172 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 2173 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 2174 | }, 2175 | "@webassemblyjs/ast": { 2176 | "version": "1.11.1", 2177 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", 2178 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", 2179 | "dev": true, 2180 | "requires": { 2181 | "@webassemblyjs/helper-numbers": "1.11.1", 2182 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1" 2183 | } 2184 | }, 2185 | "@webassemblyjs/floating-point-hex-parser": { 2186 | "version": "1.11.1", 2187 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", 2188 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", 2189 | "dev": true 2190 | }, 2191 | "@webassemblyjs/helper-api-error": { 2192 | "version": "1.11.1", 2193 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", 2194 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", 2195 | "dev": true 2196 | }, 2197 | "@webassemblyjs/helper-buffer": { 2198 | "version": "1.11.1", 2199 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", 2200 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", 2201 | "dev": true 2202 | }, 2203 | "@webassemblyjs/helper-numbers": { 2204 | "version": "1.11.1", 2205 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", 2206 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", 2207 | "dev": true, 2208 | "requires": { 2209 | "@webassemblyjs/floating-point-hex-parser": "1.11.1", 2210 | "@webassemblyjs/helper-api-error": "1.11.1", 2211 | "@xtuc/long": "4.2.2" 2212 | } 2213 | }, 2214 | "@webassemblyjs/helper-wasm-bytecode": { 2215 | "version": "1.11.1", 2216 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", 2217 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", 2218 | "dev": true 2219 | }, 2220 | "@webassemblyjs/helper-wasm-section": { 2221 | "version": "1.11.1", 2222 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", 2223 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", 2224 | "dev": true, 2225 | "requires": { 2226 | "@webassemblyjs/ast": "1.11.1", 2227 | "@webassemblyjs/helper-buffer": "1.11.1", 2228 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2229 | "@webassemblyjs/wasm-gen": "1.11.1" 2230 | } 2231 | }, 2232 | "@webassemblyjs/ieee754": { 2233 | "version": "1.11.1", 2234 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", 2235 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", 2236 | "dev": true, 2237 | "requires": { 2238 | "@xtuc/ieee754": "^1.2.0" 2239 | } 2240 | }, 2241 | "@webassemblyjs/leb128": { 2242 | "version": "1.11.1", 2243 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", 2244 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", 2245 | "dev": true, 2246 | "requires": { 2247 | "@xtuc/long": "4.2.2" 2248 | } 2249 | }, 2250 | "@webassemblyjs/utf8": { 2251 | "version": "1.11.1", 2252 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", 2253 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", 2254 | "dev": true 2255 | }, 2256 | "@webassemblyjs/wasm-edit": { 2257 | "version": "1.11.1", 2258 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", 2259 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", 2260 | "dev": true, 2261 | "requires": { 2262 | "@webassemblyjs/ast": "1.11.1", 2263 | "@webassemblyjs/helper-buffer": "1.11.1", 2264 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2265 | "@webassemblyjs/helper-wasm-section": "1.11.1", 2266 | "@webassemblyjs/wasm-gen": "1.11.1", 2267 | "@webassemblyjs/wasm-opt": "1.11.1", 2268 | "@webassemblyjs/wasm-parser": "1.11.1", 2269 | "@webassemblyjs/wast-printer": "1.11.1" 2270 | } 2271 | }, 2272 | "@webassemblyjs/wasm-gen": { 2273 | "version": "1.11.1", 2274 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", 2275 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", 2276 | "dev": true, 2277 | "requires": { 2278 | "@webassemblyjs/ast": "1.11.1", 2279 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2280 | "@webassemblyjs/ieee754": "1.11.1", 2281 | "@webassemblyjs/leb128": "1.11.1", 2282 | "@webassemblyjs/utf8": "1.11.1" 2283 | } 2284 | }, 2285 | "@webassemblyjs/wasm-opt": { 2286 | "version": "1.11.1", 2287 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", 2288 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", 2289 | "dev": true, 2290 | "requires": { 2291 | "@webassemblyjs/ast": "1.11.1", 2292 | "@webassemblyjs/helper-buffer": "1.11.1", 2293 | "@webassemblyjs/wasm-gen": "1.11.1", 2294 | "@webassemblyjs/wasm-parser": "1.11.1" 2295 | } 2296 | }, 2297 | "@webassemblyjs/wasm-parser": { 2298 | "version": "1.11.1", 2299 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", 2300 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", 2301 | "dev": true, 2302 | "requires": { 2303 | "@webassemblyjs/ast": "1.11.1", 2304 | "@webassemblyjs/helper-api-error": "1.11.1", 2305 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 2306 | "@webassemblyjs/ieee754": "1.11.1", 2307 | "@webassemblyjs/leb128": "1.11.1", 2308 | "@webassemblyjs/utf8": "1.11.1" 2309 | } 2310 | }, 2311 | "@webassemblyjs/wast-printer": { 2312 | "version": "1.11.1", 2313 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", 2314 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", 2315 | "dev": true, 2316 | "requires": { 2317 | "@webassemblyjs/ast": "1.11.1", 2318 | "@xtuc/long": "4.2.2" 2319 | } 2320 | }, 2321 | "@webpack-cli/configtest": { 2322 | "version": "1.1.0", 2323 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", 2324 | "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", 2325 | "dev": true, 2326 | "requires": {} 2327 | }, 2328 | "@webpack-cli/info": { 2329 | "version": "1.4.0", 2330 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", 2331 | "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", 2332 | "dev": true, 2333 | "requires": { 2334 | "envinfo": "^7.7.3" 2335 | } 2336 | }, 2337 | "@webpack-cli/serve": { 2338 | "version": "1.6.0", 2339 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", 2340 | "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", 2341 | "dev": true, 2342 | "requires": {} 2343 | }, 2344 | "@xtuc/ieee754": { 2345 | "version": "1.2.0", 2346 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 2347 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 2348 | "dev": true 2349 | }, 2350 | "@xtuc/long": { 2351 | "version": "4.2.2", 2352 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 2353 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 2354 | "dev": true 2355 | }, 2356 | "acorn": { 2357 | "version": "8.6.0", 2358 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", 2359 | "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", 2360 | "dev": true 2361 | }, 2362 | "acorn-import-assertions": { 2363 | "version": "1.8.0", 2364 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", 2365 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", 2366 | "dev": true, 2367 | "requires": {} 2368 | }, 2369 | "ajv": { 2370 | "version": "8.8.2", 2371 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", 2372 | "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", 2373 | "dev": true, 2374 | "requires": { 2375 | "fast-deep-equal": "^3.1.1", 2376 | "json-schema-traverse": "^1.0.0", 2377 | "require-from-string": "^2.0.2", 2378 | "uri-js": "^4.2.2" 2379 | } 2380 | }, 2381 | "ajv-formats": { 2382 | "version": "2.1.1", 2383 | "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", 2384 | "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", 2385 | "dev": true, 2386 | "requires": { 2387 | "ajv": "^8.0.0" 2388 | } 2389 | }, 2390 | "ajv-keywords": { 2391 | "version": "5.1.0", 2392 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", 2393 | "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", 2394 | "dev": true, 2395 | "requires": { 2396 | "fast-deep-equal": "^3.1.3" 2397 | } 2398 | }, 2399 | "ansi-styles": { 2400 | "version": "4.3.0", 2401 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2402 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2403 | "dev": true, 2404 | "requires": { 2405 | "color-convert": "^2.0.1" 2406 | } 2407 | }, 2408 | "array-union": { 2409 | "version": "3.0.1", 2410 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", 2411 | "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", 2412 | "dev": true 2413 | }, 2414 | "braces": { 2415 | "version": "3.0.2", 2416 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2417 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2418 | "dev": true, 2419 | "requires": { 2420 | "fill-range": "^7.0.1" 2421 | } 2422 | }, 2423 | "browserslist": { 2424 | "version": "4.18.1", 2425 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", 2426 | "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", 2427 | "dev": true, 2428 | "requires": { 2429 | "caniuse-lite": "^1.0.30001280", 2430 | "electron-to-chromium": "^1.3.896", 2431 | "escalade": "^3.1.1", 2432 | "node-releases": "^2.0.1", 2433 | "picocolors": "^1.0.0" 2434 | } 2435 | }, 2436 | "buffer-from": { 2437 | "version": "1.1.2", 2438 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 2439 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 2440 | "dev": true 2441 | }, 2442 | "caniuse-lite": { 2443 | "version": "1.0.30001286", 2444 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", 2445 | "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", 2446 | "dev": true 2447 | }, 2448 | "chalk": { 2449 | "version": "4.1.2", 2450 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2451 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2452 | "dev": true, 2453 | "requires": { 2454 | "ansi-styles": "^4.1.0", 2455 | "supports-color": "^7.1.0" 2456 | } 2457 | }, 2458 | "chrome-trace-event": { 2459 | "version": "1.0.3", 2460 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 2461 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", 2462 | "dev": true 2463 | }, 2464 | "clone-deep": { 2465 | "version": "4.0.1", 2466 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 2467 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 2468 | "dev": true, 2469 | "requires": { 2470 | "is-plain-object": "^2.0.4", 2471 | "kind-of": "^6.0.2", 2472 | "shallow-clone": "^3.0.0" 2473 | } 2474 | }, 2475 | "color-convert": { 2476 | "version": "2.0.1", 2477 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2478 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2479 | "dev": true, 2480 | "requires": { 2481 | "color-name": "~1.1.4" 2482 | } 2483 | }, 2484 | "color-name": { 2485 | "version": "1.1.4", 2486 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2487 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2488 | "dev": true 2489 | }, 2490 | "colorette": { 2491 | "version": "2.0.16", 2492 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", 2493 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", 2494 | "dev": true 2495 | }, 2496 | "commander": { 2497 | "version": "2.20.3", 2498 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 2499 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 2500 | "dev": true 2501 | }, 2502 | "copy-webpack-plugin": { 2503 | "version": "10.1.0", 2504 | "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz", 2505 | "integrity": "sha512-dPGo+zoW77wiF5LlwkQcZTY7FsrSm7dmovhLDHsjYyciiJ+ZhLFt2EQbw9LRUHJ586JXN0K1A70Kbudclvt00Q==", 2506 | "dev": true, 2507 | "requires": { 2508 | "fast-glob": "^3.2.7", 2509 | "glob-parent": "^6.0.1", 2510 | "globby": "^12.0.2", 2511 | "normalize-path": "^3.0.0", 2512 | "schema-utils": "^4.0.0", 2513 | "serialize-javascript": "^6.0.0" 2514 | } 2515 | }, 2516 | "cross-spawn": { 2517 | "version": "7.0.3", 2518 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2519 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2520 | "dev": true, 2521 | "requires": { 2522 | "path-key": "^3.1.0", 2523 | "shebang-command": "^2.0.0", 2524 | "which": "^2.0.1" 2525 | } 2526 | }, 2527 | "csstype": { 2528 | "version": "3.0.10", 2529 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", 2530 | "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" 2531 | }, 2532 | "dir-glob": { 2533 | "version": "3.0.1", 2534 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 2535 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 2536 | "dev": true, 2537 | "requires": { 2538 | "path-type": "^4.0.0" 2539 | } 2540 | }, 2541 | "electron-to-chromium": { 2542 | "version": "1.4.16", 2543 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz", 2544 | "integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA==", 2545 | "dev": true 2546 | }, 2547 | "enhanced-resolve": { 2548 | "version": "5.8.3", 2549 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", 2550 | "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", 2551 | "dev": true, 2552 | "requires": { 2553 | "graceful-fs": "^4.2.4", 2554 | "tapable": "^2.2.0" 2555 | } 2556 | }, 2557 | "envinfo": { 2558 | "version": "7.8.1", 2559 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", 2560 | "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", 2561 | "dev": true 2562 | }, 2563 | "es-module-lexer": { 2564 | "version": "0.9.3", 2565 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", 2566 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", 2567 | "dev": true 2568 | }, 2569 | "escalade": { 2570 | "version": "3.1.1", 2571 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2572 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2573 | "dev": true 2574 | }, 2575 | "eslint-scope": { 2576 | "version": "5.1.1", 2577 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 2578 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 2579 | "dev": true, 2580 | "requires": { 2581 | "esrecurse": "^4.3.0", 2582 | "estraverse": "^4.1.1" 2583 | } 2584 | }, 2585 | "esrecurse": { 2586 | "version": "4.3.0", 2587 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2588 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2589 | "dev": true, 2590 | "requires": { 2591 | "estraverse": "^5.2.0" 2592 | }, 2593 | "dependencies": { 2594 | "estraverse": { 2595 | "version": "5.3.0", 2596 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2597 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2598 | "dev": true 2599 | } 2600 | } 2601 | }, 2602 | "estraverse": { 2603 | "version": "4.3.0", 2604 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 2605 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 2606 | "dev": true 2607 | }, 2608 | "events": { 2609 | "version": "3.3.0", 2610 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 2611 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 2612 | "dev": true 2613 | }, 2614 | "execa": { 2615 | "version": "5.1.1", 2616 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 2617 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 2618 | "dev": true, 2619 | "requires": { 2620 | "cross-spawn": "^7.0.3", 2621 | "get-stream": "^6.0.0", 2622 | "human-signals": "^2.1.0", 2623 | "is-stream": "^2.0.0", 2624 | "merge-stream": "^2.0.0", 2625 | "npm-run-path": "^4.0.1", 2626 | "onetime": "^5.1.2", 2627 | "signal-exit": "^3.0.3", 2628 | "strip-final-newline": "^2.0.0" 2629 | } 2630 | }, 2631 | "fast-deep-equal": { 2632 | "version": "3.1.3", 2633 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2634 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2635 | "dev": true 2636 | }, 2637 | "fast-glob": { 2638 | "version": "3.2.7", 2639 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", 2640 | "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", 2641 | "dev": true, 2642 | "requires": { 2643 | "@nodelib/fs.stat": "^2.0.2", 2644 | "@nodelib/fs.walk": "^1.2.3", 2645 | "glob-parent": "^5.1.2", 2646 | "merge2": "^1.3.0", 2647 | "micromatch": "^4.0.4" 2648 | }, 2649 | "dependencies": { 2650 | "glob-parent": { 2651 | "version": "5.1.2", 2652 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2653 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2654 | "dev": true, 2655 | "requires": { 2656 | "is-glob": "^4.0.1" 2657 | } 2658 | } 2659 | } 2660 | }, 2661 | "fast-json-stable-stringify": { 2662 | "version": "2.1.0", 2663 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2664 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2665 | "dev": true 2666 | }, 2667 | "fastest-levenshtein": { 2668 | "version": "1.0.12", 2669 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", 2670 | "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", 2671 | "dev": true 2672 | }, 2673 | "fastq": { 2674 | "version": "1.13.0", 2675 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 2676 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 2677 | "dev": true, 2678 | "requires": { 2679 | "reusify": "^1.0.4" 2680 | } 2681 | }, 2682 | "fill-range": { 2683 | "version": "7.0.1", 2684 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2685 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2686 | "dev": true, 2687 | "requires": { 2688 | "to-regex-range": "^5.0.1" 2689 | } 2690 | }, 2691 | "find-up": { 2692 | "version": "4.1.0", 2693 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 2694 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 2695 | "dev": true, 2696 | "requires": { 2697 | "locate-path": "^5.0.0", 2698 | "path-exists": "^4.0.0" 2699 | } 2700 | }, 2701 | "function-bind": { 2702 | "version": "1.1.1", 2703 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2704 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2705 | "dev": true 2706 | }, 2707 | "get-stream": { 2708 | "version": "6.0.1", 2709 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 2710 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 2711 | "dev": true 2712 | }, 2713 | "glob-parent": { 2714 | "version": "6.0.2", 2715 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2716 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2717 | "dev": true, 2718 | "requires": { 2719 | "is-glob": "^4.0.3" 2720 | } 2721 | }, 2722 | "glob-to-regexp": { 2723 | "version": "0.4.1", 2724 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 2725 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 2726 | "dev": true 2727 | }, 2728 | "globby": { 2729 | "version": "12.0.2", 2730 | "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", 2731 | "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", 2732 | "dev": true, 2733 | "requires": { 2734 | "array-union": "^3.0.1", 2735 | "dir-glob": "^3.0.1", 2736 | "fast-glob": "^3.2.7", 2737 | "ignore": "^5.1.8", 2738 | "merge2": "^1.4.1", 2739 | "slash": "^4.0.0" 2740 | } 2741 | }, 2742 | "graceful-fs": { 2743 | "version": "4.2.8", 2744 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 2745 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", 2746 | "dev": true 2747 | }, 2748 | "has": { 2749 | "version": "1.0.3", 2750 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2751 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2752 | "dev": true, 2753 | "requires": { 2754 | "function-bind": "^1.1.1" 2755 | } 2756 | }, 2757 | "has-flag": { 2758 | "version": "4.0.0", 2759 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2760 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2761 | "dev": true 2762 | }, 2763 | "human-signals": { 2764 | "version": "2.1.0", 2765 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 2766 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 2767 | "dev": true 2768 | }, 2769 | "ignore": { 2770 | "version": "5.1.9", 2771 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", 2772 | "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", 2773 | "dev": true 2774 | }, 2775 | "import-local": { 2776 | "version": "3.0.3", 2777 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", 2778 | "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", 2779 | "dev": true, 2780 | "requires": { 2781 | "pkg-dir": "^4.2.0", 2782 | "resolve-cwd": "^3.0.0" 2783 | } 2784 | }, 2785 | "interpret": { 2786 | "version": "2.2.0", 2787 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", 2788 | "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", 2789 | "dev": true 2790 | }, 2791 | "is-core-module": { 2792 | "version": "2.8.0", 2793 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 2794 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 2795 | "dev": true, 2796 | "requires": { 2797 | "has": "^1.0.3" 2798 | } 2799 | }, 2800 | "is-extglob": { 2801 | "version": "2.1.1", 2802 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2803 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2804 | "dev": true 2805 | }, 2806 | "is-glob": { 2807 | "version": "4.0.3", 2808 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2809 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2810 | "dev": true, 2811 | "requires": { 2812 | "is-extglob": "^2.1.1" 2813 | } 2814 | }, 2815 | "is-number": { 2816 | "version": "7.0.0", 2817 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2818 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2819 | "dev": true 2820 | }, 2821 | "is-plain-object": { 2822 | "version": "2.0.4", 2823 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2824 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2825 | "dev": true, 2826 | "requires": { 2827 | "isobject": "^3.0.1" 2828 | } 2829 | }, 2830 | "is-stream": { 2831 | "version": "2.0.1", 2832 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2833 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2834 | "dev": true 2835 | }, 2836 | "isexe": { 2837 | "version": "2.0.0", 2838 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2839 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2840 | "dev": true 2841 | }, 2842 | "isobject": { 2843 | "version": "3.0.1", 2844 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2845 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2846 | "dev": true 2847 | }, 2848 | "jest-worker": { 2849 | "version": "27.4.4", 2850 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.4.tgz", 2851 | "integrity": "sha512-jfwxYJvfua1b1XkyuyPh01ATmgg4e5fPM/muLmhy9Qc6dmiwacQB0MLHaU6IjEsv/+nAixHGxTn8WllA27Pn0w==", 2852 | "dev": true, 2853 | "requires": { 2854 | "@types/node": "*", 2855 | "merge-stream": "^2.0.0", 2856 | "supports-color": "^8.0.0" 2857 | }, 2858 | "dependencies": { 2859 | "supports-color": { 2860 | "version": "8.1.1", 2861 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2862 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2863 | "dev": true, 2864 | "requires": { 2865 | "has-flag": "^4.0.0" 2866 | } 2867 | } 2868 | } 2869 | }, 2870 | "js-tokens": { 2871 | "version": "4.0.0", 2872 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2873 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2874 | }, 2875 | "json-parse-better-errors": { 2876 | "version": "1.0.2", 2877 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 2878 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 2879 | "dev": true 2880 | }, 2881 | "json-schema-traverse": { 2882 | "version": "1.0.0", 2883 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2884 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2885 | "dev": true 2886 | }, 2887 | "kind-of": { 2888 | "version": "6.0.3", 2889 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2890 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2891 | "dev": true 2892 | }, 2893 | "loader-runner": { 2894 | "version": "4.2.0", 2895 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", 2896 | "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", 2897 | "dev": true 2898 | }, 2899 | "locate-path": { 2900 | "version": "5.0.0", 2901 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2902 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2903 | "dev": true, 2904 | "requires": { 2905 | "p-locate": "^4.1.0" 2906 | } 2907 | }, 2908 | "loose-envify": { 2909 | "version": "1.4.0", 2910 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2911 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2912 | "requires": { 2913 | "js-tokens": "^3.0.0 || ^4.0.0" 2914 | } 2915 | }, 2916 | "lru-cache": { 2917 | "version": "6.0.0", 2918 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2919 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2920 | "dev": true, 2921 | "requires": { 2922 | "yallist": "^4.0.0" 2923 | } 2924 | }, 2925 | "merge-stream": { 2926 | "version": "2.0.0", 2927 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2928 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2929 | "dev": true 2930 | }, 2931 | "merge2": { 2932 | "version": "1.4.1", 2933 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2934 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2935 | "dev": true 2936 | }, 2937 | "micromatch": { 2938 | "version": "4.0.4", 2939 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 2940 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 2941 | "dev": true, 2942 | "requires": { 2943 | "braces": "^3.0.1", 2944 | "picomatch": "^2.2.3" 2945 | } 2946 | }, 2947 | "mime-db": { 2948 | "version": "1.51.0", 2949 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 2950 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 2951 | "dev": true 2952 | }, 2953 | "mime-types": { 2954 | "version": "2.1.34", 2955 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 2956 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 2957 | "dev": true, 2958 | "requires": { 2959 | "mime-db": "1.51.0" 2960 | } 2961 | }, 2962 | "mimic-fn": { 2963 | "version": "2.1.0", 2964 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2965 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2966 | "dev": true 2967 | }, 2968 | "neo-async": { 2969 | "version": "2.6.2", 2970 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 2971 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 2972 | "dev": true 2973 | }, 2974 | "node-releases": { 2975 | "version": "2.0.1", 2976 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", 2977 | "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", 2978 | "dev": true 2979 | }, 2980 | "normalize-path": { 2981 | "version": "3.0.0", 2982 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2983 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2984 | "dev": true 2985 | }, 2986 | "npm-run-path": { 2987 | "version": "4.0.1", 2988 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 2989 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 2990 | "dev": true, 2991 | "requires": { 2992 | "path-key": "^3.0.0" 2993 | } 2994 | }, 2995 | "object-assign": { 2996 | "version": "4.1.1", 2997 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2998 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2999 | }, 3000 | "onetime": { 3001 | "version": "5.1.2", 3002 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3003 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3004 | "dev": true, 3005 | "requires": { 3006 | "mimic-fn": "^2.1.0" 3007 | } 3008 | }, 3009 | "p-limit": { 3010 | "version": "2.3.0", 3011 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 3012 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 3013 | "dev": true, 3014 | "requires": { 3015 | "p-try": "^2.0.0" 3016 | } 3017 | }, 3018 | "p-locate": { 3019 | "version": "4.1.0", 3020 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 3021 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 3022 | "dev": true, 3023 | "requires": { 3024 | "p-limit": "^2.2.0" 3025 | } 3026 | }, 3027 | "p-try": { 3028 | "version": "2.2.0", 3029 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3030 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3031 | "dev": true 3032 | }, 3033 | "path-exists": { 3034 | "version": "4.0.0", 3035 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3036 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3037 | "dev": true 3038 | }, 3039 | "path-key": { 3040 | "version": "3.1.1", 3041 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3042 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3043 | "dev": true 3044 | }, 3045 | "path-parse": { 3046 | "version": "1.0.7", 3047 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3048 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3049 | "dev": true 3050 | }, 3051 | "path-type": { 3052 | "version": "4.0.0", 3053 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 3054 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 3055 | "dev": true 3056 | }, 3057 | "picocolors": { 3058 | "version": "1.0.0", 3059 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 3060 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 3061 | "dev": true 3062 | }, 3063 | "picomatch": { 3064 | "version": "2.3.0", 3065 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 3066 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 3067 | "dev": true 3068 | }, 3069 | "pkg-dir": { 3070 | "version": "4.2.0", 3071 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3072 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3073 | "dev": true, 3074 | "requires": { 3075 | "find-up": "^4.0.0" 3076 | } 3077 | }, 3078 | "punycode": { 3079 | "version": "2.1.1", 3080 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3081 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3082 | "dev": true 3083 | }, 3084 | "queue-microtask": { 3085 | "version": "1.2.3", 3086 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3087 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3088 | "dev": true 3089 | }, 3090 | "randombytes": { 3091 | "version": "2.1.0", 3092 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3093 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3094 | "dev": true, 3095 | "requires": { 3096 | "safe-buffer": "^5.1.0" 3097 | } 3098 | }, 3099 | "react": { 3100 | "version": "17.0.2", 3101 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 3102 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 3103 | "requires": { 3104 | "loose-envify": "^1.1.0", 3105 | "object-assign": "^4.1.1" 3106 | } 3107 | }, 3108 | "react-dom": { 3109 | "version": "17.0.2", 3110 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 3111 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 3112 | "requires": { 3113 | "loose-envify": "^1.1.0", 3114 | "object-assign": "^4.1.1", 3115 | "scheduler": "^0.20.2" 3116 | } 3117 | }, 3118 | "rechoir": { 3119 | "version": "0.7.1", 3120 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", 3121 | "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", 3122 | "dev": true, 3123 | "requires": { 3124 | "resolve": "^1.9.0" 3125 | } 3126 | }, 3127 | "require-from-string": { 3128 | "version": "2.0.2", 3129 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 3130 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 3131 | "dev": true 3132 | }, 3133 | "resolve": { 3134 | "version": "1.20.0", 3135 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 3136 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 3137 | "dev": true, 3138 | "requires": { 3139 | "is-core-module": "^2.2.0", 3140 | "path-parse": "^1.0.6" 3141 | } 3142 | }, 3143 | "resolve-cwd": { 3144 | "version": "3.0.0", 3145 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 3146 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 3147 | "dev": true, 3148 | "requires": { 3149 | "resolve-from": "^5.0.0" 3150 | } 3151 | }, 3152 | "resolve-from": { 3153 | "version": "5.0.0", 3154 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3155 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3156 | "dev": true 3157 | }, 3158 | "reusify": { 3159 | "version": "1.0.4", 3160 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3161 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3162 | "dev": true 3163 | }, 3164 | "run-parallel": { 3165 | "version": "1.2.0", 3166 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3167 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3168 | "dev": true, 3169 | "requires": { 3170 | "queue-microtask": "^1.2.2" 3171 | } 3172 | }, 3173 | "safe-buffer": { 3174 | "version": "5.2.1", 3175 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3176 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3177 | "dev": true 3178 | }, 3179 | "scheduler": { 3180 | "version": "0.20.2", 3181 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 3182 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 3183 | "requires": { 3184 | "loose-envify": "^1.1.0", 3185 | "object-assign": "^4.1.1" 3186 | } 3187 | }, 3188 | "schema-utils": { 3189 | "version": "4.0.0", 3190 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", 3191 | "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", 3192 | "dev": true, 3193 | "requires": { 3194 | "@types/json-schema": "^7.0.9", 3195 | "ajv": "^8.8.0", 3196 | "ajv-formats": "^2.1.1", 3197 | "ajv-keywords": "^5.0.0" 3198 | } 3199 | }, 3200 | "semver": { 3201 | "version": "7.3.5", 3202 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 3203 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 3204 | "dev": true, 3205 | "requires": { 3206 | "lru-cache": "^6.0.0" 3207 | } 3208 | }, 3209 | "serialize-javascript": { 3210 | "version": "6.0.0", 3211 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 3212 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 3213 | "dev": true, 3214 | "requires": { 3215 | "randombytes": "^2.1.0" 3216 | } 3217 | }, 3218 | "shallow-clone": { 3219 | "version": "3.0.1", 3220 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 3221 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 3222 | "dev": true, 3223 | "requires": { 3224 | "kind-of": "^6.0.2" 3225 | } 3226 | }, 3227 | "shebang-command": { 3228 | "version": "2.0.0", 3229 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3230 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3231 | "dev": true, 3232 | "requires": { 3233 | "shebang-regex": "^3.0.0" 3234 | } 3235 | }, 3236 | "shebang-regex": { 3237 | "version": "3.0.0", 3238 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3239 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3240 | "dev": true 3241 | }, 3242 | "signal-exit": { 3243 | "version": "3.0.6", 3244 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", 3245 | "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", 3246 | "dev": true 3247 | }, 3248 | "slash": { 3249 | "version": "4.0.0", 3250 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 3251 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", 3252 | "dev": true 3253 | }, 3254 | "source-map": { 3255 | "version": "0.6.1", 3256 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3257 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3258 | "dev": true 3259 | }, 3260 | "source-map-support": { 3261 | "version": "0.5.21", 3262 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3263 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3264 | "dev": true, 3265 | "requires": { 3266 | "buffer-from": "^1.0.0", 3267 | "source-map": "^0.6.0" 3268 | } 3269 | }, 3270 | "strip-final-newline": { 3271 | "version": "2.0.0", 3272 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 3273 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 3274 | "dev": true 3275 | }, 3276 | "supports-color": { 3277 | "version": "7.2.0", 3278 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3279 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3280 | "dev": true, 3281 | "requires": { 3282 | "has-flag": "^4.0.0" 3283 | } 3284 | }, 3285 | "tapable": { 3286 | "version": "2.2.1", 3287 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 3288 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 3289 | "dev": true 3290 | }, 3291 | "terser": { 3292 | "version": "5.10.0", 3293 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", 3294 | "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", 3295 | "dev": true, 3296 | "requires": { 3297 | "commander": "^2.20.0", 3298 | "source-map": "~0.7.2", 3299 | "source-map-support": "~0.5.20" 3300 | }, 3301 | "dependencies": { 3302 | "source-map": { 3303 | "version": "0.7.3", 3304 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 3305 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 3306 | "dev": true 3307 | } 3308 | } 3309 | }, 3310 | "terser-webpack-plugin": { 3311 | "version": "5.2.5", 3312 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", 3313 | "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", 3314 | "dev": true, 3315 | "requires": { 3316 | "jest-worker": "^27.0.6", 3317 | "schema-utils": "^3.1.1", 3318 | "serialize-javascript": "^6.0.0", 3319 | "source-map": "^0.6.1", 3320 | "terser": "^5.7.2" 3321 | }, 3322 | "dependencies": { 3323 | "ajv": { 3324 | "version": "6.12.6", 3325 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 3326 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 3327 | "dev": true, 3328 | "requires": { 3329 | "fast-deep-equal": "^3.1.1", 3330 | "fast-json-stable-stringify": "^2.0.0", 3331 | "json-schema-traverse": "^0.4.1", 3332 | "uri-js": "^4.2.2" 3333 | } 3334 | }, 3335 | "ajv-keywords": { 3336 | "version": "3.5.2", 3337 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 3338 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 3339 | "dev": true, 3340 | "requires": {} 3341 | }, 3342 | "json-schema-traverse": { 3343 | "version": "0.4.1", 3344 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3345 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3346 | "dev": true 3347 | }, 3348 | "schema-utils": { 3349 | "version": "3.1.1", 3350 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 3351 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 3352 | "dev": true, 3353 | "requires": { 3354 | "@types/json-schema": "^7.0.8", 3355 | "ajv": "^6.12.5", 3356 | "ajv-keywords": "^3.5.2" 3357 | } 3358 | } 3359 | } 3360 | }, 3361 | "to-regex-range": { 3362 | "version": "5.0.1", 3363 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3364 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3365 | "dev": true, 3366 | "requires": { 3367 | "is-number": "^7.0.0" 3368 | } 3369 | }, 3370 | "ts-loader": { 3371 | "version": "9.2.6", 3372 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", 3373 | "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", 3374 | "dev": true, 3375 | "requires": { 3376 | "chalk": "^4.1.0", 3377 | "enhanced-resolve": "^5.0.0", 3378 | "micromatch": "^4.0.0", 3379 | "semver": "^7.3.4" 3380 | } 3381 | }, 3382 | "typescript": { 3383 | "version": "4.5.3", 3384 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", 3385 | "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==", 3386 | "dev": true 3387 | }, 3388 | "uri-js": { 3389 | "version": "4.4.1", 3390 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3391 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3392 | "dev": true, 3393 | "requires": { 3394 | "punycode": "^2.1.0" 3395 | } 3396 | }, 3397 | "watchpack": { 3398 | "version": "2.3.1", 3399 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", 3400 | "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", 3401 | "dev": true, 3402 | "requires": { 3403 | "glob-to-regexp": "^0.4.1", 3404 | "graceful-fs": "^4.1.2" 3405 | } 3406 | }, 3407 | "webpack": { 3408 | "version": "5.65.0", 3409 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", 3410 | "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", 3411 | "dev": true, 3412 | "requires": { 3413 | "@types/eslint-scope": "^3.7.0", 3414 | "@types/estree": "^0.0.50", 3415 | "@webassemblyjs/ast": "1.11.1", 3416 | "@webassemblyjs/wasm-edit": "1.11.1", 3417 | "@webassemblyjs/wasm-parser": "1.11.1", 3418 | "acorn": "^8.4.1", 3419 | "acorn-import-assertions": "^1.7.6", 3420 | "browserslist": "^4.14.5", 3421 | "chrome-trace-event": "^1.0.2", 3422 | "enhanced-resolve": "^5.8.3", 3423 | "es-module-lexer": "^0.9.0", 3424 | "eslint-scope": "5.1.1", 3425 | "events": "^3.2.0", 3426 | "glob-to-regexp": "^0.4.1", 3427 | "graceful-fs": "^4.2.4", 3428 | "json-parse-better-errors": "^1.0.2", 3429 | "loader-runner": "^4.2.0", 3430 | "mime-types": "^2.1.27", 3431 | "neo-async": "^2.6.2", 3432 | "schema-utils": "^3.1.0", 3433 | "tapable": "^2.1.1", 3434 | "terser-webpack-plugin": "^5.1.3", 3435 | "watchpack": "^2.3.1", 3436 | "webpack-sources": "^3.2.2" 3437 | }, 3438 | "dependencies": { 3439 | "ajv": { 3440 | "version": "6.12.6", 3441 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 3442 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 3443 | "dev": true, 3444 | "requires": { 3445 | "fast-deep-equal": "^3.1.1", 3446 | "fast-json-stable-stringify": "^2.0.0", 3447 | "json-schema-traverse": "^0.4.1", 3448 | "uri-js": "^4.2.2" 3449 | } 3450 | }, 3451 | "ajv-keywords": { 3452 | "version": "3.5.2", 3453 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 3454 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 3455 | "dev": true, 3456 | "requires": {} 3457 | }, 3458 | "json-schema-traverse": { 3459 | "version": "0.4.1", 3460 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3461 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3462 | "dev": true 3463 | }, 3464 | "schema-utils": { 3465 | "version": "3.1.1", 3466 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 3467 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 3468 | "dev": true, 3469 | "requires": { 3470 | "@types/json-schema": "^7.0.8", 3471 | "ajv": "^6.12.5", 3472 | "ajv-keywords": "^3.5.2" 3473 | } 3474 | } 3475 | } 3476 | }, 3477 | "webpack-cli": { 3478 | "version": "4.9.1", 3479 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", 3480 | "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", 3481 | "dev": true, 3482 | "requires": { 3483 | "@discoveryjs/json-ext": "^0.5.0", 3484 | "@webpack-cli/configtest": "^1.1.0", 3485 | "@webpack-cli/info": "^1.4.0", 3486 | "@webpack-cli/serve": "^1.6.0", 3487 | "colorette": "^2.0.14", 3488 | "commander": "^7.0.0", 3489 | "execa": "^5.0.0", 3490 | "fastest-levenshtein": "^1.0.12", 3491 | "import-local": "^3.0.2", 3492 | "interpret": "^2.2.0", 3493 | "rechoir": "^0.7.0", 3494 | "webpack-merge": "^5.7.3" 3495 | }, 3496 | "dependencies": { 3497 | "commander": { 3498 | "version": "7.2.0", 3499 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 3500 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 3501 | "dev": true 3502 | } 3503 | } 3504 | }, 3505 | "webpack-merge": { 3506 | "version": "5.8.0", 3507 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", 3508 | "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", 3509 | "dev": true, 3510 | "requires": { 3511 | "clone-deep": "^4.0.1", 3512 | "wildcard": "^2.0.0" 3513 | } 3514 | }, 3515 | "webpack-sources": { 3516 | "version": "3.2.2", 3517 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", 3518 | "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", 3519 | "dev": true 3520 | }, 3521 | "which": { 3522 | "version": "2.0.2", 3523 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3524 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3525 | "dev": true, 3526 | "requires": { 3527 | "isexe": "^2.0.0" 3528 | } 3529 | }, 3530 | "wildcard": { 3531 | "version": "2.0.0", 3532 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", 3533 | "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", 3534 | "dev": true 3535 | }, 3536 | "yallist": { 3537 | "version": "4.0.0", 3538 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3539 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3540 | "dev": true 3541 | } 3542 | } 3543 | } 3544 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@gfx/watchraptor", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "Watch GitHub PR status checks for you", 6 | "main": "index.js", 7 | "scripts": { 8 | "prepublishOnly": "echo ; echo 'CAUTION: You cannot publish this package as an npm package. This is a Chrome extension.' ; echo ; exit 1", 9 | "build:release": "rm -rf dist/ && webpack --mode=production --bail", 10 | "build": "webpack --mode=development --bail --progress", 11 | "build:watch": "webpack --mode=development --progress --watch", 12 | "test": "tsc --noEmit" 13 | }, 14 | "author": "FUJI Goro (gfx)", 15 | "license": "ISC", 16 | "dependencies": { 17 | "@types/chrome": "latest", 18 | "@types/react": "latest", 19 | "@types/react-dom": "latest", 20 | "react": "latest", 21 | "react-dom": "latest" 22 | }, 23 | "devDependencies": { 24 | "copy-webpack-plugin": "latest", 25 | "ts-loader": "latest", 26 | "typescript": "latest", 27 | "webpack": "latest", 28 | "webpack-cli": "latest" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /public/assets/README.md: -------------------------------------------------------------------------------- 1 | ## `velociraptor.png` 2 | 3 | https://www.flaticon.com/free-icon/velociraptor_1494128 4 | 5 | ## `velociraptor_monocolor.png` 6 | 7 | https://www.flaticon.com/free-icon/velociraptor_1494054 8 | -------------------------------------------------------------------------------- /public/assets/velociraptor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/public/assets/velociraptor.png -------------------------------------------------------------------------------- /public/assets/velociraptor128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/public/assets/velociraptor128.png -------------------------------------------------------------------------------- /public/assets/velociraptor48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/public/assets/velociraptor48.png -------------------------------------------------------------------------------- /public/assets/velociraptor_monocolor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/public/assets/velociraptor_monocolor.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "WatchRaptor", 4 | "version": "0.9.5", 5 | 6 | "description": "Notify if a specified status check of GitHub PRs is completed", 7 | "author": "FUJI Goro", 8 | 9 | "icons": { 10 | "48": "./assets/velociraptor48.png", 11 | "128": "./assets/velociraptor128.png" 12 | }, 13 | "background": { 14 | "service_worker": "background.js" 15 | }, 16 | "options_page": "options.html", 17 | "host_permissions": [ 18 | "https://github.com/" 19 | ], 20 | "permissions": [ 21 | "scripting", 22 | "webNavigation", 23 | "notifications", 24 | "storage" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /public/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/background.tsx: -------------------------------------------------------------------------------- 1 | // This is the background worker that installs watcher.tsx to each GitHub PR page. 2 | import manifest from "../public/manifest.json"; 3 | import { debug, info, warn } from "./log"; 4 | 5 | // @ts-expect-error 6 | import appIconUri from "../public/assets/velociraptor128.png"; 7 | 8 | // chrome.storage.local.clear(); 9 | 10 | chrome.runtime.onInstalled.addListener(async ({ reason }) => { 11 | info(`installed (reason=${reason})`); 12 | await installScriptToAllTabs(); 13 | }); 14 | 15 | async function getGitHubPRsTabs(): Promise> { 16 | return await chrome.tabs.query({ 17 | url: manifest.host_permissions.map((url) => { 18 | return `${url}*`; 19 | }), 20 | }); 21 | } 22 | 23 | async function installScript({ url, tabId }: { url: string; tabId: number }) { 24 | info(`installScript: ${url}`); 25 | 26 | await chrome.scripting.executeScript({ 27 | target: { tabId }, 28 | files: ["./watcher.js"], 29 | }); 30 | } 31 | 32 | async function installScriptToAllTabs() { 33 | for (const tab of await getGitHubPRsTabs()) { 34 | if (tab.url) { 35 | installScript({ 36 | tabId: tab.id!, 37 | url: tab.url, 38 | }); 39 | } 40 | } 41 | } 42 | 43 | chrome.webNavigation.onCommitted.addListener( 44 | (details) => { 45 | debug("chrome.webNavigation.onCommitted:", details); 46 | if ( 47 | ["reload", "link", "typed", "generated", "auto_bookmark"].includes( 48 | details.transitionType 49 | ) 50 | ) { 51 | const onComplete = () => { 52 | installScript({ 53 | tabId: details.tabId!, 54 | url: details.url!, 55 | }); 56 | chrome.webNavigation.onCompleted.removeListener(onComplete); 57 | }; 58 | 59 | chrome.webNavigation.onCompleted.addListener(onComplete); 60 | } 61 | }, 62 | { 63 | url: manifest.host_permissions.map((urlPrefix) => { 64 | return { urlPrefix }; 65 | }), 66 | } 67 | ); 68 | 69 | chrome.runtime.onMessage.addListener((message, sender, callback) => { 70 | debug("chrome.runtime.onMessage:", message, sender); 71 | 72 | if (message.type === "ci-status-changed") { 73 | const sym = ((status: string) => { 74 | if (status === "success") { 75 | return "✅"; 76 | } else if (status === "fail") { 77 | return "❌"; 78 | } else if (status === "pending") { 79 | return "⏳"; 80 | } else { 81 | return "❓"; 82 | } 83 | })(message.status); 84 | 85 | const tabId = sender.tab!.id!; 86 | const notificationId = `notification-${tabId}`; 87 | chrome.notifications.create( 88 | notificationId, 89 | { 90 | type: "basic", 91 | title: `${sym} ${message.statusMessage}`, 92 | message: message.documentTitle, 93 | iconUrl: appIconUri, 94 | requireInteraction: true, 95 | }, 96 | () => { 97 | callback(); 98 | } 99 | ); 100 | } else if (message.type === "get-registry-items") { 101 | const senderTabId = sender!.tab!.id; 102 | if (!senderTabId) { 103 | throw new Error("sender.tab.id is null"); 104 | } 105 | chrome.storage.local.get(`${senderTabId}`).then((root) => { 106 | callback(root[`${senderTabId}`] ?? {}); 107 | }); 108 | } else if (message.type === "set-registry-items") { 109 | const senderTabId = sender!.tab!.id; 110 | if (!senderTabId) { 111 | throw new Error("sender.tab.id is null"); 112 | } 113 | chrome.storage.local 114 | .set({ 115 | [`${senderTabId}`]: message.items, 116 | }) 117 | .then(() => { 118 | callback(); 119 | }); 120 | } else { 121 | warn("unknown message", message); 122 | } 123 | 124 | return true; 125 | }); 126 | 127 | chrome.notifications.onClicked.addListener(async (id) => { 128 | const [, tabId] = id.split("-"); 129 | await chrome.tabs.update(Number.parseInt(tabId), { active: true }); 130 | await chrome.windows.update(chrome.windows.WINDOW_ID_CURRENT, { 131 | focused: true, 132 | }); 133 | chrome.notifications.clear(id); 134 | }); 135 | -------------------------------------------------------------------------------- /src/log.ts: -------------------------------------------------------------------------------- 1 | import manifest from "../public/manifest.json"; 2 | 3 | // development only debug logs 4 | // To see the debug logs, set the log level to debug or verbose in the devtools console. 5 | export function debug(message: string, ...args: ReadonlyArray) { 6 | if (process.env.NODE_ENV !== "production") { 7 | console.debug(`[${manifest.name}] ${message}`, ...args); 8 | } 9 | } 10 | 11 | export function info(message: string, ...args: ReadonlyArray) { 12 | if (process.env.NODE_ENV !== "production") { 13 | console.info(`[${manifest.name}] ${message}`, ...args); 14 | } 15 | } 16 | 17 | export function warn(message: string, ...args: ReadonlyArray) { 18 | console.warn(`[${manifest.name}] ${message}`, ...args); 19 | } 20 | -------------------------------------------------------------------------------- /src/options.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from "react"; 2 | import ReactDOM from "react-dom"; 3 | 4 | import manifest from "../public/manifest.json"; 5 | 6 | type OptionsMainProps = {}; 7 | 8 | const OptionsMain: React.FC = ({}) => { 9 | const [bytesInUse, setBytesInUse] = useState(0); 10 | 11 | useEffect(() => { 12 | chrome.storage.local.getBytesInUse(null, (bytes) => { 13 | setBytesInUse(bytes); 14 | }); 15 | }, []); 16 | 17 | return ( 18 |

19 |

{manifest.name} v{manifest.version}

20 |
21 |
22 |

Clear the Local Storage

23 |

It consumes {bytesInUse} bytes.

24 |

25 | 31 |

32 |
33 |
34 |
35 | ); 36 | }; 37 | 38 | const OptionsApp: React.FC = () => { 39 | return ; 40 | }; 41 | 42 | window.addEventListener("DOMContentLoaded", async () => { 43 | ReactDOM.render(, document.getElementById("app")); 44 | }); 45 | -------------------------------------------------------------------------------- /src/popup.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gfx/WatchRaptor/85596df8bac7422c984d3cdbf6674f346e3d61b3/src/popup.tsx -------------------------------------------------------------------------------- /src/registry.tsx: -------------------------------------------------------------------------------- 1 | type ItemsType = Record; 2 | 3 | export class Registry { 4 | private async getItems(): Promise> { 5 | return new Promise>((resolve, _reject) => { 6 | chrome.runtime.sendMessage({ type: "get-registry-items" }, (items) => { 7 | resolve(items); 8 | }); 9 | }); 10 | } 11 | 12 | private async setItems(items: ItemsType): Promise { 13 | return new Promise((resolve, _reject) => { 14 | chrome.runtime.sendMessage({ type: "set-registry-items", items }, () => { 15 | resolve(); 16 | }); 17 | }); 18 | } 19 | 20 | public async get(key: string): Promise { 21 | const items = await this.getItems(); 22 | return (items.hasOwnProperty(key) ? items[key] : undefined); 23 | } 24 | 25 | public async has(key: string): Promise { 26 | const items = await this.getItems(); 27 | return items.hasOwnProperty(key); 28 | } 29 | 30 | public async set(key: string, value: V): Promise { 31 | const items = await this.getItems(); 32 | items[key] = value; 33 | return this.setItems(items); 34 | } 35 | 36 | public async delete(key: string): Promise { 37 | const items = await this.getItems(); 38 | delete items[key]; 39 | return this.setItems(items); 40 | } 41 | 42 | async *[Symbol.asyncIterator](): AsyncIterator { 43 | const items = await this.getItems(); 44 | for (const entry of Object.entries(items)) { 45 | yield entry as [string, V]; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/watcher.tsx: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | import React, { useEffect, useState } from "react"; 5 | import ReactDOM from "react-dom"; 6 | 7 | import { debug, info, warn } from "./log"; 8 | import { Registry } from "./registry"; 9 | 10 | type StatusType = "unknown" | "pending" | "success" | "fail"; 11 | 12 | const containerClassName = "watchraptor-container"; 13 | 14 | const registry = new Registry(); 15 | 16 | const getStatus = (statusIcon: Element): StatusType => { 17 | const svg = statusIcon.querySelector("svg")!; 18 | if (svg == null) { 19 | warn(`no svg found in the status icon element:`, statusIcon); 20 | return "unknown"; 21 | } 22 | 23 | if (svg.classList.contains("hx_dot-fill-pending-icon")) { 24 | return "pending"; 25 | } else if (svg.classList.contains("color-fg-danger")) { 26 | return "fail"; 27 | } else if (svg.classList.contains("color-fg-success")) { 28 | return "success"; 29 | } else { 30 | return "unknown"; 31 | } 32 | }; 33 | 34 | const notifyStatusChange = async (statusIcon: Element) => { 35 | const status = getStatus(statusIcon); 36 | const statusMessage = statusIcon 37 | .nextElementSibling!.nextElementSibling!.textContent!.replaceAll( 38 | /\s+/g, 39 | " " 40 | ) 41 | .trim(); 42 | 43 | const type = "ci-status-changed"; 44 | const documentTitle = document.title; 45 | 46 | chrome.runtime.sendMessage({ 47 | type, 48 | documentTitle, 49 | statusMessage, 50 | status, 51 | }); 52 | }; 53 | 54 | const STATUS_ITEM_QUERY_SEPARATOR = "/"; 55 | 56 | const getStatusIdFromItem = (statusItem: Element): string => { 57 | // Extract the name of the status item (e.g. "CI / build (pull_request)") which should be unique in the CI statuses. This is used to identify the status item. 58 | return statusItem.querySelector("div > strong")!.textContent!.trim(); 59 | }; 60 | 61 | const queryStatusItem = (element: ParentNode, q: string): Element | null => { 62 | const separatorPos = q.indexOf(STATUS_ITEM_QUERY_SEPARATOR); 63 | const first = q.substring(0, separatorPos); 64 | const second = q.substring(separatorPos + 1); 65 | for (const statusItem of element.querySelectorAll(first)) { 66 | if (getStatusIdFromItem(statusItem) === second) { 67 | return statusItem; 68 | } 69 | } 70 | return null; 71 | }; 72 | 73 | const findStatusItemByStatusId = ( 74 | element: ParentNode, 75 | statusId: string 76 | ): Element | null => { 77 | for (const statusItem of element.querySelectorAll( 78 | ".merge-status-list .merge-status-item" 79 | )) { 80 | if (getStatusIdFromItem(statusItem) === statusId) { 81 | return statusItem; 82 | } 83 | } 84 | return null; 85 | }; 86 | 87 | const queryContainer = ( 88 | target: ParentNode, 89 | statusId: string 90 | ): HTMLElement | null => { 91 | return target.querySelector( 92 | `.${containerClassName}[data-watchraptor-id="${statusId}"]` 93 | ); 94 | }; 95 | 96 | // GitHub status item -> WatchRaptor UI container mapping 97 | const statusItemToContainer = new WeakMap(); 98 | 99 | const handleStatusIconChange = () => { 100 | (async () => { 101 | for await (const [statusItemQuery, oldStatus] of registry) { 102 | const statusItem = queryStatusItem(document, statusItemQuery); 103 | if (statusItem) { 104 | const statusIcon = statusItem.querySelector(".merge-status-icon"); 105 | if (statusIcon) { 106 | const newStatus = getStatus(statusIcon); 107 | await registry.set(statusItemQuery, newStatus); 108 | 109 | if (oldStatus !== newStatus && newStatus !== "pending") { 110 | debug(`${statusItemQuery}: ${oldStatus} -> ${newStatus}`); 111 | notifyStatusChange(statusIcon); 112 | } 113 | } 114 | } 115 | } 116 | })(); 117 | }; 118 | 119 | type WatchCheckboxProps = Readonly<{ 120 | statusItemQuery: string; 121 | statusIcon: Element; 122 | }>; 123 | 124 | const WatchCheckbox: React.FC = ({ 125 | statusItemQuery, 126 | statusIcon, 127 | }) => { 128 | const [disabled, setDisabled] = useState(true); 129 | const [checked, setChecked] = useState(false); 130 | const status = getStatus(statusIcon); 131 | 132 | const updateChecked = async (checked: boolean) => { 133 | setChecked(checked); 134 | setDisabled(true); 135 | if (checked) { 136 | await registry.set(statusItemQuery, status); 137 | } else { 138 | await registry.delete(statusItemQuery); 139 | } 140 | setDisabled(false); 141 | }; 142 | 143 | useEffect(() => { 144 | (async () => { 145 | await updateChecked(await registry.has(statusItemQuery)); 146 | setDisabled(false); 147 | })().catch((e) => warn(e)); 148 | }, []); 149 | 150 | return ( 151 |
155 | { 160 | (async () => { 161 | setDisabled(true); 162 | updateChecked(!checked); 163 | setDisabled(false); 164 | })().catch((e) => warn(e)); 165 | }} 166 | /> 167 |
168 | ); 169 | }; 170 | 171 | const adjustContainerPosition = ({ 172 | statusItem, 173 | container, 174 | }: { 175 | statusItem: Element; 176 | container: HTMLElement; 177 | }): void => { 178 | const { left, top } = statusItem.getBoundingClientRect(); 179 | container.style.left = `${Math.round(left + scrollX)}px`; 180 | container.style.top = `${Math.round(top + scrollY)}px`; 181 | }; 182 | 183 | const generation = Date.now().toString(); 184 | let shutdown = false; 185 | 186 | const intersectionObserver = new IntersectionObserver( 187 | (entries) => { 188 | if (shutdown) { 189 | intersectionObserver.disconnect(); 190 | return; 191 | } 192 | 193 | for (const entry of entries) { 194 | const statusItem = entry.target as HTMLElement; 195 | const statusId = getStatusIdFromItem(statusItem); 196 | const container = queryContainer(document, statusId); 197 | if (container) { 198 | container.style.visibility = entry.isIntersecting 199 | ? "visible" 200 | : "hidden"; 201 | } 202 | } 203 | }, 204 | { threshold: 0.7 } 205 | ); 206 | 207 | const adjustContainerPositionAll = () => { 208 | for (const container of document.querySelectorAll( 209 | `.${containerClassName}` 210 | )) { 211 | const statusId = container.dataset.watchraptorId!; 212 | const statusItem = findStatusItemByStatusId(document, statusId); 213 | if (statusItem) { 214 | adjustContainerPosition({ statusItem, container }); 215 | } 216 | } 217 | }; 218 | 219 | const handleMergeStatusListScroll = (e: Event): void => { 220 | if (shutdown) { 221 | e.target!.removeEventListener("scroll", handleMergeStatusListScroll); 222 | return; 223 | } 224 | 225 | adjustContainerPositionAll(); 226 | }; 227 | 228 | const install = (document: Document): boolean => { 229 | let installed = false; 230 | 231 | const mergeStatusList = 232 | document.querySelector(".merge-status-list"); 233 | if (mergeStatusList) { 234 | mergeStatusList.removeEventListener("scroll", handleMergeStatusListScroll); 235 | mergeStatusList.addEventListener("scroll", handleMergeStatusListScroll); 236 | } 237 | 238 | for (const statusItem of document.querySelectorAll( 239 | ".merge-status-list .merge-status-item" 240 | )) { 241 | if (statusItem.querySelector(".avatar") == null) { 242 | // skip if the status item has not an avatar, or an icon for the workflow. 243 | continue; 244 | } 245 | const statusIcon = statusItem.querySelector(".merge-status-icon"); 246 | if (statusIcon == null) { 247 | continue; 248 | } 249 | const statusId = getStatusIdFromItem(statusItem); 250 | const existingContainer = statusItemToContainer.get(statusItem); 251 | if (existingContainer) { 252 | const installedGeneration = 253 | existingContainer.dataset.watchraptorGeneration ?? "0"; 254 | if (installedGeneration === generation) { 255 | continue; 256 | } else { 257 | // A different generation of the script is installed. 258 | if ( 259 | Number.parseInt(installedGeneration) > Number.parseInt(generation) 260 | ) { 261 | // the current one is older. 262 | shutdown = true; 263 | info(`shutting down (generation=${generation})`); 264 | return false; 265 | } 266 | 267 | // the current one is newer. 268 | existingContainer.remove(); 269 | } 270 | } 271 | 272 | const container = document.createElement("div"); 273 | container.classList.add(containerClassName); 274 | 275 | container.style.position = "absolute"; 276 | container.style.visibility = "hidden"; // will be updated in the intersection observer 277 | 278 | container.dataset.watchraptorGeneration = generation; 279 | container.dataset.watchraptorId = statusId; 280 | 281 | document.body.appendChild(container); 282 | statusItemToContainer.set(statusItem, container); 283 | 284 | intersectionObserver.observe(statusItem); 285 | 286 | const statusItemQuery = [ 287 | ".merge-status-list .merge-status-item", 288 | statusId, 289 | ].join(STATUS_ITEM_QUERY_SEPARATOR); 290 | 291 | const checkbox = ( 292 | 296 | ); 297 | ReactDOM.render(checkbox, container); 298 | 299 | installed = true; 300 | } 301 | 302 | return installed; 303 | }; 304 | 305 | const main = (): void => { 306 | info(`injected (generation=${generation})`); 307 | 308 | if (install(document)) { 309 | info(`installed (generation=${generation})`); 310 | } 311 | 312 | const mutationObserver = new MutationObserver((mutations) => { 313 | if (shutdown) { 314 | mutationObserver.disconnect(); 315 | return; 316 | } 317 | 318 | handleStatusIconChange(); 319 | adjustContainerPositionAll(); 320 | 321 | if (install(document)) { 322 | info(`installed in MutationObserver (generation=${generation})`); 323 | } 324 | }); 325 | mutationObserver.observe(document, { 326 | childList: true, 327 | subtree: true, 328 | }); 329 | }; 330 | 331 | requestAnimationFrame(main); 332 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Basic Options */ 6 | "incremental": true, /* Enable incremental compilation */ 7 | "target": "es2020", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ 8 | "module": "es2020", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ 9 | "lib": ["es2021"], /* Specify library files to be included in the compilation. */ 10 | // "allowJs": true, /* Allow javascript files to be compiled. */ 11 | // "checkJs": true, /* Report errors in .js files. */ 12 | "jsx": "react", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 13 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 14 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 15 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 16 | // "outFile": "./", /* Concatenate and emit output to single file. */ 17 | "outDir": "./dist", /* Redirect output structure to the directory. */ 18 | "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 19 | // "composite": true, /* Enable project compilation */ 20 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 21 | // "removeComments": true, /* Do not emit comments to output. */ 22 | // "noEmit": true, /* Do not emit outputs. */ 23 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 24 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 25 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 26 | 27 | /* Strict Type-Checking Options */ 28 | "strict": true, /* Enable all strict type-checking options. */ 29 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 30 | // "strictNullChecks": true, /* Enable strict null checks. */ 31 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 32 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 33 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 34 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 35 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 36 | 37 | /* Additional Checks */ 38 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 39 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 40 | "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 41 | "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 42 | 43 | /* Module Resolution Options */ 44 | "resolveJsonModule": true, 45 | "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 46 | "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 47 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 48 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 49 | // "typeRoots": [], /* List of folders to include type definitions from. */ 50 | // "types": [], /* Type declaration files to be included in compilation. */ 51 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 52 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 53 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 54 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 55 | 56 | /* Source Map Options */ 57 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 58 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 59 | "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 60 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 61 | 62 | /* Experimental Options */ 63 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 64 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 65 | 66 | /* Advanced Options */ 67 | "skipLibCheck": true, /* Skip type checking of declaration files. */ 68 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const path = require("path"); 4 | const webpack = require("webpack"); 5 | const CopyWebpackPlugin = require("copy-webpack-plugin"); 6 | 7 | module.exports = { 8 | entry: { 9 | background: "./src/background", 10 | watcher: "./src/watcher", 11 | 12 | options: "./src/options", 13 | popup: "./src/popup", 14 | }, 15 | output: { 16 | filename: "[name].js", 17 | path: path.resolve(__dirname, "dist"), 18 | }, 19 | target: ["web", "es2020"], 20 | resolve: { 21 | extensions: [".ts", ".tsx", ".mjs", ".js", ".json", ".wasm"], 22 | }, 23 | module: { 24 | rules: [ 25 | { 26 | test: /\.tsx?$/i, 27 | loader: "ts-loader", 28 | options: { 29 | configFile: "tsconfig.json", 30 | }, 31 | }, 32 | { 33 | test: /\.(?:png|jpg|gif)$/i, 34 | type: "asset/inline", 35 | }, 36 | ], 37 | }, 38 | 39 | plugins: [ 40 | new webpack.DefinePlugin({ 41 | }), 42 | new CopyWebpackPlugin({ 43 | patterns: [ 44 | { 45 | from: "./public", 46 | to: "./", 47 | }, 48 | ] 49 | }), 50 | ], 51 | 52 | optimization: { 53 | minimize: false, 54 | }, 55 | 56 | performance: { 57 | hints: false, 58 | }, 59 | devtool: 'inline-cheap-module-source-map', 60 | }; 61 | 62 | --------------------------------------------------------------------------------