A decentralized music tracking and discovery platform built on AT Protocol 馃幍
listenbrainz
spotify
atproto
lastfm
musicbrainz
scrobbling
1{
2 "name": "@rocksky/api",
3 "version": "0.0.1",
4 "private": true,
5 "type": "module",
6 "module": "dist/index.js",
7 "scripts": {
8 "lexgen": "lex gen-server ./src/lexicon ./src/tealfm/lexicons/teal/**/* ./lexicons/**/* ./lexicons/* ./src/tealfm/lexicons/**/*",
9 "dev": "concurrently 'tsx --watch ./src/index.ts' 'tsx --watch ./src/server.ts'",
10 "prod": "tsx ./src/index.ts",
11 "build": "pkgroll",
12 "sync": "tsx ./src/scripts/sync.ts",
13 "meili:sync": "tsx ./src/scripts/meili.ts",
14 "sync:library": "tsx ./src/scripts/sync-library.ts",
15 "avatar": "tsx ./src/scripts/avatar.ts",
16 "genres": "tsx ./src/scripts/genres.ts",
17 "spotify": "tsx ./src/scripts/spotify.ts",
18 "exp": "tsx ./src/scripts/exp.ts",
19 "pkl:eval": "pkl eval -f json",
20 "pkl:gen": "tsx ./scripts/pkl.ts",
21 "dev:xrpc": "tsx --watch ./src/server.ts",
22 "prod:xrpc": "tsx ./src/server.ts",
23 "db:migrate": "drizzle-kit migrate",
24 "db:gen-migration": "drizzle-kit generate",
25 "prod:all": "concurrently 'tsx ./src/index.ts' 'tsx ./src/server.ts'",
26 "format": "biome format src",
27 "lint": "biome lint src",
28 "feed": "tsx ./src/scripts/feed.ts",
29 "dedup": "bun ./src/scripts/dedup.ts",
30 "seed:feed": "tsx ./src/scripts/seed-feed.ts",
31 "likes": "tsx ./src/scripts/likes.ts"
32 },
33 "dependencies": {
34 "@atproto/api": "^0.13.31",
35 "@atproto/common": "^0.4.6",
36 "@atproto/identity": "^0.4.5",
37 "@atproto/jwk-jose": "0.1.5",
38 "@atproto/lex-cli": "^0.5.6",
39 "@atproto/lexicon": "^0.4.5",
40 "@atproto/oauth-client-node": "0.2.14",
41 "@atproto/sync": "^0.1.11",
42 "@atproto/syntax": "^0.3.1",
43 "@atproto/xrpc-server": "^0.7.8",
44 "@hono/node-server": "^1.13.8",
45 "@hono/node-ws": "^1.1.0",
46 "@opentelemetry/api": "^1.9.0",
47 "@opentelemetry/auto-instrumentations-node": "^0.58.0",
48 "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0",
49 "@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
50 "@opentelemetry/resources": "^2.0.0",
51 "@opentelemetry/sdk-metrics": "^2.0.0",
52 "@opentelemetry/sdk-node": "^0.200.0",
53 "@opentelemetry/semantic-conventions": "^1.32.0",
54 "@pyroscope/nodejs": "^0.4.5",
55 "@types/prompts": "^2.4.9",
56 "assert": "^2.1.0",
57 "axios": "^1.7.9",
58 "better-sqlite3": "^12.4.1",
59 "chalk": "^5.4.1",
60 "chanfana": "^2.0.2",
61 "consola": "^3.4.2",
62 "cors": "^2.8.5",
63 "dayjs": "^1.11.13",
64 "dotenv": "^16.4.7",
65 "drizzle-orm": "^0.44.2",
66 "dropbox": "^10.34.0",
67 "effect": "^3.14.22",
68 "envalid": "^8.0.0",
69 "express": "^5.1.0",
70 "googleapis": "^146.0.0",
71 "hono": "^4.4.7",
72 "http-proxy-middleware": "^3.0.5",
73 "ioredis": "^5.8.1",
74 "iron-session": "^8.0.4",
75 "jose": "^6.1.0",
76 "jsonwebtoken": "^9.0.2",
77 "kysely": "^0.27.5",
78 "lodash": "^4.17.21",
79 "nats": "^2.29.2",
80 "node-cron": "^4.2.1",
81 "pg": "^8.13.3",
82 "prompts": "^2.4.2",
83 "ramda": "^0.30.1",
84 "redis": "^4.7.0",
85 "redlock": "^5.0.0-beta.2",
86 "unstorage": "^1.14.4",
87 "url": "^0.11.4",
88 "uuid": "^11.1.0",
89 "ws": "^8.18.1",
90 "zod": "^3.24.1"
91 },
92 "devDependencies": {
93 "@biomejs/biome": "^2.2.3",
94 "@pkl-community/pkl": "^0.28.2",
95 "@types/express": "^5.0.2",
96 "@types/lodash": "^4.17.17",
97 "@types/node": "^22.13.0",
98 "@types/ramda": "^0.30.2",
99 "@types/service-worker-mock": "^2.0.1",
100 "concurrently": "^9.2.0",
101 "drizzle-kit": "^0.31.1",
102 "pkgroll": "^2.6.1",
103 "tsx": "^4.19.2",
104 "zx": "^8.5.4"
105 },
106 "exports": {
107 ".": {
108 "import": "./dist/index.js"
109 }
110 }
111}