├── .editorconfig ├── .gitignore ├── README.md ├── index.d.ts ├── package-lock.json ├── package.json ├── src ├── build.ts ├── builds │ ├── cdn.ts │ └── module.ts ├── index.ts ├── stubs │ ├── @tailwindcss │ │ └── oxide.ts │ ├── crypto.ts │ ├── fs.ts │ ├── path.ts │ ├── picocolors.ts │ ├── tailwindcss │ │ └── utils │ │ │ └── log.ts │ └── url.ts └── util │ ├── class-to-css.ts │ ├── create-tailwind-css-plugin.ts │ ├── css-to-json.ts │ ├── default-tailwind-css.ts │ ├── format-css.ts │ ├── index.ts │ └── process-tailwind-css.ts ├── tsconfig.json ├── types.d.ts └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | max_line_length = 100 11 | trim_trailing_whitespace = true 12 | 13 | [COMMIT_EDITMSG] 14 | max_line_length = 72 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | yarn-error.log 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🔄 Tailwind to CSS (tw-to-css) 2 | 3 | Transform Tailwind classes to pure CSS using our plug-and-play package, compatible with both CSR and SSR. The package also includes the option to convert the output to JSON for use with React or other tools. 4 | 5 | Here's a list of advantages of using the package: 6 | 7 | - ✅ Simplifies integration of Tailwind CSS into projects 8 | - ✅ Compatible with both Client-side and Server-side Rendering 9 | - ✅ Plug-and-play, no configuration necessary 10 | - ✅ Option to convert output to JSON for use with React or other tools 11 | - ✅ Improves performance by eliminating runtime processing 12 | - ✅ Reduces project size and build time 13 | - ✅ Maintains the readability and maintainability of the Tailwind CSS codebase 14 | 15 | ## Installation 16 | 17 | #### NPM module 18 | 19 | ```sh npm 20 | npm install tw-to-css -E 21 | ``` 22 | 23 | ```sh yarn 24 | yarn add tw-to-css -E 25 | ``` 26 | 27 | #### CDN 28 | 29 | ```html 30 | 31 | ``` 32 | 33 | ## Usage 34 | 35 | ```typescript 36 | import { twi, twj } from "tw-to-css"; 37 | 38 | // Convert classes to inline CSS 39 | const styleInline = twi(`bg-white mx-auto`); 40 | // Output: margin-left:auto;margin-right:auto;background-color:rgb(255, 255, 255); 41 | 42 | // Convert classes to JSON 43 | const styleJSON = twj(`bg-white mx-auto`); 44 | // Output: {marginLeft: 'auto', marginRight: 'auto', backgroundColor: 'rgb(255, 255, 255)'} 45 | ``` 46 | 47 | ### The `twi` and `twj` functions accept multiple types of inputs. 48 | 49 | - Template Literal 50 | 51 | ```typescript 52 | twi`bg-blue-700 ${false && "rounded"}`; 53 | ``` 54 | 55 | - Objects 56 | 57 | ```typescript 58 | twi({ "bg-blue-700": true, rounded: false, underline: isTrue() }); 59 | ``` 60 | 61 | - Arrays 62 | 63 | ```typescript 64 | twi([["bg-blue-700"], ["text-white", "rounded"], [["underline"]]]); 65 | ``` 66 | 67 | - String 68 | 69 | ```typescript 70 | twi("bg-blue-700 text-white"); 71 | ``` 72 | 73 | ### `twi` and `twj` functions take an additional options object that allows you to configure the output. 74 | 75 | #### Options: 76 | 77 | | Option | Type | Default | Result | 78 | | ------ | ------- | ------- | ------------------------------------------------------------- | 79 | | minify | boolean | true | Compresses the CSS code | 80 | | merge | boolean | true | Combines all generated CSS classes into a single style block. | 81 | 82 | #### Example: 83 | 84 | ```typescript 85 | twi("bg-white mx-auto", { minify: false, merge: false }); 86 | /* 87 | Output: 88 | .mx-auto { 89 | margin-left: auto; 90 | margin-right: auto 91 | } 92 | .bg-white { 93 | background-color: rgb(255, 255, 255) 94 | } 95 | */ 96 | ``` 97 | 98 | ### You can also configure your own Tailwind config using the tailwindToCSS function: 99 | 100 | ```typescript 101 | import { tailwindToCSS } from "tw-to-css"; 102 | 103 | const { twi, twj } = tailwindToCSS({ 104 | config: { 105 | theme: { 106 | extend: { 107 | colors: { 108 | "custom-color": "#ff0000", 109 | }, 110 | }, 111 | }, 112 | }, 113 | }); 114 | ``` 115 | 116 | ### Example of usage with React: 117 | 118 | ```tsx 119 | import * as React from "react"; 120 | import { twj } from "tw-to-css"; 121 | 122 | export default function EmailTemplate() { 123 | return ( 124 | 125 | 126 |

Tailwind to CSS!

127 |

Transform Tailwind classes to pure CSS

