this repo has no description
0
fork

Configure Feed

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

initial commit

willmorrison 09da6570

+1327
+23
.gitignore
··· 1 + node_modules 2 + 3 + # Output 4 + .output 5 + .vercel 6 + .netlify 7 + .wrangler 8 + /.svelte-kit 9 + /build 10 + 11 + # OS 12 + .DS_Store 13 + Thumbs.db 14 + 15 + # Env 16 + .env 17 + .env.* 18 + !.env.example 19 + !.env.test 20 + 21 + # Vite 22 + vite.config.js.timestamp-* 23 + vite.config.ts.timestamp-*
+1
.npmrc
··· 1 + engine-strict=true
+3
.vscode/extensions.json
··· 1 + { 2 + "recommendations": ["svelte.svelte-vscode"] 3 + }
+42
README.md
··· 1 + # sv 2 + 3 + Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). 4 + 5 + ## Creating a project 6 + 7 + If you're seeing this, you've probably already done this step. Congrats! 8 + 9 + ```sh 10 + # create a new project 11 + npx sv create my-app 12 + ``` 13 + 14 + To recreate this project with the same configuration: 15 + 16 + ```sh 17 + # recreate this project 18 + pnpm dlx sv@0.15.2 create --template minimal --types ts --install pnpm japanese 19 + ``` 20 + 21 + ## Developing 22 + 23 + Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 24 + 25 + ```sh 26 + npm run dev 27 + 28 + # or start the server and open the app in a new browser tab 29 + npm run dev -- --open 30 + ``` 31 + 32 + ## Building 33 + 34 + To create a production version of your app: 35 + 36 + ```sh 37 + npm run build 38 + ``` 39 + 40 + You can preview the production build with `npm run preview`. 41 + 42 + > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
+24
package.json
··· 1 + { 2 + "name": "japanese", 3 + "private": true, 4 + "version": "0.0.1", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite dev", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "prepare": "svelte-kit sync || echo ''", 11 + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 13 + }, 14 + "devDependencies": { 15 + "@sveltejs/adapter-auto": "^7.0.1", 16 + "@sveltejs/kit": "^2.57.0", 17 + "@sveltejs/vite-plugin-svelte": "^7.0.0", 18 + "@types/node": "^25.6.0", 19 + "svelte": "^5.55.2", 20 + "svelte-check": "^4.4.6", 21 + "typescript": "^6.0.2", 22 + "vite": "^8.0.7" 23 + } 24 + }
+872
pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + devDependencies: 11 + '@sveltejs/adapter-auto': 12 + specifier: ^7.0.1 13 + version: 7.0.1(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0))) 14 + '@sveltejs/kit': 15 + specifier: ^2.57.0 16 + version: 2.59.1(@sveltejs/vite-plugin-svelte@7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)) 17 + '@sveltejs/vite-plugin-svelte': 18 + specifier: ^7.0.0 19 + version: 7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)) 20 + '@types/node': 21 + specifier: ^25.6.0 22 + version: 25.6.0 23 + svelte: 24 + specifier: ^5.55.2 25 + version: 5.55.5 26 + svelte-check: 27 + specifier: ^4.4.6 28 + version: 4.4.8(picomatch@4.0.4)(svelte@5.55.5)(typescript@6.0.3) 29 + typescript: 30 + specifier: ^6.0.2 31 + version: 6.0.3 32 + vite: 33 + specifier: ^8.0.7 34 + version: 8.0.10(@types/node@25.6.0) 35 + 36 + packages: 37 + 38 + '@emnapi/core@1.10.0': 39 + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} 40 + 41 + '@emnapi/runtime@1.10.0': 42 + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} 43 + 44 + '@emnapi/wasi-threads@1.2.1': 45 + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} 46 + 47 + '@jridgewell/gen-mapping@0.3.13': 48 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 49 + 50 + '@jridgewell/remapping@2.3.5': 51 + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} 52 + 53 + '@jridgewell/resolve-uri@3.1.2': 54 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 55 + engines: {node: '>=6.0.0'} 56 + 57 + '@jridgewell/sourcemap-codec@1.5.5': 58 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 59 + 60 + '@jridgewell/trace-mapping@0.3.31': 61 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 62 + 63 + '@napi-rs/wasm-runtime@1.1.4': 64 + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} 65 + peerDependencies: 66 + '@emnapi/core': ^1.7.1 67 + '@emnapi/runtime': ^1.7.1 68 + 69 + '@oxc-project/types@0.127.0': 70 + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} 71 + 72 + '@polka/url@1.0.0-next.29': 73 + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} 74 + 75 + '@rolldown/binding-android-arm64@1.0.0-rc.17': 76 + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} 77 + engines: {node: ^20.19.0 || >=22.12.0} 78 + cpu: [arm64] 79 + os: [android] 80 + 81 + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': 82 + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} 83 + engines: {node: ^20.19.0 || >=22.12.0} 84 + cpu: [arm64] 85 + os: [darwin] 86 + 87 + '@rolldown/binding-darwin-x64@1.0.0-rc.17': 88 + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} 89 + engines: {node: ^20.19.0 || >=22.12.0} 90 + cpu: [x64] 91 + os: [darwin] 92 + 93 + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': 94 + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} 95 + engines: {node: ^20.19.0 || >=22.12.0} 96 + cpu: [x64] 97 + os: [freebsd] 98 + 99 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': 100 + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} 101 + engines: {node: ^20.19.0 || >=22.12.0} 102 + cpu: [arm] 103 + os: [linux] 104 + 105 + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': 106 + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} 107 + engines: {node: ^20.19.0 || >=22.12.0} 108 + cpu: [arm64] 109 + os: [linux] 110 + libc: [glibc] 111 + 112 + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': 113 + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} 114 + engines: {node: ^20.19.0 || >=22.12.0} 115 + cpu: [arm64] 116 + os: [linux] 117 + libc: [musl] 118 + 119 + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': 120 + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} 121 + engines: {node: ^20.19.0 || >=22.12.0} 122 + cpu: [ppc64] 123 + os: [linux] 124 + libc: [glibc] 125 + 126 + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': 127 + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} 128 + engines: {node: ^20.19.0 || >=22.12.0} 129 + cpu: [s390x] 130 + os: [linux] 131 + libc: [glibc] 132 + 133 + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': 134 + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} 135 + engines: {node: ^20.19.0 || >=22.12.0} 136 + cpu: [x64] 137 + os: [linux] 138 + libc: [glibc] 139 + 140 + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': 141 + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} 142 + engines: {node: ^20.19.0 || >=22.12.0} 143 + cpu: [x64] 144 + os: [linux] 145 + libc: [musl] 146 + 147 + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': 148 + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} 149 + engines: {node: ^20.19.0 || >=22.12.0} 150 + cpu: [arm64] 151 + os: [openharmony] 152 + 153 + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': 154 + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} 155 + engines: {node: ^20.19.0 || >=22.12.0} 156 + cpu: [wasm32] 157 + 158 + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': 159 + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} 160 + engines: {node: ^20.19.0 || >=22.12.0} 161 + cpu: [arm64] 162 + os: [win32] 163 + 164 + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': 165 + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} 166 + engines: {node: ^20.19.0 || >=22.12.0} 167 + cpu: [x64] 168 + os: [win32] 169 + 170 + '@rolldown/pluginutils@1.0.0-rc.17': 171 + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} 172 + 173 + '@standard-schema/spec@1.1.0': 174 + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} 175 + 176 + '@sveltejs/acorn-typescript@1.0.9': 177 + resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==} 178 + peerDependencies: 179 + acorn: ^8.9.0 180 + 181 + '@sveltejs/adapter-auto@7.0.1': 182 + resolution: {integrity: sha512-dvuPm1E7M9NI/+canIQ6KKQDU2AkEefEZ2Dp7cY6uKoPq9Z/PhOXABe526UdW2mN986gjVkuSLkOYIBnS/M2LQ==} 183 + peerDependencies: 184 + '@sveltejs/kit': ^2.0.0 185 + 186 + '@sveltejs/kit@2.59.1': 187 + resolution: {integrity: sha512-d8OON70AphLdDesuTIl//M2O6fRTIicX8aYv8vhCiYEhTTI2OboKqey0Hu1A4VFhqwgqtq0vKDmPFGkw8kKmgw==} 188 + engines: {node: '>=18.13'} 189 + hasBin: true 190 + peerDependencies: 191 + '@opentelemetry/api': ^1.0.0 192 + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0 193 + svelte: ^4.0.0 || ^5.0.0-next.0 194 + typescript: ^5.3.3 || ^6.0.0 195 + vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0 196 + peerDependenciesMeta: 197 + '@opentelemetry/api': 198 + optional: true 199 + typescript: 200 + optional: true 201 + 202 + '@sveltejs/vite-plugin-svelte@7.1.1': 203 + resolution: {integrity: sha512-FOJdbE5pxae68DoTBJ49t1dIA7TSmMHR6CsuJhX90cO/UfrEMHA7KJNUj3WdZuUDJPu4ujqpJ2Tgqd2gTWr6Xg==} 204 + engines: {node: ^20.19 || ^22.12 || >=24} 205 + peerDependencies: 206 + svelte: ^5.46.4 207 + vite: ^8.0.0-beta.7 || ^8.0.0 208 + 209 + '@tybys/wasm-util@0.10.2': 210 + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} 211 + 212 + '@types/cookie@0.6.0': 213 + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 214 + 215 + '@types/estree@1.0.8': 216 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 217 + 218 + '@types/node@25.6.0': 219 + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} 220 + 221 + '@types/trusted-types@2.0.7': 222 + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} 223 + 224 + acorn@8.16.0: 225 + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} 226 + engines: {node: '>=0.4.0'} 227 + hasBin: true 228 + 229 + aria-query@5.3.1: 230 + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} 231 + engines: {node: '>= 0.4'} 232 + 233 + axobject-query@4.1.0: 234 + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 235 + engines: {node: '>= 0.4'} 236 + 237 + chokidar@4.0.3: 238 + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 239 + engines: {node: '>= 14.16.0'} 240 + 241 + clsx@2.1.1: 242 + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 243 + engines: {node: '>=6'} 244 + 245 + cookie@0.6.0: 246 + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 247 + engines: {node: '>= 0.6'} 248 + 249 + deepmerge@4.3.1: 250 + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 251 + engines: {node: '>=0.10.0'} 252 + 253 + detect-libc@2.1.2: 254 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 255 + engines: {node: '>=8'} 256 + 257 + devalue@5.8.0: 258 + resolution: {integrity: sha512-2zA9pFEsnp7vWBZbXF5JAgAq0fsUIt/1XPbRiAmRV3lp/2C3upzH+sADiyy66aFCihoLEsrQHxNM5w1gIDfsBg==} 259 + 260 + esm-env@1.2.2: 261 + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 262 + 263 + esrap@2.2.6: 264 + resolution: {integrity: sha512-WN0clHt0a4mzC780UBVVBpsj4vSSjOFNRd2WjYtduB9HeKxm1sjHMNUwLEHVjI3FdCQD/Hurgz9ftbKEzP79Ow==} 265 + peerDependencies: 266 + '@typescript-eslint/types': ^8.2.0 267 + peerDependenciesMeta: 268 + '@typescript-eslint/types': 269 + optional: true 270 + 271 + fdir@6.5.0: 272 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 273 + engines: {node: '>=12.0.0'} 274 + peerDependencies: 275 + picomatch: ^3 || ^4 276 + peerDependenciesMeta: 277 + picomatch: 278 + optional: true 279 + 280 + fsevents@2.3.3: 281 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 282 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 283 + os: [darwin] 284 + 285 + is-reference@3.0.3: 286 + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 287 + 288 + kleur@4.1.5: 289 + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 290 + engines: {node: '>=6'} 291 + 292 + lightningcss-android-arm64@1.32.0: 293 + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} 294 + engines: {node: '>= 12.0.0'} 295 + cpu: [arm64] 296 + os: [android] 297 + 298 + lightningcss-darwin-arm64@1.32.0: 299 + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} 300 + engines: {node: '>= 12.0.0'} 301 + cpu: [arm64] 302 + os: [darwin] 303 + 304 + lightningcss-darwin-x64@1.32.0: 305 + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} 306 + engines: {node: '>= 12.0.0'} 307 + cpu: [x64] 308 + os: [darwin] 309 + 310 + lightningcss-freebsd-x64@1.32.0: 311 + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} 312 + engines: {node: '>= 12.0.0'} 313 + cpu: [x64] 314 + os: [freebsd] 315 + 316 + lightningcss-linux-arm-gnueabihf@1.32.0: 317 + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} 318 + engines: {node: '>= 12.0.0'} 319 + cpu: [arm] 320 + os: [linux] 321 + 322 + lightningcss-linux-arm64-gnu@1.32.0: 323 + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} 324 + engines: {node: '>= 12.0.0'} 325 + cpu: [arm64] 326 + os: [linux] 327 + libc: [glibc] 328 + 329 + lightningcss-linux-arm64-musl@1.32.0: 330 + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} 331 + engines: {node: '>= 12.0.0'} 332 + cpu: [arm64] 333 + os: [linux] 334 + libc: [musl] 335 + 336 + lightningcss-linux-x64-gnu@1.32.0: 337 + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} 338 + engines: {node: '>= 12.0.0'} 339 + cpu: [x64] 340 + os: [linux] 341 + libc: [glibc] 342 + 343 + lightningcss-linux-x64-musl@1.32.0: 344 + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} 345 + engines: {node: '>= 12.0.0'} 346 + cpu: [x64] 347 + os: [linux] 348 + libc: [musl] 349 + 350 + lightningcss-win32-arm64-msvc@1.32.0: 351 + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} 352 + engines: {node: '>= 12.0.0'} 353 + cpu: [arm64] 354 + os: [win32] 355 + 356 + lightningcss-win32-x64-msvc@1.32.0: 357 + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} 358 + engines: {node: '>= 12.0.0'} 359 + cpu: [x64] 360 + os: [win32] 361 + 362 + lightningcss@1.32.0: 363 + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} 364 + engines: {node: '>= 12.0.0'} 365 + 366 + locate-character@3.0.0: 367 + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 368 + 369 + magic-string@0.30.21: 370 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 371 + 372 + mri@1.2.0: 373 + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 374 + engines: {node: '>=4'} 375 + 376 + mrmime@2.0.1: 377 + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 378 + engines: {node: '>=10'} 379 + 380 + nanoid@3.3.12: 381 + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} 382 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 383 + hasBin: true 384 + 385 + obug@2.1.1: 386 + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 387 + 388 + picocolors@1.1.1: 389 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 390 + 391 + picomatch@4.0.4: 392 + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} 393 + engines: {node: '>=12'} 394 + 395 + postcss@8.5.14: 396 + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} 397 + engines: {node: ^10 || ^12 || >=14} 398 + 399 + readdirp@4.1.2: 400 + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 401 + engines: {node: '>= 14.18.0'} 402 + 403 + rolldown@1.0.0-rc.17: 404 + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} 405 + engines: {node: ^20.19.0 || >=22.12.0} 406 + hasBin: true 407 + 408 + sade@1.8.1: 409 + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 410 + engines: {node: '>=6'} 411 + 412 + set-cookie-parser@3.1.0: 413 + resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} 414 + 415 + sirv@3.0.2: 416 + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} 417 + engines: {node: '>=18'} 418 + 419 + source-map-js@1.2.1: 420 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 421 + engines: {node: '>=0.10.0'} 422 + 423 + svelte-check@4.4.8: 424 + resolution: {integrity: sha512-67adfgBox5eNSNIvIIwgFizKGdcRrGpiMoNO2obHcYuLz7iTa8Xgm/NGU3ntMFnNm8K1grFOIG6HhMLX/vcN8w==} 425 + engines: {node: '>= 18.0.0'} 426 + hasBin: true 427 + peerDependencies: 428 + svelte: ^4.0.0 || ^5.0.0-next.0 429 + typescript: '>=5.0.0' 430 + 431 + svelte@5.55.5: 432 + resolution: {integrity: sha512-2uCs/LZ9us+AktdzYJM8OcxQ8qnPS1kpaO7syGT/MgO+6Qr1Ybl+TqPq+97u7PHqmmMlye5ZkoyXONy5mjjAbw==} 433 + engines: {node: '>=18'} 434 + 435 + tinyglobby@0.2.16: 436 + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} 437 + engines: {node: '>=12.0.0'} 438 + 439 + totalist@3.0.1: 440 + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 441 + engines: {node: '>=6'} 442 + 443 + tslib@2.8.1: 444 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 445 + 446 + typescript@6.0.3: 447 + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} 448 + engines: {node: '>=14.17'} 449 + hasBin: true 450 + 451 + undici-types@7.19.2: 452 + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} 453 + 454 + vite@8.0.10: 455 + resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} 456 + engines: {node: ^20.19.0 || >=22.12.0} 457 + hasBin: true 458 + peerDependencies: 459 + '@types/node': ^20.19.0 || >=22.12.0 460 + '@vitejs/devtools': ^0.1.0 461 + esbuild: ^0.27.0 || ^0.28.0 462 + jiti: '>=1.21.0' 463 + less: ^4.0.0 464 + sass: ^1.70.0 465 + sass-embedded: ^1.70.0 466 + stylus: '>=0.54.8' 467 + sugarss: ^5.0.0 468 + terser: ^5.16.0 469 + tsx: ^4.8.1 470 + yaml: ^2.4.2 471 + peerDependenciesMeta: 472 + '@types/node': 473 + optional: true 474 + '@vitejs/devtools': 475 + optional: true 476 + esbuild: 477 + optional: true 478 + jiti: 479 + optional: true 480 + less: 481 + optional: true 482 + sass: 483 + optional: true 484 + sass-embedded: 485 + optional: true 486 + stylus: 487 + optional: true 488 + sugarss: 489 + optional: true 490 + terser: 491 + optional: true 492 + tsx: 493 + optional: true 494 + yaml: 495 + optional: true 496 + 497 + vitefu@1.1.3: 498 + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} 499 + peerDependencies: 500 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 501 + peerDependenciesMeta: 502 + vite: 503 + optional: true 504 + 505 + zimmerframe@1.1.4: 506 + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} 507 + 508 + snapshots: 509 + 510 + '@emnapi/core@1.10.0': 511 + dependencies: 512 + '@emnapi/wasi-threads': 1.2.1 513 + tslib: 2.8.1 514 + optional: true 515 + 516 + '@emnapi/runtime@1.10.0': 517 + dependencies: 518 + tslib: 2.8.1 519 + optional: true 520 + 521 + '@emnapi/wasi-threads@1.2.1': 522 + dependencies: 523 + tslib: 2.8.1 524 + optional: true 525 + 526 + '@jridgewell/gen-mapping@0.3.13': 527 + dependencies: 528 + '@jridgewell/sourcemap-codec': 1.5.5 529 + '@jridgewell/trace-mapping': 0.3.31 530 + 531 + '@jridgewell/remapping@2.3.5': 532 + dependencies: 533 + '@jridgewell/gen-mapping': 0.3.13 534 + '@jridgewell/trace-mapping': 0.3.31 535 + 536 + '@jridgewell/resolve-uri@3.1.2': {} 537 + 538 + '@jridgewell/sourcemap-codec@1.5.5': {} 539 + 540 + '@jridgewell/trace-mapping@0.3.31': 541 + dependencies: 542 + '@jridgewell/resolve-uri': 3.1.2 543 + '@jridgewell/sourcemap-codec': 1.5.5 544 + 545 + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': 546 + dependencies: 547 + '@emnapi/core': 1.10.0 548 + '@emnapi/runtime': 1.10.0 549 + '@tybys/wasm-util': 0.10.2 550 + optional: true 551 + 552 + '@oxc-project/types@0.127.0': {} 553 + 554 + '@polka/url@1.0.0-next.29': {} 555 + 556 + '@rolldown/binding-android-arm64@1.0.0-rc.17': 557 + optional: true 558 + 559 + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': 560 + optional: true 561 + 562 + '@rolldown/binding-darwin-x64@1.0.0-rc.17': 563 + optional: true 564 + 565 + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': 566 + optional: true 567 + 568 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': 569 + optional: true 570 + 571 + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': 572 + optional: true 573 + 574 + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': 575 + optional: true 576 + 577 + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': 578 + optional: true 579 + 580 + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': 581 + optional: true 582 + 583 + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': 584 + optional: true 585 + 586 + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': 587 + optional: true 588 + 589 + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': 590 + optional: true 591 + 592 + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': 593 + dependencies: 594 + '@emnapi/core': 1.10.0 595 + '@emnapi/runtime': 1.10.0 596 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) 597 + optional: true 598 + 599 + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': 600 + optional: true 601 + 602 + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': 603 + optional: true 604 + 605 + '@rolldown/pluginutils@1.0.0-rc.17': {} 606 + 607 + '@standard-schema/spec@1.1.0': {} 608 + 609 + '@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)': 610 + dependencies: 611 + acorn: 8.16.0 612 + 613 + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)))': 614 + dependencies: 615 + '@sveltejs/kit': 2.59.1(@sveltejs/vite-plugin-svelte@7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)) 616 + 617 + '@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)))(svelte@5.55.5)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0))': 618 + dependencies: 619 + '@standard-schema/spec': 1.1.0 620 + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) 621 + '@sveltejs/vite-plugin-svelte': 7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0)) 622 + '@types/cookie': 0.6.0 623 + acorn: 8.16.0 624 + cookie: 0.6.0 625 + devalue: 5.8.0 626 + esm-env: 1.2.2 627 + kleur: 4.1.5 628 + magic-string: 0.30.21 629 + mrmime: 2.0.1 630 + set-cookie-parser: 3.1.0 631 + sirv: 3.0.2 632 + svelte: 5.55.5 633 + vite: 8.0.10(@types/node@25.6.0) 634 + optionalDependencies: 635 + typescript: 6.0.3 636 + 637 + '@sveltejs/vite-plugin-svelte@7.1.1(svelte@5.55.5)(vite@8.0.10(@types/node@25.6.0))': 638 + dependencies: 639 + deepmerge: 4.3.1 640 + magic-string: 0.30.21 641 + obug: 2.1.1 642 + svelte: 5.55.5 643 + vite: 8.0.10(@types/node@25.6.0) 644 + vitefu: 1.1.3(vite@8.0.10(@types/node@25.6.0)) 645 + 646 + '@tybys/wasm-util@0.10.2': 647 + dependencies: 648 + tslib: 2.8.1 649 + optional: true 650 + 651 + '@types/cookie@0.6.0': {} 652 + 653 + '@types/estree@1.0.8': {} 654 + 655 + '@types/node@25.6.0': 656 + dependencies: 657 + undici-types: 7.19.2 658 + 659 + '@types/trusted-types@2.0.7': {} 660 + 661 + acorn@8.16.0: {} 662 + 663 + aria-query@5.3.1: {} 664 + 665 + axobject-query@4.1.0: {} 666 + 667 + chokidar@4.0.3: 668 + dependencies: 669 + readdirp: 4.1.2 670 + 671 + clsx@2.1.1: {} 672 + 673 + cookie@0.6.0: {} 674 + 675 + deepmerge@4.3.1: {} 676 + 677 + detect-libc@2.1.2: {} 678 + 679 + devalue@5.8.0: {} 680 + 681 + esm-env@1.2.2: {} 682 + 683 + esrap@2.2.6: 684 + dependencies: 685 + '@jridgewell/sourcemap-codec': 1.5.5 686 + 687 + fdir@6.5.0(picomatch@4.0.4): 688 + optionalDependencies: 689 + picomatch: 4.0.4 690 + 691 + fsevents@2.3.3: 692 + optional: true 693 + 694 + is-reference@3.0.3: 695 + dependencies: 696 + '@types/estree': 1.0.8 697 + 698 + kleur@4.1.5: {} 699 + 700 + lightningcss-android-arm64@1.32.0: 701 + optional: true 702 + 703 + lightningcss-darwin-arm64@1.32.0: 704 + optional: true 705 + 706 + lightningcss-darwin-x64@1.32.0: 707 + optional: true 708 + 709 + lightningcss-freebsd-x64@1.32.0: 710 + optional: true 711 + 712 + lightningcss-linux-arm-gnueabihf@1.32.0: 713 + optional: true 714 + 715 + lightningcss-linux-arm64-gnu@1.32.0: 716 + optional: true 717 + 718 + lightningcss-linux-arm64-musl@1.32.0: 719 + optional: true 720 + 721 + lightningcss-linux-x64-gnu@1.32.0: 722 + optional: true 723 + 724 + lightningcss-linux-x64-musl@1.32.0: 725 + optional: true 726 + 727 + lightningcss-win32-arm64-msvc@1.32.0: 728 + optional: true 729 + 730 + lightningcss-win32-x64-msvc@1.32.0: 731 + optional: true 732 + 733 + lightningcss@1.32.0: 734 + dependencies: 735 + detect-libc: 2.1.2 736 + optionalDependencies: 737 + lightningcss-android-arm64: 1.32.0 738 + lightningcss-darwin-arm64: 1.32.0 739 + lightningcss-darwin-x64: 1.32.0 740 + lightningcss-freebsd-x64: 1.32.0 741 + lightningcss-linux-arm-gnueabihf: 1.32.0 742 + lightningcss-linux-arm64-gnu: 1.32.0 743 + lightningcss-linux-arm64-musl: 1.32.0 744 + lightningcss-linux-x64-gnu: 1.32.0 745 + lightningcss-linux-x64-musl: 1.32.0 746 + lightningcss-win32-arm64-msvc: 1.32.0 747 + lightningcss-win32-x64-msvc: 1.32.0 748 + 749 + locate-character@3.0.0: {} 750 + 751 + magic-string@0.30.21: 752 + dependencies: 753 + '@jridgewell/sourcemap-codec': 1.5.5 754 + 755 + mri@1.2.0: {} 756 + 757 + mrmime@2.0.1: {} 758 + 759 + nanoid@3.3.12: {} 760 + 761 + obug@2.1.1: {} 762 + 763 + picocolors@1.1.1: {} 764 + 765 + picomatch@4.0.4: {} 766 + 767 + postcss@8.5.14: 768 + dependencies: 769 + nanoid: 3.3.12 770 + picocolors: 1.1.1 771 + source-map-js: 1.2.1 772 + 773 + readdirp@4.1.2: {} 774 + 775 + rolldown@1.0.0-rc.17: 776 + dependencies: 777 + '@oxc-project/types': 0.127.0 778 + '@rolldown/pluginutils': 1.0.0-rc.17 779 + optionalDependencies: 780 + '@rolldown/binding-android-arm64': 1.0.0-rc.17 781 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 782 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 783 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 784 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 785 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 786 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 787 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 788 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 789 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 790 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 791 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 792 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 793 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 794 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 795 + 796 + sade@1.8.1: 797 + dependencies: 798 + mri: 1.2.0 799 + 800 + set-cookie-parser@3.1.0: {} 801 + 802 + sirv@3.0.2: 803 + dependencies: 804 + '@polka/url': 1.0.0-next.29 805 + mrmime: 2.0.1 806 + totalist: 3.0.1 807 + 808 + source-map-js@1.2.1: {} 809 + 810 + svelte-check@4.4.8(picomatch@4.0.4)(svelte@5.55.5)(typescript@6.0.3): 811 + dependencies: 812 + '@jridgewell/trace-mapping': 0.3.31 813 + chokidar: 4.0.3 814 + fdir: 6.5.0(picomatch@4.0.4) 815 + picocolors: 1.1.1 816 + sade: 1.8.1 817 + svelte: 5.55.5 818 + typescript: 6.0.3 819 + transitivePeerDependencies: 820 + - picomatch 821 + 822 + svelte@5.55.5: 823 + dependencies: 824 + '@jridgewell/remapping': 2.3.5 825 + '@jridgewell/sourcemap-codec': 1.5.5 826 + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) 827 + '@types/estree': 1.0.8 828 + '@types/trusted-types': 2.0.7 829 + acorn: 8.16.0 830 + aria-query: 5.3.1 831 + axobject-query: 4.1.0 832 + clsx: 2.1.1 833 + devalue: 5.8.0 834 + esm-env: 1.2.2 835 + esrap: 2.2.6 836 + is-reference: 3.0.3 837 + locate-character: 3.0.0 838 + magic-string: 0.30.21 839 + zimmerframe: 1.1.4 840 + transitivePeerDependencies: 841 + - '@typescript-eslint/types' 842 + 843 + tinyglobby@0.2.16: 844 + dependencies: 845 + fdir: 6.5.0(picomatch@4.0.4) 846 + picomatch: 4.0.4 847 + 848 + totalist@3.0.1: {} 849 + 850 + tslib@2.8.1: 851 + optional: true 852 + 853 + typescript@6.0.3: {} 854 + 855 + undici-types@7.19.2: {} 856 + 857 + vite@8.0.10(@types/node@25.6.0): 858 + dependencies: 859 + lightningcss: 1.32.0 860 + picomatch: 4.0.4 861 + postcss: 8.5.14 862 + rolldown: 1.0.0-rc.17 863 + tinyglobby: 0.2.16 864 + optionalDependencies: 865 + '@types/node': 25.6.0 866 + fsevents: 2.3.3 867 + 868 + vitefu@1.1.3(vite@8.0.10(@types/node@25.6.0)): 869 + optionalDependencies: 870 + vite: 8.0.10(@types/node@25.6.0) 871 + 872 + zimmerframe@1.1.4: {}
+2
pnpm-workspace.yaml
··· 1 + onlyBuiltDependencies: 2 + - esbuild
+13
src/app.d.ts
··· 1 + // See https://svelte.dev/docs/kit/types#app.d.ts 2 + // for information about these interfaces 3 + declare global { 4 + namespace App { 5 + // interface Error {} 6 + // interface Locals {} 7 + // interface PageData {} 8 + // interface PageState {} 9 + // interface Platform {} 10 + } 11 + } 12 + 13 + export {};
+12
src/app.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="text-scale" content="scale" /> 7 + %sveltekit.head% 8 + </head> 9 + <body data-sveltekit-preload-data="hover"> 10 + <div style="display: contents">%sveltekit.body%</div> 11 + </body> 12 + </html>
+51
src/lib/components/MultipleChoiceQuestion.svelte
··· 1 + <script lang="ts"> 2 + import { randomHiragana, getNRandomHiraganaReadingsExcept } from "$lib/kana"; 3 + 4 + let question = $state({ 5 + hiragana: "", 6 + answer: "", 7 + }) 8 + 9 + let choices = $state([]); 10 + 11 + 12 + function nextQuestion() { 13 + const [hiragana, reading] = randomHiragana(); 14 + 15 + question = { 16 + hiragana: hiragana, 17 + answer: reading 18 + } 19 + 20 + choices = [reading, ...getNRandomHiraganaReadingsExcept(2, hiragana)].sort(() => Math.random() - 0.5);; 21 + } 22 + 23 + nextQuestion(); 24 + 25 + let answer = $state(""); 26 + 27 + function submitAnswer() { 28 + console.log(answer, question.answer); 29 + if (answer === question.answer) { 30 + nextQuestion(); 31 + } 32 + } 33 + </script> 34 + 35 + <fieldset> 36 + <legend>{question.hiragana}</legend> 37 + 38 + {#each choices as choice} 39 + <label> 40 + <input 41 + type="radio" 42 + name="question" 43 + value={choice} 44 + bind:group={answer} 45 + on:change={submitAnswer} 46 + /> 47 + {choice} 48 + </label> 49 + 50 + {/each} 51 + </fieldset>
+33
src/lib/components/TypedAnswerQuestion.svelte
··· 1 + <script lang="ts"> 2 + import { randomHiragana } from "$lib/kana"; 3 + 4 + let question = $state({ 5 + hiragana: "", 6 + answer: "", 7 + }) 8 + 9 + let submission = $state(""); 10 + 11 + function nextQuestion() { 12 + const [hiragana, reading] = randomHiragana(); 13 + 14 + question = { 15 + hiragana: hiragana, 16 + answer: reading 17 + } 18 + submission = ""; 19 + } 20 + 21 + function checkAnswer() { 22 + if (submission === question.answer) { 23 + nextQuestion(); 24 + } 25 + } 26 + 27 + nextQuestion(); 28 + </script> 29 + 30 + 31 + <p>{question.hiragana}</p> 32 + 33 + <input bind:value={submission} oninput={checkAnswer} />
+1
src/lib/index.ts
··· 1 + // place files you want to import through the `$lib` alias in this folder.
+191
src/lib/kana.ts
··· 1 + export const hiraganaMap = { 2 + 3 + // Simple 4 + "あ": "a", 5 + "い": "i", 6 + "う": "u", 7 + "え": "e", 8 + "お": "o", 9 + 10 + // K 11 + "か": "ka", 12 + "き": "ki", 13 + "く": "ku", 14 + "け": "ke", 15 + "こ": "ko", 16 + 17 + // S 18 + "さ": "sa", 19 + "し": "shi", 20 + "す": "su", 21 + "せ": "se", 22 + "そ": "so", 23 + 24 + // T 25 + "た": "ta", 26 + "ち": "chi", 27 + "つ": "tsu", 28 + "て": "te", 29 + "と": "to", 30 + 31 + // N 32 + "な": "na", 33 + "に": "ni", 34 + "ぬ": "nu", 35 + "ね": "ne", 36 + "の": "no", 37 + 38 + // H 39 + "は": "ha", 40 + "ひ": "hi", 41 + "ふ": "fu", 42 + "へ": "he", 43 + "ほ": "ho", 44 + 45 + 46 + // M 47 + "ま": "ma", 48 + "み": "mi", 49 + "む": "mu", 50 + "め": "me", 51 + "も": "mo", 52 + 53 + // Y 54 + "や": "ya", 55 + "ゆ": "yu", 56 + "よ": "yo", 57 + 58 + // R 59 + "ら": "ra", 60 + "り": "ri", 61 + "る": "ru", 62 + "れ": "re", 63 + "ろ": "ro", 64 + 65 + // W 66 + "わ": "wa", 67 + "を": "wo", 68 + 69 + // N 70 + "ん": "n", 71 + 72 + // Dakuten: G 73 + "が": "ga", 74 + "ぎ": "gi", 75 + "ぐ": "gu", 76 + "げ": "ge", 77 + "ご": "go", 78 + 79 + // Dakuten: Z 80 + "ざ": "za", 81 + "じ": "ji", 82 + "ず": "zu", 83 + "ぜ": "ze", 84 + "ぞ": "zo", 85 + 86 + // Dakuten: D 87 + "だ": "da", 88 + "ぢ": "ji", 89 + "づ": "zu", 90 + "で": "de", 91 + "ど": "do", 92 + 93 + // Dakuten: B 94 + "ば": "ba", 95 + "び": "bi", 96 + "ぶ": "bu", 97 + "べ": "be", 98 + "ぼ": "bo", 99 + 100 + // Handakuten: P 101 + "ぱ": "pa", 102 + "ぴ": "pi", 103 + "ぷ": "pu", 104 + "ぺ": "pe", 105 + "ぽ": "po", 106 + }; 107 + 108 + export const hiragana = Object.keys(hiraganaMap); 109 + export const hiraganaReadings = Object.values(hiraganaMap); 110 + 111 + export const hiraganaCombinationMap = { 112 + // K + small Y 113 + "きゃ": "kya", 114 + "きゅ": "kyu", 115 + "きょ": "kyo", 116 + 117 + // S + small Y 118 + "しゃ": "sha", 119 + "しゅ": "shu", 120 + "しょ": "sho", 121 + 122 + // T + small Y 123 + "ちゃ": "cha", 124 + "ちゅ": "chu", 125 + "ちょ": "cho", 126 + 127 + // N + small Y 128 + "にゃ": "nya", 129 + "にゅ": "nyu", 130 + "にょ": "nyo", 131 + 132 + // H + small Y 133 + "ひゃ": "hya", 134 + "ひゅ": "hyu", 135 + "ひょ": "hyo", 136 + 137 + // M + small Y 138 + "みゃ": "mya", 139 + "みゅ": "myu", 140 + "みょ": "myo", 141 + 142 + // R + small Y 143 + "りゃ": "rya", 144 + "りゅ": "ryu", 145 + "りょ": "ryo", 146 + 147 + // G + small Y 148 + "ぎゃ": "gya", 149 + "ぎゅ": "gyu", 150 + "ぎょ": "gyo", 151 + 152 + // J/Z + small Y 153 + "じゃ": "ja", 154 + "じゅ": "ju", 155 + "じょ": "jo", 156 + 157 + // D + small Y; uncommon, usually romanized like J 158 + "ぢゃ": "ja", 159 + "ぢゅ": "ju", 160 + "ぢょ": "jo", 161 + 162 + // B + small Y 163 + "びゃ": "bya", 164 + "びゅ": "byu", 165 + "びょ": "byo", 166 + 167 + // P + small Y 168 + "ぴゃ": "pya", 169 + "ぴゅ": "pyu", 170 + "ぴょ": "pyo", 171 + }; 172 + 173 + export const hiraganaCombinations = Object.keys(hiraganaMap); 174 + export const hiraganaCombinationReadings = Object.values(hiraganaCombinationMap); 175 + 176 + export function randomHiragana() { 177 + const entries = Object.entries(hiraganaMap) 178 + return entries[Math.floor(Math.random() * entries.length)] 179 + } 180 + 181 + export function randomHiraganaCombination() { 182 + const entries = Object.entries(hiraganaCombinationMap) 183 + return entries[Math.floor(Math.random() * entries.length)] 184 + } 185 + 186 + export function getNRandomHiraganaReadingsExcept(n: number, excluded: string) { 187 + return hiraganaReadings 188 + .filter(h => h !== excluded) 189 + .sort(() => Math.random() - 0.5) 190 + .slice(0, 2); 191 + }
+5
src/routes/+layout.svelte
··· 1 + <script lang="ts"> 2 + let { children } = $props(); 3 + </script> 4 + 5 + {@render children()}
+8
src/routes/+page.svelte
··· 1 + <script> 2 + import TypedAnswerQuestion from "$lib/components/TypedAnswerQuestion.svelte"; 3 + import MultipleChoiceQuestion from "$lib/components/MultipleChoiceQuestion.svelte" 4 + 5 + let questionsAnswered = $state(0) 6 + </script> 7 + 8 + <MultipleChoiceQuestion />
+3
static/robots.txt
··· 1 + # allow crawling everything by default 2 + User-agent: * 3 + Disallow:
+17
svelte.config.js
··· 1 + import adapter from '@sveltejs/adapter-auto'; 2 + 3 + /** @type {import('@sveltejs/kit').Config} */ 4 + const config = { 5 + compilerOptions: { 6 + // Force runes mode for the project, except for libraries. Can be removed in svelte 6. 7 + runes: ({ filename }) => (filename.split(/[/\\]/).includes('node_modules') ? undefined : true) 8 + }, 9 + kit: { 10 + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. 11 + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. 12 + // See https://svelte.dev/docs/kit/adapters for more information about adapters. 13 + adapter: adapter() 14 + } 15 + }; 16 + 17 + export default config;
+20
tsconfig.json
··· 1 + { 2 + "extends": "./.svelte-kit/tsconfig.json", 3 + "compilerOptions": { 4 + "rewriteRelativeImportExtensions": true, 5 + "allowJs": true, 6 + "checkJs": true, 7 + "esModuleInterop": true, 8 + "forceConsistentCasingInFileNames": true, 9 + "resolveJsonModule": true, 10 + "skipLibCheck": true, 11 + "sourceMap": true, 12 + "strict": true, 13 + "moduleResolution": "bundler" 14 + } 15 + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias 16 + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files 17 + // 18 + // To make changes to top-level options such as include and exclude, we recommend extending 19 + // the generated config; see https://svelte.dev/docs/kit/configuration#typescript 20 + }
+6
vite.config.ts
··· 1 + import { sveltekit } from '@sveltejs/kit/vite'; 2 + import { defineConfig } from 'vite'; 3 + 4 + export default defineConfig({ 5 + plugins: [sveltekit()] 6 + });