├── .github
└── dependabot.yml
├── .gitignore
├── LICENSE.txt
├── README.md
├── auto.gif
├── build.mjs
├── demo.gif
├── icon.png
├── package.json
├── pnpm-lock.yaml
├── select.gif
├── src
├── background.js
├── content.js
├── manifest.chrome.json
├── manifest.firefox.json
├── options
│ ├── index.css
│ ├── index.html
│ └── index.js
└── popup
│ ├── index.css
│ ├── index.html
│ └── index.js
└── textbox.gif
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # Please see the documentation for all configuration options:
2 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
3 |
4 | version: 2
5 | updates:
6 | - package-ecosystem: "npm" # See documentation for possible values
7 | directory: "/" # Location of package manifests
8 | schedule:
9 | interval: "weekly"
10 | allow:
11 | - dependency-name: "opencc-js"
12 | open-pull-requests-limit: 3
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .vscode/
3 | build/
4 | node_modules
5 | node_modules.nosync/
6 | web-ext-config.mjs
7 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Tony Chan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | opencc-extension
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | A browser extension that converts text in the current active tab between different Chinese variants.
19 |
20 | This extension is powered by [opencc-js](https://github.com/nk2028/opencc-js),
21 | which is a JavaScript API wrapper around the great [OpenCC](https://github.com/BYVoid/OpenCC) project.
22 |
23 | Most of the variants supported by OpenCC are supported:
24 |
25 | - `cn`: Simplified Chinese (Mainland China)
26 | - `hk`: Traditional Chinese (Hong Kong)
27 | - `tw`: Traditional Chinese (Taiwan)
28 | - `twp`: Traditional Chinese (Taiwan) with native phrases
29 | - ~~`t`: Traditional Chinese (OpenCC standard)~~
30 | - ~~`jp`: Japanese Shinjitai~~
31 |
32 | > [!NOTE]
33 | > Only Chrome and Firefox are tested.
34 | > Other browsers may also work but are not guaranteed to.
35 |
36 | ## Features
37 |
38 | - Minimalist user interface.
39 | - Fast performance (using [`TreeWalker`](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker)).
40 | - Converts whole text on a webpage with one click.
41 | - Can also convert dynamically rendered text in auto mode
42 | (using [`MutationObserver`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)).
43 | - Converts selected text on a webpage in right click context menu.
44 | - Converts any text provided in the text box in real time.
45 | - Other features of OpenCC.
46 | - 嚴格區分「一簡對多繁」和「一簡對多異」。
47 | - 完全兼容異體字,可以實現動態替換。
48 | - 嚴格審校一簡對多繁詞條,原則爲「能分則不合」。
49 | - 支持中國大陸、臺灣、香港異體字和地區習慣用詞轉換,如「裏」「裡」、「鼠標」「滑鼠」。
50 |
51 | See [usage](#usage) for more ways to convert text.
52 |
53 | ## Usage
54 |
55 | Specify the language settings in the extension popup.
56 |
57 |
58 | Origin → Target
59 |
60 |
61 | - **Origin**: the original Chinese text variant in the webpage
62 | - **Target**: the desired Chinese text variant to be converted into
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | Left: Convert Text Selection on Webpage
71 |
72 | Right: Convert Any Text in Text Box
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | Left: One Click
82 |
83 | Right: Auto Mode
84 |
85 |
86 | > [!NOTE]
87 | > For performance reason, auto mode will not convert text on webpages which
88 | > explicitly specify their `lang` attributes to be languages other than `zh` in their HTML documents.
89 |
90 | When auto mode is enabled, a grey badge with the letter `A` appears on the corner of the extension icon.
91 |
92 | All text in the webpage of the current active tab is converted whenever it loads or is updated.
93 |
94 | ## Credits
95 |
96 | - https://github.com/BYVoid/OpenCC
97 | - https://github.com/nk2028/opencc-js
98 |
99 | ---
100 |
101 |
102 | ~ crafted with ♥︎ by tnychn ~
103 |
104 | MIT © 2024 Tony Chan
105 |
106 |
--------------------------------------------------------------------------------
/auto.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnychn/opencc-extension/6c8a06702ed3190da0ffc9445ff23a30ceb2a3fb/auto.gif
--------------------------------------------------------------------------------
/build.mjs:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | /* eslint-env node */
4 |
5 | import * as esbuild from "esbuild";
6 |
7 | const arg = process.argv[2];
8 | const mode = process.env.MODE;
9 | const browser = process.env.BROWSER;
10 |
11 | const options = {
12 | entryPoints: [
13 | "./src/background.js",
14 | "./src/content.js",
15 | "./src/popup/index.js",
16 | "./src/popup/index.html",
17 | "./src/popup/index.css",
18 | "./src/options/index.js",
19 | "./src/options/index.html",
20 | "./src/options/index.css",
21 | {
22 | in: `./src/manifest.${browser}.json`,
23 | out: "manifest",
24 | },
25 | {
26 | in: "./icon.png",
27 | out: "icon",
28 | },
29 | ],
30 | loader: {
31 | ".html": "copy",
32 | ".css": "copy",
33 | ".json": "copy",
34 | ".png": "copy",
35 | },
36 | outbase: "src",
37 | outdir: arg === "watch" ? "./build" : arg,
38 | target: "es6",
39 | bundle: true,
40 | allowOverwrite: true,
41 | minify: mode === "production",
42 | sourcemap: mode === "development",
43 | };
44 |
45 | if (arg === "watch") {
46 | const ctx = await esbuild.context(options);
47 | await ctx.watch();
48 | } else await esbuild.build(options);
49 |
--------------------------------------------------------------------------------
/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnychn/opencc-extension/6c8a06702ed3190da0ffc9445ff23a30ceb2a3fb/demo.gif
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnychn/opencc-extension/6c8a06702ed3190da0ffc9445ff23a30ceb2a3fb/icon.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "opencc-extension",
3 | "version": "0.4.0",
4 | "description": "A browser extension to convert webpages between different Chinese variants.",
5 | "repository": "github:tnychn/opencc-extension",
6 | "author": {
7 | "name": "Tony Chan",
8 | "email": "tnychn@protonmail.com",
9 | "url": "https://github.com/tnychn"
10 | },
11 | "type": "module",
12 | "license": "MIT",
13 | "scripts": {
14 | "build": "./build.mjs",
15 | "build:watch": "pnpm build watch",
16 | "start": "web-ext run -s ./build",
17 | "start:firefox": "concurrently \"MODE='development' BROWSER='firefox' pnpm build:watch\" \"wait-on ./build/manifest.json && pnpm start\"",
18 | "start:chromium": "concurrently \"MODE='development' BROWSER='chrome' pnpm build:watch\" \"wait-on ./build/manifest.json && pnpm start -t chromium\"",
19 | "dist:chrome": "MODE='production' BROWSER='chrome' pnpm build ./dist/chrome && web-ext build -s ./dist/chrome -a . -n opencc.chrome.zip",
20 | "dist:firefox": "MODE='production' BROWSER='firefox' pnpm build ./dist/firefox && web-ext build -s ./dist/firefox -a . -n opencc.firefox.zip",
21 | "dist": "concurrently \"pnpm dist:chrome\" \"pnpm dist:firefox\" && rm -rf ./dist"
22 | },
23 | "dependencies": {
24 | "opencc-js": "^1.0.5"
25 | },
26 | "devDependencies": {
27 | "@types/chrome": "^0.0.287",
28 | "@types/opencc-js": "^1.0.3",
29 | "concurrently": "^9.1.0",
30 | "esbuild": "^0.24.0",
31 | "eslint": "^8.57.1",
32 | "eslint-config-prettier": "^9.1.0",
33 | "prettier": "^3.4.1",
34 | "wait-on": "^8.0.1",
35 | "web-ext": "^8.3.0"
36 | },
37 | "prettier": {
38 | "tabWidth": 2,
39 | "printWidth": 120
40 | },
41 | "eslintConfig": {
42 | "env": {
43 | "es6": true,
44 | "browser": true,
45 | "webextensions": true
46 | },
47 | "parserOptions": {
48 | "ecmaVersion": "latest",
49 | "sourceType": "module"
50 | },
51 | "extends": [
52 | "eslint:recommended",
53 | "prettier"
54 | ]
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | opencc-js:
9 | specifier: ^1.0.5
10 | version: 1.0.5
11 |
12 | devDependencies:
13 | '@types/chrome':
14 | specifier: ^0.0.287
15 | version: 0.0.287
16 | '@types/opencc-js':
17 | specifier: ^1.0.3
18 | version: 1.0.3
19 | concurrently:
20 | specifier: ^9.1.0
21 | version: 9.1.0
22 | esbuild:
23 | specifier: ^0.24.0
24 | version: 0.24.0
25 | eslint:
26 | specifier: ^8.57.1
27 | version: 8.57.1
28 | eslint-config-prettier:
29 | specifier: ^9.1.0
30 | version: 9.1.0(eslint@8.57.1)
31 | prettier:
32 | specifier: ^3.4.1
33 | version: 3.4.1
34 | wait-on:
35 | specifier: ^8.0.1
36 | version: 8.0.1
37 | web-ext:
38 | specifier: ^8.3.0
39 | version: 8.3.0
40 |
41 | packages:
42 |
43 | /@babel/code-frame@7.26.2:
44 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
45 | engines: {node: '>=6.9.0'}
46 | dependencies:
47 | '@babel/helper-validator-identifier': 7.25.9
48 | js-tokens: 4.0.0
49 | picocolors: 1.1.1
50 | dev: true
51 |
52 | /@babel/helper-validator-identifier@7.25.9:
53 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
54 | engines: {node: '>=6.9.0'}
55 | dev: true
56 |
57 | /@babel/runtime@7.25.6:
58 | resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
59 | engines: {node: '>=6.9.0'}
60 | dependencies:
61 | regenerator-runtime: 0.14.1
62 | dev: true
63 |
64 | /@devicefarmer/adbkit-logcat@2.1.3:
65 | resolution: {integrity: sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw==}
66 | engines: {node: '>= 4'}
67 | dev: true
68 |
69 | /@devicefarmer/adbkit-monkey@1.2.1:
70 | resolution: {integrity: sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==}
71 | engines: {node: '>= 0.10.4'}
72 | dev: true
73 |
74 | /@devicefarmer/adbkit@3.2.6:
75 | resolution: {integrity: sha512-8lO1hSeTgtxcOHhp4tTWq/JaOysp5KNbbyFoxNEBnwkCDZu/Bji3ZfOaG++Riv9jN6c9bgdLBOZqJTC5VJPRKQ==}
76 | engines: {node: '>= 0.10.4'}
77 | hasBin: true
78 | dependencies:
79 | '@devicefarmer/adbkit-logcat': 2.1.3
80 | '@devicefarmer/adbkit-monkey': 1.2.1
81 | bluebird: 3.7.2
82 | commander: 9.5.0
83 | debug: 4.3.7
84 | node-forge: 1.3.1
85 | split: 1.0.1
86 | transitivePeerDependencies:
87 | - supports-color
88 | dev: true
89 |
90 | /@esbuild/aix-ppc64@0.24.0:
91 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
92 | engines: {node: '>=18'}
93 | cpu: [ppc64]
94 | os: [aix]
95 | requiresBuild: true
96 | dev: true
97 | optional: true
98 |
99 | /@esbuild/android-arm64@0.24.0:
100 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
101 | engines: {node: '>=18'}
102 | cpu: [arm64]
103 | os: [android]
104 | requiresBuild: true
105 | dev: true
106 | optional: true
107 |
108 | /@esbuild/android-arm@0.24.0:
109 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
110 | engines: {node: '>=18'}
111 | cpu: [arm]
112 | os: [android]
113 | requiresBuild: true
114 | dev: true
115 | optional: true
116 |
117 | /@esbuild/android-x64@0.24.0:
118 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
119 | engines: {node: '>=18'}
120 | cpu: [x64]
121 | os: [android]
122 | requiresBuild: true
123 | dev: true
124 | optional: true
125 |
126 | /@esbuild/darwin-arm64@0.24.0:
127 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
128 | engines: {node: '>=18'}
129 | cpu: [arm64]
130 | os: [darwin]
131 | requiresBuild: true
132 | dev: true
133 | optional: true
134 |
135 | /@esbuild/darwin-x64@0.24.0:
136 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
137 | engines: {node: '>=18'}
138 | cpu: [x64]
139 | os: [darwin]
140 | requiresBuild: true
141 | dev: true
142 | optional: true
143 |
144 | /@esbuild/freebsd-arm64@0.24.0:
145 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
146 | engines: {node: '>=18'}
147 | cpu: [arm64]
148 | os: [freebsd]
149 | requiresBuild: true
150 | dev: true
151 | optional: true
152 |
153 | /@esbuild/freebsd-x64@0.24.0:
154 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
155 | engines: {node: '>=18'}
156 | cpu: [x64]
157 | os: [freebsd]
158 | requiresBuild: true
159 | dev: true
160 | optional: true
161 |
162 | /@esbuild/linux-arm64@0.24.0:
163 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
164 | engines: {node: '>=18'}
165 | cpu: [arm64]
166 | os: [linux]
167 | requiresBuild: true
168 | dev: true
169 | optional: true
170 |
171 | /@esbuild/linux-arm@0.24.0:
172 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
173 | engines: {node: '>=18'}
174 | cpu: [arm]
175 | os: [linux]
176 | requiresBuild: true
177 | dev: true
178 | optional: true
179 |
180 | /@esbuild/linux-ia32@0.24.0:
181 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
182 | engines: {node: '>=18'}
183 | cpu: [ia32]
184 | os: [linux]
185 | requiresBuild: true
186 | dev: true
187 | optional: true
188 |
189 | /@esbuild/linux-loong64@0.24.0:
190 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
191 | engines: {node: '>=18'}
192 | cpu: [loong64]
193 | os: [linux]
194 | requiresBuild: true
195 | dev: true
196 | optional: true
197 |
198 | /@esbuild/linux-mips64el@0.24.0:
199 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
200 | engines: {node: '>=18'}
201 | cpu: [mips64el]
202 | os: [linux]
203 | requiresBuild: true
204 | dev: true
205 | optional: true
206 |
207 | /@esbuild/linux-ppc64@0.24.0:
208 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
209 | engines: {node: '>=18'}
210 | cpu: [ppc64]
211 | os: [linux]
212 | requiresBuild: true
213 | dev: true
214 | optional: true
215 |
216 | /@esbuild/linux-riscv64@0.24.0:
217 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
218 | engines: {node: '>=18'}
219 | cpu: [riscv64]
220 | os: [linux]
221 | requiresBuild: true
222 | dev: true
223 | optional: true
224 |
225 | /@esbuild/linux-s390x@0.24.0:
226 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
227 | engines: {node: '>=18'}
228 | cpu: [s390x]
229 | os: [linux]
230 | requiresBuild: true
231 | dev: true
232 | optional: true
233 |
234 | /@esbuild/linux-x64@0.24.0:
235 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
236 | engines: {node: '>=18'}
237 | cpu: [x64]
238 | os: [linux]
239 | requiresBuild: true
240 | dev: true
241 | optional: true
242 |
243 | /@esbuild/netbsd-x64@0.24.0:
244 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
245 | engines: {node: '>=18'}
246 | cpu: [x64]
247 | os: [netbsd]
248 | requiresBuild: true
249 | dev: true
250 | optional: true
251 |
252 | /@esbuild/openbsd-arm64@0.24.0:
253 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
254 | engines: {node: '>=18'}
255 | cpu: [arm64]
256 | os: [openbsd]
257 | requiresBuild: true
258 | dev: true
259 | optional: true
260 |
261 | /@esbuild/openbsd-x64@0.24.0:
262 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
263 | engines: {node: '>=18'}
264 | cpu: [x64]
265 | os: [openbsd]
266 | requiresBuild: true
267 | dev: true
268 | optional: true
269 |
270 | /@esbuild/sunos-x64@0.24.0:
271 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
272 | engines: {node: '>=18'}
273 | cpu: [x64]
274 | os: [sunos]
275 | requiresBuild: true
276 | dev: true
277 | optional: true
278 |
279 | /@esbuild/win32-arm64@0.24.0:
280 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
281 | engines: {node: '>=18'}
282 | cpu: [arm64]
283 | os: [win32]
284 | requiresBuild: true
285 | dev: true
286 | optional: true
287 |
288 | /@esbuild/win32-ia32@0.24.0:
289 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
290 | engines: {node: '>=18'}
291 | cpu: [ia32]
292 | os: [win32]
293 | requiresBuild: true
294 | dev: true
295 | optional: true
296 |
297 | /@esbuild/win32-x64@0.24.0:
298 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
299 | engines: {node: '>=18'}
300 | cpu: [x64]
301 | os: [win32]
302 | requiresBuild: true
303 | dev: true
304 | optional: true
305 |
306 | /@eslint-community/eslint-utils@4.4.1(eslint@8.57.1):
307 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
308 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
309 | peerDependencies:
310 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
311 | dependencies:
312 | eslint: 8.57.1
313 | eslint-visitor-keys: 3.4.3
314 | dev: true
315 |
316 | /@eslint-community/regexpp@4.12.1:
317 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
318 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
319 | dev: true
320 |
321 | /@eslint/eslintrc@2.1.4:
322 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
323 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
324 | dependencies:
325 | ajv: 6.12.6
326 | debug: 4.3.7
327 | espree: 9.6.1
328 | globals: 13.24.0
329 | ignore: 5.3.2
330 | import-fresh: 3.3.0
331 | js-yaml: 4.1.0
332 | minimatch: 3.1.2
333 | strip-json-comments: 3.1.1
334 | transitivePeerDependencies:
335 | - supports-color
336 | dev: true
337 |
338 | /@eslint/js@8.57.1:
339 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
340 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
341 | dev: true
342 |
343 | /@fluent/syntax@0.19.0:
344 | resolution: {integrity: sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ==}
345 | engines: {node: '>=14.0.0', npm: '>=7.0.0'}
346 | dev: true
347 |
348 | /@hapi/hoek@9.3.0:
349 | resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
350 | dev: true
351 |
352 | /@hapi/topo@5.1.0:
353 | resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
354 | dependencies:
355 | '@hapi/hoek': 9.3.0
356 | dev: true
357 |
358 | /@humanwhocodes/config-array@0.13.0:
359 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
360 | engines: {node: '>=10.10.0'}
361 | deprecated: Use @eslint/config-array instead
362 | dependencies:
363 | '@humanwhocodes/object-schema': 2.0.3
364 | debug: 4.3.7
365 | minimatch: 3.1.2
366 | transitivePeerDependencies:
367 | - supports-color
368 | dev: true
369 |
370 | /@humanwhocodes/module-importer@1.0.1:
371 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
372 | engines: {node: '>=12.22'}
373 | dev: true
374 |
375 | /@humanwhocodes/object-schema@2.0.3:
376 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
377 | deprecated: Use @eslint/object-schema instead
378 | dev: true
379 |
380 | /@mdn/browser-compat-data@5.6.0:
381 | resolution: {integrity: sha512-xArvLyzuk0r2m6hFVjTMYoLvhWwys3h7W8pO15tjSAea+U39cErWDNfoUs4g2C08HVg6bDHyDMBc0LC6FKRpVw==}
382 | dev: true
383 |
384 | /@nodelib/fs.scandir@2.1.5:
385 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
386 | engines: {node: '>= 8'}
387 | dependencies:
388 | '@nodelib/fs.stat': 2.0.5
389 | run-parallel: 1.2.0
390 | dev: true
391 |
392 | /@nodelib/fs.stat@2.0.5:
393 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
394 | engines: {node: '>= 8'}
395 | dev: true
396 |
397 | /@nodelib/fs.walk@1.2.8:
398 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
399 | engines: {node: '>= 8'}
400 | dependencies:
401 | '@nodelib/fs.scandir': 2.1.5
402 | fastq: 1.17.1
403 | dev: true
404 |
405 | /@pnpm/config.env-replace@1.1.0:
406 | resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
407 | engines: {node: '>=12.22.0'}
408 | dev: true
409 |
410 | /@pnpm/network.ca-file@1.0.2:
411 | resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
412 | engines: {node: '>=12.22.0'}
413 | dependencies:
414 | graceful-fs: 4.2.10
415 | dev: true
416 |
417 | /@pnpm/npm-conf@2.3.1:
418 | resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
419 | engines: {node: '>=12'}
420 | dependencies:
421 | '@pnpm/config.env-replace': 1.1.0
422 | '@pnpm/network.ca-file': 1.0.2
423 | config-chain: 1.1.13
424 | dev: true
425 |
426 | /@sideway/address@4.1.5:
427 | resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
428 | dependencies:
429 | '@hapi/hoek': 9.3.0
430 | dev: true
431 |
432 | /@sideway/formula@3.0.1:
433 | resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
434 | dev: true
435 |
436 | /@sideway/pinpoint@2.0.0:
437 | resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
438 | dev: true
439 |
440 | /@types/chrome@0.0.287:
441 | resolution: {integrity: sha512-wWhBNPNXZHwycHKNYnexUcpSbrihVZu++0rdp6GEk5ZgAglenLx+RwdEouh6FrHS0XQiOxSd62yaujM1OoQlZQ==}
442 | dependencies:
443 | '@types/filesystem': 0.0.36
444 | '@types/har-format': 1.2.16
445 | dev: true
446 |
447 | /@types/filesystem@0.0.36:
448 | resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==}
449 | dependencies:
450 | '@types/filewriter': 0.0.33
451 | dev: true
452 |
453 | /@types/filewriter@0.0.33:
454 | resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==}
455 | dev: true
456 |
457 | /@types/har-format@1.2.16:
458 | resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
459 | dev: true
460 |
461 | /@types/minimatch@3.0.5:
462 | resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
463 | dev: true
464 |
465 | /@types/node@22.10.1:
466 | resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
467 | dependencies:
468 | undici-types: 6.20.0
469 | dev: true
470 |
471 | /@types/opencc-js@1.0.3:
472 | resolution: {integrity: sha512-TENp7YkI2hNlc4dplhivSHj0hU4DORCK56VY7rniaSfA5f87uD3uv+kPIRuH9h64TGv976iVFi4gEHZZtS2y8Q==}
473 | dev: true
474 |
475 | /@types/yauzl@2.10.3:
476 | resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
477 | dependencies:
478 | '@types/node': 22.10.1
479 | dev: true
480 |
481 | /@ungap/structured-clone@1.2.0:
482 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
483 | dev: true
484 |
485 | /abort-controller@3.0.0:
486 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
487 | engines: {node: '>=6.5'}
488 | dependencies:
489 | event-target-shim: 5.0.1
490 | dev: true
491 |
492 | /acorn-jsx@5.3.2(acorn@8.14.0):
493 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
494 | peerDependencies:
495 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
496 | dependencies:
497 | acorn: 8.14.0
498 | dev: true
499 |
500 | /acorn@8.14.0:
501 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
502 | engines: {node: '>=0.4.0'}
503 | hasBin: true
504 | dev: true
505 |
506 | /addons-linter@7.1.0:
507 | resolution: {integrity: sha512-UmkUB3dZSpf8bqhlulGDbpoxBwcfOk8JvaJTRvJ+AAXKHvTjqeNlFC+GRMqa0EjJJh/0yqpBaJzyaUIx+fjl+A==}
508 | engines: {node: '>=18.0.0'}
509 | hasBin: true
510 | dependencies:
511 | '@fluent/syntax': 0.19.0
512 | '@mdn/browser-compat-data': 5.6.0
513 | addons-moz-compare: 1.3.0
514 | addons-scanner-utils: 9.11.0
515 | ajv: 8.17.1
516 | chalk: 4.1.2
517 | cheerio: 1.0.0-rc.12
518 | columnify: 1.6.0
519 | common-tags: 1.8.2
520 | deepmerge: 4.3.1
521 | eslint: 8.57.1
522 | eslint-plugin-no-unsanitized: 4.0.2(eslint@8.57.1)
523 | eslint-visitor-keys: 4.0.0
524 | espree: 10.1.0
525 | esprima: 4.0.1
526 | fast-json-patch: 3.1.1
527 | image-size: 1.1.1
528 | jed: 1.1.1
529 | json-merge-patch: 1.0.2
530 | os-locale: 5.0.0
531 | pino: 8.20.0
532 | relaxed-json: 1.0.3
533 | semver: 7.6.3
534 | source-map-support: 0.5.21
535 | upath: 2.0.1
536 | yargs: 17.7.2
537 | yauzl: 2.10.0
538 | transitivePeerDependencies:
539 | - body-parser
540 | - express
541 | - node-fetch
542 | - safe-compare
543 | - supports-color
544 | dev: true
545 |
546 | /addons-moz-compare@1.3.0:
547 | resolution: {integrity: sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==}
548 | dev: true
549 |
550 | /addons-scanner-utils@9.11.0:
551 | resolution: {integrity: sha512-X95V8ymnue9EHmOLz3zJTGHvHDFlWKiavlH+kJKOlv2sJDWFvD3TWeJMHJgxS9GKOqT/545mOXvX3vuuGGum+g==}
552 | peerDependencies:
553 | body-parser: 1.20.2
554 | express: 4.19.2
555 | node-fetch: 2.6.11
556 | safe-compare: 1.1.4
557 | peerDependenciesMeta:
558 | body-parser:
559 | optional: true
560 | express:
561 | optional: true
562 | node-fetch:
563 | optional: true
564 | safe-compare:
565 | optional: true
566 | dependencies:
567 | '@types/yauzl': 2.10.3
568 | common-tags: 1.8.2
569 | first-chunk-stream: 3.0.0
570 | strip-bom-stream: 4.0.0
571 | upath: 2.0.1
572 | yauzl: 2.10.0
573 | dev: true
574 |
575 | /adm-zip@0.5.16:
576 | resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==}
577 | engines: {node: '>=12.0'}
578 | dev: true
579 |
580 | /agent-base@7.1.1:
581 | resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
582 | engines: {node: '>= 14'}
583 | dependencies:
584 | debug: 4.3.7
585 | transitivePeerDependencies:
586 | - supports-color
587 | dev: true
588 |
589 | /ajv@6.12.6:
590 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
591 | dependencies:
592 | fast-deep-equal: 3.1.3
593 | fast-json-stable-stringify: 2.1.0
594 | json-schema-traverse: 0.4.1
595 | uri-js: 4.4.1
596 | dev: true
597 |
598 | /ajv@8.17.1:
599 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
600 | dependencies:
601 | fast-deep-equal: 3.1.3
602 | fast-uri: 3.0.3
603 | json-schema-traverse: 1.0.0
604 | require-from-string: 2.0.2
605 | dev: true
606 |
607 | /ansi-align@3.0.1:
608 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
609 | dependencies:
610 | string-width: 4.2.3
611 | dev: true
612 |
613 | /ansi-regex@5.0.1:
614 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
615 | engines: {node: '>=8'}
616 | dev: true
617 |
618 | /ansi-regex@6.1.0:
619 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
620 | engines: {node: '>=12'}
621 | dev: true
622 |
623 | /ansi-styles@3.2.1:
624 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
625 | engines: {node: '>=4'}
626 | dependencies:
627 | color-convert: 1.9.3
628 | dev: true
629 |
630 | /ansi-styles@4.3.0:
631 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
632 | engines: {node: '>=8'}
633 | dependencies:
634 | color-convert: 2.0.1
635 | dev: true
636 |
637 | /ansi-styles@6.2.1:
638 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
639 | engines: {node: '>=12'}
640 | dev: true
641 |
642 | /argparse@2.0.1:
643 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
644 | dev: true
645 |
646 | /array-differ@4.0.0:
647 | resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==}
648 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
649 | dev: true
650 |
651 | /array-union@3.0.1:
652 | resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==}
653 | engines: {node: '>=12'}
654 | dev: true
655 |
656 | /async@3.2.6:
657 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
658 | dev: true
659 |
660 | /asynckit@0.4.0:
661 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
662 | dev: true
663 |
664 | /atomic-sleep@1.0.0:
665 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
666 | engines: {node: '>=8.0.0'}
667 | dev: true
668 |
669 | /atomically@2.0.3:
670 | resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==}
671 | dependencies:
672 | stubborn-fs: 1.2.5
673 | when-exit: 2.1.3
674 | dev: true
675 |
676 | /axios@1.7.8:
677 | resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==}
678 | dependencies:
679 | follow-redirects: 1.15.9
680 | form-data: 4.0.1
681 | proxy-from-env: 1.1.0
682 | transitivePeerDependencies:
683 | - debug
684 | dev: true
685 |
686 | /balanced-match@1.0.2:
687 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
688 | dev: true
689 |
690 | /base64-js@1.5.1:
691 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
692 | dev: true
693 |
694 | /big-integer@1.6.52:
695 | resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
696 | engines: {node: '>=0.6'}
697 | dev: true
698 |
699 | /bluebird@3.7.2:
700 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
701 | dev: true
702 |
703 | /boolbase@1.0.0:
704 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
705 | dev: true
706 |
707 | /boxen@8.0.1:
708 | resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
709 | engines: {node: '>=18'}
710 | dependencies:
711 | ansi-align: 3.0.1
712 | camelcase: 8.0.0
713 | chalk: 5.3.0
714 | cli-boxes: 3.0.0
715 | string-width: 7.2.0
716 | type-fest: 4.30.0
717 | widest-line: 5.0.0
718 | wrap-ansi: 9.0.0
719 | dev: true
720 |
721 | /bplist-parser@0.2.0:
722 | resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
723 | engines: {node: '>= 5.10.0'}
724 | dependencies:
725 | big-integer: 1.6.52
726 | dev: true
727 |
728 | /brace-expansion@1.1.11:
729 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
730 | dependencies:
731 | balanced-match: 1.0.2
732 | concat-map: 0.0.1
733 | dev: true
734 |
735 | /buffer-crc32@0.2.13:
736 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
737 | dev: true
738 |
739 | /buffer-from@1.1.2:
740 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
741 | dev: true
742 |
743 | /buffer@6.0.3:
744 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
745 | dependencies:
746 | base64-js: 1.5.1
747 | ieee754: 1.2.1
748 | dev: true
749 |
750 | /bundle-name@3.0.0:
751 | resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
752 | engines: {node: '>=12'}
753 | dependencies:
754 | run-applescript: 5.0.0
755 | dev: true
756 |
757 | /callsites@3.1.0:
758 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
759 | engines: {node: '>=6'}
760 | dev: true
761 |
762 | /camelcase@8.0.0:
763 | resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
764 | engines: {node: '>=16'}
765 | dev: true
766 |
767 | /chalk@2.4.2:
768 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
769 | engines: {node: '>=4'}
770 | dependencies:
771 | ansi-styles: 3.2.1
772 | escape-string-regexp: 1.0.5
773 | supports-color: 5.5.0
774 | dev: true
775 |
776 | /chalk@4.1.2:
777 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
778 | engines: {node: '>=10'}
779 | dependencies:
780 | ansi-styles: 4.3.0
781 | supports-color: 7.2.0
782 | dev: true
783 |
784 | /chalk@5.3.0:
785 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
786 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
787 | dev: true
788 |
789 | /cheerio-select@2.1.0:
790 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
791 | dependencies:
792 | boolbase: 1.0.0
793 | css-select: 5.1.0
794 | css-what: 6.1.0
795 | domelementtype: 2.3.0
796 | domhandler: 5.0.3
797 | domutils: 3.1.0
798 | dev: true
799 |
800 | /cheerio@1.0.0-rc.12:
801 | resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==}
802 | engines: {node: '>= 6'}
803 | dependencies:
804 | cheerio-select: 2.1.0
805 | dom-serializer: 2.0.0
806 | domhandler: 5.0.3
807 | domutils: 3.1.0
808 | htmlparser2: 8.0.2
809 | parse5: 7.2.1
810 | parse5-htmlparser2-tree-adapter: 7.1.0
811 | dev: true
812 |
813 | /chrome-launcher@1.1.2:
814 | resolution: {integrity: sha512-YclTJey34KUm5jB1aEJCq807bSievi7Nb/TU4Gu504fUYi3jw3KCIaH6L7nFWQhdEgH3V+wCh+kKD1P5cXnfxw==}
815 | engines: {node: '>=12.13.0'}
816 | hasBin: true
817 | dependencies:
818 | '@types/node': 22.10.1
819 | escape-string-regexp: 4.0.0
820 | is-wsl: 2.2.0
821 | lighthouse-logger: 2.0.1
822 | transitivePeerDependencies:
823 | - supports-color
824 | dev: true
825 |
826 | /cli-boxes@3.0.0:
827 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
828 | engines: {node: '>=10'}
829 | dev: true
830 |
831 | /cliui@8.0.1:
832 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
833 | engines: {node: '>=12'}
834 | dependencies:
835 | string-width: 4.2.3
836 | strip-ansi: 6.0.1
837 | wrap-ansi: 7.0.0
838 | dev: true
839 |
840 | /clone@1.0.4:
841 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
842 | engines: {node: '>=0.8'}
843 | dev: true
844 |
845 | /color-convert@1.9.3:
846 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
847 | dependencies:
848 | color-name: 1.1.3
849 | dev: true
850 |
851 | /color-convert@2.0.1:
852 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
853 | engines: {node: '>=7.0.0'}
854 | dependencies:
855 | color-name: 1.1.4
856 | dev: true
857 |
858 | /color-name@1.1.3:
859 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
860 | dev: true
861 |
862 | /color-name@1.1.4:
863 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
864 | dev: true
865 |
866 | /columnify@1.6.0:
867 | resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
868 | engines: {node: '>=8.0.0'}
869 | dependencies:
870 | strip-ansi: 6.0.1
871 | wcwidth: 1.0.1
872 | dev: true
873 |
874 | /combined-stream@1.0.8:
875 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
876 | engines: {node: '>= 0.8'}
877 | dependencies:
878 | delayed-stream: 1.0.0
879 | dev: true
880 |
881 | /commander@2.20.3:
882 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
883 | dev: true
884 |
885 | /commander@2.9.0:
886 | resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==}
887 | engines: {node: '>= 0.6.x'}
888 | dependencies:
889 | graceful-readlink: 1.0.1
890 | dev: true
891 |
892 | /commander@9.5.0:
893 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
894 | engines: {node: ^12.20.0 || >=14}
895 | dev: true
896 |
897 | /common-tags@1.8.2:
898 | resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
899 | engines: {node: '>=4.0.0'}
900 | dev: true
901 |
902 | /concat-map@0.0.1:
903 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
904 | dev: true
905 |
906 | /concat-stream@1.6.2:
907 | resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
908 | engines: {'0': node >= 0.8}
909 | dependencies:
910 | buffer-from: 1.1.2
911 | inherits: 2.0.4
912 | readable-stream: 2.3.8
913 | typedarray: 0.0.6
914 | dev: true
915 |
916 | /concurrently@9.1.0:
917 | resolution: {integrity: sha512-VxkzwMAn4LP7WyMnJNbHN5mKV9L2IbyDjpzemKr99sXNR3GqRNMMHdm7prV1ws9wg7ETj6WUkNOigZVsptwbgg==}
918 | engines: {node: '>=18'}
919 | hasBin: true
920 | dependencies:
921 | chalk: 4.1.2
922 | lodash: 4.17.21
923 | rxjs: 7.8.1
924 | shell-quote: 1.8.2
925 | supports-color: 8.1.1
926 | tree-kill: 1.2.2
927 | yargs: 17.7.2
928 | dev: true
929 |
930 | /config-chain@1.1.13:
931 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
932 | dependencies:
933 | ini: 1.3.8
934 | proto-list: 1.2.4
935 | dev: true
936 |
937 | /configstore@7.0.0:
938 | resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==}
939 | engines: {node: '>=18'}
940 | dependencies:
941 | atomically: 2.0.3
942 | dot-prop: 9.0.0
943 | graceful-fs: 4.2.11
944 | xdg-basedir: 5.1.0
945 | dev: true
946 |
947 | /core-util-is@1.0.3:
948 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
949 | dev: true
950 |
951 | /cross-spawn@7.0.6:
952 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
953 | engines: {node: '>= 8'}
954 | dependencies:
955 | path-key: 3.1.1
956 | shebang-command: 2.0.0
957 | which: 2.0.2
958 | dev: true
959 |
960 | /css-select@5.1.0:
961 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
962 | dependencies:
963 | boolbase: 1.0.0
964 | css-what: 6.1.0
965 | domhandler: 5.0.3
966 | domutils: 3.1.0
967 | nth-check: 2.1.1
968 | dev: true
969 |
970 | /css-what@6.1.0:
971 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
972 | engines: {node: '>= 6'}
973 | dev: true
974 |
975 | /debounce@1.2.1:
976 | resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
977 | dev: true
978 |
979 | /debug@2.6.9:
980 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
981 | peerDependencies:
982 | supports-color: '*'
983 | peerDependenciesMeta:
984 | supports-color:
985 | optional: true
986 | dependencies:
987 | ms: 2.0.0
988 | dev: true
989 |
990 | /debug@4.3.7:
991 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
992 | engines: {node: '>=6.0'}
993 | peerDependencies:
994 | supports-color: '*'
995 | peerDependenciesMeta:
996 | supports-color:
997 | optional: true
998 | dependencies:
999 | ms: 2.1.3
1000 | dev: true
1001 |
1002 | /decamelize@6.0.0:
1003 | resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==}
1004 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1005 | dev: true
1006 |
1007 | /deep-extend@0.6.0:
1008 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
1009 | engines: {node: '>=4.0.0'}
1010 | dev: true
1011 |
1012 | /deep-is@0.1.4:
1013 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1014 | dev: true
1015 |
1016 | /deepmerge@4.3.1:
1017 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
1018 | engines: {node: '>=0.10.0'}
1019 | dev: true
1020 |
1021 | /default-browser-id@3.0.0:
1022 | resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
1023 | engines: {node: '>=12'}
1024 | dependencies:
1025 | bplist-parser: 0.2.0
1026 | untildify: 4.0.0
1027 | dev: true
1028 |
1029 | /default-browser@4.0.0:
1030 | resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
1031 | engines: {node: '>=14.16'}
1032 | dependencies:
1033 | bundle-name: 3.0.0
1034 | default-browser-id: 3.0.0
1035 | execa: 7.2.0
1036 | titleize: 3.0.0
1037 | dev: true
1038 |
1039 | /defaults@1.0.4:
1040 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
1041 | dependencies:
1042 | clone: 1.0.4
1043 | dev: true
1044 |
1045 | /define-lazy-prop@3.0.0:
1046 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
1047 | engines: {node: '>=12'}
1048 | dev: true
1049 |
1050 | /delayed-stream@1.0.0:
1051 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
1052 | engines: {node: '>=0.4.0'}
1053 | dev: true
1054 |
1055 | /doctrine@3.0.0:
1056 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1057 | engines: {node: '>=6.0.0'}
1058 | dependencies:
1059 | esutils: 2.0.3
1060 | dev: true
1061 |
1062 | /dom-serializer@2.0.0:
1063 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
1064 | dependencies:
1065 | domelementtype: 2.3.0
1066 | domhandler: 5.0.3
1067 | entities: 4.5.0
1068 | dev: true
1069 |
1070 | /domelementtype@2.3.0:
1071 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
1072 | dev: true
1073 |
1074 | /domhandler@5.0.3:
1075 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
1076 | engines: {node: '>= 4'}
1077 | dependencies:
1078 | domelementtype: 2.3.0
1079 | dev: true
1080 |
1081 | /domutils@3.1.0:
1082 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
1083 | dependencies:
1084 | dom-serializer: 2.0.0
1085 | domelementtype: 2.3.0
1086 | domhandler: 5.0.3
1087 | dev: true
1088 |
1089 | /dot-prop@9.0.0:
1090 | resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==}
1091 | engines: {node: '>=18'}
1092 | dependencies:
1093 | type-fest: 4.30.0
1094 | dev: true
1095 |
1096 | /emoji-regex@10.4.0:
1097 | resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
1098 | dev: true
1099 |
1100 | /emoji-regex@8.0.0:
1101 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1102 | dev: true
1103 |
1104 | /end-of-stream@1.4.4:
1105 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
1106 | dependencies:
1107 | once: 1.4.0
1108 | dev: true
1109 |
1110 | /entities@4.5.0:
1111 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
1112 | engines: {node: '>=0.12'}
1113 | dev: true
1114 |
1115 | /error-ex@1.3.2:
1116 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1117 | dependencies:
1118 | is-arrayish: 0.2.1
1119 | dev: true
1120 |
1121 | /es6-error@4.1.1:
1122 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
1123 | dev: true
1124 |
1125 | /esbuild@0.24.0:
1126 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
1127 | engines: {node: '>=18'}
1128 | hasBin: true
1129 | requiresBuild: true
1130 | optionalDependencies:
1131 | '@esbuild/aix-ppc64': 0.24.0
1132 | '@esbuild/android-arm': 0.24.0
1133 | '@esbuild/android-arm64': 0.24.0
1134 | '@esbuild/android-x64': 0.24.0
1135 | '@esbuild/darwin-arm64': 0.24.0
1136 | '@esbuild/darwin-x64': 0.24.0
1137 | '@esbuild/freebsd-arm64': 0.24.0
1138 | '@esbuild/freebsd-x64': 0.24.0
1139 | '@esbuild/linux-arm': 0.24.0
1140 | '@esbuild/linux-arm64': 0.24.0
1141 | '@esbuild/linux-ia32': 0.24.0
1142 | '@esbuild/linux-loong64': 0.24.0
1143 | '@esbuild/linux-mips64el': 0.24.0
1144 | '@esbuild/linux-ppc64': 0.24.0
1145 | '@esbuild/linux-riscv64': 0.24.0
1146 | '@esbuild/linux-s390x': 0.24.0
1147 | '@esbuild/linux-x64': 0.24.0
1148 | '@esbuild/netbsd-x64': 0.24.0
1149 | '@esbuild/openbsd-arm64': 0.24.0
1150 | '@esbuild/openbsd-x64': 0.24.0
1151 | '@esbuild/sunos-x64': 0.24.0
1152 | '@esbuild/win32-arm64': 0.24.0
1153 | '@esbuild/win32-ia32': 0.24.0
1154 | '@esbuild/win32-x64': 0.24.0
1155 | dev: true
1156 |
1157 | /escalade@3.2.0:
1158 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
1159 | engines: {node: '>=6'}
1160 | dev: true
1161 |
1162 | /escape-goat@4.0.0:
1163 | resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
1164 | engines: {node: '>=12'}
1165 | dev: true
1166 |
1167 | /escape-string-regexp@1.0.5:
1168 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1169 | engines: {node: '>=0.8.0'}
1170 | dev: true
1171 |
1172 | /escape-string-regexp@4.0.0:
1173 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1174 | engines: {node: '>=10'}
1175 | dev: true
1176 |
1177 | /eslint-config-prettier@9.1.0(eslint@8.57.1):
1178 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
1179 | hasBin: true
1180 | peerDependencies:
1181 | eslint: '>=7.0.0'
1182 | dependencies:
1183 | eslint: 8.57.1
1184 | dev: true
1185 |
1186 | /eslint-plugin-no-unsanitized@4.0.2(eslint@8.57.1):
1187 | resolution: {integrity: sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==}
1188 | peerDependencies:
1189 | eslint: ^6 || ^7 || ^8
1190 | dependencies:
1191 | eslint: 8.57.1
1192 | dev: true
1193 |
1194 | /eslint-scope@7.2.2:
1195 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1196 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1197 | dependencies:
1198 | esrecurse: 4.3.0
1199 | estraverse: 5.3.0
1200 | dev: true
1201 |
1202 | /eslint-visitor-keys@3.4.3:
1203 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1204 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1205 | dev: true
1206 |
1207 | /eslint-visitor-keys@4.0.0:
1208 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
1209 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1210 | dev: true
1211 |
1212 | /eslint@8.57.1:
1213 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
1214 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1215 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
1216 | hasBin: true
1217 | dependencies:
1218 | '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
1219 | '@eslint-community/regexpp': 4.12.1
1220 | '@eslint/eslintrc': 2.1.4
1221 | '@eslint/js': 8.57.1
1222 | '@humanwhocodes/config-array': 0.13.0
1223 | '@humanwhocodes/module-importer': 1.0.1
1224 | '@nodelib/fs.walk': 1.2.8
1225 | '@ungap/structured-clone': 1.2.0
1226 | ajv: 6.12.6
1227 | chalk: 4.1.2
1228 | cross-spawn: 7.0.6
1229 | debug: 4.3.7
1230 | doctrine: 3.0.0
1231 | escape-string-regexp: 4.0.0
1232 | eslint-scope: 7.2.2
1233 | eslint-visitor-keys: 3.4.3
1234 | espree: 9.6.1
1235 | esquery: 1.6.0
1236 | esutils: 2.0.3
1237 | fast-deep-equal: 3.1.3
1238 | file-entry-cache: 6.0.1
1239 | find-up: 5.0.0
1240 | glob-parent: 6.0.2
1241 | globals: 13.24.0
1242 | graphemer: 1.4.0
1243 | ignore: 5.3.2
1244 | imurmurhash: 0.1.4
1245 | is-glob: 4.0.3
1246 | is-path-inside: 3.0.3
1247 | js-yaml: 4.1.0
1248 | json-stable-stringify-without-jsonify: 1.0.1
1249 | levn: 0.4.1
1250 | lodash.merge: 4.6.2
1251 | minimatch: 3.1.2
1252 | natural-compare: 1.4.0
1253 | optionator: 0.9.4
1254 | strip-ansi: 6.0.1
1255 | text-table: 0.2.0
1256 | transitivePeerDependencies:
1257 | - supports-color
1258 | dev: true
1259 |
1260 | /espree@10.1.0:
1261 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
1262 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1263 | dependencies:
1264 | acorn: 8.14.0
1265 | acorn-jsx: 5.3.2(acorn@8.14.0)
1266 | eslint-visitor-keys: 4.0.0
1267 | dev: true
1268 |
1269 | /espree@9.6.1:
1270 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1271 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1272 | dependencies:
1273 | acorn: 8.14.0
1274 | acorn-jsx: 5.3.2(acorn@8.14.0)
1275 | eslint-visitor-keys: 3.4.3
1276 | dev: true
1277 |
1278 | /esprima@4.0.1:
1279 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1280 | engines: {node: '>=4'}
1281 | hasBin: true
1282 | dev: true
1283 |
1284 | /esquery@1.6.0:
1285 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
1286 | engines: {node: '>=0.10'}
1287 | dependencies:
1288 | estraverse: 5.3.0
1289 | dev: true
1290 |
1291 | /esrecurse@4.3.0:
1292 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1293 | engines: {node: '>=4.0'}
1294 | dependencies:
1295 | estraverse: 5.3.0
1296 | dev: true
1297 |
1298 | /estraverse@5.3.0:
1299 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1300 | engines: {node: '>=4.0'}
1301 | dev: true
1302 |
1303 | /esutils@2.0.3:
1304 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1305 | engines: {node: '>=0.10.0'}
1306 | dev: true
1307 |
1308 | /event-target-shim@5.0.1:
1309 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
1310 | engines: {node: '>=6'}
1311 | dev: true
1312 |
1313 | /events@3.3.0:
1314 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
1315 | engines: {node: '>=0.8.x'}
1316 | dev: true
1317 |
1318 | /execa@4.1.0:
1319 | resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==}
1320 | engines: {node: '>=10'}
1321 | dependencies:
1322 | cross-spawn: 7.0.6
1323 | get-stream: 5.2.0
1324 | human-signals: 1.1.1
1325 | is-stream: 2.0.1
1326 | merge-stream: 2.0.0
1327 | npm-run-path: 4.0.1
1328 | onetime: 5.1.2
1329 | signal-exit: 3.0.7
1330 | strip-final-newline: 2.0.0
1331 | dev: true
1332 |
1333 | /execa@5.1.1:
1334 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1335 | engines: {node: '>=10'}
1336 | dependencies:
1337 | cross-spawn: 7.0.6
1338 | get-stream: 6.0.1
1339 | human-signals: 2.1.0
1340 | is-stream: 2.0.1
1341 | merge-stream: 2.0.0
1342 | npm-run-path: 4.0.1
1343 | onetime: 5.1.2
1344 | signal-exit: 3.0.7
1345 | strip-final-newline: 2.0.0
1346 | dev: true
1347 |
1348 | /execa@7.2.0:
1349 | resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
1350 | engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
1351 | dependencies:
1352 | cross-spawn: 7.0.6
1353 | get-stream: 6.0.1
1354 | human-signals: 4.3.1
1355 | is-stream: 3.0.0
1356 | merge-stream: 2.0.0
1357 | npm-run-path: 5.3.0
1358 | onetime: 6.0.0
1359 | signal-exit: 3.0.7
1360 | strip-final-newline: 3.0.0
1361 | dev: true
1362 |
1363 | /fast-deep-equal@3.1.3:
1364 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1365 | dev: true
1366 |
1367 | /fast-json-patch@3.1.1:
1368 | resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==}
1369 | dev: true
1370 |
1371 | /fast-json-stable-stringify@2.1.0:
1372 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1373 | dev: true
1374 |
1375 | /fast-levenshtein@2.0.6:
1376 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1377 | dev: true
1378 |
1379 | /fast-redact@3.5.0:
1380 | resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
1381 | engines: {node: '>=6'}
1382 | dev: true
1383 |
1384 | /fast-uri@3.0.3:
1385 | resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==}
1386 | dev: true
1387 |
1388 | /fastq@1.17.1:
1389 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
1390 | dependencies:
1391 | reusify: 1.0.4
1392 | dev: true
1393 |
1394 | /fd-slicer@1.1.0:
1395 | resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
1396 | dependencies:
1397 | pend: 1.2.0
1398 | dev: true
1399 |
1400 | /file-entry-cache@6.0.1:
1401 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1402 | engines: {node: ^10.12.0 || >=12.0.0}
1403 | dependencies:
1404 | flat-cache: 3.2.0
1405 | dev: true
1406 |
1407 | /find-up@5.0.0:
1408 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1409 | engines: {node: '>=10'}
1410 | dependencies:
1411 | locate-path: 6.0.0
1412 | path-exists: 4.0.0
1413 | dev: true
1414 |
1415 | /firefox-profile@4.7.0:
1416 | resolution: {integrity: sha512-aGApEu5bfCNbA4PGUZiRJAIU6jKmghV2UVdklXAofnNtiDjqYw0czLS46W7IfFqVKgKhFB8Ao2YoNGHY4BoIMQ==}
1417 | engines: {node: '>=18'}
1418 | hasBin: true
1419 | dependencies:
1420 | adm-zip: 0.5.16
1421 | fs-extra: 11.2.0
1422 | ini: 4.1.3
1423 | minimist: 1.2.8
1424 | xml2js: 0.6.2
1425 | dev: true
1426 |
1427 | /first-chunk-stream@3.0.0:
1428 | resolution: {integrity: sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==}
1429 | engines: {node: '>=8'}
1430 | dev: true
1431 |
1432 | /flat-cache@3.2.0:
1433 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1434 | engines: {node: ^10.12.0 || >=12.0.0}
1435 | dependencies:
1436 | flatted: 3.3.2
1437 | keyv: 4.5.4
1438 | rimraf: 3.0.2
1439 | dev: true
1440 |
1441 | /flatted@3.3.2:
1442 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
1443 | dev: true
1444 |
1445 | /follow-redirects@1.15.9:
1446 | resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
1447 | engines: {node: '>=4.0'}
1448 | peerDependencies:
1449 | debug: '*'
1450 | peerDependenciesMeta:
1451 | debug:
1452 | optional: true
1453 | dev: true
1454 |
1455 | /form-data@4.0.1:
1456 | resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
1457 | engines: {node: '>= 6'}
1458 | dependencies:
1459 | asynckit: 0.4.0
1460 | combined-stream: 1.0.8
1461 | mime-types: 2.1.35
1462 | dev: true
1463 |
1464 | /fs-extra@11.2.0:
1465 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
1466 | engines: {node: '>=14.14'}
1467 | dependencies:
1468 | graceful-fs: 4.2.11
1469 | jsonfile: 6.1.0
1470 | universalify: 2.0.1
1471 | dev: true
1472 |
1473 | /fs.realpath@1.0.0:
1474 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1475 | dev: true
1476 |
1477 | /fx-runner@1.4.0:
1478 | resolution: {integrity: sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg==}
1479 | hasBin: true
1480 | dependencies:
1481 | commander: 2.9.0
1482 | shell-quote: 1.7.3
1483 | spawn-sync: 1.0.15
1484 | when: 3.7.7
1485 | which: 1.2.4
1486 | winreg: 0.0.12
1487 | dev: true
1488 |
1489 | /get-caller-file@2.0.5:
1490 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
1491 | engines: {node: 6.* || 8.* || >= 10.*}
1492 | dev: true
1493 |
1494 | /get-east-asian-width@1.3.0:
1495 | resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==}
1496 | engines: {node: '>=18'}
1497 | dev: true
1498 |
1499 | /get-stream@5.2.0:
1500 | resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
1501 | engines: {node: '>=8'}
1502 | dependencies:
1503 | pump: 3.0.2
1504 | dev: true
1505 |
1506 | /get-stream@6.0.1:
1507 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1508 | engines: {node: '>=10'}
1509 | dev: true
1510 |
1511 | /glob-parent@6.0.2:
1512 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1513 | engines: {node: '>=10.13.0'}
1514 | dependencies:
1515 | is-glob: 4.0.3
1516 | dev: true
1517 |
1518 | /glob-to-regexp@0.4.1:
1519 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
1520 | dev: true
1521 |
1522 | /glob@7.2.3:
1523 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1524 | deprecated: Glob versions prior to v9 are no longer supported
1525 | dependencies:
1526 | fs.realpath: 1.0.0
1527 | inflight: 1.0.6
1528 | inherits: 2.0.4
1529 | minimatch: 3.1.2
1530 | once: 1.4.0
1531 | path-is-absolute: 1.0.1
1532 | dev: true
1533 |
1534 | /global-directory@4.0.1:
1535 | resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
1536 | engines: {node: '>=18'}
1537 | dependencies:
1538 | ini: 4.1.1
1539 | dev: true
1540 |
1541 | /globals@13.24.0:
1542 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1543 | engines: {node: '>=8'}
1544 | dependencies:
1545 | type-fest: 0.20.2
1546 | dev: true
1547 |
1548 | /graceful-fs@4.2.10:
1549 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
1550 | dev: true
1551 |
1552 | /graceful-fs@4.2.11:
1553 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1554 | dev: true
1555 |
1556 | /graceful-readlink@1.0.1:
1557 | resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==}
1558 | dev: true
1559 |
1560 | /graphemer@1.4.0:
1561 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1562 | dev: true
1563 |
1564 | /growly@1.3.0:
1565 | resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==}
1566 | dev: true
1567 |
1568 | /has-flag@3.0.0:
1569 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1570 | engines: {node: '>=4'}
1571 | dev: true
1572 |
1573 | /has-flag@4.0.0:
1574 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1575 | engines: {node: '>=8'}
1576 | dev: true
1577 |
1578 | /htmlparser2@8.0.2:
1579 | resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
1580 | dependencies:
1581 | domelementtype: 2.3.0
1582 | domhandler: 5.0.3
1583 | domutils: 3.1.0
1584 | entities: 4.5.0
1585 | dev: true
1586 |
1587 | /https-proxy-agent@7.0.5:
1588 | resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
1589 | engines: {node: '>= 14'}
1590 | dependencies:
1591 | agent-base: 7.1.1
1592 | debug: 4.3.7
1593 | transitivePeerDependencies:
1594 | - supports-color
1595 | dev: true
1596 |
1597 | /human-signals@1.1.1:
1598 | resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
1599 | engines: {node: '>=8.12.0'}
1600 | dev: true
1601 |
1602 | /human-signals@2.1.0:
1603 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1604 | engines: {node: '>=10.17.0'}
1605 | dev: true
1606 |
1607 | /human-signals@4.3.1:
1608 | resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
1609 | engines: {node: '>=14.18.0'}
1610 | dev: true
1611 |
1612 | /ieee754@1.2.1:
1613 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
1614 | dev: true
1615 |
1616 | /ignore@5.3.2:
1617 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1618 | engines: {node: '>= 4'}
1619 | dev: true
1620 |
1621 | /image-size@1.1.1:
1622 | resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==}
1623 | engines: {node: '>=16.x'}
1624 | hasBin: true
1625 | dependencies:
1626 | queue: 6.0.2
1627 | dev: true
1628 |
1629 | /immediate@3.0.6:
1630 | resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
1631 | dev: true
1632 |
1633 | /import-fresh@3.3.0:
1634 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1635 | engines: {node: '>=6'}
1636 | dependencies:
1637 | parent-module: 1.0.1
1638 | resolve-from: 4.0.0
1639 | dev: true
1640 |
1641 | /imurmurhash@0.1.4:
1642 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1643 | engines: {node: '>=0.8.19'}
1644 | dev: true
1645 |
1646 | /inflight@1.0.6:
1647 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1648 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
1649 | dependencies:
1650 | once: 1.4.0
1651 | wrappy: 1.0.2
1652 | dev: true
1653 |
1654 | /inherits@2.0.4:
1655 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1656 | dev: true
1657 |
1658 | /ini@1.3.8:
1659 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
1660 | dev: true
1661 |
1662 | /ini@4.1.1:
1663 | resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
1664 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1665 | dev: true
1666 |
1667 | /ini@4.1.3:
1668 | resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==}
1669 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1670 | dev: true
1671 |
1672 | /invert-kv@3.0.1:
1673 | resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==}
1674 | engines: {node: '>=8'}
1675 | dev: true
1676 |
1677 | /is-absolute@0.1.7:
1678 | resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==}
1679 | engines: {node: '>=0.10.0'}
1680 | dependencies:
1681 | is-relative: 0.1.3
1682 | dev: true
1683 |
1684 | /is-arrayish@0.2.1:
1685 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1686 | dev: true
1687 |
1688 | /is-docker@2.2.1:
1689 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
1690 | engines: {node: '>=8'}
1691 | hasBin: true
1692 | dev: true
1693 |
1694 | /is-docker@3.0.0:
1695 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
1696 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1697 | hasBin: true
1698 | dev: true
1699 |
1700 | /is-extglob@2.1.1:
1701 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1702 | engines: {node: '>=0.10.0'}
1703 | dev: true
1704 |
1705 | /is-fullwidth-code-point@3.0.0:
1706 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1707 | engines: {node: '>=8'}
1708 | dev: true
1709 |
1710 | /is-glob@4.0.3:
1711 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1712 | engines: {node: '>=0.10.0'}
1713 | dependencies:
1714 | is-extglob: 2.1.1
1715 | dev: true
1716 |
1717 | /is-in-ci@1.0.0:
1718 | resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==}
1719 | engines: {node: '>=18'}
1720 | hasBin: true
1721 | dev: true
1722 |
1723 | /is-inside-container@1.0.0:
1724 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
1725 | engines: {node: '>=14.16'}
1726 | hasBin: true
1727 | dependencies:
1728 | is-docker: 3.0.0
1729 | dev: true
1730 |
1731 | /is-installed-globally@1.0.0:
1732 | resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==}
1733 | engines: {node: '>=18'}
1734 | dependencies:
1735 | global-directory: 4.0.1
1736 | is-path-inside: 4.0.0
1737 | dev: true
1738 |
1739 | /is-npm@6.0.0:
1740 | resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==}
1741 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1742 | dev: true
1743 |
1744 | /is-path-inside@3.0.3:
1745 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1746 | engines: {node: '>=8'}
1747 | dev: true
1748 |
1749 | /is-path-inside@4.0.0:
1750 | resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
1751 | engines: {node: '>=12'}
1752 | dev: true
1753 |
1754 | /is-relative@0.1.3:
1755 | resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==}
1756 | engines: {node: '>=0.10.0'}
1757 | dev: true
1758 |
1759 | /is-stream@2.0.1:
1760 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1761 | engines: {node: '>=8'}
1762 | dev: true
1763 |
1764 | /is-stream@3.0.0:
1765 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1766 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1767 | dev: true
1768 |
1769 | /is-utf8@0.2.1:
1770 | resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
1771 | dev: true
1772 |
1773 | /is-wsl@2.2.0:
1774 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
1775 | engines: {node: '>=8'}
1776 | dependencies:
1777 | is-docker: 2.2.1
1778 | dev: true
1779 |
1780 | /isarray@1.0.0:
1781 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
1782 | dev: true
1783 |
1784 | /isexe@1.1.2:
1785 | resolution: {integrity: sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==}
1786 | dev: true
1787 |
1788 | /isexe@2.0.0:
1789 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1790 | dev: true
1791 |
1792 | /jed@1.1.1:
1793 | resolution: {integrity: sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==}
1794 | dev: true
1795 |
1796 | /joi@17.13.3:
1797 | resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
1798 | dependencies:
1799 | '@hapi/hoek': 9.3.0
1800 | '@hapi/topo': 5.1.0
1801 | '@sideway/address': 4.1.5
1802 | '@sideway/formula': 3.0.1
1803 | '@sideway/pinpoint': 2.0.0
1804 | dev: true
1805 |
1806 | /jose@5.9.2:
1807 | resolution: {integrity: sha512-ILI2xx/I57b20sd7rHZvgiiQrmp2mcotwsAH+5ajbpFQbrYVQdNHYlQhoA5cFb78CgtBOxtC05TeA+mcgkuCqQ==}
1808 | dev: true
1809 |
1810 | /js-tokens@4.0.0:
1811 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1812 | dev: true
1813 |
1814 | /js-yaml@4.1.0:
1815 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1816 | hasBin: true
1817 | dependencies:
1818 | argparse: 2.0.1
1819 | dev: true
1820 |
1821 | /json-buffer@3.0.1:
1822 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1823 | dev: true
1824 |
1825 | /json-merge-patch@1.0.2:
1826 | resolution: {integrity: sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==}
1827 | dependencies:
1828 | fast-deep-equal: 3.1.3
1829 | dev: true
1830 |
1831 | /json-parse-even-better-errors@3.0.2:
1832 | resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
1833 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1834 | dev: true
1835 |
1836 | /json-schema-traverse@0.4.1:
1837 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1838 | dev: true
1839 |
1840 | /json-schema-traverse@1.0.0:
1841 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
1842 | dev: true
1843 |
1844 | /json-stable-stringify-without-jsonify@1.0.1:
1845 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1846 | dev: true
1847 |
1848 | /jsonfile@6.1.0:
1849 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1850 | dependencies:
1851 | universalify: 2.0.1
1852 | optionalDependencies:
1853 | graceful-fs: 4.2.11
1854 | dev: true
1855 |
1856 | /jszip@3.10.1:
1857 | resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
1858 | dependencies:
1859 | lie: 3.3.0
1860 | pako: 1.0.11
1861 | readable-stream: 2.3.8
1862 | setimmediate: 1.0.5
1863 | dev: true
1864 |
1865 | /keyv@4.5.4:
1866 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1867 | dependencies:
1868 | json-buffer: 3.0.1
1869 | dev: true
1870 |
1871 | /ky@1.7.2:
1872 | resolution: {integrity: sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==}
1873 | engines: {node: '>=18'}
1874 | dev: true
1875 |
1876 | /latest-version@9.0.0:
1877 | resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==}
1878 | engines: {node: '>=18'}
1879 | dependencies:
1880 | package-json: 10.0.1
1881 | dev: true
1882 |
1883 | /lcid@3.1.1:
1884 | resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==}
1885 | engines: {node: '>=8'}
1886 | dependencies:
1887 | invert-kv: 3.0.1
1888 | dev: true
1889 |
1890 | /levn@0.4.1:
1891 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1892 | engines: {node: '>= 0.8.0'}
1893 | dependencies:
1894 | prelude-ls: 1.2.1
1895 | type-check: 0.4.0
1896 | dev: true
1897 |
1898 | /lie@3.3.0:
1899 | resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
1900 | dependencies:
1901 | immediate: 3.0.6
1902 | dev: true
1903 |
1904 | /lighthouse-logger@2.0.1:
1905 | resolution: {integrity: sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==}
1906 | dependencies:
1907 | debug: 2.6.9
1908 | marky: 1.2.5
1909 | transitivePeerDependencies:
1910 | - supports-color
1911 | dev: true
1912 |
1913 | /lines-and-columns@2.0.4:
1914 | resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
1915 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1916 | dev: true
1917 |
1918 | /locate-path@6.0.0:
1919 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1920 | engines: {node: '>=10'}
1921 | dependencies:
1922 | p-locate: 5.0.0
1923 | dev: true
1924 |
1925 | /lodash.merge@4.6.2:
1926 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1927 | dev: true
1928 |
1929 | /lodash@4.17.21:
1930 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1931 | dev: true
1932 |
1933 | /make-error@1.3.6:
1934 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
1935 | dev: true
1936 |
1937 | /map-age-cleaner@0.1.3:
1938 | resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==}
1939 | engines: {node: '>=6'}
1940 | dependencies:
1941 | p-defer: 1.0.0
1942 | dev: true
1943 |
1944 | /marky@1.2.5:
1945 | resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
1946 | dev: true
1947 |
1948 | /mem@5.1.1:
1949 | resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==}
1950 | engines: {node: '>=8'}
1951 | dependencies:
1952 | map-age-cleaner: 0.1.3
1953 | mimic-fn: 2.1.0
1954 | p-is-promise: 2.1.0
1955 | dev: true
1956 |
1957 | /merge-stream@2.0.0:
1958 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1959 | dev: true
1960 |
1961 | /mime-db@1.52.0:
1962 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1963 | engines: {node: '>= 0.6'}
1964 | dev: true
1965 |
1966 | /mime-types@2.1.35:
1967 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1968 | engines: {node: '>= 0.6'}
1969 | dependencies:
1970 | mime-db: 1.52.0
1971 | dev: true
1972 |
1973 | /mimic-fn@2.1.0:
1974 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1975 | engines: {node: '>=6'}
1976 | dev: true
1977 |
1978 | /mimic-fn@4.0.0:
1979 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1980 | engines: {node: '>=12'}
1981 | dev: true
1982 |
1983 | /minimatch@3.1.2:
1984 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1985 | dependencies:
1986 | brace-expansion: 1.1.11
1987 | dev: true
1988 |
1989 | /minimist@1.2.8:
1990 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1991 | dev: true
1992 |
1993 | /ms@2.0.0:
1994 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
1995 | dev: true
1996 |
1997 | /ms@2.1.3:
1998 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1999 | dev: true
2000 |
2001 | /multimatch@6.0.0:
2002 | resolution: {integrity: sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==}
2003 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2004 | dependencies:
2005 | '@types/minimatch': 3.0.5
2006 | array-differ: 4.0.0
2007 | array-union: 3.0.1
2008 | minimatch: 3.1.2
2009 | dev: true
2010 |
2011 | /natural-compare@1.4.0:
2012 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
2013 | dev: true
2014 |
2015 | /node-forge@1.3.1:
2016 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
2017 | engines: {node: '>= 6.13.0'}
2018 | dev: true
2019 |
2020 | /node-notifier@10.0.1:
2021 | resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==}
2022 | dependencies:
2023 | growly: 1.3.0
2024 | is-wsl: 2.2.0
2025 | semver: 7.6.3
2026 | shellwords: 0.1.1
2027 | uuid: 8.3.2
2028 | which: 2.0.2
2029 | dev: true
2030 |
2031 | /npm-run-path@4.0.1:
2032 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
2033 | engines: {node: '>=8'}
2034 | dependencies:
2035 | path-key: 3.1.1
2036 | dev: true
2037 |
2038 | /npm-run-path@5.3.0:
2039 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
2040 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2041 | dependencies:
2042 | path-key: 4.0.0
2043 | dev: true
2044 |
2045 | /nth-check@2.1.1:
2046 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
2047 | dependencies:
2048 | boolbase: 1.0.0
2049 | dev: true
2050 |
2051 | /on-exit-leak-free@2.1.2:
2052 | resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
2053 | engines: {node: '>=14.0.0'}
2054 | dev: true
2055 |
2056 | /once@1.4.0:
2057 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2058 | dependencies:
2059 | wrappy: 1.0.2
2060 | dev: true
2061 |
2062 | /onetime@5.1.2:
2063 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
2064 | engines: {node: '>=6'}
2065 | dependencies:
2066 | mimic-fn: 2.1.0
2067 | dev: true
2068 |
2069 | /onetime@6.0.0:
2070 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
2071 | engines: {node: '>=12'}
2072 | dependencies:
2073 | mimic-fn: 4.0.0
2074 | dev: true
2075 |
2076 | /open@9.1.0:
2077 | resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
2078 | engines: {node: '>=14.16'}
2079 | dependencies:
2080 | default-browser: 4.0.0
2081 | define-lazy-prop: 3.0.0
2082 | is-inside-container: 1.0.0
2083 | is-wsl: 2.2.0
2084 | dev: true
2085 |
2086 | /opencc-js@1.0.5:
2087 | resolution: {integrity: sha512-LD+1SoNnZdlRwtYTjnQdFrSVCAaYpuDqL5CkmOaHOkKoKh7mFxUicLTRVNLU5C+Jmi1vXQ3QL4jWdgSaa4sKjg==}
2088 | dev: false
2089 |
2090 | /optionator@0.9.4:
2091 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
2092 | engines: {node: '>= 0.8.0'}
2093 | dependencies:
2094 | deep-is: 0.1.4
2095 | fast-levenshtein: 2.0.6
2096 | levn: 0.4.1
2097 | prelude-ls: 1.2.1
2098 | type-check: 0.4.0
2099 | word-wrap: 1.2.5
2100 | dev: true
2101 |
2102 | /os-locale@5.0.0:
2103 | resolution: {integrity: sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==}
2104 | engines: {node: '>=10'}
2105 | dependencies:
2106 | execa: 4.1.0
2107 | lcid: 3.1.1
2108 | mem: 5.1.1
2109 | dev: true
2110 |
2111 | /os-shim@0.1.3:
2112 | resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==}
2113 | engines: {node: '>= 0.4.0'}
2114 | dev: true
2115 |
2116 | /p-defer@1.0.0:
2117 | resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==}
2118 | engines: {node: '>=4'}
2119 | dev: true
2120 |
2121 | /p-is-promise@2.1.0:
2122 | resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==}
2123 | engines: {node: '>=6'}
2124 | dev: true
2125 |
2126 | /p-limit@3.1.0:
2127 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2128 | engines: {node: '>=10'}
2129 | dependencies:
2130 | yocto-queue: 0.1.0
2131 | dev: true
2132 |
2133 | /p-locate@5.0.0:
2134 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2135 | engines: {node: '>=10'}
2136 | dependencies:
2137 | p-limit: 3.1.0
2138 | dev: true
2139 |
2140 | /package-json@10.0.1:
2141 | resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==}
2142 | engines: {node: '>=18'}
2143 | dependencies:
2144 | ky: 1.7.2
2145 | registry-auth-token: 5.0.3
2146 | registry-url: 6.0.1
2147 | semver: 7.6.3
2148 | dev: true
2149 |
2150 | /pako@1.0.11:
2151 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
2152 | dev: true
2153 |
2154 | /parent-module@1.0.1:
2155 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2156 | engines: {node: '>=6'}
2157 | dependencies:
2158 | callsites: 3.1.0
2159 | dev: true
2160 |
2161 | /parse-json@7.1.1:
2162 | resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==}
2163 | engines: {node: '>=16'}
2164 | dependencies:
2165 | '@babel/code-frame': 7.26.2
2166 | error-ex: 1.3.2
2167 | json-parse-even-better-errors: 3.0.2
2168 | lines-and-columns: 2.0.4
2169 | type-fest: 3.13.1
2170 | dev: true
2171 |
2172 | /parse5-htmlparser2-tree-adapter@7.1.0:
2173 | resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==}
2174 | dependencies:
2175 | domhandler: 5.0.3
2176 | parse5: 7.2.1
2177 | dev: true
2178 |
2179 | /parse5@7.2.1:
2180 | resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
2181 | dependencies:
2182 | entities: 4.5.0
2183 | dev: true
2184 |
2185 | /path-exists@4.0.0:
2186 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2187 | engines: {node: '>=8'}
2188 | dev: true
2189 |
2190 | /path-is-absolute@1.0.1:
2191 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2192 | engines: {node: '>=0.10.0'}
2193 | dev: true
2194 |
2195 | /path-key@3.1.1:
2196 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2197 | engines: {node: '>=8'}
2198 | dev: true
2199 |
2200 | /path-key@4.0.0:
2201 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
2202 | engines: {node: '>=12'}
2203 | dev: true
2204 |
2205 | /pend@1.2.0:
2206 | resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
2207 | dev: true
2208 |
2209 | /picocolors@1.1.1:
2210 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
2211 | dev: true
2212 |
2213 | /pino-abstract-transport@1.2.0:
2214 | resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
2215 | dependencies:
2216 | readable-stream: 4.5.2
2217 | split2: 4.2.0
2218 | dev: true
2219 |
2220 | /pino-std-serializers@6.2.2:
2221 | resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
2222 | dev: true
2223 |
2224 | /pino-std-serializers@7.0.0:
2225 | resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
2226 | dev: true
2227 |
2228 | /pino@8.20.0:
2229 | resolution: {integrity: sha512-uhIfMj5TVp+WynVASaVEJFTncTUe4dHBq6CWplu/vBgvGHhvBvQfxz+vcOrnnBQdORH3izaGEurLfNlq3YxdFQ==}
2230 | hasBin: true
2231 | dependencies:
2232 | atomic-sleep: 1.0.0
2233 | fast-redact: 3.5.0
2234 | on-exit-leak-free: 2.1.2
2235 | pino-abstract-transport: 1.2.0
2236 | pino-std-serializers: 6.2.2
2237 | process-warning: 3.0.0
2238 | quick-format-unescaped: 4.0.4
2239 | real-require: 0.2.0
2240 | safe-stable-stringify: 2.5.0
2241 | sonic-boom: 3.8.1
2242 | thread-stream: 2.7.0
2243 | dev: true
2244 |
2245 | /pino@9.4.0:
2246 | resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==}
2247 | hasBin: true
2248 | dependencies:
2249 | atomic-sleep: 1.0.0
2250 | fast-redact: 3.5.0
2251 | on-exit-leak-free: 2.1.2
2252 | pino-abstract-transport: 1.2.0
2253 | pino-std-serializers: 7.0.0
2254 | process-warning: 4.0.0
2255 | quick-format-unescaped: 4.0.4
2256 | real-require: 0.2.0
2257 | safe-stable-stringify: 2.5.0
2258 | sonic-boom: 4.2.0
2259 | thread-stream: 3.1.0
2260 | dev: true
2261 |
2262 | /prelude-ls@1.2.1:
2263 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2264 | engines: {node: '>= 0.8.0'}
2265 | dev: true
2266 |
2267 | /prettier@3.4.1:
2268 | resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==}
2269 | engines: {node: '>=14'}
2270 | hasBin: true
2271 | dev: true
2272 |
2273 | /process-nextick-args@2.0.1:
2274 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
2275 | dev: true
2276 |
2277 | /process-warning@3.0.0:
2278 | resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
2279 | dev: true
2280 |
2281 | /process-warning@4.0.0:
2282 | resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==}
2283 | dev: true
2284 |
2285 | /process@0.11.10:
2286 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
2287 | engines: {node: '>= 0.6.0'}
2288 | dev: true
2289 |
2290 | /promise-toolbox@0.21.0:
2291 | resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==}
2292 | engines: {node: '>=6'}
2293 | dependencies:
2294 | make-error: 1.3.6
2295 | dev: true
2296 |
2297 | /proto-list@1.2.4:
2298 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
2299 | dev: true
2300 |
2301 | /proxy-from-env@1.1.0:
2302 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
2303 | dev: true
2304 |
2305 | /pump@3.0.2:
2306 | resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
2307 | dependencies:
2308 | end-of-stream: 1.4.4
2309 | once: 1.4.0
2310 | dev: true
2311 |
2312 | /punycode@2.3.1:
2313 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
2314 | engines: {node: '>=6'}
2315 | dev: true
2316 |
2317 | /pupa@3.1.0:
2318 | resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
2319 | engines: {node: '>=12.20'}
2320 | dependencies:
2321 | escape-goat: 4.0.0
2322 | dev: true
2323 |
2324 | /queue-microtask@1.2.3:
2325 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2326 | dev: true
2327 |
2328 | /queue@6.0.2:
2329 | resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
2330 | dependencies:
2331 | inherits: 2.0.4
2332 | dev: true
2333 |
2334 | /quick-format-unescaped@4.0.4:
2335 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
2336 | dev: true
2337 |
2338 | /rc@1.2.8:
2339 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
2340 | hasBin: true
2341 | dependencies:
2342 | deep-extend: 0.6.0
2343 | ini: 1.3.8
2344 | minimist: 1.2.8
2345 | strip-json-comments: 2.0.1
2346 | dev: true
2347 |
2348 | /readable-stream@2.3.8:
2349 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
2350 | dependencies:
2351 | core-util-is: 1.0.3
2352 | inherits: 2.0.4
2353 | isarray: 1.0.0
2354 | process-nextick-args: 2.0.1
2355 | safe-buffer: 5.1.2
2356 | string_decoder: 1.1.1
2357 | util-deprecate: 1.0.2
2358 | dev: true
2359 |
2360 | /readable-stream@4.5.2:
2361 | resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
2362 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2363 | dependencies:
2364 | abort-controller: 3.0.0
2365 | buffer: 6.0.3
2366 | events: 3.3.0
2367 | process: 0.11.10
2368 | string_decoder: 1.3.0
2369 | dev: true
2370 |
2371 | /real-require@0.2.0:
2372 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
2373 | engines: {node: '>= 12.13.0'}
2374 | dev: true
2375 |
2376 | /regenerator-runtime@0.14.1:
2377 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
2378 | dev: true
2379 |
2380 | /registry-auth-token@5.0.3:
2381 | resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==}
2382 | engines: {node: '>=14'}
2383 | dependencies:
2384 | '@pnpm/npm-conf': 2.3.1
2385 | dev: true
2386 |
2387 | /registry-url@6.0.1:
2388 | resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
2389 | engines: {node: '>=12'}
2390 | dependencies:
2391 | rc: 1.2.8
2392 | dev: true
2393 |
2394 | /relaxed-json@1.0.3:
2395 | resolution: {integrity: sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==}
2396 | engines: {node: '>= 0.10.0'}
2397 | hasBin: true
2398 | dependencies:
2399 | chalk: 2.4.2
2400 | commander: 2.20.3
2401 | dev: true
2402 |
2403 | /require-directory@2.1.1:
2404 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
2405 | engines: {node: '>=0.10.0'}
2406 | dev: true
2407 |
2408 | /require-from-string@2.0.2:
2409 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
2410 | engines: {node: '>=0.10.0'}
2411 | dev: true
2412 |
2413 | /resolve-from@4.0.0:
2414 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2415 | engines: {node: '>=4'}
2416 | dev: true
2417 |
2418 | /reusify@1.0.4:
2419 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2420 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2421 | dev: true
2422 |
2423 | /rimraf@3.0.2:
2424 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2425 | deprecated: Rimraf versions prior to v4 are no longer supported
2426 | hasBin: true
2427 | dependencies:
2428 | glob: 7.2.3
2429 | dev: true
2430 |
2431 | /run-applescript@5.0.0:
2432 | resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
2433 | engines: {node: '>=12'}
2434 | dependencies:
2435 | execa: 5.1.1
2436 | dev: true
2437 |
2438 | /run-parallel@1.2.0:
2439 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2440 | dependencies:
2441 | queue-microtask: 1.2.3
2442 | dev: true
2443 |
2444 | /rxjs@7.8.1:
2445 | resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
2446 | dependencies:
2447 | tslib: 2.8.1
2448 | dev: true
2449 |
2450 | /safe-buffer@5.1.2:
2451 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
2452 | dev: true
2453 |
2454 | /safe-buffer@5.2.1:
2455 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
2456 | dev: true
2457 |
2458 | /safe-stable-stringify@2.5.0:
2459 | resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
2460 | engines: {node: '>=10'}
2461 | dev: true
2462 |
2463 | /sax@1.4.1:
2464 | resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
2465 | dev: true
2466 |
2467 | /semver@7.6.3:
2468 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
2469 | engines: {node: '>=10'}
2470 | hasBin: true
2471 | dev: true
2472 |
2473 | /setimmediate@1.0.5:
2474 | resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
2475 | dev: true
2476 |
2477 | /shebang-command@2.0.0:
2478 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2479 | engines: {node: '>=8'}
2480 | dependencies:
2481 | shebang-regex: 3.0.0
2482 | dev: true
2483 |
2484 | /shebang-regex@3.0.0:
2485 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2486 | engines: {node: '>=8'}
2487 | dev: true
2488 |
2489 | /shell-quote@1.7.3:
2490 | resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==}
2491 | dev: true
2492 |
2493 | /shell-quote@1.8.2:
2494 | resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
2495 | engines: {node: '>= 0.4'}
2496 | dev: true
2497 |
2498 | /shellwords@0.1.1:
2499 | resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==}
2500 | dev: true
2501 |
2502 | /signal-exit@3.0.7:
2503 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2504 | dev: true
2505 |
2506 | /sonic-boom@3.8.1:
2507 | resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
2508 | dependencies:
2509 | atomic-sleep: 1.0.0
2510 | dev: true
2511 |
2512 | /sonic-boom@4.2.0:
2513 | resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
2514 | dependencies:
2515 | atomic-sleep: 1.0.0
2516 | dev: true
2517 |
2518 | /source-map-support@0.5.21:
2519 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
2520 | dependencies:
2521 | buffer-from: 1.1.2
2522 | source-map: 0.6.1
2523 | dev: true
2524 |
2525 | /source-map@0.6.1:
2526 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2527 | engines: {node: '>=0.10.0'}
2528 | dev: true
2529 |
2530 | /spawn-sync@1.0.15:
2531 | resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==}
2532 | requiresBuild: true
2533 | dependencies:
2534 | concat-stream: 1.6.2
2535 | os-shim: 0.1.3
2536 | dev: true
2537 |
2538 | /split2@4.2.0:
2539 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
2540 | engines: {node: '>= 10.x'}
2541 | dev: true
2542 |
2543 | /split@1.0.1:
2544 | resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==}
2545 | dependencies:
2546 | through: 2.3.8
2547 | dev: true
2548 |
2549 | /string-width@4.2.3:
2550 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2551 | engines: {node: '>=8'}
2552 | dependencies:
2553 | emoji-regex: 8.0.0
2554 | is-fullwidth-code-point: 3.0.0
2555 | strip-ansi: 6.0.1
2556 | dev: true
2557 |
2558 | /string-width@7.2.0:
2559 | resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
2560 | engines: {node: '>=18'}
2561 | dependencies:
2562 | emoji-regex: 10.4.0
2563 | get-east-asian-width: 1.3.0
2564 | strip-ansi: 7.1.0
2565 | dev: true
2566 |
2567 | /string_decoder@1.1.1:
2568 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
2569 | dependencies:
2570 | safe-buffer: 5.1.2
2571 | dev: true
2572 |
2573 | /string_decoder@1.3.0:
2574 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
2575 | dependencies:
2576 | safe-buffer: 5.2.1
2577 | dev: true
2578 |
2579 | /strip-ansi@6.0.1:
2580 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2581 | engines: {node: '>=8'}
2582 | dependencies:
2583 | ansi-regex: 5.0.1
2584 | dev: true
2585 |
2586 | /strip-ansi@7.1.0:
2587 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
2588 | engines: {node: '>=12'}
2589 | dependencies:
2590 | ansi-regex: 6.1.0
2591 | dev: true
2592 |
2593 | /strip-bom-buf@2.0.0:
2594 | resolution: {integrity: sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==}
2595 | engines: {node: '>=8'}
2596 | dependencies:
2597 | is-utf8: 0.2.1
2598 | dev: true
2599 |
2600 | /strip-bom-stream@4.0.0:
2601 | resolution: {integrity: sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==}
2602 | engines: {node: '>=8'}
2603 | dependencies:
2604 | first-chunk-stream: 3.0.0
2605 | strip-bom-buf: 2.0.0
2606 | dev: true
2607 |
2608 | /strip-bom@5.0.0:
2609 | resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==}
2610 | engines: {node: '>=12'}
2611 | dev: true
2612 |
2613 | /strip-final-newline@2.0.0:
2614 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
2615 | engines: {node: '>=6'}
2616 | dev: true
2617 |
2618 | /strip-final-newline@3.0.0:
2619 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
2620 | engines: {node: '>=12'}
2621 | dev: true
2622 |
2623 | /strip-json-comments@2.0.1:
2624 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
2625 | engines: {node: '>=0.10.0'}
2626 | dev: true
2627 |
2628 | /strip-json-comments@3.1.1:
2629 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2630 | engines: {node: '>=8'}
2631 | dev: true
2632 |
2633 | /strip-json-comments@5.0.1:
2634 | resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==}
2635 | engines: {node: '>=14.16'}
2636 | dev: true
2637 |
2638 | /stubborn-fs@1.2.5:
2639 | resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==}
2640 | dev: true
2641 |
2642 | /supports-color@5.5.0:
2643 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2644 | engines: {node: '>=4'}
2645 | dependencies:
2646 | has-flag: 3.0.0
2647 | dev: true
2648 |
2649 | /supports-color@7.2.0:
2650 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2651 | engines: {node: '>=8'}
2652 | dependencies:
2653 | has-flag: 4.0.0
2654 | dev: true
2655 |
2656 | /supports-color@8.1.1:
2657 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
2658 | engines: {node: '>=10'}
2659 | dependencies:
2660 | has-flag: 4.0.0
2661 | dev: true
2662 |
2663 | /text-table@0.2.0:
2664 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2665 | dev: true
2666 |
2667 | /thread-stream@2.7.0:
2668 | resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
2669 | dependencies:
2670 | real-require: 0.2.0
2671 | dev: true
2672 |
2673 | /thread-stream@3.1.0:
2674 | resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
2675 | dependencies:
2676 | real-require: 0.2.0
2677 | dev: true
2678 |
2679 | /through@2.3.8:
2680 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
2681 | dev: true
2682 |
2683 | /titleize@3.0.0:
2684 | resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
2685 | engines: {node: '>=12'}
2686 | dev: true
2687 |
2688 | /tmp@0.2.3:
2689 | resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
2690 | engines: {node: '>=14.14'}
2691 | dev: true
2692 |
2693 | /tree-kill@1.2.2:
2694 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
2695 | hasBin: true
2696 | dev: true
2697 |
2698 | /tslib@2.8.1:
2699 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
2700 | dev: true
2701 |
2702 | /type-check@0.4.0:
2703 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2704 | engines: {node: '>= 0.8.0'}
2705 | dependencies:
2706 | prelude-ls: 1.2.1
2707 | dev: true
2708 |
2709 | /type-fest@0.20.2:
2710 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2711 | engines: {node: '>=10'}
2712 | dev: true
2713 |
2714 | /type-fest@3.13.1:
2715 | resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
2716 | engines: {node: '>=14.16'}
2717 | dev: true
2718 |
2719 | /type-fest@4.30.0:
2720 | resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==}
2721 | engines: {node: '>=16'}
2722 | dev: true
2723 |
2724 | /typedarray@0.0.6:
2725 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
2726 | dev: true
2727 |
2728 | /undici-types@6.20.0:
2729 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
2730 | dev: true
2731 |
2732 | /universalify@2.0.1:
2733 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
2734 | engines: {node: '>= 10.0.0'}
2735 | dev: true
2736 |
2737 | /untildify@4.0.0:
2738 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
2739 | engines: {node: '>=8'}
2740 | dev: true
2741 |
2742 | /upath@2.0.1:
2743 | resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
2744 | engines: {node: '>=4'}
2745 | dev: true
2746 |
2747 | /update-notifier@7.3.1:
2748 | resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==}
2749 | engines: {node: '>=18'}
2750 | dependencies:
2751 | boxen: 8.0.1
2752 | chalk: 5.3.0
2753 | configstore: 7.0.0
2754 | is-in-ci: 1.0.0
2755 | is-installed-globally: 1.0.0
2756 | is-npm: 6.0.0
2757 | latest-version: 9.0.0
2758 | pupa: 3.1.0
2759 | semver: 7.6.3
2760 | xdg-basedir: 5.1.0
2761 | dev: true
2762 |
2763 | /uri-js@4.4.1:
2764 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2765 | dependencies:
2766 | punycode: 2.3.1
2767 | dev: true
2768 |
2769 | /util-deprecate@1.0.2:
2770 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2771 | dev: true
2772 |
2773 | /uuid@8.3.2:
2774 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
2775 | hasBin: true
2776 | dev: true
2777 |
2778 | /wait-on@8.0.1:
2779 | resolution: {integrity: sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==}
2780 | engines: {node: '>=12.0.0'}
2781 | hasBin: true
2782 | dependencies:
2783 | axios: 1.7.8
2784 | joi: 17.13.3
2785 | lodash: 4.17.21
2786 | minimist: 1.2.8
2787 | rxjs: 7.8.1
2788 | transitivePeerDependencies:
2789 | - debug
2790 | dev: true
2791 |
2792 | /watchpack@2.4.2:
2793 | resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==}
2794 | engines: {node: '>=10.13.0'}
2795 | dependencies:
2796 | glob-to-regexp: 0.4.1
2797 | graceful-fs: 4.2.11
2798 | dev: true
2799 |
2800 | /wcwidth@1.0.1:
2801 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
2802 | dependencies:
2803 | defaults: 1.0.4
2804 | dev: true
2805 |
2806 | /web-ext@8.3.0:
2807 | resolution: {integrity: sha512-mXSOiDtmm3n0KNpSuQ65fJpypAoNLAmZv3QkdlVbJ6etn0BK+hl/k+tjHefSIKdbzGUIeFbhn2oxWMe9Tdyrdg==}
2808 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
2809 | hasBin: true
2810 | dependencies:
2811 | '@babel/runtime': 7.25.6
2812 | '@devicefarmer/adbkit': 3.2.6
2813 | addons-linter: 7.1.0
2814 | camelcase: 8.0.0
2815 | chrome-launcher: 1.1.2
2816 | debounce: 1.2.1
2817 | decamelize: 6.0.0
2818 | es6-error: 4.1.1
2819 | firefox-profile: 4.7.0
2820 | fx-runner: 1.4.0
2821 | https-proxy-agent: 7.0.5
2822 | jose: 5.9.2
2823 | jszip: 3.10.1
2824 | multimatch: 6.0.0
2825 | node-notifier: 10.0.1
2826 | open: 9.1.0
2827 | parse-json: 7.1.1
2828 | pino: 9.4.0
2829 | promise-toolbox: 0.21.0
2830 | source-map-support: 0.5.21
2831 | strip-bom: 5.0.0
2832 | strip-json-comments: 5.0.1
2833 | tmp: 0.2.3
2834 | update-notifier: 7.3.1
2835 | watchpack: 2.4.2
2836 | ws: 8.18.0
2837 | yargs: 17.7.2
2838 | zip-dir: 2.0.0
2839 | transitivePeerDependencies:
2840 | - body-parser
2841 | - bufferutil
2842 | - express
2843 | - node-fetch
2844 | - safe-compare
2845 | - supports-color
2846 | - utf-8-validate
2847 | dev: true
2848 |
2849 | /when-exit@2.1.3:
2850 | resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==}
2851 | dev: true
2852 |
2853 | /when@3.7.7:
2854 | resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==}
2855 | dev: true
2856 |
2857 | /which@1.2.4:
2858 | resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==}
2859 | hasBin: true
2860 | dependencies:
2861 | is-absolute: 0.1.7
2862 | isexe: 1.1.2
2863 | dev: true
2864 |
2865 | /which@2.0.2:
2866 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2867 | engines: {node: '>= 8'}
2868 | hasBin: true
2869 | dependencies:
2870 | isexe: 2.0.0
2871 | dev: true
2872 |
2873 | /widest-line@5.0.0:
2874 | resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
2875 | engines: {node: '>=18'}
2876 | dependencies:
2877 | string-width: 7.2.0
2878 | dev: true
2879 |
2880 | /winreg@0.0.12:
2881 | resolution: {integrity: sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==}
2882 | dev: true
2883 |
2884 | /word-wrap@1.2.5:
2885 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
2886 | engines: {node: '>=0.10.0'}
2887 | dev: true
2888 |
2889 | /wrap-ansi@7.0.0:
2890 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2891 | engines: {node: '>=10'}
2892 | dependencies:
2893 | ansi-styles: 4.3.0
2894 | string-width: 4.2.3
2895 | strip-ansi: 6.0.1
2896 | dev: true
2897 |
2898 | /wrap-ansi@9.0.0:
2899 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
2900 | engines: {node: '>=18'}
2901 | dependencies:
2902 | ansi-styles: 6.2.1
2903 | string-width: 7.2.0
2904 | strip-ansi: 7.1.0
2905 | dev: true
2906 |
2907 | /wrappy@1.0.2:
2908 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2909 | dev: true
2910 |
2911 | /ws@8.18.0:
2912 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
2913 | engines: {node: '>=10.0.0'}
2914 | peerDependencies:
2915 | bufferutil: ^4.0.1
2916 | utf-8-validate: '>=5.0.2'
2917 | peerDependenciesMeta:
2918 | bufferutil:
2919 | optional: true
2920 | utf-8-validate:
2921 | optional: true
2922 | dev: true
2923 |
2924 | /xdg-basedir@5.1.0:
2925 | resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
2926 | engines: {node: '>=12'}
2927 | dev: true
2928 |
2929 | /xml2js@0.6.2:
2930 | resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
2931 | engines: {node: '>=4.0.0'}
2932 | dependencies:
2933 | sax: 1.4.1
2934 | xmlbuilder: 11.0.1
2935 | dev: true
2936 |
2937 | /xmlbuilder@11.0.1:
2938 | resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
2939 | engines: {node: '>=4.0'}
2940 | dev: true
2941 |
2942 | /y18n@5.0.8:
2943 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
2944 | engines: {node: '>=10'}
2945 | dev: true
2946 |
2947 | /yargs-parser@21.1.1:
2948 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
2949 | engines: {node: '>=12'}
2950 | dev: true
2951 |
2952 | /yargs@17.7.2:
2953 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
2954 | engines: {node: '>=12'}
2955 | dependencies:
2956 | cliui: 8.0.1
2957 | escalade: 3.2.0
2958 | get-caller-file: 2.0.5
2959 | require-directory: 2.1.1
2960 | string-width: 4.2.3
2961 | y18n: 5.0.8
2962 | yargs-parser: 21.1.1
2963 | dev: true
2964 |
2965 | /yauzl@2.10.0:
2966 | resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
2967 | dependencies:
2968 | buffer-crc32: 0.2.13
2969 | fd-slicer: 1.1.0
2970 | dev: true
2971 |
2972 | /yocto-queue@0.1.0:
2973 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2974 | engines: {node: '>=10'}
2975 | dev: true
2976 |
2977 | /zip-dir@2.0.0:
2978 | resolution: {integrity: sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==}
2979 | dependencies:
2980 | async: 3.2.6
2981 | jszip: 3.10.1
2982 | dev: true
2983 |
--------------------------------------------------------------------------------
/select.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnychn/opencc-extension/6c8a06702ed3190da0ffc9445ff23a30ceb2a3fb/select.gif
--------------------------------------------------------------------------------
/src/background.js:
--------------------------------------------------------------------------------
1 | chrome.runtime.onInstalled.addListener(() => {
2 | /* Create context menu item for converting selected text only. */
3 | chrome.contextMenus.create({
4 | id: "convert-selection",
5 | title: "Convert Chinese Characters",
6 | contexts: ["selection"],
7 | });
8 | chrome.contextMenus.onClicked.addListener(async (info) => {
9 | if (info.menuItemId === "convert-selection") {
10 | const tabs = await chrome.tabs.query({ active: true, currentWindow: true });
11 | chrome.tabs.sendMessage(tabs[0].id, { action: "select", text: info.selectionText });
12 | }
13 | });
14 | });
15 |
16 | chrome.action.setBadgeBackgroundColor({ color: "white" });
17 |
18 | /* Retrieve initial state of auto mode from local storage. */
19 | chrome.storage.local.get({ auto: false }).then(({ auto }) => {
20 | chrome.action.setBadgeText({ text: auto ? "A" : "" });
21 | });
22 |
--------------------------------------------------------------------------------
/src/content.js:
--------------------------------------------------------------------------------
1 | import { Converter } from "opencc-js";
2 |
3 | const defaultSettings = { origin: "cn", target: "hk", auto: false, whitelist: [] };
4 |
5 | const matchWhitelist = (whitelist, url) => whitelist.map((p) => new RegExp(p)).some((re) => re.test(url));
6 |
7 | function convertTitle(origin, target) {
8 | const convert = Converter({ from: origin, to: target });
9 | document.title = convert(document.title);
10 | }
11 |
12 | function convertAllTextNodes(origin, target) {
13 | const convert = Converter({ from: origin, to: target });
14 | const iterateTextNodes = (node, callback) => {
15 | const walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false);
16 | for (let textNode; (textNode = walker.nextNode()); ) callback(textNode);
17 | };
18 | let count = 0;
19 | iterateTextNodes(document.body, (textNode) => {
20 | const originalText = textNode.nodeValue;
21 | const convertedText = convert(originalText);
22 | if (convertedText === originalText) return;
23 | (textNode.nodeValue = convertedText) && count++;
24 | });
25 | return count;
26 | }
27 |
28 | function convertSelectedTextNodes(origin, target) {
29 | const convert = Converter({ from: origin, to: target });
30 | const iterateTextNodes = (nodes, callback) => {
31 | for (const node of nodes) {
32 | if (node.nodeType === 3) callback(node);
33 | else iterateTextNodes(node.childNodes, callback);
34 | }
35 | };
36 | const range = window.getSelection().getRangeAt(0);
37 | const contents = range.cloneContents();
38 | iterateTextNodes([contents], (textNode) => {
39 | const originalText = textNode.nodeValue;
40 | const convertedText = convert(originalText);
41 | if (convertedText === originalText) return;
42 | return (textNode.nodeValue = convertedText);
43 | });
44 | // FIXME: the DOM structure messes up
45 | // when the selected text spans across multiple containers
46 | range.deleteContents() || range.insertNode(contents);
47 | }
48 |
49 | /* Mount trigger to auto convert when DOM changes. */
50 | let currentURL = "";
51 | const lang = document.documentElement.lang;
52 | if (!lang || lang.startsWith("zh"))
53 | new MutationObserver(async () => {
54 | const settings = await chrome.storage.local.get(defaultSettings);
55 | if (!settings.auto || settings.origin === settings.target) return;
56 | if (matchWhitelist(settings.whitelist, window.location.href)) return;
57 | if (currentURL !== window.location.href) {
58 | currentURL = window.location.href;
59 | convertTitle(settings.origin, settings.target);
60 | }
61 | convertAllTextNodes(settings.origin, settings.target);
62 | }).observe(document.body, { childList: true, subtree: true });
63 |
64 | /* Run convert once DOM ready when in auto mode. */
65 | chrome.storage.local.get(defaultSettings).then((settings) => {
66 | if (!settings.auto) return;
67 | if (matchWhitelist(settings.whitelist, window.location.href)) return;
68 | convertTitle(settings.origin, settings.target);
69 | convertAllTextNodes(settings.origin, settings.target);
70 | });
71 |
72 | /* Run convert on all nodes when triggered by button click in popup. */
73 | // NOTE: listener itself cannot be async function, see https://stackoverflow.com/questions/48107746.
74 | chrome.runtime.onMessage.addListener(({ action }, _, sendResponse) => {
75 | (async () => {
76 | const settings = await chrome.storage.local.get(defaultSettings);
77 | if (settings.origin !== settings.target) {
78 | if (action === "click") {
79 | const start = Date.now();
80 | convertTitle(settings.origin, settings.target);
81 | const count = convertAllTextNodes(settings.origin, settings.target);
82 | sendResponse({ count, time: Date.now() - start });
83 | } else if (action === "select") convertSelectedTextNodes(settings.origin, settings.target);
84 | }
85 | })();
86 | return true; // eliminate error: 'the message port closed before a response was received'
87 | });
88 |
--------------------------------------------------------------------------------
/src/manifest.chrome.json:
--------------------------------------------------------------------------------
1 | {
2 | "manifest_version": 3,
3 | "name": "OpenCC",
4 | "author": "Tony Chan",
5 | "version": "0.4.0",
6 | "description": "Convert webpages between different Chinese variants.",
7 | "homepage_url": "https://github.com/tnychn/opencc-extension",
8 | "icons": {
9 | "128": "icon.png"
10 | },
11 | "content_scripts": [
12 | {
13 | "js": [
14 | "content.js"
15 | ],
16 | "matches": [
17 | ""
18 | ],
19 | "run_at": "document_idle"
20 | }
21 | ],
22 | "options_ui": {
23 | "page": "options/index.html",
24 | "open_in_tab": false
25 | },
26 | "action": {
27 | "default_icon": {
28 | "128": "icon.png"
29 | },
30 | "default_title": "OpenCC",
31 | "default_popup": "popup/index.html"
32 | },
33 | "background": {
34 | "service_worker": "background.js",
35 | "type": "module"
36 | },
37 | "permissions": [
38 | "storage",
39 | "tabs",
40 | "contextMenus"
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/src/manifest.firefox.json:
--------------------------------------------------------------------------------
1 | {
2 | "manifest_version": 3,
3 | "name": "OpenCC",
4 | "author": "Tony Chan",
5 | "version": "0.4.0",
6 | "description": "Convert webpages between different Chinese variants.",
7 | "homepage_url": "https://github.com/tnychn/opencc-extension",
8 | "icons": {
9 | "128": "icon.png"
10 | },
11 | "content_scripts": [
12 | {
13 | "js": [
14 | "content.js"
15 | ],
16 | "matches": [
17 | ""
18 | ],
19 | "run_at": "document_idle"
20 | }
21 | ],
22 | "options_ui": {
23 | "page": "options/index.html",
24 | "open_in_tab": false
25 | },
26 | "action": {
27 | "default_icon": {
28 | "128": "icon.png"
29 | },
30 | "default_title": "OpenCC",
31 | "default_popup": "popup/index.html"
32 | },
33 | "background": {
34 | "scripts": [
35 | "background.js"
36 | ]
37 | },
38 | "permissions": [
39 | "storage",
40 | "tabs",
41 | "contextMenus"
42 | ],
43 | "browser_specific_settings": {
44 | "gecko": {
45 | "id": "opencc.extension@tnychn"
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/options/index.css:
--------------------------------------------------------------------------------
1 | * {
2 | user-select: none;
3 | box-sizing: border-box;
4 | }
5 |
6 | html,
7 | body {
8 | margin: 0;
9 | width: 100%;
10 | }
11 |
12 | body {
13 | padding: 1em;
14 | font-family: Arial, Helvetica, sans-serif;
15 | }
16 |
17 | main {
18 | display: flex;
19 | flex-direction: column;
20 | gap: 0.5em;
21 | }
22 |
23 | label {
24 | font-weight: bold;
25 | font-size: large;
26 | }
27 |
28 | p {
29 | margin: 0;
30 | font-size: small;
31 | }
32 |
33 | textarea {
34 | min-height: 10em;
35 | min-width: 100%;
36 | max-width: 100%;
37 | }
38 |
--------------------------------------------------------------------------------
/src/options/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Whitelist
11 | Specify the URL patterns of sites that you want to be excluded from converting in auto mode.
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/options/index.js:
--------------------------------------------------------------------------------
1 | const $whitelist = document.getElementById("whitelist");
2 |
3 | let timeout;
4 | $whitelist.addEventListener("input", () => {
5 | $whitelist.value = $whitelist.value
6 | .split("\n")
7 | .map((line) => line.trim())
8 | .join("\n");
9 | if (timeout) clearTimeout(timeout);
10 | timeout = setTimeout(() => {
11 | $whitelist.value = $whitelist.value.trim();
12 | const whitelist = $whitelist.value
13 | .split("\n")
14 | .filter(Boolean)
15 | .map((pattern) => pattern.replaceAll("*", "[^ ]*"));
16 | chrome.storage.local.set({ whitelist });
17 | }, 500);
18 | });
19 |
20 | chrome.storage.local.get({ whitelist: [] }).then(({ whitelist }) => {
21 | $whitelist.value = whitelist.map((p) => p.replaceAll("[^ ]*", "*")).join("\n");
22 | });
23 |
--------------------------------------------------------------------------------
/src/popup/index.css:
--------------------------------------------------------------------------------
1 | * {
2 | user-select: none;
3 | box-sizing: border-box;
4 | }
5 |
6 | html,
7 | body {
8 | margin: 0;
9 | width: 100%;
10 | }
11 |
12 | body {
13 | padding: 0.5em;
14 | font-family: Arial, Helvetica, sans-serif;
15 | }
16 |
17 | header {
18 | display: flex;
19 | justify-content: space-between;
20 | align-items: center;
21 | }
22 |
23 | #title {
24 | color: black;
25 | text-decoration: none;
26 | font-size: large;
27 | font-weight: bold;
28 | }
29 |
30 | #title:hover {
31 | color: blue;
32 | }
33 |
34 | #subtitle {
35 | color: gray;
36 | font-size: small;
37 | font-weight: bold;
38 | margin-left: 1em;
39 | }
40 |
41 | main {
42 | margin-top: 0.5em;
43 | }
44 |
45 | select {
46 | padding: 0.25em;
47 | border: 1px solid grey;
48 | background-color: inherit;
49 | }
50 |
51 | #swap {
52 | flex-grow: 1;
53 | margin-left: 0.25em;
54 | margin-right: 0.25em;
55 | }
56 |
57 | main > div:first-child {
58 | display: flex;
59 | justify-content: space-between;
60 | align-items: center;
61 | }
62 |
63 | main > div:nth-child(2) {
64 | margin-top: 0.25em;
65 | display: flex;
66 | flex-direction: column;
67 | }
68 |
69 | main > div:nth-child(2) > span {
70 | font-size: small;
71 | font-weight: bold;
72 | }
73 |
74 | #reset {
75 | padding: 0;
76 | border: none;
77 | cursor: pointer;
78 | background-color: inherit;
79 | }
80 |
81 | #textbox {
82 | min-width: 100%;
83 | max-width: 500px;
84 | min-height: 100px;
85 | max-height: 300px;
86 | padding: 0.25em;
87 | font-size: small;
88 | font-family: inherit;
89 | }
90 |
91 | main > div:last-child {
92 | margin-top: 0.25em;
93 | display: flex;
94 | justify-content: stretch;
95 | align-items: center;
96 | }
97 |
98 | #convert {
99 | width: 100%;
100 | padding-top: 0.25em;
101 | padding-bottom: 0.25em;
102 | font-weight: bold;
103 | }
104 |
105 | label[for="auto"] {
106 | font-size: small;
107 | }
108 |
109 | footer {
110 | margin-top: 0.5em;
111 | font-size: x-small;
112 | text-align: center;
113 | }
114 |
--------------------------------------------------------------------------------
/src/popup/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 |
15 | cn
16 | hk
17 | tw
18 | twp
19 |
20 | →
21 |
22 | hk
23 | cn
24 | tw
25 | twp
26 |
27 |
28 |
29 | Text Conversion ⟳
30 |
31 |
32 |
33 | Convert Page
34 |
35 | auto
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/popup/index.js:
--------------------------------------------------------------------------------
1 | import { Converter } from "opencc-js";
2 |
3 | const $originSelect = document.getElementById("origin");
4 | const $targetSelect = document.getElementById("target");
5 | const $swapButton = document.getElementById("swap");
6 | const $resetButton = document.getElementById("reset");
7 | const $textbox = document.getElementById("textbox");
8 | const $convertButton = document.getElementById("convert");
9 | const $autoCheckbox = document.getElementById("auto");
10 | const $footer = document.getElementsByTagName("footer")[0];
11 |
12 | function textboxConvert() {
13 | const [origin, target] = [$originSelect.value, $targetSelect.value];
14 | if (origin === target) return;
15 | const convert = Converter({ from: origin, to: target });
16 | const originalText = $textbox.value;
17 | const convertedText = convert(originalText);
18 | if (convertedText !== originalText) $textbox.value = convertedText;
19 | }
20 |
21 | /* Retrieve values from local storage and restore options when shown. */
22 | chrome.storage.local
23 | .get({
24 | origin: "cn",
25 | target: "hk",
26 | auto: false,
27 | textboxSize: {
28 | width: null,
29 | height: null,
30 | },
31 | })
32 | .then((settings) => {
33 | $originSelect.value = settings.origin;
34 | $targetSelect.value = settings.target;
35 | $autoCheckbox.checked = settings.auto;
36 | $convertButton.disabled = settings.origin === settings.target;
37 | // restore textbox size
38 | const { width, height } = settings.textboxSize;
39 | $textbox.style.width = width ? `${width}px` : "";
40 | $textbox.style.height = height ? `${height}px` : "";
41 | });
42 |
43 | /* User changes origin option. */
44 | $originSelect.addEventListener("change", (event) => {
45 | chrome.storage.local.set({ origin: event.currentTarget.value });
46 | $convertButton.disabled = $targetSelect.value === event.currentTarget.value;
47 | if ($textbox.value) textboxConvert();
48 | });
49 |
50 | /* User changes target option. */
51 | $targetSelect.addEventListener("change", (event) => {
52 | chrome.storage.local.set({ target: event.currentTarget.value });
53 | $convertButton.disabled = $originSelect.value === event.currentTarget.value;
54 | if ($textbox.value) textboxConvert();
55 | });
56 |
57 | /* User clicks swap button. */
58 | $swapButton.addEventListener("click", () => {
59 | chrome.storage.local.set({ origin: $targetSelect.value, target: $originSelect.value });
60 | const originValue = $originSelect.value;
61 | $originSelect.value = $targetSelect.value;
62 | $targetSelect.value = originValue;
63 | if ($textbox.value) textboxConvert();
64 | });
65 |
66 | /* User inputs text in textbox. */
67 | let timeout;
68 | $textbox.addEventListener("input", () => {
69 | // debounce 750ms: wait for typing to stop
70 | if (timeout) clearTimeout(timeout);
71 | timeout = setTimeout(textboxConvert, 750);
72 | });
73 |
74 | /* User clicks reset button. */
75 | $resetButton.addEventListener("click", () => {
76 | $textbox.value = ""; // clear input
77 | $textbox.style.width = $textbox.style.height = ""; // reset size
78 | });
79 |
80 | /* User resizes textbox. */
81 | new ResizeObserver(() => {
82 | chrome.storage.local.set({
83 | textboxSize: {
84 | width: $textbox.offsetWidth,
85 | height: $textbox.offsetHeight,
86 | },
87 | });
88 | }).observe($textbox);
89 |
90 | /* User clicks convert button. */
91 | $convertButton.addEventListener("click", async () => {
92 | $convertButton.disabled = true;
93 | const tabs = await chrome.tabs.query({ active: true, currentWindow: true });
94 | const response = await chrome.tabs.sendMessage(tabs[0].id, { action: "click" });
95 | $convertButton.disabled = false;
96 | if (response !== undefined) $footer.innerText = `${response.count} nodes changed in ${response.time}ms`;
97 | else $footer.innerHTML = `BROWSER PROTECTED PAGE `;
98 | });
99 |
100 | /* User checks auto convert mode. */
101 | $autoCheckbox.addEventListener("change", (event) => {
102 | const auto = event.currentTarget.checked;
103 | chrome.storage.local.set({ auto });
104 | chrome.action.setBadgeText({ text: auto ? "A" : "" });
105 | });
106 |
--------------------------------------------------------------------------------
/textbox.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnychn/opencc-extension/6c8a06702ed3190da0ffc9445ff23a30ceb2a3fb/textbox.gif
--------------------------------------------------------------------------------