128 | 129 | 130 | ); 131 | } 132 | 133 | /* 134 | Output: 135 | 136 | 147 |

155 | Tailwind to CSS! 156 |

157 |

158 | Transform Tailwind classes to pure CSS 159 |

160 | 161 | 162 | */ 163 | ``` 164 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from "react"; 2 | import { Config } from "tailwindcss"; 3 | 4 | export interface TailwindConfig { 5 | important?: Config["important"]; 6 | prefix?: Config["prefix"]; 7 | separator?: Config["separator"]; 8 | safelist?: Config["safelist"]; 9 | presets?: Config["presets"]; 10 | future?: Config["future"]; 11 | experimental?: Config["experimental"]; 12 | darkMode?: Config["darkMode"]; 13 | theme?: Config["theme"]; 14 | corePlugins?: Config["corePlugins"]; 15 | plugins?: Config["plugins"]; 16 | } 17 | 18 | type Content = string | Record | TemplateStringsArray | Content[]; 19 | 20 | type Options = { merge?: boolean; minify?: boolean; ignoreMediaQueries?: boolean }; 21 | 22 | export function getCSS(content: string, config?: TailwindConfig): string; 23 | 24 | export function tailwindToCSS(params: { config?: TailwindConfig; options?: Options }): { 25 | twi: typeof twi; 26 | twj: typeof twj; 27 | }; 28 | 29 | export function classListFormatter(content: Content, options?: Options): string; 30 | export function classListFormatter(...content: Content[]): string; 31 | 32 | export function twi(content: Content, options?: Options): string; 33 | export function twi(...content: Content[]): string; 34 | 35 | export function twj(content: Content, options?: Options): CSSProperties; 36 | export function twj(...content: Content[]): CSSProperties; 37 | 38 | export function tailwindInlineCSS(config?: TailwindConfig, options?: Options): typeof twi; 39 | 40 | export function tailwindInlineJson( 41 | config?: TailwindConfig, 42 | options?: Omit 43 | ): typeof twj; 44 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tw-to-css", 3 | "version": "0.0.11", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "tw-to-css", 9 | "version": "0.0.11", 10 | "license": "MIT", 11 | "dependencies": { 12 | "postcss": "8.4.31", 13 | "postcss-css-variables": "0.18.0", 14 | "tailwindcss": "3.2.7" 15 | }, 16 | "devDependencies": { 17 | "@types/node": "18.11.18", 18 | "@types/postcss-css-variables": "0.18.0", 19 | "@types/react": "18.0.28", 20 | "@types/tailwindcss": "3.1.0", 21 | "esbuild": "0.15.18", 22 | "tsx": "3.12.2", 23 | "typescript": "4.9.4" 24 | }, 25 | "engines": { 26 | "node": ">=16.0.0" 27 | } 28 | }, 29 | "node_modules/@esbuild-kit/cjs-loader": { 30 | "version": "2.4.1", 31 | "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.1.tgz", 32 | "integrity": "sha512-lhc/XLith28QdW0HpHZvZKkorWgmCNT7sVelMHDj3HFdTfdqkwEKvT+aXVQtNAmCC39VJhunDkWhONWB7335mg==", 33 | "dev": true, 34 | "dependencies": { 35 | "@esbuild-kit/core-utils": "^3.0.0", 36 | "get-tsconfig": "^4.2.0" 37 | } 38 | }, 39 | "node_modules/@esbuild-kit/core-utils": { 40 | "version": "3.0.0", 41 | "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.0.0.tgz", 42 | "integrity": "sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==", 43 | "dev": true, 44 | "dependencies": { 45 | "esbuild": "~0.15.10", 46 | "source-map-support": "^0.5.21" 47 | } 48 | }, 49 | "node_modules/@esbuild-kit/esm-loader": { 50 | "version": "2.5.4", 51 | "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.4.tgz", 52 | "integrity": "sha512-afmtLf6uqxD5IgwCzomtqCYIgz/sjHzCWZFvfS5+FzeYxOURPUo4QcHtqJxbxWOMOogKriZanN/1bJQE/ZL93A==", 53 | "dev": true, 54 | "dependencies": { 55 | "@esbuild-kit/core-utils": "^3.0.0", 56 | "get-tsconfig": "^4.2.0" 57 | } 58 | }, 59 | "node_modules/@esbuild/android-arm": { 60 | "version": "0.15.18", 61 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", 62 | "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", 63 | "cpu": [ 64 | "arm" 65 | ], 66 | "dev": true, 67 | "optional": true, 68 | "os": [ 69 | "android" 70 | ], 71 | "engines": { 72 | "node": ">=12" 73 | } 74 | }, 75 | "node_modules/@esbuild/linux-loong64": { 76 | "version": "0.15.18", 77 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", 78 | "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", 79 | "cpu": [ 80 | "loong64" 81 | ], 82 | "dev": true, 83 | "optional": true, 84 | "os": [ 85 | "linux" 86 | ], 87 | "engines": { 88 | "node": ">=12" 89 | } 90 | }, 91 | "node_modules/@nodelib/fs.scandir": { 92 | "version": "2.1.5", 93 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 94 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 95 | "dependencies": { 96 | "@nodelib/fs.stat": "2.0.5", 97 | "run-parallel": "^1.1.9" 98 | }, 99 | "engines": { 100 | "node": ">= 8" 101 | } 102 | }, 103 | "node_modules/@nodelib/fs.stat": { 104 | "version": "2.0.5", 105 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 106 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 107 | "engines": { 108 | "node": ">= 8" 109 | } 110 | }, 111 | "node_modules/@nodelib/fs.walk": { 112 | "version": "1.2.8", 113 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 114 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 115 | "dependencies": { 116 | "@nodelib/fs.scandir": "2.1.5", 117 | "fastq": "^1.6.0" 118 | }, 119 | "engines": { 120 | "node": ">= 8" 121 | } 122 | }, 123 | "node_modules/@types/node": { 124 | "version": "18.11.18", 125 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", 126 | "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", 127 | "dev": true 128 | }, 129 | "node_modules/@types/postcss-css-variables": { 130 | "version": "0.18.0", 131 | "resolved": "https://registry.npmjs.org/@types/postcss-css-variables/-/postcss-css-variables-0.18.0.tgz", 132 | "integrity": "sha512-NJBO24iE1I6FSVE/iMWaQIPbEHbdO0FJwASy/lUJktHxLa42T3dEOQ4xEwhocDcZrQTOUguM/650KYD+p9JQ4Q==", 133 | "dev": true, 134 | "dependencies": { 135 | "postcss": "^8.2.6" 136 | } 137 | }, 138 | "node_modules/@types/prop-types": { 139 | "version": "15.7.5", 140 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 141 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 142 | "dev": true 143 | }, 144 | "node_modules/@types/react": { 145 | "version": "18.0.28", 146 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", 147 | "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", 148 | "dev": true, 149 | "dependencies": { 150 | "@types/prop-types": "*", 151 | "@types/scheduler": "*", 152 | "csstype": "^3.0.2" 153 | } 154 | }, 155 | "node_modules/@types/scheduler": { 156 | "version": "0.16.2", 157 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 158 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 159 | "dev": true 160 | }, 161 | "node_modules/@types/tailwindcss": { 162 | "version": "3.1.0", 163 | "resolved": "https://registry.npmjs.org/@types/tailwindcss/-/tailwindcss-3.1.0.tgz", 164 | "integrity": "sha512-JxPzrm609hzvF4nmOI3StLjbBEP3WWQxDDJESqR1nh94h7gyyy3XSl0hn5RBMJ9mPudlLjtaXs5YEBtLw7CnPA==", 165 | "deprecated": "This is a stub types definition. tailwindcss provides its own type definitions, so you do not need this installed.", 166 | "dev": true, 167 | "dependencies": { 168 | "tailwindcss": "*" 169 | } 170 | }, 171 | "node_modules/acorn": { 172 | "version": "7.4.1", 173 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 174 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 175 | "bin": { 176 | "acorn": "bin/acorn" 177 | }, 178 | "engines": { 179 | "node": ">=0.4.0" 180 | } 181 | }, 182 | "node_modules/acorn-node": { 183 | "version": "1.8.2", 184 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 185 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 186 | "dependencies": { 187 | "acorn": "^7.0.0", 188 | "acorn-walk": "^7.0.0", 189 | "xtend": "^4.0.2" 190 | } 191 | }, 192 | "node_modules/acorn-walk": { 193 | "version": "7.2.0", 194 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 195 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 196 | "engines": { 197 | "node": ">=0.4.0" 198 | } 199 | }, 200 | "node_modules/anymatch": { 201 | "version": "3.1.3", 202 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 203 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 204 | "dependencies": { 205 | "normalize-path": "^3.0.0", 206 | "picomatch": "^2.0.4" 207 | }, 208 | "engines": { 209 | "node": ">= 8" 210 | } 211 | }, 212 | "node_modules/arg": { 213 | "version": "5.0.2", 214 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 215 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" 216 | }, 217 | "node_modules/balanced-match": { 218 | "version": "1.0.2", 219 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 220 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 221 | }, 222 | "node_modules/binary-extensions": { 223 | "version": "2.2.0", 224 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 225 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 226 | "engines": { 227 | "node": ">=8" 228 | } 229 | }, 230 | "node_modules/braces": { 231 | "version": "3.0.2", 232 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 233 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 234 | "dependencies": { 235 | "fill-range": "^7.0.1" 236 | }, 237 | "engines": { 238 | "node": ">=8" 239 | } 240 | }, 241 | "node_modules/buffer-from": { 242 | "version": "1.1.2", 243 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 244 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 245 | "dev": true 246 | }, 247 | "node_modules/camelcase-css": { 248 | "version": "2.0.1", 249 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 250 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 251 | "engines": { 252 | "node": ">= 6" 253 | } 254 | }, 255 | "node_modules/chokidar": { 256 | "version": "3.5.3", 257 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 258 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 259 | "funding": [ 260 | { 261 | "type": "individual", 262 | "url": "https://paulmillr.com/funding/" 263 | } 264 | ], 265 | "dependencies": { 266 | "anymatch": "~3.1.2", 267 | "braces": "~3.0.2", 268 | "glob-parent": "~5.1.2", 269 | "is-binary-path": "~2.1.0", 270 | "is-glob": "~4.0.1", 271 | "normalize-path": "~3.0.0", 272 | "readdirp": "~3.6.0" 273 | }, 274 | "engines": { 275 | "node": ">= 8.10.0" 276 | }, 277 | "optionalDependencies": { 278 | "fsevents": "~2.3.2" 279 | } 280 | }, 281 | "node_modules/chokidar/node_modules/glob-parent": { 282 | "version": "5.1.2", 283 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 284 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 285 | "dependencies": { 286 | "is-glob": "^4.0.1" 287 | }, 288 | "engines": { 289 | "node": ">= 6" 290 | } 291 | }, 292 | "node_modules/color-name": { 293 | "version": "1.1.4", 294 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 295 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 296 | }, 297 | "node_modules/cssesc": { 298 | "version": "3.0.0", 299 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 300 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 301 | "bin": { 302 | "cssesc": "bin/cssesc" 303 | }, 304 | "engines": { 305 | "node": ">=4" 306 | } 307 | }, 308 | "node_modules/csstype": { 309 | "version": "3.1.1", 310 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 311 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 312 | "dev": true 313 | }, 314 | "node_modules/defined": { 315 | "version": "1.0.1", 316 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", 317 | "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", 318 | "funding": { 319 | "url": "https://github.com/sponsors/ljharb" 320 | } 321 | }, 322 | "node_modules/detective": { 323 | "version": "5.2.1", 324 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", 325 | "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", 326 | "dependencies": { 327 | "acorn-node": "^1.8.2", 328 | "defined": "^1.0.0", 329 | "minimist": "^1.2.6" 330 | }, 331 | "bin": { 332 | "detective": "bin/detective.js" 333 | }, 334 | "engines": { 335 | "node": ">=0.8.0" 336 | } 337 | }, 338 | "node_modules/didyoumean": { 339 | "version": "1.2.2", 340 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 341 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" 342 | }, 343 | "node_modules/dlv": { 344 | "version": "1.1.3", 345 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 346 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" 347 | }, 348 | "node_modules/esbuild": { 349 | "version": "0.15.18", 350 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", 351 | "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", 352 | "dev": true, 353 | "hasInstallScript": true, 354 | "bin": { 355 | "esbuild": "bin/esbuild" 356 | }, 357 | "engines": { 358 | "node": ">=12" 359 | }, 360 | "optionalDependencies": { 361 | "@esbuild/android-arm": "0.15.18", 362 | "@esbuild/linux-loong64": "0.15.18", 363 | "esbuild-android-64": "0.15.18", 364 | "esbuild-android-arm64": "0.15.18", 365 | "esbuild-darwin-64": "0.15.18", 366 | "esbuild-darwin-arm64": "0.15.18", 367 | "esbuild-freebsd-64": "0.15.18", 368 | "esbuild-freebsd-arm64": "0.15.18", 369 | "esbuild-linux-32": "0.15.18", 370 | "esbuild-linux-64": "0.15.18", 371 | "esbuild-linux-arm": "0.15.18", 372 | "esbuild-linux-arm64": "0.15.18", 373 | "esbuild-linux-mips64le": "0.15.18", 374 | "esbuild-linux-ppc64le": "0.15.18", 375 | "esbuild-linux-riscv64": "0.15.18", 376 | "esbuild-linux-s390x": "0.15.18", 377 | "esbuild-netbsd-64": "0.15.18", 378 | "esbuild-openbsd-64": "0.15.18", 379 | "esbuild-sunos-64": "0.15.18", 380 | "esbuild-windows-32": "0.15.18", 381 | "esbuild-windows-64": "0.15.18", 382 | "esbuild-windows-arm64": "0.15.18" 383 | } 384 | }, 385 | "node_modules/esbuild-android-64": { 386 | "version": "0.15.18", 387 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", 388 | "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", 389 | "cpu": [ 390 | "x64" 391 | ], 392 | "dev": true, 393 | "optional": true, 394 | "os": [ 395 | "android" 396 | ], 397 | "engines": { 398 | "node": ">=12" 399 | } 400 | }, 401 | "node_modules/esbuild-android-arm64": { 402 | "version": "0.15.18", 403 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", 404 | "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", 405 | "cpu": [ 406 | "arm64" 407 | ], 408 | "dev": true, 409 | "optional": true, 410 | "os": [ 411 | "android" 412 | ], 413 | "engines": { 414 | "node": ">=12" 415 | } 416 | }, 417 | "node_modules/esbuild-darwin-64": { 418 | "version": "0.15.18", 419 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", 420 | "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", 421 | "cpu": [ 422 | "x64" 423 | ], 424 | "dev": true, 425 | "optional": true, 426 | "os": [ 427 | "darwin" 428 | ], 429 | "engines": { 430 | "node": ">=12" 431 | } 432 | }, 433 | "node_modules/esbuild-darwin-arm64": { 434 | "version": "0.15.18", 435 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", 436 | "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", 437 | "cpu": [ 438 | "arm64" 439 | ], 440 | "dev": true, 441 | "optional": true, 442 | "os": [ 443 | "darwin" 444 | ], 445 | "engines": { 446 | "node": ">=12" 447 | } 448 | }, 449 | "node_modules/esbuild-freebsd-64": { 450 | "version": "0.15.18", 451 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", 452 | "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", 453 | "cpu": [ 454 | "x64" 455 | ], 456 | "dev": true, 457 | "optional": true, 458 | "os": [ 459 | "freebsd" 460 | ], 461 | "engines": { 462 | "node": ">=12" 463 | } 464 | }, 465 | "node_modules/esbuild-freebsd-arm64": { 466 | "version": "0.15.18", 467 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", 468 | "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", 469 | "cpu": [ 470 | "arm64" 471 | ], 472 | "dev": true, 473 | "optional": true, 474 | "os": [ 475 | "freebsd" 476 | ], 477 | "engines": { 478 | "node": ">=12" 479 | } 480 | }, 481 | "node_modules/esbuild-linux-32": { 482 | "version": "0.15.18", 483 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", 484 | "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", 485 | "cpu": [ 486 | "ia32" 487 | ], 488 | "dev": true, 489 | "optional": true, 490 | "os": [ 491 | "linux" 492 | ], 493 | "engines": { 494 | "node": ">=12" 495 | } 496 | }, 497 | "node_modules/esbuild-linux-64": { 498 | "version": "0.15.18", 499 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", 500 | "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", 501 | "cpu": [ 502 | "x64" 503 | ], 504 | "dev": true, 505 | "optional": true, 506 | "os": [ 507 | "linux" 508 | ], 509 | "engines": { 510 | "node": ">=12" 511 | } 512 | }, 513 | "node_modules/esbuild-linux-arm": { 514 | "version": "0.15.18", 515 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", 516 | "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", 517 | "cpu": [ 518 | "arm" 519 | ], 520 | "dev": true, 521 | "optional": true, 522 | "os": [ 523 | "linux" 524 | ], 525 | "engines": { 526 | "node": ">=12" 527 | } 528 | }, 529 | "node_modules/esbuild-linux-arm64": { 530 | "version": "0.15.18", 531 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", 532 | "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", 533 | "cpu": [ 534 | "arm64" 535 | ], 536 | "dev": true, 537 | "optional": true, 538 | "os": [ 539 | "linux" 540 | ], 541 | "engines": { 542 | "node": ">=12" 543 | } 544 | }, 545 | "node_modules/esbuild-linux-mips64le": { 546 | "version": "0.15.18", 547 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", 548 | "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", 549 | "cpu": [ 550 | "mips64el" 551 | ], 552 | "dev": true, 553 | "optional": true, 554 | "os": [ 555 | "linux" 556 | ], 557 | "engines": { 558 | "node": ">=12" 559 | } 560 | }, 561 | "node_modules/esbuild-linux-ppc64le": { 562 | "version": "0.15.18", 563 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", 564 | "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", 565 | "cpu": [ 566 | "ppc64" 567 | ], 568 | "dev": true, 569 | "optional": true, 570 | "os": [ 571 | "linux" 572 | ], 573 | "engines": { 574 | "node": ">=12" 575 | } 576 | }, 577 | "node_modules/esbuild-linux-riscv64": { 578 | "version": "0.15.18", 579 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", 580 | "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", 581 | "cpu": [ 582 | "riscv64" 583 | ], 584 | "dev": true, 585 | "optional": true, 586 | "os": [ 587 | "linux" 588 | ], 589 | "engines": { 590 | "node": ">=12" 591 | } 592 | }, 593 | "node_modules/esbuild-linux-s390x": { 594 | "version": "0.15.18", 595 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", 596 | "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", 597 | "cpu": [ 598 | "s390x" 599 | ], 600 | "dev": true, 601 | "optional": true, 602 | "os": [ 603 | "linux" 604 | ], 605 | "engines": { 606 | "node": ">=12" 607 | } 608 | }, 609 | "node_modules/esbuild-netbsd-64": { 610 | "version": "0.15.18", 611 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", 612 | "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", 613 | "cpu": [ 614 | "x64" 615 | ], 616 | "dev": true, 617 | "optional": true, 618 | "os": [ 619 | "netbsd" 620 | ], 621 | "engines": { 622 | "node": ">=12" 623 | } 624 | }, 625 | "node_modules/esbuild-openbsd-64": { 626 | "version": "0.15.18", 627 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", 628 | "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", 629 | "cpu": [ 630 | "x64" 631 | ], 632 | "dev": true, 633 | "optional": true, 634 | "os": [ 635 | "openbsd" 636 | ], 637 | "engines": { 638 | "node": ">=12" 639 | } 640 | }, 641 | "node_modules/esbuild-sunos-64": { 642 | "version": "0.15.18", 643 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", 644 | "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", 645 | "cpu": [ 646 | "x64" 647 | ], 648 | "dev": true, 649 | "optional": true, 650 | "os": [ 651 | "sunos" 652 | ], 653 | "engines": { 654 | "node": ">=12" 655 | } 656 | }, 657 | "node_modules/esbuild-windows-32": { 658 | "version": "0.15.18", 659 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", 660 | "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", 661 | "cpu": [ 662 | "ia32" 663 | ], 664 | "dev": true, 665 | "optional": true, 666 | "os": [ 667 | "win32" 668 | ], 669 | "engines": { 670 | "node": ">=12" 671 | } 672 | }, 673 | "node_modules/esbuild-windows-64": { 674 | "version": "0.15.18", 675 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", 676 | "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", 677 | "cpu": [ 678 | "x64" 679 | ], 680 | "dev": true, 681 | "optional": true, 682 | "os": [ 683 | "win32" 684 | ], 685 | "engines": { 686 | "node": ">=12" 687 | } 688 | }, 689 | "node_modules/esbuild-windows-arm64": { 690 | "version": "0.15.18", 691 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", 692 | "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", 693 | "cpu": [ 694 | "arm64" 695 | ], 696 | "dev": true, 697 | "optional": true, 698 | "os": [ 699 | "win32" 700 | ], 701 | "engines": { 702 | "node": ">=12" 703 | } 704 | }, 705 | "node_modules/escape-string-regexp": { 706 | "version": "1.0.5", 707 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 708 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 709 | "engines": { 710 | "node": ">=0.8.0" 711 | } 712 | }, 713 | "node_modules/extend": { 714 | "version": "3.0.2", 715 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 716 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 717 | }, 718 | "node_modules/fast-glob": { 719 | "version": "3.2.12", 720 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 721 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 722 | "dependencies": { 723 | "@nodelib/fs.stat": "^2.0.2", 724 | "@nodelib/fs.walk": "^1.2.3", 725 | "glob-parent": "^5.1.2", 726 | "merge2": "^1.3.0", 727 | "micromatch": "^4.0.4" 728 | }, 729 | "engines": { 730 | "node": ">=8.6.0" 731 | } 732 | }, 733 | "node_modules/fast-glob/node_modules/glob-parent": { 734 | "version": "5.1.2", 735 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 736 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 737 | "dependencies": { 738 | "is-glob": "^4.0.1" 739 | }, 740 | "engines": { 741 | "node": ">= 6" 742 | } 743 | }, 744 | "node_modules/fastq": { 745 | "version": "1.15.0", 746 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 747 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 748 | "dependencies": { 749 | "reusify": "^1.0.4" 750 | } 751 | }, 752 | "node_modules/fill-range": { 753 | "version": "7.0.1", 754 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 755 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 756 | "dependencies": { 757 | "to-regex-range": "^5.0.1" 758 | }, 759 | "engines": { 760 | "node": ">=8" 761 | } 762 | }, 763 | "node_modules/fsevents": { 764 | "version": "2.3.2", 765 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 766 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 767 | "hasInstallScript": true, 768 | "optional": true, 769 | "os": [ 770 | "darwin" 771 | ], 772 | "engines": { 773 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 774 | } 775 | }, 776 | "node_modules/function-bind": { 777 | "version": "1.1.1", 778 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 779 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 780 | }, 781 | "node_modules/get-tsconfig": { 782 | "version": "4.3.0", 783 | "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.3.0.tgz", 784 | "integrity": "sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==", 785 | "dev": true, 786 | "funding": { 787 | "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 788 | } 789 | }, 790 | "node_modules/glob-parent": { 791 | "version": "6.0.2", 792 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 793 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 794 | "dependencies": { 795 | "is-glob": "^4.0.3" 796 | }, 797 | "engines": { 798 | "node": ">=10.13.0" 799 | } 800 | }, 801 | "node_modules/has": { 802 | "version": "1.0.3", 803 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 804 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 805 | "dependencies": { 806 | "function-bind": "^1.1.1" 807 | }, 808 | "engines": { 809 | "node": ">= 0.4.0" 810 | } 811 | }, 812 | "node_modules/is-binary-path": { 813 | "version": "2.1.0", 814 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 815 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 816 | "dependencies": { 817 | "binary-extensions": "^2.0.0" 818 | }, 819 | "engines": { 820 | "node": ">=8" 821 | } 822 | }, 823 | "node_modules/is-core-module": { 824 | "version": "2.11.0", 825 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 826 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 827 | "dependencies": { 828 | "has": "^1.0.3" 829 | }, 830 | "funding": { 831 | "url": "https://github.com/sponsors/ljharb" 832 | } 833 | }, 834 | "node_modules/is-extglob": { 835 | "version": "2.1.1", 836 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 837 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 838 | "engines": { 839 | "node": ">=0.10.0" 840 | } 841 | }, 842 | "node_modules/is-glob": { 843 | "version": "4.0.3", 844 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 845 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 846 | "dependencies": { 847 | "is-extglob": "^2.1.1" 848 | }, 849 | "engines": { 850 | "node": ">=0.10.0" 851 | } 852 | }, 853 | "node_modules/is-number": { 854 | "version": "7.0.0", 855 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 856 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 857 | "engines": { 858 | "node": ">=0.12.0" 859 | } 860 | }, 861 | "node_modules/lilconfig": { 862 | "version": "2.0.6", 863 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", 864 | "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", 865 | "engines": { 866 | "node": ">=10" 867 | } 868 | }, 869 | "node_modules/merge2": { 870 | "version": "1.4.1", 871 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 872 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 873 | "engines": { 874 | "node": ">= 8" 875 | } 876 | }, 877 | "node_modules/micromatch": { 878 | "version": "4.0.5", 879 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 880 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 881 | "dependencies": { 882 | "braces": "^3.0.2", 883 | "picomatch": "^2.3.1" 884 | }, 885 | "engines": { 886 | "node": ">=8.6" 887 | } 888 | }, 889 | "node_modules/minimist": { 890 | "version": "1.2.7", 891 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 892 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 893 | "funding": { 894 | "url": "https://github.com/sponsors/ljharb" 895 | } 896 | }, 897 | "node_modules/nanoid": { 898 | "version": "3.3.6", 899 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 900 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 901 | "funding": [ 902 | { 903 | "type": "github", 904 | "url": "https://github.com/sponsors/ai" 905 | } 906 | ], 907 | "bin": { 908 | "nanoid": "bin/nanoid.cjs" 909 | }, 910 | "engines": { 911 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 912 | } 913 | }, 914 | "node_modules/normalize-path": { 915 | "version": "3.0.0", 916 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 917 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 918 | "engines": { 919 | "node": ">=0.10.0" 920 | } 921 | }, 922 | "node_modules/object-hash": { 923 | "version": "3.0.0", 924 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 925 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 926 | "engines": { 927 | "node": ">= 6" 928 | } 929 | }, 930 | "node_modules/path-parse": { 931 | "version": "1.0.7", 932 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 933 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 934 | }, 935 | "node_modules/picocolors": { 936 | "version": "1.0.0", 937 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 938 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 939 | }, 940 | "node_modules/picomatch": { 941 | "version": "2.3.1", 942 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 943 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 944 | "engines": { 945 | "node": ">=8.6" 946 | }, 947 | "funding": { 948 | "url": "https://github.com/sponsors/jonschlinkert" 949 | } 950 | }, 951 | "node_modules/pify": { 952 | "version": "2.3.0", 953 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 954 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 955 | "engines": { 956 | "node": ">=0.10.0" 957 | } 958 | }, 959 | "node_modules/postcss": { 960 | "version": "8.4.31", 961 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 962 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 963 | "funding": [ 964 | { 965 | "type": "opencollective", 966 | "url": "https://opencollective.com/postcss/" 967 | }, 968 | { 969 | "type": "tidelift", 970 | "url": "https://tidelift.com/funding/github/npm/postcss" 971 | }, 972 | { 973 | "type": "github", 974 | "url": "https://github.com/sponsors/ai" 975 | } 976 | ], 977 | "dependencies": { 978 | "nanoid": "^3.3.6", 979 | "picocolors": "^1.0.0", 980 | "source-map-js": "^1.0.2" 981 | }, 982 | "engines": { 983 | "node": "^10 || ^12 || >=14" 984 | } 985 | }, 986 | "node_modules/postcss-css-variables": { 987 | "version": "0.18.0", 988 | "resolved": "https://registry.npmjs.org/postcss-css-variables/-/postcss-css-variables-0.18.0.tgz", 989 | "integrity": "sha512-lYS802gHbzn1GI+lXvy9MYIYDuGnl1WB4FTKoqMQqJ3Mab09A7a/1wZvGTkCEZJTM8mSbIyb1mJYn8f0aPye0Q==", 990 | "dependencies": { 991 | "balanced-match": "^1.0.0", 992 | "escape-string-regexp": "^1.0.3", 993 | "extend": "^3.0.1" 994 | }, 995 | "peerDependencies": { 996 | "postcss": "^8.2.6" 997 | } 998 | }, 999 | "node_modules/postcss-import": { 1000 | "version": "14.1.0", 1001 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", 1002 | "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", 1003 | "dependencies": { 1004 | "postcss-value-parser": "^4.0.0", 1005 | "read-cache": "^1.0.0", 1006 | "resolve": "^1.1.7" 1007 | }, 1008 | "engines": { 1009 | "node": ">=10.0.0" 1010 | }, 1011 | "peerDependencies": { 1012 | "postcss": "^8.0.0" 1013 | } 1014 | }, 1015 | "node_modules/postcss-js": { 1016 | "version": "4.0.0", 1017 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 1018 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", 1019 | "dependencies": { 1020 | "camelcase-css": "^2.0.1" 1021 | }, 1022 | "engines": { 1023 | "node": "^12 || ^14 || >= 16" 1024 | }, 1025 | "funding": { 1026 | "type": "opencollective", 1027 | "url": "https://opencollective.com/postcss/" 1028 | }, 1029 | "peerDependencies": { 1030 | "postcss": "^8.3.3" 1031 | } 1032 | }, 1033 | "node_modules/postcss-load-config": { 1034 | "version": "3.1.4", 1035 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 1036 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 1037 | "dependencies": { 1038 | "lilconfig": "^2.0.5", 1039 | "yaml": "^1.10.2" 1040 | }, 1041 | "engines": { 1042 | "node": ">= 10" 1043 | }, 1044 | "funding": { 1045 | "type": "opencollective", 1046 | "url": "https://opencollective.com/postcss/" 1047 | }, 1048 | "peerDependencies": { 1049 | "postcss": ">=8.0.9", 1050 | "ts-node": ">=9.0.0" 1051 | }, 1052 | "peerDependenciesMeta": { 1053 | "postcss": { 1054 | "optional": true 1055 | }, 1056 | "ts-node": { 1057 | "optional": true 1058 | } 1059 | } 1060 | }, 1061 | "node_modules/postcss-nested": { 1062 | "version": "6.0.0", 1063 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", 1064 | "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", 1065 | "dependencies": { 1066 | "postcss-selector-parser": "^6.0.10" 1067 | }, 1068 | "engines": { 1069 | "node": ">=12.0" 1070 | }, 1071 | "funding": { 1072 | "type": "opencollective", 1073 | "url": "https://opencollective.com/postcss/" 1074 | }, 1075 | "peerDependencies": { 1076 | "postcss": "^8.2.14" 1077 | } 1078 | }, 1079 | "node_modules/postcss-selector-parser": { 1080 | "version": "6.0.11", 1081 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", 1082 | "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", 1083 | "dependencies": { 1084 | "cssesc": "^3.0.0", 1085 | "util-deprecate": "^1.0.2" 1086 | }, 1087 | "engines": { 1088 | "node": ">=4" 1089 | } 1090 | }, 1091 | "node_modules/postcss-value-parser": { 1092 | "version": "4.2.0", 1093 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1094 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" 1095 | }, 1096 | "node_modules/queue-microtask": { 1097 | "version": "1.2.3", 1098 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1099 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1100 | "funding": [ 1101 | { 1102 | "type": "github", 1103 | "url": "https://github.com/sponsors/feross" 1104 | }, 1105 | { 1106 | "type": "patreon", 1107 | "url": "https://www.patreon.com/feross" 1108 | }, 1109 | { 1110 | "type": "consulting", 1111 | "url": "https://feross.org/support" 1112 | } 1113 | ] 1114 | }, 1115 | "node_modules/quick-lru": { 1116 | "version": "5.1.1", 1117 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1118 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 1119 | "engines": { 1120 | "node": ">=10" 1121 | }, 1122 | "funding": { 1123 | "url": "https://github.com/sponsors/sindresorhus" 1124 | } 1125 | }, 1126 | "node_modules/read-cache": { 1127 | "version": "1.0.0", 1128 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 1129 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1130 | "dependencies": { 1131 | "pify": "^2.3.0" 1132 | } 1133 | }, 1134 | "node_modules/readdirp": { 1135 | "version": "3.6.0", 1136 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1137 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1138 | "dependencies": { 1139 | "picomatch": "^2.2.1" 1140 | }, 1141 | "engines": { 1142 | "node": ">=8.10.0" 1143 | } 1144 | }, 1145 | "node_modules/resolve": { 1146 | "version": "1.22.1", 1147 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1148 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1149 | "dependencies": { 1150 | "is-core-module": "^2.9.0", 1151 | "path-parse": "^1.0.7", 1152 | "supports-preserve-symlinks-flag": "^1.0.0" 1153 | }, 1154 | "bin": { 1155 | "resolve": "bin/resolve" 1156 | }, 1157 | "funding": { 1158 | "url": "https://github.com/sponsors/ljharb" 1159 | } 1160 | }, 1161 | "node_modules/reusify": { 1162 | "version": "1.0.4", 1163 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1164 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1165 | "engines": { 1166 | "iojs": ">=1.0.0", 1167 | "node": ">=0.10.0" 1168 | } 1169 | }, 1170 | "node_modules/run-parallel": { 1171 | "version": "1.2.0", 1172 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1173 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1174 | "funding": [ 1175 | { 1176 | "type": "github", 1177 | "url": "https://github.com/sponsors/feross" 1178 | }, 1179 | { 1180 | "type": "patreon", 1181 | "url": "https://www.patreon.com/feross" 1182 | }, 1183 | { 1184 | "type": "consulting", 1185 | "url": "https://feross.org/support" 1186 | } 1187 | ], 1188 | "dependencies": { 1189 | "queue-microtask": "^1.2.2" 1190 | } 1191 | }, 1192 | "node_modules/source-map": { 1193 | "version": "0.6.1", 1194 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1195 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1196 | "dev": true, 1197 | "engines": { 1198 | "node": ">=0.10.0" 1199 | } 1200 | }, 1201 | "node_modules/source-map-js": { 1202 | "version": "1.0.2", 1203 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1204 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1205 | "engines": { 1206 | "node": ">=0.10.0" 1207 | } 1208 | }, 1209 | "node_modules/source-map-support": { 1210 | "version": "0.5.21", 1211 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1212 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1213 | "dev": true, 1214 | "dependencies": { 1215 | "buffer-from": "^1.0.0", 1216 | "source-map": "^0.6.0" 1217 | } 1218 | }, 1219 | "node_modules/supports-preserve-symlinks-flag": { 1220 | "version": "1.0.0", 1221 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1222 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1223 | "engines": { 1224 | "node": ">= 0.4" 1225 | }, 1226 | "funding": { 1227 | "url": "https://github.com/sponsors/ljharb" 1228 | } 1229 | }, 1230 | "node_modules/tailwindcss": { 1231 | "version": "3.2.7", 1232 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", 1233 | "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", 1234 | "dependencies": { 1235 | "arg": "^5.0.2", 1236 | "chokidar": "^3.5.3", 1237 | "color-name": "^1.1.4", 1238 | "detective": "^5.2.1", 1239 | "didyoumean": "^1.2.2", 1240 | "dlv": "^1.1.3", 1241 | "fast-glob": "^3.2.12", 1242 | "glob-parent": "^6.0.2", 1243 | "is-glob": "^4.0.3", 1244 | "lilconfig": "^2.0.6", 1245 | "micromatch": "^4.0.5", 1246 | "normalize-path": "^3.0.0", 1247 | "object-hash": "^3.0.0", 1248 | "picocolors": "^1.0.0", 1249 | "postcss": "^8.0.9", 1250 | "postcss-import": "^14.1.0", 1251 | "postcss-js": "^4.0.0", 1252 | "postcss-load-config": "^3.1.4", 1253 | "postcss-nested": "6.0.0", 1254 | "postcss-selector-parser": "^6.0.11", 1255 | "postcss-value-parser": "^4.2.0", 1256 | "quick-lru": "^5.1.1", 1257 | "resolve": "^1.22.1" 1258 | }, 1259 | "bin": { 1260 | "tailwind": "lib/cli.js", 1261 | "tailwindcss": "lib/cli.js" 1262 | }, 1263 | "engines": { 1264 | "node": ">=12.13.0" 1265 | }, 1266 | "peerDependencies": { 1267 | "postcss": "^8.0.9" 1268 | } 1269 | }, 1270 | "node_modules/to-regex-range": { 1271 | "version": "5.0.1", 1272 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1273 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1274 | "dependencies": { 1275 | "is-number": "^7.0.0" 1276 | }, 1277 | "engines": { 1278 | "node": ">=8.0" 1279 | } 1280 | }, 1281 | "node_modules/tsx": { 1282 | "version": "3.12.2", 1283 | "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.2.tgz", 1284 | "integrity": "sha512-ykAEkoBg30RXxeOMVeZwar+JH632dZn9EUJVyJwhfag62k6UO/dIyJEV58YuLF6e5BTdV/qmbQrpkWqjq9cUnQ==", 1285 | "dev": true, 1286 | "dependencies": { 1287 | "@esbuild-kit/cjs-loader": "^2.4.1", 1288 | "@esbuild-kit/core-utils": "^3.0.0", 1289 | "@esbuild-kit/esm-loader": "^2.5.4" 1290 | }, 1291 | "bin": { 1292 | "tsx": "dist/cli.js" 1293 | }, 1294 | "optionalDependencies": { 1295 | "fsevents": "~2.3.2" 1296 | } 1297 | }, 1298 | "node_modules/typescript": { 1299 | "version": "4.9.4", 1300 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 1301 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 1302 | "dev": true, 1303 | "bin": { 1304 | "tsc": "bin/tsc", 1305 | "tsserver": "bin/tsserver" 1306 | }, 1307 | "engines": { 1308 | "node": ">=4.2.0" 1309 | } 1310 | }, 1311 | "node_modules/util-deprecate": { 1312 | "version": "1.0.2", 1313 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1314 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1315 | }, 1316 | "node_modules/xtend": { 1317 | "version": "4.0.2", 1318 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1319 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1320 | "engines": { 1321 | "node": ">=0.4" 1322 | } 1323 | }, 1324 | "node_modules/yaml": { 1325 | "version": "1.10.2", 1326 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1327 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 1328 | "engines": { 1329 | "node": ">= 6" 1330 | } 1331 | } 1332 | } 1333 | } 1334 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tw-to-css", 3 | "version": "0.0.12", 4 | "description": "Tailwindcss Inline CSS", 5 | "main": "dist/index.cjs", 6 | "module": "dist/index.mjs", 7 | "unpkg": "dist/cdn.min.js", 8 | "types": "./index.d.ts", 9 | "exports": { 10 | ".": { 11 | "types": "./index.d.ts", 12 | "import": "./dist/index.mjs", 13 | "require": "./dist/index.cjs", 14 | "browser": "./dist/cdn.min.js" 15 | } 16 | }, 17 | "files": [ 18 | "index.d.ts", 19 | "dist/*" 20 | ], 21 | "scripts": { 22 | "build": "tsx src/build.ts" 23 | }, 24 | "repository": { 25 | "type": "git", 26 | "url": "git+https://github.com/vinicoder/tw-to-css.git" 27 | }, 28 | "keywords": [ 29 | "tailwind", 30 | "tailwindcss" 31 | ], 32 | "author": "Vinicius de Moraes (vinicoder@gmail.com)", 33 | "license": "MIT", 34 | "bugs": { 35 | "url": "https://github.com/vinicoder/tw-to-css/issues" 36 | }, 37 | "dependencies": { 38 | "postcss": "8.4.31", 39 | "postcss-css-variables": "0.18.0", 40 | "tailwindcss": "3.3.2" 41 | }, 42 | "devDependencies": { 43 | "@types/node": "18.11.18", 44 | "@types/postcss-css-variables": "0.18.0", 45 | "@types/react": "18.0.28", 46 | "@types/tailwindcss": "3.1.0", 47 | "esbuild": "0.15.18", 48 | "tsx": "3.12.2", 49 | "typescript": "4.9.4" 50 | }, 51 | "homepage": "https://github.com/vinicoder/tw-to-css#readme", 52 | "engines": { 53 | "node": ">=16.0.0" 54 | }, 55 | "publishConfig": { 56 | "access": "public" 57 | }, 58 | "type": "module" 59 | } 60 | -------------------------------------------------------------------------------- /src/build.ts: -------------------------------------------------------------------------------- 1 | import { readdir, readFile } from "fs/promises"; 2 | import { parse } from "path"; 3 | import { fileURLToPath } from "url"; 4 | import { build, BuildOptions } from "esbuild"; 5 | 6 | const buildConfig: BuildOptions = { 7 | define: { 8 | "process.env.DEBUG": "undefined", 9 | "process.env.JEST_WORKER_ID": "1", 10 | __OXIDE__: "undefined", 11 | __dirname: '"/"', 12 | }, 13 | supported: { 14 | "nullish-coalescing": false, 15 | "optional-chain": false, 16 | }, 17 | external: ["svgo"], 18 | plugins: [ 19 | { 20 | name: "alias", 21 | async setup({ onLoad, onResolve, resolve }) { 22 | const stubFiles = await readdir("src/stubs", { withFileTypes: true }); 23 | const stubNames = stubFiles 24 | .filter((file) => file.isFile()) 25 | .map((file) => parse(file.name).name); 26 | 27 | onResolve({ filter: new RegExp(`^(${stubNames.join("|")})$`) }, ({ path }) => ({ 28 | path: fileURLToPath(new URL(`stubs/${path}.ts`, import.meta.url)), 29 | sideEffects: false, 30 | })); 31 | 32 | onResolve({ filter: /^@tailwindcss\/oxide/ }, ({ path }) => ({ 33 | path: fileURLToPath(new URL(`stubs/${path}.ts`, import.meta.url)), 34 | sideEffects: false, 35 | })); 36 | 37 | onResolve({ filter: /^tailwindcss$/ }, ({ path, ...options }) => 38 | resolve("tailwindcss/src", options) 39 | ); 40 | 41 | onResolve({ filter: /^tailwindcss\/lib/ }, ({ path, ...options }) => 42 | resolve(path.replace("lib", "src"), options) 43 | ); 44 | 45 | onResolve({ filter: /^\.+\/(util\/)?log$/, namespace: "file" }, ({ path, ...options }) => { 46 | if (options.importer.includes("tailwindcss")) { 47 | return { 48 | path: fileURLToPath(new URL("stubs/tailwindcss/utils/log.ts", import.meta.url)), 49 | sideEffects: false, 50 | }; 51 | } 52 | return resolve(path, { 53 | ...options, 54 | namespace: "noRecurse", 55 | }); 56 | }); 57 | 58 | onResolve({ filter: /^postcss-selector-parser\/.*\/\w+$/ }, ({ path, ...options }) => 59 | resolve(`${path}.js`, options) 60 | ); 61 | 62 | onLoad({ filter: /tailwindcss\/src\/css\/preflight\.css$/ }, async ({ path }) => { 63 | const result = await build({ 64 | entryPoints: [path], 65 | minify: true, 66 | logLevel: "silent", 67 | write: false, 68 | }); 69 | return { contents: result.outputFiles[0].text, loader: "text" }; 70 | }); 71 | 72 | onLoad({ filter: /\/tailwindcss\/stubs\/defaultConfig\.stub\.js$/ }, async ({ path }) => { 73 | const cjs = await readFile(path, "utf8"); 74 | const esm = cjs.replace("module.exports =", "export default"); 75 | return { contents: esm }; 76 | }); 77 | }, 78 | }, 79 | ], 80 | }; 81 | 82 | // COMMONJS 83 | build({ 84 | entryPoints: { "index.cjs": "src/builds/module.ts" }, 85 | bundle: true, 86 | minify: true, 87 | logLevel: "info", 88 | outfile: "dist/index.cjs", 89 | format: "cjs", 90 | ...buildConfig, 91 | }); 92 | 93 | // MODULE 94 | build({ 95 | entryPoints: { "index.mjs": "src/builds/module.ts" }, 96 | bundle: true, 97 | minify: true, 98 | logLevel: "info", 99 | outfile: "dist/index.mjs", 100 | format: "esm", 101 | ...buildConfig, 102 | }); 103 | 104 | // CDN 105 | build({ 106 | entryPoints: { "cdn.min": "src/builds/cdn.ts" }, 107 | bundle: true, 108 | minify: true, 109 | logLevel: "info", 110 | outdir: "dist", 111 | format: "iife", 112 | ...buildConfig, 113 | }); 114 | -------------------------------------------------------------------------------- /src/builds/cdn.ts: -------------------------------------------------------------------------------- 1 | import { twi, tailwindToCSS, twj } from ".."; 2 | 3 | const w = window as any; 4 | 5 | w.twi = twi; 6 | w.twj = twj; 7 | w.tailwindToCSS = tailwindToCSS; 8 | w.twToCSS = tailwindToCSS; 9 | -------------------------------------------------------------------------------- /src/builds/module.ts: -------------------------------------------------------------------------------- 1 | export { twi, twj, tailwindToCSS, twToCSS } from ".."; 2 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import types from ".."; 2 | import { processTailwindCSS, formatCSS } from "./util"; 3 | import { cssToJson } from "./util/css-to-json"; 4 | 5 | const getCSS: typeof types.getCSS = (content, config) => { 6 | const preflight = ((config?.corePlugins as any)?.preflight as boolean) ?? false; 7 | const corePlugins = (config?.corePlugins as {}) || {}; 8 | 9 | return processTailwindCSS({ 10 | config: { 11 | ...config, 12 | corePlugins: { 13 | ...corePlugins, 14 | preflight, 15 | }, 16 | }, 17 | content, 18 | }); 19 | }; 20 | 21 | const tailwindToCSS: typeof types.tailwindToCSS = ({ config, options }) => ({ 22 | twi: tailwindInlineCSS(config, options), 23 | twj: tailwindInlineJson(config, options), 24 | }); 25 | 26 | const classListFormatter: typeof types.classListFormatter = (...params) => { 27 | let classList = ""; 28 | 29 | if (typeof params[0] === "string") { 30 | classList = params[0]; 31 | } else if (Array.isArray(params[0])) { 32 | classList = (params as any[]) 33 | .flat(Infinity) 34 | .map((styles) => classListFormatter(styles)) 35 | .join(" "); 36 | } else if (typeof params[0] === "object") { 37 | classList = Object.entries(params[0]) 38 | .filter((entry) => !!entry[1]) 39 | .map((entry) => entry[0]) 40 | .join(" "); 41 | } 42 | 43 | classList = classList.replace(/\s+/g, " "); 44 | 45 | return classList; 46 | }; 47 | 48 | const tailwindInlineCSS: typeof types.tailwindInlineCSS = 49 | (config, mainOptions) => 50 | (...params: any) => { 51 | const content = classListFormatter(params); 52 | 53 | const { 1: options } = params || {}; 54 | 55 | const defaultOptions = { merge: true, minify: true, ignoreMediaQueries: true }; 56 | const twiOptions = { ...defaultOptions, ...mainOptions, ...options }; 57 | 58 | let css = formatCSS(getCSS(content, config)); 59 | 60 | if (twiOptions?.ignoreMediaQueries) { 61 | css.removeMediaQueries(); 62 | } else { 63 | css.removeUndefined(); 64 | css.combineMediaQueries(); 65 | } 66 | 67 | css.fixRGB(); 68 | 69 | if (twiOptions?.merge) css.merge(); 70 | if (twiOptions?.minify) css.minify(); 71 | 72 | return css.get(); 73 | }; 74 | 75 | const tailwindInlineJson: typeof types.tailwindInlineJson = 76 | (config, mainOptions) => 77 | (...params: any) => { 78 | return cssToJson(tailwindInlineCSS(config, mainOptions)(params)); 79 | }; 80 | 81 | const twi: typeof types.twi = tailwindInlineCSS(); 82 | const twj: typeof types.twj = tailwindInlineJson(); 83 | 84 | const twToCSS = tailwindToCSS; 85 | 86 | export { twi, twj, tailwindToCSS, twToCSS }; 87 | -------------------------------------------------------------------------------- /src/stubs/@tailwindcss/oxide.ts: -------------------------------------------------------------------------------- 1 | export default null; 2 | -------------------------------------------------------------------------------- /src/stubs/crypto.ts: -------------------------------------------------------------------------------- 1 | export default null; 2 | -------------------------------------------------------------------------------- /src/stubs/fs.ts: -------------------------------------------------------------------------------- 1 | import preflight from "tailwindcss/src/css/preflight.css"; 2 | 3 | export default { 4 | // Reading the preflight CSS is the only use of fs at the moment of writing. 5 | readFileSync: () => preflight, 6 | }; 7 | -------------------------------------------------------------------------------- /src/stubs/path.ts: -------------------------------------------------------------------------------- 1 | export const join = (): string => ""; 2 | -------------------------------------------------------------------------------- /src/stubs/picocolors.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | yellow: (input: string) => input, 3 | }; 4 | -------------------------------------------------------------------------------- /src/stubs/tailwindcss/utils/log.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-function 2 | export function log(): void {} 3 | 4 | export function dim(input: string): string { 5 | return input; 6 | } 7 | 8 | export default { 9 | info: log, 10 | warn: log, 11 | risk: log, 12 | }; 13 | -------------------------------------------------------------------------------- /src/stubs/url.ts: -------------------------------------------------------------------------------- 1 | export default null; 2 | -------------------------------------------------------------------------------- /src/util/class-to-css.ts: -------------------------------------------------------------------------------- 1 | import { twi } from ".."; 2 | 3 | export function classToCSS(HTML: string, inline: boolean = false) { 4 | const classRegex = /class="(.*?)"/g; 5 | 6 | let CSS = twi(HTML); 7 | let styleTag = ""; 8 | if (!inline) { 9 | let head = HTML.match(//gs); 10 | if (!head) { 11 | inline = true; 12 | } else { 13 | let headElement = head[0]; 14 | 15 | styleTag = ``; 16 | const styleTagExists = headElement.match(//gs); 17 | if (styleTagExists) { 18 | styleTag = styleTagExists[0].replace("", `${CSS}`); 19 | headElement = headElement.replace(styleTagExists[0], styleTag); 20 | } else { 21 | headElement = headElement.replace("", `${styleTag}`); 22 | } 23 | HTML = HTML.replace(//gs, headElement); 24 | } 25 | } 26 | if (inline) { 27 | const elementRegex = /<.*?>/g; 28 | const elements = HTML.match(elementRegex); 29 | elements?.forEach((element) => { 30 | const elClasses = element.match(classRegex); 31 | if (elClasses) { 32 | let elCSS = twi(elClasses[0]); 33 | const styleAttrRegex = /style=".*?"/g; 34 | const styleAttrMatches = element.match(styleAttrRegex); 35 | if (styleAttrMatches) { 36 | elCSS = styleAttrMatches[0].replace('style="', `style="${elCSS}`); 37 | HTML = HTML.replace(element, element.replace(styleAttrMatches[0], elCSS)); 38 | } else { 39 | const styleAttr = ` style="${elCSS}"`; 40 | HTML = HTML.replace(element, element.replace(">", `${styleAttr}>`)); 41 | } 42 | } 43 | }); 44 | } 45 | 46 | return HTML; 47 | } 48 | -------------------------------------------------------------------------------- /src/util/create-tailwind-css-plugin.ts: -------------------------------------------------------------------------------- 1 | import processTailwindFeatures from "tailwindcss/src/processTailwindFeatures.js"; 2 | import resolveConfig from "tailwindcss/src/public/resolve-config.js"; 3 | import { AcceptedPlugin } from "postcss"; 4 | import { TailwindConfig } from "tailwindcss/tailwindconfig.faketype"; 5 | 6 | export const createTailwindcssPlugin = (props: { 7 | config?: TailwindConfig; 8 | content: string; 9 | }): AcceptedPlugin => { 10 | const tailwindConfig = resolveConfig(props.config ?? {}); 11 | const tailwindcssPlugin = processTailwindFeatures( 12 | (processOptions) => () => 13 | processOptions.createContext(tailwindConfig, [{ content: props.content }]) 14 | ); 15 | return tailwindcssPlugin; 16 | }; 17 | -------------------------------------------------------------------------------- /src/util/css-to-json.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from "react"; 2 | import postcss from "postcss"; 3 | import postcssJs from "postcss-js"; 4 | 5 | export function cssToJson(css: string): CSSProperties { 6 | const root = postcss.parse(css); 7 | return postcssJs.objectify(root); 8 | } 9 | -------------------------------------------------------------------------------- /src/util/default-tailwind-css.ts: -------------------------------------------------------------------------------- 1 | export const defaultTailwindCSS = String.raw` 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | `; 6 | -------------------------------------------------------------------------------- /src/util/format-css.ts: -------------------------------------------------------------------------------- 1 | export const formatCSS = (css: string) => ({ 2 | extractCSS(content: string, nested: boolean = false) { 3 | const propValueRegex = /(?:[\s\r\n]*)?(?[\w-]+)\s*:\s*(?[^;\r\n]+)/gm; 4 | let match: RegExpExecArray | null; 5 | const props: { [key: string]: string | undefined } = {}; 6 | 7 | while ((match = propValueRegex.exec(content)) !== null) { 8 | const { prop, value } = match.groups!; 9 | props[prop] = value; 10 | } 11 | 12 | return Object.entries(props).reduce( 13 | (acc, [prop, value]) => acc + `${nested ? "\t" : ""}${prop}: ${value}; \n\r`, 14 | "" 15 | ); 16 | }, 17 | merge() { 18 | const blockContentRegex = /(?<=\.)[^{]+\s*\{(?[^{}]*(?:(?<=;)\s*\n\r?[^{}]*)*)\s*\}/gm; 19 | let matchBlock: RegExpExecArray | null; 20 | let blockContent = ""; 21 | 22 | while ((matchBlock = blockContentRegex.exec(css)) !== null) { 23 | const { content } = matchBlock.groups!; 24 | blockContent += content; 25 | } 26 | 27 | let mergedCSS = this.extractCSS(blockContent); 28 | 29 | const mediaRegex = /(?@media\s*\([^\)]*\))\s*\{(?[^\}]*)\}/gm; 30 | let matchMedia: RegExpExecArray | null; 31 | while ((matchMedia = mediaRegex.exec(css)) !== null) { 32 | const { media, content } = matchMedia.groups!; 33 | mergedCSS += `\n\r${media} {\n\r${this.extractCSS(content, true)}}\n\r`; 34 | } 35 | 36 | css = mergedCSS; 37 | 38 | return this; 39 | }, 40 | removeUndefined() { 41 | const undefinedPropRegex = 42 | /^[^{}]*(?:[.#][a-zA-Z0-9_-]+)[^{]*{[^}]*\b(?:[a-z-]+):\s*undefined\s*;?[^}]*}/gm; 43 | css = css.replace(undefinedPropRegex, ""); 44 | 45 | return this; 46 | }, 47 | combineMediaQueries() { 48 | const regex = new RegExp( 49 | "@media\\s*(?\\([^)]+\\))\\s*{(?(?:[^{}]+|{(?:[^{}]+|{[^{}]*})*})+)}", 50 | "gs" 51 | ); 52 | 53 | const medias = new Map(); 54 | 55 | const cleanCSS = (cssText: string) => 56 | cssText.replace(regex, (_, conditions, content) => { 57 | const mediaContent = medias.get(conditions) ?? ""; 58 | medias.set(conditions, mediaContent + cleanCSS(content.trim())); 59 | cleanCSS(content); 60 | return ""; 61 | }); 62 | 63 | const parts = []; 64 | parts.push(cleanCSS(css)); 65 | parts.push(...Array.from(medias, ([condition, content]) => `@media${condition}{${content}}`)); 66 | 67 | css = parts.join(""); 68 | 69 | return this; 70 | }, 71 | minify() { 72 | css = css 73 | 74 | // Remove comments 75 | .replace(/\/\*[\s\S]*?\*\//gm, "") 76 | 77 | // Remove extra spaces after semicolons and colons 78 | .replace(/;\s+/gm, ";") 79 | .replace(/:\s+/gm, ":") 80 | 81 | // Remove extra spaces before and after brackets 82 | .replace(/\)\s*{/gm, "){") // Remove spaces before opening curly brace after closing parenthesis 83 | .replace(/\s+\(/gm, "(") // Remove spaces before opening parenthesis 84 | .replace(/{\s+/gm, "{") // Remove spaces after opening curly brace 85 | .replace(/}\s+/gm, "}") // Remove spaces before closing curly brace 86 | .replace(/\s*{/gm, "{") // Remove spaces after opening curly brace 87 | .replace(/;?\s*}/gm, "}"); // Remove extra spaces and semicolons before closing curly braces 88 | 89 | return this; 90 | }, 91 | fixRGB() { 92 | const regex = 93 | /rgb\(\s*(?\d+)\s*(?\d+)\s*(?\d+)(?:\s*\/\s*(?[\d%.]+))?\s*\)/gm; 94 | let match: RegExpExecArray | null; 95 | 96 | while ((match = regex.exec(css)) !== null) { 97 | const [matchString] = match; 98 | let { red, green, blue, alpha = 1 } = match.groups!; 99 | css = css.replace( 100 | matchString, 101 | `rgb(${red},${green},${blue}${alpha === "1" ? "" : `,${alpha}`})` 102 | ); 103 | } 104 | 105 | return this; 106 | }, 107 | removeMediaQueries() { 108 | css = css.replace(/@media[^\{]+\{[^@]+\}/g, ""); 109 | 110 | return this; 111 | }, 112 | get() { 113 | return css; 114 | }, 115 | }); 116 | -------------------------------------------------------------------------------- /src/util/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./format-css"; 2 | export * from "./create-tailwind-css-plugin"; 3 | export * from "./process-tailwind-css"; 4 | export * from "./default-tailwind-css"; 5 | export * from "./class-to-css"; 6 | -------------------------------------------------------------------------------- /src/util/process-tailwind-css.ts: -------------------------------------------------------------------------------- 1 | import postcss from "postcss"; 2 | import postcssVariables from "postcss-css-variables"; 3 | import { TailwindConfig } from "tailwindcss/tailwindconfig.faketype"; 4 | import { createTailwindcssPlugin, defaultTailwindCSS } from "."; 5 | 6 | export const processTailwindCSS = (props: { config?: TailwindConfig; content: string }) => { 7 | const tailwindcssPlugin = createTailwindcssPlugin({ 8 | config: props.config, 9 | content: props.content, 10 | }); 11 | const processor = postcss([tailwindcssPlugin, postcssVariables()]); 12 | const result = processor.process(defaultTailwindCSS, { from: undefined }); 13 | return result.css; 14 | }; 15 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "lib": ["dom", "esnext", "dom.iterable"], 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "noEmit": true, 8 | "strict": true, 9 | "stripInternal": true, 10 | "target": "esnext" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /types.d.ts: -------------------------------------------------------------------------------- 1 | declare module "tailwindcss/tailwindconfig.faketype" { 2 | import { Config } from "tailwindcss"; 3 | 4 | export interface TailwindConfig { 5 | important?: Config["important"]; 6 | prefix?: Config["prefix"]; 7 | separator?: Config["separator"]; 8 | safelist?: Config["safelist"]; 9 | presets?: Config["presets"]; 10 | future?: Config["future"]; 11 | experimental?: Config["experimental"]; 12 | darkMode?: Config["darkMode"]; 13 | theme?: Config["theme"]; 14 | corePlugins?: Config["corePlugins"]; 15 | plugins?: Config["plugins"]; 16 | } 17 | } 18 | 19 | declare module "tailwindcss/src/lib/expandApplyAtRules.js" { 20 | export default function expandApplyAtRules(): void; 21 | } 22 | 23 | declare module "tailwindcss/src/lib/generateRules.js" { 24 | export function generateRules(): void; 25 | } 26 | 27 | declare module "tailwindcss/src/lib/setupContextUtils.js" { 28 | import { Container } from "postcss"; 29 | import { TailwindConfig } from "tailwindcss/tailwindconfig.faketype"; 30 | 31 | interface ChangedContent { 32 | content: string; 33 | extension?: string; 34 | } 35 | 36 | interface Api { 37 | container: Container; 38 | separator: string; 39 | format: (def: string) => void; 40 | wrap: (rule: Container) => void; 41 | } 42 | 43 | type VariantPreview = string; 44 | 45 | type VariantFn = [number, (api: Api) => VariantPreview | undefined]; 46 | 47 | type VariantName = string; 48 | 49 | export interface JitContext { 50 | changedContent: ChangedContent[]; 51 | getClassList: () => string[]; 52 | tailwindConfig: TailwindConfig; 53 | variantMap: Map; 54 | } 55 | 56 | export function createContext( 57 | config: TailwindConfig, 58 | changedContent?: ChangedContent[] 59 | ): JitContext; 60 | } 61 | 62 | declare module "tailwindcss/src/processTailwindFeatures.js" { 63 | import { AtRule, Plugin, Result, Root } from "postcss"; 64 | import { ChangedContent, JitContext } from "tailwindcss/src/lib/setupContextUtils.js"; 65 | import { TailwindConfig } from "tailwindcss/tailwindconfig.faketype"; 66 | 67 | type SetupContext = (root: Root, result: Result) => JitContext; 68 | 69 | interface ProcessTailwindFeaturesCallbackOptions { 70 | applyDirectives: Set; 71 | createContext: (config: TailwindConfig, changedContent: ChangedContent[]) => JitContext; 72 | registerDependency: () => unknown; 73 | tailwindDirectives: Set; 74 | } 75 | 76 | export default function processTailwindFeatures( 77 | callback: (options: ProcessTailwindFeaturesCallbackOptions) => SetupContext 78 | ): Plugin; 79 | } 80 | 81 | declare module "tailwindcss/src/public/resolve-config.js" { 82 | import { TailwindConfig } from "tailwindcss/tailwindconfig.faketype"; 83 | 84 | export default function resolveConfig(tailwindConfig: TailwindConfig): TailwindConfig; 85 | } 86 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@alloc/quick-lru@^5.2.0": 6 | version "5.2.0" 7 | resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" 8 | integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== 9 | 10 | "@esbuild-kit/cjs-loader@^2.4.1": 11 | version "2.4.4" 12 | resolved "https://registry.yarnpkg.com/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.4.tgz#8638177732e2de258a3243597bfdba082993c442" 13 | integrity sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg== 14 | dependencies: 15 | "@esbuild-kit/core-utils" "^3.2.3" 16 | get-tsconfig "^4.7.0" 17 | 18 | "@esbuild-kit/core-utils@^3.0.0", "@esbuild-kit/core-utils@^3.2.3", "@esbuild-kit/core-utils@^3.3.2": 19 | version "3.3.2" 20 | resolved "https://registry.yarnpkg.com/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz#186b6598a5066f0413471d7c4d45828e399ba96c" 21 | integrity sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ== 22 | dependencies: 23 | esbuild "~0.18.20" 24 | source-map-support "^0.5.21" 25 | 26 | "@esbuild-kit/esm-loader@^2.5.4": 27 | version "2.6.5" 28 | resolved "https://registry.yarnpkg.com/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz#6eedee46095d7d13b1efc381e2211ed1c60e64ea" 29 | integrity sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA== 30 | dependencies: 31 | "@esbuild-kit/core-utils" "^3.3.2" 32 | get-tsconfig "^4.7.0" 33 | 34 | "@esbuild/android-arm64@0.18.20": 35 | version "0.18.20" 36 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" 37 | integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== 38 | 39 | "@esbuild/android-arm@0.15.18": 40 | version "0.15.18" 41 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80" 42 | integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw== 43 | 44 | "@esbuild/android-arm@0.18.20": 45 | version "0.18.20" 46 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" 47 | integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== 48 | 49 | "@esbuild/android-x64@0.18.20": 50 | version "0.18.20" 51 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" 52 | integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== 53 | 54 | "@esbuild/darwin-arm64@0.18.20": 55 | version "0.18.20" 56 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" 57 | integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== 58 | 59 | "@esbuild/darwin-x64@0.18.20": 60 | version "0.18.20" 61 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" 62 | integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== 63 | 64 | "@esbuild/freebsd-arm64@0.18.20": 65 | version "0.18.20" 66 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" 67 | integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== 68 | 69 | "@esbuild/freebsd-x64@0.18.20": 70 | version "0.18.20" 71 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" 72 | integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== 73 | 74 | "@esbuild/linux-arm64@0.18.20": 75 | version "0.18.20" 76 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" 77 | integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== 78 | 79 | "@esbuild/linux-arm@0.18.20": 80 | version "0.18.20" 81 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" 82 | integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== 83 | 84 | "@esbuild/linux-ia32@0.18.20": 85 | version "0.18.20" 86 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" 87 | integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== 88 | 89 | "@esbuild/linux-loong64@0.15.18": 90 | version "0.15.18" 91 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239" 92 | integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ== 93 | 94 | "@esbuild/linux-loong64@0.18.20": 95 | version "0.18.20" 96 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" 97 | integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== 98 | 99 | "@esbuild/linux-mips64el@0.18.20": 100 | version "0.18.20" 101 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" 102 | integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== 103 | 104 | "@esbuild/linux-ppc64@0.18.20": 105 | version "0.18.20" 106 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" 107 | integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== 108 | 109 | "@esbuild/linux-riscv64@0.18.20": 110 | version "0.18.20" 111 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" 112 | integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== 113 | 114 | "@esbuild/linux-s390x@0.18.20": 115 | version "0.18.20" 116 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" 117 | integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== 118 | 119 | "@esbuild/linux-x64@0.18.20": 120 | version "0.18.20" 121 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" 122 | integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== 123 | 124 | "@esbuild/netbsd-x64@0.18.20": 125 | version "0.18.20" 126 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" 127 | integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== 128 | 129 | "@esbuild/openbsd-x64@0.18.20": 130 | version "0.18.20" 131 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" 132 | integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== 133 | 134 | "@esbuild/sunos-x64@0.18.20": 135 | version "0.18.20" 136 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" 137 | integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== 138 | 139 | "@esbuild/win32-arm64@0.18.20": 140 | version "0.18.20" 141 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" 142 | integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== 143 | 144 | "@esbuild/win32-ia32@0.18.20": 145 | version "0.18.20" 146 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" 147 | integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== 148 | 149 | "@esbuild/win32-x64@0.18.20": 150 | version "0.18.20" 151 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" 152 | integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== 153 | 154 | "@jridgewell/gen-mapping@^0.3.2": 155 | version "0.3.3" 156 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" 157 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== 158 | dependencies: 159 | "@jridgewell/set-array" "^1.0.1" 160 | "@jridgewell/sourcemap-codec" "^1.4.10" 161 | "@jridgewell/trace-mapping" "^0.3.9" 162 | 163 | "@jridgewell/resolve-uri@^3.1.0": 164 | version "3.1.1" 165 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" 166 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== 167 | 168 | "@jridgewell/set-array@^1.0.1": 169 | version "1.1.2" 170 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 171 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 172 | 173 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 174 | version "1.4.15" 175 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 176 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 177 | 178 | "@jridgewell/trace-mapping@^0.3.9": 179 | version "0.3.20" 180 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" 181 | integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== 182 | dependencies: 183 | "@jridgewell/resolve-uri" "^3.1.0" 184 | "@jridgewell/sourcemap-codec" "^1.4.14" 185 | 186 | "@nodelib/fs.scandir@2.1.5": 187 | version "2.1.5" 188 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 189 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 190 | dependencies: 191 | "@nodelib/fs.stat" "2.0.5" 192 | run-parallel "^1.1.9" 193 | 194 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 195 | version "2.0.5" 196 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 197 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 198 | 199 | "@nodelib/fs.walk@^1.2.3": 200 | version "1.2.8" 201 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 202 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 203 | dependencies: 204 | "@nodelib/fs.scandir" "2.1.5" 205 | fastq "^1.6.0" 206 | 207 | "@types/node@18.11.18": 208 | version "18.11.18" 209 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" 210 | integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== 211 | 212 | "@types/postcss-css-variables@0.18.0": 213 | version "0.18.0" 214 | resolved "https://registry.yarnpkg.com/@types/postcss-css-variables/-/postcss-css-variables-0.18.0.tgz#d1ef55c99ecacbec65883fe0f620f520cc551669" 215 | integrity sha512-NJBO24iE1I6FSVE/iMWaQIPbEHbdO0FJwASy/lUJktHxLa42T3dEOQ4xEwhocDcZrQTOUguM/650KYD+p9JQ4Q== 216 | dependencies: 217 | postcss "^8.2.6" 218 | 219 | "@types/prop-types@*": 220 | version "15.7.9" 221 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" 222 | integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== 223 | 224 | "@types/react@18.0.28": 225 | version "18.0.28" 226 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" 227 | integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== 228 | dependencies: 229 | "@types/prop-types" "*" 230 | "@types/scheduler" "*" 231 | csstype "^3.0.2" 232 | 233 | "@types/scheduler@*": 234 | version "0.16.5" 235 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" 236 | integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== 237 | 238 | "@types/tailwindcss@3.1.0": 239 | version "3.1.0" 240 | resolved "https://registry.yarnpkg.com/@types/tailwindcss/-/tailwindcss-3.1.0.tgz#1185e4b3437c6e0f19d6cc8cd42738a94fd7b64f" 241 | integrity sha512-JxPzrm609hzvF4nmOI3StLjbBEP3WWQxDDJESqR1nh94h7gyyy3XSl0hn5RBMJ9mPudlLjtaXs5YEBtLw7CnPA== 242 | dependencies: 243 | tailwindcss "*" 244 | 245 | any-promise@^1.0.0: 246 | version "1.3.0" 247 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 248 | integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== 249 | 250 | anymatch@~3.1.2: 251 | version "3.1.3" 252 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 253 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 254 | dependencies: 255 | normalize-path "^3.0.0" 256 | picomatch "^2.0.4" 257 | 258 | arg@^5.0.2: 259 | version "5.0.2" 260 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" 261 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== 262 | 263 | balanced-match@^1.0.0: 264 | version "1.0.2" 265 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 266 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 267 | 268 | binary-extensions@^2.0.0: 269 | version "2.2.0" 270 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 271 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 272 | 273 | brace-expansion@^1.1.7: 274 | version "1.1.11" 275 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 276 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 277 | dependencies: 278 | balanced-match "^1.0.0" 279 | concat-map "0.0.1" 280 | 281 | braces@^3.0.2, braces@~3.0.2: 282 | version "3.0.2" 283 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 284 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 285 | dependencies: 286 | fill-range "^7.0.1" 287 | 288 | buffer-from@^1.0.0: 289 | version "1.1.2" 290 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 291 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 292 | 293 | camelcase-css@^2.0.1: 294 | version "2.0.1" 295 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" 296 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 297 | 298 | chokidar@^3.5.3: 299 | version "3.5.3" 300 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 301 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 302 | dependencies: 303 | anymatch "~3.1.2" 304 | braces "~3.0.2" 305 | glob-parent "~5.1.2" 306 | is-binary-path "~2.1.0" 307 | is-glob "~4.0.1" 308 | normalize-path "~3.0.0" 309 | readdirp "~3.6.0" 310 | optionalDependencies: 311 | fsevents "~2.3.2" 312 | 313 | commander@^4.0.0: 314 | version "4.1.1" 315 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" 316 | integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== 317 | 318 | concat-map@0.0.1: 319 | version "0.0.1" 320 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 321 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 322 | 323 | cssesc@^3.0.0: 324 | version "3.0.0" 325 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 326 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 327 | 328 | csstype@^3.0.2: 329 | version "3.1.2" 330 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 331 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 332 | 333 | didyoumean@^1.2.2: 334 | version "1.2.2" 335 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" 336 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== 337 | 338 | dlv@^1.1.3: 339 | version "1.1.3" 340 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" 341 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 342 | 343 | esbuild-android-64@0.15.18: 344 | version "0.15.18" 345 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5" 346 | integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA== 347 | 348 | esbuild-android-arm64@0.15.18: 349 | version "0.15.18" 350 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04" 351 | integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ== 352 | 353 | esbuild-darwin-64@0.15.18: 354 | version "0.15.18" 355 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410" 356 | integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg== 357 | 358 | esbuild-darwin-arm64@0.15.18: 359 | version "0.15.18" 360 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337" 361 | integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA== 362 | 363 | esbuild-freebsd-64@0.15.18: 364 | version "0.15.18" 365 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2" 366 | integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA== 367 | 368 | esbuild-freebsd-arm64@0.15.18: 369 | version "0.15.18" 370 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635" 371 | integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA== 372 | 373 | esbuild-linux-32@0.15.18: 374 | version "0.15.18" 375 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce" 376 | integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg== 377 | 378 | esbuild-linux-64@0.15.18: 379 | version "0.15.18" 380 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c" 381 | integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw== 382 | 383 | esbuild-linux-arm64@0.15.18: 384 | version "0.15.18" 385 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d" 386 | integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug== 387 | 388 | esbuild-linux-arm@0.15.18: 389 | version "0.15.18" 390 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc" 391 | integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA== 392 | 393 | esbuild-linux-mips64le@0.15.18: 394 | version "0.15.18" 395 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb" 396 | integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ== 397 | 398 | esbuild-linux-ppc64le@0.15.18: 399 | version "0.15.18" 400 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507" 401 | integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w== 402 | 403 | esbuild-linux-riscv64@0.15.18: 404 | version "0.15.18" 405 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6" 406 | integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg== 407 | 408 | esbuild-linux-s390x@0.15.18: 409 | version "0.15.18" 410 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb" 411 | integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ== 412 | 413 | esbuild-netbsd-64@0.15.18: 414 | version "0.15.18" 415 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998" 416 | integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg== 417 | 418 | esbuild-openbsd-64@0.15.18: 419 | version "0.15.18" 420 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8" 421 | integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ== 422 | 423 | esbuild-sunos-64@0.15.18: 424 | version "0.15.18" 425 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971" 426 | integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw== 427 | 428 | esbuild-windows-32@0.15.18: 429 | version "0.15.18" 430 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3" 431 | integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ== 432 | 433 | esbuild-windows-64@0.15.18: 434 | version "0.15.18" 435 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0" 436 | integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw== 437 | 438 | esbuild-windows-arm64@0.15.18: 439 | version "0.15.18" 440 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7" 441 | integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ== 442 | 443 | esbuild@0.15.18: 444 | version "0.15.18" 445 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d" 446 | integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q== 447 | optionalDependencies: 448 | "@esbuild/android-arm" "0.15.18" 449 | "@esbuild/linux-loong64" "0.15.18" 450 | esbuild-android-64 "0.15.18" 451 | esbuild-android-arm64 "0.15.18" 452 | esbuild-darwin-64 "0.15.18" 453 | esbuild-darwin-arm64 "0.15.18" 454 | esbuild-freebsd-64 "0.15.18" 455 | esbuild-freebsd-arm64 "0.15.18" 456 | esbuild-linux-32 "0.15.18" 457 | esbuild-linux-64 "0.15.18" 458 | esbuild-linux-arm "0.15.18" 459 | esbuild-linux-arm64 "0.15.18" 460 | esbuild-linux-mips64le "0.15.18" 461 | esbuild-linux-ppc64le "0.15.18" 462 | esbuild-linux-riscv64 "0.15.18" 463 | esbuild-linux-s390x "0.15.18" 464 | esbuild-netbsd-64 "0.15.18" 465 | esbuild-openbsd-64 "0.15.18" 466 | esbuild-sunos-64 "0.15.18" 467 | esbuild-windows-32 "0.15.18" 468 | esbuild-windows-64 "0.15.18" 469 | esbuild-windows-arm64 "0.15.18" 470 | 471 | esbuild@~0.18.20: 472 | version "0.18.20" 473 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" 474 | integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== 475 | optionalDependencies: 476 | "@esbuild/android-arm" "0.18.20" 477 | "@esbuild/android-arm64" "0.18.20" 478 | "@esbuild/android-x64" "0.18.20" 479 | "@esbuild/darwin-arm64" "0.18.20" 480 | "@esbuild/darwin-x64" "0.18.20" 481 | "@esbuild/freebsd-arm64" "0.18.20" 482 | "@esbuild/freebsd-x64" "0.18.20" 483 | "@esbuild/linux-arm" "0.18.20" 484 | "@esbuild/linux-arm64" "0.18.20" 485 | "@esbuild/linux-ia32" "0.18.20" 486 | "@esbuild/linux-loong64" "0.18.20" 487 | "@esbuild/linux-mips64el" "0.18.20" 488 | "@esbuild/linux-ppc64" "0.18.20" 489 | "@esbuild/linux-riscv64" "0.18.20" 490 | "@esbuild/linux-s390x" "0.18.20" 491 | "@esbuild/linux-x64" "0.18.20" 492 | "@esbuild/netbsd-x64" "0.18.20" 493 | "@esbuild/openbsd-x64" "0.18.20" 494 | "@esbuild/sunos-x64" "0.18.20" 495 | "@esbuild/win32-arm64" "0.18.20" 496 | "@esbuild/win32-ia32" "0.18.20" 497 | "@esbuild/win32-x64" "0.18.20" 498 | 499 | escape-string-regexp@^1.0.3: 500 | version "1.0.5" 501 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 502 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 503 | 504 | extend@^3.0.1: 505 | version "3.0.2" 506 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 507 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 508 | 509 | fast-glob@^3.2.12, fast-glob@^3.3.0: 510 | version "3.3.1" 511 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" 512 | integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== 513 | dependencies: 514 | "@nodelib/fs.stat" "^2.0.2" 515 | "@nodelib/fs.walk" "^1.2.3" 516 | glob-parent "^5.1.2" 517 | merge2 "^1.3.0" 518 | micromatch "^4.0.4" 519 | 520 | fastq@^1.6.0: 521 | version "1.15.0" 522 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 523 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 524 | dependencies: 525 | reusify "^1.0.4" 526 | 527 | fill-range@^7.0.1: 528 | version "7.0.1" 529 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 530 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 531 | dependencies: 532 | to-regex-range "^5.0.1" 533 | 534 | fs.realpath@^1.0.0: 535 | version "1.0.0" 536 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 537 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 538 | 539 | fsevents@~2.3.2: 540 | version "2.3.3" 541 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 542 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 543 | 544 | function-bind@^1.1.2: 545 | version "1.1.2" 546 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 547 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 548 | 549 | get-tsconfig@^4.7.0: 550 | version "4.7.2" 551 | resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" 552 | integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== 553 | dependencies: 554 | resolve-pkg-maps "^1.0.0" 555 | 556 | glob-parent@^5.1.2, glob-parent@~5.1.2: 557 | version "5.1.2" 558 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 559 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 560 | dependencies: 561 | is-glob "^4.0.1" 562 | 563 | glob-parent@^6.0.2: 564 | version "6.0.2" 565 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 566 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 567 | dependencies: 568 | is-glob "^4.0.3" 569 | 570 | glob@7.1.6: 571 | version "7.1.6" 572 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 573 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 574 | dependencies: 575 | fs.realpath "^1.0.0" 576 | inflight "^1.0.4" 577 | inherits "2" 578 | minimatch "^3.0.4" 579 | once "^1.3.0" 580 | path-is-absolute "^1.0.0" 581 | 582 | hasown@^2.0.0: 583 | version "2.0.0" 584 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" 585 | integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== 586 | dependencies: 587 | function-bind "^1.1.2" 588 | 589 | inflight@^1.0.4: 590 | version "1.0.6" 591 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 592 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 593 | dependencies: 594 | once "^1.3.0" 595 | wrappy "1" 596 | 597 | inherits@2: 598 | version "2.0.4" 599 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 600 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 601 | 602 | is-binary-path@~2.1.0: 603 | version "2.1.0" 604 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 605 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 606 | dependencies: 607 | binary-extensions "^2.0.0" 608 | 609 | is-core-module@^2.13.0: 610 | version "2.13.1" 611 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" 612 | integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== 613 | dependencies: 614 | hasown "^2.0.0" 615 | 616 | is-extglob@^2.1.1: 617 | version "2.1.1" 618 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 619 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 620 | 621 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 622 | version "4.0.3" 623 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 624 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 625 | dependencies: 626 | is-extglob "^2.1.1" 627 | 628 | is-number@^7.0.0: 629 | version "7.0.0" 630 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 631 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 632 | 633 | jiti@^1.18.2, jiti@^1.19.1: 634 | version "1.20.0" 635 | resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" 636 | integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== 637 | 638 | lilconfig@^2.0.5, lilconfig@^2.1.0: 639 | version "2.1.0" 640 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" 641 | integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== 642 | 643 | lines-and-columns@^1.1.6: 644 | version "1.2.4" 645 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 646 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 647 | 648 | merge2@^1.3.0: 649 | version "1.4.1" 650 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 651 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 652 | 653 | micromatch@^4.0.4, micromatch@^4.0.5: 654 | version "4.0.5" 655 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 656 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 657 | dependencies: 658 | braces "^3.0.2" 659 | picomatch "^2.3.1" 660 | 661 | minimatch@^3.0.4: 662 | version "3.1.2" 663 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 664 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 665 | dependencies: 666 | brace-expansion "^1.1.7" 667 | 668 | mz@^2.7.0: 669 | version "2.7.0" 670 | resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 671 | integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== 672 | dependencies: 673 | any-promise "^1.0.0" 674 | object-assign "^4.0.1" 675 | thenify-all "^1.0.0" 676 | 677 | nanoid@^3.3.6: 678 | version "3.3.6" 679 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 680 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 681 | 682 | normalize-path@^3.0.0, normalize-path@~3.0.0: 683 | version "3.0.0" 684 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 685 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 686 | 687 | object-assign@^4.0.1: 688 | version "4.1.1" 689 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 690 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 691 | 692 | object-hash@^3.0.0: 693 | version "3.0.0" 694 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" 695 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== 696 | 697 | once@^1.3.0: 698 | version "1.4.0" 699 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 700 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 701 | dependencies: 702 | wrappy "1" 703 | 704 | path-is-absolute@^1.0.0: 705 | version "1.0.1" 706 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 707 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 708 | 709 | path-parse@^1.0.7: 710 | version "1.0.7" 711 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 712 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 713 | 714 | picocolors@^1.0.0: 715 | version "1.0.0" 716 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 717 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 718 | 719 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 720 | version "2.3.1" 721 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 722 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 723 | 724 | pify@^2.3.0: 725 | version "2.3.0" 726 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 727 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 728 | 729 | pirates@^4.0.1: 730 | version "4.0.6" 731 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" 732 | integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== 733 | 734 | postcss-css-variables@0.18.0: 735 | version "0.18.0" 736 | resolved "https://registry.yarnpkg.com/postcss-css-variables/-/postcss-css-variables-0.18.0.tgz#d97b6da19e86245eb817006e11117382f997bb93" 737 | integrity sha512-lYS802gHbzn1GI+lXvy9MYIYDuGnl1WB4FTKoqMQqJ3Mab09A7a/1wZvGTkCEZJTM8mSbIyb1mJYn8f0aPye0Q== 738 | dependencies: 739 | balanced-match "^1.0.0" 740 | escape-string-regexp "^1.0.3" 741 | extend "^3.0.1" 742 | 743 | postcss-import@^15.1.0: 744 | version "15.1.0" 745 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" 746 | integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== 747 | dependencies: 748 | postcss-value-parser "^4.0.0" 749 | read-cache "^1.0.0" 750 | resolve "^1.1.7" 751 | 752 | postcss-js@^4.0.1: 753 | version "4.0.1" 754 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" 755 | integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== 756 | dependencies: 757 | camelcase-css "^2.0.1" 758 | 759 | postcss-load-config@^4.0.1: 760 | version "4.0.1" 761 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" 762 | integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== 763 | dependencies: 764 | lilconfig "^2.0.5" 765 | yaml "^2.1.1" 766 | 767 | postcss-nested@^6.0.1: 768 | version "6.0.1" 769 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" 770 | integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== 771 | dependencies: 772 | postcss-selector-parser "^6.0.11" 773 | 774 | postcss-selector-parser@^6.0.11: 775 | version "6.0.13" 776 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" 777 | integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== 778 | dependencies: 779 | cssesc "^3.0.0" 780 | util-deprecate "^1.0.2" 781 | 782 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: 783 | version "4.2.0" 784 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 785 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 786 | 787 | postcss@8.4.31, postcss@^8.2.6, postcss@^8.4.23: 788 | version "8.4.31" 789 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" 790 | integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== 791 | dependencies: 792 | nanoid "^3.3.6" 793 | picocolors "^1.0.0" 794 | source-map-js "^1.0.2" 795 | 796 | queue-microtask@^1.2.2: 797 | version "1.2.3" 798 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 799 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 800 | 801 | read-cache@^1.0.0: 802 | version "1.0.0" 803 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" 804 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== 805 | dependencies: 806 | pify "^2.3.0" 807 | 808 | readdirp@~3.6.0: 809 | version "3.6.0" 810 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 811 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 812 | dependencies: 813 | picomatch "^2.2.1" 814 | 815 | resolve-pkg-maps@^1.0.0: 816 | version "1.0.0" 817 | resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" 818 | integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== 819 | 820 | resolve@^1.1.7, resolve@^1.22.2: 821 | version "1.22.8" 822 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 823 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 824 | dependencies: 825 | is-core-module "^2.13.0" 826 | path-parse "^1.0.7" 827 | supports-preserve-symlinks-flag "^1.0.0" 828 | 829 | reusify@^1.0.4: 830 | version "1.0.4" 831 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 832 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 833 | 834 | run-parallel@^1.1.9: 835 | version "1.2.0" 836 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 837 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 838 | dependencies: 839 | queue-microtask "^1.2.2" 840 | 841 | source-map-js@^1.0.2: 842 | version "1.0.2" 843 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 844 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 845 | 846 | source-map-support@^0.5.21: 847 | version "0.5.21" 848 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 849 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 850 | dependencies: 851 | buffer-from "^1.0.0" 852 | source-map "^0.6.0" 853 | 854 | source-map@^0.6.0: 855 | version "0.6.1" 856 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 857 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 858 | 859 | sucrase@^3.32.0: 860 | version "3.34.0" 861 | resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" 862 | integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== 863 | dependencies: 864 | "@jridgewell/gen-mapping" "^0.3.2" 865 | commander "^4.0.0" 866 | glob "7.1.6" 867 | lines-and-columns "^1.1.6" 868 | mz "^2.7.0" 869 | pirates "^4.0.1" 870 | ts-interface-checker "^0.1.9" 871 | 872 | supports-preserve-symlinks-flag@^1.0.0: 873 | version "1.0.0" 874 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 875 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 876 | 877 | tailwindcss@*: 878 | version "3.3.5" 879 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8" 880 | integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA== 881 | dependencies: 882 | "@alloc/quick-lru" "^5.2.0" 883 | arg "^5.0.2" 884 | chokidar "^3.5.3" 885 | didyoumean "^1.2.2" 886 | dlv "^1.1.3" 887 | fast-glob "^3.3.0" 888 | glob-parent "^6.0.2" 889 | is-glob "^4.0.3" 890 | jiti "^1.19.1" 891 | lilconfig "^2.1.0" 892 | micromatch "^4.0.5" 893 | normalize-path "^3.0.0" 894 | object-hash "^3.0.0" 895 | picocolors "^1.0.0" 896 | postcss "^8.4.23" 897 | postcss-import "^15.1.0" 898 | postcss-js "^4.0.1" 899 | postcss-load-config "^4.0.1" 900 | postcss-nested "^6.0.1" 901 | postcss-selector-parser "^6.0.11" 902 | resolve "^1.22.2" 903 | sucrase "^3.32.0" 904 | 905 | tailwindcss@3.3.2: 906 | version "3.3.2" 907 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" 908 | integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== 909 | dependencies: 910 | "@alloc/quick-lru" "^5.2.0" 911 | arg "^5.0.2" 912 | chokidar "^3.5.3" 913 | didyoumean "^1.2.2" 914 | dlv "^1.1.3" 915 | fast-glob "^3.2.12" 916 | glob-parent "^6.0.2" 917 | is-glob "^4.0.3" 918 | jiti "^1.18.2" 919 | lilconfig "^2.1.0" 920 | micromatch "^4.0.5" 921 | normalize-path "^3.0.0" 922 | object-hash "^3.0.0" 923 | picocolors "^1.0.0" 924 | postcss "^8.4.23" 925 | postcss-import "^15.1.0" 926 | postcss-js "^4.0.1" 927 | postcss-load-config "^4.0.1" 928 | postcss-nested "^6.0.1" 929 | postcss-selector-parser "^6.0.11" 930 | postcss-value-parser "^4.2.0" 931 | resolve "^1.22.2" 932 | sucrase "^3.32.0" 933 | 934 | thenify-all@^1.0.0: 935 | version "1.6.0" 936 | resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 937 | integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== 938 | dependencies: 939 | thenify ">= 3.1.0 < 4" 940 | 941 | "thenify@>= 3.1.0 < 4": 942 | version "3.3.1" 943 | resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" 944 | integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== 945 | dependencies: 946 | any-promise "^1.0.0" 947 | 948 | to-regex-range@^5.0.1: 949 | version "5.0.1" 950 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 951 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 952 | dependencies: 953 | is-number "^7.0.0" 954 | 955 | ts-interface-checker@^0.1.9: 956 | version "0.1.13" 957 | resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" 958 | integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== 959 | 960 | tsx@3.12.2: 961 | version "3.12.2" 962 | resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.12.2.tgz#1c8a4fa08a97739e6eedf0ad464bd8218e1a64f0" 963 | integrity sha512-ykAEkoBg30RXxeOMVeZwar+JH632dZn9EUJVyJwhfag62k6UO/dIyJEV58YuLF6e5BTdV/qmbQrpkWqjq9cUnQ== 964 | dependencies: 965 | "@esbuild-kit/cjs-loader" "^2.4.1" 966 | "@esbuild-kit/core-utils" "^3.0.0" 967 | "@esbuild-kit/esm-loader" "^2.5.4" 968 | optionalDependencies: 969 | fsevents "~2.3.2" 970 | 971 | typescript@4.9.4: 972 | version "4.9.4" 973 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" 974 | integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== 975 | 976 | util-deprecate@^1.0.2: 977 | version "1.0.2" 978 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 979 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 980 | 981 | wrappy@1: 982 | version "1.0.2" 983 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 984 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 985 | 986 | yaml@^2.1.1: 987 | version "2.3.3" 988 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" 989 | integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== 990 | --------------------------------------------------------------------------------