├── .gitignore ├── .prettierrc ├── 404.html ├── LICENSE ├── README.md ├── index.html ├── jsx-runtime.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── barcode-blaster.json ├── capy.gif ├── effect.webm ├── head.jpeg ├── thumb.png └── vcr.ttf ├── src ├── 404.jsx ├── data.jsx ├── dvd.jsx ├── main.jsx └── styles.css ├── tailwind.config.js ├── vercel.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 65, 3 | "semi": true, 4 | "singleQuote": true, 5 | "tabWidth": 2, 6 | "trailingComma": "es5" 7 | } -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | Aiden Bai 11 | 12 | 13 | 14 | 19 | 20 | 24 | 25 | 29 | 33 | 34 | 35 | 36 | 39 |
40 |

NO SIGNAL

41 | ► INSERT TAPE 44 |
45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Aiden Bai 白宇彤 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 | [**aidenybai.com**](https://aidenybai.com) 2 | 3 | [![Thumbnail](/public/thumb.png)](https://aidenybai.com) 4 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | 16 | 20 | 21 | 26 | 27 | 28 | 29 | 30 | 34 | 38 | 39 | Aiden Bai 40 | 41 | 42 |
43 |
47 |
50 |

PLAY ►

51 |

--:--

52 |
53 |
56 |

60 | click to begin 61 |

62 |
63 |
67 |

SP

68 |
69 |
70 |
71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /jsx-runtime.js: -------------------------------------------------------------------------------- 1 | let prev = {}; 2 | export const effect = (callback) => { 3 | prev = callback(prev); 4 | }; 5 | export const insert = (el, value, ref) => { 6 | const ret = typeof value === 'function' ? value() : value; 7 | const insertNode = (el, value, ref) => { 8 | if (typeof ret === 'string') { 9 | el.textContent = value; 10 | } else { 11 | el.insertBefore(value, ref); 12 | } 13 | }; 14 | if (Array.isArray(ret)) { 15 | ret.forEach((v) => insertNode(el, v, ref)); 16 | } else { 17 | insertNode(el, ret, ref); 18 | } 19 | }; 20 | export const createComponent = (Component, props) => Component(props); 21 | export const template = (html) => { 22 | const el = document.createElement('template'); 23 | el.innerHTML = html; 24 | return el.content.firstChild; 25 | }; 26 | export const setAttribute = (el, name, value) => el.setAttribute(name, value); 27 | export const delegateEvents = () => {}; 28 | export const className = (el, classString) => { 29 | el.className = classString; 30 | }; 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "dev": "vite", 4 | "build": "vite build", 5 | "preview": "vite preview" 6 | }, 7 | "devDependencies": { 8 | "@babel/core": "^7.20.5", 9 | "@babel/plugin-syntax-jsx": "^7.18.6", 10 | "@vitejs/plugin-legacy": "^3.0.1", 11 | "autoprefixer": "^10.4.13", 12 | "babel-plugin-jsx-dom-expressions": "^0.35.6", 13 | "csstype": "^3.1.1", 14 | "dom-expressions": "^0.35.7", 15 | "postcss": "^8.4.20", 16 | "tailwindcss": "^3.2.4", 17 | "terser": "^5.16.1", 18 | "vite": "^4.0.2", 19 | "vite-plugin-babel": "^1.1.2" 20 | }, 21 | "dependencies": { 22 | "cobe": "^0.6.3", 23 | "kaboom": "^2000.2.10", 24 | "powerglitch": "^2.3.2" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@babel/core': ^7.20.5 5 | '@babel/plugin-syntax-jsx': ^7.18.6 6 | '@vitejs/plugin-legacy': ^3.0.1 7 | autoprefixer: ^10.4.13 8 | babel-plugin-jsx-dom-expressions: ^0.35.6 9 | cobe: ^0.6.3 10 | csstype: ^3.1.1 11 | dom-expressions: ^0.35.7 12 | kaboom: ^2000.2.10 13 | postcss: ^8.4.20 14 | powerglitch: ^2.3.2 15 | tailwindcss: ^3.2.4 16 | terser: ^5.16.1 17 | vite: ^4.0.2 18 | vite-plugin-babel: ^1.1.2 19 | 20 | dependencies: 21 | cobe: 0.6.3 22 | kaboom: 2000.2.10 23 | powerglitch: 2.3.2 24 | 25 | devDependencies: 26 | '@babel/core': 7.20.5 27 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 28 | '@vitejs/plugin-legacy': 3.0.1_terser@5.16.1+vite@4.0.2 29 | autoprefixer: 10.4.13_postcss@8.4.20 30 | babel-plugin-jsx-dom-expressions: 0.35.6_@babel+core@7.20.5 31 | csstype: 3.1.1 32 | dom-expressions: 0.35.7_csstype@3.1.1 33 | postcss: 8.4.20 34 | tailwindcss: 3.2.4_postcss@8.4.20 35 | terser: 5.16.1 36 | vite: 4.0.2_terser@5.16.1 37 | vite-plugin-babel: 1.1.2_l5uoowfi6skwxxfmy3fnyxsoou 38 | 39 | packages: 40 | 41 | /@ampproject/remapping/2.2.0: 42 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 43 | engines: {node: '>=6.0.0'} 44 | dependencies: 45 | '@jridgewell/gen-mapping': 0.1.1 46 | '@jridgewell/trace-mapping': 0.3.17 47 | dev: true 48 | 49 | /@babel/code-frame/7.18.6: 50 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 51 | engines: {node: '>=6.9.0'} 52 | dependencies: 53 | '@babel/highlight': 7.18.6 54 | dev: true 55 | 56 | /@babel/compat-data/7.20.5: 57 | resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} 58 | engines: {node: '>=6.9.0'} 59 | dev: true 60 | 61 | /@babel/core/7.20.5: 62 | resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} 63 | engines: {node: '>=6.9.0'} 64 | dependencies: 65 | '@ampproject/remapping': 2.2.0 66 | '@babel/code-frame': 7.18.6 67 | '@babel/generator': 7.20.5 68 | '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 69 | '@babel/helper-module-transforms': 7.20.2 70 | '@babel/helpers': 7.20.6 71 | '@babel/parser': 7.20.5 72 | '@babel/template': 7.18.10 73 | '@babel/traverse': 7.20.5 74 | '@babel/types': 7.20.5 75 | convert-source-map: 1.9.0 76 | debug: 4.3.4 77 | gensync: 1.0.0-beta.2 78 | json5: 2.2.2 79 | semver: 6.3.0 80 | transitivePeerDependencies: 81 | - supports-color 82 | dev: true 83 | 84 | /@babel/generator/7.20.5: 85 | resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} 86 | engines: {node: '>=6.9.0'} 87 | dependencies: 88 | '@babel/types': 7.20.5 89 | '@jridgewell/gen-mapping': 0.3.2 90 | jsesc: 2.5.2 91 | dev: true 92 | 93 | /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.5: 94 | resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} 95 | engines: {node: '>=6.9.0'} 96 | peerDependencies: 97 | '@babel/core': ^7.0.0 98 | dependencies: 99 | '@babel/compat-data': 7.20.5 100 | '@babel/core': 7.20.5 101 | '@babel/helper-validator-option': 7.18.6 102 | browserslist: 4.21.4 103 | semver: 6.3.0 104 | dev: true 105 | 106 | /@babel/helper-environment-visitor/7.18.9: 107 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 108 | engines: {node: '>=6.9.0'} 109 | dev: true 110 | 111 | /@babel/helper-function-name/7.19.0: 112 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 113 | engines: {node: '>=6.9.0'} 114 | dependencies: 115 | '@babel/template': 7.18.10 116 | '@babel/types': 7.20.5 117 | dev: true 118 | 119 | /@babel/helper-hoist-variables/7.18.6: 120 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 121 | engines: {node: '>=6.9.0'} 122 | dependencies: 123 | '@babel/types': 7.20.5 124 | dev: true 125 | 126 | /@babel/helper-module-imports/7.16.0: 127 | resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} 128 | engines: {node: '>=6.9.0'} 129 | dependencies: 130 | '@babel/types': 7.20.5 131 | dev: true 132 | 133 | /@babel/helper-module-imports/7.18.6: 134 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 135 | engines: {node: '>=6.9.0'} 136 | dependencies: 137 | '@babel/types': 7.20.5 138 | dev: true 139 | 140 | /@babel/helper-module-transforms/7.20.2: 141 | resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} 142 | engines: {node: '>=6.9.0'} 143 | dependencies: 144 | '@babel/helper-environment-visitor': 7.18.9 145 | '@babel/helper-module-imports': 7.18.6 146 | '@babel/helper-simple-access': 7.20.2 147 | '@babel/helper-split-export-declaration': 7.18.6 148 | '@babel/helper-validator-identifier': 7.19.1 149 | '@babel/template': 7.18.10 150 | '@babel/traverse': 7.20.5 151 | '@babel/types': 7.20.5 152 | transitivePeerDependencies: 153 | - supports-color 154 | dev: true 155 | 156 | /@babel/helper-plugin-utils/7.20.2: 157 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 158 | engines: {node: '>=6.9.0'} 159 | dev: true 160 | 161 | /@babel/helper-simple-access/7.20.2: 162 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 163 | engines: {node: '>=6.9.0'} 164 | dependencies: 165 | '@babel/types': 7.20.5 166 | dev: true 167 | 168 | /@babel/helper-split-export-declaration/7.18.6: 169 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 170 | engines: {node: '>=6.9.0'} 171 | dependencies: 172 | '@babel/types': 7.20.5 173 | dev: true 174 | 175 | /@babel/helper-string-parser/7.19.4: 176 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 177 | engines: {node: '>=6.9.0'} 178 | dev: true 179 | 180 | /@babel/helper-validator-identifier/7.19.1: 181 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 182 | engines: {node: '>=6.9.0'} 183 | dev: true 184 | 185 | /@babel/helper-validator-option/7.18.6: 186 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 187 | engines: {node: '>=6.9.0'} 188 | dev: true 189 | 190 | /@babel/helpers/7.20.6: 191 | resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} 192 | engines: {node: '>=6.9.0'} 193 | dependencies: 194 | '@babel/template': 7.18.10 195 | '@babel/traverse': 7.20.5 196 | '@babel/types': 7.20.5 197 | transitivePeerDependencies: 198 | - supports-color 199 | dev: true 200 | 201 | /@babel/highlight/7.18.6: 202 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 203 | engines: {node: '>=6.9.0'} 204 | dependencies: 205 | '@babel/helper-validator-identifier': 7.19.1 206 | chalk: 2.4.2 207 | js-tokens: 4.0.0 208 | dev: true 209 | 210 | /@babel/parser/7.20.5: 211 | resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} 212 | engines: {node: '>=6.0.0'} 213 | hasBin: true 214 | dependencies: 215 | '@babel/types': 7.20.5 216 | dev: true 217 | 218 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.5: 219 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} 220 | engines: {node: '>=6.9.0'} 221 | peerDependencies: 222 | '@babel/core': ^7.0.0-0 223 | dependencies: 224 | '@babel/core': 7.20.5 225 | '@babel/helper-plugin-utils': 7.20.2 226 | dev: true 227 | 228 | /@babel/standalone/7.20.6: 229 | resolution: {integrity: sha512-u5at/CbBLETf7kx2LOY4XdhseD79Y099WZKAOMXeT8qvd9OSR515my2UNBBLY4qIht/Qi9KySeQHQwQwxJN4Sw==} 230 | engines: {node: '>=6.9.0'} 231 | dev: true 232 | 233 | /@babel/template/7.18.10: 234 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} 235 | engines: {node: '>=6.9.0'} 236 | dependencies: 237 | '@babel/code-frame': 7.18.6 238 | '@babel/parser': 7.20.5 239 | '@babel/types': 7.20.5 240 | dev: true 241 | 242 | /@babel/traverse/7.20.5: 243 | resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} 244 | engines: {node: '>=6.9.0'} 245 | dependencies: 246 | '@babel/code-frame': 7.18.6 247 | '@babel/generator': 7.20.5 248 | '@babel/helper-environment-visitor': 7.18.9 249 | '@babel/helper-function-name': 7.19.0 250 | '@babel/helper-hoist-variables': 7.18.6 251 | '@babel/helper-split-export-declaration': 7.18.6 252 | '@babel/parser': 7.20.5 253 | '@babel/types': 7.20.5 254 | debug: 4.3.4 255 | globals: 11.12.0 256 | transitivePeerDependencies: 257 | - supports-color 258 | dev: true 259 | 260 | /@babel/types/7.20.5: 261 | resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} 262 | engines: {node: '>=6.9.0'} 263 | dependencies: 264 | '@babel/helper-string-parser': 7.19.4 265 | '@babel/helper-validator-identifier': 7.19.1 266 | to-fast-properties: 2.0.0 267 | dev: true 268 | 269 | /@esbuild/android-arm/0.16.10: 270 | resolution: {integrity: sha512-RmJjQTRrO6VwUWDrzTBLmV4OJZTarYsiepLGlF2rYTVB701hSorPywPGvP6d8HCuuRibyXa5JX4s3jN2kHEtjQ==} 271 | engines: {node: '>=12'} 272 | cpu: [arm] 273 | os: [android] 274 | requiresBuild: true 275 | dev: true 276 | optional: true 277 | 278 | /@esbuild/android-arm64/0.16.10: 279 | resolution: {integrity: sha512-47Y+NwVKTldTlDhSgJHZ/RpvBQMUDG7eKihqaF/u6g7s0ZPz4J1vy8A3rwnnUOF2CuDn7w7Gj/QcMoWz3U3SJw==} 280 | engines: {node: '>=12'} 281 | cpu: [arm64] 282 | os: [android] 283 | requiresBuild: true 284 | dev: true 285 | optional: true 286 | 287 | /@esbuild/android-x64/0.16.10: 288 | resolution: {integrity: sha512-C4PfnrBMcuAcOurQzpF1tTtZz94IXO5JmICJJ3NFJRHbXXsQUg9RFG45KvydKqtFfBaFLCHpduUkUfXwIvGnRg==} 289 | engines: {node: '>=12'} 290 | cpu: [x64] 291 | os: [android] 292 | requiresBuild: true 293 | dev: true 294 | optional: true 295 | 296 | /@esbuild/darwin-arm64/0.16.10: 297 | resolution: {integrity: sha512-bH/bpFwldyOKdi9HSLCLhhKeVgRYr9KblchwXgY2NeUHBB/BzTUHtUSBgGBmpydB1/4E37m+ggXXfSrnD7/E7g==} 298 | engines: {node: '>=12'} 299 | cpu: [arm64] 300 | os: [darwin] 301 | requiresBuild: true 302 | dev: true 303 | optional: true 304 | 305 | /@esbuild/darwin-x64/0.16.10: 306 | resolution: {integrity: sha512-OXt7ijoLuy+AjDSKQWu+KdDFMBbdeaL6wtgMKtDUXKWHiAMKHan5+R1QAG6HD4+K0nnOvEJXKHeA9QhXNAjOTQ==} 307 | engines: {node: '>=12'} 308 | cpu: [x64] 309 | os: [darwin] 310 | requiresBuild: true 311 | dev: true 312 | optional: true 313 | 314 | /@esbuild/freebsd-arm64/0.16.10: 315 | resolution: {integrity: sha512-shSQX/3GHuspE3Uxtq5kcFG/zqC+VuMnJkqV7LczO41cIe6CQaXHD3QdMLA4ziRq/m0vZo7JdterlgbmgNIAlQ==} 316 | engines: {node: '>=12'} 317 | cpu: [arm64] 318 | os: [freebsd] 319 | requiresBuild: true 320 | dev: true 321 | optional: true 322 | 323 | /@esbuild/freebsd-x64/0.16.10: 324 | resolution: {integrity: sha512-5YVc1zdeaJGASijZmTzSO4h6uKzsQGG3pkjI6fuXvolhm3hVRhZwnHJkforaZLmzvNv5Tb7a3QL2FAVmrgySIA==} 325 | engines: {node: '>=12'} 326 | cpu: [x64] 327 | os: [freebsd] 328 | requiresBuild: true 329 | dev: true 330 | optional: true 331 | 332 | /@esbuild/linux-arm/0.16.10: 333 | resolution: {integrity: sha512-c360287ZWI2miBnvIj23bPyVctgzeMT2kQKR+x94pVqIN44h3GF8VMEs1SFPH1UgyDr3yBbx3vowDS1SVhyVhA==} 334 | engines: {node: '>=12'} 335 | cpu: [arm] 336 | os: [linux] 337 | requiresBuild: true 338 | dev: true 339 | optional: true 340 | 341 | /@esbuild/linux-arm64/0.16.10: 342 | resolution: {integrity: sha512-2aqeNVxIaRfPcIaMZIFoblLh588sWyCbmj1HHCCs9WmeNWm+EIN0SmvsmPvTa/TsNZFKnxTcvkX2eszTcCqIrA==} 343 | engines: {node: '>=12'} 344 | cpu: [arm64] 345 | os: [linux] 346 | requiresBuild: true 347 | dev: true 348 | optional: true 349 | 350 | /@esbuild/linux-ia32/0.16.10: 351 | resolution: {integrity: sha512-sqMIEWeyrLGU7J5RB5fTkLRIFwsgsQ7ieWXlDLEmC2HblPYGb3AucD7inw2OrKFpRPKsec1l+lssiM3+NV5aOw==} 352 | engines: {node: '>=12'} 353 | cpu: [ia32] 354 | os: [linux] 355 | requiresBuild: true 356 | dev: true 357 | optional: true 358 | 359 | /@esbuild/linux-loong64/0.16.10: 360 | resolution: {integrity: sha512-O7Pd5hLEtTg37NC73pfhUOGTjx/+aXu5YoSq3ahCxcN7Bcr2F47mv+kG5t840thnsEzrv0oB70+LJu3gUgchvg==} 361 | engines: {node: '>=12'} 362 | cpu: [loong64] 363 | os: [linux] 364 | requiresBuild: true 365 | dev: true 366 | optional: true 367 | 368 | /@esbuild/linux-mips64el/0.16.10: 369 | resolution: {integrity: sha512-FN8mZOH7531iPHM0kaFhAOqqNHoAb6r/YHW2ZIxNi0a85UBi2DO4Vuyn7t1p4UN8a4LoAnLOT1PqNgHkgBJgbA==} 370 | engines: {node: '>=12'} 371 | cpu: [mips64el] 372 | os: [linux] 373 | requiresBuild: true 374 | dev: true 375 | optional: true 376 | 377 | /@esbuild/linux-ppc64/0.16.10: 378 | resolution: {integrity: sha512-Dg9RiqdvHOAWnOKIOTsIx8dFX9EDlY2IbPEY7YFzchrCiTZmMkD7jWA9UdZbNUygPjdmQBVPRCrLydReFlX9yg==} 379 | engines: {node: '>=12'} 380 | cpu: [ppc64] 381 | os: [linux] 382 | requiresBuild: true 383 | dev: true 384 | optional: true 385 | 386 | /@esbuild/linux-riscv64/0.16.10: 387 | resolution: {integrity: sha512-XMqtpjwzbmlar0BJIxmzu/RZ7EWlfVfH68Vadrva0Wj5UKOdKvqskuev2jY2oPV3aoQUyXwnMbMrFmloO2GfAw==} 388 | engines: {node: '>=12'} 389 | cpu: [riscv64] 390 | os: [linux] 391 | requiresBuild: true 392 | dev: true 393 | optional: true 394 | 395 | /@esbuild/linux-s390x/0.16.10: 396 | resolution: {integrity: sha512-fu7XtnoeRNFMx8DjK3gPWpFBDM2u5ba+FYwg27SjMJwKvJr4bDyKz5c+FLXLUSSAkMAt/UL+cUbEbra+rYtUgw==} 397 | engines: {node: '>=12'} 398 | cpu: [s390x] 399 | os: [linux] 400 | requiresBuild: true 401 | dev: true 402 | optional: true 403 | 404 | /@esbuild/linux-x64/0.16.10: 405 | resolution: {integrity: sha512-61lcjVC/RldNNMUzQQdyCWjCxp9YLEQgIxErxU9XluX7juBdGKb0pvddS0vPNuCvotRbzijZ1pzII+26haWzbA==} 406 | engines: {node: '>=12'} 407 | cpu: [x64] 408 | os: [linux] 409 | requiresBuild: true 410 | dev: true 411 | optional: true 412 | 413 | /@esbuild/netbsd-x64/0.16.10: 414 | resolution: {integrity: sha512-JeZXCX3viSA9j4HqSoygjssdqYdfHd6yCFWyfSekLbz4Ef+D2EjvsN02ZQPwYl5a5gg/ehdHgegHhlfOFP0HCA==} 415 | engines: {node: '>=12'} 416 | cpu: [x64] 417 | os: [netbsd] 418 | requiresBuild: true 419 | dev: true 420 | optional: true 421 | 422 | /@esbuild/openbsd-x64/0.16.10: 423 | resolution: {integrity: sha512-3qpxQKuEVIIg8SebpXsp82OBrqjPV/OwNWmG+TnZDr3VGyChNnGMHccC1xkbxCHDQNnnXjxhMQNyHmdFJbmbRA==} 424 | engines: {node: '>=12'} 425 | cpu: [x64] 426 | os: [openbsd] 427 | requiresBuild: true 428 | dev: true 429 | optional: true 430 | 431 | /@esbuild/sunos-x64/0.16.10: 432 | resolution: {integrity: sha512-z+q0xZ+et/7etz7WoMyXTHZ1rB8PMSNp/FOqURLJLOPb3GWJ2aj4oCqFCjPwEbW1rsT7JPpxeH/DwGAWk/I1Bg==} 433 | engines: {node: '>=12'} 434 | cpu: [x64] 435 | os: [sunos] 436 | requiresBuild: true 437 | dev: true 438 | optional: true 439 | 440 | /@esbuild/win32-arm64/0.16.10: 441 | resolution: {integrity: sha512-+YYu5sbQ9npkNT9Dec+tn1F/kjg6SMgr6bfi/6FpXYZvCRfu2YFPZGb+3x8K30s8eRxFpoG4sGhiSUkr1xbHEw==} 442 | engines: {node: '>=12'} 443 | cpu: [arm64] 444 | os: [win32] 445 | requiresBuild: true 446 | dev: true 447 | optional: true 448 | 449 | /@esbuild/win32-ia32/0.16.10: 450 | resolution: {integrity: sha512-Aw7Fupk7XNehR1ftHGYwUteyJ2q+em/aE+fVU3YMTBN2V5A7Z4aVCSV+SvCp9HIIHZavPFBpbdP3VfjQpdf6Xg==} 451 | engines: {node: '>=12'} 452 | cpu: [ia32] 453 | os: [win32] 454 | requiresBuild: true 455 | dev: true 456 | optional: true 457 | 458 | /@esbuild/win32-x64/0.16.10: 459 | resolution: {integrity: sha512-qddWullt3sC1EIpfHvCRBq3H4g3L86DZpD6n8k2XFjFVyp01D++uNbN1hT/JRsHxTbyyemZcpwL5aRlJwc/zFw==} 460 | engines: {node: '>=12'} 461 | cpu: [x64] 462 | os: [win32] 463 | requiresBuild: true 464 | dev: true 465 | optional: true 466 | 467 | /@jridgewell/gen-mapping/0.1.1: 468 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 469 | engines: {node: '>=6.0.0'} 470 | dependencies: 471 | '@jridgewell/set-array': 1.1.2 472 | '@jridgewell/sourcemap-codec': 1.4.14 473 | dev: true 474 | 475 | /@jridgewell/gen-mapping/0.3.2: 476 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 477 | engines: {node: '>=6.0.0'} 478 | dependencies: 479 | '@jridgewell/set-array': 1.1.2 480 | '@jridgewell/sourcemap-codec': 1.4.14 481 | '@jridgewell/trace-mapping': 0.3.17 482 | dev: true 483 | 484 | /@jridgewell/resolve-uri/3.1.0: 485 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 486 | engines: {node: '>=6.0.0'} 487 | dev: true 488 | 489 | /@jridgewell/set-array/1.1.2: 490 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 491 | engines: {node: '>=6.0.0'} 492 | dev: true 493 | 494 | /@jridgewell/source-map/0.3.2: 495 | resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} 496 | dependencies: 497 | '@jridgewell/gen-mapping': 0.3.2 498 | '@jridgewell/trace-mapping': 0.3.17 499 | dev: true 500 | 501 | /@jridgewell/sourcemap-codec/1.4.14: 502 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 503 | dev: true 504 | 505 | /@jridgewell/trace-mapping/0.3.17: 506 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 507 | dependencies: 508 | '@jridgewell/resolve-uri': 3.1.0 509 | '@jridgewell/sourcemap-codec': 1.4.14 510 | dev: true 511 | 512 | /@nodelib/fs.scandir/2.1.5: 513 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 514 | engines: {node: '>= 8'} 515 | dependencies: 516 | '@nodelib/fs.stat': 2.0.5 517 | run-parallel: 1.2.0 518 | dev: true 519 | 520 | /@nodelib/fs.stat/2.0.5: 521 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 522 | engines: {node: '>= 8'} 523 | dev: true 524 | 525 | /@nodelib/fs.walk/1.2.8: 526 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 527 | engines: {node: '>= 8'} 528 | dependencies: 529 | '@nodelib/fs.scandir': 2.1.5 530 | fastq: 1.14.0 531 | dev: true 532 | 533 | /@vitejs/plugin-legacy/3.0.1_terser@5.16.1+vite@4.0.2: 534 | resolution: {integrity: sha512-XCtEjxoR3rmy000ujYRBp5kggWqzHz9+F20/yIMUWOzbvu0+KW1e14Fvb8h7SpNn+bfjGW1RiAs1Vrgb7Js+iQ==} 535 | engines: {node: ^14.18.0 || >=16.0.0} 536 | peerDependencies: 537 | terser: ^5.4.0 538 | vite: ^4.0.0 539 | dependencies: 540 | '@babel/standalone': 7.20.6 541 | core-js: 3.26.1 542 | magic-string: 0.27.0 543 | regenerator-runtime: 0.13.11 544 | systemjs: 6.13.0 545 | terser: 5.16.1 546 | vite: 4.0.2_terser@5.16.1 547 | dev: true 548 | 549 | /acorn-node/1.8.2: 550 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 551 | dependencies: 552 | acorn: 7.4.1 553 | acorn-walk: 7.2.0 554 | xtend: 4.0.2 555 | dev: true 556 | 557 | /acorn-walk/7.2.0: 558 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 559 | engines: {node: '>=0.4.0'} 560 | dev: true 561 | 562 | /acorn/7.4.1: 563 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 564 | engines: {node: '>=0.4.0'} 565 | hasBin: true 566 | dev: true 567 | 568 | /acorn/8.8.1: 569 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 570 | engines: {node: '>=0.4.0'} 571 | hasBin: true 572 | dev: true 573 | 574 | /ansi-styles/3.2.1: 575 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 576 | engines: {node: '>=4'} 577 | dependencies: 578 | color-convert: 1.9.3 579 | dev: true 580 | 581 | /anymatch/3.1.3: 582 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 583 | engines: {node: '>= 8'} 584 | dependencies: 585 | normalize-path: 3.0.0 586 | picomatch: 2.3.1 587 | dev: true 588 | 589 | /arg/5.0.2: 590 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 591 | dev: true 592 | 593 | /autoprefixer/10.4.13_postcss@8.4.20: 594 | resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} 595 | engines: {node: ^10 || ^12 || >=14} 596 | hasBin: true 597 | peerDependencies: 598 | postcss: ^8.1.0 599 | dependencies: 600 | browserslist: 4.21.4 601 | caniuse-lite: 1.0.30001439 602 | fraction.js: 4.2.0 603 | normalize-range: 0.1.2 604 | picocolors: 1.0.0 605 | postcss: 8.4.20 606 | postcss-value-parser: 4.2.0 607 | dev: true 608 | 609 | /babel-plugin-jsx-dom-expressions/0.35.6_@babel+core@7.20.5: 610 | resolution: {integrity: sha512-z8VBym+Scol38MiR97iqQGsANjhsDqscRRemk+po+z3TWKV/fb9kux/gdKOJJSC/ARyUL3HExBFVtr+Efd24uw==} 611 | peerDependencies: 612 | '@babel/core': ^7.0.0 613 | dependencies: 614 | '@babel/core': 7.20.5 615 | '@babel/helper-module-imports': 7.16.0 616 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 617 | '@babel/types': 7.20.5 618 | html-entities: 2.3.2 619 | dev: true 620 | 621 | /babel-plugin-transform-rename-import/2.3.0: 622 | resolution: {integrity: sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==} 623 | dev: true 624 | 625 | /binary-extensions/2.2.0: 626 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 627 | engines: {node: '>=8'} 628 | dev: true 629 | 630 | /braces/3.0.2: 631 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 632 | engines: {node: '>=8'} 633 | dependencies: 634 | fill-range: 7.0.1 635 | dev: true 636 | 637 | /browserslist/4.21.4: 638 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 639 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 640 | hasBin: true 641 | dependencies: 642 | caniuse-lite: 1.0.30001439 643 | electron-to-chromium: 1.4.284 644 | node-releases: 2.0.8 645 | update-browserslist-db: 1.0.10_browserslist@4.21.4 646 | dev: true 647 | 648 | /buffer-from/1.1.2: 649 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 650 | dev: true 651 | 652 | /camelcase-css/2.0.1: 653 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 654 | engines: {node: '>= 6'} 655 | dev: true 656 | 657 | /caniuse-lite/1.0.30001439: 658 | resolution: {integrity: sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==} 659 | dev: true 660 | 661 | /chalk/2.4.2: 662 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 663 | engines: {node: '>=4'} 664 | dependencies: 665 | ansi-styles: 3.2.1 666 | escape-string-regexp: 1.0.5 667 | supports-color: 5.5.0 668 | dev: true 669 | 670 | /chokidar/3.5.3: 671 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 672 | engines: {node: '>= 8.10.0'} 673 | dependencies: 674 | anymatch: 3.1.3 675 | braces: 3.0.2 676 | glob-parent: 5.1.2 677 | is-binary-path: 2.1.0 678 | is-glob: 4.0.3 679 | normalize-path: 3.0.0 680 | readdirp: 3.6.0 681 | optionalDependencies: 682 | fsevents: 2.3.2 683 | dev: true 684 | 685 | /cobe/0.6.3: 686 | resolution: {integrity: sha512-WHr7X4o1ym94GZ96h7b1pNemZJacbOzd02dZtnVwuC4oWBaLg96PBmp2rIS1SAhUDhhC/QyS9WEqkpZIs/ZBTg==} 687 | dependencies: 688 | phenomenon: 1.6.0 689 | dev: false 690 | 691 | /color-convert/1.9.3: 692 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 693 | dependencies: 694 | color-name: 1.1.3 695 | dev: true 696 | 697 | /color-name/1.1.3: 698 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 699 | dev: true 700 | 701 | /color-name/1.1.4: 702 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 703 | dev: true 704 | 705 | /commander/2.20.3: 706 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 707 | dev: true 708 | 709 | /convert-source-map/1.9.0: 710 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 711 | dev: true 712 | 713 | /core-js/3.26.1: 714 | resolution: {integrity: sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==} 715 | requiresBuild: true 716 | dev: true 717 | 718 | /cssesc/3.0.0: 719 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 720 | engines: {node: '>=4'} 721 | hasBin: true 722 | dev: true 723 | 724 | /csstype/3.1.1: 725 | resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} 726 | dev: true 727 | 728 | /debug/4.3.4: 729 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 730 | engines: {node: '>=6.0'} 731 | peerDependencies: 732 | supports-color: '*' 733 | peerDependenciesMeta: 734 | supports-color: 735 | optional: true 736 | dependencies: 737 | ms: 2.1.2 738 | dev: true 739 | 740 | /defined/1.0.1: 741 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} 742 | dev: true 743 | 744 | /detective/5.2.1: 745 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 746 | engines: {node: '>=0.8.0'} 747 | hasBin: true 748 | dependencies: 749 | acorn-node: 1.8.2 750 | defined: 1.0.1 751 | minimist: 1.2.7 752 | dev: true 753 | 754 | /devalue/2.0.1: 755 | resolution: {integrity: sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q==} 756 | dev: true 757 | 758 | /didyoumean/1.2.2: 759 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 760 | dev: true 761 | 762 | /dlv/1.1.3: 763 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 764 | dev: true 765 | 766 | /dom-expressions/0.35.7_csstype@3.1.1: 767 | resolution: {integrity: sha512-55CgA7QKlHI9dNwNAztgD9pzfj30EabAvjGI0JQh26k9D+3lBTcPJ3bOm5MOEs2i/Wk1kDte1ar+tjHhCRu0LA==} 768 | peerDependencies: 769 | csstype: ^3.0 770 | dependencies: 771 | babel-plugin-transform-rename-import: 2.3.0 772 | csstype: 3.1.1 773 | devalue: 2.0.1 774 | dev: true 775 | 776 | /electron-to-chromium/1.4.284: 777 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 778 | dev: true 779 | 780 | /esbuild/0.16.10: 781 | resolution: {integrity: sha512-z5dIViHoVnw2l+NCJ3zj5behdXjYvXne9gL18OOivCadXDUhyDkeSvEtLcGVAJW2fNmh33TDUpsi704XYlDodw==} 782 | engines: {node: '>=12'} 783 | hasBin: true 784 | requiresBuild: true 785 | optionalDependencies: 786 | '@esbuild/android-arm': 0.16.10 787 | '@esbuild/android-arm64': 0.16.10 788 | '@esbuild/android-x64': 0.16.10 789 | '@esbuild/darwin-arm64': 0.16.10 790 | '@esbuild/darwin-x64': 0.16.10 791 | '@esbuild/freebsd-arm64': 0.16.10 792 | '@esbuild/freebsd-x64': 0.16.10 793 | '@esbuild/linux-arm': 0.16.10 794 | '@esbuild/linux-arm64': 0.16.10 795 | '@esbuild/linux-ia32': 0.16.10 796 | '@esbuild/linux-loong64': 0.16.10 797 | '@esbuild/linux-mips64el': 0.16.10 798 | '@esbuild/linux-ppc64': 0.16.10 799 | '@esbuild/linux-riscv64': 0.16.10 800 | '@esbuild/linux-s390x': 0.16.10 801 | '@esbuild/linux-x64': 0.16.10 802 | '@esbuild/netbsd-x64': 0.16.10 803 | '@esbuild/openbsd-x64': 0.16.10 804 | '@esbuild/sunos-x64': 0.16.10 805 | '@esbuild/win32-arm64': 0.16.10 806 | '@esbuild/win32-ia32': 0.16.10 807 | '@esbuild/win32-x64': 0.16.10 808 | dev: true 809 | 810 | /escalade/3.1.1: 811 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 812 | engines: {node: '>=6'} 813 | dev: true 814 | 815 | /escape-string-regexp/1.0.5: 816 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 817 | engines: {node: '>=0.8.0'} 818 | dev: true 819 | 820 | /fast-glob/3.2.12: 821 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 822 | engines: {node: '>=8.6.0'} 823 | dependencies: 824 | '@nodelib/fs.stat': 2.0.5 825 | '@nodelib/fs.walk': 1.2.8 826 | glob-parent: 5.1.2 827 | merge2: 1.4.1 828 | micromatch: 4.0.5 829 | dev: true 830 | 831 | /fastq/1.14.0: 832 | resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} 833 | dependencies: 834 | reusify: 1.0.4 835 | dev: true 836 | 837 | /fill-range/7.0.1: 838 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 839 | engines: {node: '>=8'} 840 | dependencies: 841 | to-regex-range: 5.0.1 842 | dev: true 843 | 844 | /fraction.js/4.2.0: 845 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 846 | dev: true 847 | 848 | /fsevents/2.3.2: 849 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 850 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 851 | os: [darwin] 852 | requiresBuild: true 853 | dev: true 854 | optional: true 855 | 856 | /function-bind/1.1.1: 857 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 858 | dev: true 859 | 860 | /gensync/1.0.0-beta.2: 861 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 862 | engines: {node: '>=6.9.0'} 863 | dev: true 864 | 865 | /glob-parent/5.1.2: 866 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 867 | engines: {node: '>= 6'} 868 | dependencies: 869 | is-glob: 4.0.3 870 | dev: true 871 | 872 | /glob-parent/6.0.2: 873 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 874 | engines: {node: '>=10.13.0'} 875 | dependencies: 876 | is-glob: 4.0.3 877 | dev: true 878 | 879 | /globals/11.12.0: 880 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 881 | engines: {node: '>=4'} 882 | dev: true 883 | 884 | /has-flag/3.0.0: 885 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 886 | engines: {node: '>=4'} 887 | dev: true 888 | 889 | /has/1.0.3: 890 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 891 | engines: {node: '>= 0.4.0'} 892 | dependencies: 893 | function-bind: 1.1.1 894 | dev: true 895 | 896 | /html-entities/2.3.2: 897 | resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} 898 | dev: true 899 | 900 | /is-binary-path/2.1.0: 901 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 902 | engines: {node: '>=8'} 903 | dependencies: 904 | binary-extensions: 2.2.0 905 | dev: true 906 | 907 | /is-core-module/2.11.0: 908 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 909 | dependencies: 910 | has: 1.0.3 911 | dev: true 912 | 913 | /is-extglob/2.1.1: 914 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 915 | engines: {node: '>=0.10.0'} 916 | dev: true 917 | 918 | /is-glob/4.0.3: 919 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 920 | engines: {node: '>=0.10.0'} 921 | dependencies: 922 | is-extglob: 2.1.1 923 | dev: true 924 | 925 | /is-number/7.0.0: 926 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 927 | engines: {node: '>=0.12.0'} 928 | dev: true 929 | 930 | /js-tokens/4.0.0: 931 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 932 | dev: true 933 | 934 | /jsesc/2.5.2: 935 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 936 | engines: {node: '>=4'} 937 | hasBin: true 938 | dev: true 939 | 940 | /json5/2.2.2: 941 | resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==} 942 | engines: {node: '>=6'} 943 | hasBin: true 944 | dev: true 945 | 946 | /kaboom/2000.2.10: 947 | resolution: {integrity: sha512-OHWdRuRMNkTkpO0/1R4ljS4+vpPtf6PvN+S0WTe+PkPB6Z61rmunw4SKTQDkrCt7dDzEIZTnK1G6s7rttd61Bw==} 948 | dev: false 949 | 950 | /lilconfig/2.0.6: 951 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 952 | engines: {node: '>=10'} 953 | dev: true 954 | 955 | /magic-string/0.27.0: 956 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 957 | engines: {node: '>=12'} 958 | dependencies: 959 | '@jridgewell/sourcemap-codec': 1.4.14 960 | dev: true 961 | 962 | /merge2/1.4.1: 963 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 964 | engines: {node: '>= 8'} 965 | dev: true 966 | 967 | /micromatch/4.0.5: 968 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 969 | engines: {node: '>=8.6'} 970 | dependencies: 971 | braces: 3.0.2 972 | picomatch: 2.3.1 973 | dev: true 974 | 975 | /minimist/1.2.7: 976 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 977 | dev: true 978 | 979 | /ms/2.1.2: 980 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 981 | dev: true 982 | 983 | /nanoid/3.3.4: 984 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 985 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 986 | hasBin: true 987 | dev: true 988 | 989 | /node-releases/2.0.8: 990 | resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} 991 | dev: true 992 | 993 | /normalize-path/3.0.0: 994 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 995 | engines: {node: '>=0.10.0'} 996 | dev: true 997 | 998 | /normalize-range/0.1.2: 999 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1000 | engines: {node: '>=0.10.0'} 1001 | dev: true 1002 | 1003 | /object-hash/3.0.0: 1004 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1005 | engines: {node: '>= 6'} 1006 | dev: true 1007 | 1008 | /path-parse/1.0.7: 1009 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1010 | dev: true 1011 | 1012 | /phenomenon/1.6.0: 1013 | resolution: {integrity: sha512-7h9/fjPD3qNlgggzm88cY58l9sudZ6Ey+UmZsizfhtawO6E3srZQXywaNm2lBwT72TbpHYRPy7ytIHeBUD/G0A==} 1014 | dev: false 1015 | 1016 | /picocolors/1.0.0: 1017 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1018 | dev: true 1019 | 1020 | /picomatch/2.3.1: 1021 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1022 | engines: {node: '>=8.6'} 1023 | dev: true 1024 | 1025 | /pify/2.3.0: 1026 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1027 | engines: {node: '>=0.10.0'} 1028 | dev: true 1029 | 1030 | /postcss-import/14.1.0_postcss@8.4.20: 1031 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 1032 | engines: {node: '>=10.0.0'} 1033 | peerDependencies: 1034 | postcss: ^8.0.0 1035 | dependencies: 1036 | postcss: 8.4.20 1037 | postcss-value-parser: 4.2.0 1038 | read-cache: 1.0.0 1039 | resolve: 1.22.1 1040 | dev: true 1041 | 1042 | /postcss-js/4.0.0_postcss@8.4.20: 1043 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 1044 | engines: {node: ^12 || ^14 || >= 16} 1045 | peerDependencies: 1046 | postcss: ^8.3.3 1047 | dependencies: 1048 | camelcase-css: 2.0.1 1049 | postcss: 8.4.20 1050 | dev: true 1051 | 1052 | /postcss-load-config/3.1.4_postcss@8.4.20: 1053 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1054 | engines: {node: '>= 10'} 1055 | peerDependencies: 1056 | postcss: '>=8.0.9' 1057 | ts-node: '>=9.0.0' 1058 | peerDependenciesMeta: 1059 | postcss: 1060 | optional: true 1061 | ts-node: 1062 | optional: true 1063 | dependencies: 1064 | lilconfig: 2.0.6 1065 | postcss: 8.4.20 1066 | yaml: 1.10.2 1067 | dev: true 1068 | 1069 | /postcss-nested/6.0.0_postcss@8.4.20: 1070 | resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} 1071 | engines: {node: '>=12.0'} 1072 | peerDependencies: 1073 | postcss: ^8.2.14 1074 | dependencies: 1075 | postcss: 8.4.20 1076 | postcss-selector-parser: 6.0.11 1077 | dev: true 1078 | 1079 | /postcss-selector-parser/6.0.11: 1080 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} 1081 | engines: {node: '>=4'} 1082 | dependencies: 1083 | cssesc: 3.0.0 1084 | util-deprecate: 1.0.2 1085 | dev: true 1086 | 1087 | /postcss-value-parser/4.2.0: 1088 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1089 | dev: true 1090 | 1091 | /postcss/8.4.20: 1092 | resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} 1093 | engines: {node: ^10 || ^12 || >=14} 1094 | dependencies: 1095 | nanoid: 3.3.4 1096 | picocolors: 1.0.0 1097 | source-map-js: 1.0.2 1098 | dev: true 1099 | 1100 | /powerglitch/2.3.2: 1101 | resolution: {integrity: sha512-nRKMttDRu0aOeu5/rUm0CFvwuaE3b7Klujjn0AIgoLUim0E2+4YpXZ76+2t9cJERQuFZ+7D36ywG7GLtRUSyMQ==} 1102 | dev: false 1103 | 1104 | /queue-microtask/1.2.3: 1105 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1106 | dev: true 1107 | 1108 | /quick-lru/5.1.1: 1109 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 1110 | engines: {node: '>=10'} 1111 | dev: true 1112 | 1113 | /read-cache/1.0.0: 1114 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1115 | dependencies: 1116 | pify: 2.3.0 1117 | dev: true 1118 | 1119 | /readdirp/3.6.0: 1120 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1121 | engines: {node: '>=8.10.0'} 1122 | dependencies: 1123 | picomatch: 2.3.1 1124 | dev: true 1125 | 1126 | /regenerator-runtime/0.13.11: 1127 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 1128 | dev: true 1129 | 1130 | /resolve/1.22.1: 1131 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1132 | hasBin: true 1133 | dependencies: 1134 | is-core-module: 2.11.0 1135 | path-parse: 1.0.7 1136 | supports-preserve-symlinks-flag: 1.0.0 1137 | dev: true 1138 | 1139 | /reusify/1.0.4: 1140 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1141 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1142 | dev: true 1143 | 1144 | /rollup/3.7.5: 1145 | resolution: {integrity: sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==} 1146 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1147 | hasBin: true 1148 | optionalDependencies: 1149 | fsevents: 2.3.2 1150 | dev: true 1151 | 1152 | /run-parallel/1.2.0: 1153 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1154 | dependencies: 1155 | queue-microtask: 1.2.3 1156 | dev: true 1157 | 1158 | /semver/6.3.0: 1159 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1160 | hasBin: true 1161 | dev: true 1162 | 1163 | /source-map-js/1.0.2: 1164 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1165 | engines: {node: '>=0.10.0'} 1166 | dev: true 1167 | 1168 | /source-map-support/0.5.21: 1169 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1170 | dependencies: 1171 | buffer-from: 1.1.2 1172 | source-map: 0.6.1 1173 | dev: true 1174 | 1175 | /source-map/0.6.1: 1176 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1177 | engines: {node: '>=0.10.0'} 1178 | dev: true 1179 | 1180 | /supports-color/5.5.0: 1181 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1182 | engines: {node: '>=4'} 1183 | dependencies: 1184 | has-flag: 3.0.0 1185 | dev: true 1186 | 1187 | /supports-preserve-symlinks-flag/1.0.0: 1188 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1189 | engines: {node: '>= 0.4'} 1190 | dev: true 1191 | 1192 | /systemjs/6.13.0: 1193 | resolution: {integrity: sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==} 1194 | dev: true 1195 | 1196 | /tailwindcss/3.2.4_postcss@8.4.20: 1197 | resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} 1198 | engines: {node: '>=12.13.0'} 1199 | hasBin: true 1200 | peerDependencies: 1201 | postcss: ^8.0.9 1202 | dependencies: 1203 | arg: 5.0.2 1204 | chokidar: 3.5.3 1205 | color-name: 1.1.4 1206 | detective: 5.2.1 1207 | didyoumean: 1.2.2 1208 | dlv: 1.1.3 1209 | fast-glob: 3.2.12 1210 | glob-parent: 6.0.2 1211 | is-glob: 4.0.3 1212 | lilconfig: 2.0.6 1213 | micromatch: 4.0.5 1214 | normalize-path: 3.0.0 1215 | object-hash: 3.0.0 1216 | picocolors: 1.0.0 1217 | postcss: 8.4.20 1218 | postcss-import: 14.1.0_postcss@8.4.20 1219 | postcss-js: 4.0.0_postcss@8.4.20 1220 | postcss-load-config: 3.1.4_postcss@8.4.20 1221 | postcss-nested: 6.0.0_postcss@8.4.20 1222 | postcss-selector-parser: 6.0.11 1223 | postcss-value-parser: 4.2.0 1224 | quick-lru: 5.1.1 1225 | resolve: 1.22.1 1226 | transitivePeerDependencies: 1227 | - ts-node 1228 | dev: true 1229 | 1230 | /terser/5.16.1: 1231 | resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} 1232 | engines: {node: '>=10'} 1233 | hasBin: true 1234 | dependencies: 1235 | '@jridgewell/source-map': 0.3.2 1236 | acorn: 8.8.1 1237 | commander: 2.20.3 1238 | source-map-support: 0.5.21 1239 | dev: true 1240 | 1241 | /to-fast-properties/2.0.0: 1242 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1243 | engines: {node: '>=4'} 1244 | dev: true 1245 | 1246 | /to-regex-range/5.0.1: 1247 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1248 | engines: {node: '>=8.0'} 1249 | dependencies: 1250 | is-number: 7.0.0 1251 | dev: true 1252 | 1253 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 1254 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 1255 | hasBin: true 1256 | peerDependencies: 1257 | browserslist: '>= 4.21.0' 1258 | dependencies: 1259 | browserslist: 4.21.4 1260 | escalade: 3.1.1 1261 | picocolors: 1.0.0 1262 | dev: true 1263 | 1264 | /util-deprecate/1.0.2: 1265 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1266 | dev: true 1267 | 1268 | /vite-plugin-babel/1.1.2_l5uoowfi6skwxxfmy3fnyxsoou: 1269 | resolution: {integrity: sha512-NPqUSzxzdPo1UyZGvL1KOIYy5R1T9+Af6cZ9Qw/f7tepjp6FSmx4SbK6eZ9xttEnSsdYj3IJmXwlU8PYeZstWw==} 1270 | peerDependencies: 1271 | '@babel/core': ^7.0.0 1272 | vite: ^2.7.0 || ^3.0.0 1273 | dependencies: 1274 | '@babel/core': 7.20.5 1275 | vite: 4.0.2_terser@5.16.1 1276 | dev: true 1277 | 1278 | /vite/4.0.2_terser@5.16.1: 1279 | resolution: {integrity: sha512-QJaY3R+tFlTagH0exVqbgkkw45B+/bXVBzF2ZD1KB5Z8RiAoiKo60vSUf6/r4c2Vh9jfGBKM4oBI9b4/1ZJYng==} 1280 | engines: {node: ^14.18.0 || >=16.0.0} 1281 | hasBin: true 1282 | peerDependencies: 1283 | '@types/node': '>= 14' 1284 | less: '*' 1285 | sass: '*' 1286 | stylus: '*' 1287 | sugarss: '*' 1288 | terser: ^5.4.0 1289 | peerDependenciesMeta: 1290 | '@types/node': 1291 | optional: true 1292 | less: 1293 | optional: true 1294 | sass: 1295 | optional: true 1296 | stylus: 1297 | optional: true 1298 | sugarss: 1299 | optional: true 1300 | terser: 1301 | optional: true 1302 | dependencies: 1303 | esbuild: 0.16.10 1304 | postcss: 8.4.20 1305 | resolve: 1.22.1 1306 | rollup: 3.7.5 1307 | terser: 5.16.1 1308 | optionalDependencies: 1309 | fsevents: 2.3.2 1310 | dev: true 1311 | 1312 | /xtend/4.0.2: 1313 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1314 | engines: {node: '>=0.4'} 1315 | dev: true 1316 | 1317 | /yaml/1.10.2: 1318 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1319 | engines: {node: '>= 6'} 1320 | dev: true 1321 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/barcode-blaster.json: -------------------------------------------------------------------------------- 1 | { "kill": false } 2 | -------------------------------------------------------------------------------- /public/capy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aidenybai/vhs/91efa15882989d7828216c93d3946660bf1c3062/public/capy.gif -------------------------------------------------------------------------------- /public/effect.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aidenybai/vhs/91efa15882989d7828216c93d3946660bf1c3062/public/effect.webm -------------------------------------------------------------------------------- /public/head.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aidenybai/vhs/91efa15882989d7828216c93d3946660bf1c3062/public/head.jpeg -------------------------------------------------------------------------------- /public/thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aidenybai/vhs/91efa15882989d7828216c93d3946660bf1c3062/public/thumb.png -------------------------------------------------------------------------------- /public/vcr.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aidenybai/vhs/91efa15882989d7828216c93d3946660bf1c3062/public/vcr.ttf -------------------------------------------------------------------------------- /src/404.jsx: -------------------------------------------------------------------------------- 1 | import { PowerGlitch } from 'powerglitch'; 2 | 3 | PowerGlitch.glitch('body'); -------------------------------------------------------------------------------- /src/data.jsx: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | 3 | export const data = { 4 | projects: [ 5 | { 6 | name: 'Million.js', 7 | description: ( 8 | 9 | Make React 70% Faster. The Virtual DOM Replacement For React{' '} 10 | 11 | 13.6k+ GitHub stars. 12 | 13 | 14 | ), 15 | link: 'https://million.dev', 16 | }, 17 | { 18 | name: 'Lucia.js', 19 | description: ( 20 | 21 | 3kb JavaScript library to augment HTML with JavaScript 22 | sprinkles.{' '} 23 | 24 | 700+ GitHub stars. 25 | 26 | 27 | ), 28 | link: 'https://lucia.js.org', 29 | }, 30 | { 31 | name: 'KBowl', 32 | description: ( 33 | 34 | Virtual Knowledge Bowl events for{' '} 35 | 36 | 30+ schools, 40+ teachers and 1k+ students. 37 | 38 | 39 | ), 40 | link: 'https://kbowl.aidenybai.com', 41 | }, 42 | ], 43 | work: [ 44 | { 45 | name: 'Dimension', 46 | description: ( 47 | 48 | Spring 2023 Software Engineering role, build fast user 49 | interfaces for open-source projects. 50 | 51 | ), 52 | link: 'https://dimension.dev', 53 | }, 54 | { 55 | name: 'Wyze Labs', 56 | description: ( 57 | 58 | Summer 2022 Software Engineering Internship, built web 59 | solutions for{' '} 60 | 61 | 3M+ users. 62 | 63 | 64 | ), 65 | link: 'https://wyze.com', 66 | }, 67 | { 68 | name: 'Remake', 69 | description: 70 | 'Summer 2021 Software Engineering Internship, refactored web framework performance.', 71 | link: 'https://remaketheweb.com', 72 | }, 73 | ], 74 | awards: [ 75 | { 76 | name: 'ACM SAC 2023', 77 | description: ( 78 | 79 | Published Million.js, with a{' '} 80 | 81 | <25% acceptance rate 82 | {' '} 83 | internationally (ranked{' '} 84 | 85 | Best Paper 86 | {' '} 87 | (top 2.5%)) 88 | 89 | ), 90 | link: 'https://www.sigapp.org/sac/sac2023/', 91 | }, 92 | { 93 | name: 'ISEF 2022', 94 | description: ( 95 | 96 | 97 | 3rd place 98 | {' '} 99 | in Systems Software with Million.js out of 1.8k+ 100 | finalists. 101 | 102 | ), 103 | link: 'https://www.societyforscience.org/press-release/regeneron-isef-full-awards-2022/#:~:text=SOFT037', 104 | }, 105 | { 106 | name: 'ISEF 2021', 107 | description: ( 108 | 109 | 110 | 2nd place 111 | {' '} 112 | in Systems Software with Lucia.js out of 1.8k+ 113 | finalists. 114 | 115 | ), 116 | link: 'https://www.societyforscience.org/press-release/2021-regeneron-isef-grand-awards/#:~:text=SOFT031', 117 | }, 118 | ], 119 | }; 120 | -------------------------------------------------------------------------------- /src/dvd.jsx: -------------------------------------------------------------------------------- 1 | export const runDvd = (dvd, cb) => { 2 | let x = 0; 3 | let y = 0; 4 | let dirX = 1; 5 | let dirY = 1; 6 | let speed = 4; 7 | const dvdWidth = dvd.clientWidth; 8 | const dvdHeight = dvd.clientHeight; 9 | dvd.addEventListener('mouseover', () => { 10 | speed += 0.25; 11 | }); 12 | 13 | function getNewRandomColor() { 14 | return `${Math.floor(Math.random() * (360 - 0 + 1) + 0)}deg`; 15 | } 16 | function animate() { 17 | const screenHeight = document.body.clientHeight; 18 | const screenWidth = document.body.clientWidth; 19 | 20 | if (y + dvdHeight >= screenHeight || y < 0) { 21 | dirY *= -1; 22 | dvd.style.filter = `hue-rotate(${getNewRandomColor()})`; 23 | cb(); 24 | } 25 | if (x + dvdWidth >= screenWidth || x < 0) { 26 | dirX *= -1; 27 | dvd.style.filter = `hue-rotate(${getNewRandomColor()})`; 28 | cb(); 29 | } 30 | x += dirX * speed; 31 | y += dirY * speed; 32 | dvd.style.animation = `spin ${16 / speed}s linear infinite`; 33 | dvd.style.left = `${x}px`; 34 | dvd.style.top = `${y}px`; 35 | window.requestAnimationFrame(animate); 36 | } 37 | 38 | window.requestAnimationFrame(animate); 39 | }; 40 | -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | 3 | import { data } from './data.jsx'; 4 | import { runDvd } from './dvd.jsx'; 5 | import { PowerGlitch } from 'powerglitch'; 6 | 7 | const root = document.getElementById('root'); 8 | const REDUCE_MOTION = window.matchMedia( 9 | '(prefers-reduced-motion: reduce)' 10 | ).matches; 11 | const audio = new Audio('/effect.webm'); 12 | 13 | let timerInterval; 14 | const createTimer = (timer, progress) => { 15 | const reformat = (num) => `0${num}`.slice(-2); 16 | let time = 0; 17 | 18 | timerInterval = setInterval(() => { 19 | time += 1; 20 | const hours = Math.floor(time / 3600); 21 | const minutes = reformat(Math.floor((time % 3600) / 60)); 22 | const seconds = reformat(Math.floor(time % 60)); 23 | 24 | let payload = `${hours}:${minutes}:${seconds}`; 25 | 26 | if (progress) { 27 | let baseProgress = '-------'.split(''); 28 | baseProgress[time % 7] = '█'; 29 | payload = `●${baseProgress.join('')}● ${payload}`; 30 | } 31 | 32 | timer.textContent = payload; 33 | }, 1000); 34 | }; 35 | const createSpinner = (spinner, eject) => { 36 | const time = ['|', '/', '-', '\\']; 37 | let i = 0; 38 | 39 | setInterval(() => { 40 | i += 1; 41 | 42 | let payload = `${time[i % time.length]}`; 43 | if (eject) payload += ' EJECT ⏏'; 44 | spinner.textContent = payload; 45 | }, 1); 46 | }; 47 | 48 | const Link = (props) => { 49 | return ( 50 | 54 | {props.children} 55 | 56 | ); 57 | }; 58 | 59 | const Header = () => { 60 | return ( 61 |
62 |

63 | Headshot 70 | aiden bai 71 |

72 |

73 | i'm building Same to 74 | allow anyone to build fullstack web apps by prompting. 75 |

76 |

77 | if you want to work with me, check out our{' '} 78 | about us. 79 |

80 |

81 | my background is in growing developer tools. previously, 82 | i created{' '} 83 | 84 | Million.js 85 | {' '} 86 | when i was 16{' '} 87 | 88 | (video) 89 | {' '} 90 | and later made{' '} 91 | 92 | React Scan 93 | 94 | . these projects have a combined total of 40k+ stars on 95 | github. 96 |

97 | {/*

98 | I used to skip lectures go to the  99 | 100 | University of Washington 101 | 102 |  but I got bored lol 103 |

104 |

105 | For fun, I like chugging{' '} 106 | 107 | fruit tea boba 108 | 109 | , giggling over capybaras ʕ•ᴥ•ʔ, and fishing in{' '} 110 | 111 | Stardew Valley 112 | 113 | . 114 |

*/} 115 |

116 | connect with me on{' '} 117 | twitter,{' '} 118 | github,{' '} 119 | 120 | linkedin 121 | 122 | , or at{' '} 123 | aiden@million.dev! 124 |

125 | {/*

126 | Want to reach out?{' '} 127 | 128 | Say hello! 129 | 130 |

*/} 131 |
132 | ); 133 | }; 134 | 135 | const Stats = () => { 136 | return ( 137 |
138 |
139 |
140 | Projects 141 |
142 |
143 | {data.projects.map(({ name, description, link }) => ( 144 |
145 |

146 | {name} 147 |

{' '} 148 |

{description}

149 |
150 | ))} 151 |
152 |
153 | 154 |
155 |
156 | Work 157 |
158 |
159 | {data.work.map(({ name, description, link }) => ( 160 |
161 |

162 | {name} 163 |

{' '} 164 |

{description}

165 |
166 | ))} 167 |
168 |
169 | 170 |
171 |
172 | Awards 173 |
174 |
175 | {data.awards.map(({ name, description, link }) => ( 176 |
177 |

178 | {name} 179 |

{' '} 180 |

{description}

181 |
182 | ))} 183 |
184 |
185 |
186 | ); 187 | }; 188 | 189 | const Footer = () => { 190 | return ( 191 | 211 | ); 212 | }; 213 | 214 | const Content = () => { 215 | const timer = ( 216 |

217 | 0:00:00 218 |

219 | ); 220 | createTimer(timer, true); 221 | 222 | const spinner = ( 223 |

224 | | 225 |

226 | ); 227 | 228 | createSpinner(spinner, !REDUCE_MOTION); 229 | 230 | if (!REDUCE_MOTION) { 231 | let count = 0; 232 | spinner.addEventListener('click', () => { 233 | audio.cloneNode(true).play(); 234 | document.body.className = 235 | 'bg-black text-white font-mono flex items-center justify-center h-screen overflow-hidden'; 236 | PowerGlitch.glitch('#root', { 237 | glitchTimeSpan: false, 238 | }); 239 | 240 | const spinner = |; 241 | createSpinner(spinner); 242 | 243 | setTimeout(() => { 244 | document.body.textContent = ''; 245 | document.body.style.overflow = 'hidden'; 246 | const dvd = ( 247 | 248 | ); 249 | const display = {String(count)}; 250 | const reload = ( 251 | 252 | ); 253 | reload.addEventListener('click', () => { 254 | audio.cloneNode(true).play(); 255 | setTimeout(() => { 256 | location.reload(); 257 | }, 1000); 258 | }); 259 | document.body.appendChild( 260 |
261 | {dvd} 262 |

263 | {spinner} 264 | {display} EJECTED 265 |

266 |

267 | I guess the sooner we come to terms with our{' '} 268 | 269 | 270 | mortality 271 | 272 | 273 | , the more time we can spend really living in the 274 | here-and-now. 275 |

276 |

{reload}

277 |
278 | ); 279 | runDvd(dvd, () => { 280 | count++; 281 | display.textContent = String(count); 282 | }); 283 | }, 1000); 284 | }); 285 | } 286 | 287 | return ( 288 | 298 | ); 299 | }; 300 | 301 | const vcr = document.getElementById('vcr'); 302 | const content = ; 303 | 304 | if (!REDUCE_MOTION) { 305 | const timer =

0:00:00

; 306 | createTimer(timer); 307 | document.getElementById('marker').appendChild(timer); 308 | 309 | const glitch0 = PowerGlitch.glitch('.overlay', { 310 | glitchTimeSpan: false, 311 | }); 312 | const glitch1 = PowerGlitch.glitch('.glitch', { 313 | timing: { 314 | duration: 700, 315 | easing: 'ease-in-out', 316 | }, 317 | }); 318 | let init = false; 319 | setTimeout(() => { 320 | if (!init) { 321 | document.getElementById('reminder').style.opacity = 1; 322 | } 323 | glitch0.stopGlitch(); 324 | }, 1000); 325 | const start = () => { 326 | if (init) return; 327 | audio.cloneNode(true).play(); 328 | init = true; 329 | glitch1.stopGlitch(); 330 | const glitch2 = PowerGlitch.glitch('.glitch', { 331 | glitchTimeSpan: false, 332 | }); 333 | clearInterval(timerInterval); 334 | vcr.style.opacity = 0; 335 | setTimeout(() => { 336 | document.body.style.overflow = 'auto'; 337 | glitch2.stopGlitch(); 338 | vcr.style.display = 'none'; 339 | }, 1000); 340 | content.style.display = 'flex'; 341 | }; 342 | document.addEventListener('click', start); 343 | } else { 344 | vcr.style.display = 'none'; 345 | content.style.display = 'flex'; 346 | document.body.style.overflow = 'auto'; 347 | } 348 | root.appendChild(content); 349 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @font-face { 6 | font-family: 'VCR'; 7 | src: url(/vcr.ttf) format('truetype'); 8 | } 9 | 10 | :root { 11 | font-family: 'Lora', serif; 12 | } 13 | 14 | .ascii { 15 | margin-bottom: 0; 16 | padding: 0; 17 | white-space: pre; 18 | font-weight: 700; 19 | font-family: monospace; 20 | } 21 | 22 | .dvd { 23 | position: absolute; 24 | left: 0px; 25 | top: 0px; 26 | height: 200px; 27 | width: 200px; 28 | background-repeat: no-repeat; 29 | background-size: 75px; 30 | background-position: center; 31 | } 32 | 33 | strike { 34 | text-decoration: line-through; 35 | opacity: 0.5; 36 | } 37 | 38 | @-moz-keyframes spin { 39 | from { 40 | -moz-transform: rotate(0deg); 41 | } 42 | to { 43 | -moz-transform: rotate(360deg); 44 | } 45 | } 46 | @-webkit-keyframes spin { 47 | from { 48 | -webkit-transform: rotate(0deg); 49 | } 50 | to { 51 | -webkit-transform: rotate(360deg); 52 | } 53 | } 54 | @keyframes spin { 55 | from { 56 | transform: rotate(0deg); 57 | } 58 | to { 59 | transform: rotate(360deg); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./*.html', './src/**/*.{js,ts,jsx,tsx}'], 4 | theme: { 5 | fontFamily: { 6 | mono: ['VCR'], 7 | }, 8 | }, 9 | plugins: [], 10 | }; 11 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "cleanUrls": true, 3 | "github": { 4 | "silent": true 5 | }, 6 | "redirects": [ 7 | { 8 | "source": "/work/million-js", 9 | "destination": "https://millionjs.org/research", 10 | "permanent": true 11 | }, 12 | { 13 | "source": "/thoughts/virtual-dom", 14 | "destination": "https://site-mini.vercel.app/thoughts/virtual-dom", 15 | "permanent": true 16 | }, 17 | { 18 | "source": "/thoughts/isef", 19 | "destination": "https://site-mini.vercel.app/thoughts/isef", 20 | "permanent": true 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import babel from 'vite-plugin-babel'; 3 | import legacy from '@vitejs/plugin-legacy'; 4 | 5 | export default defineConfig({ 6 | resolve: { 7 | alias: { 8 | dom: './jsx-runtime.js', 9 | }, 10 | }, 11 | build: { 12 | outDir: 'dist', 13 | rollupOptions: { 14 | input: { 15 | index: new URL('./index.html', import.meta.url).pathname, 16 | '404': new URL('./404.html', import.meta.url).pathname, 17 | }, 18 | }, 19 | }, 20 | plugins: [ 21 | babel({ 22 | babelConfig: { 23 | babelrc: false, 24 | configFile: false, 25 | plugins: ['babel-plugin-jsx-dom-expressions'], 26 | }, 27 | }), 28 | legacy({ 29 | targets: ['defaults', 'not IE 11'], 30 | }), 31 | ], 32 | }); 33 | --------------------------------------------------------------------------------