├── .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 [](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 | 
12 |
13 | ↓
14 |
15 | 
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 |
--------------------------------------------------------------------------------