@rocksky/cli 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +270 -1
  2. package/TOOLS.md +194 -0
  3. package/bun.lock +28 -0
  4. package/dist/drizzle/0000_parallel_paper_doll.sql +220 -0
  5. package/dist/drizzle/meta/0000_snapshot.json +1559 -0
  6. package/dist/drizzle/meta/_journal.json +13 -0
  7. package/dist/index.js +8718 -165
  8. package/drizzle/0000_parallel_paper_doll.sql +220 -0
  9. package/drizzle/meta/0000_snapshot.json +1559 -0
  10. package/drizzle/meta/_journal.json +13 -0
  11. package/drizzle.config.ts +18 -0
  12. package/package.json +34 -4
  13. package/src/client.ts +32 -14
  14. package/src/cmd/mcp.ts +8 -0
  15. package/src/cmd/scrobble-api.ts +457 -0
  16. package/src/cmd/scrobble.ts +14 -61
  17. package/src/cmd/search.ts +27 -25
  18. package/src/cmd/sync.ts +812 -0
  19. package/src/cmd/whoami.ts +36 -7
  20. package/src/context.ts +24 -0
  21. package/src/drizzle.ts +53 -0
  22. package/src/index.ts +72 -23
  23. package/src/jetstream.ts +285 -0
  24. package/src/lexicon/index.ts +1321 -0
  25. package/src/lexicon/lexicons.ts +5453 -0
  26. package/src/lexicon/types/app/bsky/actor/profile.ts +38 -0
  27. package/src/lexicon/types/app/rocksky/actor/defs.ts +146 -0
  28. package/src/lexicon/types/app/rocksky/actor/getActorAlbums.ts +56 -0
  29. package/src/lexicon/types/app/rocksky/actor/getActorArtists.ts +56 -0
  30. package/src/lexicon/types/app/rocksky/actor/getActorCompatibility.ts +48 -0
  31. package/src/lexicon/types/app/rocksky/actor/getActorLovedSongs.ts +52 -0
  32. package/src/lexicon/types/app/rocksky/actor/getActorNeighbours.ts +48 -0
  33. package/src/lexicon/types/app/rocksky/actor/getActorPlaylists.ts +52 -0
  34. package/src/lexicon/types/app/rocksky/actor/getActorScrobbles.ts +52 -0
  35. package/src/lexicon/types/app/rocksky/actor/getActorSongs.ts +56 -0
  36. package/src/lexicon/types/app/rocksky/actor/getProfile.ts +43 -0
  37. package/src/lexicon/types/app/rocksky/album/defs.ts +85 -0
  38. package/src/lexicon/types/app/rocksky/album/getAlbum.ts +43 -0
  39. package/src/lexicon/types/app/rocksky/album/getAlbumTracks.ts +48 -0
  40. package/src/lexicon/types/app/rocksky/album/getAlbums.ts +50 -0
  41. package/src/lexicon/types/app/rocksky/album.ts +51 -0
  42. package/src/lexicon/types/app/rocksky/apikey/createApikey.ts +51 -0
  43. package/src/lexicon/types/app/rocksky/apikey/defs.ts +31 -0
  44. package/src/lexicon/types/app/rocksky/apikey/getApikeys.ts +50 -0
  45. package/src/lexicon/types/app/rocksky/apikey/removeApikey.ts +43 -0
  46. package/src/lexicon/types/app/rocksky/apikey/updateApikey.ts +53 -0
  47. package/src/lexicon/types/app/rocksky/apikeys/defs.ts +7 -0
  48. package/src/lexicon/types/app/rocksky/artist/defs.ts +140 -0
  49. package/src/lexicon/types/app/rocksky/artist/getArtist.ts +43 -0
  50. package/src/lexicon/types/app/rocksky/artist/getArtistAlbums.ts +48 -0
  51. package/src/lexicon/types/app/rocksky/artist/getArtistListeners.ts +52 -0
  52. package/src/lexicon/types/app/rocksky/artist/getArtistTracks.ts +52 -0
  53. package/src/lexicon/types/app/rocksky/artist/getArtists.ts +52 -0
  54. package/src/lexicon/types/app/rocksky/artist.ts +41 -0
  55. package/src/lexicon/types/app/rocksky/charts/defs.ts +44 -0
  56. package/src/lexicon/types/app/rocksky/charts/getScrobblesChart.ts +49 -0
  57. package/src/lexicon/types/app/rocksky/dropbox/defs.ts +71 -0
  58. package/src/lexicon/types/app/rocksky/dropbox/downloadFile.ts +42 -0
  59. package/src/lexicon/types/app/rocksky/dropbox/getFiles.ts +43 -0
  60. package/src/lexicon/types/app/rocksky/dropbox/getMetadata.ts +43 -0
  61. package/src/lexicon/types/app/rocksky/dropbox/getTemporaryLink.ts +43 -0
  62. package/src/lexicon/types/app/rocksky/feed/defs.ts +182 -0
  63. package/src/lexicon/types/app/rocksky/feed/describeFeedGenerator.ts +48 -0
  64. package/src/lexicon/types/app/rocksky/feed/generator.ts +29 -0
  65. package/src/lexicon/types/app/rocksky/feed/getFeed.ts +47 -0
  66. package/src/lexicon/types/app/rocksky/feed/getFeedGenerator.ts +48 -0
  67. package/src/lexicon/types/app/rocksky/feed/getFeedGenerators.ts +43 -0
  68. package/src/lexicon/types/app/rocksky/feed/getFeedSkeleton.ts +56 -0
  69. package/src/lexicon/types/app/rocksky/feed/getNowPlayings.ts +43 -0
  70. package/src/lexicon/types/app/rocksky/feed/search.ts +43 -0
  71. package/src/lexicon/types/app/rocksky/googledrive/defs.ts +42 -0
  72. package/src/lexicon/types/app/rocksky/googledrive/downloadFile.ts +42 -0
  73. package/src/lexicon/types/app/rocksky/googledrive/getFile.ts +43 -0
  74. package/src/lexicon/types/app/rocksky/googledrive/getFiles.ts +43 -0
  75. package/src/lexicon/types/app/rocksky/graph/defs.ts +47 -0
  76. package/src/lexicon/types/app/rocksky/graph/follow.ts +28 -0
  77. package/src/lexicon/types/app/rocksky/graph/followAccount.ts +50 -0
  78. package/src/lexicon/types/app/rocksky/graph/getFollowers.ts +56 -0
  79. package/src/lexicon/types/app/rocksky/graph/getFollows.ts +56 -0
  80. package/src/lexicon/types/app/rocksky/graph/getKnownFollowers.ts +52 -0
  81. package/src/lexicon/types/app/rocksky/graph/unfollowAccount.ts +50 -0
  82. package/src/lexicon/types/app/rocksky/like/dislikeShout.ts +49 -0
  83. package/src/lexicon/types/app/rocksky/like/dislikeSong.ts +49 -0
  84. package/src/lexicon/types/app/rocksky/like/likeShout.ts +49 -0
  85. package/src/lexicon/types/app/rocksky/like/likeSong.ts +49 -0
  86. package/src/lexicon/types/app/rocksky/like.ts +27 -0
  87. package/src/lexicon/types/app/rocksky/player/addDirectoryToQueue.ts +40 -0
  88. package/src/lexicon/types/app/rocksky/player/addItemsToQueue.ts +39 -0
  89. package/src/lexicon/types/app/rocksky/player/defs.ts +57 -0
  90. package/src/lexicon/types/app/rocksky/player/getCurrentlyPlaying.ts +44 -0
  91. package/src/lexicon/types/app/rocksky/player/getPlaybackQueue.ts +42 -0
  92. package/src/lexicon/types/app/rocksky/player/next.ts +34 -0
  93. package/src/lexicon/types/app/rocksky/player/pause.ts +34 -0
  94. package/src/lexicon/types/app/rocksky/player/play.ts +34 -0
  95. package/src/lexicon/types/app/rocksky/player/playDirectory.ts +38 -0
  96. package/src/lexicon/types/app/rocksky/player/playFile.ts +35 -0
  97. package/src/lexicon/types/app/rocksky/player/previous.ts +34 -0
  98. package/src/lexicon/types/app/rocksky/player/seek.ts +36 -0
  99. package/src/lexicon/types/app/rocksky/playlist/createPlaylist.ts +37 -0
  100. package/src/lexicon/types/app/rocksky/playlist/defs.ts +86 -0
  101. package/src/lexicon/types/app/rocksky/playlist/getPlaylist.ts +43 -0
  102. package/src/lexicon/types/app/rocksky/playlist/getPlaylists.ts +50 -0
  103. package/src/lexicon/types/app/rocksky/playlist/insertDirectory.ts +39 -0
  104. package/src/lexicon/types/app/rocksky/playlist/insertFiles.ts +38 -0
  105. package/src/lexicon/types/app/rocksky/playlist/removePlaylist.ts +35 -0
  106. package/src/lexicon/types/app/rocksky/playlist/removeTrack.ts +37 -0
  107. package/src/lexicon/types/app/rocksky/playlist/startPlaylist.ts +39 -0
  108. package/src/lexicon/types/app/rocksky/playlist.ts +43 -0
  109. package/src/lexicon/types/app/rocksky/radio/defs.ts +63 -0
  110. package/src/lexicon/types/app/rocksky/radio.ts +37 -0
  111. package/src/lexicon/types/app/rocksky/scrobble/createScrobble.ts +91 -0
  112. package/src/lexicon/types/app/rocksky/scrobble/defs.ts +93 -0
  113. package/src/lexicon/types/app/rocksky/scrobble/getScrobble.ts +43 -0
  114. package/src/lexicon/types/app/rocksky/scrobble/getScrobbles.ts +54 -0
  115. package/src/lexicon/types/app/rocksky/scrobble.ts +75 -0
  116. package/src/lexicon/types/app/rocksky/shout/createShout.ts +49 -0
  117. package/src/lexicon/types/app/rocksky/shout/defs.ts +58 -0
  118. package/src/lexicon/types/app/rocksky/shout/getAlbumShouts.ts +52 -0
  119. package/src/lexicon/types/app/rocksky/shout/getArtistShouts.ts +52 -0
  120. package/src/lexicon/types/app/rocksky/shout/getProfileShouts.ts +52 -0
  121. package/src/lexicon/types/app/rocksky/shout/getShoutReplies.ts +52 -0
  122. package/src/lexicon/types/app/rocksky/shout/getTrackShouts.ts +48 -0
  123. package/src/lexicon/types/app/rocksky/shout/removeShout.ts +43 -0
  124. package/src/lexicon/types/app/rocksky/shout/replyShout.ts +51 -0
  125. package/src/lexicon/types/app/rocksky/shout/reportShout.ts +51 -0
  126. package/src/lexicon/types/app/rocksky/shout.ts +30 -0
  127. package/src/lexicon/types/app/rocksky/song/createSong.ts +71 -0
  128. package/src/lexicon/types/app/rocksky/song/defs.ts +103 -0
  129. package/src/lexicon/types/app/rocksky/song/getSong.ts +43 -0
  130. package/src/lexicon/types/app/rocksky/song/getSongs.ts +50 -0
  131. package/src/lexicon/types/app/rocksky/song.ts +74 -0
  132. package/src/lexicon/types/app/rocksky/spotify/defs.ts +35 -0
  133. package/src/lexicon/types/app/rocksky/spotify/getCurrentlyPlaying.ts +43 -0
  134. package/src/lexicon/types/app/rocksky/spotify/next.ts +32 -0
  135. package/src/lexicon/types/app/rocksky/spotify/pause.ts +32 -0
  136. package/src/lexicon/types/app/rocksky/spotify/play.ts +32 -0
  137. package/src/lexicon/types/app/rocksky/spotify/previous.ts +32 -0
  138. package/src/lexicon/types/app/rocksky/spotify/seek.ts +35 -0
  139. package/src/lexicon/types/app/rocksky/stats/defs.ts +33 -0
  140. package/src/lexicon/types/app/rocksky/stats/getStats.ts +43 -0
  141. package/src/lexicon/types/com/atproto/repo/strongRef.ts +26 -0
  142. package/src/lexicon/util.ts +13 -0
  143. package/src/lib/agent.ts +56 -0
  144. package/src/lib/cleanUpJetstreamLock.ts +66 -0
  145. package/src/lib/cleanUpSyncLock.ts +56 -0
  146. package/src/lib/didUnstorageCache.ts +72 -0
  147. package/src/lib/env.ts +25 -0
  148. package/src/lib/extractPdsFromDid.ts +33 -0
  149. package/src/lib/getDidAndHandle.ts +39 -0
  150. package/src/lib/idResolver.ts +52 -0
  151. package/src/lib/lastfm.ts +26 -0
  152. package/src/lib/matchTrack.ts +47 -0
  153. package/src/logger.ts +18 -0
  154. package/src/mcp/index.ts +269 -0
  155. package/src/mcp/tools/albums.ts +13 -0
  156. package/src/mcp/tools/artists.ts +17 -0
  157. package/src/mcp/tools/create.ts +27 -0
  158. package/src/mcp/tools/myscrobbles.ts +42 -0
  159. package/src/mcp/tools/nowplaying.ts +53 -0
  160. package/src/mcp/tools/scrobbles.ts +39 -0
  161. package/src/mcp/tools/search.ts +88 -0
  162. package/src/mcp/tools/stats.ts +40 -0
  163. package/src/mcp/tools/tracks.ts +15 -0
  164. package/src/mcp/tools/whoami.ts +27 -0
  165. package/src/schema/album-tracks.ts +30 -0
  166. package/src/schema/albums.ts +29 -0
  167. package/src/schema/artist-albums.ts +29 -0
  168. package/src/schema/artist-genres.ts +17 -0
  169. package/src/schema/artist-tracks.ts +29 -0
  170. package/src/schema/artists.ts +30 -0
  171. package/src/schema/auth-session.ts +18 -0
  172. package/src/schema/genres.ts +18 -0
  173. package/src/schema/index.ts +33 -0
  174. package/src/schema/loved-tracks.ts +27 -0
  175. package/src/schema/scrobbles.ts +30 -0
  176. package/src/schema/tracks.ts +39 -0
  177. package/src/schema/user-albums.ts +31 -0
  178. package/src/schema/user-artists.ts +32 -0
  179. package/src/schema/user-tracks.ts +31 -0
  180. package/src/schema/users.ts +21 -0
  181. package/src/scrobble.ts +410 -0
  182. package/src/sqliteKv.ts +173 -0
  183. package/src/types.ts +308 -0
  184. package/tsconfig.json +26 -29
