wip: Custom mirroring tangled knot written in Rust
rust tangled mirror knot
1

Configure Feed

Select the types of activity you want to include in your feed.

app: init

Clément (Jun 8, 2026, 11:30 AM +0200) caca665b 6638a7ec

+2288 -2
+6
.gitignore
··· 1 1 target 2 + dist 3 + node_modules 4 + 2 5 .direnv 3 6 .envrc 4 7 .claude ··· 7 10 .jetbrains 8 11 9 12 *.key 13 + 14 + .env 15 + .env*.local
+46 -1
Cargo.lock
··· 2135 2135 "jacquard", 2136 2136 "jacquard-axum", 2137 2137 "k256", 2138 + "knotty-web", 2138 2139 "miette", 2139 2140 "multibase", 2140 2141 "rand 0.8.6", ··· 2144 2145 "tower-http", 2145 2146 "tracing", 2146 2147 "tracing-subscriber", 2148 + ] 2149 + 2150 + [[package]] 2151 + name = "knotty-web" 2152 + version = "0.0.0" 2153 + dependencies = [ 2154 + "axum", 2155 + "mime_guess", 2156 + "rust-embed", 2157 + "tracing", 2147 2158 ] 2148 2159 2149 2160 [[package]] ··· 3215 3226 ] 3216 3227 3217 3228 [[package]] 3229 + name = "rust-embed" 3230 + version = "8.11.0" 3231 + source = "registry+https://github.com/rust-lang/crates.io-index" 3232 + checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" 3233 + dependencies = [ 3234 + "rust-embed-impl", 3235 + "rust-embed-utils", 3236 + "walkdir", 3237 + ] 3238 + 3239 + [[package]] 3240 + name = "rust-embed-impl" 3241 + version = "8.11.0" 3242 + source = "registry+https://github.com/rust-lang/crates.io-index" 3243 + checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" 3244 + dependencies = [ 3245 + "proc-macro2", 3246 + "quote", 3247 + "rust-embed-utils", 3248 + "syn", 3249 + "walkdir", 3250 + ] 3251 + 3252 + [[package]] 3253 + name = "rust-embed-utils" 3254 + version = "8.11.0" 3255 + source = "registry+https://github.com/rust-lang/crates.io-index" 3256 + checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" 3257 + dependencies = [ 3258 + "sha2", 3259 + "walkdir", 3260 + ] 3261 + 3262 + [[package]] 3218 3263 name = "rustc-demangle" 3219 3264 version = "0.1.27" 3220 3265 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3773 3818 checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" 3774 3819 dependencies = [ 3775 3820 "rustix", 3776 - "windows-sys 0.60.2", 3821 + "windows-sys 0.61.2", 3777 3822 ] 3778 3823 3779 3824 [[package]]
+3 -1
Cargo.toml
··· 13 13 jacquard = "0.11" 14 14 jacquard-axum = { version = "0.11", features = ["service-auth"] } 15 15 k256 = { version = "0.13", features = ["ecdsa"] } 16 + miette = { version = "7.6", features = ["fancy"] } 17 + mime_guess = "2.0.5" 16 18 multibase = "0.9" 17 19 rand = "0.8" 18 - miette = { version = "7.6", features = ["fancy"] } 20 + rust-embed = "8.11.0" 19 21 serde = { version = "1.0", features = ["derive"] } 20 22 serde_json = "1.0" 21 23 tokio = { version = "1.52", features = ["rt", "macros", "rt-multi-thread"] }
+23
package.json
··· 1 + { 2 + "name": "knotty", 3 + "private": true, 4 + "scripts": { 5 + "check": "pnpm -r check", 6 + "lint": "pnpm -r lint", 7 + "format": "pnpm -r format", 8 + "format:check": "pnpm -r format:check" 9 + }, 10 + "devDependencies": {}, 11 + "devEngines": { 12 + "runtime": { 13 + "name": "node", 14 + "version": "26.3.0", 15 + "onFail": "download" 16 + }, 17 + "packageManager": { 18 + "name": "pnpm", 19 + "version": "11.5.1", 20 + "onFail": "download" 21 + } 22 + } 23 + }
+2054
pnpm-lock.yaml
··· 1 + --- 2 + lockfileVersion: '9.0' 3 + 4 + importers: 5 + 6 + .: 7 + configDependencies: {} 8 + packageManagerDependencies: 9 + '@pnpm/exe': 10 + specifier: 11.5.1 11 + version: 11.5.1 12 + pnpm: 13 + specifier: 11.5.1 14 + version: 11.5.1 15 + 16 + packages: 17 + 18 + '@pnpm/exe@11.5.1': 19 + resolution: {integrity: sha512-UH5dWIht4V1FBUM/Y6Lwut+AimQIBefhNHkclQ0vxCj4qJlzPovKmPC49WWJaopWAoSadHi5TohVqXfOvvsYhQ==} 20 + hasBin: true 21 + 22 + '@pnpm/linux-arm64@11.5.1': 23 + resolution: {integrity: sha512-7j+um8H3kXwZe4sYJMzdgt+ajyPtUm6eK6BthEhzB/cvCdMNfJQvqlYDj2EyO/Zov7mnwUfd3nFQ5W9mBlfRAA==} 24 + cpu: [arm64] 25 + os: [linux] 26 + 27 + '@pnpm/linux-x64@11.5.1': 28 + resolution: {integrity: sha512-D9M2S3NnuojA2d20Aq1mu6p+zMICRJLWqLniGEJpvsJEfaduSkzsiJxJH9aS2EcCL1SBCYMaaCtBR04la3Xmgg==} 29 + cpu: [x64] 30 + os: [linux] 31 + 32 + '@pnpm/linuxstatic-arm64@11.5.1': 33 + resolution: {integrity: sha512-+DlBaIF2rns4bGYn9U15Ggy0OgJO8BqsXO3FgsYbm4ba+MVIWFBZwNQylkaxecIMg7Wwf4jhK2n7soGR4Kg8AQ==} 34 + cpu: [arm64] 35 + os: [linux] 36 + libc: [musl] 37 + 38 + '@pnpm/linuxstatic-x64@11.5.1': 39 + resolution: {integrity: sha512-g6G/KfMCswtC61io9uX/6X2LV+eF3HbJYbVrqA9XamLxyMeubPFEu8+BpNbsYOS2Sk/VGstrELkj0WCRJTaDHA==} 40 + cpu: [x64] 41 + os: [linux] 42 + libc: [musl] 43 + 44 + '@pnpm/macos-arm64@11.5.1': 45 + resolution: {integrity: sha512-mqkut3yCUMhh0MjwDAmBUQyFOi5LOzOxYjmLHqqWX3nTiJ6asJDyjAMRL//kU4T3yQq1ggRehEyWvHcXzThH6A==} 46 + cpu: [arm64] 47 + os: [darwin] 48 + 49 + '@pnpm/win-arm64@11.5.1': 50 + resolution: {integrity: sha512-FFKV7aMWx6o/2hd8GiSieVzVltXHjG1wtvEhoJfatsTfGri+UYI6DPlKn6Pg7tDwXEQB8V7vX+4ibjHBmW+fkg==} 51 + cpu: [arm64] 52 + os: [win32] 53 + 54 + '@pnpm/win-x64@11.5.1': 55 + resolution: {integrity: sha512-8iQQLZk4iydo7dw32hjuHrVuSXTf9gRgzHHQ4+Z8H6jLWKSkeXxqt2KhOTrAP2fbD+9AwZEeoCsQ8Xz2WPCqrA==} 56 + cpu: [x64] 57 + os: [win32] 58 + 59 + '@reflink/reflink-darwin-arm64@0.1.19': 60 + resolution: {integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==} 61 + engines: {node: '>= 10'} 62 + cpu: [arm64] 63 + os: [darwin] 64 + 65 + '@reflink/reflink-darwin-x64@0.1.19': 66 + resolution: {integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==} 67 + engines: {node: '>= 10'} 68 + cpu: [x64] 69 + os: [darwin] 70 + 71 + '@reflink/reflink-linux-arm64-gnu@0.1.19': 72 + resolution: {integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==} 73 + engines: {node: '>= 10'} 74 + cpu: [arm64] 75 + os: [linux] 76 + libc: [glibc] 77 + 78 + '@reflink/reflink-linux-arm64-musl@0.1.19': 79 + resolution: {integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==} 80 + engines: {node: '>= 10'} 81 + cpu: [arm64] 82 + os: [linux] 83 + libc: [musl] 84 + 85 + '@reflink/reflink-linux-x64-gnu@0.1.19': 86 + resolution: {integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==} 87 + engines: {node: '>= 10'} 88 + cpu: [x64] 89 + os: [linux] 90 + libc: [glibc] 91 + 92 + '@reflink/reflink-linux-x64-musl@0.1.19': 93 + resolution: {integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==} 94 + engines: {node: '>= 10'} 95 + cpu: [x64] 96 + os: [linux] 97 + libc: [musl] 98 + 99 + '@reflink/reflink-win32-arm64-msvc@0.1.19': 100 + resolution: {integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==} 101 + engines: {node: '>= 10'} 102 + cpu: [arm64] 103 + os: [win32] 104 + 105 + '@reflink/reflink-win32-x64-msvc@0.1.19': 106 + resolution: {integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==} 107 + engines: {node: '>= 10'} 108 + cpu: [x64] 109 + os: [win32] 110 + 111 + '@reflink/reflink@0.1.19': 112 + resolution: {integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==} 113 + engines: {node: '>= 10'} 114 + 115 + detect-libc@2.1.2: 116 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 117 + engines: {node: '>=8'} 118 + 119 + pnpm@11.5.1: 120 + resolution: {integrity: sha512-k/e1dCLqcGglcjW0wW62B2LraOHcI3IxmcxzkEPqm+LEFDJ0o5nYxt76KxF2Im2cocS2NILWIAwaj7qnjB0UhQ==} 121 + engines: {node: '>=22.13'} 122 + hasBin: true 123 + 124 + snapshots: 125 + 126 + '@pnpm/exe@11.5.1': 127 + dependencies: 128 + '@reflink/reflink': 0.1.19 129 + detect-libc: 2.1.2 130 + optionalDependencies: 131 + '@pnpm/linux-arm64': 11.5.1 132 + '@pnpm/linux-x64': 11.5.1 133 + '@pnpm/linuxstatic-arm64': 11.5.1 134 + '@pnpm/linuxstatic-x64': 11.5.1 135 + '@pnpm/macos-arm64': 11.5.1 136 + '@pnpm/win-arm64': 11.5.1 137 + '@pnpm/win-x64': 11.5.1 138 + 139 + '@pnpm/linux-arm64@11.5.1': 140 + optional: true 141 + 142 + '@pnpm/linux-x64@11.5.1': 143 + optional: true 144 + 145 + '@pnpm/linuxstatic-arm64@11.5.1': 146 + optional: true 147 + 148 + '@pnpm/linuxstatic-x64@11.5.1': 149 + optional: true 150 + 151 + '@pnpm/macos-arm64@11.5.1': 152 + optional: true 153 + 154 + '@pnpm/win-arm64@11.5.1': 155 + optional: true 156 + 157 + '@pnpm/win-x64@11.5.1': 158 + optional: true 159 + 160 + '@reflink/reflink-darwin-arm64@0.1.19': 161 + optional: true 162 + 163 + '@reflink/reflink-darwin-x64@0.1.19': 164 + optional: true 165 + 166 + '@reflink/reflink-linux-arm64-gnu@0.1.19': 167 + optional: true 168 + 169 + '@reflink/reflink-linux-arm64-musl@0.1.19': 170 + optional: true 171 + 172 + '@reflink/reflink-linux-x64-gnu@0.1.19': 173 + optional: true 174 + 175 + '@reflink/reflink-linux-x64-musl@0.1.19': 176 + optional: true 177 + 178 + '@reflink/reflink-win32-arm64-msvc@0.1.19': 179 + optional: true 180 + 181 + '@reflink/reflink-win32-x64-msvc@0.1.19': 182 + optional: true 183 + 184 + '@reflink/reflink@0.1.19': 185 + optionalDependencies: 186 + '@reflink/reflink-darwin-arm64': 0.1.19 187 + '@reflink/reflink-darwin-x64': 0.1.19 188 + '@reflink/reflink-linux-arm64-gnu': 0.1.19 189 + '@reflink/reflink-linux-arm64-musl': 0.1.19 190 + '@reflink/reflink-linux-x64-gnu': 0.1.19 191 + '@reflink/reflink-linux-x64-musl': 0.1.19 192 + '@reflink/reflink-win32-arm64-msvc': 0.1.19 193 + '@reflink/reflink-win32-x64-msvc': 0.1.19 194 + 195 + detect-libc@2.1.2: {} 196 + 197 + pnpm@11.5.1: {} 198 + 199 + --- 200 + lockfileVersion: '9.0' 201 + 202 + settings: 203 + autoInstallPeers: true 204 + excludeLinksFromLockfile: false 205 + 206 + importers: 207 + 208 + .: 209 + devDependencies: 210 + node: 211 + specifier: runtime:26.3.0 212 + version: runtime:26.3.0 213 + 214 + app: 215 + dependencies: 216 + solid-js: 217 + specifier: ^1.9.5 218 + version: 1.9.13 219 + devDependencies: 220 + '@tailwindcss/vite': 221 + specifier: ^4.3.0 222 + version: 4.3.0(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)) 223 + solid-devtools: 224 + specifier: ^0.34.3 225 + version: 0.34.5(solid-js@1.9.13)(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)) 226 + tailwindcss: 227 + specifier: ^4.1.13 228 + version: 4.3.0 229 + typescript: 230 + specifier: ^5.9.2 231 + version: 5.9.3 232 + vite: 233 + specifier: ^7.1.4 234 + version: 7.3.5(jiti@2.7.0)(lightningcss@1.32.0) 235 + vite-plugin-solid: 236 + specifier: ^2.11.8 237 + version: 2.11.12(solid-js@1.9.13)(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)) 238 + 239 + packages: 240 + 241 + '@babel/code-frame@7.29.7': 242 + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} 243 + engines: {node: '>=6.9.0'} 244 + 245 + '@babel/compat-data@7.29.7': 246 + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} 247 + engines: {node: '>=6.9.0'} 248 + 249 + '@babel/core@7.29.7': 250 + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} 251 + engines: {node: '>=6.9.0'} 252 + 253 + '@babel/generator@7.29.7': 254 + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} 255 + engines: {node: '>=6.9.0'} 256 + 257 + '@babel/helper-compilation-targets@7.29.7': 258 + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} 259 + engines: {node: '>=6.9.0'} 260 + 261 + '@babel/helper-globals@7.29.7': 262 + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} 263 + engines: {node: '>=6.9.0'} 264 + 265 + '@babel/helper-module-imports@7.18.6': 266 + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 267 + engines: {node: '>=6.9.0'} 268 + 269 + '@babel/helper-module-imports@7.29.7': 270 + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} 271 + engines: {node: '>=6.9.0'} 272 + 273 + '@babel/helper-module-transforms@7.29.7': 274 + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} 275 + engines: {node: '>=6.9.0'} 276 + peerDependencies: 277 + '@babel/core': ^7.0.0 278 + 279 + '@babel/helper-plugin-utils@7.29.7': 280 + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} 281 + engines: {node: '>=6.9.0'} 282 + 283 + '@babel/helper-string-parser@7.29.7': 284 + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} 285 + engines: {node: '>=6.9.0'} 286 + 287 + '@babel/helper-validator-identifier@7.29.7': 288 + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} 289 + engines: {node: '>=6.9.0'} 290 + 291 + '@babel/helper-validator-option@7.29.7': 292 + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} 293 + engines: {node: '>=6.9.0'} 294 + 295 + '@babel/helpers@7.29.7': 296 + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} 297 + engines: {node: '>=6.9.0'} 298 + 299 + '@babel/parser@7.29.7': 300 + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} 301 + engines: {node: '>=6.0.0'} 302 + hasBin: true 303 + 304 + '@babel/plugin-syntax-jsx@7.29.7': 305 + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} 306 + engines: {node: '>=6.9.0'} 307 + peerDependencies: 308 + '@babel/core': ^7.0.0-0 309 + 310 + '@babel/plugin-syntax-typescript@7.29.7': 311 + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} 312 + engines: {node: '>=6.9.0'} 313 + peerDependencies: 314 + '@babel/core': ^7.0.0-0 315 + 316 + '@babel/template@7.29.7': 317 + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} 318 + engines: {node: '>=6.9.0'} 319 + 320 + '@babel/traverse@7.29.7': 321 + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} 322 + engines: {node: '>=6.9.0'} 323 + 324 + '@babel/types@7.29.7': 325 + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} 326 + engines: {node: '>=6.9.0'} 327 + 328 + '@esbuild/aix-ppc64@0.27.7': 329 + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} 330 + engines: {node: '>=18'} 331 + cpu: [ppc64] 332 + os: [aix] 333 + 334 + '@esbuild/android-arm64@0.27.7': 335 + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} 336 + engines: {node: '>=18'} 337 + cpu: [arm64] 338 + os: [android] 339 + 340 + '@esbuild/android-arm@0.27.7': 341 + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} 342 + engines: {node: '>=18'} 343 + cpu: [arm] 344 + os: [android] 345 + 346 + '@esbuild/android-x64@0.27.7': 347 + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} 348 + engines: {node: '>=18'} 349 + cpu: [x64] 350 + os: [android] 351 + 352 + '@esbuild/darwin-arm64@0.27.7': 353 + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} 354 + engines: {node: '>=18'} 355 + cpu: [arm64] 356 + os: [darwin] 357 + 358 + '@esbuild/darwin-x64@0.27.7': 359 + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} 360 + engines: {node: '>=18'} 361 + cpu: [x64] 362 + os: [darwin] 363 + 364 + '@esbuild/freebsd-arm64@0.27.7': 365 + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} 366 + engines: {node: '>=18'} 367 + cpu: [arm64] 368 + os: [freebsd] 369 + 370 + '@esbuild/freebsd-x64@0.27.7': 371 + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} 372 + engines: {node: '>=18'} 373 + cpu: [x64] 374 + os: [freebsd] 375 + 376 + '@esbuild/linux-arm64@0.27.7': 377 + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} 378 + engines: {node: '>=18'} 379 + cpu: [arm64] 380 + os: [linux] 381 + 382 + '@esbuild/linux-arm@0.27.7': 383 + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} 384 + engines: {node: '>=18'} 385 + cpu: [arm] 386 + os: [linux] 387 + 388 + '@esbuild/linux-ia32@0.27.7': 389 + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} 390 + engines: {node: '>=18'} 391 + cpu: [ia32] 392 + os: [linux] 393 + 394 + '@esbuild/linux-loong64@0.27.7': 395 + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} 396 + engines: {node: '>=18'} 397 + cpu: [loong64] 398 + os: [linux] 399 + 400 + '@esbuild/linux-mips64el@0.27.7': 401 + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} 402 + engines: {node: '>=18'} 403 + cpu: [mips64el] 404 + os: [linux] 405 + 406 + '@esbuild/linux-ppc64@0.27.7': 407 + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} 408 + engines: {node: '>=18'} 409 + cpu: [ppc64] 410 + os: [linux] 411 + 412 + '@esbuild/linux-riscv64@0.27.7': 413 + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} 414 + engines: {node: '>=18'} 415 + cpu: [riscv64] 416 + os: [linux] 417 + 418 + '@esbuild/linux-s390x@0.27.7': 419 + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} 420 + engines: {node: '>=18'} 421 + cpu: [s390x] 422 + os: [linux] 423 + 424 + '@esbuild/linux-x64@0.27.7': 425 + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} 426 + engines: {node: '>=18'} 427 + cpu: [x64] 428 + os: [linux] 429 + 430 + '@esbuild/netbsd-arm64@0.27.7': 431 + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} 432 + engines: {node: '>=18'} 433 + cpu: [arm64] 434 + os: [netbsd] 435 + 436 + '@esbuild/netbsd-x64@0.27.7': 437 + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} 438 + engines: {node: '>=18'} 439 + cpu: [x64] 440 + os: [netbsd] 441 + 442 + '@esbuild/openbsd-arm64@0.27.7': 443 + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} 444 + engines: {node: '>=18'} 445 + cpu: [arm64] 446 + os: [openbsd] 447 + 448 + '@esbuild/openbsd-x64@0.27.7': 449 + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} 450 + engines: {node: '>=18'} 451 + cpu: [x64] 452 + os: [openbsd] 453 + 454 + '@esbuild/openharmony-arm64@0.27.7': 455 + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} 456 + engines: {node: '>=18'} 457 + cpu: [arm64] 458 + os: [openharmony] 459 + 460 + '@esbuild/sunos-x64@0.27.7': 461 + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} 462 + engines: {node: '>=18'} 463 + cpu: [x64] 464 + os: [sunos] 465 + 466 + '@esbuild/win32-arm64@0.27.7': 467 + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} 468 + engines: {node: '>=18'} 469 + cpu: [arm64] 470 + os: [win32] 471 + 472 + '@esbuild/win32-ia32@0.27.7': 473 + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} 474 + engines: {node: '>=18'} 475 + cpu: [ia32] 476 + os: [win32] 477 + 478 + '@esbuild/win32-x64@0.27.7': 479 + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} 480 + engines: {node: '>=18'} 481 + cpu: [x64] 482 + os: [win32] 483 + 484 + '@jridgewell/gen-mapping@0.3.13': 485 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 486 + 487 + '@jridgewell/remapping@2.3.5': 488 + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} 489 + 490 + '@jridgewell/resolve-uri@3.1.2': 491 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 492 + engines: {node: '>=6.0.0'} 493 + 494 + '@jridgewell/sourcemap-codec@1.5.5': 495 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 496 + 497 + '@jridgewell/trace-mapping@0.3.31': 498 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 499 + 500 + '@nothing-but/utils@0.17.0': 501 + resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==} 502 + 503 + '@rollup/rollup-android-arm-eabi@4.61.1': 504 + resolution: {integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==} 505 + cpu: [arm] 506 + os: [android] 507 + 508 + '@rollup/rollup-android-arm64@4.61.1': 509 + resolution: {integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==} 510 + cpu: [arm64] 511 + os: [android] 512 + 513 + '@rollup/rollup-darwin-arm64@4.61.1': 514 + resolution: {integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==} 515 + cpu: [arm64] 516 + os: [darwin] 517 + 518 + '@rollup/rollup-darwin-x64@4.61.1': 519 + resolution: {integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==} 520 + cpu: [x64] 521 + os: [darwin] 522 + 523 + '@rollup/rollup-freebsd-arm64@4.61.1': 524 + resolution: {integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==} 525 + cpu: [arm64] 526 + os: [freebsd] 527 + 528 + '@rollup/rollup-freebsd-x64@4.61.1': 529 + resolution: {integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==} 530 + cpu: [x64] 531 + os: [freebsd] 532 + 533 + '@rollup/rollup-linux-arm-gnueabihf@4.61.1': 534 + resolution: {integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==} 535 + cpu: [arm] 536 + os: [linux] 537 + libc: [glibc] 538 + 539 + '@rollup/rollup-linux-arm-musleabihf@4.61.1': 540 + resolution: {integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==} 541 + cpu: [arm] 542 + os: [linux] 543 + libc: [musl] 544 + 545 + '@rollup/rollup-linux-arm64-gnu@4.61.1': 546 + resolution: {integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==} 547 + cpu: [arm64] 548 + os: [linux] 549 + libc: [glibc] 550 + 551 + '@rollup/rollup-linux-arm64-musl@4.61.1': 552 + resolution: {integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==} 553 + cpu: [arm64] 554 + os: [linux] 555 + libc: [musl] 556 + 557 + '@rollup/rollup-linux-loong64-gnu@4.61.1': 558 + resolution: {integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==} 559 + cpu: [loong64] 560 + os: [linux] 561 + libc: [glibc] 562 + 563 + '@rollup/rollup-linux-loong64-musl@4.61.1': 564 + resolution: {integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==} 565 + cpu: [loong64] 566 + os: [linux] 567 + libc: [musl] 568 + 569 + '@rollup/rollup-linux-ppc64-gnu@4.61.1': 570 + resolution: {integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==} 571 + cpu: [ppc64] 572 + os: [linux] 573 + libc: [glibc] 574 + 575 + '@rollup/rollup-linux-ppc64-musl@4.61.1': 576 + resolution: {integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==} 577 + cpu: [ppc64] 578 + os: [linux] 579 + libc: [musl] 580 + 581 + '@rollup/rollup-linux-riscv64-gnu@4.61.1': 582 + resolution: {integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==} 583 + cpu: [riscv64] 584 + os: [linux] 585 + libc: [glibc] 586 + 587 + '@rollup/rollup-linux-riscv64-musl@4.61.1': 588 + resolution: {integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==} 589 + cpu: [riscv64] 590 + os: [linux] 591 + libc: [musl] 592 + 593 + '@rollup/rollup-linux-s390x-gnu@4.61.1': 594 + resolution: {integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==} 595 + cpu: [s390x] 596 + os: [linux] 597 + libc: [glibc] 598 + 599 + '@rollup/rollup-linux-x64-gnu@4.61.1': 600 + resolution: {integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==} 601 + cpu: [x64] 602 + os: [linux] 603 + libc: [glibc] 604 + 605 + '@rollup/rollup-linux-x64-musl@4.61.1': 606 + resolution: {integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==} 607 + cpu: [x64] 608 + os: [linux] 609 + libc: [musl] 610 + 611 + '@rollup/rollup-openbsd-x64@4.61.1': 612 + resolution: {integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==} 613 + cpu: [x64] 614 + os: [openbsd] 615 + 616 + '@rollup/rollup-openharmony-arm64@4.61.1': 617 + resolution: {integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==} 618 + cpu: [arm64] 619 + os: [openharmony] 620 + 621 + '@rollup/rollup-win32-arm64-msvc@4.61.1': 622 + resolution: {integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==} 623 + cpu: [arm64] 624 + os: [win32] 625 + 626 + '@rollup/rollup-win32-ia32-msvc@4.61.1': 627 + resolution: {integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==} 628 + cpu: [ia32] 629 + os: [win32] 630 + 631 + '@rollup/rollup-win32-x64-gnu@4.61.1': 632 + resolution: {integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==} 633 + cpu: [x64] 634 + os: [win32] 635 + 636 + '@rollup/rollup-win32-x64-msvc@4.61.1': 637 + resolution: {integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==} 638 + cpu: [x64] 639 + os: [win32] 640 + 641 + '@solid-devtools/debugger@0.28.1': 642 + resolution: {integrity: sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==} 643 + peerDependencies: 644 + solid-js: ^1.9.0 645 + 646 + '@solid-devtools/shared@0.20.0': 647 + resolution: {integrity: sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==} 648 + peerDependencies: 649 + solid-js: ^1.9.0 650 + 651 + '@solid-primitives/bounds@0.1.5': 652 + resolution: {integrity: sha512-JFym8zijMfWp1FaAmJlH3xMfenCuhjaUsoBn3kt9FtoWwLj+yt+EGYt+p3SkOKwF7h4gaGtZ5PIdSbSNVWkRmg==} 653 + peerDependencies: 654 + solid-js: ^1.6.12 655 + 656 + '@solid-primitives/event-listener@2.4.5': 657 + resolution: {integrity: sha512-nwRV558mIabl4yVAhZKY8cb6G+O1F0M6Z75ttTu5hk+SxdOnKSGj+eetDIu7Oax1P138ZdUU01qnBPR8rnxaEA==} 658 + peerDependencies: 659 + solid-js: ^1.6.12 660 + 661 + '@solid-primitives/keyboard@1.3.5': 662 + resolution: {integrity: sha512-sav+l+PL+74z3yaftVs7qd8c2SXkqzuxPOVibUe5wYMt+U5Hxp3V3XCPgBPN2I6cANjvoFtz0NiU8uHVLdi9FQ==} 663 + peerDependencies: 664 + solid-js: ^1.6.12 665 + 666 + '@solid-primitives/media@2.3.5': 667 + resolution: {integrity: sha512-LX9fB5WDaK87FMDtUB1qokBOfT2et9Uobv/zZaKLH9caFSz4+P70MBKEIBHcZQy+9MV5M2XvGYLTbLskjkzMjA==} 668 + peerDependencies: 669 + solid-js: ^1.6.12 670 + 671 + '@solid-primitives/refs@1.1.3': 672 + resolution: {integrity: sha512-aam02fjNKpBteewF/UliPSQCVJsIIGOLEWQOh+ll6R/QePzBOOBMcC4G+5jTaO75JuUS1d/14Q1YXT3X0Ow6iA==} 673 + peerDependencies: 674 + solid-js: ^1.6.12 675 + 676 + '@solid-primitives/resize-observer@2.1.5': 677 + resolution: {integrity: sha512-AiyTknKcNBaKHbcSMuxtSNM8FjIuiSuFyFghdD0TcCMU9hKi9EmsC5pjfjDwxE+5EueB1a+T/34PLRI5vbBbKw==} 678 + peerDependencies: 679 + solid-js: ^1.6.12 680 + 681 + '@solid-primitives/rootless@1.5.3': 682 + resolution: {integrity: sha512-N8cIDAHbWcLahNRLr0knAAQvXyEdEMoAZvIMZKmhNb1mlx9e2UOv9BRD5YNwQUJwbNoYVhhLwFOEOcVXFx0HqA==} 683 + peerDependencies: 684 + solid-js: ^1.6.12 685 + 686 + '@solid-primitives/scheduled@1.5.3': 687 + resolution: {integrity: sha512-oNwLE6E6lxJAWrc8QXuwM0k2oU1BnANnkChwMw82aK1j3+mWGJkG1IFe5gCwbV+afYmjI76t9JJV3md/8tLw+g==} 688 + peerDependencies: 689 + solid-js: ^1.6.12 690 + 691 + '@solid-primitives/static-store@0.1.3': 692 + resolution: {integrity: sha512-uxez7SXnr5GiRnzqO2IEDjOJRIXaG+0LZLBizmUA1FwSi+hrpuMzVBwyk70m4prcl8X6FDDXUl9O8hSq8wHbBQ==} 693 + peerDependencies: 694 + solid-js: ^1.6.12 695 + 696 + '@solid-primitives/styles@0.1.3': 697 + resolution: {integrity: sha512-7YdA21prMeCX+oOF/1RAn02+cGz/pG4dyPWtHBC2H8aZvnC7IfThBt80mP+TioejrdfE7Lc54Uh18f7Pig+gRQ==} 698 + peerDependencies: 699 + solid-js: ^1.6.12 700 + 701 + '@solid-primitives/utils@6.4.0': 702 + resolution: {integrity: sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A==} 703 + peerDependencies: 704 + solid-js: ^1.6.12 705 + 706 + '@tailwindcss/node@4.3.0': 707 + resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} 708 + 709 + '@tailwindcss/oxide-android-arm64@4.3.0': 710 + resolution: {integrity: sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==} 711 + engines: {node: '>= 20'} 712 + cpu: [arm64] 713 + os: [android] 714 + 715 + '@tailwindcss/oxide-darwin-arm64@4.3.0': 716 + resolution: {integrity: sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==} 717 + engines: {node: '>= 20'} 718 + cpu: [arm64] 719 + os: [darwin] 720 + 721 + '@tailwindcss/oxide-darwin-x64@4.3.0': 722 + resolution: {integrity: sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==} 723 + engines: {node: '>= 20'} 724 + cpu: [x64] 725 + os: [darwin] 726 + 727 + '@tailwindcss/oxide-freebsd-x64@4.3.0': 728 + resolution: {integrity: sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==} 729 + engines: {node: '>= 20'} 730 + cpu: [x64] 731 + os: [freebsd] 732 + 733 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': 734 + resolution: {integrity: sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==} 735 + engines: {node: '>= 20'} 736 + cpu: [arm] 737 + os: [linux] 738 + 739 + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': 740 + resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==} 741 + engines: {node: '>= 20'} 742 + cpu: [arm64] 743 + os: [linux] 744 + libc: [glibc] 745 + 746 + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': 747 + resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} 748 + engines: {node: '>= 20'} 749 + cpu: [arm64] 750 + os: [linux] 751 + libc: [musl] 752 + 753 + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': 754 + resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} 755 + engines: {node: '>= 20'} 756 + cpu: [x64] 757 + os: [linux] 758 + libc: [glibc] 759 + 760 + '@tailwindcss/oxide-linux-x64-musl@4.3.0': 761 + resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} 762 + engines: {node: '>= 20'} 763 + cpu: [x64] 764 + os: [linux] 765 + libc: [musl] 766 + 767 + '@tailwindcss/oxide-wasm32-wasi@4.3.0': 768 + resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==} 769 + engines: {node: '>=14.0.0'} 770 + cpu: [wasm32] 771 + bundledDependencies: 772 + - '@napi-rs/wasm-runtime' 773 + - '@emnapi/core' 774 + - '@emnapi/runtime' 775 + - '@tybys/wasm-util' 776 + - '@emnapi/wasi-threads' 777 + - tslib 778 + 779 + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': 780 + resolution: {integrity: sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==} 781 + engines: {node: '>= 20'} 782 + cpu: [arm64] 783 + os: [win32] 784 + 785 + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': 786 + resolution: {integrity: sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==} 787 + engines: {node: '>= 20'} 788 + cpu: [x64] 789 + os: [win32] 790 + 791 + '@tailwindcss/oxide@4.3.0': 792 + resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==} 793 + engines: {node: '>= 20'} 794 + 795 + '@tailwindcss/vite@4.3.0': 796 + resolution: {integrity: sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==} 797 + peerDependencies: 798 + vite: ^5.2.0 || ^6 || ^7 || ^8 799 + 800 + '@types/babel__core@7.20.5': 801 + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 802 + 803 + '@types/babel__generator@7.27.0': 804 + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 805 + 806 + '@types/babel__template@7.4.4': 807 + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 808 + 809 + '@types/babel__traverse@7.28.0': 810 + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} 811 + 812 + '@types/estree@1.0.9': 813 + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} 814 + 815 + babel-plugin-jsx-dom-expressions@0.40.7: 816 + resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==} 817 + peerDependencies: 818 + '@babel/core': ^7.20.12 819 + 820 + babel-preset-solid@1.9.12: 821 + resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==} 822 + peerDependencies: 823 + '@babel/core': ^7.0.0 824 + solid-js: ^1.9.12 825 + peerDependenciesMeta: 826 + solid-js: 827 + optional: true 828 + 829 + baseline-browser-mapping@2.10.34: 830 + resolution: {integrity: sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==} 831 + engines: {node: '>=6.0.0'} 832 + hasBin: true 833 + 834 + browserslist@4.28.2: 835 + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} 836 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 837 + hasBin: true 838 + 839 + caniuse-lite@1.0.30001797: 840 + resolution: {integrity: sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==} 841 + 842 + convert-source-map@2.0.0: 843 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 844 + 845 + csstype@3.2.3: 846 + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} 847 + 848 + debug@4.4.3: 849 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 850 + engines: {node: '>=6.0'} 851 + peerDependencies: 852 + supports-color: '*' 853 + peerDependenciesMeta: 854 + supports-color: 855 + optional: true 856 + 857 + detect-libc@2.1.2: 858 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 859 + engines: {node: '>=8'} 860 + 861 + electron-to-chromium@1.5.368: 862 + resolution: {integrity: sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==} 863 + 864 + enhanced-resolve@5.23.0: 865 + resolution: {integrity: sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==} 866 + engines: {node: '>=10.13.0'} 867 + 868 + entities@6.0.1: 869 + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 870 + engines: {node: '>=0.12'} 871 + 872 + esbuild@0.27.7: 873 + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} 874 + engines: {node: '>=18'} 875 + hasBin: true 876 + 877 + escalade@3.2.0: 878 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 879 + engines: {node: '>=6'} 880 + 881 + fdir@6.5.0: 882 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 883 + engines: {node: '>=12.0.0'} 884 + peerDependencies: 885 + picomatch: ^3 || ^4 886 + peerDependenciesMeta: 887 + picomatch: 888 + optional: true 889 + 890 + fsevents@2.3.3: 891 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 892 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 893 + os: [darwin] 894 + 895 + gensync@1.0.0-beta.2: 896 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 897 + engines: {node: '>=6.9.0'} 898 + 899 + graceful-fs@4.2.11: 900 + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 901 + 902 + html-entities@2.3.3: 903 + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} 904 + 905 + is-what@4.1.16: 906 + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} 907 + engines: {node: '>=12.13'} 908 + 909 + jiti@2.7.0: 910 + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} 911 + hasBin: true 912 + 913 + js-tokens@4.0.0: 914 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 915 + 916 + jsesc@3.1.0: 917 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 918 + engines: {node: '>=6'} 919 + hasBin: true 920 + 921 + json5@2.2.3: 922 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 923 + engines: {node: '>=6'} 924 + hasBin: true 925 + 926 + lightningcss-android-arm64@1.32.0: 927 + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} 928 + engines: {node: '>= 12.0.0'} 929 + cpu: [arm64] 930 + os: [android] 931 + 932 + lightningcss-darwin-arm64@1.32.0: 933 + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} 934 + engines: {node: '>= 12.0.0'} 935 + cpu: [arm64] 936 + os: [darwin] 937 + 938 + lightningcss-darwin-x64@1.32.0: 939 + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} 940 + engines: {node: '>= 12.0.0'} 941 + cpu: [x64] 942 + os: [darwin] 943 + 944 + lightningcss-freebsd-x64@1.32.0: 945 + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} 946 + engines: {node: '>= 12.0.0'} 947 + cpu: [x64] 948 + os: [freebsd] 949 + 950 + lightningcss-linux-arm-gnueabihf@1.32.0: 951 + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} 952 + engines: {node: '>= 12.0.0'} 953 + cpu: [arm] 954 + os: [linux] 955 + 956 + lightningcss-linux-arm64-gnu@1.32.0: 957 + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} 958 + engines: {node: '>= 12.0.0'} 959 + cpu: [arm64] 960 + os: [linux] 961 + libc: [glibc] 962 + 963 + lightningcss-linux-arm64-musl@1.32.0: 964 + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} 965 + engines: {node: '>= 12.0.0'} 966 + cpu: [arm64] 967 + os: [linux] 968 + libc: [musl] 969 + 970 + lightningcss-linux-x64-gnu@1.32.0: 971 + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} 972 + engines: {node: '>= 12.0.0'} 973 + cpu: [x64] 974 + os: [linux] 975 + libc: [glibc] 976 + 977 + lightningcss-linux-x64-musl@1.32.0: 978 + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} 979 + engines: {node: '>= 12.0.0'} 980 + cpu: [x64] 981 + os: [linux] 982 + libc: [musl] 983 + 984 + lightningcss-win32-arm64-msvc@1.32.0: 985 + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} 986 + engines: {node: '>= 12.0.0'} 987 + cpu: [arm64] 988 + os: [win32] 989 + 990 + lightningcss-win32-x64-msvc@1.32.0: 991 + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} 992 + engines: {node: '>= 12.0.0'} 993 + cpu: [x64] 994 + os: [win32] 995 + 996 + lightningcss@1.32.0: 997 + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} 998 + engines: {node: '>= 12.0.0'} 999 + 1000 + lru-cache@5.1.1: 1001 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1002 + 1003 + magic-string@0.30.21: 1004 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 1005 + 1006 + merge-anything@5.1.7: 1007 + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} 1008 + engines: {node: '>=12.13'} 1009 + 1010 + ms@2.1.3: 1011 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1012 + 1013 + nanoid@3.3.12: 1014 + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} 1015 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1016 + hasBin: true 1017 + 1018 + node-releases@2.0.47: 1019 + resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==} 1020 + engines: {node: '>=18'} 1021 + 1022 + node@runtime:26.3.0: 1023 + resolution: 1024 + type: variations 1025 + variants: 1026 + - resolution: 1027 + archive: tarball 1028 + bin: 1029 + node: bin/node 1030 + integrity: sha256-R5NBrZoQMO451k0ZLnswxxn2gNCW+LSPDPUS8kD8MoU= 1031 + type: binary 1032 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-aix-ppc64.tar.gz 1033 + targets: 1034 + - cpu: ppc64 1035 + os: aix 1036 + - resolution: 1037 + archive: tarball 1038 + bin: 1039 + node: bin/node 1040 + integrity: sha256-d+9/ehWqdXwsoZ1jz0HI2es7GFkOvGiDhxMQeH2Ma2w= 1041 + type: binary 1042 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-darwin-arm64.tar.gz 1043 + targets: 1044 + - cpu: arm64 1045 + os: darwin 1046 + - resolution: 1047 + archive: tarball 1048 + bin: 1049 + node: bin/node 1050 + integrity: sha256-dFO9VKF73GVuLnhNcC9u6yJPtReWXm+MWjGojIPTgEw= 1051 + type: binary 1052 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-darwin-x64.tar.gz 1053 + targets: 1054 + - cpu: x64 1055 + os: darwin 1056 + - resolution: 1057 + archive: tarball 1058 + bin: 1059 + node: bin/node 1060 + integrity: sha256-suAfZZBcJMtd0ZxM+/7+ARjgUEwXDMGL6sNDoqu7Wb0= 1061 + type: binary 1062 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-linux-arm64.tar.gz 1063 + targets: 1064 + - cpu: arm64 1065 + os: linux 1066 + - resolution: 1067 + archive: tarball 1068 + bin: 1069 + node: bin/node 1070 + integrity: sha256-DmzJoiNTm+AnN4hl2Vmu5Vv46UHJv2kLIIK3i/zA5O8= 1071 + type: binary 1072 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-linux-ppc64le.tar.gz 1073 + targets: 1074 + - cpu: ppc64le 1075 + os: linux 1076 + - resolution: 1077 + archive: tarball 1078 + bin: 1079 + node: bin/node 1080 + integrity: sha256-sYgOE6lXQw9FTLgrqYf8r4LMRBPHQoJ8BLtewgeZ1CY= 1081 + type: binary 1082 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-linux-s390x.tar.gz 1083 + targets: 1084 + - cpu: s390x 1085 + os: linux 1086 + - resolution: 1087 + archive: tarball 1088 + bin: 1089 + node: bin/node 1090 + integrity: sha256-puZcxlPkDBZTt3dC+RhdvOP/H5n6J0bSEb3bU1MO8gY= 1091 + type: binary 1092 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-linux-x64.tar.gz 1093 + targets: 1094 + - cpu: x64 1095 + os: linux 1096 + - resolution: 1097 + archive: zip 1098 + bin: 1099 + node: node.exe 1100 + integrity: sha256-GMUBRyLh3r2z5pNQEEOgh0hebxJ3sgx5xeyGvOYCfuA= 1101 + prefix: node-v26.3.0-win-arm64 1102 + type: binary 1103 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-win-arm64.zip 1104 + targets: 1105 + - cpu: arm64 1106 + os: win32 1107 + - resolution: 1108 + archive: zip 1109 + bin: 1110 + node: node.exe 1111 + integrity: sha256-7G0PawVsiUmKmybE1cd6Mf0Lf+RbqKRfqH0m9mw+vOQ= 1112 + prefix: node-v26.3.0-win-x64 1113 + type: binary 1114 + url: https://nodejs.org/download/release/v26.3.0/node-v26.3.0-win-x64.zip 1115 + targets: 1116 + - cpu: x64 1117 + os: win32 1118 + - resolution: 1119 + archive: tarball 1120 + bin: 1121 + node: bin/node 1122 + integrity: sha256-JIf/TwPb2JmKN3iIbVDB7l8To7nO+/o67QLDLb8eH7g= 1123 + type: binary 1124 + url: https://unofficial-builds.nodejs.org/download/release/v26.3.0/node-v26.3.0-linux-arm64-musl.tar.gz 1125 + targets: 1126 + - cpu: arm64 1127 + os: linux 1128 + libc: musl 1129 + - resolution: 1130 + archive: tarball 1131 + bin: 1132 + node: bin/node 1133 + integrity: sha256-atLnwM9pP+zC/rsav3U5QCRPO6qgRiY2HtUtZIQ//Gc= 1134 + type: binary 1135 + url: https://unofficial-builds.nodejs.org/download/release/v26.3.0/node-v26.3.0-linux-x64-musl.tar.gz 1136 + targets: 1137 + - cpu: x64 1138 + os: linux 1139 + libc: musl 1140 + version: 26.3.0 1141 + hasBin: true 1142 + 1143 + parse5@7.3.0: 1144 + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 1145 + 1146 + picocolors@1.1.1: 1147 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1148 + 1149 + picomatch@4.0.4: 1150 + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} 1151 + engines: {node: '>=12'} 1152 + 1153 + postcss@8.5.15: 1154 + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} 1155 + engines: {node: ^10 || ^12 || >=14} 1156 + 1157 + rollup@4.61.1: 1158 + resolution: {integrity: sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==} 1159 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1160 + hasBin: true 1161 + 1162 + semver@6.3.1: 1163 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1164 + hasBin: true 1165 + 1166 + seroval-plugins@1.5.4: 1167 + resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} 1168 + engines: {node: '>=10'} 1169 + peerDependencies: 1170 + seroval: ^1.0 1171 + 1172 + seroval@1.5.4: 1173 + resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} 1174 + engines: {node: '>=10'} 1175 + 1176 + solid-devtools@0.34.5: 1177 + resolution: {integrity: sha512-KNVdS9MQzzeVS++Vmg4JeU0fM6ZMuBEmkBA7SmqPS2s5UHpRjv1PNH8gShmlN9L/tki6OUAzJP3H1aKq2AcOSg==} 1178 + peerDependencies: 1179 + solid-js: ^1.9.0 1180 + vite: ^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 1181 + peerDependenciesMeta: 1182 + vite: 1183 + optional: true 1184 + 1185 + solid-js@1.9.13: 1186 + resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==} 1187 + 1188 + solid-refresh@0.6.3: 1189 + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} 1190 + peerDependencies: 1191 + solid-js: ^1.3 1192 + 1193 + source-map-js@1.2.1: 1194 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1195 + engines: {node: '>=0.10.0'} 1196 + 1197 + tailwindcss@4.3.0: 1198 + resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} 1199 + 1200 + tapable@2.3.3: 1201 + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} 1202 + engines: {node: '>=6'} 1203 + 1204 + tinyglobby@0.2.17: 1205 + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} 1206 + engines: {node: '>=12.0.0'} 1207 + 1208 + typescript@5.9.3: 1209 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 1210 + engines: {node: '>=14.17'} 1211 + hasBin: true 1212 + 1213 + update-browserslist-db@1.2.3: 1214 + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} 1215 + hasBin: true 1216 + peerDependencies: 1217 + browserslist: '>= 4.21.0' 1218 + 1219 + vite-plugin-solid@2.11.12: 1220 + resolution: {integrity: sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==} 1221 + peerDependencies: 1222 + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* 1223 + solid-js: ^1.7.2 1224 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 1225 + peerDependenciesMeta: 1226 + '@testing-library/jest-dom': 1227 + optional: true 1228 + 1229 + vite@7.3.5: 1230 + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} 1231 + engines: {node: ^20.19.0 || >=22.12.0} 1232 + hasBin: true 1233 + peerDependencies: 1234 + '@types/node': ^20.19.0 || >=22.12.0 1235 + jiti: '>=1.21.0' 1236 + less: ^4.0.0 1237 + lightningcss: ^1.21.0 1238 + sass: ^1.70.0 1239 + sass-embedded: ^1.70.0 1240 + stylus: '>=0.54.8' 1241 + sugarss: ^5.0.0 1242 + terser: ^5.16.0 1243 + tsx: ^4.8.1 1244 + yaml: ^2.4.2 1245 + peerDependenciesMeta: 1246 + '@types/node': 1247 + optional: true 1248 + jiti: 1249 + optional: true 1250 + less: 1251 + optional: true 1252 + lightningcss: 1253 + optional: true 1254 + sass: 1255 + optional: true 1256 + sass-embedded: 1257 + optional: true 1258 + stylus: 1259 + optional: true 1260 + sugarss: 1261 + optional: true 1262 + terser: 1263 + optional: true 1264 + tsx: 1265 + optional: true 1266 + yaml: 1267 + optional: true 1268 + 1269 + vitefu@1.1.3: 1270 + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} 1271 + peerDependencies: 1272 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 1273 + peerDependenciesMeta: 1274 + vite: 1275 + optional: true 1276 + 1277 + yallist@3.1.1: 1278 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1279 + 1280 + snapshots: 1281 + 1282 + '@babel/code-frame@7.29.7': 1283 + dependencies: 1284 + '@babel/helper-validator-identifier': 7.29.7 1285 + js-tokens: 4.0.0 1286 + picocolors: 1.1.1 1287 + 1288 + '@babel/compat-data@7.29.7': {} 1289 + 1290 + '@babel/core@7.29.7': 1291 + dependencies: 1292 + '@babel/code-frame': 7.29.7 1293 + '@babel/generator': 7.29.7 1294 + '@babel/helper-compilation-targets': 7.29.7 1295 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) 1296 + '@babel/helpers': 7.29.7 1297 + '@babel/parser': 7.29.7 1298 + '@babel/template': 7.29.7 1299 + '@babel/traverse': 7.29.7 1300 + '@babel/types': 7.29.7 1301 + '@jridgewell/remapping': 2.3.5 1302 + convert-source-map: 2.0.0 1303 + debug: 4.4.3 1304 + gensync: 1.0.0-beta.2 1305 + json5: 2.2.3 1306 + semver: 6.3.1 1307 + transitivePeerDependencies: 1308 + - supports-color 1309 + 1310 + '@babel/generator@7.29.7': 1311 + dependencies: 1312 + '@babel/parser': 7.29.7 1313 + '@babel/types': 7.29.7 1314 + '@jridgewell/gen-mapping': 0.3.13 1315 + '@jridgewell/trace-mapping': 0.3.31 1316 + jsesc: 3.1.0 1317 + 1318 + '@babel/helper-compilation-targets@7.29.7': 1319 + dependencies: 1320 + '@babel/compat-data': 7.29.7 1321 + '@babel/helper-validator-option': 7.29.7 1322 + browserslist: 4.28.2 1323 + lru-cache: 5.1.1 1324 + semver: 6.3.1 1325 + 1326 + '@babel/helper-globals@7.29.7': {} 1327 + 1328 + '@babel/helper-module-imports@7.18.6': 1329 + dependencies: 1330 + '@babel/types': 7.29.7 1331 + 1332 + '@babel/helper-module-imports@7.29.7': 1333 + dependencies: 1334 + '@babel/traverse': 7.29.7 1335 + '@babel/types': 7.29.7 1336 + transitivePeerDependencies: 1337 + - supports-color 1338 + 1339 + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': 1340 + dependencies: 1341 + '@babel/core': 7.29.7 1342 + '@babel/helper-module-imports': 7.29.7 1343 + '@babel/helper-validator-identifier': 7.29.7 1344 + '@babel/traverse': 7.29.7 1345 + transitivePeerDependencies: 1346 + - supports-color 1347 + 1348 + '@babel/helper-plugin-utils@7.29.7': {} 1349 + 1350 + '@babel/helper-string-parser@7.29.7': {} 1351 + 1352 + '@babel/helper-validator-identifier@7.29.7': {} 1353 + 1354 + '@babel/helper-validator-option@7.29.7': {} 1355 + 1356 + '@babel/helpers@7.29.7': 1357 + dependencies: 1358 + '@babel/template': 7.29.7 1359 + '@babel/types': 7.29.7 1360 + 1361 + '@babel/parser@7.29.7': 1362 + dependencies: 1363 + '@babel/types': 7.29.7 1364 + 1365 + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': 1366 + dependencies: 1367 + '@babel/core': 7.29.7 1368 + '@babel/helper-plugin-utils': 7.29.7 1369 + 1370 + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': 1371 + dependencies: 1372 + '@babel/core': 7.29.7 1373 + '@babel/helper-plugin-utils': 7.29.7 1374 + 1375 + '@babel/template@7.29.7': 1376 + dependencies: 1377 + '@babel/code-frame': 7.29.7 1378 + '@babel/parser': 7.29.7 1379 + '@babel/types': 7.29.7 1380 + 1381 + '@babel/traverse@7.29.7': 1382 + dependencies: 1383 + '@babel/code-frame': 7.29.7 1384 + '@babel/generator': 7.29.7 1385 + '@babel/helper-globals': 7.29.7 1386 + '@babel/parser': 7.29.7 1387 + '@babel/template': 7.29.7 1388 + '@babel/types': 7.29.7 1389 + debug: 4.4.3 1390 + transitivePeerDependencies: 1391 + - supports-color 1392 + 1393 + '@babel/types@7.29.7': 1394 + dependencies: 1395 + '@babel/helper-string-parser': 7.29.7 1396 + '@babel/helper-validator-identifier': 7.29.7 1397 + 1398 + '@esbuild/aix-ppc64@0.27.7': 1399 + optional: true 1400 + 1401 + '@esbuild/android-arm64@0.27.7': 1402 + optional: true 1403 + 1404 + '@esbuild/android-arm@0.27.7': 1405 + optional: true 1406 + 1407 + '@esbuild/android-x64@0.27.7': 1408 + optional: true 1409 + 1410 + '@esbuild/darwin-arm64@0.27.7': 1411 + optional: true 1412 + 1413 + '@esbuild/darwin-x64@0.27.7': 1414 + optional: true 1415 + 1416 + '@esbuild/freebsd-arm64@0.27.7': 1417 + optional: true 1418 + 1419 + '@esbuild/freebsd-x64@0.27.7': 1420 + optional: true 1421 + 1422 + '@esbuild/linux-arm64@0.27.7': 1423 + optional: true 1424 + 1425 + '@esbuild/linux-arm@0.27.7': 1426 + optional: true 1427 + 1428 + '@esbuild/linux-ia32@0.27.7': 1429 + optional: true 1430 + 1431 + '@esbuild/linux-loong64@0.27.7': 1432 + optional: true 1433 + 1434 + '@esbuild/linux-mips64el@0.27.7': 1435 + optional: true 1436 + 1437 + '@esbuild/linux-ppc64@0.27.7': 1438 + optional: true 1439 + 1440 + '@esbuild/linux-riscv64@0.27.7': 1441 + optional: true 1442 + 1443 + '@esbuild/linux-s390x@0.27.7': 1444 + optional: true 1445 + 1446 + '@esbuild/linux-x64@0.27.7': 1447 + optional: true 1448 + 1449 + '@esbuild/netbsd-arm64@0.27.7': 1450 + optional: true 1451 + 1452 + '@esbuild/netbsd-x64@0.27.7': 1453 + optional: true 1454 + 1455 + '@esbuild/openbsd-arm64@0.27.7': 1456 + optional: true 1457 + 1458 + '@esbuild/openbsd-x64@0.27.7': 1459 + optional: true 1460 + 1461 + '@esbuild/openharmony-arm64@0.27.7': 1462 + optional: true 1463 + 1464 + '@esbuild/sunos-x64@0.27.7': 1465 + optional: true 1466 + 1467 + '@esbuild/win32-arm64@0.27.7': 1468 + optional: true 1469 + 1470 + '@esbuild/win32-ia32@0.27.7': 1471 + optional: true 1472 + 1473 + '@esbuild/win32-x64@0.27.7': 1474 + optional: true 1475 + 1476 + '@jridgewell/gen-mapping@0.3.13': 1477 + dependencies: 1478 + '@jridgewell/sourcemap-codec': 1.5.5 1479 + '@jridgewell/trace-mapping': 0.3.31 1480 + 1481 + '@jridgewell/remapping@2.3.5': 1482 + dependencies: 1483 + '@jridgewell/gen-mapping': 0.3.13 1484 + '@jridgewell/trace-mapping': 0.3.31 1485 + 1486 + '@jridgewell/resolve-uri@3.1.2': {} 1487 + 1488 + '@jridgewell/sourcemap-codec@1.5.5': {} 1489 + 1490 + '@jridgewell/trace-mapping@0.3.31': 1491 + dependencies: 1492 + '@jridgewell/resolve-uri': 3.1.2 1493 + '@jridgewell/sourcemap-codec': 1.5.5 1494 + 1495 + '@nothing-but/utils@0.17.0': {} 1496 + 1497 + '@rollup/rollup-android-arm-eabi@4.61.1': 1498 + optional: true 1499 + 1500 + '@rollup/rollup-android-arm64@4.61.1': 1501 + optional: true 1502 + 1503 + '@rollup/rollup-darwin-arm64@4.61.1': 1504 + optional: true 1505 + 1506 + '@rollup/rollup-darwin-x64@4.61.1': 1507 + optional: true 1508 + 1509 + '@rollup/rollup-freebsd-arm64@4.61.1': 1510 + optional: true 1511 + 1512 + '@rollup/rollup-freebsd-x64@4.61.1': 1513 + optional: true 1514 + 1515 + '@rollup/rollup-linux-arm-gnueabihf@4.61.1': 1516 + optional: true 1517 + 1518 + '@rollup/rollup-linux-arm-musleabihf@4.61.1': 1519 + optional: true 1520 + 1521 + '@rollup/rollup-linux-arm64-gnu@4.61.1': 1522 + optional: true 1523 + 1524 + '@rollup/rollup-linux-arm64-musl@4.61.1': 1525 + optional: true 1526 + 1527 + '@rollup/rollup-linux-loong64-gnu@4.61.1': 1528 + optional: true 1529 + 1530 + '@rollup/rollup-linux-loong64-musl@4.61.1': 1531 + optional: true 1532 + 1533 + '@rollup/rollup-linux-ppc64-gnu@4.61.1': 1534 + optional: true 1535 + 1536 + '@rollup/rollup-linux-ppc64-musl@4.61.1': 1537 + optional: true 1538 + 1539 + '@rollup/rollup-linux-riscv64-gnu@4.61.1': 1540 + optional: true 1541 + 1542 + '@rollup/rollup-linux-riscv64-musl@4.61.1': 1543 + optional: true 1544 + 1545 + '@rollup/rollup-linux-s390x-gnu@4.61.1': 1546 + optional: true 1547 + 1548 + '@rollup/rollup-linux-x64-gnu@4.61.1': 1549 + optional: true 1550 + 1551 + '@rollup/rollup-linux-x64-musl@4.61.1': 1552 + optional: true 1553 + 1554 + '@rollup/rollup-openbsd-x64@4.61.1': 1555 + optional: true 1556 + 1557 + '@rollup/rollup-openharmony-arm64@4.61.1': 1558 + optional: true 1559 + 1560 + '@rollup/rollup-win32-arm64-msvc@4.61.1': 1561 + optional: true 1562 + 1563 + '@rollup/rollup-win32-ia32-msvc@4.61.1': 1564 + optional: true 1565 + 1566 + '@rollup/rollup-win32-x64-gnu@4.61.1': 1567 + optional: true 1568 + 1569 + '@rollup/rollup-win32-x64-msvc@4.61.1': 1570 + optional: true 1571 + 1572 + '@solid-devtools/debugger@0.28.1(solid-js@1.9.13)': 1573 + dependencies: 1574 + '@nothing-but/utils': 0.17.0 1575 + '@solid-devtools/shared': 0.20.0(solid-js@1.9.13) 1576 + '@solid-primitives/bounds': 0.1.5(solid-js@1.9.13) 1577 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) 1578 + '@solid-primitives/keyboard': 1.3.5(solid-js@1.9.13) 1579 + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) 1580 + '@solid-primitives/scheduled': 1.5.3(solid-js@1.9.13) 1581 + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) 1582 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1583 + solid-js: 1.9.13 1584 + 1585 + '@solid-devtools/shared@0.20.0(solid-js@1.9.13)': 1586 + dependencies: 1587 + '@nothing-but/utils': 0.17.0 1588 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) 1589 + '@solid-primitives/media': 2.3.5(solid-js@1.9.13) 1590 + '@solid-primitives/refs': 1.1.3(solid-js@1.9.13) 1591 + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) 1592 + '@solid-primitives/scheduled': 1.5.3(solid-js@1.9.13) 1593 + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) 1594 + '@solid-primitives/styles': 0.1.3(solid-js@1.9.13) 1595 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1596 + solid-js: 1.9.13 1597 + 1598 + '@solid-primitives/bounds@0.1.5(solid-js@1.9.13)': 1599 + dependencies: 1600 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) 1601 + '@solid-primitives/resize-observer': 2.1.5(solid-js@1.9.13) 1602 + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) 1603 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1604 + solid-js: 1.9.13 1605 + 1606 + '@solid-primitives/event-listener@2.4.5(solid-js@1.9.13)': 1607 + dependencies: 1608 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1609 + solid-js: 1.9.13 1610 + 1611 + '@solid-primitives/keyboard@1.3.5(solid-js@1.9.13)': 1612 + dependencies: 1613 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) 1614 + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) 1615 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1616 + solid-js: 1.9.13 1617 + 1618 + '@solid-primitives/media@2.3.5(solid-js@1.9.13)': 1619 + dependencies: 1620 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) 1621 + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) 1622 + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) 1623 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1624 + solid-js: 1.9.13 1625 + 1626 + '@solid-primitives/refs@1.1.3(solid-js@1.9.13)': 1627 + dependencies: 1628 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1629 + solid-js: 1.9.13 1630 + 1631 + '@solid-primitives/resize-observer@2.1.5(solid-js@1.9.13)': 1632 + dependencies: 1633 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) 1634 + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) 1635 + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) 1636 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1637 + solid-js: 1.9.13 1638 + 1639 + '@solid-primitives/rootless@1.5.3(solid-js@1.9.13)': 1640 + dependencies: 1641 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1642 + solid-js: 1.9.13 1643 + 1644 + '@solid-primitives/scheduled@1.5.3(solid-js@1.9.13)': 1645 + dependencies: 1646 + solid-js: 1.9.13 1647 + 1648 + '@solid-primitives/static-store@0.1.3(solid-js@1.9.13)': 1649 + dependencies: 1650 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1651 + solid-js: 1.9.13 1652 + 1653 + '@solid-primitives/styles@0.1.3(solid-js@1.9.13)': 1654 + dependencies: 1655 + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) 1656 + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) 1657 + solid-js: 1.9.13 1658 + 1659 + '@solid-primitives/utils@6.4.0(solid-js@1.9.13)': 1660 + dependencies: 1661 + solid-js: 1.9.13 1662 + 1663 + '@tailwindcss/node@4.3.0': 1664 + dependencies: 1665 + '@jridgewell/remapping': 2.3.5 1666 + enhanced-resolve: 5.23.0 1667 + jiti: 2.7.0 1668 + lightningcss: 1.32.0 1669 + magic-string: 0.30.21 1670 + source-map-js: 1.2.1 1671 + tailwindcss: 4.3.0 1672 + 1673 + '@tailwindcss/oxide-android-arm64@4.3.0': 1674 + optional: true 1675 + 1676 + '@tailwindcss/oxide-darwin-arm64@4.3.0': 1677 + optional: true 1678 + 1679 + '@tailwindcss/oxide-darwin-x64@4.3.0': 1680 + optional: true 1681 + 1682 + '@tailwindcss/oxide-freebsd-x64@4.3.0': 1683 + optional: true 1684 + 1685 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': 1686 + optional: true 1687 + 1688 + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': 1689 + optional: true 1690 + 1691 + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': 1692 + optional: true 1693 + 1694 + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': 1695 + optional: true 1696 + 1697 + '@tailwindcss/oxide-linux-x64-musl@4.3.0': 1698 + optional: true 1699 + 1700 + '@tailwindcss/oxide-wasm32-wasi@4.3.0': 1701 + optional: true 1702 + 1703 + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': 1704 + optional: true 1705 + 1706 + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': 1707 + optional: true 1708 + 1709 + '@tailwindcss/oxide@4.3.0': 1710 + optionalDependencies: 1711 + '@tailwindcss/oxide-android-arm64': 4.3.0 1712 + '@tailwindcss/oxide-darwin-arm64': 4.3.0 1713 + '@tailwindcss/oxide-darwin-x64': 4.3.0 1714 + '@tailwindcss/oxide-freebsd-x64': 4.3.0 1715 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.0 1716 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.0 1717 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.0 1718 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.0 1719 + '@tailwindcss/oxide-linux-x64-musl': 4.3.0 1720 + '@tailwindcss/oxide-wasm32-wasi': 4.3.0 1721 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 1722 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 1723 + 1724 + '@tailwindcss/vite@4.3.0(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0))': 1725 + dependencies: 1726 + '@tailwindcss/node': 4.3.0 1727 + '@tailwindcss/oxide': 4.3.0 1728 + tailwindcss: 4.3.0 1729 + vite: 7.3.5(jiti@2.7.0)(lightningcss@1.32.0) 1730 + 1731 + '@types/babel__core@7.20.5': 1732 + dependencies: 1733 + '@babel/parser': 7.29.7 1734 + '@babel/types': 7.29.7 1735 + '@types/babel__generator': 7.27.0 1736 + '@types/babel__template': 7.4.4 1737 + '@types/babel__traverse': 7.28.0 1738 + 1739 + '@types/babel__generator@7.27.0': 1740 + dependencies: 1741 + '@babel/types': 7.29.7 1742 + 1743 + '@types/babel__template@7.4.4': 1744 + dependencies: 1745 + '@babel/parser': 7.29.7 1746 + '@babel/types': 7.29.7 1747 + 1748 + '@types/babel__traverse@7.28.0': 1749 + dependencies: 1750 + '@babel/types': 7.29.7 1751 + 1752 + '@types/estree@1.0.9': {} 1753 + 1754 + babel-plugin-jsx-dom-expressions@0.40.7(@babel/core@7.29.7): 1755 + dependencies: 1756 + '@babel/core': 7.29.7 1757 + '@babel/helper-module-imports': 7.18.6 1758 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) 1759 + '@babel/types': 7.29.7 1760 + html-entities: 2.3.3 1761 + parse5: 7.3.0 1762 + 1763 + babel-preset-solid@1.9.12(@babel/core@7.29.7)(solid-js@1.9.13): 1764 + dependencies: 1765 + '@babel/core': 7.29.7 1766 + babel-plugin-jsx-dom-expressions: 0.40.7(@babel/core@7.29.7) 1767 + optionalDependencies: 1768 + solid-js: 1.9.13 1769 + 1770 + baseline-browser-mapping@2.10.34: {} 1771 + 1772 + browserslist@4.28.2: 1773 + dependencies: 1774 + baseline-browser-mapping: 2.10.34 1775 + caniuse-lite: 1.0.30001797 1776 + electron-to-chromium: 1.5.368 1777 + node-releases: 2.0.47 1778 + update-browserslist-db: 1.2.3(browserslist@4.28.2) 1779 + 1780 + caniuse-lite@1.0.30001797: {} 1781 + 1782 + convert-source-map@2.0.0: {} 1783 + 1784 + csstype@3.2.3: {} 1785 + 1786 + debug@4.4.3: 1787 + dependencies: 1788 + ms: 2.1.3 1789 + 1790 + detect-libc@2.1.2: {} 1791 + 1792 + electron-to-chromium@1.5.368: {} 1793 + 1794 + enhanced-resolve@5.23.0: 1795 + dependencies: 1796 + graceful-fs: 4.2.11 1797 + tapable: 2.3.3 1798 + 1799 + entities@6.0.1: {} 1800 + 1801 + esbuild@0.27.7: 1802 + optionalDependencies: 1803 + '@esbuild/aix-ppc64': 0.27.7 1804 + '@esbuild/android-arm': 0.27.7 1805 + '@esbuild/android-arm64': 0.27.7 1806 + '@esbuild/android-x64': 0.27.7 1807 + '@esbuild/darwin-arm64': 0.27.7 1808 + '@esbuild/darwin-x64': 0.27.7 1809 + '@esbuild/freebsd-arm64': 0.27.7 1810 + '@esbuild/freebsd-x64': 0.27.7 1811 + '@esbuild/linux-arm': 0.27.7 1812 + '@esbuild/linux-arm64': 0.27.7 1813 + '@esbuild/linux-ia32': 0.27.7 1814 + '@esbuild/linux-loong64': 0.27.7 1815 + '@esbuild/linux-mips64el': 0.27.7 1816 + '@esbuild/linux-ppc64': 0.27.7 1817 + '@esbuild/linux-riscv64': 0.27.7 1818 + '@esbuild/linux-s390x': 0.27.7 1819 + '@esbuild/linux-x64': 0.27.7 1820 + '@esbuild/netbsd-arm64': 0.27.7 1821 + '@esbuild/netbsd-x64': 0.27.7 1822 + '@esbuild/openbsd-arm64': 0.27.7 1823 + '@esbuild/openbsd-x64': 0.27.7 1824 + '@esbuild/openharmony-arm64': 0.27.7 1825 + '@esbuild/sunos-x64': 0.27.7 1826 + '@esbuild/win32-arm64': 0.27.7 1827 + '@esbuild/win32-ia32': 0.27.7 1828 + '@esbuild/win32-x64': 0.27.7 1829 + 1830 + escalade@3.2.0: {} 1831 + 1832 + fdir@6.5.0(picomatch@4.0.4): 1833 + optionalDependencies: 1834 + picomatch: 4.0.4 1835 + 1836 + fsevents@2.3.3: 1837 + optional: true 1838 + 1839 + gensync@1.0.0-beta.2: {} 1840 + 1841 + graceful-fs@4.2.11: {} 1842 + 1843 + html-entities@2.3.3: {} 1844 + 1845 + is-what@4.1.16: {} 1846 + 1847 + jiti@2.7.0: {} 1848 + 1849 + js-tokens@4.0.0: {} 1850 + 1851 + jsesc@3.1.0: {} 1852 + 1853 + json5@2.2.3: {} 1854 + 1855 + lightningcss-android-arm64@1.32.0: 1856 + optional: true 1857 + 1858 + lightningcss-darwin-arm64@1.32.0: 1859 + optional: true 1860 + 1861 + lightningcss-darwin-x64@1.32.0: 1862 + optional: true 1863 + 1864 + lightningcss-freebsd-x64@1.32.0: 1865 + optional: true 1866 + 1867 + lightningcss-linux-arm-gnueabihf@1.32.0: 1868 + optional: true 1869 + 1870 + lightningcss-linux-arm64-gnu@1.32.0: 1871 + optional: true 1872 + 1873 + lightningcss-linux-arm64-musl@1.32.0: 1874 + optional: true 1875 + 1876 + lightningcss-linux-x64-gnu@1.32.0: 1877 + optional: true 1878 + 1879 + lightningcss-linux-x64-musl@1.32.0: 1880 + optional: true 1881 + 1882 + lightningcss-win32-arm64-msvc@1.32.0: 1883 + optional: true 1884 + 1885 + lightningcss-win32-x64-msvc@1.32.0: 1886 + optional: true 1887 + 1888 + lightningcss@1.32.0: 1889 + dependencies: 1890 + detect-libc: 2.1.2 1891 + optionalDependencies: 1892 + lightningcss-android-arm64: 1.32.0 1893 + lightningcss-darwin-arm64: 1.32.0 1894 + lightningcss-darwin-x64: 1.32.0 1895 + lightningcss-freebsd-x64: 1.32.0 1896 + lightningcss-linux-arm-gnueabihf: 1.32.0 1897 + lightningcss-linux-arm64-gnu: 1.32.0 1898 + lightningcss-linux-arm64-musl: 1.32.0 1899 + lightningcss-linux-x64-gnu: 1.32.0 1900 + lightningcss-linux-x64-musl: 1.32.0 1901 + lightningcss-win32-arm64-msvc: 1.32.0 1902 + lightningcss-win32-x64-msvc: 1.32.0 1903 + 1904 + lru-cache@5.1.1: 1905 + dependencies: 1906 + yallist: 3.1.1 1907 + 1908 + magic-string@0.30.21: 1909 + dependencies: 1910 + '@jridgewell/sourcemap-codec': 1.5.5 1911 + 1912 + merge-anything@5.1.7: 1913 + dependencies: 1914 + is-what: 4.1.16 1915 + 1916 + ms@2.1.3: {} 1917 + 1918 + nanoid@3.3.12: {} 1919 + 1920 + node-releases@2.0.47: {} 1921 + 1922 + node@runtime:26.3.0: {} 1923 + 1924 + parse5@7.3.0: 1925 + dependencies: 1926 + entities: 6.0.1 1927 + 1928 + picocolors@1.1.1: {} 1929 + 1930 + picomatch@4.0.4: {} 1931 + 1932 + postcss@8.5.15: 1933 + dependencies: 1934 + nanoid: 3.3.12 1935 + picocolors: 1.1.1 1936 + source-map-js: 1.2.1 1937 + 1938 + rollup@4.61.1: 1939 + dependencies: 1940 + '@types/estree': 1.0.9 1941 + optionalDependencies: 1942 + '@rollup/rollup-android-arm-eabi': 4.61.1 1943 + '@rollup/rollup-android-arm64': 4.61.1 1944 + '@rollup/rollup-darwin-arm64': 4.61.1 1945 + '@rollup/rollup-darwin-x64': 4.61.1 1946 + '@rollup/rollup-freebsd-arm64': 4.61.1 1947 + '@rollup/rollup-freebsd-x64': 4.61.1 1948 + '@rollup/rollup-linux-arm-gnueabihf': 4.61.1 1949 + '@rollup/rollup-linux-arm-musleabihf': 4.61.1 1950 + '@rollup/rollup-linux-arm64-gnu': 4.61.1 1951 + '@rollup/rollup-linux-arm64-musl': 4.61.1 1952 + '@rollup/rollup-linux-loong64-gnu': 4.61.1 1953 + '@rollup/rollup-linux-loong64-musl': 4.61.1 1954 + '@rollup/rollup-linux-ppc64-gnu': 4.61.1 1955 + '@rollup/rollup-linux-ppc64-musl': 4.61.1 1956 + '@rollup/rollup-linux-riscv64-gnu': 4.61.1 1957 + '@rollup/rollup-linux-riscv64-musl': 4.61.1 1958 + '@rollup/rollup-linux-s390x-gnu': 4.61.1 1959 + '@rollup/rollup-linux-x64-gnu': 4.61.1 1960 + '@rollup/rollup-linux-x64-musl': 4.61.1 1961 + '@rollup/rollup-openbsd-x64': 4.61.1 1962 + '@rollup/rollup-openharmony-arm64': 4.61.1 1963 + '@rollup/rollup-win32-arm64-msvc': 4.61.1 1964 + '@rollup/rollup-win32-ia32-msvc': 4.61.1 1965 + '@rollup/rollup-win32-x64-gnu': 4.61.1 1966 + '@rollup/rollup-win32-x64-msvc': 4.61.1 1967 + fsevents: 2.3.3 1968 + 1969 + semver@6.3.1: {} 1970 + 1971 + seroval-plugins@1.5.4(seroval@1.5.4): 1972 + dependencies: 1973 + seroval: 1.5.4 1974 + 1975 + seroval@1.5.4: {} 1976 + 1977 + solid-devtools@0.34.5(solid-js@1.9.13)(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)): 1978 + dependencies: 1979 + '@babel/core': 7.29.7 1980 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) 1981 + '@babel/types': 7.29.7 1982 + '@solid-devtools/debugger': 0.28.1(solid-js@1.9.13) 1983 + '@solid-devtools/shared': 0.20.0(solid-js@1.9.13) 1984 + solid-js: 1.9.13 1985 + optionalDependencies: 1986 + vite: 7.3.5(jiti@2.7.0)(lightningcss@1.32.0) 1987 + transitivePeerDependencies: 1988 + - supports-color 1989 + 1990 + solid-js@1.9.13: 1991 + dependencies: 1992 + csstype: 3.2.3 1993 + seroval: 1.5.4 1994 + seroval-plugins: 1.5.4(seroval@1.5.4) 1995 + 1996 + solid-refresh@0.6.3(solid-js@1.9.13): 1997 + dependencies: 1998 + '@babel/generator': 7.29.7 1999 + '@babel/helper-module-imports': 7.29.7 2000 + '@babel/types': 7.29.7 2001 + solid-js: 1.9.13 2002 + transitivePeerDependencies: 2003 + - supports-color 2004 + 2005 + source-map-js@1.2.1: {} 2006 + 2007 + tailwindcss@4.3.0: {} 2008 + 2009 + tapable@2.3.3: {} 2010 + 2011 + tinyglobby@0.2.17: 2012 + dependencies: 2013 + fdir: 6.5.0(picomatch@4.0.4) 2014 + picomatch: 4.0.4 2015 + 2016 + typescript@5.9.3: {} 2017 + 2018 + update-browserslist-db@1.2.3(browserslist@4.28.2): 2019 + dependencies: 2020 + browserslist: 4.28.2 2021 + escalade: 3.2.0 2022 + picocolors: 1.1.1 2023 + 2024 + vite-plugin-solid@2.11.12(solid-js@1.9.13)(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)): 2025 + dependencies: 2026 + '@babel/core': 7.29.7 2027 + '@types/babel__core': 7.20.5 2028 + babel-preset-solid: 1.9.12(@babel/core@7.29.7)(solid-js@1.9.13) 2029 + merge-anything: 5.1.7 2030 + solid-js: 1.9.13 2031 + solid-refresh: 0.6.3(solid-js@1.9.13) 2032 + vite: 7.3.5(jiti@2.7.0)(lightningcss@1.32.0) 2033 + vitefu: 1.1.3(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)) 2034 + transitivePeerDependencies: 2035 + - supports-color 2036 + 2037 + vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0): 2038 + dependencies: 2039 + esbuild: 0.27.7 2040 + fdir: 6.5.0(picomatch@4.0.4) 2041 + picomatch: 4.0.4 2042 + postcss: 8.5.15 2043 + rollup: 4.61.1 2044 + tinyglobby: 0.2.17 2045 + optionalDependencies: 2046 + fsevents: 2.3.3 2047 + jiti: 2.7.0 2048 + lightningcss: 1.32.0 2049 + 2050 + vitefu@1.1.3(vite@7.3.5(jiti@2.7.0)(lightningcss@1.32.0)): 2051 + optionalDependencies: 2052 + vite: 7.3.5(jiti@2.7.0)(lightningcss@1.32.0) 2053 + 2054 + yallist@3.1.1: {}
+4
pnpm-workspace.yaml
··· 1 + packages: 2 + - app 3 + allowBuilds: 4 + esbuild: true
+17
app/index.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 + <meta name="theme-color" content="#000000" /> 7 + <title>Knotty</title> 8 + </head> 9 + <body> 10 + <noscript> 11 + Unfortunately, you need to enable JavaScript to run this app. 12 + </noscript> 13 + <div id="root"></div> 14 + 15 + <script src="/src/index.tsx" type="module"></script> 16 + </body> 17 + </html>
+21
app/package.json
··· 1 + { 2 + "name": "app", 3 + "type": "module", 4 + "scripts": { 5 + "start": "vite", 6 + "dev": "vite", 7 + "build": "vite build", 8 + "serve": "vite preview" 9 + }, 10 + "devDependencies": { 11 + "@tailwindcss/vite": "^4.3.0", 12 + "solid-devtools": "^0.34.3", 13 + "tailwindcss": "^4.1.13", 14 + "typescript": "^5.9.2", 15 + "vite": "^7.1.4", 16 + "vite-plugin-solid": "^2.11.8" 17 + }, 18 + "dependencies": { 19 + "solid-js": "^1.9.5" 20 + } 21 + }
+20
app/tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + // General 4 + "jsx": "preserve", 5 + "jsxImportSource": "solid-js", 6 + "target": "ESNext", 7 + 8 + // Modules 9 + "allowSyntheticDefaultImports": true, 10 + "esModuleInterop": true, 11 + "isolatedModules": true, 12 + "module": "ESNext", 13 + "moduleResolution": "bundler", 14 + "noEmit": true, 15 + 16 + // Type Checking & Safety 17 + "strict": true, 18 + "types": ["vite/client"] 19 + } 20 + }
+14
app/vite.config.ts
··· 1 + import tailwindcss from "@tailwindcss/vite"; 2 + import { defineConfig } from "vite"; 3 + import solidPlugin from "vite-plugin-solid"; 4 + import devtools from "solid-devtools/vite"; 5 + 6 + export default defineConfig({ 7 + plugins: [devtools(), solidPlugin(), tailwindcss()], 8 + server: { 9 + port: 3000, 10 + }, 11 + build: { 12 + target: "esnext", 13 + }, 14 + });
+9
app/src/App.tsx
··· 1 + import type { Component } from "solid-js"; 2 + 3 + const App: Component = () => { 4 + return ( 5 + <p class="text-4xl text-green-700 text-center py-20">Hello tailwind!</p> 6 + ); 7 + }; 8 + 9 + export default App;
+1
app/src/index.css
··· 1 + @import "tailwindcss";
+16
app/src/index.tsx
··· 1 + /* @refresh reload */ 2 + import "./index.css"; 3 + import { render } from "solid-js/web"; 4 + import "solid-devtools"; 5 + 6 + import App from "./App"; 7 + 8 + const root = document.getElementById("root"); 9 + 10 + if (import.meta.env.DEV && !(root instanceof HTMLElement)) { 11 + throw new Error( 12 + "Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?", 13 + ); 14 + } 15 + 16 + render(() => <App />, root!);
+2
crates/knotty-knot/Cargo.toml
··· 5 5 description.workspace = true 6 6 7 7 [dependencies] 8 + knotty-web = { path = "../knotty-web" } 9 + 8 10 axum.workspace = true 9 11 clap.workspace = true 10 12 jacquard.workspace = true
+11
crates/knotty-web/Cargo.toml
··· 1 + [package] 2 + name = "knotty-web" 3 + edition = "2024" 4 + version.workspace = true 5 + description.workspace = true 6 + 7 + [dependencies] 8 + axum.workspace = true 9 + mime_guess.workspace = true 10 + rust-embed.workspace = true 11 + tracing.workspace = true
+1
crates/knotty-knot/src/router.rs
··· 8 8 let did_doc = state.did_doc.clone(); 9 9 crate::routes::router() 10 10 .with_state(state) 11 + .merge(knotty_web::router()) 11 12 .merge(did_web::did_web_router(did_doc)) 12 13 .layer(TraceLayer::new_for_http()) 13 14 }
+40
crates/knotty-web/src/lib.rs
··· 1 + use axum::{ 2 + Router, 3 + http::{StatusCode, header}, 4 + response::{IntoResponse, Response}, 5 + routing::get, 6 + }; 7 + use rust_embed::Embed; 8 + 9 + #[derive(Embed)] 10 + #[folder = "../../app/dist"] 11 + struct Asset; 12 + 13 + pub struct StaticFile<T>(pub T); 14 + 15 + impl<T> IntoResponse for StaticFile<T> 16 + where 17 + T: Into<String>, 18 + { 19 + fn into_response(self) -> Response { 20 + let path = self.0.into(); 21 + 22 + match Asset::get(path.as_str()) { 23 + Some(content) => { 24 + let mime = mime_guess::from_path(path).first_or_octet_stream(); 25 + ([(header::CONTENT_TYPE, mime.as_ref())], content.data).into_response() 26 + } 27 + None => (StatusCode::NOT_FOUND, "404 Not Found").into_response(), 28 + } 29 + } 30 + } 31 + 32 + pub fn router() -> Router { 33 + Asset::iter().fold( 34 + Router::new().route("/", get(|| async { StaticFile("index.html") })), 35 + |router, file| { 36 + tracing::info!(file = %file, "serving static file"); 37 + router.route(&format!("/{file}"), get(|| async { StaticFile(file) })) 38 + }, 39 + ) 40 + }