decentralised sync engine
0
fork

Configure Feed

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

refactor: start project from new

serenity 6e2b55c3 0fc33067

+825 -310
+3
.example.env
··· 1 + # port for the lattice server to run on. 2 + # defaults to 7338. 3 + SERVER_PORT="7338"
+7 -2
eslint.config.mts
··· 1 1 import js from "@eslint/js"; 2 2 import globals from "globals"; 3 3 import tseslint from "typescript-eslint"; 4 - import { defineConfig } from "eslint/config"; 4 + import { defineConfig, globalIgnores } from "eslint/config"; 5 5 6 6 export default defineConfig([ 7 + globalIgnores(["*.config.*", "dist/*"]), 7 8 { 8 9 files: ["**/*.{js,mjs,cjs,ts,mts,cts}"], 9 10 plugins: { js }, ··· 15 16 { 16 17 rules: { 17 18 "@typescript-eslint/consistent-type-imports": "error", 19 + "@typescript-eslint/array-type": ["error", { default: "generic" }], 18 20 }, 19 21 languageOptions: { 20 - parserOptions: { projectService: true, tsconfigRootDir: __dirname }, 22 + parserOptions: { 23 + projectService: true, 24 + tsconfigRootDir: import.meta.dirname, 25 + }, 21 26 }, 22 27 }, 23 28 ]);
+5 -4
package.json
··· 5 5 "main": "index.js", 6 6 "scripts": { 7 7 "test": "echo \"Error: no test specified\" && exit 1", 8 - "dev": "tsc && tsc-alias && node dist/index.js", 8 + "dev": "tsx src/index.ts", 9 9 "lint": "eslint src/" 10 10 }, 11 11 "keywords": [], ··· 20 20 "globals": "^16.4.0", 21 21 "jiti": "^2.6.1", 22 22 "prettier": "^3.6.2", 23 - "ts-node": "^10.9.2", 24 - "tsc-alias": "^1.8.16", 25 - "tsconfig-paths": "^4.2.0", 23 + "tsx": "^4.20.6", 26 24 "typescript": "^5.9.3", 27 25 "typescript-eslint": "^8.46.0" 28 26 }, 29 27 "dependencies": { 28 + "@fastify/websocket": "^11.2.0", 29 + "dotenv": "^17.2.3", 30 + "fastify": "^5.6.1", 30 31 "ws": "^8.18.3", 31 32 "zod": "^4.1.12" 32 33 }
+660 -259
pnpm-lock.yaml
··· 8 8 9 9 .: 10 10 dependencies: 11 + '@fastify/websocket': 12 + specifier: ^11.2.0 13 + version: 11.2.0 14 + dotenv: 15 + specifier: ^17.2.3 16 + version: 17.2.3 17 + fastify: 18 + specifier: ^5.6.1 19 + version: 5.6.1 11 20 ws: 12 21 specifier: ^8.18.3 13 22 version: 8.18.3 ··· 36 45 prettier: 37 46 specifier: ^3.6.2 38 47 version: 3.6.2 39 - ts-node: 40 - specifier: ^10.9.2 41 - version: 10.9.2(@types/node@24.7.1)(typescript@5.9.3) 42 - tsc-alias: 43 - specifier: ^1.8.16 44 - version: 1.8.16 45 - tsconfig-paths: 46 - specifier: ^4.2.0 47 - version: 4.2.0 48 + tsx: 49 + specifier: ^4.20.6 50 + version: 4.20.6 48 51 typescript: 49 52 specifier: ^5.9.3 50 53 version: 5.9.3 ··· 54 57 55 58 packages: 56 59 57 - '@cspotcode/source-map-support@0.8.1': 58 - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 59 - engines: {node: '>=12'} 60 + '@esbuild/aix-ppc64@0.25.11': 61 + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} 62 + engines: {node: '>=18'} 63 + cpu: [ppc64] 64 + os: [aix] 65 + 66 + '@esbuild/android-arm64@0.25.11': 67 + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} 68 + engines: {node: '>=18'} 69 + cpu: [arm64] 70 + os: [android] 71 + 72 + '@esbuild/android-arm@0.25.11': 73 + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} 74 + engines: {node: '>=18'} 75 + cpu: [arm] 76 + os: [android] 77 + 78 + '@esbuild/android-x64@0.25.11': 79 + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} 80 + engines: {node: '>=18'} 81 + cpu: [x64] 82 + os: [android] 83 + 84 + '@esbuild/darwin-arm64@0.25.11': 85 + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} 86 + engines: {node: '>=18'} 87 + cpu: [arm64] 88 + os: [darwin] 89 + 90 + '@esbuild/darwin-x64@0.25.11': 91 + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} 92 + engines: {node: '>=18'} 93 + cpu: [x64] 94 + os: [darwin] 95 + 96 + '@esbuild/freebsd-arm64@0.25.11': 97 + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} 98 + engines: {node: '>=18'} 99 + cpu: [arm64] 100 + os: [freebsd] 101 + 102 + '@esbuild/freebsd-x64@0.25.11': 103 + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} 104 + engines: {node: '>=18'} 105 + cpu: [x64] 106 + os: [freebsd] 107 + 108 + '@esbuild/linux-arm64@0.25.11': 109 + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} 110 + engines: {node: '>=18'} 111 + cpu: [arm64] 112 + os: [linux] 113 + 114 + '@esbuild/linux-arm@0.25.11': 115 + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} 116 + engines: {node: '>=18'} 117 + cpu: [arm] 118 + os: [linux] 119 + 120 + '@esbuild/linux-ia32@0.25.11': 121 + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} 122 + engines: {node: '>=18'} 123 + cpu: [ia32] 124 + os: [linux] 125 + 126 + '@esbuild/linux-loong64@0.25.11': 127 + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} 128 + engines: {node: '>=18'} 129 + cpu: [loong64] 130 + os: [linux] 131 + 132 + '@esbuild/linux-mips64el@0.25.11': 133 + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} 134 + engines: {node: '>=18'} 135 + cpu: [mips64el] 136 + os: [linux] 137 + 138 + '@esbuild/linux-ppc64@0.25.11': 139 + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} 140 + engines: {node: '>=18'} 141 + cpu: [ppc64] 142 + os: [linux] 143 + 144 + '@esbuild/linux-riscv64@0.25.11': 145 + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} 146 + engines: {node: '>=18'} 147 + cpu: [riscv64] 148 + os: [linux] 149 + 150 + '@esbuild/linux-s390x@0.25.11': 151 + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} 152 + engines: {node: '>=18'} 153 + cpu: [s390x] 154 + os: [linux] 155 + 156 + '@esbuild/linux-x64@0.25.11': 157 + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} 158 + engines: {node: '>=18'} 159 + cpu: [x64] 160 + os: [linux] 161 + 162 + '@esbuild/netbsd-arm64@0.25.11': 163 + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} 164 + engines: {node: '>=18'} 165 + cpu: [arm64] 166 + os: [netbsd] 167 + 168 + '@esbuild/netbsd-x64@0.25.11': 169 + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} 170 + engines: {node: '>=18'} 171 + cpu: [x64] 172 + os: [netbsd] 173 + 174 + '@esbuild/openbsd-arm64@0.25.11': 175 + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} 176 + engines: {node: '>=18'} 177 + cpu: [arm64] 178 + os: [openbsd] 179 + 180 + '@esbuild/openbsd-x64@0.25.11': 181 + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} 182 + engines: {node: '>=18'} 183 + cpu: [x64] 184 + os: [openbsd] 185 + 186 + '@esbuild/openharmony-arm64@0.25.11': 187 + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} 188 + engines: {node: '>=18'} 189 + cpu: [arm64] 190 + os: [openharmony] 191 + 192 + '@esbuild/sunos-x64@0.25.11': 193 + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} 194 + engines: {node: '>=18'} 195 + cpu: [x64] 196 + os: [sunos] 197 + 198 + '@esbuild/win32-arm64@0.25.11': 199 + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} 200 + engines: {node: '>=18'} 201 + cpu: [arm64] 202 + os: [win32] 203 + 204 + '@esbuild/win32-ia32@0.25.11': 205 + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} 206 + engines: {node: '>=18'} 207 + cpu: [ia32] 208 + os: [win32] 209 + 210 + '@esbuild/win32-x64@0.25.11': 211 + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} 212 + engines: {node: '>=18'} 213 + cpu: [x64] 214 + os: [win32] 60 215 61 216 '@eslint-community/eslint-utils@4.9.0': 62 217 resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} ··· 96 251 resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} 97 252 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 98 253 254 + '@fastify/ajv-compiler@4.0.5': 255 + resolution: {integrity: sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==} 256 + 257 + '@fastify/error@4.2.0': 258 + resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==} 259 + 260 + '@fastify/fast-json-stringify-compiler@5.0.3': 261 + resolution: {integrity: sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==} 262 + 263 + '@fastify/forwarded@3.0.1': 264 + resolution: {integrity: sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==} 265 + 266 + '@fastify/merge-json-schemas@0.2.1': 267 + resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} 268 + 269 + '@fastify/proxy-addr@5.1.0': 270 + resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==} 271 + 272 + '@fastify/websocket@11.2.0': 273 + resolution: {integrity: sha512-3HrDPbAG1CzUCqnslgJxppvzaAZffieOVbLp1DAy1huCSynUWPifSvfdEDUR8HlJLp3sp1A36uOM2tJogADS8w==} 274 + 99 275 '@humanfs/core@0.19.1': 100 276 resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 101 277 engines: {node: '>=18.18.0'} ··· 112 288 resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 113 289 engines: {node: '>=18.18'} 114 290 115 - '@jridgewell/resolve-uri@3.1.2': 116 - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 117 - engines: {node: '>=6.0.0'} 118 - 119 - '@jridgewell/sourcemap-codec@1.5.5': 120 - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 121 - 122 - '@jridgewell/trace-mapping@0.3.9': 123 - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 124 - 125 291 '@nodelib/fs.scandir@2.1.5': 126 292 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 127 293 engines: {node: '>= 8'} ··· 134 300 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 135 301 engines: {node: '>= 8'} 136 302 137 - '@tsconfig/node10@1.0.11': 138 - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} 139 - 140 - '@tsconfig/node12@1.0.11': 141 - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 142 - 143 - '@tsconfig/node14@1.0.3': 144 - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 145 - 146 - '@tsconfig/node16@1.0.4': 147 - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 303 + '@pinojs/redact@0.4.0': 304 + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} 148 305 149 306 '@types/estree@1.0.8': 150 307 resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} ··· 217 374 resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} 218 375 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 219 376 377 + abstract-logging@2.0.1: 378 + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} 379 + 220 380 acorn-jsx@5.3.2: 221 381 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 222 382 peerDependencies: 223 383 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 224 - 225 - acorn-walk@8.3.4: 226 - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} 227 - engines: {node: '>=0.4.0'} 228 384 229 385 acorn@8.15.0: 230 386 resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 231 387 engines: {node: '>=0.4.0'} 232 388 hasBin: true 233 389 390 + ajv-formats@3.0.1: 391 + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} 392 + peerDependencies: 393 + ajv: ^8.0.0 394 + peerDependenciesMeta: 395 + ajv: 396 + optional: true 397 + 234 398 ajv@6.12.6: 235 399 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 236 400 401 + ajv@8.17.1: 402 + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 403 + 237 404 ansi-styles@4.3.0: 238 405 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 239 406 engines: {node: '>=8'} 240 407 241 - anymatch@3.1.3: 242 - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 243 - engines: {node: '>= 8'} 244 - 245 - arg@4.1.3: 246 - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 247 - 248 408 argparse@2.0.1: 249 409 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 250 410 251 - array-union@2.1.0: 252 - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 253 - engines: {node: '>=8'} 411 + atomic-sleep@1.0.0: 412 + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 413 + engines: {node: '>=8.0.0'} 414 + 415 + avvio@9.1.0: 416 + resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} 254 417 255 418 balanced-match@1.0.2: 256 419 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 257 420 258 - binary-extensions@2.3.0: 259 - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 260 - engines: {node: '>=8'} 261 - 262 421 brace-expansion@1.1.12: 263 422 resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 264 423 ··· 277 436 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 278 437 engines: {node: '>=10'} 279 438 280 - chokidar@3.6.0: 281 - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 282 - engines: {node: '>= 8.10.0'} 283 - 284 439 color-convert@2.0.1: 285 440 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 286 441 engines: {node: '>=7.0.0'} ··· 288 443 color-name@1.1.4: 289 444 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 290 445 291 - commander@9.5.0: 292 - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} 293 - engines: {node: ^12.20.0 || >=14} 294 - 295 446 concat-map@0.0.1: 296 447 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 297 448 298 - create-require@1.1.1: 299 - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 449 + cookie@1.0.2: 450 + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 451 + engines: {node: '>=18'} 300 452 301 453 cross-spawn@7.0.6: 302 454 resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} ··· 314 466 deep-is@0.1.4: 315 467 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 316 468 317 - diff@4.0.2: 318 - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 319 - engines: {node: '>=0.3.1'} 469 + dequal@2.0.3: 470 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 471 + engines: {node: '>=6'} 472 + 473 + dotenv@17.2.3: 474 + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} 475 + engines: {node: '>=12'} 476 + 477 + duplexify@4.1.3: 478 + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} 479 + 480 + end-of-stream@1.4.5: 481 + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} 320 482 321 - dir-glob@3.0.1: 322 - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 323 - engines: {node: '>=8'} 483 + esbuild@0.25.11: 484 + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} 485 + engines: {node: '>=18'} 486 + hasBin: true 324 487 325 488 escape-string-regexp@4.0.0: 326 489 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} ··· 368 531 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 369 532 engines: {node: '>=0.10.0'} 370 533 534 + fast-decode-uri-component@1.0.1: 535 + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 536 + 371 537 fast-deep-equal@3.1.3: 372 538 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 373 539 ··· 377 543 378 544 fast-json-stable-stringify@2.1.0: 379 545 resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 546 + 547 + fast-json-stringify@6.1.1: 548 + resolution: {integrity: sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ==} 380 549 381 550 fast-levenshtein@2.0.6: 382 551 resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 383 552 553 + fast-querystring@1.1.2: 554 + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 555 + 556 + fast-uri@3.1.0: 557 + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} 558 + 559 + fastify-plugin@5.1.0: 560 + resolution: {integrity: sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==} 561 + 562 + fastify@5.6.1: 563 + resolution: {integrity: sha512-WjjlOciBF0K8pDUPZoGPhqhKrQJ02I8DKaDIfO51EL0kbSMwQFl85cRwhOvmSDWoukNOdTo27gLN549pLCcH7Q==} 564 + 384 565 fastq@1.19.1: 385 566 resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 386 567 ··· 392 573 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 393 574 engines: {node: '>=8'} 394 575 576 + find-my-way@9.3.0: 577 + resolution: {integrity: sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==} 578 + engines: {node: '>=20'} 579 + 395 580 find-up@5.0.0: 396 581 resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 397 582 engines: {node: '>=10'} ··· 408 593 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 409 594 os: [darwin] 410 595 411 - get-tsconfig@4.12.0: 412 - resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} 596 + get-tsconfig@4.13.0: 597 + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} 413 598 414 599 glob-parent@5.1.2: 415 600 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} ··· 427 612 resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} 428 613 engines: {node: '>=18'} 429 614 430 - globby@11.1.0: 431 - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 432 - engines: {node: '>=10'} 433 - 434 615 graphemer@1.4.0: 435 616 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 436 617 ··· 454 635 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 455 636 engines: {node: '>=0.8.19'} 456 637 457 - is-binary-path@2.1.0: 458 - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 459 - engines: {node: '>=8'} 638 + inherits@2.0.4: 639 + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 640 + 641 + ipaddr.js@2.2.0: 642 + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} 643 + engines: {node: '>= 10'} 460 644 461 645 is-extglob@2.1.1: 462 646 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} ··· 484 668 json-buffer@3.0.1: 485 669 resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 486 670 671 + json-schema-ref-resolver@3.0.0: 672 + resolution: {integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==} 673 + 487 674 json-schema-traverse@0.4.1: 488 675 resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 489 676 677 + json-schema-traverse@1.0.0: 678 + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 679 + 490 680 json-stable-stringify-without-jsonify@1.0.1: 491 681 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 492 682 493 - json5@2.2.3: 494 - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 495 - engines: {node: '>=6'} 496 - hasBin: true 497 - 498 683 keyv@4.5.4: 499 684 resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 500 685 ··· 502 687 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 503 688 engines: {node: '>= 0.8.0'} 504 689 690 + light-my-request@6.6.0: 691 + resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} 692 + 505 693 locate-path@6.0.0: 506 694 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 507 695 engines: {node: '>=10'} 508 696 509 697 lodash.merge@4.6.2: 510 698 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 511 - 512 - make-error@1.3.6: 513 - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 514 699 515 700 merge2@1.4.1: 516 701 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} ··· 527 712 resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 528 713 engines: {node: '>=16 || 14 >=14.17'} 529 714 530 - minimist@1.2.8: 531 - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 532 - 533 715 ms@2.1.3: 534 716 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 535 - 536 - mylas@2.1.13: 537 - resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} 538 - engines: {node: '>=12.0.0'} 539 717 540 718 natural-compare@1.4.0: 541 719 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 542 720 543 - normalize-path@3.0.0: 544 - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 545 - engines: {node: '>=0.10.0'} 721 + on-exit-leak-free@2.1.2: 722 + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 723 + engines: {node: '>=14.0.0'} 724 + 725 + once@1.4.0: 726 + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 546 727 547 728 optionator@0.9.4: 548 729 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} ··· 568 749 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 569 750 engines: {node: '>=8'} 570 751 571 - path-type@4.0.0: 572 - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 573 - engines: {node: '>=8'} 574 - 575 752 picomatch@2.3.1: 576 753 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 577 754 engines: {node: '>=8.6'} 578 755 579 - plimit-lit@1.6.1: 580 - resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} 581 - engines: {node: '>=12'} 756 + pino-abstract-transport@2.0.0: 757 + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} 758 + 759 + pino-std-serializers@7.0.0: 760 + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} 761 + 762 + pino@9.14.0: 763 + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} 764 + hasBin: true 582 765 583 766 prelude-ls@1.2.1: 584 767 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} ··· 589 772 engines: {node: '>=14'} 590 773 hasBin: true 591 774 775 + process-warning@4.0.1: 776 + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} 777 + 778 + process-warning@5.0.0: 779 + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} 780 + 592 781 punycode@2.3.1: 593 782 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 594 783 engines: {node: '>=6'} 595 784 596 - queue-lit@1.5.2: 597 - resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} 598 - engines: {node: '>=12'} 599 - 600 785 queue-microtask@1.2.3: 601 786 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 602 787 603 - readdirp@3.6.0: 604 - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 605 - engines: {node: '>=8.10.0'} 788 + quick-format-unescaped@4.0.4: 789 + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 790 + 791 + readable-stream@3.6.2: 792 + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 793 + engines: {node: '>= 6'} 794 + 795 + real-require@0.2.0: 796 + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 797 + engines: {node: '>= 12.13.0'} 798 + 799 + require-from-string@2.0.2: 800 + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 801 + engines: {node: '>=0.10.0'} 606 802 607 803 resolve-from@4.0.0: 608 804 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} ··· 611 807 resolve-pkg-maps@1.0.0: 612 808 resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 613 809 810 + ret@0.5.0: 811 + resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} 812 + engines: {node: '>=10'} 813 + 614 814 reusify@1.1.0: 615 815 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 616 816 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 617 817 818 + rfdc@1.4.1: 819 + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 820 + 618 821 run-parallel@1.2.0: 619 822 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 823 + 824 + safe-buffer@5.2.1: 825 + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 826 + 827 + safe-regex2@5.0.0: 828 + resolution: {integrity: sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==} 829 + 830 + safe-stable-stringify@2.5.0: 831 + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 832 + engines: {node: '>=10'} 833 + 834 + secure-json-parse@4.1.0: 835 + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} 620 836 621 837 semver@7.7.3: 622 838 resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 623 839 engines: {node: '>=10'} 624 840 hasBin: true 625 841 842 + set-cookie-parser@2.7.1: 843 + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 844 + 626 845 shebang-command@2.0.0: 627 846 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 628 847 engines: {node: '>=8'} ··· 631 850 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 632 851 engines: {node: '>=8'} 633 852 634 - slash@3.0.0: 635 - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 636 - engines: {node: '>=8'} 853 + sonic-boom@4.2.0: 854 + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} 637 855 638 - strip-bom@3.0.0: 639 - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 640 - engines: {node: '>=4'} 856 + split2@4.2.0: 857 + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 858 + engines: {node: '>= 10.x'} 859 + 860 + stream-shift@1.0.3: 861 + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} 862 + 863 + string_decoder@1.3.0: 864 + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 641 865 642 866 strip-json-comments@3.1.1: 643 867 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} ··· 647 871 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 648 872 engines: {node: '>=8'} 649 873 874 + thread-stream@3.1.0: 875 + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} 876 + 650 877 to-regex-range@5.0.1: 651 878 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 652 879 engines: {node: '>=8.0'} 653 880 881 + toad-cache@3.7.0: 882 + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} 883 + engines: {node: '>=12'} 884 + 654 885 ts-api-utils@2.1.0: 655 886 resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 656 887 engines: {node: '>=18.12'} 657 888 peerDependencies: 658 889 typescript: '>=4.8.4' 659 890 660 - ts-node@10.9.2: 661 - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 891 + tsx@4.20.6: 892 + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} 893 + engines: {node: '>=18.0.0'} 662 894 hasBin: true 663 - peerDependencies: 664 - '@swc/core': '>=1.2.50' 665 - '@swc/wasm': '>=1.2.50' 666 - '@types/node': '*' 667 - typescript: '>=2.7' 668 - peerDependenciesMeta: 669 - '@swc/core': 670 - optional: true 671 - '@swc/wasm': 672 - optional: true 673 - 674 - tsc-alias@1.8.16: 675 - resolution: {integrity: sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g==} 676 - engines: {node: '>=16.20.2'} 677 - hasBin: true 678 - 679 - tsconfig-paths@4.2.0: 680 - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} 681 - engines: {node: '>=6'} 682 895 683 896 type-check@0.4.0: 684 897 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} ··· 702 915 uri-js@4.4.1: 703 916 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 704 917 705 - v8-compile-cache-lib@3.0.1: 706 - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 918 + util-deprecate@1.0.2: 919 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 707 920 708 921 which@2.0.2: 709 922 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} ··· 714 927 resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 715 928 engines: {node: '>=0.10.0'} 716 929 930 + wrappy@1.0.2: 931 + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 932 + 717 933 ws@8.18.3: 718 934 resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} 719 935 engines: {node: '>=10.0.0'} ··· 726 942 utf-8-validate: 727 943 optional: true 728 944 729 - yn@3.1.1: 730 - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 731 - engines: {node: '>=6'} 732 - 733 945 yocto-queue@0.1.0: 734 946 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 735 947 engines: {node: '>=10'} ··· 739 951 740 952 snapshots: 741 953 742 - '@cspotcode/source-map-support@0.8.1': 743 - dependencies: 744 - '@jridgewell/trace-mapping': 0.3.9 954 + '@esbuild/aix-ppc64@0.25.11': 955 + optional: true 956 + 957 + '@esbuild/android-arm64@0.25.11': 958 + optional: true 959 + 960 + '@esbuild/android-arm@0.25.11': 961 + optional: true 962 + 963 + '@esbuild/android-x64@0.25.11': 964 + optional: true 965 + 966 + '@esbuild/darwin-arm64@0.25.11': 967 + optional: true 968 + 969 + '@esbuild/darwin-x64@0.25.11': 970 + optional: true 971 + 972 + '@esbuild/freebsd-arm64@0.25.11': 973 + optional: true 974 + 975 + '@esbuild/freebsd-x64@0.25.11': 976 + optional: true 977 + 978 + '@esbuild/linux-arm64@0.25.11': 979 + optional: true 980 + 981 + '@esbuild/linux-arm@0.25.11': 982 + optional: true 983 + 984 + '@esbuild/linux-ia32@0.25.11': 985 + optional: true 986 + 987 + '@esbuild/linux-loong64@0.25.11': 988 + optional: true 989 + 990 + '@esbuild/linux-mips64el@0.25.11': 991 + optional: true 992 + 993 + '@esbuild/linux-ppc64@0.25.11': 994 + optional: true 995 + 996 + '@esbuild/linux-riscv64@0.25.11': 997 + optional: true 998 + 999 + '@esbuild/linux-s390x@0.25.11': 1000 + optional: true 1001 + 1002 + '@esbuild/linux-x64@0.25.11': 1003 + optional: true 1004 + 1005 + '@esbuild/netbsd-arm64@0.25.11': 1006 + optional: true 1007 + 1008 + '@esbuild/netbsd-x64@0.25.11': 1009 + optional: true 1010 + 1011 + '@esbuild/openbsd-arm64@0.25.11': 1012 + optional: true 1013 + 1014 + '@esbuild/openbsd-x64@0.25.11': 1015 + optional: true 1016 + 1017 + '@esbuild/openharmony-arm64@0.25.11': 1018 + optional: true 1019 + 1020 + '@esbuild/sunos-x64@0.25.11': 1021 + optional: true 1022 + 1023 + '@esbuild/win32-arm64@0.25.11': 1024 + optional: true 1025 + 1026 + '@esbuild/win32-ia32@0.25.11': 1027 + optional: true 1028 + 1029 + '@esbuild/win32-x64@0.25.11': 1030 + optional: true 745 1031 746 1032 '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))': 747 1033 dependencies: ··· 789 1075 '@eslint/core': 0.16.0 790 1076 levn: 0.4.1 791 1077 1078 + '@fastify/ajv-compiler@4.0.5': 1079 + dependencies: 1080 + ajv: 8.17.1 1081 + ajv-formats: 3.0.1(ajv@8.17.1) 1082 + fast-uri: 3.1.0 1083 + 1084 + '@fastify/error@4.2.0': {} 1085 + 1086 + '@fastify/fast-json-stringify-compiler@5.0.3': 1087 + dependencies: 1088 + fast-json-stringify: 6.1.1 1089 + 1090 + '@fastify/forwarded@3.0.1': {} 1091 + 1092 + '@fastify/merge-json-schemas@0.2.1': 1093 + dependencies: 1094 + dequal: 2.0.3 1095 + 1096 + '@fastify/proxy-addr@5.1.0': 1097 + dependencies: 1098 + '@fastify/forwarded': 3.0.1 1099 + ipaddr.js: 2.2.0 1100 + 1101 + '@fastify/websocket@11.2.0': 1102 + dependencies: 1103 + duplexify: 4.1.3 1104 + fastify-plugin: 5.1.0 1105 + ws: 8.18.3 1106 + transitivePeerDependencies: 1107 + - bufferutil 1108 + - utf-8-validate 1109 + 792 1110 '@humanfs/core@0.19.1': {} 793 1111 794 1112 '@humanfs/node@0.16.7': ··· 800 1118 801 1119 '@humanwhocodes/retry@0.4.3': {} 802 1120 803 - '@jridgewell/resolve-uri@3.1.2': {} 804 - 805 - '@jridgewell/sourcemap-codec@1.5.5': {} 806 - 807 - '@jridgewell/trace-mapping@0.3.9': 808 - dependencies: 809 - '@jridgewell/resolve-uri': 3.1.2 810 - '@jridgewell/sourcemap-codec': 1.5.5 811 - 812 1121 '@nodelib/fs.scandir@2.1.5': 813 1122 dependencies: 814 1123 '@nodelib/fs.stat': 2.0.5 ··· 821 1130 '@nodelib/fs.scandir': 2.1.5 822 1131 fastq: 1.19.1 823 1132 824 - '@tsconfig/node10@1.0.11': {} 825 - 826 - '@tsconfig/node12@1.0.11': {} 827 - 828 - '@tsconfig/node14@1.0.3': {} 829 - 830 - '@tsconfig/node16@1.0.4': {} 1133 + '@pinojs/redact@0.4.0': {} 831 1134 832 1135 '@types/estree@1.0.8': {} 833 1136 ··· 934 1237 '@typescript-eslint/types': 8.46.0 935 1238 eslint-visitor-keys: 4.2.1 936 1239 937 - acorn-jsx@5.3.2(acorn@8.15.0): 938 - dependencies: 939 - acorn: 8.15.0 1240 + abstract-logging@2.0.1: {} 940 1241 941 - acorn-walk@8.3.4: 1242 + acorn-jsx@5.3.2(acorn@8.15.0): 942 1243 dependencies: 943 1244 acorn: 8.15.0 944 1245 945 1246 acorn@8.15.0: {} 1247 + 1248 + ajv-formats@3.0.1(ajv@8.17.1): 1249 + optionalDependencies: 1250 + ajv: 8.17.1 946 1251 947 1252 ajv@6.12.6: 948 1253 dependencies: ··· 951 1256 json-schema-traverse: 0.4.1 952 1257 uri-js: 4.4.1 953 1258 1259 + ajv@8.17.1: 1260 + dependencies: 1261 + fast-deep-equal: 3.1.3 1262 + fast-uri: 3.1.0 1263 + json-schema-traverse: 1.0.0 1264 + require-from-string: 2.0.2 1265 + 954 1266 ansi-styles@4.3.0: 955 1267 dependencies: 956 1268 color-convert: 2.0.1 957 1269 958 - anymatch@3.1.3: 959 - dependencies: 960 - normalize-path: 3.0.0 961 - picomatch: 2.3.1 1270 + argparse@2.0.1: {} 962 1271 963 - arg@4.1.3: {} 1272 + atomic-sleep@1.0.0: {} 964 1273 965 - argparse@2.0.1: {} 966 - 967 - array-union@2.1.0: {} 1274 + avvio@9.1.0: 1275 + dependencies: 1276 + '@fastify/error': 4.2.0 1277 + fastq: 1.19.1 968 1278 969 1279 balanced-match@1.0.2: {} 970 - 971 - binary-extensions@2.3.0: {} 972 1280 973 1281 brace-expansion@1.1.12: 974 1282 dependencies: ··· 990 1298 ansi-styles: 4.3.0 991 1299 supports-color: 7.2.0 992 1300 993 - chokidar@3.6.0: 994 - dependencies: 995 - anymatch: 3.1.3 996 - braces: 3.0.3 997 - glob-parent: 5.1.2 998 - is-binary-path: 2.1.0 999 - is-glob: 4.0.3 1000 - normalize-path: 3.0.0 1001 - readdirp: 3.6.0 1002 - optionalDependencies: 1003 - fsevents: 2.3.3 1004 - 1005 1301 color-convert@2.0.1: 1006 1302 dependencies: 1007 1303 color-name: 1.1.4 1008 1304 1009 1305 color-name@1.1.4: {} 1010 1306 1011 - commander@9.5.0: {} 1012 - 1013 1307 concat-map@0.0.1: {} 1014 1308 1015 - create-require@1.1.1: {} 1309 + cookie@1.0.2: {} 1016 1310 1017 1311 cross-spawn@7.0.6: 1018 1312 dependencies: ··· 1026 1320 1027 1321 deep-is@0.1.4: {} 1028 1322 1029 - diff@4.0.2: {} 1323 + dequal@2.0.3: {} 1030 1324 1031 - dir-glob@3.0.1: 1325 + dotenv@17.2.3: {} 1326 + 1327 + duplexify@4.1.3: 1032 1328 dependencies: 1033 - path-type: 4.0.0 1329 + end-of-stream: 1.4.5 1330 + inherits: 2.0.4 1331 + readable-stream: 3.6.2 1332 + stream-shift: 1.0.3 1333 + 1334 + end-of-stream@1.4.5: 1335 + dependencies: 1336 + once: 1.4.0 1337 + 1338 + esbuild@0.25.11: 1339 + optionalDependencies: 1340 + '@esbuild/aix-ppc64': 0.25.11 1341 + '@esbuild/android-arm': 0.25.11 1342 + '@esbuild/android-arm64': 0.25.11 1343 + '@esbuild/android-x64': 0.25.11 1344 + '@esbuild/darwin-arm64': 0.25.11 1345 + '@esbuild/darwin-x64': 0.25.11 1346 + '@esbuild/freebsd-arm64': 0.25.11 1347 + '@esbuild/freebsd-x64': 0.25.11 1348 + '@esbuild/linux-arm': 0.25.11 1349 + '@esbuild/linux-arm64': 0.25.11 1350 + '@esbuild/linux-ia32': 0.25.11 1351 + '@esbuild/linux-loong64': 0.25.11 1352 + '@esbuild/linux-mips64el': 0.25.11 1353 + '@esbuild/linux-ppc64': 0.25.11 1354 + '@esbuild/linux-riscv64': 0.25.11 1355 + '@esbuild/linux-s390x': 0.25.11 1356 + '@esbuild/linux-x64': 0.25.11 1357 + '@esbuild/netbsd-arm64': 0.25.11 1358 + '@esbuild/netbsd-x64': 0.25.11 1359 + '@esbuild/openbsd-arm64': 0.25.11 1360 + '@esbuild/openbsd-x64': 0.25.11 1361 + '@esbuild/openharmony-arm64': 0.25.11 1362 + '@esbuild/sunos-x64': 0.25.11 1363 + '@esbuild/win32-arm64': 0.25.11 1364 + '@esbuild/win32-ia32': 0.25.11 1365 + '@esbuild/win32-x64': 0.25.11 1034 1366 1035 1367 escape-string-regexp@4.0.0: {} 1036 1368 ··· 1103 1435 1104 1436 esutils@2.0.3: {} 1105 1437 1438 + fast-decode-uri-component@1.0.1: {} 1439 + 1106 1440 fast-deep-equal@3.1.3: {} 1107 1441 1108 1442 fast-glob@3.3.3: ··· 1115 1449 1116 1450 fast-json-stable-stringify@2.1.0: {} 1117 1451 1452 + fast-json-stringify@6.1.1: 1453 + dependencies: 1454 + '@fastify/merge-json-schemas': 0.2.1 1455 + ajv: 8.17.1 1456 + ajv-formats: 3.0.1(ajv@8.17.1) 1457 + fast-uri: 3.1.0 1458 + json-schema-ref-resolver: 3.0.0 1459 + rfdc: 1.4.1 1460 + 1118 1461 fast-levenshtein@2.0.6: {} 1119 1462 1463 + fast-querystring@1.1.2: 1464 + dependencies: 1465 + fast-decode-uri-component: 1.0.1 1466 + 1467 + fast-uri@3.1.0: {} 1468 + 1469 + fastify-plugin@5.1.0: {} 1470 + 1471 + fastify@5.6.1: 1472 + dependencies: 1473 + '@fastify/ajv-compiler': 4.0.5 1474 + '@fastify/error': 4.2.0 1475 + '@fastify/fast-json-stringify-compiler': 5.0.3 1476 + '@fastify/proxy-addr': 5.1.0 1477 + abstract-logging: 2.0.1 1478 + avvio: 9.1.0 1479 + fast-json-stringify: 6.1.1 1480 + find-my-way: 9.3.0 1481 + light-my-request: 6.6.0 1482 + pino: 9.14.0 1483 + process-warning: 5.0.0 1484 + rfdc: 1.4.1 1485 + secure-json-parse: 4.1.0 1486 + semver: 7.7.3 1487 + toad-cache: 3.7.0 1488 + 1120 1489 fastq@1.19.1: 1121 1490 dependencies: 1122 1491 reusify: 1.1.0 ··· 1129 1498 dependencies: 1130 1499 to-regex-range: 5.0.1 1131 1500 1501 + find-my-way@9.3.0: 1502 + dependencies: 1503 + fast-deep-equal: 3.1.3 1504 + fast-querystring: 1.1.2 1505 + safe-regex2: 5.0.0 1506 + 1132 1507 find-up@5.0.0: 1133 1508 dependencies: 1134 1509 locate-path: 6.0.0 ··· 1144 1519 fsevents@2.3.3: 1145 1520 optional: true 1146 1521 1147 - get-tsconfig@4.12.0: 1522 + get-tsconfig@4.13.0: 1148 1523 dependencies: 1149 1524 resolve-pkg-maps: 1.0.0 1150 1525 ··· 1160 1535 1161 1536 globals@16.4.0: {} 1162 1537 1163 - globby@11.1.0: 1164 - dependencies: 1165 - array-union: 2.1.0 1166 - dir-glob: 3.0.1 1167 - fast-glob: 3.3.3 1168 - ignore: 5.3.2 1169 - merge2: 1.4.1 1170 - slash: 3.0.0 1171 - 1172 1538 graphemer@1.4.0: {} 1173 1539 1174 1540 has-flag@4.0.0: {} ··· 1184 1550 1185 1551 imurmurhash@0.1.4: {} 1186 1552 1187 - is-binary-path@2.1.0: 1188 - dependencies: 1189 - binary-extensions: 2.3.0 1553 + inherits@2.0.4: {} 1554 + 1555 + ipaddr.js@2.2.0: {} 1190 1556 1191 1557 is-extglob@2.1.1: {} 1192 1558 ··· 1206 1572 1207 1573 json-buffer@3.0.1: {} 1208 1574 1575 + json-schema-ref-resolver@3.0.0: 1576 + dependencies: 1577 + dequal: 2.0.3 1578 + 1209 1579 json-schema-traverse@0.4.1: {} 1210 1580 1211 - json-stable-stringify-without-jsonify@1.0.1: {} 1581 + json-schema-traverse@1.0.0: {} 1212 1582 1213 - json5@2.2.3: {} 1583 + json-stable-stringify-without-jsonify@1.0.1: {} 1214 1584 1215 1585 keyv@4.5.4: 1216 1586 dependencies: ··· 1221 1591 prelude-ls: 1.2.1 1222 1592 type-check: 0.4.0 1223 1593 1594 + light-my-request@6.6.0: 1595 + dependencies: 1596 + cookie: 1.0.2 1597 + process-warning: 4.0.1 1598 + set-cookie-parser: 2.7.1 1599 + 1224 1600 locate-path@6.0.0: 1225 1601 dependencies: 1226 1602 p-locate: 5.0.0 1227 1603 1228 1604 lodash.merge@4.6.2: {} 1229 1605 1230 - make-error@1.3.6: {} 1231 - 1232 1606 merge2@1.4.1: {} 1233 1607 1234 1608 micromatch@4.0.8: ··· 1244 1618 dependencies: 1245 1619 brace-expansion: 2.0.2 1246 1620 1247 - minimist@1.2.8: {} 1248 - 1249 1621 ms@2.1.3: {} 1250 1622 1251 - mylas@2.1.13: {} 1252 - 1253 1623 natural-compare@1.4.0: {} 1254 1624 1255 - normalize-path@3.0.0: {} 1625 + on-exit-leak-free@2.1.2: {} 1626 + 1627 + once@1.4.0: 1628 + dependencies: 1629 + wrappy: 1.0.2 1256 1630 1257 1631 optionator@0.9.4: 1258 1632 dependencies: ··· 1279 1653 1280 1654 path-key@3.1.1: {} 1281 1655 1282 - path-type@4.0.0: {} 1656 + picomatch@2.3.1: {} 1657 + 1658 + pino-abstract-transport@2.0.0: 1659 + dependencies: 1660 + split2: 4.2.0 1283 1661 1284 - picomatch@2.3.1: {} 1662 + pino-std-serializers@7.0.0: {} 1285 1663 1286 - plimit-lit@1.6.1: 1664 + pino@9.14.0: 1287 1665 dependencies: 1288 - queue-lit: 1.5.2 1666 + '@pinojs/redact': 0.4.0 1667 + atomic-sleep: 1.0.0 1668 + on-exit-leak-free: 2.1.2 1669 + pino-abstract-transport: 2.0.0 1670 + pino-std-serializers: 7.0.0 1671 + process-warning: 5.0.0 1672 + quick-format-unescaped: 4.0.4 1673 + real-require: 0.2.0 1674 + safe-stable-stringify: 2.5.0 1675 + sonic-boom: 4.2.0 1676 + thread-stream: 3.1.0 1289 1677 1290 1678 prelude-ls@1.2.1: {} 1291 1679 1292 1680 prettier@3.6.2: {} 1293 1681 1294 - punycode@2.3.1: {} 1682 + process-warning@4.0.1: {} 1295 1683 1296 - queue-lit@1.5.2: {} 1684 + process-warning@5.0.0: {} 1685 + 1686 + punycode@2.3.1: {} 1297 1687 1298 1688 queue-microtask@1.2.3: {} 1299 1689 1300 - readdirp@3.6.0: 1690 + quick-format-unescaped@4.0.4: {} 1691 + 1692 + readable-stream@3.6.2: 1301 1693 dependencies: 1302 - picomatch: 2.3.1 1694 + inherits: 2.0.4 1695 + string_decoder: 1.3.0 1696 + util-deprecate: 1.0.2 1697 + 1698 + real-require@0.2.0: {} 1699 + 1700 + require-from-string@2.0.2: {} 1303 1701 1304 1702 resolve-from@4.0.0: {} 1305 1703 1306 1704 resolve-pkg-maps@1.0.0: {} 1307 1705 1706 + ret@0.5.0: {} 1707 + 1308 1708 reusify@1.1.0: {} 1309 1709 1710 + rfdc@1.4.1: {} 1711 + 1310 1712 run-parallel@1.2.0: 1311 1713 dependencies: 1312 1714 queue-microtask: 1.2.3 1313 1715 1716 + safe-buffer@5.2.1: {} 1717 + 1718 + safe-regex2@5.0.0: 1719 + dependencies: 1720 + ret: 0.5.0 1721 + 1722 + safe-stable-stringify@2.5.0: {} 1723 + 1724 + secure-json-parse@4.1.0: {} 1725 + 1314 1726 semver@7.7.3: {} 1727 + 1728 + set-cookie-parser@2.7.1: {} 1315 1729 1316 1730 shebang-command@2.0.0: 1317 1731 dependencies: ··· 1319 1733 1320 1734 shebang-regex@3.0.0: {} 1321 1735 1322 - slash@3.0.0: {} 1736 + sonic-boom@4.2.0: 1737 + dependencies: 1738 + atomic-sleep: 1.0.0 1323 1739 1324 - strip-bom@3.0.0: {} 1740 + split2@4.2.0: {} 1741 + 1742 + stream-shift@1.0.3: {} 1743 + 1744 + string_decoder@1.3.0: 1745 + dependencies: 1746 + safe-buffer: 5.2.1 1325 1747 1326 1748 strip-json-comments@3.1.1: {} 1327 1749 ··· 1329 1751 dependencies: 1330 1752 has-flag: 4.0.0 1331 1753 1754 + thread-stream@3.1.0: 1755 + dependencies: 1756 + real-require: 0.2.0 1757 + 1332 1758 to-regex-range@5.0.1: 1333 1759 dependencies: 1334 1760 is-number: 7.0.0 1335 1761 1762 + toad-cache@3.7.0: {} 1763 + 1336 1764 ts-api-utils@2.1.0(typescript@5.9.3): 1337 1765 dependencies: 1338 1766 typescript: 5.9.3 1339 1767 1340 - ts-node@10.9.2(@types/node@24.7.1)(typescript@5.9.3): 1768 + tsx@4.20.6: 1341 1769 dependencies: 1342 - '@cspotcode/source-map-support': 0.8.1 1343 - '@tsconfig/node10': 1.0.11 1344 - '@tsconfig/node12': 1.0.11 1345 - '@tsconfig/node14': 1.0.3 1346 - '@tsconfig/node16': 1.0.4 1347 - '@types/node': 24.7.1 1348 - acorn: 8.15.0 1349 - acorn-walk: 8.3.4 1350 - arg: 4.1.3 1351 - create-require: 1.1.1 1352 - diff: 4.0.2 1353 - make-error: 1.3.6 1354 - typescript: 5.9.3 1355 - v8-compile-cache-lib: 3.0.1 1356 - yn: 3.1.1 1357 - 1358 - tsc-alias@1.8.16: 1359 - dependencies: 1360 - chokidar: 3.6.0 1361 - commander: 9.5.0 1362 - get-tsconfig: 4.12.0 1363 - globby: 11.1.0 1364 - mylas: 2.1.13 1365 - normalize-path: 3.0.0 1366 - plimit-lit: 1.6.1 1367 - 1368 - tsconfig-paths@4.2.0: 1369 - dependencies: 1370 - json5: 2.2.3 1371 - minimist: 1.2.8 1372 - strip-bom: 3.0.0 1770 + esbuild: 0.25.11 1771 + get-tsconfig: 4.13.0 1772 + optionalDependencies: 1773 + fsevents: 2.3.3 1373 1774 1374 1775 type-check@0.4.0: 1375 1776 dependencies: ··· 1394 1795 dependencies: 1395 1796 punycode: 2.3.1 1396 1797 1397 - v8-compile-cache-lib@3.0.1: {} 1798 + util-deprecate@1.0.2: {} 1398 1799 1399 1800 which@2.0.2: 1400 1801 dependencies: ··· 1402 1803 1403 1804 word-wrap@1.2.5: {} 1404 1805 1405 - ws@8.18.3: {} 1806 + wrappy@1.0.2: {} 1406 1807 1407 - yn@3.1.1: {} 1808 + ws@8.18.3: {} 1408 1809 1409 1810 yocto-queue@0.1.0: {} 1410 1811
+43
src/index.old.ts
··· 1 + import type { ShardMessage } from "@/lib/types/messages"; 2 + import { rawDataToString } from "@/lib/utils"; 3 + import { validateNewMessage } from "@/lib/validators"; 4 + import type { RawData } from "ws"; 5 + import WebSocket from "ws"; 6 + 7 + const wss = new WebSocket.Server({ port: 8080 }); 8 + 9 + const messages: ShardMessage[] = []; 10 + const clients = new Set<WebSocket>(); 11 + 12 + wss.on("connection", (ws) => { 13 + clients.add(ws); 14 + 15 + ws.send( 16 + JSON.stringify({ 17 + type: "shard/history", 18 + messages: messages, 19 + }), 20 + ); 21 + 22 + ws.on("message", (data: RawData) => { 23 + const jsonText = rawDataToString(data); 24 + const jsonData: unknown = JSON.parse(jsonText); 25 + 26 + const shardMessage = validateNewMessage(jsonData); 27 + if (!shardMessage) return; 28 + 29 + messages.push(shardMessage); 30 + 31 + clients.forEach((client) => { 32 + if (client.readyState === WebSocket.OPEN) { 33 + client.send(JSON.stringify(shardMessage)); 34 + } 35 + }); 36 + }); 37 + 38 + ws.on("close", () => { 39 + clients.delete(ws); 40 + }); 41 + }); 42 + 43 + console.log("Server running on ws://localhost:8080");
+37 -38
src/index.ts
··· 1 - import type { ShardMessage } from "@/lib/types/messages"; 2 - import { rawDataToString } from "@/lib/utils"; 3 - import { validateNewMessage } from "@/lib/validators"; 4 - import type { RawData } from "ws"; 5 - import WebSocket from "ws"; 1 + import { SERVER_PORT } from "@/lib/env"; 2 + import { routes } from "@/routes"; 3 + import { setupServer } from "@/server"; 6 4 7 - const wss = new WebSocket.Server({ port: 8080 }); 8 - 9 - const messages: ShardMessage[] = []; 10 - const clients = new Set<WebSocket>(); 11 - 12 - wss.on("connection", (ws) => { 13 - clients.add(ws); 5 + const main = async () => { 6 + const server = await setupServer(); 7 + for (const [url, route] of Object.entries(routes)) { 8 + if (!route.wsHandler) { 9 + const { handler, method } = route; 10 + server.route({ 11 + url, 12 + method, 13 + handler, 14 + }); 15 + } else { 16 + const { wsHandler, method, handler } = route; 17 + server.route({ 18 + url, 19 + method: method ?? "GET", 20 + handler: handler ?? (() => new Response()), 21 + wsHandler, 22 + }); 23 + } 24 + } 14 25 15 - ws.send( 16 - JSON.stringify({ 17 - type: "shard/history", 18 - messages: messages, 19 - }), 20 - ); 21 - 22 - ws.on("message", (data: RawData) => { 23 - const jsonText = rawDataToString(data); 24 - const jsonData: unknown = JSON.parse(jsonText); 25 - 26 - const shardMessage = validateNewMessage(jsonData); 27 - if (!shardMessage) return; 28 - 29 - messages.push(shardMessage); 30 - 31 - clients.forEach((client) => { 32 - if (client.readyState === WebSocket.OPEN) { 33 - client.send(JSON.stringify(shardMessage)); 34 - } 35 - }); 26 + server.listen({ port: SERVER_PORT }).catch((err: unknown) => { 27 + server.log.error(err); 28 + process.exit(1); 36 29 }); 30 + }; 37 31 38 - ws.on("close", () => { 39 - clients.delete(ws); 32 + main() 33 + .then(() => { 34 + console.log(`Server is running on port ${SERVER_PORT.toString()}`); 35 + }) 36 + .catch((err: unknown) => { 37 + console.error("Something went wrong :("); 38 + console.error( 39 + "=========================== FULL ERROR BELOW ===========================", 40 + ); 41 + console.error(err); 40 42 }); 41 - }); 42 - 43 - console.log("Server running on ws://localhost:8080");
+14
src/lib/env.ts
··· 1 + import "dotenv/config"; 2 + 3 + const nodeEnv = process.env.NODE_ENV; 4 + export const NODE_ENV = nodeEnv ?? "development"; 5 + 6 + export const isDev = NODE_ENV === "development"; 7 + export const __DEV__ = isDev; 8 + 9 + const serverPort = process.env.SERVER_PORT; 10 + if (!serverPort) 11 + console.warn( 12 + "Environment variable SERVER_PORT not set. Defaulting to 7338", 13 + ); 14 + export const SERVER_PORT = Number.parseInt(serverPort ?? "7338");
+26
src/lib/types/routes.ts
··· 1 + import type { FastifyReply, FastifyRequest } from "fastify"; 2 + import type { WebSocket } from "ws"; 3 + 4 + export type RouteHandler = ( 5 + req: FastifyRequest, 6 + reply: FastifyReply, 7 + ) => Response | Promise<Response>; 8 + 9 + export type Method = "GET" | "POST" | "PUT" | "DELETE" | "PATCH"; 10 + 11 + export interface Route { 12 + method: Method; 13 + handler: RouteHandler; 14 + wsHandler?: undefined; 15 + } 16 + 17 + export type WsRouteHandler = ( 18 + socket: WebSocket, 19 + req: FastifyRequest | undefined, 20 + ) => void; 21 + 22 + export interface WsRoute { 23 + method?: Method; 24 + handler?: RouteHandler; 25 + wsHandler: WsRouteHandler; 26 + }
+6
src/routes/index.ts
··· 1 + import type { Route, WsRoute } from "@/lib/types/routes"; 2 + import { indexRoute } from "@/routes/route"; 3 + 4 + export const routes: Record<string, Route | WsRoute> = { 5 + "/": indexRoute, 6 + };
+10
src/routes/route.ts
··· 1 + import type { Route } from "@/lib/types/routes"; 2 + 3 + export const indexRoute: Route = { 4 + method: "GET", 5 + handler: () => { 6 + return new Response("this is a gemstone systems lattice", { 7 + headers: { "content-type": "text/plain; charset=utf-8" }, 8 + }); 9 + }, 10 + };
+12
src/server/index.ts
··· 1 + import websocket from "@fastify/websocket"; 2 + import Fastify from "fastify"; 3 + 4 + export const setupServer = async () => { 5 + const fastify = Fastify({ 6 + logger: true, 7 + }); 8 + 9 + await fastify.register(websocket); 10 + 11 + return fastify; 12 + };
+2 -7
tsconfig.json
··· 28 28 /* Modules */ 29 29 "module": "nodenext" /* Specify what module code is generated. */, 30 30 "rootDir": "./src/" /* Specify the root folder within your source files. */, 31 - "moduleResolution": "nodenext" /* Specify how TypeScript looks up a file from a given module specifier. */, 31 + "moduleResolution": "bundler" /* Specify how TypeScript looks up a file from a given module specifier. */, 32 32 "baseUrl": "./" /* Specify the base directory to resolve non-relative module names. */, 33 33 "paths": { 34 34 "@/*": [ ··· 47 47 "checkJs": true /* Enable error reporting in type-checked JavaScript files. */, 48 48 // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 49 49 /* Emit */ 50 - "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */, 50 + "declaration": false /* Generate .d.ts files from TypeScript and JavaScript files in your project. */, 51 51 // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 52 52 // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 53 53 "sourceMap": true /* Create source map files for emitted JavaScript files. */, ··· 103 103 { 104 104 "name": "next" 105 105 } 106 - ] 107 - }, 108 - "ts-node": { 109 - "require": [ 110 - "tsconfig-paths/register" 111 106 ] 112 107 }, 113 108 "include": [