WIP: PDS Admin tool to hopefully make it easier to moderate your PDS
0
fork

Configure Feed

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

DB

+1201 -4
+1
.gitignore
··· 1 1 node_modules 2 2 dist 3 + label-watcher.db
+11
drizzle.config.ts
··· 1 + import type { Config } from "drizzle-kit"; 2 + 3 + export default { 4 + schema: "./src/db/schema.ts", 5 + out: "./drizzle", 6 + dialect: "turso", 7 + dbCredentials: { 8 + url: process.env.DATABASE_URL ?? "file:./label-watcher.db", 9 + authToken: process.env["DATABASE_AUTH_TOKEN"], 10 + }, 11 + } satisfies Config;
+17
drizzle/0000_tidy_prima.sql
··· 1 + CREATE TABLE `labels_applied` ( 2 + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 3 + `did` text NOT NULL, 4 + `label` text NOT NULL, 5 + `action` text NOT NULL, 6 + `date_applied` integer NOT NULL, 7 + FOREIGN KEY (`did`) REFERENCES `watched_repos`(`did`) ON UPDATE no action ON DELETE no action 8 + ); 9 + --> statement-breakpoint 10 + CREATE TABLE `watched_repos` ( 11 + `did` text PRIMARY KEY NOT NULL, 12 + `pds_host` text NOT NULL, 13 + `active` integer NOT NULL, 14 + `date_first_seen` integer NOT NULL 15 + ); 16 + --> statement-breakpoint 17 + CREATE UNIQUE INDEX `watched_repos_did_unique` ON `watched_repos` (`did`);
+123
drizzle/meta/0000_snapshot.json
··· 1 + { 2 + "version": "6", 3 + "dialect": "sqlite", 4 + "id": "2f73eace-efb4-467d-8b3e-0fce14415678", 5 + "prevId": "00000000-0000-0000-0000-000000000000", 6 + "tables": { 7 + "labels_applied": { 8 + "name": "labels_applied", 9 + "columns": { 10 + "id": { 11 + "name": "id", 12 + "type": "integer", 13 + "primaryKey": true, 14 + "notNull": true, 15 + "autoincrement": true 16 + }, 17 + "did": { 18 + "name": "did", 19 + "type": "text", 20 + "primaryKey": false, 21 + "notNull": true, 22 + "autoincrement": false 23 + }, 24 + "label": { 25 + "name": "label", 26 + "type": "text", 27 + "primaryKey": false, 28 + "notNull": true, 29 + "autoincrement": false 30 + }, 31 + "action": { 32 + "name": "action", 33 + "type": "text", 34 + "primaryKey": false, 35 + "notNull": true, 36 + "autoincrement": false 37 + }, 38 + "date_applied": { 39 + "name": "date_applied", 40 + "type": "integer", 41 + "primaryKey": false, 42 + "notNull": true, 43 + "autoincrement": false 44 + } 45 + }, 46 + "indexes": {}, 47 + "foreignKeys": { 48 + "labels_applied_did_watched_repos_did_fk": { 49 + "name": "labels_applied_did_watched_repos_did_fk", 50 + "tableFrom": "labels_applied", 51 + "tableTo": "watched_repos", 52 + "columnsFrom": [ 53 + "did" 54 + ], 55 + "columnsTo": [ 56 + "did" 57 + ], 58 + "onDelete": "no action", 59 + "onUpdate": "no action" 60 + } 61 + }, 62 + "compositePrimaryKeys": {}, 63 + "uniqueConstraints": {}, 64 + "checkConstraints": {} 65 + }, 66 + "watched_repos": { 67 + "name": "watched_repos", 68 + "columns": { 69 + "did": { 70 + "name": "did", 71 + "type": "text", 72 + "primaryKey": true, 73 + "notNull": true, 74 + "autoincrement": false 75 + }, 76 + "pds_host": { 77 + "name": "pds_host", 78 + "type": "text", 79 + "primaryKey": false, 80 + "notNull": true, 81 + "autoincrement": false 82 + }, 83 + "active": { 84 + "name": "active", 85 + "type": "integer", 86 + "primaryKey": false, 87 + "notNull": true, 88 + "autoincrement": false 89 + }, 90 + "date_first_seen": { 91 + "name": "date_first_seen", 92 + "type": "integer", 93 + "primaryKey": false, 94 + "notNull": true, 95 + "autoincrement": false 96 + } 97 + }, 98 + "indexes": { 99 + "watched_repos_did_unique": { 100 + "name": "watched_repos_did_unique", 101 + "columns": [ 102 + "did" 103 + ], 104 + "isUnique": true 105 + } 106 + }, 107 + "foreignKeys": {}, 108 + "compositePrimaryKeys": {}, 109 + "uniqueConstraints": {}, 110 + "checkConstraints": {} 111 + } 112 + }, 113 + "views": {}, 114 + "enums": {}, 115 + "_meta": { 116 + "schemas": {}, 117 + "tables": {}, 118 + "columns": {} 119 + }, 120 + "internal": { 121 + "indexes": {} 122 + } 123 + }
+13
drizzle/meta/_journal.json
··· 1 + { 2 + "version": "7", 3 + "dialect": "sqlite", 4 + "entries": [ 5 + { 6 + "idx": 0, 7 + "version": "6", 8 + "when": 1771556897599, 9 + "tag": "0000_tidy_prima", 10 + "breakpoints": true 11 + } 12 + ] 13 + }
+7 -3
package.json
··· 6 6 "main": "index.js", 7 7 "scripts": { 8 8 "start": "tsc && node dist/index.js", 9 - "generate:lexicons": "lex build --lexicons ./lexicons --out ./src/lexicons" 9 + "db:generate": "drizzle-kit generate", 10 + "db:migrate": "drizzle-kit migrate", 11 + "db:studio": "drizzle-kit studio" 10 12 }, 11 13 "keywords": [], 12 14 "author": "", ··· 15 17 "dependencies": { 16 18 "@atcute/atproto": "^3.1.10", 17 19 "@atcute/firehose": "^0.1.0", 18 - "@atproto/lex": "^0.0.16", 19 - "@atproto/ozone": "^0.1.163" 20 + "@libsql/client": "^0.17.0", 21 + "drizzle-orm": "^0.45.1" 20 22 }, 21 23 "devDependencies": { 24 + "@types/node": "^25.3.0", 25 + "drizzle-kit": "^0.31.9", 22 26 "typescript": "^5.9.3" 23 27 } 24 28 }
+963
pnpm-lock.yaml
··· 20 20 '@atproto/ozone': 21 21 specifier: ^0.1.163 22 22 version: 0.1.163 23 + '@libsql/client': 24 + specifier: ^0.17.0 25 + version: 0.17.0 26 + drizzle-orm: 27 + specifier: ^0.45.1 28 + version: 0.45.1(@libsql/client@0.17.0)(kysely@0.22.0)(pg@8.18.0) 23 29 devDependencies: 30 + '@types/node': 31 + specifier: ^25.3.0 32 + version: 25.3.0 33 + drizzle-kit: 34 + specifier: ^0.31.9 35 + version: 0.31.9 24 36 typescript: 25 37 specifier: ^5.9.3 26 38 version: 5.9.3 ··· 152 164 '@did-plc/lib@0.0.1': 153 165 resolution: {integrity: sha512-RkY5w9DbYMco3SjeepqIiMveqz35exjlVDipCs2gz9AXF4/cp9hvmrp9zUWEw2vny+FjV8vGEN7QpaXWaO6nhg==} 154 166 167 + '@drizzle-team/brocli@0.10.2': 168 + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 169 + 170 + '@esbuild-kit/core-utils@3.3.2': 171 + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 172 + deprecated: 'Merged into tsx: https://tsx.is' 173 + 174 + '@esbuild-kit/esm-loader@2.6.5': 175 + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 176 + deprecated: 'Merged into tsx: https://tsx.is' 177 + 178 + '@esbuild/aix-ppc64@0.25.12': 179 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 180 + engines: {node: '>=18'} 181 + cpu: [ppc64] 182 + os: [aix] 183 + 184 + '@esbuild/android-arm64@0.18.20': 185 + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 186 + engines: {node: '>=12'} 187 + cpu: [arm64] 188 + os: [android] 189 + 190 + '@esbuild/android-arm64@0.25.12': 191 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 192 + engines: {node: '>=18'} 193 + cpu: [arm64] 194 + os: [android] 195 + 196 + '@esbuild/android-arm@0.18.20': 197 + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 198 + engines: {node: '>=12'} 199 + cpu: [arm] 200 + os: [android] 201 + 202 + '@esbuild/android-arm@0.25.12': 203 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 204 + engines: {node: '>=18'} 205 + cpu: [arm] 206 + os: [android] 207 + 208 + '@esbuild/android-x64@0.18.20': 209 + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 210 + engines: {node: '>=12'} 211 + cpu: [x64] 212 + os: [android] 213 + 214 + '@esbuild/android-x64@0.25.12': 215 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 216 + engines: {node: '>=18'} 217 + cpu: [x64] 218 + os: [android] 219 + 220 + '@esbuild/darwin-arm64@0.18.20': 221 + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 222 + engines: {node: '>=12'} 223 + cpu: [arm64] 224 + os: [darwin] 225 + 226 + '@esbuild/darwin-arm64@0.25.12': 227 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 228 + engines: {node: '>=18'} 229 + cpu: [arm64] 230 + os: [darwin] 231 + 232 + '@esbuild/darwin-x64@0.18.20': 233 + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 234 + engines: {node: '>=12'} 235 + cpu: [x64] 236 + os: [darwin] 237 + 238 + '@esbuild/darwin-x64@0.25.12': 239 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 240 + engines: {node: '>=18'} 241 + cpu: [x64] 242 + os: [darwin] 243 + 244 + '@esbuild/freebsd-arm64@0.18.20': 245 + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 246 + engines: {node: '>=12'} 247 + cpu: [arm64] 248 + os: [freebsd] 249 + 250 + '@esbuild/freebsd-arm64@0.25.12': 251 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 252 + engines: {node: '>=18'} 253 + cpu: [arm64] 254 + os: [freebsd] 255 + 256 + '@esbuild/freebsd-x64@0.18.20': 257 + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 258 + engines: {node: '>=12'} 259 + cpu: [x64] 260 + os: [freebsd] 261 + 262 + '@esbuild/freebsd-x64@0.25.12': 263 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 264 + engines: {node: '>=18'} 265 + cpu: [x64] 266 + os: [freebsd] 267 + 268 + '@esbuild/linux-arm64@0.18.20': 269 + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 270 + engines: {node: '>=12'} 271 + cpu: [arm64] 272 + os: [linux] 273 + 274 + '@esbuild/linux-arm64@0.25.12': 275 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 276 + engines: {node: '>=18'} 277 + cpu: [arm64] 278 + os: [linux] 279 + 280 + '@esbuild/linux-arm@0.18.20': 281 + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 282 + engines: {node: '>=12'} 283 + cpu: [arm] 284 + os: [linux] 285 + 286 + '@esbuild/linux-arm@0.25.12': 287 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 288 + engines: {node: '>=18'} 289 + cpu: [arm] 290 + os: [linux] 291 + 292 + '@esbuild/linux-ia32@0.18.20': 293 + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 294 + engines: {node: '>=12'} 295 + cpu: [ia32] 296 + os: [linux] 297 + 298 + '@esbuild/linux-ia32@0.25.12': 299 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 300 + engines: {node: '>=18'} 301 + cpu: [ia32] 302 + os: [linux] 303 + 304 + '@esbuild/linux-loong64@0.18.20': 305 + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 306 + engines: {node: '>=12'} 307 + cpu: [loong64] 308 + os: [linux] 309 + 310 + '@esbuild/linux-loong64@0.25.12': 311 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 312 + engines: {node: '>=18'} 313 + cpu: [loong64] 314 + os: [linux] 315 + 316 + '@esbuild/linux-mips64el@0.18.20': 317 + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 318 + engines: {node: '>=12'} 319 + cpu: [mips64el] 320 + os: [linux] 321 + 322 + '@esbuild/linux-mips64el@0.25.12': 323 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 324 + engines: {node: '>=18'} 325 + cpu: [mips64el] 326 + os: [linux] 327 + 328 + '@esbuild/linux-ppc64@0.18.20': 329 + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 330 + engines: {node: '>=12'} 331 + cpu: [ppc64] 332 + os: [linux] 333 + 334 + '@esbuild/linux-ppc64@0.25.12': 335 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 336 + engines: {node: '>=18'} 337 + cpu: [ppc64] 338 + os: [linux] 339 + 340 + '@esbuild/linux-riscv64@0.18.20': 341 + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 342 + engines: {node: '>=12'} 343 + cpu: [riscv64] 344 + os: [linux] 345 + 346 + '@esbuild/linux-riscv64@0.25.12': 347 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 348 + engines: {node: '>=18'} 349 + cpu: [riscv64] 350 + os: [linux] 351 + 352 + '@esbuild/linux-s390x@0.18.20': 353 + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 354 + engines: {node: '>=12'} 355 + cpu: [s390x] 356 + os: [linux] 357 + 358 + '@esbuild/linux-s390x@0.25.12': 359 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 360 + engines: {node: '>=18'} 361 + cpu: [s390x] 362 + os: [linux] 363 + 364 + '@esbuild/linux-x64@0.18.20': 365 + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 366 + engines: {node: '>=12'} 367 + cpu: [x64] 368 + os: [linux] 369 + 370 + '@esbuild/linux-x64@0.25.12': 371 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 372 + engines: {node: '>=18'} 373 + cpu: [x64] 374 + os: [linux] 375 + 376 + '@esbuild/netbsd-arm64@0.25.12': 377 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 378 + engines: {node: '>=18'} 379 + cpu: [arm64] 380 + os: [netbsd] 381 + 382 + '@esbuild/netbsd-x64@0.18.20': 383 + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 384 + engines: {node: '>=12'} 385 + cpu: [x64] 386 + os: [netbsd] 387 + 388 + '@esbuild/netbsd-x64@0.25.12': 389 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 390 + engines: {node: '>=18'} 391 + cpu: [x64] 392 + os: [netbsd] 393 + 394 + '@esbuild/openbsd-arm64@0.25.12': 395 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 396 + engines: {node: '>=18'} 397 + cpu: [arm64] 398 + os: [openbsd] 399 + 400 + '@esbuild/openbsd-x64@0.18.20': 401 + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 402 + engines: {node: '>=12'} 403 + cpu: [x64] 404 + os: [openbsd] 405 + 406 + '@esbuild/openbsd-x64@0.25.12': 407 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 408 + engines: {node: '>=18'} 409 + cpu: [x64] 410 + os: [openbsd] 411 + 412 + '@esbuild/openharmony-arm64@0.25.12': 413 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 414 + engines: {node: '>=18'} 415 + cpu: [arm64] 416 + os: [openharmony] 417 + 418 + '@esbuild/sunos-x64@0.18.20': 419 + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 420 + engines: {node: '>=12'} 421 + cpu: [x64] 422 + os: [sunos] 423 + 424 + '@esbuild/sunos-x64@0.25.12': 425 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 426 + engines: {node: '>=18'} 427 + cpu: [x64] 428 + os: [sunos] 429 + 430 + '@esbuild/win32-arm64@0.18.20': 431 + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 432 + engines: {node: '>=12'} 433 + cpu: [arm64] 434 + os: [win32] 435 + 436 + '@esbuild/win32-arm64@0.25.12': 437 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 438 + engines: {node: '>=18'} 439 + cpu: [arm64] 440 + os: [win32] 441 + 442 + '@esbuild/win32-ia32@0.18.20': 443 + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 444 + engines: {node: '>=12'} 445 + cpu: [ia32] 446 + os: [win32] 447 + 448 + '@esbuild/win32-ia32@0.25.12': 449 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 450 + engines: {node: '>=18'} 451 + cpu: [ia32] 452 + os: [win32] 453 + 454 + '@esbuild/win32-x64@0.18.20': 455 + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 456 + engines: {node: '>=12'} 457 + cpu: [x64] 458 + os: [win32] 459 + 460 + '@esbuild/win32-x64@0.25.12': 461 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 462 + engines: {node: '>=18'} 463 + cpu: [x64] 464 + os: [win32] 465 + 155 466 '@ipld/dag-cbor@7.0.3': 156 467 resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 157 468 469 + '@libsql/client@0.17.0': 470 + resolution: {integrity: sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==} 471 + 472 + '@libsql/core@0.17.0': 473 + resolution: {integrity: sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==} 474 + 475 + '@libsql/darwin-arm64@0.5.22': 476 + resolution: {integrity: sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==} 477 + cpu: [arm64] 478 + os: [darwin] 479 + 480 + '@libsql/darwin-x64@0.5.22': 481 + resolution: {integrity: sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==} 482 + cpu: [x64] 483 + os: [darwin] 484 + 485 + '@libsql/hrana-client@0.9.0': 486 + resolution: {integrity: sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==} 487 + 488 + '@libsql/isomorphic-ws@0.1.5': 489 + resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} 490 + 491 + '@libsql/linux-arm-gnueabihf@0.5.22': 492 + resolution: {integrity: sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==} 493 + cpu: [arm] 494 + os: [linux] 495 + 496 + '@libsql/linux-arm-musleabihf@0.5.22': 497 + resolution: {integrity: sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==} 498 + cpu: [arm] 499 + os: [linux] 500 + 501 + '@libsql/linux-arm64-gnu@0.5.22': 502 + resolution: {integrity: sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==} 503 + cpu: [arm64] 504 + os: [linux] 505 + 506 + '@libsql/linux-arm64-musl@0.5.22': 507 + resolution: {integrity: sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==} 508 + cpu: [arm64] 509 + os: [linux] 510 + 511 + '@libsql/linux-x64-gnu@0.5.22': 512 + resolution: {integrity: sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==} 513 + cpu: [x64] 514 + os: [linux] 515 + 516 + '@libsql/linux-x64-musl@0.5.22': 517 + resolution: {integrity: sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==} 518 + cpu: [x64] 519 + os: [linux] 520 + 521 + '@libsql/win32-x64-msvc@0.5.22': 522 + resolution: {integrity: sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==} 523 + cpu: [x64] 524 + os: [win32] 525 + 158 526 '@mary-ext/event-iterator@1.0.0': 159 527 resolution: {integrity: sha512-l6gCPsWJ8aRCe/s7/oCmero70kDHgIK5m4uJvYgwEYTqVxoBOIXbKr5tnkLqUHEg6mNduB4IWvms3h70Hp9ADQ==} 160 528 161 529 '@mary-ext/simple-event-emitter@1.0.0': 162 530 resolution: {integrity: sha512-meA/zJZKIN1RVBNEYIbjufkUrW7/tRjHH60FjolpG1ixJKo76TB208qefQLNdOVDA7uIG0CGEDuhmMirtHKLAg==} 163 531 532 + '@neon-rs/load@0.0.4': 533 + resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} 534 + 164 535 '@noble/curves@1.9.7': 165 536 resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} 166 537 engines: {node: ^14.21.3 || >=16} ··· 177 548 178 549 '@ts-morph/common@0.28.1': 179 550 resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} 551 + 552 + '@types/node@25.3.0': 553 + resolution: {integrity: sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==} 554 + 555 + '@types/ws@8.18.1': 556 + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} 180 557 181 558 abort-controller@3.0.0: 182 559 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} ··· 229 606 resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} 230 607 engines: {node: 20 || >=22} 231 608 609 + buffer-from@1.1.2: 610 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 611 + 232 612 buffer@6.0.3: 233 613 resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 234 614 ··· 296 676 resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} 297 677 engines: {node: '>= 0.10'} 298 678 679 + cross-fetch@4.1.0: 680 + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} 681 + 682 + data-uri-to-buffer@4.0.1: 683 + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 684 + engines: {node: '>= 12'} 685 + 299 686 debug@2.6.9: 300 687 resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 301 688 peerDependencies: ··· 304 691 supports-color: 305 692 optional: true 306 693 694 + debug@4.4.3: 695 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 696 + engines: {node: '>=6.0'} 697 + peerDependencies: 698 + supports-color: '*' 699 + peerDependenciesMeta: 700 + supports-color: 701 + optional: true 702 + 307 703 delay@5.0.0: 308 704 resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} 309 705 engines: {node: '>=10'} ··· 320 716 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 321 717 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 322 718 719 + detect-libc@2.0.2: 720 + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 721 + engines: {node: '>=8'} 722 + 723 + drizzle-kit@0.31.9: 724 + resolution: {integrity: sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==} 725 + hasBin: true 726 + 727 + drizzle-orm@0.45.1: 728 + resolution: {integrity: sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==} 729 + peerDependencies: 730 + '@aws-sdk/client-rds-data': '>=3' 731 + '@cloudflare/workers-types': '>=4' 732 + '@electric-sql/pglite': '>=0.2.0' 733 + '@libsql/client': '>=0.10.0' 734 + '@libsql/client-wasm': '>=0.10.0' 735 + '@neondatabase/serverless': '>=0.10.0' 736 + '@op-engineering/op-sqlite': '>=2' 737 + '@opentelemetry/api': ^1.4.1 738 + '@planetscale/database': '>=1.13' 739 + '@prisma/client': '*' 740 + '@tidbcloud/serverless': '*' 741 + '@types/better-sqlite3': '*' 742 + '@types/pg': '*' 743 + '@types/sql.js': '*' 744 + '@upstash/redis': '>=1.34.7' 745 + '@vercel/postgres': '>=0.8.0' 746 + '@xata.io/client': '*' 747 + better-sqlite3: '>=7' 748 + bun-types: '*' 749 + expo-sqlite: '>=14.0.0' 750 + gel: '>=2' 751 + knex: '*' 752 + kysely: '*' 753 + mysql2: '>=2' 754 + pg: '>=8' 755 + postgres: '>=3' 756 + prisma: '*' 757 + sql.js: '>=1' 758 + sqlite3: '>=5' 759 + peerDependenciesMeta: 760 + '@aws-sdk/client-rds-data': 761 + optional: true 762 + '@cloudflare/workers-types': 763 + optional: true 764 + '@electric-sql/pglite': 765 + optional: true 766 + '@libsql/client': 767 + optional: true 768 + '@libsql/client-wasm': 769 + optional: true 770 + '@neondatabase/serverless': 771 + optional: true 772 + '@op-engineering/op-sqlite': 773 + optional: true 774 + '@opentelemetry/api': 775 + optional: true 776 + '@planetscale/database': 777 + optional: true 778 + '@prisma/client': 779 + optional: true 780 + '@tidbcloud/serverless': 781 + optional: true 782 + '@types/better-sqlite3': 783 + optional: true 784 + '@types/pg': 785 + optional: true 786 + '@types/sql.js': 787 + optional: true 788 + '@upstash/redis': 789 + optional: true 790 + '@vercel/postgres': 791 + optional: true 792 + '@xata.io/client': 793 + optional: true 794 + better-sqlite3: 795 + optional: true 796 + bun-types: 797 + optional: true 798 + expo-sqlite: 799 + optional: true 800 + gel: 801 + optional: true 802 + knex: 803 + optional: true 804 + kysely: 805 + optional: true 806 + mysql2: 807 + optional: true 808 + pg: 809 + optional: true 810 + postgres: 811 + optional: true 812 + prisma: 813 + optional: true 814 + sql.js: 815 + optional: true 816 + sqlite3: 817 + optional: true 818 + 323 819 dunder-proto@1.0.1: 324 820 resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 325 821 engines: {node: '>= 0.4'} ··· 350 846 resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 351 847 engines: {node: '>= 0.4'} 352 848 849 + esbuild-register@3.6.0: 850 + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 851 + peerDependencies: 852 + esbuild: '>=0.12 <1' 853 + 854 + esbuild@0.18.20: 855 + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 856 + engines: {node: '>=12'} 857 + hasBin: true 858 + 859 + esbuild@0.25.12: 860 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 861 + engines: {node: '>=18'} 862 + hasBin: true 863 + 353 864 escalade@3.2.0: 354 865 resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 355 866 engines: {node: '>=6'} ··· 399 910 picomatch: 400 911 optional: true 401 912 913 + fetch-blob@3.2.0: 914 + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 915 + engines: {node: ^12.20 || >= 14.13} 916 + 402 917 finalhandler@1.3.2: 403 918 resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} 404 919 engines: {node: '>= 0.8'} ··· 415 930 form-data@4.0.5: 416 931 resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} 417 932 engines: {node: '>= 6'} 933 + 934 + formdata-polyfill@4.0.10: 935 + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 936 + engines: {node: '>=12.20.0'} 418 937 419 938 forwarded@0.2.0: 420 939 resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} ··· 439 958 resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 440 959 engines: {node: '>= 0.4'} 441 960 961 + get-tsconfig@4.13.6: 962 + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} 963 + 442 964 gopd@1.2.0: 443 965 resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 444 966 engines: {node: '>= 0.4'} ··· 484 1006 iso-datestring-validator@2.2.2: 485 1007 resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 486 1008 1009 + js-base64@3.7.8: 1010 + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} 1011 + 487 1012 kysely@0.22.0: 488 1013 resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} 489 1014 engines: {node: '>=14.0.0'} ··· 491 1016 lande@1.0.10: 492 1017 resolution: {integrity: sha512-yT52DQh+UV2pEp08jOYrA4drDv0DbjpiRyZYgl25ak9G2cVR2AimzrqkYQWrD9a7Ud+qkAcaiDDoNH9DXfHPmw==} 493 1018 1019 + libsql@0.5.22: 1020 + resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} 1021 + cpu: [x64, arm64, wasm32, arm] 1022 + os: [darwin, linux, win32] 1023 + 494 1024 lru-cache@10.4.3: 495 1025 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 496 1026 ··· 547 1077 resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} 548 1078 engines: {node: '>= 0.6'} 549 1079 1080 + node-domexception@1.0.0: 1081 + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 1082 + engines: {node: '>=10.5.0'} 1083 + deprecated: Use your platform's native DOMException instead 1084 + 1085 + node-fetch@2.7.0: 1086 + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1087 + engines: {node: 4.x || >=6.0.0} 1088 + peerDependencies: 1089 + encoding: ^0.1.0 1090 + peerDependenciesMeta: 1091 + encoding: 1092 + optional: true 1093 + 1094 + node-fetch@3.3.2: 1095 + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 1096 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1097 + 550 1098 object-assign@4.1.1: 551 1099 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 552 1100 engines: {node: '>=0.10.0'} ··· 678 1226 resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 679 1227 engines: {node: '>= 0.6.0'} 680 1228 1229 + promise-limit@2.7.0: 1230 + resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} 1231 + 681 1232 proxy-addr@2.0.7: 682 1233 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 683 1234 engines: {node: '>= 0.10'} ··· 714 1265 require-directory@2.1.1: 715 1266 resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 716 1267 engines: {node: '>=0.10.0'} 1268 + 1269 + resolve-pkg-maps@1.0.0: 1270 + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 717 1271 718 1272 roarr@7.21.4: 719 1273 resolution: {integrity: sha512-qvfUKCrpPzhWmQ4NxRYnuwhkI5lwmObhBU06BCK/lpj6PID9nL4Hk6XDwek2foKI+TMaV+Yw//XZshGF2Lox/Q==} ··· 765 1319 sonic-boom@3.8.1: 766 1320 resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} 767 1321 1322 + source-map-support@0.5.21: 1323 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1324 + 1325 + source-map@0.6.1: 1326 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1327 + engines: {node: '>=0.10.0'} 1328 + 768 1329 split2@4.2.0: 769 1330 resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 770 1331 engines: {node: '>= 10.x'} ··· 806 1367 toygrad@2.6.0: 807 1368 resolution: {integrity: sha512-g4zBmlSbvzOE5FOILxYkAybTSxijKLkj1WoNqVGnbMcWDyj4wWQ+eYSr3ik7XOpIgMq/7eBcPRTJX3DM2E0YMg==} 808 1369 1370 + tr46@0.0.3: 1371 + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1372 + 809 1373 ts-morph@27.0.2: 810 1374 resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} 811 1375 ··· 835 1399 uint8arrays@3.0.0: 836 1400 resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 837 1401 1402 + undici-types@7.18.2: 1403 + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} 1404 + 838 1405 undici@6.23.0: 839 1406 resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} 840 1407 engines: {node: '>=18.17'} ··· 857 1424 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 858 1425 engines: {node: '>= 0.8'} 859 1426 1427 + web-streams-polyfill@3.3.3: 1428 + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 1429 + engines: {node: '>= 8'} 1430 + 1431 + webidl-conversions@3.0.1: 1432 + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1433 + 1434 + whatwg-url@5.0.0: 1435 + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1436 + 860 1437 wrap-ansi@7.0.0: 861 1438 resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 862 1439 engines: {node: '>=10'} ··· 1200 1777 transitivePeerDependencies: 1201 1778 - debug 1202 1779 1780 + '@drizzle-team/brocli@0.10.2': {} 1781 + 1782 + '@esbuild-kit/core-utils@3.3.2': 1783 + dependencies: 1784 + esbuild: 0.18.20 1785 + source-map-support: 0.5.21 1786 + 1787 + '@esbuild-kit/esm-loader@2.6.5': 1788 + dependencies: 1789 + '@esbuild-kit/core-utils': 3.3.2 1790 + get-tsconfig: 4.13.6 1791 + 1792 + '@esbuild/aix-ppc64@0.25.12': 1793 + optional: true 1794 + 1795 + '@esbuild/android-arm64@0.18.20': 1796 + optional: true 1797 + 1798 + '@esbuild/android-arm64@0.25.12': 1799 + optional: true 1800 + 1801 + '@esbuild/android-arm@0.18.20': 1802 + optional: true 1803 + 1804 + '@esbuild/android-arm@0.25.12': 1805 + optional: true 1806 + 1807 + '@esbuild/android-x64@0.18.20': 1808 + optional: true 1809 + 1810 + '@esbuild/android-x64@0.25.12': 1811 + optional: true 1812 + 1813 + '@esbuild/darwin-arm64@0.18.20': 1814 + optional: true 1815 + 1816 + '@esbuild/darwin-arm64@0.25.12': 1817 + optional: true 1818 + 1819 + '@esbuild/darwin-x64@0.18.20': 1820 + optional: true 1821 + 1822 + '@esbuild/darwin-x64@0.25.12': 1823 + optional: true 1824 + 1825 + '@esbuild/freebsd-arm64@0.18.20': 1826 + optional: true 1827 + 1828 + '@esbuild/freebsd-arm64@0.25.12': 1829 + optional: true 1830 + 1831 + '@esbuild/freebsd-x64@0.18.20': 1832 + optional: true 1833 + 1834 + '@esbuild/freebsd-x64@0.25.12': 1835 + optional: true 1836 + 1837 + '@esbuild/linux-arm64@0.18.20': 1838 + optional: true 1839 + 1840 + '@esbuild/linux-arm64@0.25.12': 1841 + optional: true 1842 + 1843 + '@esbuild/linux-arm@0.18.20': 1844 + optional: true 1845 + 1846 + '@esbuild/linux-arm@0.25.12': 1847 + optional: true 1848 + 1849 + '@esbuild/linux-ia32@0.18.20': 1850 + optional: true 1851 + 1852 + '@esbuild/linux-ia32@0.25.12': 1853 + optional: true 1854 + 1855 + '@esbuild/linux-loong64@0.18.20': 1856 + optional: true 1857 + 1858 + '@esbuild/linux-loong64@0.25.12': 1859 + optional: true 1860 + 1861 + '@esbuild/linux-mips64el@0.18.20': 1862 + optional: true 1863 + 1864 + '@esbuild/linux-mips64el@0.25.12': 1865 + optional: true 1866 + 1867 + '@esbuild/linux-ppc64@0.18.20': 1868 + optional: true 1869 + 1870 + '@esbuild/linux-ppc64@0.25.12': 1871 + optional: true 1872 + 1873 + '@esbuild/linux-riscv64@0.18.20': 1874 + optional: true 1875 + 1876 + '@esbuild/linux-riscv64@0.25.12': 1877 + optional: true 1878 + 1879 + '@esbuild/linux-s390x@0.18.20': 1880 + optional: true 1881 + 1882 + '@esbuild/linux-s390x@0.25.12': 1883 + optional: true 1884 + 1885 + '@esbuild/linux-x64@0.18.20': 1886 + optional: true 1887 + 1888 + '@esbuild/linux-x64@0.25.12': 1889 + optional: true 1890 + 1891 + '@esbuild/netbsd-arm64@0.25.12': 1892 + optional: true 1893 + 1894 + '@esbuild/netbsd-x64@0.18.20': 1895 + optional: true 1896 + 1897 + '@esbuild/netbsd-x64@0.25.12': 1898 + optional: true 1899 + 1900 + '@esbuild/openbsd-arm64@0.25.12': 1901 + optional: true 1902 + 1903 + '@esbuild/openbsd-x64@0.18.20': 1904 + optional: true 1905 + 1906 + '@esbuild/openbsd-x64@0.25.12': 1907 + optional: true 1908 + 1909 + '@esbuild/openharmony-arm64@0.25.12': 1910 + optional: true 1911 + 1912 + '@esbuild/sunos-x64@0.18.20': 1913 + optional: true 1914 + 1915 + '@esbuild/sunos-x64@0.25.12': 1916 + optional: true 1917 + 1918 + '@esbuild/win32-arm64@0.18.20': 1919 + optional: true 1920 + 1921 + '@esbuild/win32-arm64@0.25.12': 1922 + optional: true 1923 + 1924 + '@esbuild/win32-ia32@0.18.20': 1925 + optional: true 1926 + 1927 + '@esbuild/win32-ia32@0.25.12': 1928 + optional: true 1929 + 1930 + '@esbuild/win32-x64@0.18.20': 1931 + optional: true 1932 + 1933 + '@esbuild/win32-x64@0.25.12': 1934 + optional: true 1935 + 1203 1936 '@ipld/dag-cbor@7.0.3': 1204 1937 dependencies: 1205 1938 cborg: 1.10.2 1206 1939 multiformats: 9.9.0 1207 1940 1941 + '@libsql/client@0.17.0': 1942 + dependencies: 1943 + '@libsql/core': 0.17.0 1944 + '@libsql/hrana-client': 0.9.0 1945 + js-base64: 3.7.8 1946 + libsql: 0.5.22 1947 + promise-limit: 2.7.0 1948 + transitivePeerDependencies: 1949 + - bufferutil 1950 + - encoding 1951 + - utf-8-validate 1952 + 1953 + '@libsql/core@0.17.0': 1954 + dependencies: 1955 + js-base64: 3.7.8 1956 + 1957 + '@libsql/darwin-arm64@0.5.22': 1958 + optional: true 1959 + 1960 + '@libsql/darwin-x64@0.5.22': 1961 + optional: true 1962 + 1963 + '@libsql/hrana-client@0.9.0': 1964 + dependencies: 1965 + '@libsql/isomorphic-ws': 0.1.5 1966 + cross-fetch: 4.1.0 1967 + js-base64: 3.7.8 1968 + node-fetch: 3.3.2 1969 + transitivePeerDependencies: 1970 + - bufferutil 1971 + - encoding 1972 + - utf-8-validate 1973 + 1974 + '@libsql/isomorphic-ws@0.1.5': 1975 + dependencies: 1976 + '@types/ws': 8.18.1 1977 + ws: 8.19.0 1978 + transitivePeerDependencies: 1979 + - bufferutil 1980 + - utf-8-validate 1981 + 1982 + '@libsql/linux-arm-gnueabihf@0.5.22': 1983 + optional: true 1984 + 1985 + '@libsql/linux-arm-musleabihf@0.5.22': 1986 + optional: true 1987 + 1988 + '@libsql/linux-arm64-gnu@0.5.22': 1989 + optional: true 1990 + 1991 + '@libsql/linux-arm64-musl@0.5.22': 1992 + optional: true 1993 + 1994 + '@libsql/linux-x64-gnu@0.5.22': 1995 + optional: true 1996 + 1997 + '@libsql/linux-x64-musl@0.5.22': 1998 + optional: true 1999 + 2000 + '@libsql/win32-x64-msvc@0.5.22': 2001 + optional: true 2002 + 1208 2003 '@mary-ext/event-iterator@1.0.0': 1209 2004 dependencies: 1210 2005 yocto-queue: 1.2.2 1211 2006 1212 2007 '@mary-ext/simple-event-emitter@1.0.0': {} 2008 + 2009 + '@neon-rs/load@0.0.4': {} 1213 2010 1214 2011 '@noble/curves@1.9.7': 1215 2012 dependencies: ··· 1227 2024 path-browserify: 1.0.1 1228 2025 tinyglobby: 0.2.15 1229 2026 2027 + '@types/node@25.3.0': 2028 + dependencies: 2029 + undici-types: 7.18.2 2030 + 2031 + '@types/ws@8.18.1': 2032 + dependencies: 2033 + '@types/node': 25.3.0 2034 + 1230 2035 abort-controller@3.0.0: 1231 2036 dependencies: 1232 2037 event-target-shim: 5.0.1 ··· 1285 2090 dependencies: 1286 2091 balanced-match: 4.0.3 1287 2092 2093 + buffer-from@1.1.2: {} 2094 + 1288 2095 buffer@6.0.3: 1289 2096 dependencies: 1290 2097 base64-js: 1.5.1 ··· 1355 2162 object-assign: 4.1.1 1356 2163 vary: 1.1.2 1357 2164 2165 + cross-fetch@4.1.0: 2166 + dependencies: 2167 + node-fetch: 2.7.0 2168 + transitivePeerDependencies: 2169 + - encoding 2170 + 2171 + data-uri-to-buffer@4.0.1: {} 2172 + 1358 2173 debug@2.6.9: 1359 2174 dependencies: 1360 2175 ms: 2.0.0 1361 2176 2177 + debug@4.4.3: 2178 + dependencies: 2179 + ms: 2.1.3 2180 + 1362 2181 delay@5.0.0: {} 1363 2182 1364 2183 delayed-stream@1.0.0: {} ··· 1367 2186 1368 2187 destroy@1.2.0: {} 1369 2188 2189 + detect-libc@2.0.2: {} 2190 + 2191 + drizzle-kit@0.31.9: 2192 + dependencies: 2193 + '@drizzle-team/brocli': 0.10.2 2194 + '@esbuild-kit/esm-loader': 2.6.5 2195 + esbuild: 0.25.12 2196 + esbuild-register: 3.6.0(esbuild@0.25.12) 2197 + transitivePeerDependencies: 2198 + - supports-color 2199 + 2200 + drizzle-orm@0.45.1(@libsql/client@0.17.0)(kysely@0.22.0)(pg@8.18.0): 2201 + optionalDependencies: 2202 + '@libsql/client': 0.17.0 2203 + kysely: 0.22.0 2204 + pg: 8.18.0 2205 + 1370 2206 dunder-proto@1.0.1: 1371 2207 dependencies: 1372 2208 call-bind-apply-helpers: 1.0.2 ··· 1394 2230 has-tostringtag: 1.0.2 1395 2231 hasown: 2.0.2 1396 2232 2233 + esbuild-register@3.6.0(esbuild@0.25.12): 2234 + dependencies: 2235 + debug: 4.4.3 2236 + esbuild: 0.25.12 2237 + transitivePeerDependencies: 2238 + - supports-color 2239 + 2240 + esbuild@0.18.20: 2241 + optionalDependencies: 2242 + '@esbuild/android-arm': 0.18.20 2243 + '@esbuild/android-arm64': 0.18.20 2244 + '@esbuild/android-x64': 0.18.20 2245 + '@esbuild/darwin-arm64': 0.18.20 2246 + '@esbuild/darwin-x64': 0.18.20 2247 + '@esbuild/freebsd-arm64': 0.18.20 2248 + '@esbuild/freebsd-x64': 0.18.20 2249 + '@esbuild/linux-arm': 0.18.20 2250 + '@esbuild/linux-arm64': 0.18.20 2251 + '@esbuild/linux-ia32': 0.18.20 2252 + '@esbuild/linux-loong64': 0.18.20 2253 + '@esbuild/linux-mips64el': 0.18.20 2254 + '@esbuild/linux-ppc64': 0.18.20 2255 + '@esbuild/linux-riscv64': 0.18.20 2256 + '@esbuild/linux-s390x': 0.18.20 2257 + '@esbuild/linux-x64': 0.18.20 2258 + '@esbuild/netbsd-x64': 0.18.20 2259 + '@esbuild/openbsd-x64': 0.18.20 2260 + '@esbuild/sunos-x64': 0.18.20 2261 + '@esbuild/win32-arm64': 0.18.20 2262 + '@esbuild/win32-ia32': 0.18.20 2263 + '@esbuild/win32-x64': 0.18.20 2264 + 2265 + esbuild@0.25.12: 2266 + optionalDependencies: 2267 + '@esbuild/aix-ppc64': 0.25.12 2268 + '@esbuild/android-arm': 0.25.12 2269 + '@esbuild/android-arm64': 0.25.12 2270 + '@esbuild/android-x64': 0.25.12 2271 + '@esbuild/darwin-arm64': 0.25.12 2272 + '@esbuild/darwin-x64': 0.25.12 2273 + '@esbuild/freebsd-arm64': 0.25.12 2274 + '@esbuild/freebsd-x64': 0.25.12 2275 + '@esbuild/linux-arm': 0.25.12 2276 + '@esbuild/linux-arm64': 0.25.12 2277 + '@esbuild/linux-ia32': 0.25.12 2278 + '@esbuild/linux-loong64': 0.25.12 2279 + '@esbuild/linux-mips64el': 0.25.12 2280 + '@esbuild/linux-ppc64': 0.25.12 2281 + '@esbuild/linux-riscv64': 0.25.12 2282 + '@esbuild/linux-s390x': 0.25.12 2283 + '@esbuild/linux-x64': 0.25.12 2284 + '@esbuild/netbsd-arm64': 0.25.12 2285 + '@esbuild/netbsd-x64': 0.25.12 2286 + '@esbuild/openbsd-arm64': 0.25.12 2287 + '@esbuild/openbsd-x64': 0.25.12 2288 + '@esbuild/openharmony-arm64': 0.25.12 2289 + '@esbuild/sunos-x64': 0.25.12 2290 + '@esbuild/win32-arm64': 0.25.12 2291 + '@esbuild/win32-ia32': 0.25.12 2292 + '@esbuild/win32-x64': 0.25.12 2293 + 1397 2294 escalade@3.2.0: {} 1398 2295 1399 2296 escape-html@1.0.3: {} ··· 1454 2351 optionalDependencies: 1455 2352 picomatch: 4.0.3 1456 2353 2354 + fetch-blob@3.2.0: 2355 + dependencies: 2356 + node-domexception: 1.0.0 2357 + web-streams-polyfill: 3.3.3 2358 + 1457 2359 finalhandler@1.3.2: 1458 2360 dependencies: 1459 2361 debug: 2.6.9 ··· 1476 2378 hasown: 2.0.2 1477 2379 mime-types: 2.1.35 1478 2380 2381 + formdata-polyfill@4.0.10: 2382 + dependencies: 2383 + fetch-blob: 3.2.0 2384 + 1479 2385 forwarded@0.2.0: {} 1480 2386 1481 2387 fresh@0.5.2: {} ··· 1501 2407 dependencies: 1502 2408 dunder-proto: 1.0.1 1503 2409 es-object-atoms: 1.1.1 2410 + 2411 + get-tsconfig@4.13.6: 2412 + dependencies: 2413 + resolve-pkg-maps: 1.0.0 1504 2414 1505 2415 gopd@1.2.0: {} 1506 2416 ··· 1543 2453 1544 2454 iso-datestring-validator@2.2.2: {} 1545 2455 2456 + js-base64@3.7.8: {} 2457 + 1546 2458 kysely@0.22.0: {} 1547 2459 1548 2460 lande@1.0.10: 1549 2461 dependencies: 1550 2462 toygrad: 2.6.0 1551 2463 2464 + libsql@0.5.22: 2465 + dependencies: 2466 + '@neon-rs/load': 0.0.4 2467 + detect-libc: 2.0.2 2468 + optionalDependencies: 2469 + '@libsql/darwin-arm64': 0.5.22 2470 + '@libsql/darwin-x64': 0.5.22 2471 + '@libsql/linux-arm-gnueabihf': 0.5.22 2472 + '@libsql/linux-arm-musleabihf': 0.5.22 2473 + '@libsql/linux-arm64-gnu': 0.5.22 2474 + '@libsql/linux-arm64-musl': 0.5.22 2475 + '@libsql/linux-x64-gnu': 0.5.22 2476 + '@libsql/linux-x64-musl': 0.5.22 2477 + '@libsql/win32-x64-msvc': 0.5.22 2478 + 1552 2479 lru-cache@10.4.3: {} 1553 2480 1554 2481 math-intrinsics@1.1.0: {} ··· 1583 2510 1584 2511 negotiator@0.6.4: {} 1585 2512 2513 + node-domexception@1.0.0: {} 2514 + 2515 + node-fetch@2.7.0: 2516 + dependencies: 2517 + whatwg-url: 5.0.0 2518 + 2519 + node-fetch@3.3.2: 2520 + dependencies: 2521 + data-uri-to-buffer: 4.0.1 2522 + fetch-blob: 3.2.0 2523 + formdata-polyfill: 4.0.10 2524 + 1586 2525 object-assign@4.1.1: {} 1587 2526 1588 2527 object-inspect@1.13.4: {} ··· 1702 2641 process-warning@3.0.0: {} 1703 2642 1704 2643 process@0.11.10: {} 2644 + 2645 + promise-limit@2.7.0: {} 1705 2646 1706 2647 proxy-addr@2.0.7: 1707 2648 dependencies: ··· 1739 2680 1740 2681 require-directory@2.1.1: {} 1741 2682 2683 + resolve-pkg-maps@1.0.0: {} 2684 + 1742 2685 roarr@7.21.4: 1743 2686 dependencies: 1744 2687 fast-printf: 1.6.10 ··· 1819 2762 dependencies: 1820 2763 atomic-sleep: 1.0.0 1821 2764 2765 + source-map-support@0.5.21: 2766 + dependencies: 2767 + buffer-from: 1.1.2 2768 + source-map: 0.6.1 2769 + 2770 + source-map@0.6.1: {} 2771 + 1822 2772 split2@4.2.0: {} 1823 2773 1824 2774 statuses@2.0.2: {} ··· 1853 2803 toidentifier@1.0.1: {} 1854 2804 1855 2805 toygrad@2.6.0: {} 2806 + 2807 + tr46@0.0.3: {} 1856 2808 1857 2809 ts-morph@27.0.2: 1858 2810 dependencies: ··· 1880 2832 dependencies: 1881 2833 multiformats: 9.9.0 1882 2834 2835 + undici-types@7.18.2: {} 2836 + 1883 2837 undici@6.23.0: {} 1884 2838 1885 2839 unicode-segmenter@0.14.5: {} ··· 1891 2845 varint@6.0.0: {} 1892 2846 1893 2847 vary@1.1.2: {} 2848 + 2849 + web-streams-polyfill@3.3.3: {} 2850 + 2851 + webidl-conversions@3.0.1: {} 2852 + 2853 + whatwg-url@5.0.0: 2854 + dependencies: 2855 + tr46: 0.0.3 2856 + webidl-conversions: 3.0.1 1894 2857 1895 2858 wrap-ansi@7.0.0: 1896 2859 dependencies:
+12
settings.toml
··· 1 + #I'm hoping this is the parent? 2 + [lavel-watcher.settings] 3 + pds=['selfhosted.social'] 4 + 5 + #I'm hoping this is another parent? 6 + [labeler.skywatch] 7 + host="ozone.skywatch.blue" 8 + 9 + # I'm hoping there will be multiple ones 10 + [labeler.skywatch.test-label] 11 + label_name="test-label" 12 + action="notify"
+11
src/db/index.ts
··· 1 + import { drizzle } from "drizzle-orm/libsql"; 2 + import { createClient } from "@libsql/client"; 3 + import * as schema from "./schema.js"; 4 + 5 + const authToken = process.env["DATABASE_AUTH_TOKEN"]; 6 + const client = createClient({ 7 + url: process.env.DATABASE_URL ?? "file:./label-watcher.db", 8 + ...(authToken !== undefined && { authToken }), 9 + }); 10 + 11 + export const db = drizzle(client, { schema });
+30
src/db/schema.ts
··· 1 + import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core"; 2 + import { relations } from "drizzle-orm"; 3 + 4 + export const watchedRepos = sqliteTable("watched_repos", { 5 + did: text("did").primaryKey().unique(), 6 + pdsHost: text("pds_host").notNull(), 7 + active: integer("active", { mode: "boolean" }).notNull(), 8 + dateFirstSeen: integer("date_first_seen", { mode: "timestamp" }).notNull(), 9 + }); 10 + 11 + export const labelsApplied = sqliteTable("labels_applied", { 12 + id: integer("id").primaryKey({ autoIncrement: true }), 13 + did: text("did") 14 + .notNull() 15 + .references(() => watchedRepos.did), 16 + label: text("label").notNull(), 17 + action: text("action").notNull(), 18 + dateApplied: integer("date_applied", { mode: "timestamp" }).notNull(), 19 + }); 20 + 21 + export const watchedReposRelations = relations(watchedRepos, ({ many }) => ({ 22 + labelsApplied: many(labelsApplied), 23 + })); 24 + 25 + export const labelsAppliedRelations = relations(labelsApplied, ({ one }) => ({ 26 + watchedRepo: one(watchedRepos, { 27 + fields: [labelsApplied.did], 28 + references: [watchedRepos.did], 29 + }), 30 + }));
+11
src/index.ts
··· 1 1 import { FirehoseSubscription } from "@atcute/firehose"; 2 2 import { ComAtprotoLabelSubscribeLabels } from "@atcute/atproto"; 3 + import { db } from "./db/index.js"; 4 + import { migrate } from "drizzle-orm/libsql/migrator"; 5 + 6 + // TODO 7 + // 1. Figure out a schema for settings we want. PDSs to watch.Labelers and their Labels 8 + // and which actions to do for them (notification/email) or auto takedown. thinking toml file maybe? 9 + // 2. Add a CLI argument to backfill PDS repos on start up. If finds a new active repo adds it 10 + // 3. Add a firehose listner that subsribes to the PDSs for new identies? (I say maybe not cause of bandwidth) 11 + 12 + // Run Drizzle migrations on startup 13 + migrate(db, { migrationsFolder: process.env.MIGRATIONS_FOLDER ?? "drizzle" }); 3 14 4 15 const listner = async (id: string, wss: string) => { 5 16 const subscription = new FirehoseSubscription({
+2 -1
tsconfig.json
··· 9 9 // See also https://aka.ms/tsconfig/module 10 10 "module": "nodenext", 11 11 "target": "esnext", 12 - "types": [], 12 + "types": ["node"], 13 13 // For nodejs: 14 14 // "lib": ["esnext"], 15 15 // "types": ["node"], ··· 41 41 "moduleDetection": "force", 42 42 "skipLibCheck": true, 43 43 }, 44 + "exclude": ["drizzle.config.ts", "node_modules", "dist"], 44 45 }