├── .editorconfig
├── .github
├── dependabot.yml
├── tailwindcss-mark.svg
└── workflows
│ └── nodejs.yml
├── .gitignore
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
└── src
├── index.js
└── index.test.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: npm
4 | directory: "/"
5 | schedule:
6 | interval: weekly
7 | open-pull-requests-limit: 10
8 |
--------------------------------------------------------------------------------
/.github/tailwindcss-mark.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/workflows/nodejs.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3 |
4 | name: build
5 |
6 | on:
7 | push:
8 | branches: [main]
9 | pull_request:
10 |
11 | jobs:
12 | build:
13 | runs-on: ubuntu-latest
14 |
15 | strategy:
16 | matrix:
17 | node-version: [18, 20, 22]
18 |
19 | steps:
20 | - uses: actions/checkout@v4
21 | - name: Use Node.js ${{ matrix.node-version }}
22 | uses: actions/setup-node@v4
23 | with:
24 | node-version: ${{ matrix.node-version }}
25 | - run: npm ci
26 | - run: npm test
27 | env:
28 | CI: true
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | coverage
3 | node_modules
4 | npm-debug.log
5 | yarn-error.log
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Cosmin Popovici
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 |
Tailwind CSS Email Variants
4 |
5 | [![Build][github-ci-shield]][github-ci]
6 | [![License][license-shield]][license]
7 |
8 |
9 | A Tailwind CSS plugin that provides variants for email client targeting hacks used in HTML emails.
10 |
11 | All variants are based on targeting hacks from [howtotarget.email](https://howtotarget.email)
12 |
13 | ## Installation
14 |
15 | Install the plugin from npm:
16 |
17 | ```sh
18 | npm install -D tailwindcss-email-variants
19 | ```
20 |
21 | Then add the plugin to your `tailwind.config.js` file:
22 |
23 | ```js
24 | /** @type {import('tailwindcss').Config} */
25 | module.exports = {
26 | // ...
27 | plugins: [
28 | require('tailwindcss-email-variants'),
29 | ],
30 | }
31 | ```
32 |
33 | ## Usage
34 |
35 | Use the available variants to generate utilities that target specific email clients.
36 |
37 | ### Gmail
38 |
39 | Use the `gmail` variant to target Gmail's webmail:
40 |
41 | ```html
42 | ...
43 | ```
44 |
45 | Result:
46 |
47 | ```css
48 | u + .body .gmail\:hidden {
49 | display: none;
50 | }
51 | ```
52 |
53 | ### Gmail (Android)
54 |
55 | Use the `gmail-android` variant to target Gmail on Android devices:
56 |
57 | ```html
58 | ...
59 | ```
60 |
61 | Result:
62 |
63 | ```css
64 | div > u + .body .gmail-android\:hidden {
65 | display: none;
66 | }
67 | ```
68 |
69 | ### Apple Mail (10+)
70 |
71 | Use the `apple-mail` variant to target Apple Mail 10 and up:
72 |
73 | ```html
74 | ...
75 | ```
76 |
77 | Result:
78 |
79 | ```css
80 | .Singleton .apple-mail\:hidden {
81 | display: none;
82 | }
83 | ```
84 |
85 | ### iOS Mail (10+)
86 |
87 | Use the `ios` variant to target iOS Mail 10 and up:
88 |
89 | ```html
90 | ...
91 | ```
92 |
93 | Result:
94 |
95 | ```css
96 | @supports (-webkit-overflow-scrolling:touch) and (color:#ffff) {
97 | .ios\:hidden {
98 | display: none;
99 | }
100 | }
101 | ```
102 |
103 | ### iOS Mail (15)
104 |
105 | Use the `ios-15` variant to target iOS Mail 15 specifically:
106 |
107 | ```html
108 | ...
109 | ```
110 |
111 | Result:
112 |
113 | ```css
114 | @supports (-webkit-overflow-scrolling:touch) and (aspect-ratio: 1 / 1) {
115 | .ios-15\:hidden {
116 | display: none;
117 | }
118 | }
119 | ```
120 |
121 | ### Outlook.com dark mode
122 |
123 | Change `color` and `background-color` of elements in [Outlook.com dark mode](https://www.hteumeuleu.com/2021/emails-react-outlook-com-dark-mode/).
124 |
125 | ```html
126 |
127 | ...
128 |
129 |
130 | ...
131 | ```
132 |
133 | Result:
134 |
135 | ```css
136 | [data-ogsc] .ogsc\:text-slate-200 {
137 | color: #e2e8f0;
138 | }
139 |
140 | [data-ogsb] .ogsb\:bg-slate-900 {
141 | background-color: #0f172a;
142 | }
143 | ```
144 |
145 | ### Open-Xchange
146 |
147 | Use the `ox` variant to target webmail clients that are powered by [Open-Xchange](https://www.open-xchange.com/).
148 |
149 | Some of these email clients include Comcast, Libero, 1&1 MailXchange, Network Solutions Secure Mail, Namecheap Email Hosting, Mailbox.org, 123-reg Email, Acens Correo Professional, Home.pl Cloud Email Xchange, Virgin Media Mail, and Ziggo Mail.
150 |
151 | ```html
152 | ...
153 | ```
154 |
155 | Result:
156 |
157 | ```css
158 | .ox\:hidden[class^="ox-"] {
159 | display: none;
160 | }
161 | ```
162 |
163 | [github-ci]: https://github.com/maizzle/tailwindcss-email-variants/actions
164 | [github-ci-shield]: https://github.com/maizzle/tailwindcss-email-variants/actions/workflows/nodejs.yml/badge.svg
165 | [license]: ./LICENSE
166 | [license-shield]: https://img.shields.io/github/license/maizzle/tailwindcss-email-variants?color=0e9f6e
167 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tailwindcss-email-variants",
3 | "version": "3.0.4",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "tailwindcss-email-variants",
9 | "version": "3.0.4",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "@vitest/coverage-v8": "^3.0.5",
13 | "postcss": "^8.4.33",
14 | "tailwindcss": "^3.4.0",
15 | "vitest": "^3.0.5"
16 | },
17 | "engines": {
18 | "node": ">=18"
19 | },
20 | "peerDependencies": {
21 | "tailwindcss": ">=3.4.0 < 4"
22 | }
23 | },
24 | "node_modules/@alloc/quick-lru": {
25 | "version": "5.2.0",
26 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
27 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
28 | "dev": true,
29 | "engines": {
30 | "node": ">=10"
31 | },
32 | "funding": {
33 | "url": "https://github.com/sponsors/sindresorhus"
34 | }
35 | },
36 | "node_modules/@ampproject/remapping": {
37 | "version": "2.3.0",
38 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
39 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
40 | "dev": true,
41 | "dependencies": {
42 | "@jridgewell/gen-mapping": "^0.3.5",
43 | "@jridgewell/trace-mapping": "^0.3.24"
44 | },
45 | "engines": {
46 | "node": ">=6.0.0"
47 | }
48 | },
49 | "node_modules/@babel/helper-string-parser": {
50 | "version": "7.25.9",
51 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
52 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
53 | "dev": true,
54 | "engines": {
55 | "node": ">=6.9.0"
56 | }
57 | },
58 | "node_modules/@babel/helper-validator-identifier": {
59 | "version": "7.25.9",
60 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
61 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
62 | "dev": true,
63 | "engines": {
64 | "node": ">=6.9.0"
65 | }
66 | },
67 | "node_modules/@babel/parser": {
68 | "version": "7.26.2",
69 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
70 | "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
71 | "dev": true,
72 | "dependencies": {
73 | "@babel/types": "^7.26.0"
74 | },
75 | "bin": {
76 | "parser": "bin/babel-parser.js"
77 | },
78 | "engines": {
79 | "node": ">=6.0.0"
80 | }
81 | },
82 | "node_modules/@babel/types": {
83 | "version": "7.26.0",
84 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
85 | "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
86 | "dev": true,
87 | "dependencies": {
88 | "@babel/helper-string-parser": "^7.25.9",
89 | "@babel/helper-validator-identifier": "^7.25.9"
90 | },
91 | "engines": {
92 | "node": ">=6.9.0"
93 | }
94 | },
95 | "node_modules/@bcoe/v8-coverage": {
96 | "version": "1.0.2",
97 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz",
98 | "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==",
99 | "dev": true,
100 | "license": "MIT",
101 | "engines": {
102 | "node": ">=18"
103 | }
104 | },
105 | "node_modules/@esbuild/aix-ppc64": {
106 | "version": "0.25.4",
107 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz",
108 | "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==",
109 | "cpu": [
110 | "ppc64"
111 | ],
112 | "dev": true,
113 | "license": "MIT",
114 | "optional": true,
115 | "os": [
116 | "aix"
117 | ],
118 | "engines": {
119 | "node": ">=18"
120 | }
121 | },
122 | "node_modules/@esbuild/android-arm": {
123 | "version": "0.25.4",
124 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz",
125 | "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==",
126 | "cpu": [
127 | "arm"
128 | ],
129 | "dev": true,
130 | "license": "MIT",
131 | "optional": true,
132 | "os": [
133 | "android"
134 | ],
135 | "engines": {
136 | "node": ">=18"
137 | }
138 | },
139 | "node_modules/@esbuild/android-arm64": {
140 | "version": "0.25.4",
141 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz",
142 | "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==",
143 | "cpu": [
144 | "arm64"
145 | ],
146 | "dev": true,
147 | "license": "MIT",
148 | "optional": true,
149 | "os": [
150 | "android"
151 | ],
152 | "engines": {
153 | "node": ">=18"
154 | }
155 | },
156 | "node_modules/@esbuild/android-x64": {
157 | "version": "0.25.4",
158 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz",
159 | "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==",
160 | "cpu": [
161 | "x64"
162 | ],
163 | "dev": true,
164 | "license": "MIT",
165 | "optional": true,
166 | "os": [
167 | "android"
168 | ],
169 | "engines": {
170 | "node": ">=18"
171 | }
172 | },
173 | "node_modules/@esbuild/darwin-arm64": {
174 | "version": "0.25.4",
175 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz",
176 | "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==",
177 | "cpu": [
178 | "arm64"
179 | ],
180 | "dev": true,
181 | "license": "MIT",
182 | "optional": true,
183 | "os": [
184 | "darwin"
185 | ],
186 | "engines": {
187 | "node": ">=18"
188 | }
189 | },
190 | "node_modules/@esbuild/darwin-x64": {
191 | "version": "0.25.4",
192 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz",
193 | "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==",
194 | "cpu": [
195 | "x64"
196 | ],
197 | "dev": true,
198 | "license": "MIT",
199 | "optional": true,
200 | "os": [
201 | "darwin"
202 | ],
203 | "engines": {
204 | "node": ">=18"
205 | }
206 | },
207 | "node_modules/@esbuild/freebsd-arm64": {
208 | "version": "0.25.4",
209 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz",
210 | "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==",
211 | "cpu": [
212 | "arm64"
213 | ],
214 | "dev": true,
215 | "license": "MIT",
216 | "optional": true,
217 | "os": [
218 | "freebsd"
219 | ],
220 | "engines": {
221 | "node": ">=18"
222 | }
223 | },
224 | "node_modules/@esbuild/freebsd-x64": {
225 | "version": "0.25.4",
226 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz",
227 | "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==",
228 | "cpu": [
229 | "x64"
230 | ],
231 | "dev": true,
232 | "license": "MIT",
233 | "optional": true,
234 | "os": [
235 | "freebsd"
236 | ],
237 | "engines": {
238 | "node": ">=18"
239 | }
240 | },
241 | "node_modules/@esbuild/linux-arm": {
242 | "version": "0.25.4",
243 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz",
244 | "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==",
245 | "cpu": [
246 | "arm"
247 | ],
248 | "dev": true,
249 | "license": "MIT",
250 | "optional": true,
251 | "os": [
252 | "linux"
253 | ],
254 | "engines": {
255 | "node": ">=18"
256 | }
257 | },
258 | "node_modules/@esbuild/linux-arm64": {
259 | "version": "0.25.4",
260 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz",
261 | "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==",
262 | "cpu": [
263 | "arm64"
264 | ],
265 | "dev": true,
266 | "license": "MIT",
267 | "optional": true,
268 | "os": [
269 | "linux"
270 | ],
271 | "engines": {
272 | "node": ">=18"
273 | }
274 | },
275 | "node_modules/@esbuild/linux-ia32": {
276 | "version": "0.25.4",
277 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz",
278 | "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==",
279 | "cpu": [
280 | "ia32"
281 | ],
282 | "dev": true,
283 | "license": "MIT",
284 | "optional": true,
285 | "os": [
286 | "linux"
287 | ],
288 | "engines": {
289 | "node": ">=18"
290 | }
291 | },
292 | "node_modules/@esbuild/linux-loong64": {
293 | "version": "0.25.4",
294 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz",
295 | "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==",
296 | "cpu": [
297 | "loong64"
298 | ],
299 | "dev": true,
300 | "license": "MIT",
301 | "optional": true,
302 | "os": [
303 | "linux"
304 | ],
305 | "engines": {
306 | "node": ">=18"
307 | }
308 | },
309 | "node_modules/@esbuild/linux-mips64el": {
310 | "version": "0.25.4",
311 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz",
312 | "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==",
313 | "cpu": [
314 | "mips64el"
315 | ],
316 | "dev": true,
317 | "license": "MIT",
318 | "optional": true,
319 | "os": [
320 | "linux"
321 | ],
322 | "engines": {
323 | "node": ">=18"
324 | }
325 | },
326 | "node_modules/@esbuild/linux-ppc64": {
327 | "version": "0.25.4",
328 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz",
329 | "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==",
330 | "cpu": [
331 | "ppc64"
332 | ],
333 | "dev": true,
334 | "license": "MIT",
335 | "optional": true,
336 | "os": [
337 | "linux"
338 | ],
339 | "engines": {
340 | "node": ">=18"
341 | }
342 | },
343 | "node_modules/@esbuild/linux-riscv64": {
344 | "version": "0.25.4",
345 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz",
346 | "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==",
347 | "cpu": [
348 | "riscv64"
349 | ],
350 | "dev": true,
351 | "license": "MIT",
352 | "optional": true,
353 | "os": [
354 | "linux"
355 | ],
356 | "engines": {
357 | "node": ">=18"
358 | }
359 | },
360 | "node_modules/@esbuild/linux-s390x": {
361 | "version": "0.25.4",
362 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz",
363 | "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==",
364 | "cpu": [
365 | "s390x"
366 | ],
367 | "dev": true,
368 | "license": "MIT",
369 | "optional": true,
370 | "os": [
371 | "linux"
372 | ],
373 | "engines": {
374 | "node": ">=18"
375 | }
376 | },
377 | "node_modules/@esbuild/linux-x64": {
378 | "version": "0.25.4",
379 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz",
380 | "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==",
381 | "cpu": [
382 | "x64"
383 | ],
384 | "dev": true,
385 | "license": "MIT",
386 | "optional": true,
387 | "os": [
388 | "linux"
389 | ],
390 | "engines": {
391 | "node": ">=18"
392 | }
393 | },
394 | "node_modules/@esbuild/netbsd-arm64": {
395 | "version": "0.25.4",
396 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz",
397 | "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==",
398 | "cpu": [
399 | "arm64"
400 | ],
401 | "dev": true,
402 | "license": "MIT",
403 | "optional": true,
404 | "os": [
405 | "netbsd"
406 | ],
407 | "engines": {
408 | "node": ">=18"
409 | }
410 | },
411 | "node_modules/@esbuild/netbsd-x64": {
412 | "version": "0.25.4",
413 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz",
414 | "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==",
415 | "cpu": [
416 | "x64"
417 | ],
418 | "dev": true,
419 | "license": "MIT",
420 | "optional": true,
421 | "os": [
422 | "netbsd"
423 | ],
424 | "engines": {
425 | "node": ">=18"
426 | }
427 | },
428 | "node_modules/@esbuild/openbsd-arm64": {
429 | "version": "0.25.4",
430 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz",
431 | "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==",
432 | "cpu": [
433 | "arm64"
434 | ],
435 | "dev": true,
436 | "license": "MIT",
437 | "optional": true,
438 | "os": [
439 | "openbsd"
440 | ],
441 | "engines": {
442 | "node": ">=18"
443 | }
444 | },
445 | "node_modules/@esbuild/openbsd-x64": {
446 | "version": "0.25.4",
447 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz",
448 | "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==",
449 | "cpu": [
450 | "x64"
451 | ],
452 | "dev": true,
453 | "license": "MIT",
454 | "optional": true,
455 | "os": [
456 | "openbsd"
457 | ],
458 | "engines": {
459 | "node": ">=18"
460 | }
461 | },
462 | "node_modules/@esbuild/sunos-x64": {
463 | "version": "0.25.4",
464 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz",
465 | "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==",
466 | "cpu": [
467 | "x64"
468 | ],
469 | "dev": true,
470 | "license": "MIT",
471 | "optional": true,
472 | "os": [
473 | "sunos"
474 | ],
475 | "engines": {
476 | "node": ">=18"
477 | }
478 | },
479 | "node_modules/@esbuild/win32-arm64": {
480 | "version": "0.25.4",
481 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz",
482 | "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==",
483 | "cpu": [
484 | "arm64"
485 | ],
486 | "dev": true,
487 | "license": "MIT",
488 | "optional": true,
489 | "os": [
490 | "win32"
491 | ],
492 | "engines": {
493 | "node": ">=18"
494 | }
495 | },
496 | "node_modules/@esbuild/win32-ia32": {
497 | "version": "0.25.4",
498 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz",
499 | "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==",
500 | "cpu": [
501 | "ia32"
502 | ],
503 | "dev": true,
504 | "license": "MIT",
505 | "optional": true,
506 | "os": [
507 | "win32"
508 | ],
509 | "engines": {
510 | "node": ">=18"
511 | }
512 | },
513 | "node_modules/@esbuild/win32-x64": {
514 | "version": "0.25.4",
515 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz",
516 | "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==",
517 | "cpu": [
518 | "x64"
519 | ],
520 | "dev": true,
521 | "license": "MIT",
522 | "optional": true,
523 | "os": [
524 | "win32"
525 | ],
526 | "engines": {
527 | "node": ">=18"
528 | }
529 | },
530 | "node_modules/@isaacs/cliui": {
531 | "version": "8.0.2",
532 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
533 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
534 | "dev": true,
535 | "dependencies": {
536 | "string-width": "^5.1.2",
537 | "string-width-cjs": "npm:string-width@^4.2.0",
538 | "strip-ansi": "^7.0.1",
539 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
540 | "wrap-ansi": "^8.1.0",
541 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
542 | },
543 | "engines": {
544 | "node": ">=12"
545 | }
546 | },
547 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
548 | "version": "6.0.1",
549 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
550 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
551 | "dev": true,
552 | "engines": {
553 | "node": ">=12"
554 | },
555 | "funding": {
556 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
557 | }
558 | },
559 | "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
560 | "version": "6.2.1",
561 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
562 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
563 | "dev": true,
564 | "engines": {
565 | "node": ">=12"
566 | },
567 | "funding": {
568 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
569 | }
570 | },
571 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
572 | "version": "9.2.2",
573 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
574 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
575 | "dev": true
576 | },
577 | "node_modules/@isaacs/cliui/node_modules/string-width": {
578 | "version": "5.1.2",
579 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
580 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
581 | "dev": true,
582 | "dependencies": {
583 | "eastasianwidth": "^0.2.0",
584 | "emoji-regex": "^9.2.2",
585 | "strip-ansi": "^7.0.1"
586 | },
587 | "engines": {
588 | "node": ">=12"
589 | },
590 | "funding": {
591 | "url": "https://github.com/sponsors/sindresorhus"
592 | }
593 | },
594 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
595 | "version": "7.1.0",
596 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
597 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
598 | "dev": true,
599 | "dependencies": {
600 | "ansi-regex": "^6.0.1"
601 | },
602 | "engines": {
603 | "node": ">=12"
604 | },
605 | "funding": {
606 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
607 | }
608 | },
609 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
610 | "version": "8.1.0",
611 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
612 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
613 | "dev": true,
614 | "dependencies": {
615 | "ansi-styles": "^6.1.0",
616 | "string-width": "^5.0.1",
617 | "strip-ansi": "^7.0.1"
618 | },
619 | "engines": {
620 | "node": ">=12"
621 | },
622 | "funding": {
623 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
624 | }
625 | },
626 | "node_modules/@istanbuljs/schema": {
627 | "version": "0.1.3",
628 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
629 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
630 | "dev": true,
631 | "engines": {
632 | "node": ">=8"
633 | }
634 | },
635 | "node_modules/@jridgewell/gen-mapping": {
636 | "version": "0.3.5",
637 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
638 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
639 | "dev": true,
640 | "dependencies": {
641 | "@jridgewell/set-array": "^1.2.1",
642 | "@jridgewell/sourcemap-codec": "^1.4.10",
643 | "@jridgewell/trace-mapping": "^0.3.24"
644 | },
645 | "engines": {
646 | "node": ">=6.0.0"
647 | }
648 | },
649 | "node_modules/@jridgewell/resolve-uri": {
650 | "version": "3.1.1",
651 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
652 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
653 | "dev": true,
654 | "engines": {
655 | "node": ">=6.0.0"
656 | }
657 | },
658 | "node_modules/@jridgewell/set-array": {
659 | "version": "1.2.1",
660 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
661 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
662 | "dev": true,
663 | "engines": {
664 | "node": ">=6.0.0"
665 | }
666 | },
667 | "node_modules/@jridgewell/sourcemap-codec": {
668 | "version": "1.5.0",
669 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
670 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
671 | "dev": true
672 | },
673 | "node_modules/@jridgewell/trace-mapping": {
674 | "version": "0.3.25",
675 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
676 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
677 | "dev": true,
678 | "dependencies": {
679 | "@jridgewell/resolve-uri": "^3.1.0",
680 | "@jridgewell/sourcemap-codec": "^1.4.14"
681 | }
682 | },
683 | "node_modules/@nodelib/fs.scandir": {
684 | "version": "2.1.5",
685 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
686 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
687 | "dev": true,
688 | "dependencies": {
689 | "@nodelib/fs.stat": "2.0.5",
690 | "run-parallel": "^1.1.9"
691 | },
692 | "engines": {
693 | "node": ">= 8"
694 | }
695 | },
696 | "node_modules/@nodelib/fs.stat": {
697 | "version": "2.0.5",
698 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
699 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
700 | "dev": true,
701 | "engines": {
702 | "node": ">= 8"
703 | }
704 | },
705 | "node_modules/@nodelib/fs.walk": {
706 | "version": "1.2.8",
707 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
708 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
709 | "dev": true,
710 | "dependencies": {
711 | "@nodelib/fs.scandir": "2.1.5",
712 | "fastq": "^1.6.0"
713 | },
714 | "engines": {
715 | "node": ">= 8"
716 | }
717 | },
718 | "node_modules/@pkgjs/parseargs": {
719 | "version": "0.11.0",
720 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
721 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
722 | "dev": true,
723 | "optional": true,
724 | "engines": {
725 | "node": ">=14"
726 | }
727 | },
728 | "node_modules/@rollup/rollup-android-arm-eabi": {
729 | "version": "4.41.1",
730 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz",
731 | "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==",
732 | "cpu": [
733 | "arm"
734 | ],
735 | "dev": true,
736 | "license": "MIT",
737 | "optional": true,
738 | "os": [
739 | "android"
740 | ]
741 | },
742 | "node_modules/@rollup/rollup-android-arm64": {
743 | "version": "4.41.1",
744 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz",
745 | "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==",
746 | "cpu": [
747 | "arm64"
748 | ],
749 | "dev": true,
750 | "license": "MIT",
751 | "optional": true,
752 | "os": [
753 | "android"
754 | ]
755 | },
756 | "node_modules/@rollup/rollup-darwin-arm64": {
757 | "version": "4.41.1",
758 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz",
759 | "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==",
760 | "cpu": [
761 | "arm64"
762 | ],
763 | "dev": true,
764 | "license": "MIT",
765 | "optional": true,
766 | "os": [
767 | "darwin"
768 | ]
769 | },
770 | "node_modules/@rollup/rollup-darwin-x64": {
771 | "version": "4.41.1",
772 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz",
773 | "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==",
774 | "cpu": [
775 | "x64"
776 | ],
777 | "dev": true,
778 | "license": "MIT",
779 | "optional": true,
780 | "os": [
781 | "darwin"
782 | ]
783 | },
784 | "node_modules/@rollup/rollup-freebsd-arm64": {
785 | "version": "4.41.1",
786 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz",
787 | "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==",
788 | "cpu": [
789 | "arm64"
790 | ],
791 | "dev": true,
792 | "license": "MIT",
793 | "optional": true,
794 | "os": [
795 | "freebsd"
796 | ]
797 | },
798 | "node_modules/@rollup/rollup-freebsd-x64": {
799 | "version": "4.41.1",
800 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz",
801 | "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==",
802 | "cpu": [
803 | "x64"
804 | ],
805 | "dev": true,
806 | "license": "MIT",
807 | "optional": true,
808 | "os": [
809 | "freebsd"
810 | ]
811 | },
812 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
813 | "version": "4.41.1",
814 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz",
815 | "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==",
816 | "cpu": [
817 | "arm"
818 | ],
819 | "dev": true,
820 | "license": "MIT",
821 | "optional": true,
822 | "os": [
823 | "linux"
824 | ]
825 | },
826 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
827 | "version": "4.41.1",
828 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz",
829 | "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==",
830 | "cpu": [
831 | "arm"
832 | ],
833 | "dev": true,
834 | "license": "MIT",
835 | "optional": true,
836 | "os": [
837 | "linux"
838 | ]
839 | },
840 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
841 | "version": "4.41.1",
842 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz",
843 | "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==",
844 | "cpu": [
845 | "arm64"
846 | ],
847 | "dev": true,
848 | "license": "MIT",
849 | "optional": true,
850 | "os": [
851 | "linux"
852 | ]
853 | },
854 | "node_modules/@rollup/rollup-linux-arm64-musl": {
855 | "version": "4.41.1",
856 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz",
857 | "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==",
858 | "cpu": [
859 | "arm64"
860 | ],
861 | "dev": true,
862 | "license": "MIT",
863 | "optional": true,
864 | "os": [
865 | "linux"
866 | ]
867 | },
868 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
869 | "version": "4.41.1",
870 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz",
871 | "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==",
872 | "cpu": [
873 | "loong64"
874 | ],
875 | "dev": true,
876 | "license": "MIT",
877 | "optional": true,
878 | "os": [
879 | "linux"
880 | ]
881 | },
882 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
883 | "version": "4.41.1",
884 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz",
885 | "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==",
886 | "cpu": [
887 | "ppc64"
888 | ],
889 | "dev": true,
890 | "license": "MIT",
891 | "optional": true,
892 | "os": [
893 | "linux"
894 | ]
895 | },
896 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
897 | "version": "4.41.1",
898 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz",
899 | "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==",
900 | "cpu": [
901 | "riscv64"
902 | ],
903 | "dev": true,
904 | "license": "MIT",
905 | "optional": true,
906 | "os": [
907 | "linux"
908 | ]
909 | },
910 | "node_modules/@rollup/rollup-linux-riscv64-musl": {
911 | "version": "4.41.1",
912 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz",
913 | "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==",
914 | "cpu": [
915 | "riscv64"
916 | ],
917 | "dev": true,
918 | "license": "MIT",
919 | "optional": true,
920 | "os": [
921 | "linux"
922 | ]
923 | },
924 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
925 | "version": "4.41.1",
926 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz",
927 | "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==",
928 | "cpu": [
929 | "s390x"
930 | ],
931 | "dev": true,
932 | "license": "MIT",
933 | "optional": true,
934 | "os": [
935 | "linux"
936 | ]
937 | },
938 | "node_modules/@rollup/rollup-linux-x64-gnu": {
939 | "version": "4.41.1",
940 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz",
941 | "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==",
942 | "cpu": [
943 | "x64"
944 | ],
945 | "dev": true,
946 | "license": "MIT",
947 | "optional": true,
948 | "os": [
949 | "linux"
950 | ]
951 | },
952 | "node_modules/@rollup/rollup-linux-x64-musl": {
953 | "version": "4.41.1",
954 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz",
955 | "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==",
956 | "cpu": [
957 | "x64"
958 | ],
959 | "dev": true,
960 | "license": "MIT",
961 | "optional": true,
962 | "os": [
963 | "linux"
964 | ]
965 | },
966 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
967 | "version": "4.41.1",
968 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz",
969 | "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==",
970 | "cpu": [
971 | "arm64"
972 | ],
973 | "dev": true,
974 | "license": "MIT",
975 | "optional": true,
976 | "os": [
977 | "win32"
978 | ]
979 | },
980 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
981 | "version": "4.41.1",
982 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz",
983 | "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==",
984 | "cpu": [
985 | "ia32"
986 | ],
987 | "dev": true,
988 | "license": "MIT",
989 | "optional": true,
990 | "os": [
991 | "win32"
992 | ]
993 | },
994 | "node_modules/@rollup/rollup-win32-x64-msvc": {
995 | "version": "4.41.1",
996 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz",
997 | "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==",
998 | "cpu": [
999 | "x64"
1000 | ],
1001 | "dev": true,
1002 | "license": "MIT",
1003 | "optional": true,
1004 | "os": [
1005 | "win32"
1006 | ]
1007 | },
1008 | "node_modules/@types/estree": {
1009 | "version": "1.0.7",
1010 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
1011 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
1012 | "dev": true,
1013 | "license": "MIT"
1014 | },
1015 | "node_modules/@vitest/coverage-v8": {
1016 | "version": "3.1.4",
1017 | "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.4.tgz",
1018 | "integrity": "sha512-G4p6OtioySL+hPV7Y6JHlhpsODbJzt1ndwHAFkyk6vVjpK03PFsKnauZIzcd0PrK4zAbc5lc+jeZ+eNGiMA+iw==",
1019 | "dev": true,
1020 | "license": "MIT",
1021 | "dependencies": {
1022 | "@ampproject/remapping": "^2.3.0",
1023 | "@bcoe/v8-coverage": "^1.0.2",
1024 | "debug": "^4.4.0",
1025 | "istanbul-lib-coverage": "^3.2.2",
1026 | "istanbul-lib-report": "^3.0.1",
1027 | "istanbul-lib-source-maps": "^5.0.6",
1028 | "istanbul-reports": "^3.1.7",
1029 | "magic-string": "^0.30.17",
1030 | "magicast": "^0.3.5",
1031 | "std-env": "^3.9.0",
1032 | "test-exclude": "^7.0.1",
1033 | "tinyrainbow": "^2.0.0"
1034 | },
1035 | "funding": {
1036 | "url": "https://opencollective.com/vitest"
1037 | },
1038 | "peerDependencies": {
1039 | "@vitest/browser": "3.1.4",
1040 | "vitest": "3.1.4"
1041 | },
1042 | "peerDependenciesMeta": {
1043 | "@vitest/browser": {
1044 | "optional": true
1045 | }
1046 | }
1047 | },
1048 | "node_modules/@vitest/expect": {
1049 | "version": "3.1.4",
1050 | "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.4.tgz",
1051 | "integrity": "sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==",
1052 | "dev": true,
1053 | "license": "MIT",
1054 | "dependencies": {
1055 | "@vitest/spy": "3.1.4",
1056 | "@vitest/utils": "3.1.4",
1057 | "chai": "^5.2.0",
1058 | "tinyrainbow": "^2.0.0"
1059 | },
1060 | "funding": {
1061 | "url": "https://opencollective.com/vitest"
1062 | }
1063 | },
1064 | "node_modules/@vitest/mocker": {
1065 | "version": "3.1.4",
1066 | "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.4.tgz",
1067 | "integrity": "sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==",
1068 | "dev": true,
1069 | "license": "MIT",
1070 | "dependencies": {
1071 | "@vitest/spy": "3.1.4",
1072 | "estree-walker": "^3.0.3",
1073 | "magic-string": "^0.30.17"
1074 | },
1075 | "funding": {
1076 | "url": "https://opencollective.com/vitest"
1077 | },
1078 | "peerDependencies": {
1079 | "msw": "^2.4.9",
1080 | "vite": "^5.0.0 || ^6.0.0"
1081 | },
1082 | "peerDependenciesMeta": {
1083 | "msw": {
1084 | "optional": true
1085 | },
1086 | "vite": {
1087 | "optional": true
1088 | }
1089 | }
1090 | },
1091 | "node_modules/@vitest/pretty-format": {
1092 | "version": "3.1.4",
1093 | "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.4.tgz",
1094 | "integrity": "sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==",
1095 | "dev": true,
1096 | "license": "MIT",
1097 | "dependencies": {
1098 | "tinyrainbow": "^2.0.0"
1099 | },
1100 | "funding": {
1101 | "url": "https://opencollective.com/vitest"
1102 | }
1103 | },
1104 | "node_modules/@vitest/runner": {
1105 | "version": "3.1.4",
1106 | "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.4.tgz",
1107 | "integrity": "sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==",
1108 | "dev": true,
1109 | "license": "MIT",
1110 | "dependencies": {
1111 | "@vitest/utils": "3.1.4",
1112 | "pathe": "^2.0.3"
1113 | },
1114 | "funding": {
1115 | "url": "https://opencollective.com/vitest"
1116 | }
1117 | },
1118 | "node_modules/@vitest/snapshot": {
1119 | "version": "3.1.4",
1120 | "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.4.tgz",
1121 | "integrity": "sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==",
1122 | "dev": true,
1123 | "license": "MIT",
1124 | "dependencies": {
1125 | "@vitest/pretty-format": "3.1.4",
1126 | "magic-string": "^0.30.17",
1127 | "pathe": "^2.0.3"
1128 | },
1129 | "funding": {
1130 | "url": "https://opencollective.com/vitest"
1131 | }
1132 | },
1133 | "node_modules/@vitest/spy": {
1134 | "version": "3.1.4",
1135 | "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.4.tgz",
1136 | "integrity": "sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==",
1137 | "dev": true,
1138 | "license": "MIT",
1139 | "dependencies": {
1140 | "tinyspy": "^3.0.2"
1141 | },
1142 | "funding": {
1143 | "url": "https://opencollective.com/vitest"
1144 | }
1145 | },
1146 | "node_modules/@vitest/utils": {
1147 | "version": "3.1.4",
1148 | "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.4.tgz",
1149 | "integrity": "sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==",
1150 | "dev": true,
1151 | "license": "MIT",
1152 | "dependencies": {
1153 | "@vitest/pretty-format": "3.1.4",
1154 | "loupe": "^3.1.3",
1155 | "tinyrainbow": "^2.0.0"
1156 | },
1157 | "funding": {
1158 | "url": "https://opencollective.com/vitest"
1159 | }
1160 | },
1161 | "node_modules/ansi-regex": {
1162 | "version": "5.0.1",
1163 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1164 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1165 | "dev": true,
1166 | "engines": {
1167 | "node": ">=8"
1168 | }
1169 | },
1170 | "node_modules/any-promise": {
1171 | "version": "1.3.0",
1172 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
1173 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
1174 | "dev": true
1175 | },
1176 | "node_modules/anymatch": {
1177 | "version": "3.1.3",
1178 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1179 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1180 | "dev": true,
1181 | "dependencies": {
1182 | "normalize-path": "^3.0.0",
1183 | "picomatch": "^2.0.4"
1184 | },
1185 | "engines": {
1186 | "node": ">= 8"
1187 | }
1188 | },
1189 | "node_modules/arg": {
1190 | "version": "5.0.2",
1191 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1192 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1193 | "dev": true
1194 | },
1195 | "node_modules/assertion-error": {
1196 | "version": "2.0.1",
1197 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
1198 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
1199 | "dev": true,
1200 | "license": "MIT",
1201 | "engines": {
1202 | "node": ">=12"
1203 | }
1204 | },
1205 | "node_modules/balanced-match": {
1206 | "version": "1.0.2",
1207 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1208 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1209 | "dev": true
1210 | },
1211 | "node_modules/binary-extensions": {
1212 | "version": "2.3.0",
1213 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1214 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
1215 | "dev": true,
1216 | "engines": {
1217 | "node": ">=8"
1218 | },
1219 | "funding": {
1220 | "url": "https://github.com/sponsors/sindresorhus"
1221 | }
1222 | },
1223 | "node_modules/brace-expansion": {
1224 | "version": "2.0.1",
1225 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1226 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1227 | "dev": true,
1228 | "dependencies": {
1229 | "balanced-match": "^1.0.0"
1230 | }
1231 | },
1232 | "node_modules/braces": {
1233 | "version": "3.0.3",
1234 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1235 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1236 | "dev": true,
1237 | "dependencies": {
1238 | "fill-range": "^7.1.1"
1239 | },
1240 | "engines": {
1241 | "node": ">=8"
1242 | }
1243 | },
1244 | "node_modules/cac": {
1245 | "version": "6.7.14",
1246 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
1247 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
1248 | "dev": true,
1249 | "license": "MIT",
1250 | "engines": {
1251 | "node": ">=8"
1252 | }
1253 | },
1254 | "node_modules/camelcase-css": {
1255 | "version": "2.0.1",
1256 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1257 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1258 | "dev": true,
1259 | "engines": {
1260 | "node": ">= 6"
1261 | }
1262 | },
1263 | "node_modules/chai": {
1264 | "version": "5.2.0",
1265 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
1266 | "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
1267 | "dev": true,
1268 | "license": "MIT",
1269 | "dependencies": {
1270 | "assertion-error": "^2.0.1",
1271 | "check-error": "^2.1.1",
1272 | "deep-eql": "^5.0.1",
1273 | "loupe": "^3.1.0",
1274 | "pathval": "^2.0.0"
1275 | },
1276 | "engines": {
1277 | "node": ">=12"
1278 | }
1279 | },
1280 | "node_modules/check-error": {
1281 | "version": "2.1.1",
1282 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
1283 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
1284 | "dev": true,
1285 | "license": "MIT",
1286 | "engines": {
1287 | "node": ">= 16"
1288 | }
1289 | },
1290 | "node_modules/chokidar": {
1291 | "version": "3.6.0",
1292 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1293 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1294 | "dev": true,
1295 | "dependencies": {
1296 | "anymatch": "~3.1.2",
1297 | "braces": "~3.0.2",
1298 | "glob-parent": "~5.1.2",
1299 | "is-binary-path": "~2.1.0",
1300 | "is-glob": "~4.0.1",
1301 | "normalize-path": "~3.0.0",
1302 | "readdirp": "~3.6.0"
1303 | },
1304 | "engines": {
1305 | "node": ">= 8.10.0"
1306 | },
1307 | "funding": {
1308 | "url": "https://paulmillr.com/funding/"
1309 | },
1310 | "optionalDependencies": {
1311 | "fsevents": "~2.3.2"
1312 | }
1313 | },
1314 | "node_modules/cross-spawn": {
1315 | "version": "7.0.3",
1316 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1317 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1318 | "dev": true,
1319 | "dependencies": {
1320 | "path-key": "^3.1.0",
1321 | "shebang-command": "^2.0.0",
1322 | "which": "^2.0.1"
1323 | },
1324 | "engines": {
1325 | "node": ">= 8"
1326 | }
1327 | },
1328 | "node_modules/cssesc": {
1329 | "version": "3.0.0",
1330 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1331 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1332 | "dev": true,
1333 | "bin": {
1334 | "cssesc": "bin/cssesc"
1335 | },
1336 | "engines": {
1337 | "node": ">=4"
1338 | }
1339 | },
1340 | "node_modules/debug": {
1341 | "version": "4.4.0",
1342 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1343 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1344 | "dev": true,
1345 | "license": "MIT",
1346 | "dependencies": {
1347 | "ms": "^2.1.3"
1348 | },
1349 | "engines": {
1350 | "node": ">=6.0"
1351 | },
1352 | "peerDependenciesMeta": {
1353 | "supports-color": {
1354 | "optional": true
1355 | }
1356 | }
1357 | },
1358 | "node_modules/deep-eql": {
1359 | "version": "5.0.2",
1360 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
1361 | "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
1362 | "dev": true,
1363 | "license": "MIT",
1364 | "engines": {
1365 | "node": ">=6"
1366 | }
1367 | },
1368 | "node_modules/didyoumean": {
1369 | "version": "1.2.2",
1370 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1371 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1372 | "dev": true
1373 | },
1374 | "node_modules/dlv": {
1375 | "version": "1.1.3",
1376 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1377 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1378 | "dev": true
1379 | },
1380 | "node_modules/eastasianwidth": {
1381 | "version": "0.2.0",
1382 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1383 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1384 | "dev": true
1385 | },
1386 | "node_modules/emoji-regex": {
1387 | "version": "8.0.0",
1388 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1389 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1390 | "dev": true
1391 | },
1392 | "node_modules/es-module-lexer": {
1393 | "version": "1.7.0",
1394 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
1395 | "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
1396 | "dev": true,
1397 | "license": "MIT"
1398 | },
1399 | "node_modules/esbuild": {
1400 | "version": "0.25.4",
1401 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz",
1402 | "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==",
1403 | "dev": true,
1404 | "hasInstallScript": true,
1405 | "license": "MIT",
1406 | "bin": {
1407 | "esbuild": "bin/esbuild"
1408 | },
1409 | "engines": {
1410 | "node": ">=18"
1411 | },
1412 | "optionalDependencies": {
1413 | "@esbuild/aix-ppc64": "0.25.4",
1414 | "@esbuild/android-arm": "0.25.4",
1415 | "@esbuild/android-arm64": "0.25.4",
1416 | "@esbuild/android-x64": "0.25.4",
1417 | "@esbuild/darwin-arm64": "0.25.4",
1418 | "@esbuild/darwin-x64": "0.25.4",
1419 | "@esbuild/freebsd-arm64": "0.25.4",
1420 | "@esbuild/freebsd-x64": "0.25.4",
1421 | "@esbuild/linux-arm": "0.25.4",
1422 | "@esbuild/linux-arm64": "0.25.4",
1423 | "@esbuild/linux-ia32": "0.25.4",
1424 | "@esbuild/linux-loong64": "0.25.4",
1425 | "@esbuild/linux-mips64el": "0.25.4",
1426 | "@esbuild/linux-ppc64": "0.25.4",
1427 | "@esbuild/linux-riscv64": "0.25.4",
1428 | "@esbuild/linux-s390x": "0.25.4",
1429 | "@esbuild/linux-x64": "0.25.4",
1430 | "@esbuild/netbsd-arm64": "0.25.4",
1431 | "@esbuild/netbsd-x64": "0.25.4",
1432 | "@esbuild/openbsd-arm64": "0.25.4",
1433 | "@esbuild/openbsd-x64": "0.25.4",
1434 | "@esbuild/sunos-x64": "0.25.4",
1435 | "@esbuild/win32-arm64": "0.25.4",
1436 | "@esbuild/win32-ia32": "0.25.4",
1437 | "@esbuild/win32-x64": "0.25.4"
1438 | }
1439 | },
1440 | "node_modules/estree-walker": {
1441 | "version": "3.0.3",
1442 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
1443 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
1444 | "dev": true,
1445 | "license": "MIT",
1446 | "dependencies": {
1447 | "@types/estree": "^1.0.0"
1448 | }
1449 | },
1450 | "node_modules/expect-type": {
1451 | "version": "1.2.1",
1452 | "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz",
1453 | "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==",
1454 | "dev": true,
1455 | "license": "Apache-2.0",
1456 | "engines": {
1457 | "node": ">=12.0.0"
1458 | }
1459 | },
1460 | "node_modules/fast-glob": {
1461 | "version": "3.3.2",
1462 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
1463 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
1464 | "dev": true,
1465 | "dependencies": {
1466 | "@nodelib/fs.stat": "^2.0.2",
1467 | "@nodelib/fs.walk": "^1.2.3",
1468 | "glob-parent": "^5.1.2",
1469 | "merge2": "^1.3.0",
1470 | "micromatch": "^4.0.4"
1471 | },
1472 | "engines": {
1473 | "node": ">=8.6.0"
1474 | }
1475 | },
1476 | "node_modules/fastq": {
1477 | "version": "1.17.0",
1478 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
1479 | "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
1480 | "dev": true,
1481 | "dependencies": {
1482 | "reusify": "^1.0.4"
1483 | }
1484 | },
1485 | "node_modules/fill-range": {
1486 | "version": "7.1.1",
1487 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1488 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1489 | "dev": true,
1490 | "dependencies": {
1491 | "to-regex-range": "^5.0.1"
1492 | },
1493 | "engines": {
1494 | "node": ">=8"
1495 | }
1496 | },
1497 | "node_modules/foreground-child": {
1498 | "version": "3.1.1",
1499 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
1500 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
1501 | "dev": true,
1502 | "dependencies": {
1503 | "cross-spawn": "^7.0.0",
1504 | "signal-exit": "^4.0.1"
1505 | },
1506 | "engines": {
1507 | "node": ">=14"
1508 | },
1509 | "funding": {
1510 | "url": "https://github.com/sponsors/isaacs"
1511 | }
1512 | },
1513 | "node_modules/fsevents": {
1514 | "version": "2.3.3",
1515 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1516 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1517 | "dev": true,
1518 | "hasInstallScript": true,
1519 | "optional": true,
1520 | "os": [
1521 | "darwin"
1522 | ],
1523 | "engines": {
1524 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1525 | }
1526 | },
1527 | "node_modules/function-bind": {
1528 | "version": "1.1.2",
1529 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1530 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1531 | "dev": true,
1532 | "funding": {
1533 | "url": "https://github.com/sponsors/ljharb"
1534 | }
1535 | },
1536 | "node_modules/glob-parent": {
1537 | "version": "5.1.2",
1538 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1539 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1540 | "dev": true,
1541 | "dependencies": {
1542 | "is-glob": "^4.0.1"
1543 | },
1544 | "engines": {
1545 | "node": ">= 6"
1546 | }
1547 | },
1548 | "node_modules/has-flag": {
1549 | "version": "4.0.0",
1550 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1551 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1552 | "dev": true,
1553 | "engines": {
1554 | "node": ">=8"
1555 | }
1556 | },
1557 | "node_modules/hasown": {
1558 | "version": "2.0.0",
1559 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
1560 | "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
1561 | "dev": true,
1562 | "dependencies": {
1563 | "function-bind": "^1.1.2"
1564 | },
1565 | "engines": {
1566 | "node": ">= 0.4"
1567 | }
1568 | },
1569 | "node_modules/html-escaper": {
1570 | "version": "2.0.2",
1571 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
1572 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
1573 | "dev": true
1574 | },
1575 | "node_modules/is-binary-path": {
1576 | "version": "2.1.0",
1577 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1578 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1579 | "dev": true,
1580 | "dependencies": {
1581 | "binary-extensions": "^2.0.0"
1582 | },
1583 | "engines": {
1584 | "node": ">=8"
1585 | }
1586 | },
1587 | "node_modules/is-core-module": {
1588 | "version": "2.13.1",
1589 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
1590 | "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
1591 | "dev": true,
1592 | "dependencies": {
1593 | "hasown": "^2.0.0"
1594 | },
1595 | "funding": {
1596 | "url": "https://github.com/sponsors/ljharb"
1597 | }
1598 | },
1599 | "node_modules/is-extglob": {
1600 | "version": "2.1.1",
1601 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1602 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1603 | "dev": true,
1604 | "engines": {
1605 | "node": ">=0.10.0"
1606 | }
1607 | },
1608 | "node_modules/is-fullwidth-code-point": {
1609 | "version": "3.0.0",
1610 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1611 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1612 | "dev": true,
1613 | "engines": {
1614 | "node": ">=8"
1615 | }
1616 | },
1617 | "node_modules/is-glob": {
1618 | "version": "4.0.3",
1619 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1620 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1621 | "dev": true,
1622 | "dependencies": {
1623 | "is-extglob": "^2.1.1"
1624 | },
1625 | "engines": {
1626 | "node": ">=0.10.0"
1627 | }
1628 | },
1629 | "node_modules/is-number": {
1630 | "version": "7.0.0",
1631 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1632 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1633 | "dev": true,
1634 | "engines": {
1635 | "node": ">=0.12.0"
1636 | }
1637 | },
1638 | "node_modules/isexe": {
1639 | "version": "2.0.0",
1640 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1641 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1642 | "dev": true
1643 | },
1644 | "node_modules/istanbul-lib-coverage": {
1645 | "version": "3.2.2",
1646 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
1647 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
1648 | "dev": true,
1649 | "engines": {
1650 | "node": ">=8"
1651 | }
1652 | },
1653 | "node_modules/istanbul-lib-report": {
1654 | "version": "3.0.1",
1655 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
1656 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
1657 | "dev": true,
1658 | "dependencies": {
1659 | "istanbul-lib-coverage": "^3.0.0",
1660 | "make-dir": "^4.0.0",
1661 | "supports-color": "^7.1.0"
1662 | },
1663 | "engines": {
1664 | "node": ">=10"
1665 | }
1666 | },
1667 | "node_modules/istanbul-lib-source-maps": {
1668 | "version": "5.0.6",
1669 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
1670 | "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
1671 | "dev": true,
1672 | "dependencies": {
1673 | "@jridgewell/trace-mapping": "^0.3.23",
1674 | "debug": "^4.1.1",
1675 | "istanbul-lib-coverage": "^3.0.0"
1676 | },
1677 | "engines": {
1678 | "node": ">=10"
1679 | }
1680 | },
1681 | "node_modules/istanbul-reports": {
1682 | "version": "3.1.7",
1683 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
1684 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
1685 | "dev": true,
1686 | "dependencies": {
1687 | "html-escaper": "^2.0.0",
1688 | "istanbul-lib-report": "^3.0.0"
1689 | },
1690 | "engines": {
1691 | "node": ">=8"
1692 | }
1693 | },
1694 | "node_modules/jackspeak": {
1695 | "version": "2.3.6",
1696 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
1697 | "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
1698 | "dev": true,
1699 | "dependencies": {
1700 | "@isaacs/cliui": "^8.0.2"
1701 | },
1702 | "engines": {
1703 | "node": ">=14"
1704 | },
1705 | "funding": {
1706 | "url": "https://github.com/sponsors/isaacs"
1707 | },
1708 | "optionalDependencies": {
1709 | "@pkgjs/parseargs": "^0.11.0"
1710 | }
1711 | },
1712 | "node_modules/jiti": {
1713 | "version": "1.21.6",
1714 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
1715 | "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
1716 | "dev": true,
1717 | "bin": {
1718 | "jiti": "bin/jiti.js"
1719 | }
1720 | },
1721 | "node_modules/lilconfig": {
1722 | "version": "3.1.3",
1723 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1724 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1725 | "dev": true,
1726 | "engines": {
1727 | "node": ">=14"
1728 | },
1729 | "funding": {
1730 | "url": "https://github.com/sponsors/antonk52"
1731 | }
1732 | },
1733 | "node_modules/lines-and-columns": {
1734 | "version": "1.2.4",
1735 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1736 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1737 | "dev": true
1738 | },
1739 | "node_modules/loupe": {
1740 | "version": "3.1.3",
1741 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
1742 | "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
1743 | "dev": true,
1744 | "license": "MIT"
1745 | },
1746 | "node_modules/lru-cache": {
1747 | "version": "10.2.0",
1748 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
1749 | "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
1750 | "dev": true,
1751 | "engines": {
1752 | "node": "14 || >=16.14"
1753 | }
1754 | },
1755 | "node_modules/magic-string": {
1756 | "version": "0.30.17",
1757 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
1758 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
1759 | "dev": true,
1760 | "license": "MIT",
1761 | "dependencies": {
1762 | "@jridgewell/sourcemap-codec": "^1.5.0"
1763 | }
1764 | },
1765 | "node_modules/magicast": {
1766 | "version": "0.3.5",
1767 | "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
1768 | "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
1769 | "dev": true,
1770 | "dependencies": {
1771 | "@babel/parser": "^7.25.4",
1772 | "@babel/types": "^7.25.4",
1773 | "source-map-js": "^1.2.0"
1774 | }
1775 | },
1776 | "node_modules/make-dir": {
1777 | "version": "4.0.0",
1778 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
1779 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
1780 | "dev": true,
1781 | "dependencies": {
1782 | "semver": "^7.5.3"
1783 | },
1784 | "engines": {
1785 | "node": ">=10"
1786 | },
1787 | "funding": {
1788 | "url": "https://github.com/sponsors/sindresorhus"
1789 | }
1790 | },
1791 | "node_modules/merge2": {
1792 | "version": "1.4.1",
1793 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1794 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1795 | "dev": true,
1796 | "engines": {
1797 | "node": ">= 8"
1798 | }
1799 | },
1800 | "node_modules/micromatch": {
1801 | "version": "4.0.8",
1802 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1803 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1804 | "dev": true,
1805 | "dependencies": {
1806 | "braces": "^3.0.3",
1807 | "picomatch": "^2.3.1"
1808 | },
1809 | "engines": {
1810 | "node": ">=8.6"
1811 | }
1812 | },
1813 | "node_modules/minimatch": {
1814 | "version": "9.0.5",
1815 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1816 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1817 | "dev": true,
1818 | "dependencies": {
1819 | "brace-expansion": "^2.0.1"
1820 | },
1821 | "engines": {
1822 | "node": ">=16 || 14 >=14.17"
1823 | },
1824 | "funding": {
1825 | "url": "https://github.com/sponsors/isaacs"
1826 | }
1827 | },
1828 | "node_modules/minipass": {
1829 | "version": "7.1.2",
1830 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1831 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1832 | "dev": true,
1833 | "engines": {
1834 | "node": ">=16 || 14 >=14.17"
1835 | }
1836 | },
1837 | "node_modules/ms": {
1838 | "version": "2.1.3",
1839 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1840 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1841 | "dev": true
1842 | },
1843 | "node_modules/mz": {
1844 | "version": "2.7.0",
1845 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1846 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1847 | "dev": true,
1848 | "dependencies": {
1849 | "any-promise": "^1.0.0",
1850 | "object-assign": "^4.0.1",
1851 | "thenify-all": "^1.0.0"
1852 | }
1853 | },
1854 | "node_modules/nanoid": {
1855 | "version": "3.3.11",
1856 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1857 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1858 | "dev": true,
1859 | "funding": [
1860 | {
1861 | "type": "github",
1862 | "url": "https://github.com/sponsors/ai"
1863 | }
1864 | ],
1865 | "license": "MIT",
1866 | "bin": {
1867 | "nanoid": "bin/nanoid.cjs"
1868 | },
1869 | "engines": {
1870 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1871 | }
1872 | },
1873 | "node_modules/normalize-path": {
1874 | "version": "3.0.0",
1875 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1876 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1877 | "dev": true,
1878 | "engines": {
1879 | "node": ">=0.10.0"
1880 | }
1881 | },
1882 | "node_modules/object-assign": {
1883 | "version": "4.1.1",
1884 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1885 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1886 | "dev": true,
1887 | "engines": {
1888 | "node": ">=0.10.0"
1889 | }
1890 | },
1891 | "node_modules/object-hash": {
1892 | "version": "3.0.0",
1893 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1894 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1895 | "dev": true,
1896 | "engines": {
1897 | "node": ">= 6"
1898 | }
1899 | },
1900 | "node_modules/package-json-from-dist": {
1901 | "version": "1.0.0",
1902 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
1903 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
1904 | "dev": true
1905 | },
1906 | "node_modules/path-key": {
1907 | "version": "3.1.1",
1908 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1909 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1910 | "dev": true,
1911 | "engines": {
1912 | "node": ">=8"
1913 | }
1914 | },
1915 | "node_modules/path-parse": {
1916 | "version": "1.0.7",
1917 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1918 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1919 | "dev": true
1920 | },
1921 | "node_modules/path-scurry": {
1922 | "version": "1.11.1",
1923 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1924 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1925 | "dev": true,
1926 | "dependencies": {
1927 | "lru-cache": "^10.2.0",
1928 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1929 | },
1930 | "engines": {
1931 | "node": ">=16 || 14 >=14.18"
1932 | },
1933 | "funding": {
1934 | "url": "https://github.com/sponsors/isaacs"
1935 | }
1936 | },
1937 | "node_modules/pathe": {
1938 | "version": "2.0.3",
1939 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
1940 | "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
1941 | "dev": true,
1942 | "license": "MIT"
1943 | },
1944 | "node_modules/pathval": {
1945 | "version": "2.0.0",
1946 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
1947 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
1948 | "dev": true,
1949 | "license": "MIT",
1950 | "engines": {
1951 | "node": ">= 14.16"
1952 | }
1953 | },
1954 | "node_modules/picocolors": {
1955 | "version": "1.1.1",
1956 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1957 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1958 | "dev": true
1959 | },
1960 | "node_modules/picomatch": {
1961 | "version": "2.3.1",
1962 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1963 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1964 | "dev": true,
1965 | "engines": {
1966 | "node": ">=8.6"
1967 | },
1968 | "funding": {
1969 | "url": "https://github.com/sponsors/jonschlinkert"
1970 | }
1971 | },
1972 | "node_modules/pify": {
1973 | "version": "2.3.0",
1974 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1975 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1976 | "dev": true,
1977 | "engines": {
1978 | "node": ">=0.10.0"
1979 | }
1980 | },
1981 | "node_modules/pirates": {
1982 | "version": "4.0.6",
1983 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1984 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1985 | "dev": true,
1986 | "engines": {
1987 | "node": ">= 6"
1988 | }
1989 | },
1990 | "node_modules/postcss": {
1991 | "version": "8.5.4",
1992 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz",
1993 | "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==",
1994 | "dev": true,
1995 | "funding": [
1996 | {
1997 | "type": "opencollective",
1998 | "url": "https://opencollective.com/postcss/"
1999 | },
2000 | {
2001 | "type": "tidelift",
2002 | "url": "https://tidelift.com/funding/github/npm/postcss"
2003 | },
2004 | {
2005 | "type": "github",
2006 | "url": "https://github.com/sponsors/ai"
2007 | }
2008 | ],
2009 | "license": "MIT",
2010 | "dependencies": {
2011 | "nanoid": "^3.3.11",
2012 | "picocolors": "^1.1.1",
2013 | "source-map-js": "^1.2.1"
2014 | },
2015 | "engines": {
2016 | "node": "^10 || ^12 || >=14"
2017 | }
2018 | },
2019 | "node_modules/postcss-import": {
2020 | "version": "15.1.0",
2021 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
2022 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
2023 | "dev": true,
2024 | "dependencies": {
2025 | "postcss-value-parser": "^4.0.0",
2026 | "read-cache": "^1.0.0",
2027 | "resolve": "^1.1.7"
2028 | },
2029 | "engines": {
2030 | "node": ">=14.0.0"
2031 | },
2032 | "peerDependencies": {
2033 | "postcss": "^8.0.0"
2034 | }
2035 | },
2036 | "node_modules/postcss-js": {
2037 | "version": "4.0.1",
2038 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
2039 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
2040 | "dev": true,
2041 | "dependencies": {
2042 | "camelcase-css": "^2.0.1"
2043 | },
2044 | "engines": {
2045 | "node": "^12 || ^14 || >= 16"
2046 | },
2047 | "funding": {
2048 | "type": "opencollective",
2049 | "url": "https://opencollective.com/postcss/"
2050 | },
2051 | "peerDependencies": {
2052 | "postcss": "^8.4.21"
2053 | }
2054 | },
2055 | "node_modules/postcss-load-config": {
2056 | "version": "4.0.2",
2057 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
2058 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
2059 | "dev": true,
2060 | "funding": [
2061 | {
2062 | "type": "opencollective",
2063 | "url": "https://opencollective.com/postcss/"
2064 | },
2065 | {
2066 | "type": "github",
2067 | "url": "https://github.com/sponsors/ai"
2068 | }
2069 | ],
2070 | "dependencies": {
2071 | "lilconfig": "^3.0.0",
2072 | "yaml": "^2.3.4"
2073 | },
2074 | "engines": {
2075 | "node": ">= 14"
2076 | },
2077 | "peerDependencies": {
2078 | "postcss": ">=8.0.9",
2079 | "ts-node": ">=9.0.0"
2080 | },
2081 | "peerDependenciesMeta": {
2082 | "postcss": {
2083 | "optional": true
2084 | },
2085 | "ts-node": {
2086 | "optional": true
2087 | }
2088 | }
2089 | },
2090 | "node_modules/postcss-nested": {
2091 | "version": "6.2.0",
2092 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
2093 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
2094 | "dev": true,
2095 | "funding": [
2096 | {
2097 | "type": "opencollective",
2098 | "url": "https://opencollective.com/postcss/"
2099 | },
2100 | {
2101 | "type": "github",
2102 | "url": "https://github.com/sponsors/ai"
2103 | }
2104 | ],
2105 | "dependencies": {
2106 | "postcss-selector-parser": "^6.1.1"
2107 | },
2108 | "engines": {
2109 | "node": ">=12.0"
2110 | },
2111 | "peerDependencies": {
2112 | "postcss": "^8.2.14"
2113 | }
2114 | },
2115 | "node_modules/postcss-selector-parser": {
2116 | "version": "6.1.2",
2117 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
2118 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
2119 | "dev": true,
2120 | "dependencies": {
2121 | "cssesc": "^3.0.0",
2122 | "util-deprecate": "^1.0.2"
2123 | },
2124 | "engines": {
2125 | "node": ">=4"
2126 | }
2127 | },
2128 | "node_modules/postcss-value-parser": {
2129 | "version": "4.2.0",
2130 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2131 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2132 | "dev": true
2133 | },
2134 | "node_modules/queue-microtask": {
2135 | "version": "1.2.3",
2136 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2137 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2138 | "dev": true,
2139 | "funding": [
2140 | {
2141 | "type": "github",
2142 | "url": "https://github.com/sponsors/feross"
2143 | },
2144 | {
2145 | "type": "patreon",
2146 | "url": "https://www.patreon.com/feross"
2147 | },
2148 | {
2149 | "type": "consulting",
2150 | "url": "https://feross.org/support"
2151 | }
2152 | ]
2153 | },
2154 | "node_modules/read-cache": {
2155 | "version": "1.0.0",
2156 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2157 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2158 | "dev": true,
2159 | "dependencies": {
2160 | "pify": "^2.3.0"
2161 | }
2162 | },
2163 | "node_modules/readdirp": {
2164 | "version": "3.6.0",
2165 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2166 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2167 | "dev": true,
2168 | "dependencies": {
2169 | "picomatch": "^2.2.1"
2170 | },
2171 | "engines": {
2172 | "node": ">=8.10.0"
2173 | }
2174 | },
2175 | "node_modules/resolve": {
2176 | "version": "1.22.8",
2177 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
2178 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
2179 | "dev": true,
2180 | "dependencies": {
2181 | "is-core-module": "^2.13.0",
2182 | "path-parse": "^1.0.7",
2183 | "supports-preserve-symlinks-flag": "^1.0.0"
2184 | },
2185 | "bin": {
2186 | "resolve": "bin/resolve"
2187 | },
2188 | "funding": {
2189 | "url": "https://github.com/sponsors/ljharb"
2190 | }
2191 | },
2192 | "node_modules/reusify": {
2193 | "version": "1.0.4",
2194 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2195 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2196 | "dev": true,
2197 | "engines": {
2198 | "iojs": ">=1.0.0",
2199 | "node": ">=0.10.0"
2200 | }
2201 | },
2202 | "node_modules/rollup": {
2203 | "version": "4.41.1",
2204 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz",
2205 | "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==",
2206 | "dev": true,
2207 | "license": "MIT",
2208 | "dependencies": {
2209 | "@types/estree": "1.0.7"
2210 | },
2211 | "bin": {
2212 | "rollup": "dist/bin/rollup"
2213 | },
2214 | "engines": {
2215 | "node": ">=18.0.0",
2216 | "npm": ">=8.0.0"
2217 | },
2218 | "optionalDependencies": {
2219 | "@rollup/rollup-android-arm-eabi": "4.41.1",
2220 | "@rollup/rollup-android-arm64": "4.41.1",
2221 | "@rollup/rollup-darwin-arm64": "4.41.1",
2222 | "@rollup/rollup-darwin-x64": "4.41.1",
2223 | "@rollup/rollup-freebsd-arm64": "4.41.1",
2224 | "@rollup/rollup-freebsd-x64": "4.41.1",
2225 | "@rollup/rollup-linux-arm-gnueabihf": "4.41.1",
2226 | "@rollup/rollup-linux-arm-musleabihf": "4.41.1",
2227 | "@rollup/rollup-linux-arm64-gnu": "4.41.1",
2228 | "@rollup/rollup-linux-arm64-musl": "4.41.1",
2229 | "@rollup/rollup-linux-loongarch64-gnu": "4.41.1",
2230 | "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1",
2231 | "@rollup/rollup-linux-riscv64-gnu": "4.41.1",
2232 | "@rollup/rollup-linux-riscv64-musl": "4.41.1",
2233 | "@rollup/rollup-linux-s390x-gnu": "4.41.1",
2234 | "@rollup/rollup-linux-x64-gnu": "4.41.1",
2235 | "@rollup/rollup-linux-x64-musl": "4.41.1",
2236 | "@rollup/rollup-win32-arm64-msvc": "4.41.1",
2237 | "@rollup/rollup-win32-ia32-msvc": "4.41.1",
2238 | "@rollup/rollup-win32-x64-msvc": "4.41.1",
2239 | "fsevents": "~2.3.2"
2240 | }
2241 | },
2242 | "node_modules/run-parallel": {
2243 | "version": "1.2.0",
2244 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2245 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2246 | "dev": true,
2247 | "funding": [
2248 | {
2249 | "type": "github",
2250 | "url": "https://github.com/sponsors/feross"
2251 | },
2252 | {
2253 | "type": "patreon",
2254 | "url": "https://www.patreon.com/feross"
2255 | },
2256 | {
2257 | "type": "consulting",
2258 | "url": "https://feross.org/support"
2259 | }
2260 | ],
2261 | "dependencies": {
2262 | "queue-microtask": "^1.2.2"
2263 | }
2264 | },
2265 | "node_modules/semver": {
2266 | "version": "7.6.0",
2267 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
2268 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
2269 | "dev": true,
2270 | "dependencies": {
2271 | "lru-cache": "^6.0.0"
2272 | },
2273 | "bin": {
2274 | "semver": "bin/semver.js"
2275 | },
2276 | "engines": {
2277 | "node": ">=10"
2278 | }
2279 | },
2280 | "node_modules/semver/node_modules/lru-cache": {
2281 | "version": "6.0.0",
2282 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
2283 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
2284 | "dev": true,
2285 | "dependencies": {
2286 | "yallist": "^4.0.0"
2287 | },
2288 | "engines": {
2289 | "node": ">=10"
2290 | }
2291 | },
2292 | "node_modules/shebang-command": {
2293 | "version": "2.0.0",
2294 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2295 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2296 | "dev": true,
2297 | "dependencies": {
2298 | "shebang-regex": "^3.0.0"
2299 | },
2300 | "engines": {
2301 | "node": ">=8"
2302 | }
2303 | },
2304 | "node_modules/shebang-regex": {
2305 | "version": "3.0.0",
2306 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2307 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2308 | "dev": true,
2309 | "engines": {
2310 | "node": ">=8"
2311 | }
2312 | },
2313 | "node_modules/siginfo": {
2314 | "version": "2.0.0",
2315 | "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
2316 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
2317 | "dev": true
2318 | },
2319 | "node_modules/signal-exit": {
2320 | "version": "4.1.0",
2321 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2322 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2323 | "dev": true,
2324 | "engines": {
2325 | "node": ">=14"
2326 | },
2327 | "funding": {
2328 | "url": "https://github.com/sponsors/isaacs"
2329 | }
2330 | },
2331 | "node_modules/source-map-js": {
2332 | "version": "1.2.1",
2333 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2334 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2335 | "dev": true,
2336 | "engines": {
2337 | "node": ">=0.10.0"
2338 | }
2339 | },
2340 | "node_modules/stackback": {
2341 | "version": "0.0.2",
2342 | "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
2343 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
2344 | "dev": true
2345 | },
2346 | "node_modules/std-env": {
2347 | "version": "3.9.0",
2348 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
2349 | "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
2350 | "dev": true,
2351 | "license": "MIT"
2352 | },
2353 | "node_modules/string-width": {
2354 | "version": "4.2.3",
2355 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2356 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2357 | "dev": true,
2358 | "dependencies": {
2359 | "emoji-regex": "^8.0.0",
2360 | "is-fullwidth-code-point": "^3.0.0",
2361 | "strip-ansi": "^6.0.1"
2362 | },
2363 | "engines": {
2364 | "node": ">=8"
2365 | }
2366 | },
2367 | "node_modules/string-width-cjs": {
2368 | "name": "string-width",
2369 | "version": "4.2.3",
2370 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2371 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2372 | "dev": true,
2373 | "dependencies": {
2374 | "emoji-regex": "^8.0.0",
2375 | "is-fullwidth-code-point": "^3.0.0",
2376 | "strip-ansi": "^6.0.1"
2377 | },
2378 | "engines": {
2379 | "node": ">=8"
2380 | }
2381 | },
2382 | "node_modules/strip-ansi": {
2383 | "version": "6.0.1",
2384 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2385 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2386 | "dev": true,
2387 | "dependencies": {
2388 | "ansi-regex": "^5.0.1"
2389 | },
2390 | "engines": {
2391 | "node": ">=8"
2392 | }
2393 | },
2394 | "node_modules/strip-ansi-cjs": {
2395 | "name": "strip-ansi",
2396 | "version": "6.0.1",
2397 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2398 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2399 | "dev": true,
2400 | "dependencies": {
2401 | "ansi-regex": "^5.0.1"
2402 | },
2403 | "engines": {
2404 | "node": ">=8"
2405 | }
2406 | },
2407 | "node_modules/sucrase": {
2408 | "version": "3.35.0",
2409 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
2410 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
2411 | "dev": true,
2412 | "dependencies": {
2413 | "@jridgewell/gen-mapping": "^0.3.2",
2414 | "commander": "^4.0.0",
2415 | "glob": "^10.3.10",
2416 | "lines-and-columns": "^1.1.6",
2417 | "mz": "^2.7.0",
2418 | "pirates": "^4.0.1",
2419 | "ts-interface-checker": "^0.1.9"
2420 | },
2421 | "bin": {
2422 | "sucrase": "bin/sucrase",
2423 | "sucrase-node": "bin/sucrase-node"
2424 | },
2425 | "engines": {
2426 | "node": ">=16 || 14 >=14.17"
2427 | }
2428 | },
2429 | "node_modules/sucrase/node_modules/commander": {
2430 | "version": "4.1.1",
2431 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
2432 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
2433 | "dev": true,
2434 | "engines": {
2435 | "node": ">= 6"
2436 | }
2437 | },
2438 | "node_modules/sucrase/node_modules/glob": {
2439 | "version": "10.3.10",
2440 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
2441 | "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
2442 | "dev": true,
2443 | "dependencies": {
2444 | "foreground-child": "^3.1.0",
2445 | "jackspeak": "^2.3.5",
2446 | "minimatch": "^9.0.1",
2447 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
2448 | "path-scurry": "^1.10.1"
2449 | },
2450 | "bin": {
2451 | "glob": "dist/esm/bin.mjs"
2452 | },
2453 | "engines": {
2454 | "node": ">=16 || 14 >=14.17"
2455 | },
2456 | "funding": {
2457 | "url": "https://github.com/sponsors/isaacs"
2458 | }
2459 | },
2460 | "node_modules/supports-color": {
2461 | "version": "7.2.0",
2462 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2463 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2464 | "dev": true,
2465 | "dependencies": {
2466 | "has-flag": "^4.0.0"
2467 | },
2468 | "engines": {
2469 | "node": ">=8"
2470 | }
2471 | },
2472 | "node_modules/supports-preserve-symlinks-flag": {
2473 | "version": "1.0.0",
2474 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2475 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2476 | "dev": true,
2477 | "engines": {
2478 | "node": ">= 0.4"
2479 | },
2480 | "funding": {
2481 | "url": "https://github.com/sponsors/ljharb"
2482 | }
2483 | },
2484 | "node_modules/tailwindcss": {
2485 | "version": "3.4.17",
2486 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
2487 | "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
2488 | "dev": true,
2489 | "dependencies": {
2490 | "@alloc/quick-lru": "^5.2.0",
2491 | "arg": "^5.0.2",
2492 | "chokidar": "^3.6.0",
2493 | "didyoumean": "^1.2.2",
2494 | "dlv": "^1.1.3",
2495 | "fast-glob": "^3.3.2",
2496 | "glob-parent": "^6.0.2",
2497 | "is-glob": "^4.0.3",
2498 | "jiti": "^1.21.6",
2499 | "lilconfig": "^3.1.3",
2500 | "micromatch": "^4.0.8",
2501 | "normalize-path": "^3.0.0",
2502 | "object-hash": "^3.0.0",
2503 | "picocolors": "^1.1.1",
2504 | "postcss": "^8.4.47",
2505 | "postcss-import": "^15.1.0",
2506 | "postcss-js": "^4.0.1",
2507 | "postcss-load-config": "^4.0.2",
2508 | "postcss-nested": "^6.2.0",
2509 | "postcss-selector-parser": "^6.1.2",
2510 | "resolve": "^1.22.8",
2511 | "sucrase": "^3.35.0"
2512 | },
2513 | "bin": {
2514 | "tailwind": "lib/cli.js",
2515 | "tailwindcss": "lib/cli.js"
2516 | },
2517 | "engines": {
2518 | "node": ">=14.0.0"
2519 | }
2520 | },
2521 | "node_modules/tailwindcss/node_modules/glob-parent": {
2522 | "version": "6.0.2",
2523 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2524 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2525 | "dev": true,
2526 | "dependencies": {
2527 | "is-glob": "^4.0.3"
2528 | },
2529 | "engines": {
2530 | "node": ">=10.13.0"
2531 | }
2532 | },
2533 | "node_modules/test-exclude": {
2534 | "version": "7.0.1",
2535 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
2536 | "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
2537 | "dev": true,
2538 | "dependencies": {
2539 | "@istanbuljs/schema": "^0.1.2",
2540 | "glob": "^10.4.1",
2541 | "minimatch": "^9.0.4"
2542 | },
2543 | "engines": {
2544 | "node": ">=18"
2545 | }
2546 | },
2547 | "node_modules/test-exclude/node_modules/glob": {
2548 | "version": "10.4.5",
2549 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
2550 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
2551 | "dev": true,
2552 | "dependencies": {
2553 | "foreground-child": "^3.1.0",
2554 | "jackspeak": "^3.1.2",
2555 | "minimatch": "^9.0.4",
2556 | "minipass": "^7.1.2",
2557 | "package-json-from-dist": "^1.0.0",
2558 | "path-scurry": "^1.11.1"
2559 | },
2560 | "bin": {
2561 | "glob": "dist/esm/bin.mjs"
2562 | },
2563 | "funding": {
2564 | "url": "https://github.com/sponsors/isaacs"
2565 | }
2566 | },
2567 | "node_modules/test-exclude/node_modules/jackspeak": {
2568 | "version": "3.4.3",
2569 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
2570 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
2571 | "dev": true,
2572 | "dependencies": {
2573 | "@isaacs/cliui": "^8.0.2"
2574 | },
2575 | "funding": {
2576 | "url": "https://github.com/sponsors/isaacs"
2577 | },
2578 | "optionalDependencies": {
2579 | "@pkgjs/parseargs": "^0.11.0"
2580 | }
2581 | },
2582 | "node_modules/thenify": {
2583 | "version": "3.3.1",
2584 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2585 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2586 | "dev": true,
2587 | "dependencies": {
2588 | "any-promise": "^1.0.0"
2589 | }
2590 | },
2591 | "node_modules/thenify-all": {
2592 | "version": "1.6.0",
2593 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2594 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2595 | "dev": true,
2596 | "dependencies": {
2597 | "thenify": ">= 3.1.0 < 4"
2598 | },
2599 | "engines": {
2600 | "node": ">=0.8"
2601 | }
2602 | },
2603 | "node_modules/tinybench": {
2604 | "version": "2.9.0",
2605 | "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
2606 | "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
2607 | "dev": true
2608 | },
2609 | "node_modules/tinyexec": {
2610 | "version": "0.3.2",
2611 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
2612 | "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
2613 | "dev": true,
2614 | "license": "MIT"
2615 | },
2616 | "node_modules/tinyglobby": {
2617 | "version": "0.2.14",
2618 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
2619 | "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
2620 | "dev": true,
2621 | "license": "MIT",
2622 | "dependencies": {
2623 | "fdir": "^6.4.4",
2624 | "picomatch": "^4.0.2"
2625 | },
2626 | "engines": {
2627 | "node": ">=12.0.0"
2628 | },
2629 | "funding": {
2630 | "url": "https://github.com/sponsors/SuperchupuDev"
2631 | }
2632 | },
2633 | "node_modules/tinyglobby/node_modules/fdir": {
2634 | "version": "6.4.4",
2635 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
2636 | "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
2637 | "dev": true,
2638 | "license": "MIT",
2639 | "peerDependencies": {
2640 | "picomatch": "^3 || ^4"
2641 | },
2642 | "peerDependenciesMeta": {
2643 | "picomatch": {
2644 | "optional": true
2645 | }
2646 | }
2647 | },
2648 | "node_modules/tinyglobby/node_modules/picomatch": {
2649 | "version": "4.0.2",
2650 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
2651 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
2652 | "dev": true,
2653 | "license": "MIT",
2654 | "engines": {
2655 | "node": ">=12"
2656 | },
2657 | "funding": {
2658 | "url": "https://github.com/sponsors/jonschlinkert"
2659 | }
2660 | },
2661 | "node_modules/tinypool": {
2662 | "version": "1.0.2",
2663 | "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
2664 | "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
2665 | "dev": true,
2666 | "license": "MIT",
2667 | "engines": {
2668 | "node": "^18.0.0 || >=20.0.0"
2669 | }
2670 | },
2671 | "node_modules/tinyrainbow": {
2672 | "version": "2.0.0",
2673 | "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
2674 | "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
2675 | "dev": true,
2676 | "license": "MIT",
2677 | "engines": {
2678 | "node": ">=14.0.0"
2679 | }
2680 | },
2681 | "node_modules/tinyspy": {
2682 | "version": "3.0.2",
2683 | "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
2684 | "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
2685 | "dev": true,
2686 | "license": "MIT",
2687 | "engines": {
2688 | "node": ">=14.0.0"
2689 | }
2690 | },
2691 | "node_modules/to-regex-range": {
2692 | "version": "5.0.1",
2693 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2694 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2695 | "dev": true,
2696 | "dependencies": {
2697 | "is-number": "^7.0.0"
2698 | },
2699 | "engines": {
2700 | "node": ">=8.0"
2701 | }
2702 | },
2703 | "node_modules/ts-interface-checker": {
2704 | "version": "0.1.13",
2705 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2706 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
2707 | "dev": true
2708 | },
2709 | "node_modules/util-deprecate": {
2710 | "version": "1.0.2",
2711 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2712 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2713 | "dev": true
2714 | },
2715 | "node_modules/vite": {
2716 | "version": "6.3.5",
2717 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
2718 | "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
2719 | "dev": true,
2720 | "license": "MIT",
2721 | "dependencies": {
2722 | "esbuild": "^0.25.0",
2723 | "fdir": "^6.4.4",
2724 | "picomatch": "^4.0.2",
2725 | "postcss": "^8.5.3",
2726 | "rollup": "^4.34.9",
2727 | "tinyglobby": "^0.2.13"
2728 | },
2729 | "bin": {
2730 | "vite": "bin/vite.js"
2731 | },
2732 | "engines": {
2733 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2734 | },
2735 | "funding": {
2736 | "url": "https://github.com/vitejs/vite?sponsor=1"
2737 | },
2738 | "optionalDependencies": {
2739 | "fsevents": "~2.3.3"
2740 | },
2741 | "peerDependencies": {
2742 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2743 | "jiti": ">=1.21.0",
2744 | "less": "*",
2745 | "lightningcss": "^1.21.0",
2746 | "sass": "*",
2747 | "sass-embedded": "*",
2748 | "stylus": "*",
2749 | "sugarss": "*",
2750 | "terser": "^5.16.0",
2751 | "tsx": "^4.8.1",
2752 | "yaml": "^2.4.2"
2753 | },
2754 | "peerDependenciesMeta": {
2755 | "@types/node": {
2756 | "optional": true
2757 | },
2758 | "jiti": {
2759 | "optional": true
2760 | },
2761 | "less": {
2762 | "optional": true
2763 | },
2764 | "lightningcss": {
2765 | "optional": true
2766 | },
2767 | "sass": {
2768 | "optional": true
2769 | },
2770 | "sass-embedded": {
2771 | "optional": true
2772 | },
2773 | "stylus": {
2774 | "optional": true
2775 | },
2776 | "sugarss": {
2777 | "optional": true
2778 | },
2779 | "terser": {
2780 | "optional": true
2781 | },
2782 | "tsx": {
2783 | "optional": true
2784 | },
2785 | "yaml": {
2786 | "optional": true
2787 | }
2788 | }
2789 | },
2790 | "node_modules/vite-node": {
2791 | "version": "3.1.4",
2792 | "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.4.tgz",
2793 | "integrity": "sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==",
2794 | "dev": true,
2795 | "license": "MIT",
2796 | "dependencies": {
2797 | "cac": "^6.7.14",
2798 | "debug": "^4.4.0",
2799 | "es-module-lexer": "^1.7.0",
2800 | "pathe": "^2.0.3",
2801 | "vite": "^5.0.0 || ^6.0.0"
2802 | },
2803 | "bin": {
2804 | "vite-node": "vite-node.mjs"
2805 | },
2806 | "engines": {
2807 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2808 | },
2809 | "funding": {
2810 | "url": "https://opencollective.com/vitest"
2811 | }
2812 | },
2813 | "node_modules/vite/node_modules/fdir": {
2814 | "version": "6.4.4",
2815 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
2816 | "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
2817 | "dev": true,
2818 | "license": "MIT",
2819 | "peerDependencies": {
2820 | "picomatch": "^3 || ^4"
2821 | },
2822 | "peerDependenciesMeta": {
2823 | "picomatch": {
2824 | "optional": true
2825 | }
2826 | }
2827 | },
2828 | "node_modules/vite/node_modules/picomatch": {
2829 | "version": "4.0.2",
2830 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
2831 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
2832 | "dev": true,
2833 | "license": "MIT",
2834 | "engines": {
2835 | "node": ">=12"
2836 | },
2837 | "funding": {
2838 | "url": "https://github.com/sponsors/jonschlinkert"
2839 | }
2840 | },
2841 | "node_modules/vitest": {
2842 | "version": "3.1.4",
2843 | "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.4.tgz",
2844 | "integrity": "sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==",
2845 | "dev": true,
2846 | "license": "MIT",
2847 | "dependencies": {
2848 | "@vitest/expect": "3.1.4",
2849 | "@vitest/mocker": "3.1.4",
2850 | "@vitest/pretty-format": "^3.1.4",
2851 | "@vitest/runner": "3.1.4",
2852 | "@vitest/snapshot": "3.1.4",
2853 | "@vitest/spy": "3.1.4",
2854 | "@vitest/utils": "3.1.4",
2855 | "chai": "^5.2.0",
2856 | "debug": "^4.4.0",
2857 | "expect-type": "^1.2.1",
2858 | "magic-string": "^0.30.17",
2859 | "pathe": "^2.0.3",
2860 | "std-env": "^3.9.0",
2861 | "tinybench": "^2.9.0",
2862 | "tinyexec": "^0.3.2",
2863 | "tinyglobby": "^0.2.13",
2864 | "tinypool": "^1.0.2",
2865 | "tinyrainbow": "^2.0.0",
2866 | "vite": "^5.0.0 || ^6.0.0",
2867 | "vite-node": "3.1.4",
2868 | "why-is-node-running": "^2.3.0"
2869 | },
2870 | "bin": {
2871 | "vitest": "vitest.mjs"
2872 | },
2873 | "engines": {
2874 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2875 | },
2876 | "funding": {
2877 | "url": "https://opencollective.com/vitest"
2878 | },
2879 | "peerDependencies": {
2880 | "@edge-runtime/vm": "*",
2881 | "@types/debug": "^4.1.12",
2882 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2883 | "@vitest/browser": "3.1.4",
2884 | "@vitest/ui": "3.1.4",
2885 | "happy-dom": "*",
2886 | "jsdom": "*"
2887 | },
2888 | "peerDependenciesMeta": {
2889 | "@edge-runtime/vm": {
2890 | "optional": true
2891 | },
2892 | "@types/debug": {
2893 | "optional": true
2894 | },
2895 | "@types/node": {
2896 | "optional": true
2897 | },
2898 | "@vitest/browser": {
2899 | "optional": true
2900 | },
2901 | "@vitest/ui": {
2902 | "optional": true
2903 | },
2904 | "happy-dom": {
2905 | "optional": true
2906 | },
2907 | "jsdom": {
2908 | "optional": true
2909 | }
2910 | }
2911 | },
2912 | "node_modules/which": {
2913 | "version": "2.0.2",
2914 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2915 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2916 | "dev": true,
2917 | "dependencies": {
2918 | "isexe": "^2.0.0"
2919 | },
2920 | "bin": {
2921 | "node-which": "bin/node-which"
2922 | },
2923 | "engines": {
2924 | "node": ">= 8"
2925 | }
2926 | },
2927 | "node_modules/why-is-node-running": {
2928 | "version": "2.3.0",
2929 | "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
2930 | "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
2931 | "dev": true,
2932 | "dependencies": {
2933 | "siginfo": "^2.0.0",
2934 | "stackback": "0.0.2"
2935 | },
2936 | "bin": {
2937 | "why-is-node-running": "cli.js"
2938 | },
2939 | "engines": {
2940 | "node": ">=8"
2941 | }
2942 | },
2943 | "node_modules/wrap-ansi-cjs": {
2944 | "name": "wrap-ansi",
2945 | "version": "7.0.0",
2946 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2947 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2948 | "dev": true,
2949 | "dependencies": {
2950 | "ansi-styles": "^4.0.0",
2951 | "string-width": "^4.1.0",
2952 | "strip-ansi": "^6.0.0"
2953 | },
2954 | "engines": {
2955 | "node": ">=10"
2956 | },
2957 | "funding": {
2958 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2959 | }
2960 | },
2961 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2962 | "version": "4.3.0",
2963 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2964 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2965 | "dev": true,
2966 | "dependencies": {
2967 | "color-convert": "^2.0.1"
2968 | },
2969 | "engines": {
2970 | "node": ">=8"
2971 | },
2972 | "funding": {
2973 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2974 | }
2975 | },
2976 | "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
2977 | "version": "2.0.1",
2978 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
2979 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2980 | "dev": true,
2981 | "dependencies": {
2982 | "color-name": "~1.1.4"
2983 | },
2984 | "engines": {
2985 | "node": ">=7.0.0"
2986 | }
2987 | },
2988 | "node_modules/wrap-ansi-cjs/node_modules/color-name": {
2989 | "version": "1.1.4",
2990 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2991 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2992 | "dev": true
2993 | },
2994 | "node_modules/yallist": {
2995 | "version": "4.0.0",
2996 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2997 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
2998 | "dev": true
2999 | },
3000 | "node_modules/yaml": {
3001 | "version": "2.6.1",
3002 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
3003 | "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
3004 | "dev": true,
3005 | "license": "ISC",
3006 | "bin": {
3007 | "yaml": "bin.mjs"
3008 | },
3009 | "engines": {
3010 | "node": ">= 14"
3011 | }
3012 | }
3013 | }
3014 | }
3015 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tailwindcss-email-variants",
3 | "version": "3.0.4",
4 | "description": "Tailwind CSS variants for email client CSS targeting hacks",
5 | "main": "src/index.js",
6 | "files": [
7 | "src/index.js"
8 | ],
9 | "scripts": {
10 | "release": "npx np",
11 | "dev": "vitest",
12 | "test": "vitest run --coverage"
13 | },
14 | "license": "MIT",
15 | "repository": "https://github.com/maizzle/tailwindcss-email-variants",
16 | "publishConfig": {
17 | "access": "public"
18 | },
19 | "devDependencies": {
20 | "@vitest/coverage-v8": "^3.0.5",
21 | "postcss": "^8.4.33",
22 | "tailwindcss": "^3.4.0",
23 | "vitest": "^3.0.5"
24 | },
25 | "peerDependencies": {
26 | "tailwindcss": ">=3.4.0 < 4"
27 | },
28 | "keywords": [
29 | "tailwindcss",
30 | "maizzle",
31 | "html-email",
32 | "outlook-css",
33 | "email-clients",
34 | "email-hacks",
35 | "email-targeting",
36 | "postcss-plugin"
37 | ],
38 | "engines": {
39 | "node": ">=18"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | const plugin = require('tailwindcss/plugin')
2 |
3 | const emailClientVariants = plugin(function({ addVariant }) {
4 | // Outlook.com dark mode
5 | addVariant('ogsc', '[data-ogsc] &')
6 | addVariant('ogsb', '[data-ogsb] &')
7 |
8 | // Gmail (webmail)
9 | addVariant('gmail', 'u + .body &')
10 |
11 | // Gmail (Android)
12 | addVariant('gmail-android', 'div > u + .body &')
13 |
14 | // Apple Mail
15 | addVariant('apple-mail', '.Singleton &')
16 |
17 | // iOS Mail 10+
18 | addVariant('ios', '@supports (-webkit-overflow-scrolling:touch) and (color:#ffff)')
19 |
20 | // iOS Mail 15+
21 | addVariant('ios-15', '@supports (-webkit-overflow-scrolling:touch) and (aspect-ratio: 1 / 1)')
22 |
23 | // Open-Xchange (multiple clients)
24 | addVariant('ox', '&[class^="ox-"]')
25 | }
26 | )
27 |
28 | module.exports = emailClientVariants
29 |
--------------------------------------------------------------------------------
/src/index.test.js:
--------------------------------------------------------------------------------
1 | import path from 'path'
2 | import etvPlugin from '.'
3 | import postcss from 'postcss'
4 | import { expect, test } from 'vitest'
5 | import tailwindcss from 'tailwindcss'
6 |
7 | // Custom CSS matcher
8 | expect.extend({
9 | // Compare two CSS strings with all whitespace removed
10 | // This is probably naive but it's fast and works well enough.
11 | toMatchCss(received, argument) {
12 | function stripped(string_) {
13 | return string_.replaceAll(/\s/g, '').replaceAll(';', '')
14 | }
15 |
16 | const pass = stripped(received) === stripped(argument)
17 |
18 | return {
19 | pass,
20 | actual: received,
21 | expected: argument,
22 | message: () => pass ? 'All good!' : 'CSS does not match',
23 | }
24 | }
25 | })
26 |
27 | function run(config, plugin = tailwindcss) {
28 | let { currentTestName } = expect.getState()
29 |
30 | config = {
31 | ...{
32 | plugins: [etvPlugin],
33 | corePlugins: {
34 | preflight: false,
35 | textOpacity: false,
36 | backgroundOpacity: false,
37 | }
38 | },
39 | ...config,
40 | }
41 |
42 | return postcss(plugin(config)).process('@tailwind utilities', {
43 | from: `${path.resolve(__filename)}?test=${currentTestName}`,
44 | })
45 | }
46 |
47 | test('`ogsc` variant', () => {
48 | const config = {
49 | content: [{ raw: String.raw`
` }]
50 | }
51 |
52 | return run(config).then((result) => {
53 | expect(result.css).toMatchCss(String.raw`
54 | [data-ogsc] .ogsc\:text-slate-200 {
55 | color: #e2e8f0;
56 | }
57 | `)
58 | })
59 | })
60 |
61 | test('`ogsb` variant', () => {
62 | const config = {
63 | content: [{ raw: String.raw`
` }]
64 | }
65 |
66 | return run(config).then((result) => {
67 | expect(result.css).toMatchCss(String.raw`
68 | [data-ogsb] .ogsb\:bg-slate-900 {
69 | background-color: #0f172a;
70 | }
71 | `)
72 | })
73 | })
74 |
75 | test('`gmail` variant', () => {
76 | const config = {
77 | content: [{ raw: String.raw`
` }]
78 | }
79 |
80 | return run(config).then((result) => {
81 | expect(result.css).toMatchCss(String.raw`
82 | u + .body .gmail\:hidden {
83 | display: none;
84 | }
85 | `)
86 | })
87 | })
88 |
89 | test('`gmail-android` variant', () => {
90 | const config = {
91 | content: [{ raw: String.raw`
` }]
92 | }
93 |
94 | return run(config).then((result) => {
95 | expect(result.css).toMatchCss(String.raw`
96 | div > u + .body .gmail-android\:hidden {
97 | display: none;
98 | }
99 | `)
100 | })
101 | })
102 |
103 | test('`ios` variant', () => {
104 | const config = {
105 | content: [{ raw: String.raw`
` }]
106 | }
107 |
108 | return run(config).then((result) => {
109 | expect(result.css).toMatchCss(String.raw`
110 | @supports (-webkit-overflow-scrolling:touch) and (color:#ffff) {
111 | .ios\:hidden {
112 | display: none;
113 | }
114 | }
115 | `)
116 | })
117 | })
118 |
119 | test('`ios-15` variant', () => {
120 | const config = {
121 | content: [{ raw: String.raw`
` }]
122 | }
123 |
124 | return run(config).then((result) => {
125 | expect(result.css).toMatchCss(String.raw`
126 | @supports (-webkit-overflow-scrolling:touch) and (aspect-ratio: 1 / 1) {
127 | .ios-15\:hidden {
128 | display: none;
129 | }
130 | }
131 | `)
132 | })
133 | })
134 |
135 | test('`apple-mail` variant', () => {
136 | const config = {
137 | content: [{ raw: String.raw`
` }]
138 | }
139 |
140 | return run(config).then((result) => {
141 | expect(result.css).toMatchCss(String.raw`
142 | .Singleton .apple-mail\:hidden {
143 | display: none;
144 | }
145 | `)
146 | })
147 | })
148 |
149 | test('`ox` variant', () => {
150 | const config = {
151 | content: [{ raw: String.raw`
` }]
152 | }
153 |
154 | return run(config).then((result) => {
155 | expect(result.css).toMatchCss(String.raw`
156 | .ox\:hidden[class^="ox-"] {
157 | display: none;
158 | }
159 | `)
160 | })
161 | })
162 |
--------------------------------------------------------------------------------