├── .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 | Tailwind CSS 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 | --------------------------------------------------------------------------------