├── .editorconfig ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── index.ts ├── package.json ├── test.ts ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | # All files should use 5 | # - tabs unless specified otherwise 6 | # - unix-style newlines with a newline ending every file 7 | [*] 8 | indent_style = space 9 | indent_size = 2 10 | end_of_line = lf 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behavior to always use LF line endings 2 | * text=auto eol=lf 3 | 4 | # Denote all files that are truly binary and should not be modified. 5 | *.ico binary 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .build 2 | build 3 | node_modules 4 | web_modules 5 | .DS_Store 6 | 7 | .cache 8 | dist 9 | website 10 | __generated__ 11 | tsconfig.dist*.json 12 | 13 | benchmarks/*.min.mjs 14 | 15 | # Svelte Component type defs 16 | *.svelte.tsx 17 | __svelte-jsx.d.ts 18 | __svelte-shims.d.ts 19 | 20 | # Logs 21 | logs 22 | *.log 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | lerna-debug.log* 27 | 28 | # Diagnostic reports (https://nodejs.org/api/report.html) 29 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 30 | 31 | # Runtime data 32 | pids 33 | *.pid 34 | *.seed 35 | *.pid.lock 36 | 37 | # Directory for instrumented libs generated by jscoverage/JSCover 38 | lib-cov 39 | 40 | # Coverage directory used by tools like istanbul 41 | coverage/ 42 | *.lcov 43 | 44 | # nyc test coverage 45 | .nyc_output 46 | 47 | # Dependency directories 48 | node_modules/ 49 | jspm_packages/ 50 | 51 | # TypeScript v1 declaration files 52 | typings/ 53 | 54 | # TypeScript cache 55 | *.tsbuildinfo 56 | 57 | # Optional npm cache directory 58 | .npm 59 | 60 | # Optional eslint cache 61 | .eslintcache 62 | 63 | # Optional REPL history 64 | .node_repl_history 65 | 66 | # Output of 'npm pack' 67 | *.tgz 68 | 69 | # Yarn Integrity file 70 | .yarn-integrity 71 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 [these people](https://github.com/tw-in-js/forms/graphs/contributors) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @twind/forms 2 | 3 | A [Twind](https://twind.dev) extension that provides a basic reset for form styles that makes form elements easy to override with utilities. 4 | 5 | [![MIT License](https://flat.badgen.net/github/license/tw-in-js/twind-forms)](https://github.com/tw-in-js/twind-forms/blob/main/LICENSE) 6 | [![Latest Release](https://flat.badgen.net/npm/v/@twind/forms?icon=npm&label&cache=10800&color=blue)](https://www.npmjs.com/package/@twind/forms) 7 | [![Github](https://flat.badgen.net/badge/icon/tw-in-js%2Ftwind-forms?icon=github&label)](https://github.com/tw-in-js/twind-forms) 8 | [![Module Size](https://flat.badgen.net/badgesize/brotli/https:/unpkg.com/@twind/forms/forms.js?icon=jsdelivr&label&color=blue&cache=10800)](https://unpkg.com/@twind/forms/forms.js 'brotli module size') 9 | [![Typescript](https://flat.badgen.net/badge/icon/included?icon=typescript&label)](https://unpkg.com/browse/@twind/forms/forms.d.ts) 10 | 11 | > Based on [@tailwindcss/forms](https://github.com/tailwindlabs/tailwindcss-forms) and [with form classes](https://github.com/tailwindlabs/tailwindcss-forms/pull/39). 12 | 13 | ## Installation 14 | 15 | Install from npm: 16 | 17 | ```sh 18 | # Using npm 19 | npm install @twind/forms 20 | 21 | # Using Yarn 22 | yarn add @twind/forms 23 | ``` 24 | 25 | ## Usage as Directive 26 | 27 | ```js 28 | import { forms } from '@twind/forms' 29 | 30 | document.body.innerHTML = ` 31 |
32 | 33 |
34 | ` 35 | ``` 36 | 37 | ## Usage as Plugin 38 | 39 | ```js 40 | import { forms } from '@twind/forms' 41 | 42 | setup({ 43 | plugins: { 44 | forms, 45 | }, 46 | }) 47 | ``` 48 | 49 | ```html 50 |
51 | 52 |
53 | ``` 54 | 55 | ## Usage as Preflight 56 | 57 | Add to the `preflight` of your setup call: 58 | 59 | ```js 60 | import { withForms } from '@twind/forms' 61 | 62 | setup({ 63 | preflight: withForms(), 64 | }) 65 | 66 | setup({ 67 | preflight: withForms({ 68 | /* custom preflight */ 69 | }), 70 | }) 71 | 72 | setup({ 73 | preflight: withForms((preflight, context) => { 74 | /* custom preflight */ 75 | }), 76 | }) 77 | ``` 78 | 79 | ## Usage as form field Directive 80 | 81 | ```js 82 | import { 83 | formCheckbox, 84 | formField, 85 | formFile, 86 | formInput, 87 | formRadio, 88 | formSelect, 89 | formTextarea, 90 | } from '@twind/forms' 91 | 92 | document.body.innerHTML = ` 93 | 94 | ` 95 | ``` 96 | 97 | ## Usage as form field Plugins 98 | 99 | ```js 100 | import { forms } from '@twind/forms' 101 | 102 | setup({ 103 | plugins: { 104 | 'form-checkbox': formCheckbox, 105 | 'form-field': formField, 106 | 'form-file': formFile, 107 | 'form-input': formInput, 108 | 'form-radio': formRadio, 109 | 'form-select': formSelect, 110 | 'form-textarea': formTextarea, 111 | }, 112 | }) 113 | ``` 114 | 115 | ```html 116 | 117 | ``` 118 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @tailwindcss/forms – Kitchen Sink 7 | 8 | 17 | 18 | 19 |
20 |
21 |

Reset styles

22 |

23 | These are form elements this plugin styles by default. 24 |

25 |
26 |
27 | 31 | 35 | 44 | 48 | 52 | 56 | 60 | 64 | 68 | 72 | 76 |
77 |
78 | 82 | 86 | 93 | 103 | 111 |
112 | Checkboxes 113 |
114 |
115 | 119 |
120 |
121 | 125 |
126 |
127 | 131 |
132 |
133 |
134 |
135 | Radio Buttons 136 |
137 |
138 | 142 |
143 |
144 | 148 |
149 |
150 | 154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |

Untouched

162 |

163 | These are form elements we don't handle (yet?), but we use this to make sure we haven't 164 | accidentally styled them by mistake. 165 |

166 |
167 |
168 | 172 | 176 | 180 | 184 |
185 |
186 |
187 |
188 | 189 | 190 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import type { Preflight, CSSRules, Context } from 'twind' 2 | 3 | import { apply, directive } from 'twind' 4 | 5 | // Based on https://github.com/tigt/mini-svg-data-uri/blob/master/index.js (License MIT) 6 | const specialHexEncode = (match: string): string => { 7 | switch ( 8 | match // Browsers tolerate these characters, and they're frequent 9 | ) { 10 | case '%20': 11 | return ' ' 12 | case '%3D': 13 | return '=' 14 | case '%3A': 15 | return ':' 16 | case '%2F': 17 | return '/' 18 | default: 19 | return match.toLowerCase() // compresses better 20 | } 21 | } 22 | 23 | const svgToDataUri = (svgString: string): string => { 24 | return ( 25 | 'data:image/svg+xml,' + 26 | encodeURIComponent(svgString.trim().replace(/\s+/g, ' ').replace(/"/g, "'")).replace( 27 | /%[\dA-F]{2}/g, 28 | specialHexEncode, 29 | ) 30 | ) 31 | } 32 | 33 | // Same as in preflight 34 | const placeholder = ({ theme }: Context): CSSRules => ({ 35 | '&::placeholder': { 36 | opacity: '1', 37 | color: theme('placeholderColor.DEFAULT', theme('colors.gray.400', '#a1a1aa')), 38 | }, 39 | }) 40 | 41 | const multiple = ({ theme }: Context): CSSRules => ({ 42 | backgroundImage: 'initial', 43 | backgroundPosition: 'initial', 44 | backgroundRepeat: 'unset', 45 | backgroundSize: 'initial', 46 | paddingRight: theme('spacing.3'), 47 | colorAdjust: 'unset', 48 | }) 49 | 50 | const select = ({ theme }: Context): CSSRules => ({ 51 | 'background-image': `url("${svgToDataUri( 52 | ``, 55 | )}")`, 56 | backgroundPosition: `right ${theme('spacing.2')} center`, 57 | backgroundRepeat: `no-repeat`, 58 | backgroundSize: `1.5em 1.5em`, 59 | paddingRight: theme('spacing.10'), 60 | colorAdjust: `exact`, 61 | }) 62 | 63 | export const formField = apply` 64 | appearance-none bg-white border(& gray-500) rounded-none 65 | py-2 px-3 text-base 66 | focus:(outline-none ring(1 blue-600) border-blue-600) 67 | ` 68 | 69 | const webkitInput = (self: '&' | ''): CSSRules => ({ 70 | [self + '::-webkit-datetime-edit-fields-wrapper']: apply`p-0`, 71 | [self + '::-webkit-date-and-time-value']: { minHeight: '1.5em' }, 72 | }) 73 | 74 | export const formInput = apply( 75 | formField, 76 | placeholder, 77 | (): CSSRules => ({ 78 | ...webkitInput('&'), 79 | '&[multiple]': multiple, 80 | }), 81 | ) 82 | 83 | export const formTextarea = apply(formField, placeholder) 84 | 85 | export const formSelect = apply( 86 | formField, 87 | select, 88 | (): CSSRules => ({ 89 | '&[multiple]': multiple, 90 | }), 91 | ) 92 | 93 | const toggle = (): CSSRules => ({ 94 | '&': apply` 95 | appearance-none p-0 inline-block align-middle select-none 96 | flex-shrink-0 h-4 w-4 text-blue-600 bg-white border(& gray-500) 97 | ${() => ({ colorAdjust: 'exact', backgroundOrigin: 'border-box' })} 98 | `, 99 | '&:focus': apply`outline-none ring(2 blue-600) border-gray-500`, 100 | '&:checked': apply`border-transparent bg(current center no-repeat) ${() => ({ 101 | backgroundSize: `100% 100%`, 102 | })}`, 103 | '&:checked:hover,&:checked:focus': apply`border-transparent bg-current`, 104 | }) 105 | 106 | const checkbox = (): CSSRules => ({ 107 | '&': apply`rounded-none`, 108 | '&:checked': { 109 | backgroundImage: `url("${svgToDataUri( 110 | ``, 111 | )}")`, 112 | }, 113 | '&:indeterminate': apply`border-transparent bg(current center no-repeat) ${() => ({ 114 | backgroundImage: `url("${svgToDataUri( 115 | ``, 116 | )}")`, 117 | backgroundSize: `100% 100%`, 118 | })}`, 119 | '&:indeterminate:hover,&:indeterminate:focus': apply`border-transparent bg-current`, 120 | }) 121 | 122 | const radio = (): CSSRules => ({ 123 | '&': apply`rounded-full`, 124 | '&:checked': { 125 | backgroundImage: `url("${svgToDataUri( 126 | ``, 127 | )}")`, 128 | }, 129 | }) 130 | 131 | export const formCheckbox = apply(toggle, checkbox) 132 | export const formRadio = apply(toggle, radio) 133 | 134 | const file = (): CSSRules => ({ 135 | '&': { 136 | background: 'unset', 137 | borderColor: 'inherit', 138 | borderWidth: '0', 139 | borderRadius: '0', 140 | padding: '0', 141 | fontSize: 'unset', 142 | lineHeight: 'inherit', 143 | }, 144 | 145 | '&:focus': { 146 | outline: [`1px solid ButtonText`, `1px auto -webkit-focus-ring-color`], 147 | }, 148 | }) 149 | 150 | export const formFile = apply(file) 151 | 152 | const styles = (selector: string): CSSRules => ({ 153 | [`[type="text"],[type="email"],[type="url"],[type="password"],[type="number"],[type="date"],[type="datetime-local"],[type="month"],[type="search"],[type="tel"],[type="time"],[type="week"],[multiple],${selector}textarea,${selector}select`]: formField, 154 | 155 | // { 156 | // appearance: 'none', 157 | // 'background-color': '#fff', 158 | // 'border-color': theme('colors.gray.500', colors.gray[500]), 159 | // 'border-width': borderWidth['DEFAULT'], 160 | // 'border-radius': borderRadius.none, 161 | // 'padding-top': spacing[2], 162 | // 'padding-right': spacing[3], 163 | // 'padding-bottom': spacing[2], 164 | // 'padding-left': spacing[3], 165 | // 'font-size': baseFontSize, 166 | // 'line-height': baseLineHeight, 167 | // '&:focus': { 168 | // outline: outline.none[0], 169 | // 'outline-offset': outline.none[1], 170 | // '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)', 171 | // '--tw-ring-offset-width': '0px', 172 | // '--tw-ring-offset-color': '#fff', 173 | // '--tw-ring-color': theme('colors.blue.600', colors.blue[600]), 174 | // '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`, 175 | // '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)`, 176 | // 'box-shadow': `var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)`, 177 | // 'border-color': theme('colors.blue.600', colors.blue[600]), 178 | // }, 179 | // }, 180 | 181 | [`${selector}input,${selector}textarea`]: placeholder, 182 | // { 183 | // color: theme('colors.gray.500', colors.gray[500]), 184 | // opacity: '1', 185 | // }, 186 | 187 | ...webkitInput(''), 188 | // '::-webkit-datetime-edit-fields-wrapper': apply`p-0`, 189 | // { 190 | // padding: '0', 191 | // }, 192 | 193 | // Unfortunate hack until https://bugs.webkit.org/show_bug.cgi?id=198959 is fixed. 194 | // This sucks because users can't change line-height with a utility on date inputs now. 195 | // Reference: https://github.com/twbs/bootstrap/pull/31993 196 | // '::-webkit-date-and-time-value': { 197 | // minHeight: '1.5em', 198 | // }, 199 | 200 | [`${selector}select`]: select, 201 | 202 | '[multiple]': multiple, 203 | 204 | '[type="checkbox"],[type="radio"]': toggle, 205 | // { 206 | // appearance: 'none', 207 | // padding: '0', 208 | // 'color-adjust': 'exact', 209 | // display: 'inline-block', 210 | // 'vertical-align': 'middle', 211 | // 'background-origin': 'border-box', 212 | // 'user-select': 'none', 213 | // 'flex-shrink': '0', 214 | // height: theme('spacing.4'), 215 | // width: theme('spacing.4'), 216 | // color: theme('colors.blue.600'), 217 | // 'background-color': '#fff', 218 | // 'border-color': theme('colors.gray.500'), 219 | // 'border-width': theme('borderWidth.DEFAULT'), 220 | // }, 221 | 222 | '[type="checkbox"]': checkbox, 223 | // '[type="checkbox"]': apply`rounded-none`, 224 | // { 225 | // 'border-radius': borderRadius['none'], 226 | // }, 227 | 228 | '[type="radio"]': radio, 229 | // { 230 | // 'border-radius': '100%', 231 | // }, 232 | 233 | // '[type="checkbox"]:focus,[type="radio"]:focus': apply`outline-none ring(2 blue-600) border-gray-500`, 234 | // { 235 | // outline: outline.none[0], 236 | // 'outline-offset': outline.none[1], 237 | // '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)', 238 | // '--tw-ring-offset-width': '2px', 239 | // '--tw-ring-offset-color': '#fff', 240 | // '--tw-ring-color': theme('colors.blue.600', colors.blue[600]), 241 | // '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`, 242 | // '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)`, 243 | // 'box-shadow': `var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)`, 244 | // 'border-color': theme('colors.gray.500', colors.gray[500]), 245 | // }, 246 | 247 | // '[type="checkbox"]:checked,[type="radio"]:checked': apply`border-transparent bg(current center no-repeat) ${() => ({ 248 | // backgroundSize: `100% 100%`, 249 | // })}`, 250 | // { 251 | // 'border-color': `transparent`, 252 | // 'background-color': `currentColor`, 253 | // 'background-size': `100% 100%`, 254 | // 'background-position': `center`, 255 | // 'background-repeat': `no-repeat`, 256 | // }, 257 | 258 | // '[type="checkbox"]:checked': { 259 | // backgroundImage: `url("${svgToDataUri( 260 | // ``, 261 | // )}")`, 262 | // }, 263 | 264 | // '[type="radio"]:checked': { 265 | // backgroundImage: `url("${svgToDataUri( 266 | // ``, 267 | // )}")`, 268 | // }, 269 | 270 | // '[type="checkbox"]:checked:hover,[type="checkbox"]:checked:focus,[type="radio"]:checked:hover,[type="radio"]:checked:focus': apply`border-transparent bg-current`, 271 | // { 272 | // 'border-color': 'transparent', 273 | // 'background-color': 'currentColor', 274 | // }, 275 | 276 | // '[type="checkbox"]:indeterminate': apply`border-transparent bg(current center no-repeat) ${() => ({ 277 | // backgroundImage: `url("${svgToDataUri( 278 | // ``, 279 | // )}")`, 280 | // backgroundSize: `100% 100%`, 281 | // })}`, 282 | 283 | // { 284 | // 'background-image': `url("${svgToDataUri( 285 | // ``, 286 | // )}")`, 287 | // 'border-color': `transparent`, 288 | // 'background-color': `currentColor`, 289 | // 'background-size': `100% 100%`, 290 | // 'background-position': `center`, 291 | // 'background-repeat': `no-repeat`, 292 | // }, 293 | 294 | // '[type="checkbox"]:indeterminate:hover,[type="checkbox"]:indeterminate:focus': apply`border-transparent bg-current`, 295 | // { 296 | // 'border-color': 'transparent', 297 | // 'background-color': 'currentColor', 298 | // }, 299 | 300 | '[type="file"]': file, 301 | // '[type="file"]': { 302 | // background: 'unset', 303 | // borderColor: 'inherit', 304 | // borderWidth: '0', 305 | // borderRadius: '0', 306 | // padding: '0', 307 | // fontSize: 'unset', 308 | // lineHeight: 'inherit', 309 | // }, 310 | 311 | // '[type="file"]:focus': { 312 | // outline: [`1px solid ButtonText`, `1px auto -webkit-focus-ring-color`], 313 | // }, 314 | }) 315 | 316 | export const forms = directive((): CSSRules => styles(''), undefined) 317 | 318 | export const withForms = (preflight?: CSSRules | Preflight): Preflight => ( 319 | defaultPreflight, 320 | context, 321 | ) => { 322 | const formsPreflight = { 323 | ...defaultPreflight, 324 | // Ensure higher specificity than default preflight 325 | ...styles('html '), 326 | } 327 | 328 | return typeof preflight === 'function' 329 | ? preflight(formsPreflight, context) 330 | : { ...formsPreflight, ...preflight } 331 | } 332 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@twind/forms", 3 | "version": "0.1.4", 4 | "description": "A twind extension that provides a basic reset for form styles that makes form elements easy to override with utilities.", 5 | "// mark as private to prevent accidental publish - use 'yarn release'": "", 6 | "private": true, 7 | "keywords": [ 8 | "twind", 9 | "extension", 10 | "twind-extension", 11 | "plugin", 12 | "twind-plugin", 13 | "tailwind", 14 | "tw-in-js", 15 | "tailwind-in-js" 16 | ], 17 | "homepage": "https://twind.dev", 18 | "bugs": "https://github.com/tw-in-js/twind-forms/issues", 19 | "repository": "github:tw-in-js/twind-forms", 20 | "license": "MIT", 21 | "contributors": [ 22 | "Sascha Tandel (https://github.com/sastan)" 23 | ], 24 | "engines": { 25 | "node": ">=10.13" 26 | }, 27 | "// The 'module', 'unpkg' and 'types' fields are added by distilt": "", 28 | "main": "index.ts", 29 | "// Each entry is expanded into several bundles (module, script, types, require, node, and default)": "", 30 | "exports": { 31 | ".": "./index.ts", 32 | "./package.json": "./package.json" 33 | }, 34 | "peerDependencies": { 35 | "twind": ">=0.14.4", 36 | "typescript": "^4.1.0" 37 | }, 38 | "peerDependenciesMeta": { 39 | "typescript": { 40 | "optional": true 41 | } 42 | }, 43 | "devDependencies": { 44 | "c8": "^7.3.5", 45 | "distilt": "^0.9.4", 46 | "esbuild": "^0.8.36", 47 | "esbuild-register": "^2.0.0", 48 | "esm": "^3.2.25", 49 | "prettier": "^2.0.5", 50 | "twind": ">=0.14.4", 51 | "typescript": "^4.1.3", 52 | "uvu": "^0.5.1", 53 | "vite": "^2.0.0-beta.60", 54 | "watchlist": "^0.2.3" 55 | }, 56 | "scripts": { 57 | "build": "distilt", 58 | "format": "prettier --write --ignore-path .gitignore .", 59 | "release": "npx np --contents dist", 60 | "start": "vite", 61 | "test": "uvu -r esm -r esbuild-register . test.ts", 62 | "test:coverage": "c8 --src index.ts --all -r lcov -r text yarn test", 63 | "test:watch": "watchlist . -- yarn test", 64 | "version": "yarn build" 65 | }, 66 | "prettier": { 67 | "printWidth": 100, 68 | "semi": false, 69 | "singleQuote": true, 70 | "trailingComma": "all", 71 | "bracketSpacing": true 72 | }, 73 | "publishConfig": { 74 | "access": "public" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /test.ts: -------------------------------------------------------------------------------- 1 | import { suite } from 'uvu' 2 | import * as assert from 'uvu/assert' 3 | 4 | import type { Instance } from 'twind' 5 | import type { VirtualSheet } from 'twind/sheets' 6 | 7 | import { create } from 'twind' 8 | import { virtualSheet } from 'twind/sheets' 9 | import { 10 | forms, 11 | withForms, 12 | formCheckbox, 13 | formField, 14 | formFile, 15 | formInput, 16 | formRadio, 17 | formSelect, 18 | formTextarea, 19 | } from '.' 20 | 21 | const test = suite<{ 22 | sheet: VirtualSheet 23 | tw: Instance['tw'] 24 | }>('@twind/forms') 25 | 26 | test.before((context) => { 27 | context.sheet = virtualSheet() 28 | const { tw } = create({ 29 | sheet: context.sheet, 30 | mode: 'strict', 31 | preflight: false, 32 | prefix: false, 33 | plugins: { 34 | forms, 35 | 'form-checkbox': formCheckbox, 36 | 'form-field': formField, 37 | 'form-file': formFile, 38 | 'form-input': formInput, 39 | 'form-radio': formRadio, 40 | 'form-select': formSelect, 41 | 'form-textarea': formTextarea, 42 | }, 43 | }) 44 | context.tw = tw 45 | }) 46 | 47 | test.after.each(({ sheet }) => { 48 | sheet.reset() 49 | }) 50 | 51 | test('using directive', ({ tw, sheet }) => { 52 | assert.is(tw(forms), 'tw-lqt6cb') 53 | assert.equal(sheet.target, [ 54 | '*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,var(--tw-ring-opacity,0.5));--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}', 55 | '.tw-lqt6cb [type="checkbox"],.tw-lqt6cb [type="radio"]{appearance:none;padding:0px;display:inline-block;vertical-align:middle;user-select:none;flex-shrink:0;height:1rem;width:1rem;--tw-text-opacity:1;color:#2563eb;color:rgba(37,99,235,var(--tw-text-opacity));--tw-bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--tw-bg-opacity));border-width:1px;--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity));color-adjust:exact;background-origin:border-box}', 56 | '.tw-lqt6cb [type="text"],.tw-lqt6cb [type="email"],.tw-lqt6cb [type="url"],.tw-lqt6cb [type="password"],.tw-lqt6cb [type="number"],.tw-lqt6cb [type="date"],.tw-lqt6cb [type="datetime-local"],.tw-lqt6cb [type="month"],.tw-lqt6cb [type="search"],.tw-lqt6cb [type="tel"],.tw-lqt6cb [type="time"],.tw-lqt6cb [type="week"],.tw-lqt6cb [multiple],.tw-lqt6cb textarea,.tw-lqt6cb select{appearance:none;--tw-bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--tw-bg-opacity));border-width:1px;--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity));border-radius:0px;padding-bottom:0.5rem;padding-top:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:1rem;line-height:1.5rem}', 57 | '.tw-lqt6cb [type="text"]:focus,.tw-lqt6cb [type="email"]:focus,.tw-lqt6cb [type="url"]:focus,.tw-lqt6cb [type="password"]:focus,.tw-lqt6cb [type="number"]:focus,.tw-lqt6cb [type="date"]:focus,.tw-lqt6cb [type="datetime-local"]:focus,.tw-lqt6cb [type="month"]:focus,.tw-lqt6cb [type="search"]:focus,.tw-lqt6cb [type="tel"]:focus,.tw-lqt6cb [type="time"]:focus,.tw-lqt6cb [type="week"]:focus,.tw-lqt6cb [multiple]:focus,.tw-lqt6cb textarea:focus,.tw-lqt6cb select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgba(37,99,235,var(--tw-ring-opacity));--tw-border-opacity:1;border-color:#2563eb;border-color:rgba(37,99,235,var(--tw-border-opacity))}', 58 | '.tw-lqt6cb [type="checkbox"]:focus,.tw-lqt6cb [type="radio"]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgba(37,99,235,var(--tw-ring-opacity));--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity))}', 59 | '.tw-lqt6cb [type="file"]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}', 60 | ".tw-lqt6cb select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right 0.5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;color-adjust:exact}", 61 | '.tw-lqt6cb [multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:0.75rem;color-adjust:unset}', 62 | ".tw-lqt6cb [type=\"checkbox\"]:indeterminate{border-color:transparent;background-color:currentColor;background-position:center;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");background-size:100% 100%}", 63 | '.tw-lqt6cb [type="checkbox"]:checked,.tw-lqt6cb [type="radio"]:checked{border-color:transparent;background-color:currentColor;background-position:center;background-repeat:no-repeat;background-size:100% 100%}', 64 | '.tw-lqt6cb input::placeholder,.tw-lqt6cb textarea::placeholder{opacity:1;color:#9ca3af}', 65 | '.tw-lqt6cb [type="checkbox"]:checked:hover,.tw-lqt6cb [type="checkbox"]:checked:focus,.tw-lqt6cb [type="radio"]:checked:hover,.tw-lqt6cb [type="radio"]:checked:focus{border-color:transparent;background-color:currentColor}', 66 | '.tw-lqt6cb [type="checkbox"]:indeterminate:hover,.tw-lqt6cb [type="checkbox"]:indeterminate:focus{border-color:transparent;background-color:currentColor}', 67 | '.tw-lqt6cb ::-webkit-datetime-edit-fields-wrapper{padding:0px}', 68 | '.tw-lqt6cb [type="file"]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}', 69 | '.tw-lqt6cb ::-webkit-date-and-time-value{min-height:1.5em}', 70 | ".tw-lqt6cb [type=\"checkbox\"]:checked{background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}", 71 | ".tw-lqt6cb [type=\"radio\"]:checked{background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\")}", 72 | '.tw-lqt6cb [type="checkbox"]{border-radius:0px}', 73 | '.tw-lqt6cb [type="radio"]{border-radius:9999px}', 74 | ]) 75 | }) 76 | 77 | test('using preflight', () => { 78 | const sheet = virtualSheet() 79 | 80 | create({ 81 | sheet, 82 | mode: 'strict', 83 | preflight: withForms(), 84 | prefix: false, 85 | }) 86 | 87 | assert.equal(sheet.target, [ 88 | '[type="checkbox"],[type="radio"]{appearance:none;padding:0px;display:inline-block;vertical-align:middle;user-select:none;flex-shrink:0;height:1rem;width:1rem;--tw-text-opacity:1;color:#2563eb;color:rgba(37,99,235,var(--tw-text-opacity));--tw-bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--tw-bg-opacity));border-width:1px;--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity));color-adjust:exact;background-origin:border-box}', 89 | '[type="text"],[type="email"],[type="url"],[type="password"],[type="number"],[type="date"],[type="datetime-local"],[type="month"],[type="search"],[type="tel"],[type="time"],[type="week"],[multiple],html textarea,html select{appearance:none;--tw-bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--tw-bg-opacity));border-width:1px;--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity));border-radius:0px;padding-bottom:0.5rem;padding-top:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:1rem;line-height:1.5rem}', 90 | '[type="text"]:focus,[type="email"]:focus,[type="url"]:focus,[type="password"]:focus,[type="number"]:focus,[type="date"]:focus,[type="datetime-local"]:focus,[type="month"]:focus,[type="search"]:focus,[type="tel"]:focus,[type="time"]:focus,[type="week"]:focus,[multiple]:focus,html textarea:focus,html select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgba(37,99,235,var(--tw-ring-opacity));--tw-border-opacity:1;border-color:#2563eb;border-color:rgba(37,99,235,var(--tw-border-opacity))}', 91 | '[type="checkbox"]:focus,[type="radio"]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgba(37,99,235,var(--tw-ring-opacity));--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity))}', 92 | '[type="file"]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}', 93 | 'button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;margin:0;padding:0;line-height:inherit;color:inherit}', 94 | "html select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right 0.5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;color-adjust:exact}", 95 | '[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:0.75rem;color-adjust:unset}', 96 | "[type=\"checkbox\"]:indeterminate{border-color:transparent;background-color:currentColor;background-position:center;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");background-size:100% 100%}", 97 | '*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,var(--tw-ring-opacity,0.5));--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}', 98 | '[type="checkbox"]:checked,[type="radio"]:checked{border-color:transparent;background-color:currentColor;background-position:center;background-repeat:no-repeat;background-size:100% 100%}', 99 | 'sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}', 100 | 'html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}', 101 | 'table{text-indent:0;border-color:inherit;border-collapse:collapse}', 102 | 'hr{height:0;color:inherit;border-top-width:1px}', 103 | 'input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}', 104 | '::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}', 105 | 'html input::placeholder,html textarea::placeholder{opacity:1;color:#9ca3af}', 106 | 'button{background-color:transparent;background-image:none}', 107 | 'body{font-family:inherit;line-height:inherit}', 108 | '*,::before,::after{box-sizing:border-box;border:0 solid #e5e7eb}', 109 | 'h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}', 110 | 'a{color:inherit;text-decoration:inherit}', 111 | '::-moz-focus-inner{border-style:none;padding:0}', 112 | '[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}', 113 | 'pre,code,kbd,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}', 114 | 'img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}', 115 | 'img,video{max-width:100%;height:auto}', 116 | '[type="checkbox"]:checked:hover,[type="checkbox"]:checked:focus,[type="radio"]:checked:hover,[type="radio"]:checked:focus{border-color:transparent;background-color:currentColor}', 117 | '[type="checkbox"]:indeterminate:hover,[type="checkbox"]:indeterminate:focus{border-color:transparent;background-color:currentColor}', 118 | 'body,blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre,fieldset,ol,ul{margin:0}', 119 | 'button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}', 120 | 'fieldset,ol,ul,legend{padding:0}', 121 | 'textarea{resize:vertical}', 122 | 'button,[role="button"]{cursor:pointer}', 123 | ':-moz-focusring{outline:1px dotted ButtonText}', 124 | '::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}', 125 | 'summary{display:list-item}', 126 | '::-webkit-datetime-edit-fields-wrapper{padding:0px}', 127 | '[type="file"]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}', 128 | ':root{tab-size:4}', 129 | 'ol,ul{list-style:none}', 130 | 'img{border-style:solid}', 131 | 'button,select{text-transform:none}', 132 | ':-moz-ui-invalid{box-shadow:none}', 133 | 'progress{vertical-align:baseline}', 134 | 'abbr[title]{text-decoration:underline dotted}', 135 | 'b,strong{font-weight:bolder}', 136 | 'sub{bottom:-0.25em}', 137 | 'sup{top:-0.5em}', 138 | '::-webkit-date-and-time-value{min-height:1.5em}', 139 | "[type=\"checkbox\"]:checked{background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}", 140 | "[type=\"radio\"]:checked{background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\")}", 141 | '[type="checkbox"]{border-radius:0px}', 142 | '[type="radio"]{border-radius:9999px}', 143 | 'button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}', 144 | '::-webkit-search-decoration{-webkit-appearance:none}', 145 | ]) 146 | }) 147 | 148 | test('using field directives', ({ tw, sheet }) => { 149 | assert.is(tw(formInput), 'tw-lhhgwn') 150 | assert.equal(sheet.target, [ 151 | '*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,var(--tw-ring-opacity,0.5));--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}', 152 | '.tw-lhhgwn{appearance:none;--tw-bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--tw-bg-opacity));border-width:1px;--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity));border-radius:0px;padding-bottom:0.5rem;padding-top:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:1rem;line-height:1.5rem}', 153 | '.tw-lhhgwn:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgba(37,99,235,var(--tw-ring-opacity));--tw-border-opacity:1;border-color:#2563eb;border-color:rgba(37,99,235,var(--tw-border-opacity))}', 154 | '.tw-lhhgwn[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:0.75rem;color-adjust:unset}', 155 | '.tw-lhhgwn::placeholder{opacity:1;color:#9ca3af}', 156 | '.tw-lhhgwn::-webkit-datetime-edit-fields-wrapper{padding:0px}', 157 | '.tw-lhhgwn::-webkit-date-and-time-value{min-height:1.5em}', 158 | ]) 159 | 160 | sheet.reset() 161 | 162 | assert.is(tw(formCheckbox), 'tw-5rpl0o') 163 | assert.equal(sheet.target, [ 164 | '*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,var(--tw-ring-opacity,0.5));--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}', 165 | '.tw-5rpl0o{appearance:none;padding:0px;display:inline-block;vertical-align:middle;user-select:none;flex-shrink:0;height:1rem;width:1rem;--tw-text-opacity:1;color:#2563eb;color:rgba(37,99,235,var(--tw-text-opacity));--tw-bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--tw-bg-opacity));border-width:1px;--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity));color-adjust:exact;background-origin:border-box;border-radius:0px}', 166 | '.tw-5rpl0o:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgba(37,99,235,var(--tw-ring-opacity));--tw-border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--tw-border-opacity))}', 167 | ".tw-5rpl0o:checked{border-color:transparent;background-color:currentColor;background-position:center;background-repeat:no-repeat;background-size:100% 100%;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}", 168 | ".tw-5rpl0o:indeterminate{border-color:transparent;background-color:currentColor;background-position:center;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");background-size:100% 100%}", 169 | '.tw-5rpl0o:checked:hover,.tw-5rpl0o:checked:focus{border-color:transparent;background-color:currentColor}', 170 | '.tw-5rpl0o:indeterminate:hover,.tw-5rpl0o:indeterminate:focus{border-color:transparent;background-color:currentColor}', 171 | ]) 172 | }) 173 | 174 | test.run() 175 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/tsconfig", 3 | "include": ["*.ts"], 4 | "compilerOptions": { 5 | // During development for Node v10.8 support 6 | "target": "es2018", 7 | "module": "ESNext", 8 | "lib": ["esnext", "dom", "dom.iterable"], 9 | // ensure that nobody can accidentally use this config for a build 10 | "noEmit": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "noEmitOnError": true, 14 | "noErrorTruncation": true, 15 | // Enforce using `import type` instead of `import` for Types 16 | "importsNotUsedAsValues": "error", 17 | "allowJs": true, 18 | // Generate inline sourcemaps 19 | "sourceMap": false, 20 | "inlineSourceMap": true, 21 | "inlineSources": true, 22 | // Search under node_modules for non-relative imports. 23 | "moduleResolution": "node", 24 | // Enable strictest settings like strictNullChecks & noImplicitAny. 25 | "strict": true, 26 | // Disallow features that require cross-file information for emit. 27 | "isolatedModules": true, 28 | "allowSyntheticDefaultImports": true, 29 | // Import non-ES modules as default imports. 30 | "esModuleInterop": true, 31 | // Allow to import json files 32 | "resolveJsonModule": true, 33 | "skipLibCheck": true, 34 | "forceConsistentCasingInFileNames": true 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.10.4": 6 | version "7.12.11" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.12.11" 14 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@bcoe/v8-coverage@^0.2.3": 27 | version "0.2.3" 28 | resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 29 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 30 | 31 | "@istanbuljs/schema@^0.1.2": 32 | version "0.1.2" 33 | resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" 34 | integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== 35 | 36 | "@nodelib/fs.scandir@2.1.4": 37 | version "2.1.4" 38 | resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" 39 | integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== 40 | dependencies: 41 | "@nodelib/fs.stat" "2.0.4" 42 | run-parallel "^1.1.9" 43 | 44 | "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": 45 | version "2.0.4" 46 | resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" 47 | integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== 48 | 49 | "@nodelib/fs.walk@^1.2.3": 50 | version "1.2.6" 51 | resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" 52 | integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== 53 | dependencies: 54 | "@nodelib/fs.scandir" "2.1.4" 55 | fastq "^1.6.0" 56 | 57 | "@types/is-windows@^1.0.0": 58 | version "1.0.0" 59 | resolved "https://registry.npmjs.org/@types/is-windows/-/is-windows-1.0.0.tgz#1011fa129d87091e2f6faf9042d6704cdf2e7be0" 60 | integrity sha512-tJ1rq04tGKuIJoWIH0Gyuwv4RQ3+tIu7wQrC0MV47raQ44kIzXSSFKfrxFUOWVRvesoF7mrTqigXmqoZJsXwTg== 61 | 62 | "@types/istanbul-lib-coverage@^2.0.1": 63 | version "2.0.3" 64 | resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" 65 | integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== 66 | 67 | ansi-regex@^5.0.0: 68 | version "5.0.0" 69 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 70 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 71 | 72 | ansi-styles@^3.2.1: 73 | version "3.2.1" 74 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 75 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 76 | dependencies: 77 | color-convert "^1.9.0" 78 | 79 | ansi-styles@^4.0.0: 80 | version "4.3.0" 81 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 82 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 83 | dependencies: 84 | color-convert "^2.0.1" 85 | 86 | array-union@^2.1.0: 87 | version "2.1.0" 88 | resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 89 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 90 | 91 | balanced-match@^1.0.0: 92 | version "1.0.0" 93 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 94 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 95 | 96 | brace-expansion@^1.1.7: 97 | version "1.1.11" 98 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 99 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 100 | dependencies: 101 | balanced-match "^1.0.0" 102 | concat-map "0.0.1" 103 | 104 | braces@^3.0.1: 105 | version "3.0.2" 106 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 107 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 108 | dependencies: 109 | fill-range "^7.0.1" 110 | 111 | buffer-from@^1.0.0: 112 | version "1.1.1" 113 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 114 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 115 | 116 | c8@^7.3.5: 117 | version "7.4.0" 118 | resolved "https://registry.npmjs.org/c8/-/c8-7.4.0.tgz#098ba30ba4a58de9e080645116ba8ae3d545fd5c" 119 | integrity sha512-K8I7MEe2i4L91YBX3HtV10kKpU5uqGeyjtsdGS2FxfT0pk15d9jthujjR1ORRLrCJ4tXuDK9PSH2vChzRDoAZw== 120 | dependencies: 121 | "@bcoe/v8-coverage" "^0.2.3" 122 | "@istanbuljs/schema" "^0.1.2" 123 | find-up "^5.0.0" 124 | foreground-child "^2.0.0" 125 | furi "^2.0.0" 126 | istanbul-lib-coverage "^3.0.0" 127 | istanbul-lib-report "^3.0.0" 128 | istanbul-reports "^3.0.2" 129 | rimraf "^3.0.0" 130 | test-exclude "^6.0.0" 131 | v8-to-istanbul "^7.1.0" 132 | yargs "^16.0.0" 133 | yargs-parser "^20.0.0" 134 | 135 | chalk@^2.0.0: 136 | version "2.4.2" 137 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 138 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 139 | dependencies: 140 | ansi-styles "^3.2.1" 141 | escape-string-regexp "^1.0.5" 142 | supports-color "^5.3.0" 143 | 144 | cliui@^7.0.2: 145 | version "7.0.4" 146 | resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 147 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 148 | dependencies: 149 | string-width "^4.2.0" 150 | strip-ansi "^6.0.0" 151 | wrap-ansi "^7.0.0" 152 | 153 | color-convert@^1.9.0: 154 | version "1.9.3" 155 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 156 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 157 | dependencies: 158 | color-name "1.1.3" 159 | 160 | color-convert@^2.0.1: 161 | version "2.0.1" 162 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 163 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 164 | dependencies: 165 | color-name "~1.1.4" 166 | 167 | color-name@1.1.3: 168 | version "1.1.3" 169 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 170 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 171 | 172 | color-name@~1.1.4: 173 | version "1.1.4" 174 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 175 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 176 | 177 | colorette@^1.2.1: 178 | version "1.2.1" 179 | resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" 180 | integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== 181 | 182 | concat-map@0.0.1: 183 | version "0.0.1" 184 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 185 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 186 | 187 | convert-source-map@^1.6.0: 188 | version "1.7.0" 189 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 190 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 191 | dependencies: 192 | safe-buffer "~5.1.1" 193 | 194 | cross-spawn@^7.0.0, cross-spawn@^7.0.3: 195 | version "7.0.3" 196 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 197 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 198 | dependencies: 199 | path-key "^3.1.0" 200 | shebang-command "^2.0.0" 201 | which "^2.0.1" 202 | 203 | csstype@^3.0.5: 204 | version "3.0.6" 205 | resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" 206 | integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== 207 | 208 | dequal@^2.0.0: 209 | version "2.0.2" 210 | resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" 211 | integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== 212 | 213 | diff@^5.0.0: 214 | version "5.0.0" 215 | resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 216 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 217 | 218 | dir-glob@^3.0.1: 219 | version "3.0.1" 220 | resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 221 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 222 | dependencies: 223 | path-type "^4.0.0" 224 | 225 | distilt@^0.9.4: 226 | version "0.9.4" 227 | resolved "https://registry.npmjs.org/distilt/-/distilt-0.9.4.tgz#ac5f587b6a7568eed2bc54d5bf2fb4b7092aa5c6" 228 | integrity sha512-t66NqIK8RQHX2vwgYWwIWnooJ3hbs4+AkJAiiB8bgNocSx/MjfQdiV54iYJzmuUtuOgRQuqi13gELb1S2u6y3g== 229 | dependencies: 230 | es-module-lexer "^0.3.26" 231 | esbuild "^0.8.28" 232 | execa "^5.0.0" 233 | find-up "^5.0.0" 234 | globby "^11.0.1" 235 | pkg-dir "^5.0.0" 236 | project-root-directory "^1.0.3" 237 | rollup "^2.35.1" 238 | rollup-plugin-dts "^2.0.1" 239 | 240 | emoji-regex@^8.0.0: 241 | version "8.0.0" 242 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 243 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 244 | 245 | es-module-lexer@^0.3.26: 246 | version "0.3.26" 247 | resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" 248 | integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== 249 | 250 | esbuild-register@^2.0.0: 251 | version "2.0.0" 252 | resolved "https://registry.npmjs.org/esbuild-register/-/esbuild-register-2.0.0.tgz#579a6eff4e5713a318602b4d305bcb6f8c5b08f9" 253 | integrity sha512-98i1+7OnCURCbKaWw5wnY05e4v7uknFEER7LtVxi/lCs8U+sl6/LnITvfeoDLrsqxlA3O6BjxK8QqsirfYULfA== 254 | dependencies: 255 | joycon "^2.2.5" 256 | pirates "^4.0.1" 257 | source-map-support "^0.5.19" 258 | strip-json-comments "^3.1.1" 259 | 260 | esbuild@^0.8.28, esbuild@^0.8.36: 261 | version "0.8.36" 262 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.36.tgz#f5b7c61473721c7d53ffe7c88708e25f3b6182f3" 263 | integrity sha512-kcUQB61Tf8rLJ3mOwP2ruWi/iFufaQcEs4No+JA6e7W2kMOtFExOsbyeFpEF6zNacwk2RF5fYUz5jfZwgn/SJg== 264 | 265 | esbuild@^0.8.34: 266 | version "0.8.38" 267 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.38.tgz#04dc395e15c77bbc9d6798e9b31275546bcf7b9a" 268 | integrity sha512-wSunJl8ujgBs9eVGubc8Y6fn/DkDjNyfQBVOFTY1E7sRxr8KTjmqyLIiE0M3Z4CjMnCu/rttCugwnOzY+HiwIw== 269 | 270 | escalade@^3.1.1: 271 | version "3.1.1" 272 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 273 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 274 | 275 | escape-string-regexp@^1.0.5: 276 | version "1.0.5" 277 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 278 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 279 | 280 | esm@^3.2.25: 281 | version "3.2.25" 282 | resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" 283 | integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== 284 | 285 | execa@^5.0.0: 286 | version "5.0.0" 287 | resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" 288 | integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== 289 | dependencies: 290 | cross-spawn "^7.0.3" 291 | get-stream "^6.0.0" 292 | human-signals "^2.1.0" 293 | is-stream "^2.0.0" 294 | merge-stream "^2.0.0" 295 | npm-run-path "^4.0.1" 296 | onetime "^5.1.2" 297 | signal-exit "^3.0.3" 298 | strip-final-newline "^2.0.0" 299 | 300 | fast-glob@^3.1.1: 301 | version "3.2.5" 302 | resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" 303 | integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== 304 | dependencies: 305 | "@nodelib/fs.stat" "^2.0.2" 306 | "@nodelib/fs.walk" "^1.2.3" 307 | glob-parent "^5.1.0" 308 | merge2 "^1.3.0" 309 | micromatch "^4.0.2" 310 | picomatch "^2.2.1" 311 | 312 | fastq@^1.6.0: 313 | version "1.10.1" 314 | resolved "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" 315 | integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== 316 | dependencies: 317 | reusify "^1.0.4" 318 | 319 | fill-range@^7.0.1: 320 | version "7.0.1" 321 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 322 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 323 | dependencies: 324 | to-regex-range "^5.0.1" 325 | 326 | find-up@^5.0.0: 327 | version "5.0.0" 328 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 329 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 330 | dependencies: 331 | locate-path "^6.0.0" 332 | path-exists "^4.0.0" 333 | 334 | foreground-child@^2.0.0: 335 | version "2.0.0" 336 | resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" 337 | integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== 338 | dependencies: 339 | cross-spawn "^7.0.0" 340 | signal-exit "^3.0.2" 341 | 342 | fs.realpath@^1.0.0: 343 | version "1.0.0" 344 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 345 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 346 | 347 | fsevents@~2.1.2: 348 | version "2.1.3" 349 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 350 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 351 | 352 | function-bind@^1.1.1: 353 | version "1.1.1" 354 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 355 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 356 | 357 | furi@^2.0.0: 358 | version "2.0.0" 359 | resolved "https://registry.npmjs.org/furi/-/furi-2.0.0.tgz#13d85826a1af21acc691da6254b3888fc39f0b4a" 360 | integrity sha512-uKuNsaU0WVaK/vmvj23wW1bicOFfyqSsAIH71bRZx8kA4Xj+YCHin7CJKJJjkIsmxYaPFLk9ljmjEyB7xF7WvQ== 361 | dependencies: 362 | "@types/is-windows" "^1.0.0" 363 | is-windows "^1.0.2" 364 | 365 | get-caller-file@^2.0.5: 366 | version "2.0.5" 367 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 368 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 369 | 370 | get-stream@^6.0.0: 371 | version "6.0.0" 372 | resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" 373 | integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== 374 | 375 | glob-parent@^5.1.0: 376 | version "5.1.1" 377 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 378 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 379 | dependencies: 380 | is-glob "^4.0.1" 381 | 382 | glob@^7.1.3, glob@^7.1.4: 383 | version "7.1.6" 384 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 385 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 386 | dependencies: 387 | fs.realpath "^1.0.0" 388 | inflight "^1.0.4" 389 | inherits "2" 390 | minimatch "^3.0.4" 391 | once "^1.3.0" 392 | path-is-absolute "^1.0.0" 393 | 394 | globby@^11.0.1: 395 | version "11.0.2" 396 | resolved "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" 397 | integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== 398 | dependencies: 399 | array-union "^2.1.0" 400 | dir-glob "^3.0.1" 401 | fast-glob "^3.1.1" 402 | ignore "^5.1.4" 403 | merge2 "^1.3.0" 404 | slash "^3.0.0" 405 | 406 | has-flag@^3.0.0: 407 | version "3.0.0" 408 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 409 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 410 | 411 | has-flag@^4.0.0: 412 | version "4.0.0" 413 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 414 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 415 | 416 | has@^1.0.3: 417 | version "1.0.3" 418 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 419 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 420 | dependencies: 421 | function-bind "^1.1.1" 422 | 423 | he@1.2.0: 424 | version "1.2.0" 425 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 426 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 427 | 428 | html-escaper@^2.0.0: 429 | version "2.0.2" 430 | resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 431 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 432 | 433 | human-signals@^2.1.0: 434 | version "2.1.0" 435 | resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 436 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 437 | 438 | ignore@^5.1.4: 439 | version "5.1.8" 440 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 441 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 442 | 443 | inflight@^1.0.4: 444 | version "1.0.6" 445 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 446 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 447 | dependencies: 448 | once "^1.3.0" 449 | wrappy "1" 450 | 451 | inherits@2: 452 | version "2.0.4" 453 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 454 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 455 | 456 | is-core-module@^2.1.0: 457 | version "2.2.0" 458 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" 459 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 460 | dependencies: 461 | has "^1.0.3" 462 | 463 | is-extglob@^2.1.1: 464 | version "2.1.1" 465 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 466 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 467 | 468 | is-fullwidth-code-point@^3.0.0: 469 | version "3.0.0" 470 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 471 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 472 | 473 | is-glob@^4.0.1: 474 | version "4.0.1" 475 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 476 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 477 | dependencies: 478 | is-extglob "^2.1.1" 479 | 480 | is-number@^7.0.0: 481 | version "7.0.0" 482 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 483 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 484 | 485 | is-stream@^2.0.0: 486 | version "2.0.0" 487 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 488 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 489 | 490 | is-windows@^1.0.2: 491 | version "1.0.2" 492 | resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 493 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 494 | 495 | isexe@^2.0.0: 496 | version "2.0.0" 497 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 498 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 499 | 500 | istanbul-lib-coverage@^3.0.0: 501 | version "3.0.0" 502 | resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 503 | integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 504 | 505 | istanbul-lib-report@^3.0.0: 506 | version "3.0.0" 507 | resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 508 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 509 | dependencies: 510 | istanbul-lib-coverage "^3.0.0" 511 | make-dir "^3.0.0" 512 | supports-color "^7.1.0" 513 | 514 | istanbul-reports@^3.0.2: 515 | version "3.0.2" 516 | resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" 517 | integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== 518 | dependencies: 519 | html-escaper "^2.0.0" 520 | istanbul-lib-report "^3.0.0" 521 | 522 | joycon@^2.2.5: 523 | version "2.2.5" 524 | resolved "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" 525 | integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== 526 | 527 | js-tokens@^4.0.0: 528 | version "4.0.0" 529 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 530 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 531 | 532 | kleur@^4.0.3: 533 | version "4.1.4" 534 | resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" 535 | integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== 536 | 537 | locate-path@^6.0.0: 538 | version "6.0.0" 539 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 540 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 541 | dependencies: 542 | p-locate "^5.0.0" 543 | 544 | magic-string@^0.25.7: 545 | version "0.25.7" 546 | resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 547 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 548 | dependencies: 549 | sourcemap-codec "^1.4.4" 550 | 551 | make-dir@^3.0.0: 552 | version "3.1.0" 553 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 554 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 555 | dependencies: 556 | semver "^6.0.0" 557 | 558 | merge-stream@^2.0.0: 559 | version "2.0.0" 560 | resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 561 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 562 | 563 | merge2@^1.3.0: 564 | version "1.4.1" 565 | resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 566 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 567 | 568 | micromatch@^4.0.2: 569 | version "4.0.2" 570 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 571 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 572 | dependencies: 573 | braces "^3.0.1" 574 | picomatch "^2.0.5" 575 | 576 | mimic-fn@^2.1.0: 577 | version "2.1.0" 578 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 579 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 580 | 581 | minimatch@^3.0.4: 582 | version "3.0.4" 583 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 584 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 585 | dependencies: 586 | brace-expansion "^1.1.7" 587 | 588 | mri@^1.1.0, mri@^1.1.5: 589 | version "1.1.6" 590 | resolved "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" 591 | integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== 592 | 593 | nanoid@^3.1.20: 594 | version "3.1.20" 595 | resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" 596 | integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== 597 | 598 | node-html-parser@^2.0.2: 599 | version "2.0.2" 600 | resolved "https://registry.npmjs.org/node-html-parser/-/node-html-parser-2.0.2.tgz#168c9cfb77ae58fe4038d84862a0fc8f2ad8e3fd" 601 | integrity sha512-N2000Ho9dkabvRZcyiwm6zOpdiAzxAxcJ0Z0WNoh/yXHG0YCuiK2WpNQfN+9vheLNY/h/It11Gk7uwT4QTfk9Q== 602 | dependencies: 603 | he "1.2.0" 604 | 605 | node-modules-regexp@^1.0.0: 606 | version "1.0.0" 607 | resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 608 | integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 609 | 610 | npm-run-path@^4.0.1: 611 | version "4.0.1" 612 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 613 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 614 | dependencies: 615 | path-key "^3.0.0" 616 | 617 | once@^1.3.0: 618 | version "1.4.0" 619 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 620 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 621 | dependencies: 622 | wrappy "1" 623 | 624 | onetime@^5.1.2: 625 | version "5.1.2" 626 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 627 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 628 | dependencies: 629 | mimic-fn "^2.1.0" 630 | 631 | p-limit@^3.0.2: 632 | version "3.1.0" 633 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 634 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 635 | dependencies: 636 | yocto-queue "^0.1.0" 637 | 638 | p-locate@^5.0.0: 639 | version "5.0.0" 640 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 641 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 642 | dependencies: 643 | p-limit "^3.0.2" 644 | 645 | path-exists@^4.0.0: 646 | version "4.0.0" 647 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 648 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 649 | 650 | path-is-absolute@^1.0.0: 651 | version "1.0.1" 652 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 653 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 654 | 655 | path-key@^3.0.0, path-key@^3.1.0: 656 | version "3.1.1" 657 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 658 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 659 | 660 | path-parse@^1.0.6: 661 | version "1.0.6" 662 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 663 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 664 | 665 | path-type@^4.0.0: 666 | version "4.0.0" 667 | resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 668 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 669 | 670 | picomatch@^2.0.5, picomatch@^2.2.1: 671 | version "2.2.2" 672 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 673 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 674 | 675 | pirates@^4.0.1: 676 | version "4.0.1" 677 | resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" 678 | integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== 679 | dependencies: 680 | node-modules-regexp "^1.0.0" 681 | 682 | pkg-dir@^5.0.0: 683 | version "5.0.0" 684 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" 685 | integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== 686 | dependencies: 687 | find-up "^5.0.0" 688 | 689 | postcss@^8.2.1: 690 | version "8.2.4" 691 | resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" 692 | integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== 693 | dependencies: 694 | colorette "^1.2.1" 695 | nanoid "^3.1.20" 696 | source-map "^0.6.1" 697 | 698 | prettier@^2.0.5: 699 | version "2.2.1" 700 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" 701 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== 702 | 703 | project-root-directory@^1.0.3: 704 | version "1.0.3" 705 | resolved "https://registry.npmjs.org/project-root-directory/-/project-root-directory-1.0.3.tgz#b83f25a76fa4aeb64f69a95cc9c83035c96ee045" 706 | integrity sha512-GVRoyflCe4VYlGwtEVcQngm1FMuu9q9KJfEK85g5OWGUTxc+iYvnMT64ixvxEgN48chvBWe2fc2ZGATSJMRyqQ== 707 | dependencies: 708 | resolve-from "^5.0.0" 709 | 710 | require-directory@^2.1.1: 711 | version "2.1.1" 712 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 713 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 714 | 715 | resolve-from@^5.0.0: 716 | version "5.0.0" 717 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 718 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 719 | 720 | resolve@^1.19.0: 721 | version "1.19.0" 722 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 723 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 724 | dependencies: 725 | is-core-module "^2.1.0" 726 | path-parse "^1.0.6" 727 | 728 | reusify@^1.0.4: 729 | version "1.0.4" 730 | resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 731 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 732 | 733 | rimraf@^3.0.0: 734 | version "3.0.2" 735 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 736 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 737 | dependencies: 738 | glob "^7.1.3" 739 | 740 | rollup-plugin-dts@^2.0.1: 741 | version "2.0.1" 742 | resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-2.0.1.tgz#333f50a637e199a073d490b198746f3c6bd07701" 743 | integrity sha512-y38NSXIY37YExCumbGBTL5dXg7pL7XD+Kbe98iEHWFN9yiKJf7t4kKBOkml5ylUDjQIXBnNClGDeRktc1T5dmA== 744 | dependencies: 745 | magic-string "^0.25.7" 746 | optionalDependencies: 747 | "@babel/code-frame" "^7.10.4" 748 | 749 | rollup@^2.35.1: 750 | version "2.38.1" 751 | resolved "https://registry.npmjs.org/rollup/-/rollup-2.38.1.tgz#ecea0f7ce6ef2c1f023fdb79524eb7aeb670ea79" 752 | integrity sha512-q07T6vU/V1kqM8rGRRyCgEvIQcIAXoKIE5CpkYAlHhfiWM1Iuh4dIPWpIbqFngCK6lwAB2aYHiUVhIbSWHQWhw== 753 | optionalDependencies: 754 | fsevents "~2.1.2" 755 | 756 | run-parallel@^1.1.9: 757 | version "1.1.10" 758 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" 759 | integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== 760 | 761 | sade@^1.7.3: 762 | version "1.7.4" 763 | resolved "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" 764 | integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA== 765 | dependencies: 766 | mri "^1.1.0" 767 | 768 | safe-buffer@~5.1.1: 769 | version "5.1.2" 770 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 771 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 772 | 773 | semver@^6.0.0: 774 | version "6.3.0" 775 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 776 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 777 | 778 | shebang-command@^2.0.0: 779 | version "2.0.0" 780 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 781 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 782 | dependencies: 783 | shebang-regex "^3.0.0" 784 | 785 | shebang-regex@^3.0.0: 786 | version "3.0.0" 787 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 788 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 789 | 790 | signal-exit@^3.0.2, signal-exit@^3.0.3: 791 | version "3.0.3" 792 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 793 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 794 | 795 | slash@^3.0.0: 796 | version "3.0.0" 797 | resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 798 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 799 | 800 | source-map-support@^0.5.19: 801 | version "0.5.19" 802 | resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 803 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 804 | dependencies: 805 | buffer-from "^1.0.0" 806 | source-map "^0.6.0" 807 | 808 | source-map@^0.6.0, source-map@^0.6.1: 809 | version "0.6.1" 810 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 811 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 812 | 813 | source-map@^0.7.3: 814 | version "0.7.3" 815 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 816 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 817 | 818 | sourcemap-codec@^1.4.4: 819 | version "1.4.8" 820 | resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 821 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 822 | 823 | string-width@^4.1.0, string-width@^4.2.0: 824 | version "4.2.0" 825 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 826 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 827 | dependencies: 828 | emoji-regex "^8.0.0" 829 | is-fullwidth-code-point "^3.0.0" 830 | strip-ansi "^6.0.0" 831 | 832 | strip-ansi@^6.0.0: 833 | version "6.0.0" 834 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 835 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 836 | dependencies: 837 | ansi-regex "^5.0.0" 838 | 839 | strip-final-newline@^2.0.0: 840 | version "2.0.0" 841 | resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 842 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 843 | 844 | strip-json-comments@^3.1.1: 845 | version "3.1.1" 846 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 847 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 848 | 849 | style-vendorizer@^2.0.0: 850 | version "2.0.0" 851 | resolved "https://registry.npmjs.org/style-vendorizer/-/style-vendorizer-2.0.0.tgz#0c46cec94069f1c768d31c3d307ed045646f503c" 852 | integrity sha512-CeqwnrtXd/DKIadVNdJDtHnpCmsc28rWVWLmgpF2HdzTiWFVCE1F1OzWWwskOEtWpOpgm6NrjccfkNGo8qW4MA== 853 | 854 | supports-color@^5.3.0: 855 | version "5.5.0" 856 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 857 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 858 | dependencies: 859 | has-flag "^3.0.0" 860 | 861 | supports-color@^7.1.0: 862 | version "7.2.0" 863 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 864 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 865 | dependencies: 866 | has-flag "^4.0.0" 867 | 868 | test-exclude@^6.0.0: 869 | version "6.0.0" 870 | resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 871 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 872 | dependencies: 873 | "@istanbuljs/schema" "^0.1.2" 874 | glob "^7.1.4" 875 | minimatch "^3.0.4" 876 | 877 | to-regex-range@^5.0.1: 878 | version "5.0.1" 879 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 880 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 881 | dependencies: 882 | is-number "^7.0.0" 883 | 884 | totalist@^2.0.0: 885 | version "2.0.0" 886 | resolved "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz#db6f1e19c0fa63e71339bbb8fba89653c18c7eec" 887 | integrity sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ== 888 | 889 | twind@>=0.14.4: 890 | version "0.14.4" 891 | resolved "https://registry.npmjs.org/twind/-/twind-0.14.4.tgz#ed0725bdd879f048ff6cc82c65f0364faf03468c" 892 | integrity sha512-B6ZfNe7xK2WblbAl4eoY2Y5Snvi11Rm0eK0IxlQeFSOQ+AR4UXSkc8+/n3D0VomJ+BqiOFmqmSyUemWQ6JQbTQ== 893 | dependencies: 894 | csstype "^3.0.5" 895 | node-html-parser "^2.0.2" 896 | style-vendorizer "^2.0.0" 897 | 898 | typescript@^4.1.3: 899 | version "4.1.3" 900 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" 901 | integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== 902 | 903 | uvu@^0.5.1: 904 | version "0.5.1" 905 | resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.1.tgz#938b85f96b8a478e585363ad1849933b6c481b28" 906 | integrity sha512-JGxttnOGDFs77FaZ0yMUHIzczzQ5R1IlDeNW6Wymw6gAscwMdAffVOP6TlxLIfReZyK8tahoGwWZaTCJzNFDkg== 907 | dependencies: 908 | dequal "^2.0.0" 909 | diff "^5.0.0" 910 | kleur "^4.0.3" 911 | sade "^1.7.3" 912 | totalist "^2.0.0" 913 | 914 | v8-to-istanbul@^7.1.0: 915 | version "7.1.0" 916 | resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" 917 | integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== 918 | dependencies: 919 | "@types/istanbul-lib-coverage" "^2.0.1" 920 | convert-source-map "^1.6.0" 921 | source-map "^0.7.3" 922 | 923 | vite@^2.0.0-beta.60: 924 | version "2.0.0-beta.60" 925 | resolved "https://registry.npmjs.org/vite/-/vite-2.0.0-beta.60.tgz#160d69968f29d05e0a4a22a6cc690d997fd793ea" 926 | integrity sha512-B3qaJrSp0pbgjv2ROA7/0KRgJFs+QhH43OTo6Hau/dGopKotZFuE04FBRCjJ3+h0ePEH4DUG7+e2tUUgkywb0A== 927 | dependencies: 928 | esbuild "^0.8.34" 929 | postcss "^8.2.1" 930 | resolve "^1.19.0" 931 | rollup "^2.35.1" 932 | optionalDependencies: 933 | fsevents "~2.1.2" 934 | 935 | watchlist@^0.2.3: 936 | version "0.2.3" 937 | resolved "https://registry.npmjs.org/watchlist/-/watchlist-0.2.3.tgz#90af76d7d0d4c00b8b0eecddae1c247447f86136" 938 | integrity sha512-xStuPg489QXZbRirnmIMo7OaKFnGkvTQn7tCUC/sVmVVEvDQQnnVl/k9D5yg3nXgpebgPHpfApBLHMpEbAqvSQ== 939 | dependencies: 940 | mri "^1.1.5" 941 | 942 | which@^2.0.1: 943 | version "2.0.2" 944 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 945 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 946 | dependencies: 947 | isexe "^2.0.0" 948 | 949 | wrap-ansi@^7.0.0: 950 | version "7.0.0" 951 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 952 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 953 | dependencies: 954 | ansi-styles "^4.0.0" 955 | string-width "^4.1.0" 956 | strip-ansi "^6.0.0" 957 | 958 | wrappy@1: 959 | version "1.0.2" 960 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 961 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 962 | 963 | y18n@^5.0.5: 964 | version "5.0.5" 965 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" 966 | integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== 967 | 968 | yargs-parser@^20.0.0, yargs-parser@^20.2.2: 969 | version "20.2.4" 970 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 971 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 972 | 973 | yargs@^16.0.0: 974 | version "16.2.0" 975 | resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 976 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 977 | dependencies: 978 | cliui "^7.0.2" 979 | escalade "^3.1.1" 980 | get-caller-file "^2.0.5" 981 | require-directory "^2.1.1" 982 | string-width "^4.2.0" 983 | y18n "^5.0.5" 984 | yargs-parser "^20.2.2" 985 | 986 | yocto-queue@^0.1.0: 987 | version "0.1.0" 988 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 989 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 990 | --------------------------------------------------------------------------------