@@ -0,0 +1,38 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
5
+ import { lexicons } from '../../../../lexicons'
6
+ import { isObj, hasProp } from '../../../../util'
7
+ import { CID } from 'multiformats/cid'
8
+ import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
9
+ import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef'
10
+
11
+ export interface Record {
12
+ displayName?: string
13
+ /** Free-form profile description text. */
14
+ description?: string
15
+ /** Small image to be displayed next to posts from account. AKA, 'profile picture' */
16
+ avatar?: BlobRef
17
+ /** Larger horizontal image to display behind profile view. */
18
+ banner?: BlobRef
19
+ labels?:
20
+ | ComAtprotoLabelDefs.SelfLabels
21
+ | { $type: string; [k: string]: unknown }
22
+ joinedViaStarterPack?: ComAtprotoRepoStrongRef.Main
23
+ createdAt?: string
24
+ [k: string]: unknown
25
+ }
26
+
27
+ export function isRecord(v: unknown): v is Record {
28
+ return (
29
+ isObj(v) &&
30
+ hasProp(v, '$type') &&
31
+ (v.$type === 'app.bsky.actor.profile#main' ||
32
+ v.$type === 'app.bsky.actor.profile')
33
+ )
34
+ }
35
+
36
+ export function validateRecord(v: unknown): ValidationResult {
37
+ return lexicons.validate('app.bsky.actor.profile#main', v)
38
+ }
@@ -0,0 +1,146 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
5
+ import { lexicons } from '../../../../lexicons'
6
+ import { isObj, hasProp } from '../../../../util'
7
+ import { CID } from 'multiformats/cid'
8
+ import * as AppRockskyArtistDefs from '../artist/defs'
9
+
10
+ export interface ProfileViewDetailed {
11
+ /** The unique identifier of the actor. */
12
+ id?: string
13
+ /** The DID of the actor. */
14
+ did?: string
15
+ /** The handle of the actor. */
16
+ handle?: string
17
+ /** The display name of the actor. */
18
+ displayName?: string
19
+ /** The URL of the actor's avatar image. */
20
+ avatar?: string
21
+ /** The date and time when the actor was created. */
22
+ createdAt?: string
23
+ /** The date and time when the actor was last updated. */
24
+ updatedAt?: string
25
+ [k: string]: unknown
26
+ }
27
+
28
+ export function isProfileViewDetailed(v: unknown): v is ProfileViewDetailed {
29
+ return (
30
+ isObj(v) &&
31
+ hasProp(v, '$type') &&
32
+ v.$type === 'app.rocksky.actor.defs#profileViewDetailed'
33
+ )
34
+ }
35
+
36
+ export function validateProfileViewDetailed(v: unknown): ValidationResult {
37
+ return lexicons.validate('app.rocksky.actor.defs#profileViewDetailed', v)
38
+ }
39
+
40
+ export interface ProfileViewBasic {
41
+ /** The unique identifier of the actor. */
42
+ id?: string
43
+ /** The DID of the actor. */
44
+ did?: string
45
+ /** The handle of the actor. */
46
+ handle?: string
47
+ /** The display name of the actor. */
48
+ displayName?: string
49
+ /** The URL of the actor's avatar image. */
50
+ avatar?: string
51
+ /** The date and time when the actor was created. */
52
+ createdAt?: string
53
+ /** The date and time when the actor was last updated. */
54
+ updatedAt?: string
55
+ [k: string]: unknown
56
+ }
57
+
58
+ export function isProfileViewBasic(v: unknown): v is ProfileViewBasic {
59
+ return (
60
+ isObj(v) &&
61
+ hasProp(v, '$type') &&
62
+ v.$type === 'app.rocksky.actor.defs#profileViewBasic'
63
+ )
64
+ }
65
+
66
+ export function validateProfileViewBasic(v: unknown): ValidationResult {
67
+ return lexicons.validate('app.rocksky.actor.defs#profileViewBasic', v)
68
+ }
69
+
70
+ export interface NeighbourViewBasic {
71
+ userId?: string
72
+ did?: string
73
+ handle?: string
74
+ displayName?: string
75
+ /** The URL of the actor's avatar image. */
76
+ avatar?: string
77
+ /** The number of artists shared with the actor. */
78
+ sharedArtistsCount?: number
79
+ /** The similarity score with the actor. */
80
+ similarityScore?: number
81
+ /** The top shared artist names with the actor. */
82
+ topSharedArtistNames?: string[]
83
+ /** The top shared artist details with the actor. */
84
+ topSharedArtistsDetails?: AppRockskyArtistDefs.ArtistViewBasic[]
85
+ [k: string]: unknown
86
+ }
87
+
88
+ export function isNeighbourViewBasic(v: unknown): v is NeighbourViewBasic {
89
+ return (
90
+ isObj(v) &&
91
+ hasProp(v, '$type') &&
92
+ v.$type === 'app.rocksky.actor.defs#neighbourViewBasic'
93
+ )
94
+ }
95
+
96
+ export function validateNeighbourViewBasic(v: unknown): ValidationResult {
97
+ return lexicons.validate('app.rocksky.actor.defs#neighbourViewBasic', v)
98
+ }
99
+
100
+ export interface CompatibilityViewBasic {
101
+ compatibilityLevel?: number
102
+ compatibilityPercentage?: number
103
+ sharedArtists?: number
104
+ topSharedArtistNames?: string[]
105
+ topSharedDetailedArtists?: ArtistViewBasic[]
106
+ user1ArtistCount?: number
107
+ user2ArtistCount?: number
108
+ [k: string]: unknown
109
+ }
110
+
111
+ export function isCompatibilityViewBasic(
112
+ v: unknown,
113
+ ): v is CompatibilityViewBasic {
114
+ return (
115
+ isObj(v) &&
116
+ hasProp(v, '$type') &&
117
+ v.$type === 'app.rocksky.actor.defs#compatibilityViewBasic'
118
+ )
119
+ }
120
+
121
+ export function validateCompatibilityViewBasic(v: unknown): ValidationResult {
122
+ return lexicons.validate('app.rocksky.actor.defs#compatibilityViewBasic', v)
123
+ }
124
+
125
+ export interface ArtistViewBasic {
126
+ id?: string
127
+ name?: string
128
+ picture?: string
129
+ uri?: string
130
+ user1Rank?: number
131
+ user2Rank?: number
132
+ weight?: number
133
+ [k: string]: unknown
134
+ }
135
+
136
+ export function isArtistViewBasic(v: unknown): v is ArtistViewBasic {
137
+ return (
138
+ isObj(v) &&
139
+ hasProp(v, '$type') &&
140
+ v.$type === 'app.rocksky.actor.defs#artistViewBasic'
141
+ )
142
+ }
143
+
144
+ export function validateArtistViewBasic(v: unknown): ValidationResult {
145
+ return lexicons.validate('app.rocksky.actor.defs#artistViewBasic', v)
146
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyAlbumDefs from '../album/defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ /** The maximum number of albums to return */
16
+ limit?: number
17
+ /** The offset for pagination */
18
+ offset?: number
19
+ /** The start date to filter albums from (ISO 8601 format) */
20
+ startDate?: string
21
+ /** The end date to filter albums to (ISO 8601 format) */
22
+ endDate?: string
23
+ }
24
+
25
+ export type InputSchema = undefined
26
+
27
+ export interface OutputSchema {
28
+ albums?: AppRockskyAlbumDefs.AlbumViewBasic[]
29
+ [k: string]: unknown
30
+ }
31
+
32
+ export type HandlerInput = undefined
33
+
34
+ export interface HandlerSuccess {
35
+ encoding: 'application/json'
36
+ body: OutputSchema
37
+ headers?: { [key: string]: string }
38
+ }
39
+
40
+ export interface HandlerError {
41
+ status: number
42
+ message?: string
43
+ }
44
+
45
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
46
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
47
+ auth: HA
48
+ params: QueryParams
49
+ input: HandlerInput
50
+ req: express.Request
51
+ res: express.Response
52
+ resetRouteRateLimits: () => Promise<void>
53
+ }
54
+ export type Handler<HA extends HandlerAuth = never> = (
55
+ ctx: HandlerReqCtx<HA>,
56
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,56 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyArtistDefs from '../artist/defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ /** The maximum number of albums to return */
16
+ limit?: number
17
+ /** The offset for pagination */
18
+ offset?: number
19
+ /** The start date to filter albums from (ISO 8601 format) */
20
+ startDate?: string
21
+ /** The end date to filter albums to (ISO 8601 format) */
22
+ endDate?: string
23
+ }
24
+
25
+ export type InputSchema = undefined
26
+
27
+ export interface OutputSchema {
28
+ artists?: AppRockskyArtistDefs.ArtistViewBasic[]
29
+ [k: string]: unknown
30
+ }
31
+
32
+ export type HandlerInput = undefined
33
+
34
+ export interface HandlerSuccess {
35
+ encoding: 'application/json'
36
+ body: OutputSchema
37
+ headers?: { [key: string]: string }
38
+ }
39
+
40
+ export interface HandlerError {
41
+ status: number
42
+ message?: string
43
+ }
44
+
45
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
46
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
47
+ auth: HA
48
+ params: QueryParams
49
+ input: HandlerInput
50
+ req: express.Request
51
+ res: express.Response
52
+ resetRouteRateLimits: () => Promise<void>
53
+ }
54
+ export type Handler<HA extends HandlerAuth = never> = (
55
+ ctx: HandlerReqCtx<HA>,
56
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,48 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyActorDefs from './defs'
11
+
12
+ export interface QueryParams {
13
+ /** DID or handle to get compatibility for */
14
+ did: string
15
+ }
16
+
17
+ export type InputSchema = undefined
18
+
19
+ export interface OutputSchema {
20
+ compatibility?: AppRockskyActorDefs.CompatibilityViewBasic
21
+ [k: string]: unknown
22
+ }
23
+
24
+ export type HandlerInput = undefined
25
+
26
+ export interface HandlerSuccess {
27
+ encoding: 'application/json'
28
+ body: OutputSchema
29
+ headers?: { [key: string]: string }
30
+ }
31
+
32
+ export interface HandlerError {
33
+ status: number
34
+ message?: string
35
+ }
36
+
37
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
38
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
39
+ auth: HA
40
+ params: QueryParams
41
+ input: HandlerInput
42
+ req: express.Request
43
+ res: express.Response
44
+ resetRouteRateLimits: () => Promise<void>
45
+ }
46
+ export type Handler<HA extends HandlerAuth = never> = (
47
+ ctx: HandlerReqCtx<HA>,
48
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,52 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskySongDefs from '../song/defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ /** The maximum number of albums to return */
16
+ limit?: number
17
+ /** The offset for pagination */
18
+ offset?: number
19
+ }
20
+
21
+ export type InputSchema = undefined
22
+
23
+ export interface OutputSchema {
24
+ tracks?: AppRockskySongDefs.SongViewBasic[]
25
+ [k: string]: unknown
26
+ }
27
+
28
+ export type HandlerInput = undefined
29
+
30
+ export interface HandlerSuccess {
31
+ encoding: 'application/json'
32
+ body: OutputSchema
33
+ headers?: { [key: string]: string }
34
+ }
35
+
36
+ export interface HandlerError {
37
+ status: number
38
+ message?: string
39
+ }
40
+
41
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
42
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
43
+ auth: HA
44
+ params: QueryParams
45
+ input: HandlerInput
46
+ req: express.Request
47
+ res: express.Response
48
+ resetRouteRateLimits: () => Promise<void>
49
+ }
50
+ export type Handler<HA extends HandlerAuth = never> = (
51
+ ctx: HandlerReqCtx<HA>,
52
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,48 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyActorDefs from './defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ }
16
+
17
+ export type InputSchema = undefined
18
+
19
+ export interface OutputSchema {
20
+ neighbours?: AppRockskyActorDefs.NeighbourViewBasic[]
21
+ [k: string]: unknown
22
+ }
23
+
24
+ export type HandlerInput = undefined
25
+
26
+ export interface HandlerSuccess {
27
+ encoding: 'application/json'
28
+ body: OutputSchema
29
+ headers?: { [key: string]: string }
30
+ }
31
+
32
+ export interface HandlerError {
33
+ status: number
34
+ message?: string
35
+ }
36
+
37
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
38
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
39
+ auth: HA
40
+ params: QueryParams
41
+ input: HandlerInput
42
+ req: express.Request
43
+ res: express.Response
44
+ resetRouteRateLimits: () => Promise<void>
45
+ }
46
+ export type Handler<HA extends HandlerAuth = never> = (
47
+ ctx: HandlerReqCtx<HA>,
48
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,52 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyPlaylistDefs from '../playlist/defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ /** The maximum number of albums to return */
16
+ limit?: number
17
+ /** The offset for pagination */
18
+ offset?: number
19
+ }
20
+
21
+ export type InputSchema = undefined
22
+
23
+ export interface OutputSchema {
24
+ playlists?: AppRockskyPlaylistDefs.PlaylistViewBasic[]
25
+ [k: string]: unknown
26
+ }
27
+
28
+ export type HandlerInput = undefined
29
+
30
+ export interface HandlerSuccess {
31
+ encoding: 'application/json'
32
+ body: OutputSchema
33
+ headers?: { [key: string]: string }
34
+ }
35
+
36
+ export interface HandlerError {
37
+ status: number
38
+ message?: string
39
+ }
40
+
41
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
42
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
43
+ auth: HA
44
+ params: QueryParams
45
+ input: HandlerInput
46
+ req: express.Request
47
+ res: express.Response
48
+ resetRouteRateLimits: () => Promise<void>
49
+ }
50
+ export type Handler<HA extends HandlerAuth = never> = (
51
+ ctx: HandlerReqCtx<HA>,
52
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,52 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyScrobbleDefs from '../scrobble/defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ /** The maximum number of albums to return */
16
+ limit?: number
17
+ /** The offset for pagination */
18
+ offset?: number
19
+ }
20
+
21
+ export type InputSchema = undefined
22
+
23
+ export interface OutputSchema {
24
+ scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[]
25
+ [k: string]: unknown
26
+ }
27
+
28
+ export type HandlerInput = undefined
29
+
30
+ export interface HandlerSuccess {
31
+ encoding: 'application/json'
32
+ body: OutputSchema
33
+ headers?: { [key: string]: string }
34
+ }
35
+
36
+ export interface HandlerError {
37
+ status: number
38
+ message?: string
39
+ }
40
+
41
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
42
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
43
+ auth: HA
44
+ params: QueryParams
45
+ input: HandlerInput
46
+ req: express.Request
47
+ res: express.Response
48
+ resetRouteRateLimits: () => Promise<void>
49
+ }
50
+ export type Handler<HA extends HandlerAuth = never> = (
51
+ ctx: HandlerReqCtx<HA>,
52
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,56 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskySongDefs from '../song/defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did: string
15
+ /** The maximum number of albums to return */
16
+ limit?: number
17
+ /** The offset for pagination */
18
+ offset?: number
19
+ /** The start date to filter albums from (ISO 8601 format) */
20
+ startDate?: string
21
+ /** The end date to filter albums to (ISO 8601 format) */
22
+ endDate?: string
23
+ }
24
+
25
+ export type InputSchema = undefined
26
+
27
+ export interface OutputSchema {
28
+ songs?: AppRockskySongDefs.SongViewBasic[]
29
+ [k: string]: unknown
30
+ }
31
+
32
+ export type HandlerInput = undefined
33
+
34
+ export interface HandlerSuccess {
35
+ encoding: 'application/json'
36
+ body: OutputSchema
37
+ headers?: { [key: string]: string }
38
+ }
39
+
40
+ export interface HandlerError {
41
+ status: number
42
+ message?: string
43
+ }
44
+
45
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
46
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
47
+ auth: HA
48
+ params: QueryParams
49
+ input: HandlerInput
50
+ req: express.Request
51
+ res: express.Response
52
+ resetRouteRateLimits: () => Promise<void>
53
+ }
54
+ export type Handler<HA extends HandlerAuth = never> = (
55
+ ctx: HandlerReqCtx<HA>,
56
+ ) => Promise<HandlerOutput> | HandlerOutput
@@ -0,0 +1,43 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express'
5
+ import { ValidationResult, BlobRef } from '@atproto/lexicon'
6
+ import { lexicons } from '../../../../lexicons'
7
+ import { isObj, hasProp } from '../../../../util'
8
+ import { CID } from 'multiformats/cid'
9
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
10
+ import * as AppRockskyActorDefs from './defs'
11
+
12
+ export interface QueryParams {
13
+ /** The DID or handle of the actor */
14
+ did?: string
15
+ }
16
+
17
+ export type InputSchema = undefined
18
+ export type OutputSchema = AppRockskyActorDefs.ProfileViewDetailed
19
+ export type HandlerInput = undefined
20
+
21
+ export interface HandlerSuccess {
22
+ encoding: 'application/json'
23
+ body: OutputSchema
24
+ headers?: { [key: string]: string }
25
+ }
26
+
27
+ export interface HandlerError {
28
+ status: number
29
+ message?: string
30
+ }
31
+
32
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
33
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
34
+ auth: HA
35
+ params: QueryParams
36
+ input: HandlerInput
37
+ req: express.Request
38
+ res: express.Response
39
+ resetRouteRateLimits: () => Promise<void>
40
+ }
41
+ export type Handler<HA extends HandlerAuth = never> = (
42
+ ctx: HandlerReqCtx<HA>,
43
+ ) => Promise<HandlerOutput> | HandlerOutput