A decentralized music tracking and discovery platform built on AT Protocol 🎵 rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz

Add genre filter to Scrobbles chart

Add a "genre" query parameter to getScrobblesChart and propagate it
through
lexicon definitions, generated TypeScript types, XRPC handler logic, and
the
analytics backend (GetScrobblesPerDayParams).

+6279 -6231
+4
apps/api/lexicons/charts/getScrobblesChart.json
··· 27 27 "type": "string", 28 28 "description": "The URI of the track to filter by", 29 29 "format": "at-uri" 30 + }, 31 + "genre": { 32 + "type": "string", 33 + "description": "The genre to filter by" 30 34 } 31 35 } 32 36 },
+4
apps/api/pkl/defs/charts/getScrobblesChart.pkl
··· 27 27 description = "The URI of the track to filter by" 28 28 format = "at-uri" 29 29 } 30 + 31 + ["genre"] = new StringType { 32 + description = "The genre to filter by" 33 + } 30 34 } 31 35 } 32 36 output {
+414 -414
apps/api/src/lexicon/index.ts
··· 7 7 type Options as XrpcOptions, 8 8 type AuthVerifier, 9 9 type StreamAuthVerifier, 10 - } from '@atproto/xrpc-server' 11 - import { schemas } from './lexicons' 12 - import type * as FmTealAlphaActorGetProfile from './types/fm/teal/alpha/actor/getProfile' 13 - import type * as FmTealAlphaActorGetProfiles from './types/fm/teal/alpha/actor/getProfiles' 14 - import type * as FmTealAlphaActorSearchActors from './types/fm/teal/alpha/actor/searchActors' 15 - import type * as FmTealAlphaFeedGetActorFeed from './types/fm/teal/alpha/feed/getActorFeed' 16 - import type * as FmTealAlphaFeedGetPlay from './types/fm/teal/alpha/feed/getPlay' 17 - import type * as AppRockskyActorGetActorAlbums from './types/app/rocksky/actor/getActorAlbums' 18 - import type * as AppRockskyActorGetActorArtists from './types/app/rocksky/actor/getActorArtists' 19 - import type * as AppRockskyActorGetActorCompatibility from './types/app/rocksky/actor/getActorCompatibility' 20 - import type * as AppRockskyActorGetActorLovedSongs from './types/app/rocksky/actor/getActorLovedSongs' 21 - import type * as AppRockskyActorGetActorNeighbours from './types/app/rocksky/actor/getActorNeighbours' 22 - import type * as AppRockskyActorGetActorPlaylists from './types/app/rocksky/actor/getActorPlaylists' 23 - import type * as AppRockskyActorGetActorScrobbles from './types/app/rocksky/actor/getActorScrobbles' 24 - import type * as AppRockskyActorGetActorSongs from './types/app/rocksky/actor/getActorSongs' 25 - import type * as AppRockskyActorGetProfile from './types/app/rocksky/actor/getProfile' 26 - import type * as AppRockskyAlbumGetAlbum from './types/app/rocksky/album/getAlbum' 27 - import type * as AppRockskyAlbumGetAlbums from './types/app/rocksky/album/getAlbums' 28 - import type * as AppRockskyAlbumGetAlbumTracks from './types/app/rocksky/album/getAlbumTracks' 29 - import type * as AppRockskyApikeyCreateApikey from './types/app/rocksky/apikey/createApikey' 30 - import type * as AppRockskyApikeyGetApikeys from './types/app/rocksky/apikey/getApikeys' 31 - import type * as AppRockskyApikeyRemoveApikey from './types/app/rocksky/apikey/removeApikey' 32 - import type * as AppRockskyApikeyUpdateApikey from './types/app/rocksky/apikey/updateApikey' 33 - import type * as AppRockskyArtistGetArtist from './types/app/rocksky/artist/getArtist' 34 - import type * as AppRockskyArtistGetArtistAlbums from './types/app/rocksky/artist/getArtistAlbums' 35 - import type * as AppRockskyArtistGetArtistListeners from './types/app/rocksky/artist/getArtistListeners' 36 - import type * as AppRockskyArtistGetArtists from './types/app/rocksky/artist/getArtists' 37 - import type * as AppRockskyArtistGetArtistTracks from './types/app/rocksky/artist/getArtistTracks' 38 - import type * as AppRockskyChartsGetScrobblesChart from './types/app/rocksky/charts/getScrobblesChart' 39 - import type * as AppRockskyDropboxDownloadFile from './types/app/rocksky/dropbox/downloadFile' 40 - import type * as AppRockskyDropboxGetFiles from './types/app/rocksky/dropbox/getFiles' 41 - import type * as AppRockskyDropboxGetMetadata from './types/app/rocksky/dropbox/getMetadata' 42 - import type * as AppRockskyDropboxGetTemporaryLink from './types/app/rocksky/dropbox/getTemporaryLink' 43 - import type * as AppRockskyFeedDescribeFeedGenerator from './types/app/rocksky/feed/describeFeedGenerator' 44 - import type * as AppRockskyFeedGetFeed from './types/app/rocksky/feed/getFeed' 45 - import type * as AppRockskyFeedGetFeedGenerator from './types/app/rocksky/feed/getFeedGenerator' 46 - import type * as AppRockskyFeedGetFeedGenerators from './types/app/rocksky/feed/getFeedGenerators' 47 - import type * as AppRockskyFeedGetFeedSkeleton from './types/app/rocksky/feed/getFeedSkeleton' 48 - import type * as AppRockskyFeedGetNowPlayings from './types/app/rocksky/feed/getNowPlayings' 49 - import type * as AppRockskyFeedSearch from './types/app/rocksky/feed/search' 50 - import type * as AppRockskyGoogledriveDownloadFile from './types/app/rocksky/googledrive/downloadFile' 51 - import type * as AppRockskyGoogledriveGetFile from './types/app/rocksky/googledrive/getFile' 52 - import type * as AppRockskyGoogledriveGetFiles from './types/app/rocksky/googledrive/getFiles' 53 - import type * as AppRockskyGraphFollowAccount from './types/app/rocksky/graph/followAccount' 54 - import type * as AppRockskyGraphGetFollowers from './types/app/rocksky/graph/getFollowers' 55 - import type * as AppRockskyGraphGetFollows from './types/app/rocksky/graph/getFollows' 56 - import type * as AppRockskyGraphGetKnownFollowers from './types/app/rocksky/graph/getKnownFollowers' 57 - import type * as AppRockskyGraphUnfollowAccount from './types/app/rocksky/graph/unfollowAccount' 58 - import type * as AppRockskyLikeDislikeShout from './types/app/rocksky/like/dislikeShout' 59 - import type * as AppRockskyLikeDislikeSong from './types/app/rocksky/like/dislikeSong' 60 - import type * as AppRockskyLikeLikeShout from './types/app/rocksky/like/likeShout' 61 - import type * as AppRockskyLikeLikeSong from './types/app/rocksky/like/likeSong' 62 - import type * as AppRockskyPlayerAddDirectoryToQueue from './types/app/rocksky/player/addDirectoryToQueue' 63 - import type * as AppRockskyPlayerAddItemsToQueue from './types/app/rocksky/player/addItemsToQueue' 64 - import type * as AppRockskyPlayerGetCurrentlyPlaying from './types/app/rocksky/player/getCurrentlyPlaying' 65 - import type * as AppRockskyPlayerGetPlaybackQueue from './types/app/rocksky/player/getPlaybackQueue' 66 - import type * as AppRockskyPlayerNext from './types/app/rocksky/player/next' 67 - import type * as AppRockskyPlayerPause from './types/app/rocksky/player/pause' 68 - import type * as AppRockskyPlayerPlay from './types/app/rocksky/player/play' 69 - import type * as AppRockskyPlayerPlayDirectory from './types/app/rocksky/player/playDirectory' 70 - import type * as AppRockskyPlayerPlayFile from './types/app/rocksky/player/playFile' 71 - import type * as AppRockskyPlayerPrevious from './types/app/rocksky/player/previous' 72 - import type * as AppRockskyPlayerSeek from './types/app/rocksky/player/seek' 73 - import type * as AppRockskyPlaylistCreatePlaylist from './types/app/rocksky/playlist/createPlaylist' 74 - import type * as AppRockskyPlaylistGetPlaylist from './types/app/rocksky/playlist/getPlaylist' 75 - import type * as AppRockskyPlaylistGetPlaylists from './types/app/rocksky/playlist/getPlaylists' 76 - import type * as AppRockskyPlaylistInsertDirectory from './types/app/rocksky/playlist/insertDirectory' 77 - import type * as AppRockskyPlaylistInsertFiles from './types/app/rocksky/playlist/insertFiles' 78 - import type * as AppRockskyPlaylistRemovePlaylist from './types/app/rocksky/playlist/removePlaylist' 79 - import type * as AppRockskyPlaylistRemoveTrack from './types/app/rocksky/playlist/removeTrack' 80 - import type * as AppRockskyPlaylistStartPlaylist from './types/app/rocksky/playlist/startPlaylist' 81 - import type * as AppRockskyScrobbleCreateScrobble from './types/app/rocksky/scrobble/createScrobble' 82 - import type * as AppRockskyScrobbleGetScrobble from './types/app/rocksky/scrobble/getScrobble' 83 - import type * as AppRockskyScrobbleGetScrobbles from './types/app/rocksky/scrobble/getScrobbles' 84 - import type * as AppRockskyShoutCreateShout from './types/app/rocksky/shout/createShout' 85 - import type * as AppRockskyShoutGetAlbumShouts from './types/app/rocksky/shout/getAlbumShouts' 86 - import type * as AppRockskyShoutGetArtistShouts from './types/app/rocksky/shout/getArtistShouts' 87 - import type * as AppRockskyShoutGetProfileShouts from './types/app/rocksky/shout/getProfileShouts' 88 - import type * as AppRockskyShoutGetShoutReplies from './types/app/rocksky/shout/getShoutReplies' 89 - import type * as AppRockskyShoutGetTrackShouts from './types/app/rocksky/shout/getTrackShouts' 90 - import type * as AppRockskyShoutRemoveShout from './types/app/rocksky/shout/removeShout' 91 - import type * as AppRockskyShoutReplyShout from './types/app/rocksky/shout/replyShout' 92 - import type * as AppRockskyShoutReportShout from './types/app/rocksky/shout/reportShout' 93 - import type * as AppRockskySongCreateSong from './types/app/rocksky/song/createSong' 94 - import type * as AppRockskySongGetSong from './types/app/rocksky/song/getSong' 95 - import type * as AppRockskySongGetSongs from './types/app/rocksky/song/getSongs' 96 - import type * as AppRockskySongMatchSong from './types/app/rocksky/song/matchSong' 97 - import type * as AppRockskySpotifyGetCurrentlyPlaying from './types/app/rocksky/spotify/getCurrentlyPlaying' 98 - import type * as AppRockskySpotifyNext from './types/app/rocksky/spotify/next' 99 - import type * as AppRockskySpotifyPause from './types/app/rocksky/spotify/pause' 100 - import type * as AppRockskySpotifyPlay from './types/app/rocksky/spotify/play' 101 - import type * as AppRockskySpotifyPrevious from './types/app/rocksky/spotify/previous' 102 - import type * as AppRockskySpotifySeek from './types/app/rocksky/spotify/seek' 103 - import type * as AppRockskyStatsGetStats from './types/app/rocksky/stats/getStats' 10 + } from "@atproto/xrpc-server"; 11 + import { schemas } from "./lexicons"; 12 + import type * as FmTealAlphaActorGetProfile from "./types/fm/teal/alpha/actor/getProfile"; 13 + import type * as FmTealAlphaActorGetProfiles from "./types/fm/teal/alpha/actor/getProfiles"; 14 + import type * as FmTealAlphaActorSearchActors from "./types/fm/teal/alpha/actor/searchActors"; 15 + import type * as FmTealAlphaFeedGetActorFeed from "./types/fm/teal/alpha/feed/getActorFeed"; 16 + import type * as FmTealAlphaFeedGetPlay from "./types/fm/teal/alpha/feed/getPlay"; 17 + import type * as AppRockskyActorGetActorAlbums from "./types/app/rocksky/actor/getActorAlbums"; 18 + import type * as AppRockskyActorGetActorArtists from "./types/app/rocksky/actor/getActorArtists"; 19 + import type * as AppRockskyActorGetActorCompatibility from "./types/app/rocksky/actor/getActorCompatibility"; 20 + import type * as AppRockskyActorGetActorLovedSongs from "./types/app/rocksky/actor/getActorLovedSongs"; 21 + import type * as AppRockskyActorGetActorNeighbours from "./types/app/rocksky/actor/getActorNeighbours"; 22 + import type * as AppRockskyActorGetActorPlaylists from "./types/app/rocksky/actor/getActorPlaylists"; 23 + import type * as AppRockskyActorGetActorScrobbles from "./types/app/rocksky/actor/getActorScrobbles"; 24 + import type * as AppRockskyActorGetActorSongs from "./types/app/rocksky/actor/getActorSongs"; 25 + import type * as AppRockskyActorGetProfile from "./types/app/rocksky/actor/getProfile"; 26 + import type * as AppRockskyAlbumGetAlbum from "./types/app/rocksky/album/getAlbum"; 27 + import type * as AppRockskyAlbumGetAlbums from "./types/app/rocksky/album/getAlbums"; 28 + import type * as AppRockskyAlbumGetAlbumTracks from "./types/app/rocksky/album/getAlbumTracks"; 29 + import type * as AppRockskyApikeyCreateApikey from "./types/app/rocksky/apikey/createApikey"; 30 + import type * as AppRockskyApikeyGetApikeys from "./types/app/rocksky/apikey/getApikeys"; 31 + import type * as AppRockskyApikeyRemoveApikey from "./types/app/rocksky/apikey/removeApikey"; 32 + import type * as AppRockskyApikeyUpdateApikey from "./types/app/rocksky/apikey/updateApikey"; 33 + import type * as AppRockskyArtistGetArtist from "./types/app/rocksky/artist/getArtist"; 34 + import type * as AppRockskyArtistGetArtistAlbums from "./types/app/rocksky/artist/getArtistAlbums"; 35 + import type * as AppRockskyArtistGetArtistListeners from "./types/app/rocksky/artist/getArtistListeners"; 36 + import type * as AppRockskyArtistGetArtists from "./types/app/rocksky/artist/getArtists"; 37 + import type * as AppRockskyArtistGetArtistTracks from "./types/app/rocksky/artist/getArtistTracks"; 38 + import type * as AppRockskyChartsGetScrobblesChart from "./types/app/rocksky/charts/getScrobblesChart"; 39 + import type * as AppRockskyDropboxDownloadFile from "./types/app/rocksky/dropbox/downloadFile"; 40 + import type * as AppRockskyDropboxGetFiles from "./types/app/rocksky/dropbox/getFiles"; 41 + import type * as AppRockskyDropboxGetMetadata from "./types/app/rocksky/dropbox/getMetadata"; 42 + import type * as AppRockskyDropboxGetTemporaryLink from "./types/app/rocksky/dropbox/getTemporaryLink"; 43 + import type * as AppRockskyFeedDescribeFeedGenerator from "./types/app/rocksky/feed/describeFeedGenerator"; 44 + import type * as AppRockskyFeedGetFeed from "./types/app/rocksky/feed/getFeed"; 45 + import type * as AppRockskyFeedGetFeedGenerator from "./types/app/rocksky/feed/getFeedGenerator"; 46 + import type * as AppRockskyFeedGetFeedGenerators from "./types/app/rocksky/feed/getFeedGenerators"; 47 + import type * as AppRockskyFeedGetFeedSkeleton from "./types/app/rocksky/feed/getFeedSkeleton"; 48 + import type * as AppRockskyFeedGetNowPlayings from "./types/app/rocksky/feed/getNowPlayings"; 49 + import type * as AppRockskyFeedSearch from "./types/app/rocksky/feed/search"; 50 + import type * as AppRockskyGoogledriveDownloadFile from "./types/app/rocksky/googledrive/downloadFile"; 51 + import type * as AppRockskyGoogledriveGetFile from "./types/app/rocksky/googledrive/getFile"; 52 + import type * as AppRockskyGoogledriveGetFiles from "./types/app/rocksky/googledrive/getFiles"; 53 + import type * as AppRockskyGraphFollowAccount from "./types/app/rocksky/graph/followAccount"; 54 + import type * as AppRockskyGraphGetFollowers from "./types/app/rocksky/graph/getFollowers"; 55 + import type * as AppRockskyGraphGetFollows from "./types/app/rocksky/graph/getFollows"; 56 + import type * as AppRockskyGraphGetKnownFollowers from "./types/app/rocksky/graph/getKnownFollowers"; 57 + import type * as AppRockskyGraphUnfollowAccount from "./types/app/rocksky/graph/unfollowAccount"; 58 + import type * as AppRockskyLikeDislikeShout from "./types/app/rocksky/like/dislikeShout"; 59 + import type * as AppRockskyLikeDislikeSong from "./types/app/rocksky/like/dislikeSong"; 60 + import type * as AppRockskyLikeLikeShout from "./types/app/rocksky/like/likeShout"; 61 + import type * as AppRockskyLikeLikeSong from "./types/app/rocksky/like/likeSong"; 62 + import type * as AppRockskyPlayerAddDirectoryToQueue from "./types/app/rocksky/player/addDirectoryToQueue"; 63 + import type * as AppRockskyPlayerAddItemsToQueue from "./types/app/rocksky/player/addItemsToQueue"; 64 + import type * as AppRockskyPlayerGetCurrentlyPlaying from "./types/app/rocksky/player/getCurrentlyPlaying"; 65 + import type * as AppRockskyPlayerGetPlaybackQueue from "./types/app/rocksky/player/getPlaybackQueue"; 66 + import type * as AppRockskyPlayerNext from "./types/app/rocksky/player/next"; 67 + import type * as AppRockskyPlayerPause from "./types/app/rocksky/player/pause"; 68 + import type * as AppRockskyPlayerPlay from "./types/app/rocksky/player/play"; 69 + import type * as AppRockskyPlayerPlayDirectory from "./types/app/rocksky/player/playDirectory"; 70 + import type * as AppRockskyPlayerPlayFile from "./types/app/rocksky/player/playFile"; 71 + import type * as AppRockskyPlayerPrevious from "./types/app/rocksky/player/previous"; 72 + import type * as AppRockskyPlayerSeek from "./types/app/rocksky/player/seek"; 73 + import type * as AppRockskyPlaylistCreatePlaylist from "./types/app/rocksky/playlist/createPlaylist"; 74 + import type * as AppRockskyPlaylistGetPlaylist from "./types/app/rocksky/playlist/getPlaylist"; 75 + import type * as AppRockskyPlaylistGetPlaylists from "./types/app/rocksky/playlist/getPlaylists"; 76 + import type * as AppRockskyPlaylistInsertDirectory from "./types/app/rocksky/playlist/insertDirectory"; 77 + import type * as AppRockskyPlaylistInsertFiles from "./types/app/rocksky/playlist/insertFiles"; 78 + import type * as AppRockskyPlaylistRemovePlaylist from "./types/app/rocksky/playlist/removePlaylist"; 79 + import type * as AppRockskyPlaylistRemoveTrack from "./types/app/rocksky/playlist/removeTrack"; 80 + import type * as AppRockskyPlaylistStartPlaylist from "./types/app/rocksky/playlist/startPlaylist"; 81 + import type * as AppRockskyScrobbleCreateScrobble from "./types/app/rocksky/scrobble/createScrobble"; 82 + import type * as AppRockskyScrobbleGetScrobble from "./types/app/rocksky/scrobble/getScrobble"; 83 + import type * as AppRockskyScrobbleGetScrobbles from "./types/app/rocksky/scrobble/getScrobbles"; 84 + import type * as AppRockskyShoutCreateShout from "./types/app/rocksky/shout/createShout"; 85 + import type * as AppRockskyShoutGetAlbumShouts from "./types/app/rocksky/shout/getAlbumShouts"; 86 + import type * as AppRockskyShoutGetArtistShouts from "./types/app/rocksky/shout/getArtistShouts"; 87 + import type * as AppRockskyShoutGetProfileShouts from "./types/app/rocksky/shout/getProfileShouts"; 88 + import type * as AppRockskyShoutGetShoutReplies from "./types/app/rocksky/shout/getShoutReplies"; 89 + import type * as AppRockskyShoutGetTrackShouts from "./types/app/rocksky/shout/getTrackShouts"; 90 + import type * as AppRockskyShoutRemoveShout from "./types/app/rocksky/shout/removeShout"; 91 + import type * as AppRockskyShoutReplyShout from "./types/app/rocksky/shout/replyShout"; 92 + import type * as AppRockskyShoutReportShout from "./types/app/rocksky/shout/reportShout"; 93 + import type * as AppRockskySongCreateSong from "./types/app/rocksky/song/createSong"; 94 + import type * as AppRockskySongGetSong from "./types/app/rocksky/song/getSong"; 95 + import type * as AppRockskySongGetSongs from "./types/app/rocksky/song/getSongs"; 96 + import type * as AppRockskySongMatchSong from "./types/app/rocksky/song/matchSong"; 97 + import type * as AppRockskySpotifyGetCurrentlyPlaying from "./types/app/rocksky/spotify/getCurrentlyPlaying"; 98 + import type * as AppRockskySpotifyNext from "./types/app/rocksky/spotify/next"; 99 + import type * as AppRockskySpotifyPause from "./types/app/rocksky/spotify/pause"; 100 + import type * as AppRockskySpotifyPlay from "./types/app/rocksky/spotify/play"; 101 + import type * as AppRockskySpotifyPrevious from "./types/app/rocksky/spotify/previous"; 102 + import type * as AppRockskySpotifySeek from "./types/app/rocksky/spotify/seek"; 103 + import type * as AppRockskyStatsGetStats from "./types/app/rocksky/stats/getStats"; 104 104 105 105 export function createServer(options?: XrpcOptions): Server { 106 - return new Server(options) 106 + return new Server(options); 107 107 } 108 108 109 109 export class Server { 110 - xrpc: XrpcServer 111 - fm: FmNS 112 - app: AppNS 113 - com: ComNS 110 + xrpc: XrpcServer; 111 + fm: FmNS; 112 + app: AppNS; 113 + com: ComNS; 114 114 115 115 constructor(options?: XrpcOptions) { 116 - this.xrpc = createXrpcServer(schemas, options) 117 - this.fm = new FmNS(this) 118 - this.app = new AppNS(this) 119 - this.com = new ComNS(this) 116 + this.xrpc = createXrpcServer(schemas, options); 117 + this.fm = new FmNS(this); 118 + this.app = new AppNS(this); 119 + this.com = new ComNS(this); 120 120 } 121 121 } 122 122 123 123 export class FmNS { 124 - _server: Server 125 - teal: FmTealNS 124 + _server: Server; 125 + teal: FmTealNS; 126 126 127 127 constructor(server: Server) { 128 - this._server = server 129 - this.teal = new FmTealNS(server) 128 + this._server = server; 129 + this.teal = new FmTealNS(server); 130 130 } 131 131 } 132 132 133 133 export class FmTealNS { 134 - _server: Server 135 - alpha: FmTealAlphaNS 134 + _server: Server; 135 + alpha: FmTealAlphaNS; 136 136 137 137 constructor(server: Server) { 138 - this._server = server 139 - this.alpha = new FmTealAlphaNS(server) 138 + this._server = server; 139 + this.alpha = new FmTealAlphaNS(server); 140 140 } 141 141 } 142 142 143 143 export class FmTealAlphaNS { 144 - _server: Server 145 - actor: FmTealAlphaActorNS 146 - feed: FmTealAlphaFeedNS 144 + _server: Server; 145 + actor: FmTealAlphaActorNS; 146 + feed: FmTealAlphaFeedNS; 147 147 148 148 constructor(server: Server) { 149 - this._server = server 150 - this.actor = new FmTealAlphaActorNS(server) 151 - this.feed = new FmTealAlphaFeedNS(server) 149 + this._server = server; 150 + this.actor = new FmTealAlphaActorNS(server); 151 + this.feed = new FmTealAlphaFeedNS(server); 152 152 } 153 153 } 154 154 155 155 export class FmTealAlphaActorNS { 156 - _server: Server 156 + _server: Server; 157 157 158 158 constructor(server: Server) { 159 - this._server = server 159 + this._server = server; 160 160 } 161 161 162 162 getProfile<AV extends AuthVerifier>( ··· 166 166 FmTealAlphaActorGetProfile.HandlerReqCtx<ExtractAuth<AV>> 167 167 >, 168 168 ) { 169 - const nsid = 'fm.teal.alpha.actor.getProfile' // @ts-ignore 170 - return this._server.xrpc.method(nsid, cfg) 169 + const nsid = "fm.teal.alpha.actor.getProfile"; // @ts-ignore 170 + return this._server.xrpc.method(nsid, cfg); 171 171 } 172 172 173 173 getProfiles<AV extends AuthVerifier>( ··· 177 177 FmTealAlphaActorGetProfiles.HandlerReqCtx<ExtractAuth<AV>> 178 178 >, 179 179 ) { 180 - const nsid = 'fm.teal.alpha.actor.getProfiles' // @ts-ignore 181 - return this._server.xrpc.method(nsid, cfg) 180 + const nsid = "fm.teal.alpha.actor.getProfiles"; // @ts-ignore 181 + return this._server.xrpc.method(nsid, cfg); 182 182 } 183 183 184 184 searchActors<AV extends AuthVerifier>( ··· 188 188 FmTealAlphaActorSearchActors.HandlerReqCtx<ExtractAuth<AV>> 189 189 >, 190 190 ) { 191 - const nsid = 'fm.teal.alpha.actor.searchActors' // @ts-ignore 192 - return this._server.xrpc.method(nsid, cfg) 191 + const nsid = "fm.teal.alpha.actor.searchActors"; // @ts-ignore 192 + return this._server.xrpc.method(nsid, cfg); 193 193 } 194 194 } 195 195 196 196 export class FmTealAlphaFeedNS { 197 - _server: Server 197 + _server: Server; 198 198 199 199 constructor(server: Server) { 200 - this._server = server 200 + this._server = server; 201 201 } 202 202 203 203 getActorFeed<AV extends AuthVerifier>( ··· 207 207 FmTealAlphaFeedGetActorFeed.HandlerReqCtx<ExtractAuth<AV>> 208 208 >, 209 209 ) { 210 - const nsid = 'fm.teal.alpha.feed.getActorFeed' // @ts-ignore 211 - return this._server.xrpc.method(nsid, cfg) 210 + const nsid = "fm.teal.alpha.feed.getActorFeed"; // @ts-ignore 211 + return this._server.xrpc.method(nsid, cfg); 212 212 } 213 213 214 214 getPlay<AV extends AuthVerifier>( ··· 218 218 FmTealAlphaFeedGetPlay.HandlerReqCtx<ExtractAuth<AV>> 219 219 >, 220 220 ) { 221 - const nsid = 'fm.teal.alpha.feed.getPlay' // @ts-ignore 222 - return this._server.xrpc.method(nsid, cfg) 221 + const nsid = "fm.teal.alpha.feed.getPlay"; // @ts-ignore 222 + return this._server.xrpc.method(nsid, cfg); 223 223 } 224 224 } 225 225 226 226 export class AppNS { 227 - _server: Server 228 - rocksky: AppRockskyNS 229 - bsky: AppBskyNS 227 + _server: Server; 228 + rocksky: AppRockskyNS; 229 + bsky: AppBskyNS; 230 230 231 231 constructor(server: Server) { 232 - this._server = server 233 - this.rocksky = new AppRockskyNS(server) 234 - this.bsky = new AppBskyNS(server) 232 + this._server = server; 233 + this.rocksky = new AppRockskyNS(server); 234 + this.bsky = new AppBskyNS(server); 235 235 } 236 236 } 237 237 238 238 export class AppRockskyNS { 239 - _server: Server 240 - actor: AppRockskyActorNS 241 - album: AppRockskyAlbumNS 242 - apikey: AppRockskyApikeyNS 243 - artist: AppRockskyArtistNS 244 - charts: AppRockskyChartsNS 245 - dropbox: AppRockskyDropboxNS 246 - feed: AppRockskyFeedNS 247 - googledrive: AppRockskyGoogledriveNS 248 - graph: AppRockskyGraphNS 249 - like: AppRockskyLikeNS 250 - player: AppRockskyPlayerNS 251 - playlist: AppRockskyPlaylistNS 252 - scrobble: AppRockskyScrobbleNS 253 - shout: AppRockskyShoutNS 254 - song: AppRockskySongNS 255 - spotify: AppRockskySpotifyNS 256 - stats: AppRockskyStatsNS 239 + _server: Server; 240 + actor: AppRockskyActorNS; 241 + album: AppRockskyAlbumNS; 242 + apikey: AppRockskyApikeyNS; 243 + artist: AppRockskyArtistNS; 244 + charts: AppRockskyChartsNS; 245 + dropbox: AppRockskyDropboxNS; 246 + feed: AppRockskyFeedNS; 247 + googledrive: AppRockskyGoogledriveNS; 248 + graph: AppRockskyGraphNS; 249 + like: AppRockskyLikeNS; 250 + player: AppRockskyPlayerNS; 251 + playlist: AppRockskyPlaylistNS; 252 + scrobble: AppRockskyScrobbleNS; 253 + shout: AppRockskyShoutNS; 254 + song: AppRockskySongNS; 255 + spotify: AppRockskySpotifyNS; 256 + stats: AppRockskyStatsNS; 257 257 258 258 constructor(server: Server) { 259 - this._server = server 260 - this.actor = new AppRockskyActorNS(server) 261 - this.album = new AppRockskyAlbumNS(server) 262 - this.apikey = new AppRockskyApikeyNS(server) 263 - this.artist = new AppRockskyArtistNS(server) 264 - this.charts = new AppRockskyChartsNS(server) 265 - this.dropbox = new AppRockskyDropboxNS(server) 266 - this.feed = new AppRockskyFeedNS(server) 267 - this.googledrive = new AppRockskyGoogledriveNS(server) 268 - this.graph = new AppRockskyGraphNS(server) 269 - this.like = new AppRockskyLikeNS(server) 270 - this.player = new AppRockskyPlayerNS(server) 271 - this.playlist = new AppRockskyPlaylistNS(server) 272 - this.scrobble = new AppRockskyScrobbleNS(server) 273 - this.shout = new AppRockskyShoutNS(server) 274 - this.song = new AppRockskySongNS(server) 275 - this.spotify = new AppRockskySpotifyNS(server) 276 - this.stats = new AppRockskyStatsNS(server) 259 + this._server = server; 260 + this.actor = new AppRockskyActorNS(server); 261 + this.album = new AppRockskyAlbumNS(server); 262 + this.apikey = new AppRockskyApikeyNS(server); 263 + this.artist = new AppRockskyArtistNS(server); 264 + this.charts = new AppRockskyChartsNS(server); 265 + this.dropbox = new AppRockskyDropboxNS(server); 266 + this.feed = new AppRockskyFeedNS(server); 267 + this.googledrive = new AppRockskyGoogledriveNS(server); 268 + this.graph = new AppRockskyGraphNS(server); 269 + this.like = new AppRockskyLikeNS(server); 270 + this.player = new AppRockskyPlayerNS(server); 271 + this.playlist = new AppRockskyPlaylistNS(server); 272 + this.scrobble = new AppRockskyScrobbleNS(server); 273 + this.shout = new AppRockskyShoutNS(server); 274 + this.song = new AppRockskySongNS(server); 275 + this.spotify = new AppRockskySpotifyNS(server); 276 + this.stats = new AppRockskyStatsNS(server); 277 277 } 278 278 } 279 279 280 280 export class AppRockskyActorNS { 281 - _server: Server 281 + _server: Server; 282 282 283 283 constructor(server: Server) { 284 - this._server = server 284 + this._server = server; 285 285 } 286 286 287 287 getActorAlbums<AV extends AuthVerifier>( ··· 291 291 AppRockskyActorGetActorAlbums.HandlerReqCtx<ExtractAuth<AV>> 292 292 >, 293 293 ) { 294 - const nsid = 'app.rocksky.actor.getActorAlbums' // @ts-ignore 295 - return this._server.xrpc.method(nsid, cfg) 294 + const nsid = "app.rocksky.actor.getActorAlbums"; // @ts-ignore 295 + return this._server.xrpc.method(nsid, cfg); 296 296 } 297 297 298 298 getActorArtists<AV extends AuthVerifier>( ··· 302 302 AppRockskyActorGetActorArtists.HandlerReqCtx<ExtractAuth<AV>> 303 303 >, 304 304 ) { 305 - const nsid = 'app.rocksky.actor.getActorArtists' // @ts-ignore 306 - return this._server.xrpc.method(nsid, cfg) 305 + const nsid = "app.rocksky.actor.getActorArtists"; // @ts-ignore 306 + return this._server.xrpc.method(nsid, cfg); 307 307 } 308 308 309 309 getActorCompatibility<AV extends AuthVerifier>( ··· 313 313 AppRockskyActorGetActorCompatibility.HandlerReqCtx<ExtractAuth<AV>> 314 314 >, 315 315 ) { 316 - const nsid = 'app.rocksky.actor.getActorCompatibility' // @ts-ignore 317 - return this._server.xrpc.method(nsid, cfg) 316 + const nsid = "app.rocksky.actor.getActorCompatibility"; // @ts-ignore 317 + return this._server.xrpc.method(nsid, cfg); 318 318 } 319 319 320 320 getActorLovedSongs<AV extends AuthVerifier>( ··· 324 324 AppRockskyActorGetActorLovedSongs.HandlerReqCtx<ExtractAuth<AV>> 325 325 >, 326 326 ) { 327 - const nsid = 'app.rocksky.actor.getActorLovedSongs' // @ts-ignore 328 - return this._server.xrpc.method(nsid, cfg) 327 + const nsid = "app.rocksky.actor.getActorLovedSongs"; // @ts-ignore 328 + return this._server.xrpc.method(nsid, cfg); 329 329 } 330 330 331 331 getActorNeighbours<AV extends AuthVerifier>( ··· 335 335 AppRockskyActorGetActorNeighbours.HandlerReqCtx<ExtractAuth<AV>> 336 336 >, 337 337 ) { 338 - const nsid = 'app.rocksky.actor.getActorNeighbours' // @ts-ignore 339 - return this._server.xrpc.method(nsid, cfg) 338 + const nsid = "app.rocksky.actor.getActorNeighbours"; // @ts-ignore 339 + return this._server.xrpc.method(nsid, cfg); 340 340 } 341 341 342 342 getActorPlaylists<AV extends AuthVerifier>( ··· 346 346 AppRockskyActorGetActorPlaylists.HandlerReqCtx<ExtractAuth<AV>> 347 347 >, 348 348 ) { 349 - const nsid = 'app.rocksky.actor.getActorPlaylists' // @ts-ignore 350 - return this._server.xrpc.method(nsid, cfg) 349 + const nsid = "app.rocksky.actor.getActorPlaylists"; // @ts-ignore 350 + return this._server.xrpc.method(nsid, cfg); 351 351 } 352 352 353 353 getActorScrobbles<AV extends AuthVerifier>( ··· 357 357 AppRockskyActorGetActorScrobbles.HandlerReqCtx<ExtractAuth<AV>> 358 358 >, 359 359 ) { 360 - const nsid = 'app.rocksky.actor.getActorScrobbles' // @ts-ignore 361 - return this._server.xrpc.method(nsid, cfg) 360 + const nsid = "app.rocksky.actor.getActorScrobbles"; // @ts-ignore 361 + return this._server.xrpc.method(nsid, cfg); 362 362 } 363 363 364 364 getActorSongs<AV extends AuthVerifier>( ··· 368 368 AppRockskyActorGetActorSongs.HandlerReqCtx<ExtractAuth<AV>> 369 369 >, 370 370 ) { 371 - const nsid = 'app.rocksky.actor.getActorSongs' // @ts-ignore 372 - return this._server.xrpc.method(nsid, cfg) 371 + const nsid = "app.rocksky.actor.getActorSongs"; // @ts-ignore 372 + return this._server.xrpc.method(nsid, cfg); 373 373 } 374 374 375 375 getProfile<AV extends AuthVerifier>( ··· 379 379 AppRockskyActorGetProfile.HandlerReqCtx<ExtractAuth<AV>> 380 380 >, 381 381 ) { 382 - const nsid = 'app.rocksky.actor.getProfile' // @ts-ignore 383 - return this._server.xrpc.method(nsid, cfg) 382 + const nsid = "app.rocksky.actor.getProfile"; // @ts-ignore 383 + return this._server.xrpc.method(nsid, cfg); 384 384 } 385 385 } 386 386 387 387 export class AppRockskyAlbumNS { 388 - _server: Server 388 + _server: Server; 389 389 390 390 constructor(server: Server) { 391 - this._server = server 391 + this._server = server; 392 392 } 393 393 394 394 getAlbum<AV extends AuthVerifier>( ··· 398 398 AppRockskyAlbumGetAlbum.HandlerReqCtx<ExtractAuth<AV>> 399 399 >, 400 400 ) { 401 - const nsid = 'app.rocksky.album.getAlbum' // @ts-ignore 402 - return this._server.xrpc.method(nsid, cfg) 401 + const nsid = "app.rocksky.album.getAlbum"; // @ts-ignore 402 + return this._server.xrpc.method(nsid, cfg); 403 403 } 404 404 405 405 getAlbums<AV extends AuthVerifier>( ··· 409 409 AppRockskyAlbumGetAlbums.HandlerReqCtx<ExtractAuth<AV>> 410 410 >, 411 411 ) { 412 - const nsid = 'app.rocksky.album.getAlbums' // @ts-ignore 413 - return this._server.xrpc.method(nsid, cfg) 412 + const nsid = "app.rocksky.album.getAlbums"; // @ts-ignore 413 + return this._server.xrpc.method(nsid, cfg); 414 414 } 415 415 416 416 getAlbumTracks<AV extends AuthVerifier>( ··· 420 420 AppRockskyAlbumGetAlbumTracks.HandlerReqCtx<ExtractAuth<AV>> 421 421 >, 422 422 ) { 423 - const nsid = 'app.rocksky.album.getAlbumTracks' // @ts-ignore 424 - return this._server.xrpc.method(nsid, cfg) 423 + const nsid = "app.rocksky.album.getAlbumTracks"; // @ts-ignore 424 + return this._server.xrpc.method(nsid, cfg); 425 425 } 426 426 } 427 427 428 428 export class AppRockskyApikeyNS { 429 - _server: Server 429 + _server: Server; 430 430 431 431 constructor(server: Server) { 432 - this._server = server 432 + this._server = server; 433 433 } 434 434 435 435 createApikey<AV extends AuthVerifier>( ··· 439 439 AppRockskyApikeyCreateApikey.HandlerReqCtx<ExtractAuth<AV>> 440 440 >, 441 441 ) { 442 - const nsid = 'app.rocksky.apikey.createApikey' // @ts-ignore 443 - return this._server.xrpc.method(nsid, cfg) 442 + const nsid = "app.rocksky.apikey.createApikey"; // @ts-ignore 443 + return this._server.xrpc.method(nsid, cfg); 444 444 } 445 445 446 446 getApikeys<AV extends AuthVerifier>( ··· 450 450 AppRockskyApikeyGetApikeys.HandlerReqCtx<ExtractAuth<AV>> 451 451 >, 452 452 ) { 453 - const nsid = 'app.rocksky.apikey.getApikeys' // @ts-ignore 454 - return this._server.xrpc.method(nsid, cfg) 453 + const nsid = "app.rocksky.apikey.getApikeys"; // @ts-ignore 454 + return this._server.xrpc.method(nsid, cfg); 455 455 } 456 456 457 457 removeApikey<AV extends AuthVerifier>( ··· 461 461 AppRockskyApikeyRemoveApikey.HandlerReqCtx<ExtractAuth<AV>> 462 462 >, 463 463 ) { 464 - const nsid = 'app.rocksky.apikey.removeApikey' // @ts-ignore 465 - return this._server.xrpc.method(nsid, cfg) 464 + const nsid = "app.rocksky.apikey.removeApikey"; // @ts-ignore 465 + return this._server.xrpc.method(nsid, cfg); 466 466 } 467 467 468 468 updateApikey<AV extends AuthVerifier>( ··· 472 472 AppRockskyApikeyUpdateApikey.HandlerReqCtx<ExtractAuth<AV>> 473 473 >, 474 474 ) { 475 - const nsid = 'app.rocksky.apikey.updateApikey' // @ts-ignore 476 - return this._server.xrpc.method(nsid, cfg) 475 + const nsid = "app.rocksky.apikey.updateApikey"; // @ts-ignore 476 + return this._server.xrpc.method(nsid, cfg); 477 477 } 478 478 } 479 479 480 480 export class AppRockskyArtistNS { 481 - _server: Server 481 + _server: Server; 482 482 483 483 constructor(server: Server) { 484 - this._server = server 484 + this._server = server; 485 485 } 486 486 487 487 getArtist<AV extends AuthVerifier>( ··· 491 491 AppRockskyArtistGetArtist.HandlerReqCtx<ExtractAuth<AV>> 492 492 >, 493 493 ) { 494 - const nsid = 'app.rocksky.artist.getArtist' // @ts-ignore 495 - return this._server.xrpc.method(nsid, cfg) 494 + const nsid = "app.rocksky.artist.getArtist"; // @ts-ignore 495 + return this._server.xrpc.method(nsid, cfg); 496 496 } 497 497 498 498 getArtistAlbums<AV extends AuthVerifier>( ··· 502 502 AppRockskyArtistGetArtistAlbums.HandlerReqCtx<ExtractAuth<AV>> 503 503 >, 504 504 ) { 505 - const nsid = 'app.rocksky.artist.getArtistAlbums' // @ts-ignore 506 - return this._server.xrpc.method(nsid, cfg) 505 + const nsid = "app.rocksky.artist.getArtistAlbums"; // @ts-ignore 506 + return this._server.xrpc.method(nsid, cfg); 507 507 } 508 508 509 509 getArtistListeners<AV extends AuthVerifier>( ··· 513 513 AppRockskyArtistGetArtistListeners.HandlerReqCtx<ExtractAuth<AV>> 514 514 >, 515 515 ) { 516 - const nsid = 'app.rocksky.artist.getArtistListeners' // @ts-ignore 517 - return this._server.xrpc.method(nsid, cfg) 516 + const nsid = "app.rocksky.artist.getArtistListeners"; // @ts-ignore 517 + return this._server.xrpc.method(nsid, cfg); 518 518 } 519 519 520 520 getArtists<AV extends AuthVerifier>( ··· 524 524 AppRockskyArtistGetArtists.HandlerReqCtx<ExtractAuth<AV>> 525 525 >, 526 526 ) { 527 - const nsid = 'app.rocksky.artist.getArtists' // @ts-ignore 528 - return this._server.xrpc.method(nsid, cfg) 527 + const nsid = "app.rocksky.artist.getArtists"; // @ts-ignore 528 + return this._server.xrpc.method(nsid, cfg); 529 529 } 530 530 531 531 getArtistTracks<AV extends AuthVerifier>( ··· 535 535 AppRockskyArtistGetArtistTracks.HandlerReqCtx<ExtractAuth<AV>> 536 536 >, 537 537 ) { 538 - const nsid = 'app.rocksky.artist.getArtistTracks' // @ts-ignore 539 - return this._server.xrpc.method(nsid, cfg) 538 + const nsid = "app.rocksky.artist.getArtistTracks"; // @ts-ignore 539 + return this._server.xrpc.method(nsid, cfg); 540 540 } 541 541 } 542 542 543 543 export class AppRockskyChartsNS { 544 - _server: Server 544 + _server: Server; 545 545 546 546 constructor(server: Server) { 547 - this._server = server 547 + this._server = server; 548 548 } 549 549 550 550 getScrobblesChart<AV extends AuthVerifier>( ··· 554 554 AppRockskyChartsGetScrobblesChart.HandlerReqCtx<ExtractAuth<AV>> 555 555 >, 556 556 ) { 557 - const nsid = 'app.rocksky.charts.getScrobblesChart' // @ts-ignore 558 - return this._server.xrpc.method(nsid, cfg) 557 + const nsid = "app.rocksky.charts.getScrobblesChart"; // @ts-ignore 558 + return this._server.xrpc.method(nsid, cfg); 559 559 } 560 560 } 561 561 562 562 export class AppRockskyDropboxNS { 563 - _server: Server 563 + _server: Server; 564 564 565 565 constructor(server: Server) { 566 - this._server = server 566 + this._server = server; 567 567 } 568 568 569 569 downloadFile<AV extends AuthVerifier>( ··· 573 573 AppRockskyDropboxDownloadFile.HandlerReqCtx<ExtractAuth<AV>> 574 574 >, 575 575 ) { 576 - const nsid = 'app.rocksky.dropbox.downloadFile' // @ts-ignore 577 - return this._server.xrpc.method(nsid, cfg) 576 + const nsid = "app.rocksky.dropbox.downloadFile"; // @ts-ignore 577 + return this._server.xrpc.method(nsid, cfg); 578 578 } 579 579 580 580 getFiles<AV extends AuthVerifier>( ··· 584 584 AppRockskyDropboxGetFiles.HandlerReqCtx<ExtractAuth<AV>> 585 585 >, 586 586 ) { 587 - const nsid = 'app.rocksky.dropbox.getFiles' // @ts-ignore 588 - return this._server.xrpc.method(nsid, cfg) 587 + const nsid = "app.rocksky.dropbox.getFiles"; // @ts-ignore 588 + return this._server.xrpc.method(nsid, cfg); 589 589 } 590 590 591 591 getMetadata<AV extends AuthVerifier>( ··· 595 595 AppRockskyDropboxGetMetadata.HandlerReqCtx<ExtractAuth<AV>> 596 596 >, 597 597 ) { 598 - const nsid = 'app.rocksky.dropbox.getMetadata' // @ts-ignore 599 - return this._server.xrpc.method(nsid, cfg) 598 + const nsid = "app.rocksky.dropbox.getMetadata"; // @ts-ignore 599 + return this._server.xrpc.method(nsid, cfg); 600 600 } 601 601 602 602 getTemporaryLink<AV extends AuthVerifier>( ··· 606 606 AppRockskyDropboxGetTemporaryLink.HandlerReqCtx<ExtractAuth<AV>> 607 607 >, 608 608 ) { 609 - const nsid = 'app.rocksky.dropbox.getTemporaryLink' // @ts-ignore 610 - return this._server.xrpc.method(nsid, cfg) 609 + const nsid = "app.rocksky.dropbox.getTemporaryLink"; // @ts-ignore 610 + return this._server.xrpc.method(nsid, cfg); 611 611 } 612 612 } 613 613 614 614 export class AppRockskyFeedNS { 615 - _server: Server 615 + _server: Server; 616 616 617 617 constructor(server: Server) { 618 - this._server = server 618 + this._server = server; 619 619 } 620 620 621 621 describeFeedGenerator<AV extends AuthVerifier>( ··· 625 625 AppRockskyFeedDescribeFeedGenerator.HandlerReqCtx<ExtractAuth<AV>> 626 626 >, 627 627 ) { 628 - const nsid = 'app.rocksky.feed.describeFeedGenerator' // @ts-ignore 629 - return this._server.xrpc.method(nsid, cfg) 628 + const nsid = "app.rocksky.feed.describeFeedGenerator"; // @ts-ignore 629 + return this._server.xrpc.method(nsid, cfg); 630 630 } 631 631 632 632 getFeed<AV extends AuthVerifier>( ··· 636 636 AppRockskyFeedGetFeed.HandlerReqCtx<ExtractAuth<AV>> 637 637 >, 638 638 ) { 639 - const nsid = 'app.rocksky.feed.getFeed' // @ts-ignore 640 - return this._server.xrpc.method(nsid, cfg) 639 + const nsid = "app.rocksky.feed.getFeed"; // @ts-ignore 640 + return this._server.xrpc.method(nsid, cfg); 641 641 } 642 642 643 643 getFeedGenerator<AV extends AuthVerifier>( ··· 647 647 AppRockskyFeedGetFeedGenerator.HandlerReqCtx<ExtractAuth<AV>> 648 648 >, 649 649 ) { 650 - const nsid = 'app.rocksky.feed.getFeedGenerator' // @ts-ignore 651 - return this._server.xrpc.method(nsid, cfg) 650 + const nsid = "app.rocksky.feed.getFeedGenerator"; // @ts-ignore 651 + return this._server.xrpc.method(nsid, cfg); 652 652 } 653 653 654 654 getFeedGenerators<AV extends AuthVerifier>( ··· 658 658 AppRockskyFeedGetFeedGenerators.HandlerReqCtx<ExtractAuth<AV>> 659 659 >, 660 660 ) { 661 - const nsid = 'app.rocksky.feed.getFeedGenerators' // @ts-ignore 662 - return this._server.xrpc.method(nsid, cfg) 661 + const nsid = "app.rocksky.feed.getFeedGenerators"; // @ts-ignore 662 + return this._server.xrpc.method(nsid, cfg); 663 663 } 664 664 665 665 getFeedSkeleton<AV extends AuthVerifier>( ··· 669 669 AppRockskyFeedGetFeedSkeleton.HandlerReqCtx<ExtractAuth<AV>> 670 670 >, 671 671 ) { 672 - const nsid = 'app.rocksky.feed.getFeedSkeleton' // @ts-ignore 673 - return this._server.xrpc.method(nsid, cfg) 672 + const nsid = "app.rocksky.feed.getFeedSkeleton"; // @ts-ignore 673 + return this._server.xrpc.method(nsid, cfg); 674 674 } 675 675 676 676 getNowPlayings<AV extends AuthVerifier>( ··· 680 680 AppRockskyFeedGetNowPlayings.HandlerReqCtx<ExtractAuth<AV>> 681 681 >, 682 682 ) { 683 - const nsid = 'app.rocksky.feed.getNowPlayings' // @ts-ignore 684 - return this._server.xrpc.method(nsid, cfg) 683 + const nsid = "app.rocksky.feed.getNowPlayings"; // @ts-ignore 684 + return this._server.xrpc.method(nsid, cfg); 685 685 } 686 686 687 687 search<AV extends AuthVerifier>( ··· 691 691 AppRockskyFeedSearch.HandlerReqCtx<ExtractAuth<AV>> 692 692 >, 693 693 ) { 694 - const nsid = 'app.rocksky.feed.search' // @ts-ignore 695 - return this._server.xrpc.method(nsid, cfg) 694 + const nsid = "app.rocksky.feed.search"; // @ts-ignore 695 + return this._server.xrpc.method(nsid, cfg); 696 696 } 697 697 } 698 698 699 699 export class AppRockskyGoogledriveNS { 700 - _server: Server 700 + _server: Server; 701 701 702 702 constructor(server: Server) { 703 - this._server = server 703 + this._server = server; 704 704 } 705 705 706 706 downloadFile<AV extends AuthVerifier>( ··· 710 710 AppRockskyGoogledriveDownloadFile.HandlerReqCtx<ExtractAuth<AV>> 711 711 >, 712 712 ) { 713 - const nsid = 'app.rocksky.googledrive.downloadFile' // @ts-ignore 714 - return this._server.xrpc.method(nsid, cfg) 713 + const nsid = "app.rocksky.googledrive.downloadFile"; // @ts-ignore 714 + return this._server.xrpc.method(nsid, cfg); 715 715 } 716 716 717 717 getFile<AV extends AuthVerifier>( ··· 721 721 AppRockskyGoogledriveGetFile.HandlerReqCtx<ExtractAuth<AV>> 722 722 >, 723 723 ) { 724 - const nsid = 'app.rocksky.googledrive.getFile' // @ts-ignore 725 - return this._server.xrpc.method(nsid, cfg) 724 + const nsid = "app.rocksky.googledrive.getFile"; // @ts-ignore 725 + return this._server.xrpc.method(nsid, cfg); 726 726 } 727 727 728 728 getFiles<AV extends AuthVerifier>( ··· 732 732 AppRockskyGoogledriveGetFiles.HandlerReqCtx<ExtractAuth<AV>> 733 733 >, 734 734 ) { 735 - const nsid = 'app.rocksky.googledrive.getFiles' // @ts-ignore 736 - return this._server.xrpc.method(nsid, cfg) 735 + const nsid = "app.rocksky.googledrive.getFiles"; // @ts-ignore 736 + return this._server.xrpc.method(nsid, cfg); 737 737 } 738 738 } 739 739 740 740 export class AppRockskyGraphNS { 741 - _server: Server 741 + _server: Server; 742 742 743 743 constructor(server: Server) { 744 - this._server = server 744 + this._server = server; 745 745 } 746 746 747 747 followAccount<AV extends AuthVerifier>( ··· 751 751 AppRockskyGraphFollowAccount.HandlerReqCtx<ExtractAuth<AV>> 752 752 >, 753 753 ) { 754 - const nsid = 'app.rocksky.graph.followAccount' // @ts-ignore 755 - return this._server.xrpc.method(nsid, cfg) 754 + const nsid = "app.rocksky.graph.followAccount"; // @ts-ignore 755 + return this._server.xrpc.method(nsid, cfg); 756 756 } 757 757 758 758 getFollowers<AV extends AuthVerifier>( ··· 762 762 AppRockskyGraphGetFollowers.HandlerReqCtx<ExtractAuth<AV>> 763 763 >, 764 764 ) { 765 - const nsid = 'app.rocksky.graph.getFollowers' // @ts-ignore 766 - return this._server.xrpc.method(nsid, cfg) 765 + const nsid = "app.rocksky.graph.getFollowers"; // @ts-ignore 766 + return this._server.xrpc.method(nsid, cfg); 767 767 } 768 768 769 769 getFollows<AV extends AuthVerifier>( ··· 773 773 AppRockskyGraphGetFollows.HandlerReqCtx<ExtractAuth<AV>> 774 774 >, 775 775 ) { 776 - const nsid = 'app.rocksky.graph.getFollows' // @ts-ignore 777 - return this._server.xrpc.method(nsid, cfg) 776 + const nsid = "app.rocksky.graph.getFollows"; // @ts-ignore 777 + return this._server.xrpc.method(nsid, cfg); 778 778 } 779 779 780 780 getKnownFollowers<AV extends AuthVerifier>( ··· 784 784 AppRockskyGraphGetKnownFollowers.HandlerReqCtx<ExtractAuth<AV>> 785 785 >, 786 786 ) { 787 - const nsid = 'app.rocksky.graph.getKnownFollowers' // @ts-ignore 788 - return this._server.xrpc.method(nsid, cfg) 787 + const nsid = "app.rocksky.graph.getKnownFollowers"; // @ts-ignore 788 + return this._server.xrpc.method(nsid, cfg); 789 789 } 790 790 791 791 unfollowAccount<AV extends AuthVerifier>( ··· 795 795 AppRockskyGraphUnfollowAccount.HandlerReqCtx<ExtractAuth<AV>> 796 796 >, 797 797 ) { 798 - const nsid = 'app.rocksky.graph.unfollowAccount' // @ts-ignore 799 - return this._server.xrpc.method(nsid, cfg) 798 + const nsid = "app.rocksky.graph.unfollowAccount"; // @ts-ignore 799 + return this._server.xrpc.method(nsid, cfg); 800 800 } 801 801 } 802 802 803 803 export class AppRockskyLikeNS { 804 - _server: Server 804 + _server: Server; 805 805 806 806 constructor(server: Server) { 807 - this._server = server 807 + this._server = server; 808 808 } 809 809 810 810 dislikeShout<AV extends AuthVerifier>( ··· 814 814 AppRockskyLikeDislikeShout.HandlerReqCtx<ExtractAuth<AV>> 815 815 >, 816 816 ) { 817 - const nsid = 'app.rocksky.like.dislikeShout' // @ts-ignore 818 - return this._server.xrpc.method(nsid, cfg) 817 + const nsid = "app.rocksky.like.dislikeShout"; // @ts-ignore 818 + return this._server.xrpc.method(nsid, cfg); 819 819 } 820 820 821 821 dislikeSong<AV extends AuthVerifier>( ··· 825 825 AppRockskyLikeDislikeSong.HandlerReqCtx<ExtractAuth<AV>> 826 826 >, 827 827 ) { 828 - const nsid = 'app.rocksky.like.dislikeSong' // @ts-ignore 829 - return this._server.xrpc.method(nsid, cfg) 828 + const nsid = "app.rocksky.like.dislikeSong"; // @ts-ignore 829 + return this._server.xrpc.method(nsid, cfg); 830 830 } 831 831 832 832 likeShout<AV extends AuthVerifier>( ··· 836 836 AppRockskyLikeLikeShout.HandlerReqCtx<ExtractAuth<AV>> 837 837 >, 838 838 ) { 839 - const nsid = 'app.rocksky.like.likeShout' // @ts-ignore 840 - return this._server.xrpc.method(nsid, cfg) 839 + const nsid = "app.rocksky.like.likeShout"; // @ts-ignore 840 + return this._server.xrpc.method(nsid, cfg); 841 841 } 842 842 843 843 likeSong<AV extends AuthVerifier>( ··· 847 847 AppRockskyLikeLikeSong.HandlerReqCtx<ExtractAuth<AV>> 848 848 >, 849 849 ) { 850 - const nsid = 'app.rocksky.like.likeSong' // @ts-ignore 851 - return this._server.xrpc.method(nsid, cfg) 850 + const nsid = "app.rocksky.like.likeSong"; // @ts-ignore 851 + return this._server.xrpc.method(nsid, cfg); 852 852 } 853 853 } 854 854 855 855 export class AppRockskyPlayerNS { 856 - _server: Server 856 + _server: Server; 857 857 858 858 constructor(server: Server) { 859 - this._server = server 859 + this._server = server; 860 860 } 861 861 862 862 addDirectoryToQueue<AV extends AuthVerifier>( ··· 866 866 AppRockskyPlayerAddDirectoryToQueue.HandlerReqCtx<ExtractAuth<AV>> 867 867 >, 868 868 ) { 869 - const nsid = 'app.rocksky.player.addDirectoryToQueue' // @ts-ignore 870 - return this._server.xrpc.method(nsid, cfg) 869 + const nsid = "app.rocksky.player.addDirectoryToQueue"; // @ts-ignore 870 + return this._server.xrpc.method(nsid, cfg); 871 871 } 872 872 873 873 addItemsToQueue<AV extends AuthVerifier>( ··· 877 877 AppRockskyPlayerAddItemsToQueue.HandlerReqCtx<ExtractAuth<AV>> 878 878 >, 879 879 ) { 880 - const nsid = 'app.rocksky.player.addItemsToQueue' // @ts-ignore 881 - return this._server.xrpc.method(nsid, cfg) 880 + const nsid = "app.rocksky.player.addItemsToQueue"; // @ts-ignore 881 + return this._server.xrpc.method(nsid, cfg); 882 882 } 883 883 884 884 getCurrentlyPlaying<AV extends AuthVerifier>( ··· 888 888 AppRockskyPlayerGetCurrentlyPlaying.HandlerReqCtx<ExtractAuth<AV>> 889 889 >, 890 890 ) { 891 - const nsid = 'app.rocksky.player.getCurrentlyPlaying' // @ts-ignore 892 - return this._server.xrpc.method(nsid, cfg) 891 + const nsid = "app.rocksky.player.getCurrentlyPlaying"; // @ts-ignore 892 + return this._server.xrpc.method(nsid, cfg); 893 893 } 894 894 895 895 getPlaybackQueue<AV extends AuthVerifier>( ··· 899 899 AppRockskyPlayerGetPlaybackQueue.HandlerReqCtx<ExtractAuth<AV>> 900 900 >, 901 901 ) { 902 - const nsid = 'app.rocksky.player.getPlaybackQueue' // @ts-ignore 903 - return this._server.xrpc.method(nsid, cfg) 902 + const nsid = "app.rocksky.player.getPlaybackQueue"; // @ts-ignore 903 + return this._server.xrpc.method(nsid, cfg); 904 904 } 905 905 906 906 next<AV extends AuthVerifier>( ··· 910 910 AppRockskyPlayerNext.HandlerReqCtx<ExtractAuth<AV>> 911 911 >, 912 912 ) { 913 - const nsid = 'app.rocksky.player.next' // @ts-ignore 914 - return this._server.xrpc.method(nsid, cfg) 913 + const nsid = "app.rocksky.player.next"; // @ts-ignore 914 + return this._server.xrpc.method(nsid, cfg); 915 915 } 916 916 917 917 pause<AV extends AuthVerifier>( ··· 921 921 AppRockskyPlayerPause.HandlerReqCtx<ExtractAuth<AV>> 922 922 >, 923 923 ) { 924 - const nsid = 'app.rocksky.player.pause' // @ts-ignore 925 - return this._server.xrpc.method(nsid, cfg) 924 + const nsid = "app.rocksky.player.pause"; // @ts-ignore 925 + return this._server.xrpc.method(nsid, cfg); 926 926 } 927 927 928 928 play<AV extends AuthVerifier>( ··· 932 932 AppRockskyPlayerPlay.HandlerReqCtx<ExtractAuth<AV>> 933 933 >, 934 934 ) { 935 - const nsid = 'app.rocksky.player.play' // @ts-ignore 936 - return this._server.xrpc.method(nsid, cfg) 935 + const nsid = "app.rocksky.player.play"; // @ts-ignore 936 + return this._server.xrpc.method(nsid, cfg); 937 937 } 938 938 939 939 playDirectory<AV extends AuthVerifier>( ··· 943 943 AppRockskyPlayerPlayDirectory.HandlerReqCtx<ExtractAuth<AV>> 944 944 >, 945 945 ) { 946 - const nsid = 'app.rocksky.player.playDirectory' // @ts-ignore 947 - return this._server.xrpc.method(nsid, cfg) 946 + const nsid = "app.rocksky.player.playDirectory"; // @ts-ignore 947 + return this._server.xrpc.method(nsid, cfg); 948 948 } 949 949 950 950 playFile<AV extends AuthVerifier>( ··· 954 954 AppRockskyPlayerPlayFile.HandlerReqCtx<ExtractAuth<AV>> 955 955 >, 956 956 ) { 957 - const nsid = 'app.rocksky.player.playFile' // @ts-ignore 958 - return this._server.xrpc.method(nsid, cfg) 957 + const nsid = "app.rocksky.player.playFile"; // @ts-ignore 958 + return this._server.xrpc.method(nsid, cfg); 959 959 } 960 960 961 961 previous<AV extends AuthVerifier>( ··· 965 965 AppRockskyPlayerPrevious.HandlerReqCtx<ExtractAuth<AV>> 966 966 >, 967 967 ) { 968 - const nsid = 'app.rocksky.player.previous' // @ts-ignore 969 - return this._server.xrpc.method(nsid, cfg) 968 + const nsid = "app.rocksky.player.previous"; // @ts-ignore 969 + return this._server.xrpc.method(nsid, cfg); 970 970 } 971 971 972 972 seek<AV extends AuthVerifier>( ··· 976 976 AppRockskyPlayerSeek.HandlerReqCtx<ExtractAuth<AV>> 977 977 >, 978 978 ) { 979 - const nsid = 'app.rocksky.player.seek' // @ts-ignore 980 - return this._server.xrpc.method(nsid, cfg) 979 + const nsid = "app.rocksky.player.seek"; // @ts-ignore 980 + return this._server.xrpc.method(nsid, cfg); 981 981 } 982 982 } 983 983 984 984 export class AppRockskyPlaylistNS { 985 - _server: Server 985 + _server: Server; 986 986 987 987 constructor(server: Server) { 988 - this._server = server 988 + this._server = server; 989 989 } 990 990 991 991 createPlaylist<AV extends AuthVerifier>( ··· 995 995 AppRockskyPlaylistCreatePlaylist.HandlerReqCtx<ExtractAuth<AV>> 996 996 >, 997 997 ) { 998 - const nsid = 'app.rocksky.playlist.createPlaylist' // @ts-ignore 999 - return this._server.xrpc.method(nsid, cfg) 998 + const nsid = "app.rocksky.playlist.createPlaylist"; // @ts-ignore 999 + return this._server.xrpc.method(nsid, cfg); 1000 1000 } 1001 1001 1002 1002 getPlaylist<AV extends AuthVerifier>( ··· 1006 1006 AppRockskyPlaylistGetPlaylist.HandlerReqCtx<ExtractAuth<AV>> 1007 1007 >, 1008 1008 ) { 1009 - const nsid = 'app.rocksky.playlist.getPlaylist' // @ts-ignore 1010 - return this._server.xrpc.method(nsid, cfg) 1009 + const nsid = "app.rocksky.playlist.getPlaylist"; // @ts-ignore 1010 + return this._server.xrpc.method(nsid, cfg); 1011 1011 } 1012 1012 1013 1013 getPlaylists<AV extends AuthVerifier>( ··· 1017 1017 AppRockskyPlaylistGetPlaylists.HandlerReqCtx<ExtractAuth<AV>> 1018 1018 >, 1019 1019 ) { 1020 - const nsid = 'app.rocksky.playlist.getPlaylists' // @ts-ignore 1021 - return this._server.xrpc.method(nsid, cfg) 1020 + const nsid = "app.rocksky.playlist.getPlaylists"; // @ts-ignore 1021 + return this._server.xrpc.method(nsid, cfg); 1022 1022 } 1023 1023 1024 1024 insertDirectory<AV extends AuthVerifier>( ··· 1028 1028 AppRockskyPlaylistInsertDirectory.HandlerReqCtx<ExtractAuth<AV>> 1029 1029 >, 1030 1030 ) { 1031 - const nsid = 'app.rocksky.playlist.insertDirectory' // @ts-ignore 1032 - return this._server.xrpc.method(nsid, cfg) 1031 + const nsid = "app.rocksky.playlist.insertDirectory"; // @ts-ignore 1032 + return this._server.xrpc.method(nsid, cfg); 1033 1033 } 1034 1034 1035 1035 insertFiles<AV extends AuthVerifier>( ··· 1039 1039 AppRockskyPlaylistInsertFiles.HandlerReqCtx<ExtractAuth<AV>> 1040 1040 >, 1041 1041 ) { 1042 - const nsid = 'app.rocksky.playlist.insertFiles' // @ts-ignore 1043 - return this._server.xrpc.method(nsid, cfg) 1042 + const nsid = "app.rocksky.playlist.insertFiles"; // @ts-ignore 1043 + return this._server.xrpc.method(nsid, cfg); 1044 1044 } 1045 1045 1046 1046 removePlaylist<AV extends AuthVerifier>( ··· 1050 1050 AppRockskyPlaylistRemovePlaylist.HandlerReqCtx<ExtractAuth<AV>> 1051 1051 >, 1052 1052 ) { 1053 - const nsid = 'app.rocksky.playlist.removePlaylist' // @ts-ignore 1054 - return this._server.xrpc.method(nsid, cfg) 1053 + const nsid = "app.rocksky.playlist.removePlaylist"; // @ts-ignore 1054 + return this._server.xrpc.method(nsid, cfg); 1055 1055 } 1056 1056 1057 1057 removeTrack<AV extends AuthVerifier>( ··· 1061 1061 AppRockskyPlaylistRemoveTrack.HandlerReqCtx<ExtractAuth<AV>> 1062 1062 >, 1063 1063 ) { 1064 - const nsid = 'app.rocksky.playlist.removeTrack' // @ts-ignore 1065 - return this._server.xrpc.method(nsid, cfg) 1064 + const nsid = "app.rocksky.playlist.removeTrack"; // @ts-ignore 1065 + return this._server.xrpc.method(nsid, cfg); 1066 1066 } 1067 1067 1068 1068 startPlaylist<AV extends AuthVerifier>( ··· 1072 1072 AppRockskyPlaylistStartPlaylist.HandlerReqCtx<ExtractAuth<AV>> 1073 1073 >, 1074 1074 ) { 1075 - const nsid = 'app.rocksky.playlist.startPlaylist' // @ts-ignore 1076 - return this._server.xrpc.method(nsid, cfg) 1075 + const nsid = "app.rocksky.playlist.startPlaylist"; // @ts-ignore 1076 + return this._server.xrpc.method(nsid, cfg); 1077 1077 } 1078 1078 } 1079 1079 1080 1080 export class AppRockskyScrobbleNS { 1081 - _server: Server 1081 + _server: Server; 1082 1082 1083 1083 constructor(server: Server) { 1084 - this._server = server 1084 + this._server = server; 1085 1085 } 1086 1086 1087 1087 createScrobble<AV extends AuthVerifier>( ··· 1091 1091 AppRockskyScrobbleCreateScrobble.HandlerReqCtx<ExtractAuth<AV>> 1092 1092 >, 1093 1093 ) { 1094 - const nsid = 'app.rocksky.scrobble.createScrobble' // @ts-ignore 1095 - return this._server.xrpc.method(nsid, cfg) 1094 + const nsid = "app.rocksky.scrobble.createScrobble"; // @ts-ignore 1095 + return this._server.xrpc.method(nsid, cfg); 1096 1096 } 1097 1097 1098 1098 getScrobble<AV extends AuthVerifier>( ··· 1102 1102 AppRockskyScrobbleGetScrobble.HandlerReqCtx<ExtractAuth<AV>> 1103 1103 >, 1104 1104 ) { 1105 - const nsid = 'app.rocksky.scrobble.getScrobble' // @ts-ignore 1106 - return this._server.xrpc.method(nsid, cfg) 1105 + const nsid = "app.rocksky.scrobble.getScrobble"; // @ts-ignore 1106 + return this._server.xrpc.method(nsid, cfg); 1107 1107 } 1108 1108 1109 1109 getScrobbles<AV extends AuthVerifier>( ··· 1113 1113 AppRockskyScrobbleGetScrobbles.HandlerReqCtx<ExtractAuth<AV>> 1114 1114 >, 1115 1115 ) { 1116 - const nsid = 'app.rocksky.scrobble.getScrobbles' // @ts-ignore 1117 - return this._server.xrpc.method(nsid, cfg) 1116 + const nsid = "app.rocksky.scrobble.getScrobbles"; // @ts-ignore 1117 + return this._server.xrpc.method(nsid, cfg); 1118 1118 } 1119 1119 } 1120 1120 1121 1121 export class AppRockskyShoutNS { 1122 - _server: Server 1122 + _server: Server; 1123 1123 1124 1124 constructor(server: Server) { 1125 - this._server = server 1125 + this._server = server; 1126 1126 } 1127 1127 1128 1128 createShout<AV extends AuthVerifier>( ··· 1132 1132 AppRockskyShoutCreateShout.HandlerReqCtx<ExtractAuth<AV>> 1133 1133 >, 1134 1134 ) { 1135 - const nsid = 'app.rocksky.shout.createShout' // @ts-ignore 1136 - return this._server.xrpc.method(nsid, cfg) 1135 + const nsid = "app.rocksky.shout.createShout"; // @ts-ignore 1136 + return this._server.xrpc.method(nsid, cfg); 1137 1137 } 1138 1138 1139 1139 getAlbumShouts<AV extends AuthVerifier>( ··· 1143 1143 AppRockskyShoutGetAlbumShouts.HandlerReqCtx<ExtractAuth<AV>> 1144 1144 >, 1145 1145 ) { 1146 - const nsid = 'app.rocksky.shout.getAlbumShouts' // @ts-ignore 1147 - return this._server.xrpc.method(nsid, cfg) 1146 + const nsid = "app.rocksky.shout.getAlbumShouts"; // @ts-ignore 1147 + return this._server.xrpc.method(nsid, cfg); 1148 1148 } 1149 1149 1150 1150 getArtistShouts<AV extends AuthVerifier>( ··· 1154 1154 AppRockskyShoutGetArtistShouts.HandlerReqCtx<ExtractAuth<AV>> 1155 1155 >, 1156 1156 ) { 1157 - const nsid = 'app.rocksky.shout.getArtistShouts' // @ts-ignore 1158 - return this._server.xrpc.method(nsid, cfg) 1157 + const nsid = "app.rocksky.shout.getArtistShouts"; // @ts-ignore 1158 + return this._server.xrpc.method(nsid, cfg); 1159 1159 } 1160 1160 1161 1161 getProfileShouts<AV extends AuthVerifier>( ··· 1165 1165 AppRockskyShoutGetProfileShouts.HandlerReqCtx<ExtractAuth<AV>> 1166 1166 >, 1167 1167 ) { 1168 - const nsid = 'app.rocksky.shout.getProfileShouts' // @ts-ignore 1169 - return this._server.xrpc.method(nsid, cfg) 1168 + const nsid = "app.rocksky.shout.getProfileShouts"; // @ts-ignore 1169 + return this._server.xrpc.method(nsid, cfg); 1170 1170 } 1171 1171 1172 1172 getShoutReplies<AV extends AuthVerifier>( ··· 1176 1176 AppRockskyShoutGetShoutReplies.HandlerReqCtx<ExtractAuth<AV>> 1177 1177 >, 1178 1178 ) { 1179 - const nsid = 'app.rocksky.shout.getShoutReplies' // @ts-ignore 1180 - return this._server.xrpc.method(nsid, cfg) 1179 + const nsid = "app.rocksky.shout.getShoutReplies"; // @ts-ignore 1180 + return this._server.xrpc.method(nsid, cfg); 1181 1181 } 1182 1182 1183 1183 getTrackShouts<AV extends AuthVerifier>( ··· 1187 1187 AppRockskyShoutGetTrackShouts.HandlerReqCtx<ExtractAuth<AV>> 1188 1188 >, 1189 1189 ) { 1190 - const nsid = 'app.rocksky.shout.getTrackShouts' // @ts-ignore 1191 - return this._server.xrpc.method(nsid, cfg) 1190 + const nsid = "app.rocksky.shout.getTrackShouts"; // @ts-ignore 1191 + return this._server.xrpc.method(nsid, cfg); 1192 1192 } 1193 1193 1194 1194 removeShout<AV extends AuthVerifier>( ··· 1198 1198 AppRockskyShoutRemoveShout.HandlerReqCtx<ExtractAuth<AV>> 1199 1199 >, 1200 1200 ) { 1201 - const nsid = 'app.rocksky.shout.removeShout' // @ts-ignore 1202 - return this._server.xrpc.method(nsid, cfg) 1201 + const nsid = "app.rocksky.shout.removeShout"; // @ts-ignore 1202 + return this._server.xrpc.method(nsid, cfg); 1203 1203 } 1204 1204 1205 1205 replyShout<AV extends AuthVerifier>( ··· 1209 1209 AppRockskyShoutReplyShout.HandlerReqCtx<ExtractAuth<AV>> 1210 1210 >, 1211 1211 ) { 1212 - const nsid = 'app.rocksky.shout.replyShout' // @ts-ignore 1213 - return this._server.xrpc.method(nsid, cfg) 1212 + const nsid = "app.rocksky.shout.replyShout"; // @ts-ignore 1213 + return this._server.xrpc.method(nsid, cfg); 1214 1214 } 1215 1215 1216 1216 reportShout<AV extends AuthVerifier>( ··· 1220 1220 AppRockskyShoutReportShout.HandlerReqCtx<ExtractAuth<AV>> 1221 1221 >, 1222 1222 ) { 1223 - const nsid = 'app.rocksky.shout.reportShout' // @ts-ignore 1224 - return this._server.xrpc.method(nsid, cfg) 1223 + const nsid = "app.rocksky.shout.reportShout"; // @ts-ignore 1224 + return this._server.xrpc.method(nsid, cfg); 1225 1225 } 1226 1226 } 1227 1227 1228 1228 export class AppRockskySongNS { 1229 - _server: Server 1229 + _server: Server; 1230 1230 1231 1231 constructor(server: Server) { 1232 - this._server = server 1232 + this._server = server; 1233 1233 } 1234 1234 1235 1235 createSong<AV extends AuthVerifier>( ··· 1239 1239 AppRockskySongCreateSong.HandlerReqCtx<ExtractAuth<AV>> 1240 1240 >, 1241 1241 ) { 1242 - const nsid = 'app.rocksky.song.createSong' // @ts-ignore 1243 - return this._server.xrpc.method(nsid, cfg) 1242 + const nsid = "app.rocksky.song.createSong"; // @ts-ignore 1243 + return this._server.xrpc.method(nsid, cfg); 1244 1244 } 1245 1245 1246 1246 getSong<AV extends AuthVerifier>( ··· 1250 1250 AppRockskySongGetSong.HandlerReqCtx<ExtractAuth<AV>> 1251 1251 >, 1252 1252 ) { 1253 - const nsid = 'app.rocksky.song.getSong' // @ts-ignore 1254 - return this._server.xrpc.method(nsid, cfg) 1253 + const nsid = "app.rocksky.song.getSong"; // @ts-ignore 1254 + return this._server.xrpc.method(nsid, cfg); 1255 1255 } 1256 1256 1257 1257 getSongs<AV extends AuthVerifier>( ··· 1261 1261 AppRockskySongGetSongs.HandlerReqCtx<ExtractAuth<AV>> 1262 1262 >, 1263 1263 ) { 1264 - const nsid = 'app.rocksky.song.getSongs' // @ts-ignore 1265 - return this._server.xrpc.method(nsid, cfg) 1264 + const nsid = "app.rocksky.song.getSongs"; // @ts-ignore 1265 + return this._server.xrpc.method(nsid, cfg); 1266 1266 } 1267 1267 1268 1268 matchSong<AV extends AuthVerifier>( ··· 1272 1272 AppRockskySongMatchSong.HandlerReqCtx<ExtractAuth<AV>> 1273 1273 >, 1274 1274 ) { 1275 - const nsid = 'app.rocksky.song.matchSong' // @ts-ignore 1276 - return this._server.xrpc.method(nsid, cfg) 1275 + const nsid = "app.rocksky.song.matchSong"; // @ts-ignore 1276 + return this._server.xrpc.method(nsid, cfg); 1277 1277 } 1278 1278 } 1279 1279 1280 1280 export class AppRockskySpotifyNS { 1281 - _server: Server 1281 + _server: Server; 1282 1282 1283 1283 constructor(server: Server) { 1284 - this._server = server 1284 + this._server = server; 1285 1285 } 1286 1286 1287 1287 getCurrentlyPlaying<AV extends AuthVerifier>( ··· 1291 1291 AppRockskySpotifyGetCurrentlyPlaying.HandlerReqCtx<ExtractAuth<AV>> 1292 1292 >, 1293 1293 ) { 1294 - const nsid = 'app.rocksky.spotify.getCurrentlyPlaying' // @ts-ignore 1295 - return this._server.xrpc.method(nsid, cfg) 1294 + const nsid = "app.rocksky.spotify.getCurrentlyPlaying"; // @ts-ignore 1295 + return this._server.xrpc.method(nsid, cfg); 1296 1296 } 1297 1297 1298 1298 next<AV extends AuthVerifier>( ··· 1302 1302 AppRockskySpotifyNext.HandlerReqCtx<ExtractAuth<AV>> 1303 1303 >, 1304 1304 ) { 1305 - const nsid = 'app.rocksky.spotify.next' // @ts-ignore 1306 - return this._server.xrpc.method(nsid, cfg) 1305 + const nsid = "app.rocksky.spotify.next"; // @ts-ignore 1306 + return this._server.xrpc.method(nsid, cfg); 1307 1307 } 1308 1308 1309 1309 pause<AV extends AuthVerifier>( ··· 1313 1313 AppRockskySpotifyPause.HandlerReqCtx<ExtractAuth<AV>> 1314 1314 >, 1315 1315 ) { 1316 - const nsid = 'app.rocksky.spotify.pause' // @ts-ignore 1317 - return this._server.xrpc.method(nsid, cfg) 1316 + const nsid = "app.rocksky.spotify.pause"; // @ts-ignore 1317 + return this._server.xrpc.method(nsid, cfg); 1318 1318 } 1319 1319 1320 1320 play<AV extends AuthVerifier>( ··· 1324 1324 AppRockskySpotifyPlay.HandlerReqCtx<ExtractAuth<AV>> 1325 1325 >, 1326 1326 ) { 1327 - const nsid = 'app.rocksky.spotify.play' // @ts-ignore 1328 - return this._server.xrpc.method(nsid, cfg) 1327 + const nsid = "app.rocksky.spotify.play"; // @ts-ignore 1328 + return this._server.xrpc.method(nsid, cfg); 1329 1329 } 1330 1330 1331 1331 previous<AV extends AuthVerifier>( ··· 1335 1335 AppRockskySpotifyPrevious.HandlerReqCtx<ExtractAuth<AV>> 1336 1336 >, 1337 1337 ) { 1338 - const nsid = 'app.rocksky.spotify.previous' // @ts-ignore 1339 - return this._server.xrpc.method(nsid, cfg) 1338 + const nsid = "app.rocksky.spotify.previous"; // @ts-ignore 1339 + return this._server.xrpc.method(nsid, cfg); 1340 1340 } 1341 1341 1342 1342 seek<AV extends AuthVerifier>( ··· 1346 1346 AppRockskySpotifySeek.HandlerReqCtx<ExtractAuth<AV>> 1347 1347 >, 1348 1348 ) { 1349 - const nsid = 'app.rocksky.spotify.seek' // @ts-ignore 1350 - return this._server.xrpc.method(nsid, cfg) 1349 + const nsid = "app.rocksky.spotify.seek"; // @ts-ignore 1350 + return this._server.xrpc.method(nsid, cfg); 1351 1351 } 1352 1352 } 1353 1353 1354 1354 export class AppRockskyStatsNS { 1355 - _server: Server 1355 + _server: Server; 1356 1356 1357 1357 constructor(server: Server) { 1358 - this._server = server 1358 + this._server = server; 1359 1359 } 1360 1360 1361 1361 getStats<AV extends AuthVerifier>( ··· 1365 1365 AppRockskyStatsGetStats.HandlerReqCtx<ExtractAuth<AV>> 1366 1366 >, 1367 1367 ) { 1368 - const nsid = 'app.rocksky.stats.getStats' // @ts-ignore 1369 - return this._server.xrpc.method(nsid, cfg) 1368 + const nsid = "app.rocksky.stats.getStats"; // @ts-ignore 1369 + return this._server.xrpc.method(nsid, cfg); 1370 1370 } 1371 1371 } 1372 1372 1373 1373 export class AppBskyNS { 1374 - _server: Server 1375 - actor: AppBskyActorNS 1374 + _server: Server; 1375 + actor: AppBskyActorNS; 1376 1376 1377 1377 constructor(server: Server) { 1378 - this._server = server 1379 - this.actor = new AppBskyActorNS(server) 1378 + this._server = server; 1379 + this.actor = new AppBskyActorNS(server); 1380 1380 } 1381 1381 } 1382 1382 1383 1383 export class AppBskyActorNS { 1384 - _server: Server 1384 + _server: Server; 1385 1385 1386 1386 constructor(server: Server) { 1387 - this._server = server 1387 + this._server = server; 1388 1388 } 1389 1389 } 1390 1390 1391 1391 export class ComNS { 1392 - _server: Server 1393 - atproto: ComAtprotoNS 1392 + _server: Server; 1393 + atproto: ComAtprotoNS; 1394 1394 1395 1395 constructor(server: Server) { 1396 - this._server = server 1397 - this.atproto = new ComAtprotoNS(server) 1396 + this._server = server; 1397 + this.atproto = new ComAtprotoNS(server); 1398 1398 } 1399 1399 } 1400 1400 1401 1401 export class ComAtprotoNS { 1402 - _server: Server 1403 - repo: ComAtprotoRepoNS 1402 + _server: Server; 1403 + repo: ComAtprotoRepoNS; 1404 1404 1405 1405 constructor(server: Server) { 1406 - this._server = server 1407 - this.repo = new ComAtprotoRepoNS(server) 1406 + this._server = server; 1407 + this.repo = new ComAtprotoRepoNS(server); 1408 1408 } 1409 1409 } 1410 1410 1411 1411 export class ComAtprotoRepoNS { 1412 - _server: Server 1412 + _server: Server; 1413 1413 1414 1414 constructor(server: Server) { 1415 - this._server = server 1415 + this._server = server; 1416 1416 } 1417 1417 } 1418 1418 1419 1419 type SharedRateLimitOpts<T> = { 1420 - name: string 1421 - calcKey?: (ctx: T) => string | null 1422 - calcPoints?: (ctx: T) => number 1423 - } 1420 + name: string; 1421 + calcKey?: (ctx: T) => string | null; 1422 + calcPoints?: (ctx: T) => number; 1423 + }; 1424 1424 type RouteRateLimitOpts<T> = { 1425 - durationMs: number 1426 - points: number 1427 - calcKey?: (ctx: T) => string | null 1428 - calcPoints?: (ctx: T) => number 1429 - } 1430 - type HandlerOpts = { blobLimit?: number } 1431 - type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T> 1425 + durationMs: number; 1426 + points: number; 1427 + calcKey?: (ctx: T) => string | null; 1428 + calcPoints?: (ctx: T) => number; 1429 + }; 1430 + type HandlerOpts = { blobLimit?: number }; 1431 + type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T>; 1432 1432 type ConfigOf<Auth, Handler, ReqCtx> = 1433 1433 | Handler 1434 1434 | { 1435 - auth?: Auth 1436 - opts?: HandlerOpts 1437 - rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[] 1438 - handler: Handler 1439 - } 1435 + auth?: Auth; 1436 + opts?: HandlerOpts; 1437 + rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[]; 1438 + handler: Handler; 1439 + }; 1440 1440 type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract< 1441 1441 Awaited<ReturnType<AV>>, 1442 1442 { credentials: unknown } 1443 - > 1443 + >;
+2487 -2483
apps/api/src/lexicon/lexicons.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type LexiconDoc, Lexicons } from '@atproto/lexicon' 4 + import { type LexiconDoc, Lexicons } from "@atproto/lexicon"; 5 5 6 6 export const schemaDict = { 7 7 FmTealAlphaActorDefs: { 8 8 lexicon: 1, 9 - id: 'fm.teal.alpha.actor.defs', 9 + id: "fm.teal.alpha.actor.defs", 10 10 defs: { 11 11 profileView: { 12 - type: 'object', 12 + type: "object", 13 13 properties: { 14 14 did: { 15 - type: 'string', 16 - description: 'The decentralized identifier of the actor', 15 + type: "string", 16 + description: "The decentralized identifier of the actor", 17 17 }, 18 18 displayName: { 19 - type: 'string', 19 + type: "string", 20 20 }, 21 21 description: { 22 - type: 'string', 23 - description: 'Free-form profile description text.', 22 + type: "string", 23 + description: "Free-form profile description text.", 24 24 }, 25 25 descriptionFacets: { 26 - type: 'array', 26 + type: "array", 27 27 description: 28 - 'Annotations of text in the profile description (mentions, URLs, hashtags, etc). May be changed to another (backwards compatible) lexicon.', 28 + "Annotations of text in the profile description (mentions, URLs, hashtags, etc). May be changed to another (backwards compatible) lexicon.", 29 29 items: { 30 - type: 'ref', 31 - ref: 'lex:app.bsky.richtext.facet', 30 + type: "ref", 31 + ref: "lex:app.bsky.richtext.facet", 32 32 }, 33 33 }, 34 34 featuredItem: { 35 - type: 'ref', 35 + type: "ref", 36 36 description: 37 37 "The user's most recent item featured on their profile.", 38 - ref: 'lex:fm.teal.alpha.actor.profile#featuredItem', 38 + ref: "lex:fm.teal.alpha.actor.profile#featuredItem", 39 39 }, 40 40 avatar: { 41 - type: 'string', 42 - description: 'IPLD of the avatar', 41 + type: "string", 42 + description: "IPLD of the avatar", 43 43 }, 44 44 banner: { 45 - type: 'string', 46 - description: 'IPLD of the banner image', 45 + type: "string", 46 + description: "IPLD of the banner image", 47 47 }, 48 48 createdAt: { 49 - type: 'string', 50 - format: 'datetime', 49 + type: "string", 50 + format: "datetime", 51 51 }, 52 52 }, 53 53 }, 54 54 miniProfileView: { 55 - type: 'object', 55 + type: "object", 56 56 properties: { 57 57 did: { 58 - type: 'string', 59 - description: 'The decentralized identifier of the actor', 58 + type: "string", 59 + description: "The decentralized identifier of the actor", 60 60 }, 61 61 displayName: { 62 - type: 'string', 62 + type: "string", 63 63 }, 64 64 handle: { 65 - type: 'string', 65 + type: "string", 66 66 }, 67 67 avatar: { 68 - type: 'string', 69 - description: 'IPLD of the avatar', 68 + type: "string", 69 + description: "IPLD of the avatar", 70 70 }, 71 71 }, 72 72 }, ··· 74 74 }, 75 75 FmTealAlphaActorGetProfile: { 76 76 lexicon: 1, 77 - id: 'fm.teal.alpha.actor.getProfile', 77 + id: "fm.teal.alpha.actor.getProfile", 78 78 description: 79 - 'This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.', 79 + "This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.", 80 80 defs: { 81 81 main: { 82 - type: 'query', 82 + type: "query", 83 83 parameters: { 84 - type: 'params', 85 - required: ['actor'], 84 + type: "params", 85 + required: ["actor"], 86 86 properties: { 87 87 actor: { 88 - type: 'string', 89 - format: 'at-identifier', 88 + type: "string", 89 + format: "at-identifier", 90 90 description: "The author's DID", 91 91 }, 92 92 }, 93 93 }, 94 94 output: { 95 - encoding: 'application/json', 95 + encoding: "application/json", 96 96 schema: { 97 - type: 'object', 98 - required: ['actor'], 97 + type: "object", 98 + required: ["actor"], 99 99 properties: { 100 100 actor: { 101 - type: 'ref', 102 - ref: 'lex:fm.teal.alpha.actor.defs#profileView', 101 + type: "ref", 102 + ref: "lex:fm.teal.alpha.actor.defs#profileView", 103 103 }, 104 104 }, 105 105 }, ··· 109 109 }, 110 110 FmTealAlphaActorGetProfiles: { 111 111 lexicon: 1, 112 - id: 'fm.teal.alpha.actor.getProfiles', 112 + id: "fm.teal.alpha.actor.getProfiles", 113 113 description: 114 - 'This lexicon is in a not officially released state. It is subject to change. | Retrieves the associated profile.', 114 + "This lexicon is in a not officially released state. It is subject to change. | Retrieves the associated profile.", 115 115 defs: { 116 116 main: { 117 - type: 'query', 117 + type: "query", 118 118 parameters: { 119 - type: 'params', 120 - required: ['actors'], 119 + type: "params", 120 + required: ["actors"], 121 121 properties: { 122 122 actors: { 123 - type: 'array', 123 + type: "array", 124 124 items: { 125 - type: 'string', 126 - format: 'at-identifier', 125 + type: "string", 126 + format: "at-identifier", 127 127 }, 128 - description: 'Array of actor DIDs', 128 + description: "Array of actor DIDs", 129 129 }, 130 130 }, 131 131 }, 132 132 output: { 133 - encoding: 'application/json', 133 + encoding: "application/json", 134 134 schema: { 135 - type: 'object', 136 - required: ['actors'], 135 + type: "object", 136 + required: ["actors"], 137 137 properties: { 138 138 actors: { 139 - type: 'array', 139 + type: "array", 140 140 items: { 141 - type: 'ref', 142 - ref: 'lex:fm.teal.alpha.actor.defs#miniProfileView', 141 + type: "ref", 142 + ref: "lex:fm.teal.alpha.actor.defs#miniProfileView", 143 143 }, 144 144 }, 145 145 }, ··· 150 150 }, 151 151 FmTealAlphaActorProfile: { 152 152 lexicon: 1, 153 - id: 'fm.teal.alpha.actor.profile', 153 + id: "fm.teal.alpha.actor.profile", 154 154 defs: { 155 155 main: { 156 - type: 'record', 156 + type: "record", 157 157 description: 158 - 'This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm account profile.', 159 - key: 'literal:self', 158 + "This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm account profile.", 159 + key: "literal:self", 160 160 record: { 161 - type: 'object', 161 + type: "object", 162 162 properties: { 163 163 displayName: { 164 - type: 'string', 164 + type: "string", 165 165 maxGraphemes: 64, 166 166 maxLength: 640, 167 167 }, 168 168 description: { 169 - type: 'string', 170 - description: 'Free-form profile description text.', 169 + type: "string", 170 + description: "Free-form profile description text.", 171 171 maxGraphemes: 256, 172 172 maxLength: 2560, 173 173 }, 174 174 descriptionFacets: { 175 - type: 'array', 175 + type: "array", 176 176 description: 177 - 'Annotations of text in the profile description (mentions, URLs, hashtags, etc).', 177 + "Annotations of text in the profile description (mentions, URLs, hashtags, etc).", 178 178 items: { 179 - type: 'ref', 180 - ref: 'lex:app.bsky.richtext.facet', 179 + type: "ref", 180 + ref: "lex:app.bsky.richtext.facet", 181 181 }, 182 182 }, 183 183 featuredItem: { 184 - type: 'ref', 184 + type: "ref", 185 185 description: 186 186 "The user's most recent item featured on their profile.", 187 - ref: 'lex:fm.teal.alpha.actor.profile#featuredItem', 187 + ref: "lex:fm.teal.alpha.actor.profile#featuredItem", 188 188 }, 189 189 avatar: { 190 - type: 'blob', 190 + type: "blob", 191 191 description: 192 192 "Small image to be displayed next to posts from account. AKA, 'profile picture'", 193 - accept: ['image/png', 'image/jpeg'], 193 + accept: ["image/png", "image/jpeg"], 194 194 maxSize: 1000000, 195 195 }, 196 196 banner: { 197 - type: 'blob', 197 + type: "blob", 198 198 description: 199 - 'Larger horizontal image to display behind profile view.', 200 - accept: ['image/png', 'image/jpeg'], 199 + "Larger horizontal image to display behind profile view.", 200 + accept: ["image/png", "image/jpeg"], 201 201 maxSize: 1000000, 202 202 }, 203 203 createdAt: { 204 - type: 'string', 205 - format: 'datetime', 204 + type: "string", 205 + format: "datetime", 206 206 }, 207 207 }, 208 208 }, 209 209 }, 210 210 featuredItem: { 211 - type: 'object', 212 - required: ['mbid', 'type'], 211 + type: "object", 212 + required: ["mbid", "type"], 213 213 properties: { 214 214 mbid: { 215 - type: 'string', 216 - description: 'The Musicbrainz ID of the item', 215 + type: "string", 216 + description: "The Musicbrainz ID of the item", 217 217 }, 218 218 type: { 219 - type: 'string', 219 + type: "string", 220 220 description: 221 - 'The type of the item. Must be a valid Musicbrainz type, e.g. album, track, recording, etc.', 221 + "The type of the item. Must be a valid Musicbrainz type, e.g. album, track, recording, etc.", 222 222 }, 223 223 }, 224 224 }, ··· 226 226 }, 227 227 FmTealAlphaActorSearchActors: { 228 228 lexicon: 1, 229 - id: 'fm.teal.alpha.actor.searchActors', 229 + id: "fm.teal.alpha.actor.searchActors", 230 230 description: 231 - 'This lexicon is in a not officially released state. It is subject to change. | Searches for actors based on profile contents.', 231 + "This lexicon is in a not officially released state. It is subject to change. | Searches for actors based on profile contents.", 232 232 defs: { 233 233 main: { 234 - type: 'query', 234 + type: "query", 235 235 parameters: { 236 - type: 'params', 237 - required: ['q'], 236 + type: "params", 237 + required: ["q"], 238 238 properties: { 239 239 q: { 240 - type: 'string', 241 - description: 'The search query', 240 + type: "string", 241 + description: "The search query", 242 242 maxGraphemes: 128, 243 243 maxLength: 640, 244 244 }, 245 245 limit: { 246 - type: 'integer', 247 - description: 'The maximum number of actors to return', 246 + type: "integer", 247 + description: "The maximum number of actors to return", 248 248 minimum: 1, 249 249 maximum: 25, 250 250 }, 251 251 cursor: { 252 - type: 'string', 253 - description: 'Cursor for pagination', 252 + type: "string", 253 + description: "Cursor for pagination", 254 254 }, 255 255 }, 256 256 }, 257 257 output: { 258 - encoding: 'application/json', 258 + encoding: "application/json", 259 259 schema: { 260 - type: 'object', 261 - required: ['actors'], 260 + type: "object", 261 + required: ["actors"], 262 262 properties: { 263 263 actors: { 264 - type: 'array', 264 + type: "array", 265 265 items: { 266 - type: 'ref', 267 - ref: 'lex:fm.teal.alpha.actor.defs#miniProfileView', 266 + type: "ref", 267 + ref: "lex:fm.teal.alpha.actor.defs#miniProfileView", 268 268 }, 269 269 }, 270 270 cursor: { 271 - type: 'string', 272 - description: 'Cursor for pagination', 271 + type: "string", 272 + description: "Cursor for pagination", 273 273 }, 274 274 }, 275 275 }, ··· 279 279 }, 280 280 FmTealAlphaActorStatus: { 281 281 lexicon: 1, 282 - id: 'fm.teal.alpha.actor.status', 282 + id: "fm.teal.alpha.actor.status", 283 283 defs: { 284 284 main: { 285 - type: 'record', 285 + type: "record", 286 286 description: 287 - 'This lexicon is in a not officially released state. It is subject to change. | A declaration of the status of the actor. Only one can be shown at a time. If there are multiple, the latest record should be picked and earlier records should be deleted or tombstoned.', 288 - key: 'literal:self', 287 + "This lexicon is in a not officially released state. It is subject to change. | A declaration of the status of the actor. Only one can be shown at a time. If there are multiple, the latest record should be picked and earlier records should be deleted or tombstoned.", 288 + key: "literal:self", 289 289 record: { 290 - type: 'object', 291 - required: ['time', 'item'], 290 + type: "object", 291 + required: ["time", "item"], 292 292 properties: { 293 293 time: { 294 - type: 'string', 295 - format: 'datetime', 296 - description: 'The unix timestamp of when the item was recorded', 294 + type: "string", 295 + format: "datetime", 296 + description: "The unix timestamp of when the item was recorded", 297 297 }, 298 298 expiry: { 299 - type: 'string', 300 - format: 'datetime', 299 + type: "string", 300 + format: "datetime", 301 301 description: 302 - 'The unix timestamp of the expiry time of the item. If unavailable, default to 10 minutes past the start time.', 302 + "The unix timestamp of the expiry time of the item. If unavailable, default to 10 minutes past the start time.", 303 303 }, 304 304 item: { 305 - type: 'ref', 306 - ref: 'lex:fm.teal.alpha.feed.defs#playView', 305 + type: "ref", 306 + ref: "lex:fm.teal.alpha.feed.defs#playView", 307 307 }, 308 308 }, 309 309 }, ··· 312 312 }, 313 313 FmTealAlphaFeedDefs: { 314 314 lexicon: 1, 315 - id: 'fm.teal.alpha.feed.defs', 315 + id: "fm.teal.alpha.feed.defs", 316 316 description: 317 - 'This lexicon is in a not officially released state. It is subject to change. | Misc. items related to feeds.', 317 + "This lexicon is in a not officially released state. It is subject to change. | Misc. items related to feeds.", 318 318 defs: { 319 319 playView: { 320 - type: 'object', 321 - required: ['trackName', 'artists'], 320 + type: "object", 321 + required: ["trackName", "artists"], 322 322 properties: { 323 323 trackName: { 324 - type: 'string', 324 + type: "string", 325 325 minLength: 1, 326 326 maxLength: 256, 327 327 maxGraphemes: 2560, 328 - description: 'The name of the track', 328 + description: "The name of the track", 329 329 }, 330 330 trackMbId: { 331 - type: 'string', 332 - description: 'The Musicbrainz ID of the track', 331 + type: "string", 332 + description: "The Musicbrainz ID of the track", 333 333 }, 334 334 recordingMbId: { 335 - type: 'string', 336 - description: 'The Musicbrainz recording ID of the track', 335 + type: "string", 336 + description: "The Musicbrainz recording ID of the track", 337 337 }, 338 338 duration: { 339 - type: 'integer', 340 - description: 'The length of the track in seconds', 339 + type: "integer", 340 + description: "The length of the track in seconds", 341 341 }, 342 342 artists: { 343 - type: 'array', 343 + type: "array", 344 344 items: { 345 - type: 'ref', 346 - ref: 'lex:fm.teal.alpha.feed.defs#artist', 345 + type: "ref", 346 + ref: "lex:fm.teal.alpha.feed.defs#artist", 347 347 }, 348 - description: 'Array of artists in order of original appearance.', 348 + description: "Array of artists in order of original appearance.", 349 349 }, 350 350 releaseName: { 351 - type: 'string', 351 + type: "string", 352 352 maxLength: 256, 353 353 maxGraphemes: 2560, 354 - description: 'The name of the release/album', 354 + description: "The name of the release/album", 355 355 }, 356 356 releaseMbId: { 357 - type: 'string', 358 - description: 'The Musicbrainz release ID', 357 + type: "string", 358 + description: "The Musicbrainz release ID", 359 359 }, 360 360 isrc: { 361 - type: 'string', 362 - description: 'The ISRC code associated with the recording', 361 + type: "string", 362 + description: "The ISRC code associated with the recording", 363 363 }, 364 364 originUrl: { 365 - type: 'string', 366 - description: 'The URL associated with this track', 365 + type: "string", 366 + description: "The URL associated with this track", 367 367 }, 368 368 musicServiceBaseDomain: { 369 - type: 'string', 369 + type: "string", 370 370 description: 371 371 "The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided.", 372 372 }, 373 373 submissionClientAgent: { 374 - type: 'string', 374 + type: "string", 375 375 maxLength: 256, 376 376 maxGraphemes: 2560, 377 377 description: 378 378 "A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided.", 379 379 }, 380 380 playedTime: { 381 - type: 'string', 382 - format: 'datetime', 383 - description: 'The unix timestamp of when the track was played', 381 + type: "string", 382 + format: "datetime", 383 + description: "The unix timestamp of when the track was played", 384 384 }, 385 385 }, 386 386 }, 387 387 artist: { 388 - type: 'object', 389 - required: ['artistName'], 388 + type: "object", 389 + required: ["artistName"], 390 390 properties: { 391 391 artistName: { 392 - type: 'string', 392 + type: "string", 393 393 minLength: 1, 394 394 maxLength: 256, 395 395 maxGraphemes: 2560, 396 - description: 'The name of the artist', 396 + description: "The name of the artist", 397 397 }, 398 398 artistMbId: { 399 - type: 'string', 400 - description: 'The Musicbrainz ID of the artist', 399 + type: "string", 400 + description: "The Musicbrainz ID of the artist", 401 401 }, 402 402 }, 403 403 }, ··· 405 405 }, 406 406 FmTealAlphaFeedGetActorFeed: { 407 407 lexicon: 1, 408 - id: 'fm.teal.alpha.feed.getActorFeed', 408 + id: "fm.teal.alpha.feed.getActorFeed", 409 409 description: 410 410 "This lexicon is in a not officially released state. It is subject to change. | Retrieves multiple plays from the index or via an author's DID.", 411 411 defs: { 412 412 main: { 413 - type: 'query', 413 + type: "query", 414 414 parameters: { 415 - type: 'params', 416 - required: ['authorDID'], 415 + type: "params", 416 + required: ["authorDID"], 417 417 properties: { 418 418 authorDID: { 419 - type: 'string', 420 - format: 'at-identifier', 419 + type: "string", 420 + format: "at-identifier", 421 421 description: "The author's DID for the play", 422 422 }, 423 423 cursor: { 424 - type: 'string', 425 - description: 'The cursor to start the query from', 424 + type: "string", 425 + description: "The cursor to start the query from", 426 426 }, 427 427 limit: { 428 - type: 'integer', 428 + type: "integer", 429 429 description: 430 - 'The upper limit of tracks to get per request. Default is 20, max is 50.', 430 + "The upper limit of tracks to get per request. Default is 20, max is 50.", 431 431 }, 432 432 }, 433 433 }, 434 434 output: { 435 - encoding: 'application/json', 435 + encoding: "application/json", 436 436 schema: { 437 - type: 'object', 438 - required: ['plays'], 437 + type: "object", 438 + required: ["plays"], 439 439 properties: { 440 440 plays: { 441 - type: 'array', 441 + type: "array", 442 442 items: { 443 - type: 'ref', 444 - ref: 'lex:fm.teal.alpha.feed.defs#playView', 443 + type: "ref", 444 + ref: "lex:fm.teal.alpha.feed.defs#playView", 445 445 }, 446 446 }, 447 447 }, ··· 452 452 }, 453 453 FmTealAlphaFeedGetPlay: { 454 454 lexicon: 1, 455 - id: 'fm.teal.alpha.feed.getPlay', 455 + id: "fm.teal.alpha.feed.getPlay", 456 456 description: 457 - 'This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.', 457 + "This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.", 458 458 defs: { 459 459 main: { 460 - type: 'query', 460 + type: "query", 461 461 parameters: { 462 - type: 'params', 463 - required: ['authorDID', 'rkey'], 462 + type: "params", 463 + required: ["authorDID", "rkey"], 464 464 properties: { 465 465 authorDID: { 466 - type: 'string', 467 - format: 'at-identifier', 466 + type: "string", 467 + format: "at-identifier", 468 468 description: "The author's DID for the play", 469 469 }, 470 470 rkey: { 471 - type: 'string', 472 - description: 'The record key of the play', 471 + type: "string", 472 + description: "The record key of the play", 473 473 }, 474 474 }, 475 475 }, 476 476 output: { 477 - encoding: 'application/json', 477 + encoding: "application/json", 478 478 schema: { 479 - type: 'object', 480 - required: ['play'], 479 + type: "object", 480 + required: ["play"], 481 481 properties: { 482 482 play: { 483 - type: 'ref', 484 - ref: 'lex:fm.teal.alpha.feed.defs#playView', 483 + type: "ref", 484 + ref: "lex:fm.teal.alpha.feed.defs#playView", 485 485 }, 486 486 }, 487 487 }, ··· 491 491 }, 492 492 FmTealAlphaFeedPlay: { 493 493 lexicon: 1, 494 - id: 'fm.teal.alpha.feed.play', 494 + id: "fm.teal.alpha.feed.play", 495 495 description: 496 496 "This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm play. Plays are submitted as a result of a user listening to a track. Plays should be marked as tracked when a user has listened to the entire track if it's under 2 minutes long, or half of the track's duration up to 4 minutes, whichever is longest.", 497 497 defs: { 498 498 main: { 499 - type: 'record', 500 - key: 'tid', 499 + type: "record", 500 + key: "tid", 501 501 record: { 502 - type: 'object', 503 - required: ['trackName'], 502 + type: "object", 503 + required: ["trackName"], 504 504 properties: { 505 505 trackName: { 506 - type: 'string', 506 + type: "string", 507 507 minLength: 1, 508 508 maxLength: 256, 509 509 maxGraphemes: 2560, 510 - description: 'The name of the track', 510 + description: "The name of the track", 511 511 }, 512 512 trackMbId: { 513 - type: 'string', 514 - description: 'The Musicbrainz ID of the track', 513 + type: "string", 514 + description: "The Musicbrainz ID of the track", 515 515 }, 516 516 recordingMbId: { 517 - type: 'string', 518 - description: 'The Musicbrainz recording ID of the track', 517 + type: "string", 518 + description: "The Musicbrainz recording ID of the track", 519 519 }, 520 520 duration: { 521 - type: 'integer', 522 - description: 'The length of the track in seconds', 521 + type: "integer", 522 + description: "The length of the track in seconds", 523 523 }, 524 524 artistNames: { 525 - type: 'array', 525 + type: "array", 526 526 items: { 527 - type: 'string', 527 + type: "string", 528 528 minLength: 1, 529 529 maxLength: 256, 530 530 maxGraphemes: 2560, ··· 533 533 "Array of artist names in order of original appearance. Prefer using 'artists'.", 534 534 }, 535 535 artistMbIds: { 536 - type: 'array', 536 + type: "array", 537 537 items: { 538 - type: 'string', 538 + type: "string", 539 539 }, 540 540 description: 541 541 "Array of Musicbrainz artist IDs. Prefer using 'artists'.", 542 542 }, 543 543 artists: { 544 - type: 'array', 544 + type: "array", 545 545 items: { 546 - type: 'ref', 547 - ref: 'lex:fm.teal.alpha.feed.defs#artist', 546 + type: "ref", 547 + ref: "lex:fm.teal.alpha.feed.defs#artist", 548 548 }, 549 - description: 'Array of artists in order of original appearance.', 549 + description: "Array of artists in order of original appearance.", 550 550 }, 551 551 releaseName: { 552 - type: 'string', 552 + type: "string", 553 553 maxLength: 256, 554 554 maxGraphemes: 2560, 555 - description: 'The name of the release/album', 555 + description: "The name of the release/album", 556 556 }, 557 557 releaseMbId: { 558 - type: 'string', 559 - description: 'The Musicbrainz release ID', 558 + type: "string", 559 + description: "The Musicbrainz release ID", 560 560 }, 561 561 isrc: { 562 - type: 'string', 563 - description: 'The ISRC code associated with the recording', 562 + type: "string", 563 + description: "The ISRC code associated with the recording", 564 564 }, 565 565 originUrl: { 566 - type: 'string', 567 - description: 'The URL associated with this track', 566 + type: "string", 567 + description: "The URL associated with this track", 568 568 }, 569 569 musicServiceBaseDomain: { 570 - type: 'string', 570 + type: "string", 571 571 description: 572 572 "The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if unavailable or not provided.", 573 573 }, 574 574 submissionClientAgent: { 575 - type: 'string', 575 + type: "string", 576 576 maxLength: 256, 577 577 maxGraphemes: 2560, 578 578 description: 579 579 "A metadata string specifying the user agent where the format is `<app-identifier>/<version> (<kernel/OS-base>; <platform/OS-version>; <device-model>)`. If string is provided, only `app-identifier` and `version` are required. `app-identifier` is recommended to be in reverse dns format. Defaults to 'manual/unknown' if unavailable or not provided.", 580 580 }, 581 581 playedTime: { 582 - type: 'string', 583 - format: 'datetime', 584 - description: 'The unix timestamp of when the track was played', 582 + type: "string", 583 + format: "datetime", 584 + description: "The unix timestamp of when the track was played", 585 585 }, 586 586 }, 587 587 }, ··· 590 590 }, 591 591 AppRockskyActorDefs: { 592 592 lexicon: 1, 593 - id: 'app.rocksky.actor.defs', 593 + id: "app.rocksky.actor.defs", 594 594 defs: { 595 595 profileViewDetailed: { 596 - type: 'object', 596 + type: "object", 597 597 properties: { 598 598 id: { 599 - type: 'string', 600 - description: 'The unique identifier of the actor.', 599 + type: "string", 600 + description: "The unique identifier of the actor.", 601 601 }, 602 602 did: { 603 - type: 'string', 604 - description: 'The DID of the actor.', 603 + type: "string", 604 + description: "The DID of the actor.", 605 605 }, 606 606 handle: { 607 - type: 'string', 608 - description: 'The handle of the actor.', 607 + type: "string", 608 + description: "The handle of the actor.", 609 609 }, 610 610 displayName: { 611 - type: 'string', 612 - description: 'The display name of the actor.', 611 + type: "string", 612 + description: "The display name of the actor.", 613 613 }, 614 614 avatar: { 615 - type: 'string', 615 + type: "string", 616 616 description: "The URL of the actor's avatar image.", 617 - format: 'uri', 617 + format: "uri", 618 618 }, 619 619 createdAt: { 620 - type: 'string', 621 - description: 'The date and time when the actor was created.', 622 - format: 'datetime', 620 + type: "string", 621 + description: "The date and time when the actor was created.", 622 + format: "datetime", 623 623 }, 624 624 updatedAt: { 625 - type: 'string', 626 - description: 'The date and time when the actor was last updated.', 627 - format: 'datetime', 625 + type: "string", 626 + description: "The date and time when the actor was last updated.", 627 + format: "datetime", 628 628 }, 629 629 }, 630 630 }, 631 631 profileViewBasic: { 632 - type: 'object', 632 + type: "object", 633 633 properties: { 634 634 id: { 635 - type: 'string', 636 - description: 'The unique identifier of the actor.', 635 + type: "string", 636 + description: "The unique identifier of the actor.", 637 637 }, 638 638 did: { 639 - type: 'string', 640 - description: 'The DID of the actor.', 639 + type: "string", 640 + description: "The DID of the actor.", 641 641 }, 642 642 handle: { 643 - type: 'string', 644 - description: 'The handle of the actor.', 643 + type: "string", 644 + description: "The handle of the actor.", 645 645 }, 646 646 displayName: { 647 - type: 'string', 648 - description: 'The display name of the actor.', 647 + type: "string", 648 + description: "The display name of the actor.", 649 649 }, 650 650 avatar: { 651 - type: 'string', 651 + type: "string", 652 652 description: "The URL of the actor's avatar image.", 653 - format: 'uri', 653 + format: "uri", 654 654 }, 655 655 createdAt: { 656 - type: 'string', 657 - description: 'The date and time when the actor was created.', 658 - format: 'datetime', 656 + type: "string", 657 + description: "The date and time when the actor was created.", 658 + format: "datetime", 659 659 }, 660 660 updatedAt: { 661 - type: 'string', 662 - description: 'The date and time when the actor was last updated.', 663 - format: 'datetime', 661 + type: "string", 662 + description: "The date and time when the actor was last updated.", 663 + format: "datetime", 664 664 }, 665 665 }, 666 666 }, 667 667 neighbourViewBasic: { 668 - type: 'object', 668 + type: "object", 669 669 properties: { 670 670 userId: { 671 - type: 'string', 671 + type: "string", 672 672 }, 673 673 did: { 674 - type: 'string', 674 + type: "string", 675 675 }, 676 676 handle: { 677 - type: 'string', 677 + type: "string", 678 678 }, 679 679 displayName: { 680 - type: 'string', 680 + type: "string", 681 681 }, 682 682 avatar: { 683 - type: 'string', 683 + type: "string", 684 684 description: "The URL of the actor's avatar image.", 685 - format: 'uri', 685 + format: "uri", 686 686 }, 687 687 sharedArtistsCount: { 688 - type: 'integer', 689 - description: 'The number of artists shared with the actor.', 688 + type: "integer", 689 + description: "The number of artists shared with the actor.", 690 690 }, 691 691 similarityScore: { 692 - type: 'integer', 693 - description: 'The similarity score with the actor.', 692 + type: "integer", 693 + description: "The similarity score with the actor.", 694 694 }, 695 695 topSharedArtistNames: { 696 - type: 'array', 697 - description: 'The top shared artist names with the actor.', 696 + type: "array", 697 + description: "The top shared artist names with the actor.", 698 698 items: { 699 - type: 'string', 699 + type: "string", 700 700 }, 701 701 }, 702 702 topSharedArtistsDetails: { 703 - type: 'array', 704 - description: 'The top shared artist details with the actor.', 703 + type: "array", 704 + description: "The top shared artist details with the actor.", 705 705 items: { 706 - type: 'ref', 707 - ref: 'lex:app.rocksky.artist.defs#artistViewBasic', 706 + type: "ref", 707 + ref: "lex:app.rocksky.artist.defs#artistViewBasic", 708 708 }, 709 709 }, 710 710 }, 711 711 }, 712 712 compatibilityViewBasic: { 713 - type: 'object', 713 + type: "object", 714 714 properties: { 715 715 compatibilityLevel: { 716 - type: 'integer', 716 + type: "integer", 717 717 }, 718 718 compatibilityPercentage: { 719 - type: 'integer', 719 + type: "integer", 720 720 }, 721 721 sharedArtists: { 722 - type: 'integer', 722 + type: "integer", 723 723 }, 724 724 topSharedArtistNames: { 725 - type: 'array', 725 + type: "array", 726 726 items: { 727 - type: 'string', 727 + type: "string", 728 728 }, 729 729 }, 730 730 topSharedDetailedArtists: { 731 - type: 'array', 731 + type: "array", 732 732 items: { 733 - type: 'ref', 734 - ref: 'lex:app.rocksky.actor.defs#artistViewBasic', 733 + type: "ref", 734 + ref: "lex:app.rocksky.actor.defs#artistViewBasic", 735 735 }, 736 736 }, 737 737 user1ArtistCount: { 738 - type: 'integer', 738 + type: "integer", 739 739 }, 740 740 user2ArtistCount: { 741 - type: 'integer', 741 + type: "integer", 742 742 }, 743 743 }, 744 744 }, 745 745 artistViewBasic: { 746 - type: 'object', 746 + type: "object", 747 747 properties: { 748 748 id: { 749 - type: 'string', 749 + type: "string", 750 750 }, 751 751 name: { 752 - type: 'string', 752 + type: "string", 753 753 }, 754 754 picture: { 755 - type: 'string', 756 - format: 'uri', 755 + type: "string", 756 + format: "uri", 757 757 }, 758 758 uri: { 759 - type: 'string', 760 - format: 'at-uri', 759 + type: "string", 760 + format: "at-uri", 761 761 }, 762 762 user1Rank: { 763 - type: 'integer', 763 + type: "integer", 764 764 }, 765 765 user2Rank: { 766 - type: 'integer', 766 + type: "integer", 767 767 }, 768 768 weight: { 769 - type: 'integer', 769 + type: "integer", 770 770 }, 771 771 }, 772 772 }, ··· 774 774 }, 775 775 AppRockskyActorGetActorAlbums: { 776 776 lexicon: 1, 777 - id: 'app.rocksky.actor.getActorAlbums', 777 + id: "app.rocksky.actor.getActorAlbums", 778 778 defs: { 779 779 main: { 780 - type: 'query', 781 - description: 'Get albums for an actor', 780 + type: "query", 781 + description: "Get albums for an actor", 782 782 parameters: { 783 - type: 'params', 784 - required: ['did'], 783 + type: "params", 784 + required: ["did"], 785 785 properties: { 786 786 did: { 787 - type: 'string', 788 - description: 'The DID or handle of the actor', 789 - format: 'at-identifier', 787 + type: "string", 788 + description: "The DID or handle of the actor", 789 + format: "at-identifier", 790 790 }, 791 791 limit: { 792 - type: 'integer', 793 - description: 'The maximum number of albums to return', 792 + type: "integer", 793 + description: "The maximum number of albums to return", 794 794 minimum: 1, 795 795 }, 796 796 offset: { 797 - type: 'integer', 798 - description: 'The offset for pagination', 797 + type: "integer", 798 + description: "The offset for pagination", 799 799 minimum: 0, 800 800 }, 801 801 startDate: { 802 - type: 'string', 802 + type: "string", 803 803 description: 804 - 'The start date to filter albums from (ISO 8601 format)', 805 - format: 'datetime', 804 + "The start date to filter albums from (ISO 8601 format)", 805 + format: "datetime", 806 806 }, 807 807 endDate: { 808 - type: 'string', 809 - description: 'The end date to filter albums to (ISO 8601 format)', 810 - format: 'datetime', 808 + type: "string", 809 + description: "The end date to filter albums to (ISO 8601 format)", 810 + format: "datetime", 811 811 }, 812 812 }, 813 813 }, 814 814 output: { 815 - encoding: 'application/json', 815 + encoding: "application/json", 816 816 schema: { 817 - type: 'object', 817 + type: "object", 818 818 properties: { 819 819 albums: { 820 - type: 'array', 820 + type: "array", 821 821 items: { 822 - type: 'ref', 823 - ref: 'lex:app.rocksky.album.defs#albumViewBasic', 822 + type: "ref", 823 + ref: "lex:app.rocksky.album.defs#albumViewBasic", 824 824 }, 825 825 }, 826 826 }, ··· 831 831 }, 832 832 AppRockskyActorGetActorArtists: { 833 833 lexicon: 1, 834 - id: 'app.rocksky.actor.getActorArtists', 834 + id: "app.rocksky.actor.getActorArtists", 835 835 defs: { 836 836 main: { 837 - type: 'query', 838 - description: 'Get artists for an actor', 837 + type: "query", 838 + description: "Get artists for an actor", 839 839 parameters: { 840 - type: 'params', 841 - required: ['did'], 840 + type: "params", 841 + required: ["did"], 842 842 properties: { 843 843 did: { 844 - type: 'string', 845 - description: 'The DID or handle of the actor', 846 - format: 'at-identifier', 844 + type: "string", 845 + description: "The DID or handle of the actor", 846 + format: "at-identifier", 847 847 }, 848 848 limit: { 849 - type: 'integer', 850 - description: 'The maximum number of albums to return', 849 + type: "integer", 850 + description: "The maximum number of albums to return", 851 851 minimum: 1, 852 852 }, 853 853 offset: { 854 - type: 'integer', 855 - description: 'The offset for pagination', 854 + type: "integer", 855 + description: "The offset for pagination", 856 856 minimum: 0, 857 857 }, 858 858 startDate: { 859 - type: 'string', 859 + type: "string", 860 860 description: 861 - 'The start date to filter albums from (ISO 8601 format)', 862 - format: 'datetime', 861 + "The start date to filter albums from (ISO 8601 format)", 862 + format: "datetime", 863 863 }, 864 864 endDate: { 865 - type: 'string', 866 - description: 'The end date to filter albums to (ISO 8601 format)', 867 - format: 'datetime', 865 + type: "string", 866 + description: "The end date to filter albums to (ISO 8601 format)", 867 + format: "datetime", 868 868 }, 869 869 }, 870 870 }, 871 871 output: { 872 - encoding: 'application/json', 872 + encoding: "application/json", 873 873 schema: { 874 - type: 'object', 874 + type: "object", 875 875 properties: { 876 876 artists: { 877 - type: 'array', 877 + type: "array", 878 878 items: { 879 - type: 'ref', 880 - ref: 'lex:app.rocksky.artist.defs#artistViewBasic', 879 + type: "ref", 880 + ref: "lex:app.rocksky.artist.defs#artistViewBasic", 881 881 }, 882 882 }, 883 883 }, ··· 888 888 }, 889 889 AppRockskyActorGetActorCompatibility: { 890 890 lexicon: 1, 891 - id: 'app.rocksky.actor.getActorCompatibility', 891 + id: "app.rocksky.actor.getActorCompatibility", 892 892 defs: { 893 893 main: { 894 - type: 'query', 895 - description: 'Get compatibility for an actor', 894 + type: "query", 895 + description: "Get compatibility for an actor", 896 896 parameters: { 897 - type: 'params', 898 - required: ['did'], 897 + type: "params", 898 + required: ["did"], 899 899 properties: { 900 900 did: { 901 - type: 'string', 902 - description: 'DID or handle to get compatibility for', 903 - format: 'at-identifier', 901 + type: "string", 902 + description: "DID or handle to get compatibility for", 903 + format: "at-identifier", 904 904 }, 905 905 }, 906 906 }, 907 907 output: { 908 - encoding: 'application/json', 908 + encoding: "application/json", 909 909 schema: { 910 - type: 'object', 910 + type: "object", 911 911 properties: { 912 912 compatibility: { 913 - type: 'ref', 914 - ref: 'lex:app.rocksky.actor.defs#compatibilityViewBasic', 913 + type: "ref", 914 + ref: "lex:app.rocksky.actor.defs#compatibilityViewBasic", 915 915 }, 916 916 }, 917 917 }, ··· 921 921 }, 922 922 AppRockskyActorGetActorLovedSongs: { 923 923 lexicon: 1, 924 - id: 'app.rocksky.actor.getActorLovedSongs', 924 + id: "app.rocksky.actor.getActorLovedSongs", 925 925 defs: { 926 926 main: { 927 - type: 'query', 928 - description: 'Get loved songs for an actor', 927 + type: "query", 928 + description: "Get loved songs for an actor", 929 929 parameters: { 930 - type: 'params', 931 - required: ['did'], 930 + type: "params", 931 + required: ["did"], 932 932 properties: { 933 933 did: { 934 - type: 'string', 935 - description: 'The DID or handle of the actor', 936 - format: 'at-identifier', 934 + type: "string", 935 + description: "The DID or handle of the actor", 936 + format: "at-identifier", 937 937 }, 938 938 limit: { 939 - type: 'integer', 940 - description: 'The maximum number of albums to return', 939 + type: "integer", 940 + description: "The maximum number of albums to return", 941 941 minimum: 1, 942 942 }, 943 943 offset: { 944 - type: 'integer', 945 - description: 'The offset for pagination', 944 + type: "integer", 945 + description: "The offset for pagination", 946 946 minimum: 0, 947 947 }, 948 948 }, 949 949 }, 950 950 output: { 951 - encoding: 'application/json', 951 + encoding: "application/json", 952 952 schema: { 953 - type: 'object', 953 + type: "object", 954 954 properties: { 955 955 tracks: { 956 - type: 'array', 956 + type: "array", 957 957 items: { 958 - type: 'ref', 959 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 958 + type: "ref", 959 + ref: "lex:app.rocksky.song.defs#songViewBasic", 960 960 }, 961 961 }, 962 962 }, ··· 967 967 }, 968 968 AppRockskyActorGetActorNeighbours: { 969 969 lexicon: 1, 970 - id: 'app.rocksky.actor.getActorNeighbours', 970 + id: "app.rocksky.actor.getActorNeighbours", 971 971 defs: { 972 972 main: { 973 - type: 'query', 974 - description: 'Get neighbours for an actor', 973 + type: "query", 974 + description: "Get neighbours for an actor", 975 975 parameters: { 976 - type: 'params', 977 - required: ['did'], 976 + type: "params", 977 + required: ["did"], 978 978 properties: { 979 979 did: { 980 - type: 'string', 981 - description: 'The DID or handle of the actor', 982 - format: 'at-identifier', 980 + type: "string", 981 + description: "The DID or handle of the actor", 982 + format: "at-identifier", 983 983 }, 984 984 }, 985 985 }, 986 986 output: { 987 - encoding: 'application/json', 987 + encoding: "application/json", 988 988 schema: { 989 - type: 'object', 989 + type: "object", 990 990 properties: { 991 991 neighbours: { 992 - type: 'array', 992 + type: "array", 993 993 items: { 994 - type: 'ref', 995 - ref: 'lex:app.rocksky.actor.defs#neighbourViewBasic', 994 + type: "ref", 995 + ref: "lex:app.rocksky.actor.defs#neighbourViewBasic", 996 996 }, 997 997 }, 998 998 }, ··· 1003 1003 }, 1004 1004 AppRockskyActorGetActorPlaylists: { 1005 1005 lexicon: 1, 1006 - id: 'app.rocksky.actor.getActorPlaylists', 1006 + id: "app.rocksky.actor.getActorPlaylists", 1007 1007 defs: { 1008 1008 main: { 1009 - type: 'query', 1010 - description: 'Get playlists for an actor', 1009 + type: "query", 1010 + description: "Get playlists for an actor", 1011 1011 parameters: { 1012 - type: 'params', 1013 - required: ['did'], 1012 + type: "params", 1013 + required: ["did"], 1014 1014 properties: { 1015 1015 did: { 1016 - type: 'string', 1017 - description: 'The DID or handle of the actor', 1018 - format: 'at-identifier', 1016 + type: "string", 1017 + description: "The DID or handle of the actor", 1018 + format: "at-identifier", 1019 1019 }, 1020 1020 limit: { 1021 - type: 'integer', 1022 - description: 'The maximum number of albums to return', 1021 + type: "integer", 1022 + description: "The maximum number of albums to return", 1023 1023 minimum: 1, 1024 1024 }, 1025 1025 offset: { 1026 - type: 'integer', 1027 - description: 'The offset for pagination', 1026 + type: "integer", 1027 + description: "The offset for pagination", 1028 1028 minimum: 0, 1029 1029 }, 1030 1030 }, 1031 1031 }, 1032 1032 output: { 1033 - encoding: 'application/json', 1033 + encoding: "application/json", 1034 1034 schema: { 1035 - type: 'object', 1035 + type: "object", 1036 1036 properties: { 1037 1037 playlists: { 1038 - type: 'array', 1038 + type: "array", 1039 1039 items: { 1040 - type: 'ref', 1041 - ref: 'lex:app.rocksky.playlist.defs#playlistViewBasic', 1040 + type: "ref", 1041 + ref: "lex:app.rocksky.playlist.defs#playlistViewBasic", 1042 1042 }, 1043 1043 }, 1044 1044 }, ··· 1049 1049 }, 1050 1050 AppRockskyActorGetActorScrobbles: { 1051 1051 lexicon: 1, 1052 - id: 'app.rocksky.actor.getActorScrobbles', 1052 + id: "app.rocksky.actor.getActorScrobbles", 1053 1053 defs: { 1054 1054 main: { 1055 - type: 'query', 1056 - description: 'Get scrobbles for an actor', 1055 + type: "query", 1056 + description: "Get scrobbles for an actor", 1057 1057 parameters: { 1058 - type: 'params', 1059 - required: ['did'], 1058 + type: "params", 1059 + required: ["did"], 1060 1060 properties: { 1061 1061 did: { 1062 - type: 'string', 1063 - description: 'The DID or handle of the actor', 1064 - format: 'at-identifier', 1062 + type: "string", 1063 + description: "The DID or handle of the actor", 1064 + format: "at-identifier", 1065 1065 }, 1066 1066 limit: { 1067 - type: 'integer', 1068 - description: 'The maximum number of albums to return', 1067 + type: "integer", 1068 + description: "The maximum number of albums to return", 1069 1069 minimum: 1, 1070 1070 }, 1071 1071 offset: { 1072 - type: 'integer', 1073 - description: 'The offset for pagination', 1072 + type: "integer", 1073 + description: "The offset for pagination", 1074 1074 minimum: 0, 1075 1075 }, 1076 1076 }, 1077 1077 }, 1078 1078 output: { 1079 - encoding: 'application/json', 1079 + encoding: "application/json", 1080 1080 schema: { 1081 - type: 'object', 1081 + type: "object", 1082 1082 properties: { 1083 1083 scrobbles: { 1084 - type: 'array', 1084 + type: "array", 1085 1085 items: { 1086 - type: 'ref', 1087 - ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic', 1086 + type: "ref", 1087 + ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic", 1088 1088 }, 1089 1089 }, 1090 1090 }, ··· 1095 1095 }, 1096 1096 AppRockskyActorGetActorSongs: { 1097 1097 lexicon: 1, 1098 - id: 'app.rocksky.actor.getActorSongs', 1098 + id: "app.rocksky.actor.getActorSongs", 1099 1099 defs: { 1100 1100 main: { 1101 - type: 'query', 1102 - description: 'Get songs for an actor', 1101 + type: "query", 1102 + description: "Get songs for an actor", 1103 1103 parameters: { 1104 - type: 'params', 1105 - required: ['did'], 1104 + type: "params", 1105 + required: ["did"], 1106 1106 properties: { 1107 1107 did: { 1108 - type: 'string', 1109 - description: 'The DID or handle of the actor', 1110 - format: 'at-identifier', 1108 + type: "string", 1109 + description: "The DID or handle of the actor", 1110 + format: "at-identifier", 1111 1111 }, 1112 1112 limit: { 1113 - type: 'integer', 1114 - description: 'The maximum number of albums to return', 1113 + type: "integer", 1114 + description: "The maximum number of albums to return", 1115 1115 minimum: 1, 1116 1116 }, 1117 1117 offset: { 1118 - type: 'integer', 1119 - description: 'The offset for pagination', 1118 + type: "integer", 1119 + description: "The offset for pagination", 1120 1120 minimum: 0, 1121 1121 }, 1122 1122 startDate: { 1123 - type: 'string', 1123 + type: "string", 1124 1124 description: 1125 - 'The start date to filter albums from (ISO 8601 format)', 1126 - format: 'datetime', 1125 + "The start date to filter albums from (ISO 8601 format)", 1126 + format: "datetime", 1127 1127 }, 1128 1128 endDate: { 1129 - type: 'string', 1130 - description: 'The end date to filter albums to (ISO 8601 format)', 1131 - format: 'datetime', 1129 + type: "string", 1130 + description: "The end date to filter albums to (ISO 8601 format)", 1131 + format: "datetime", 1132 1132 }, 1133 1133 }, 1134 1134 }, 1135 1135 output: { 1136 - encoding: 'application/json', 1136 + encoding: "application/json", 1137 1137 schema: { 1138 - type: 'object', 1138 + type: "object", 1139 1139 properties: { 1140 1140 songs: { 1141 - type: 'array', 1141 + type: "array", 1142 1142 items: { 1143 - type: 'ref', 1144 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 1143 + type: "ref", 1144 + ref: "lex:app.rocksky.song.defs#songViewBasic", 1145 1145 }, 1146 1146 }, 1147 1147 }, ··· 1152 1152 }, 1153 1153 AppRockskyActorGetProfile: { 1154 1154 lexicon: 1, 1155 - id: 'app.rocksky.actor.getProfile', 1155 + id: "app.rocksky.actor.getProfile", 1156 1156 defs: { 1157 1157 main: { 1158 - type: 'query', 1159 - description: 'Get the profile of an actor', 1158 + type: "query", 1159 + description: "Get the profile of an actor", 1160 1160 parameters: { 1161 - type: 'params', 1161 + type: "params", 1162 1162 properties: { 1163 1163 did: { 1164 - type: 'string', 1165 - description: 'The DID or handle of the actor', 1166 - format: 'at-identifier', 1164 + type: "string", 1165 + description: "The DID or handle of the actor", 1166 + format: "at-identifier", 1167 1167 }, 1168 1168 }, 1169 1169 }, 1170 1170 output: { 1171 - encoding: 'application/json', 1171 + encoding: "application/json", 1172 1172 schema: { 1173 - type: 'ref', 1174 - ref: 'lex:app.rocksky.actor.defs#profileViewDetailed', 1173 + type: "ref", 1174 + ref: "lex:app.rocksky.actor.defs#profileViewDetailed", 1175 1175 }, 1176 1176 }, 1177 1177 }, ··· 1179 1179 }, 1180 1180 AppBskyActorProfile: { 1181 1181 lexicon: 1, 1182 - id: 'app.bsky.actor.profile', 1182 + id: "app.bsky.actor.profile", 1183 1183 defs: { 1184 1184 main: { 1185 - type: 'record', 1186 - description: 'A declaration of a Bluesky account profile.', 1187 - key: 'literal:self', 1185 + type: "record", 1186 + description: "A declaration of a Bluesky account profile.", 1187 + key: "literal:self", 1188 1188 record: { 1189 - type: 'object', 1189 + type: "object", 1190 1190 properties: { 1191 1191 displayName: { 1192 - type: 'string', 1192 + type: "string", 1193 1193 maxGraphemes: 64, 1194 1194 maxLength: 640, 1195 1195 }, 1196 1196 description: { 1197 - type: 'string', 1198 - description: 'Free-form profile description text.', 1197 + type: "string", 1198 + description: "Free-form profile description text.", 1199 1199 maxGraphemes: 256, 1200 1200 maxLength: 2560, 1201 1201 }, 1202 1202 avatar: { 1203 - type: 'blob', 1203 + type: "blob", 1204 1204 description: 1205 1205 "Small image to be displayed next to posts from account. AKA, 'profile picture'", 1206 - accept: ['image/png', 'image/jpeg'], 1206 + accept: ["image/png", "image/jpeg"], 1207 1207 maxSize: 1000000, 1208 1208 }, 1209 1209 banner: { 1210 - type: 'blob', 1210 + type: "blob", 1211 1211 description: 1212 - 'Larger horizontal image to display behind profile view.', 1213 - accept: ['image/png', 'image/jpeg'], 1212 + "Larger horizontal image to display behind profile view.", 1213 + accept: ["image/png", "image/jpeg"], 1214 1214 maxSize: 10000000, 1215 1215 }, 1216 1216 labels: { 1217 - type: 'union', 1217 + type: "union", 1218 1218 description: 1219 - 'Self-label values, specific to the Bluesky application, on the overall account.', 1220 - refs: ['lex:com.atproto.label.defs#selfLabels'], 1219 + "Self-label values, specific to the Bluesky application, on the overall account.", 1220 + refs: ["lex:com.atproto.label.defs#selfLabels"], 1221 1221 }, 1222 1222 joinedViaStarterPack: { 1223 - type: 'ref', 1224 - ref: 'lex:com.atproto.repo.strongRef', 1223 + type: "ref", 1224 + ref: "lex:com.atproto.repo.strongRef", 1225 1225 }, 1226 1226 createdAt: { 1227 - type: 'string', 1228 - format: 'datetime', 1227 + type: "string", 1228 + format: "datetime", 1229 1229 }, 1230 1230 }, 1231 1231 }, ··· 1234 1234 }, 1235 1235 AppRockskyAlbum: { 1236 1236 lexicon: 1, 1237 - id: 'app.rocksky.album', 1237 + id: "app.rocksky.album", 1238 1238 defs: { 1239 1239 main: { 1240 - type: 'record', 1241 - description: 'A declaration of an album.', 1242 - key: 'tid', 1240 + type: "record", 1241 + description: "A declaration of an album.", 1242 + key: "tid", 1243 1243 record: { 1244 - type: 'object', 1245 - required: ['title', 'artist', 'createdAt'], 1244 + type: "object", 1245 + required: ["title", "artist", "createdAt"], 1246 1246 properties: { 1247 1247 title: { 1248 - type: 'string', 1249 - description: 'The title of the album.', 1248 + type: "string", 1249 + description: "The title of the album.", 1250 1250 minLength: 1, 1251 1251 maxLength: 512, 1252 1252 }, 1253 1253 artist: { 1254 - type: 'string', 1255 - description: 'The artist of the album.', 1254 + type: "string", 1255 + description: "The artist of the album.", 1256 1256 minLength: 1, 1257 1257 maxLength: 256, 1258 1258 }, 1259 1259 duration: { 1260 - type: 'integer', 1261 - description: 'The duration of the album in seconds.', 1260 + type: "integer", 1261 + description: "The duration of the album in seconds.", 1262 1262 }, 1263 1263 releaseDate: { 1264 - type: 'string', 1265 - description: 'The release date of the album.', 1266 - format: 'datetime', 1264 + type: "string", 1265 + description: "The release date of the album.", 1266 + format: "datetime", 1267 1267 }, 1268 1268 year: { 1269 - type: 'integer', 1270 - description: 'The year the album was released.', 1269 + type: "integer", 1270 + description: "The year the album was released.", 1271 1271 }, 1272 1272 genre: { 1273 - type: 'string', 1274 - description: 'The genre of the album.', 1273 + type: "string", 1274 + description: "The genre of the album.", 1275 1275 maxLength: 256, 1276 1276 }, 1277 1277 albumArt: { 1278 - type: 'blob', 1279 - description: 'The album art of the album.', 1280 - accept: ['image/png', 'image/jpeg'], 1278 + type: "blob", 1279 + description: "The album art of the album.", 1280 + accept: ["image/png", "image/jpeg"], 1281 1281 maxSize: 2000000, 1282 1282 }, 1283 1283 albumArtUrl: { 1284 - type: 'string', 1285 - description: 'The URL of the album art of the album.', 1286 - format: 'uri', 1284 + type: "string", 1285 + description: "The URL of the album art of the album.", 1286 + format: "uri", 1287 1287 }, 1288 1288 tags: { 1289 - type: 'array', 1290 - description: 'The tags of the album.', 1289 + type: "array", 1290 + description: "The tags of the album.", 1291 1291 items: { 1292 - type: 'string', 1292 + type: "string", 1293 1293 minLength: 1, 1294 1294 maxLength: 256, 1295 1295 }, 1296 1296 }, 1297 1297 youtubeLink: { 1298 - type: 'string', 1299 - description: 'The YouTube link of the album.', 1300 - format: 'uri', 1298 + type: "string", 1299 + description: "The YouTube link of the album.", 1300 + format: "uri", 1301 1301 }, 1302 1302 spotifyLink: { 1303 - type: 'string', 1304 - description: 'The Spotify link of the album.', 1305 - format: 'uri', 1303 + type: "string", 1304 + description: "The Spotify link of the album.", 1305 + format: "uri", 1306 1306 }, 1307 1307 tidalLink: { 1308 - type: 'string', 1309 - description: 'The tidal link of the album.', 1310 - format: 'uri', 1308 + type: "string", 1309 + description: "The tidal link of the album.", 1310 + format: "uri", 1311 1311 }, 1312 1312 appleMusicLink: { 1313 - type: 'string', 1314 - description: 'The Apple Music link of the album.', 1315 - format: 'uri', 1313 + type: "string", 1314 + description: "The Apple Music link of the album.", 1315 + format: "uri", 1316 1316 }, 1317 1317 createdAt: { 1318 - type: 'string', 1319 - description: 'The date and time when the album was created.', 1320 - format: 'datetime', 1318 + type: "string", 1319 + description: "The date and time when the album was created.", 1320 + format: "datetime", 1321 1321 }, 1322 1322 }, 1323 1323 }, ··· 1326 1326 }, 1327 1327 AppRockskyAlbumDefs: { 1328 1328 lexicon: 1, 1329 - id: 'app.rocksky.album.defs', 1329 + id: "app.rocksky.album.defs", 1330 1330 defs: { 1331 1331 albumViewBasic: { 1332 - type: 'object', 1332 + type: "object", 1333 1333 properties: { 1334 1334 id: { 1335 - type: 'string', 1336 - description: 'The unique identifier of the album.', 1335 + type: "string", 1336 + description: "The unique identifier of the album.", 1337 1337 }, 1338 1338 uri: { 1339 - type: 'string', 1340 - description: 'The URI of the album.', 1341 - format: 'at-uri', 1339 + type: "string", 1340 + description: "The URI of the album.", 1341 + format: "at-uri", 1342 1342 }, 1343 1343 title: { 1344 - type: 'string', 1345 - description: 'The title of the album.', 1344 + type: "string", 1345 + description: "The title of the album.", 1346 1346 }, 1347 1347 artist: { 1348 - type: 'string', 1349 - description: 'The artist of the album.', 1348 + type: "string", 1349 + description: "The artist of the album.", 1350 1350 }, 1351 1351 artistUri: { 1352 - type: 'string', 1352 + type: "string", 1353 1353 description: "The URI of the album's artist.", 1354 - format: 'at-uri', 1354 + format: "at-uri", 1355 1355 }, 1356 1356 year: { 1357 - type: 'integer', 1358 - description: 'The year the album was released.', 1357 + type: "integer", 1358 + description: "The year the album was released.", 1359 1359 }, 1360 1360 albumArt: { 1361 - type: 'string', 1362 - description: 'The URL of the album art image.', 1363 - format: 'uri', 1361 + type: "string", 1362 + description: "The URL of the album art image.", 1363 + format: "uri", 1364 1364 }, 1365 1365 releaseDate: { 1366 - type: 'string', 1367 - description: 'The release date of the album.', 1366 + type: "string", 1367 + description: "The release date of the album.", 1368 1368 }, 1369 1369 sha256: { 1370 - type: 'string', 1371 - description: 'The SHA256 hash of the album.', 1370 + type: "string", 1371 + description: "The SHA256 hash of the album.", 1372 1372 }, 1373 1373 playCount: { 1374 - type: 'integer', 1375 - description: 'The number of times the album has been played.', 1374 + type: "integer", 1375 + description: "The number of times the album has been played.", 1376 1376 minimum: 0, 1377 1377 }, 1378 1378 uniqueListeners: { 1379 - type: 'integer', 1379 + type: "integer", 1380 1380 description: 1381 - 'The number of unique listeners who have played the album.', 1381 + "The number of unique listeners who have played the album.", 1382 1382 minimum: 0, 1383 1383 }, 1384 1384 }, 1385 1385 }, 1386 1386 albumViewDetailed: { 1387 - type: 'object', 1387 + type: "object", 1388 1388 properties: { 1389 1389 id: { 1390 - type: 'string', 1391 - description: 'The unique identifier of the album.', 1390 + type: "string", 1391 + description: "The unique identifier of the album.", 1392 1392 }, 1393 1393 uri: { 1394 - type: 'string', 1395 - description: 'The URI of the album.', 1396 - format: 'at-uri', 1394 + type: "string", 1395 + description: "The URI of the album.", 1396 + format: "at-uri", 1397 1397 }, 1398 1398 title: { 1399 - type: 'string', 1400 - description: 'The title of the album.', 1399 + type: "string", 1400 + description: "The title of the album.", 1401 1401 }, 1402 1402 artist: { 1403 - type: 'string', 1404 - description: 'The artist of the album.', 1403 + type: "string", 1404 + description: "The artist of the album.", 1405 1405 }, 1406 1406 artistUri: { 1407 - type: 'string', 1407 + type: "string", 1408 1408 description: "The URI of the album's artist.", 1409 - format: 'at-uri', 1409 + format: "at-uri", 1410 1410 }, 1411 1411 year: { 1412 - type: 'integer', 1413 - description: 'The year the album was released.', 1412 + type: "integer", 1413 + description: "The year the album was released.", 1414 1414 }, 1415 1415 albumArt: { 1416 - type: 'string', 1417 - description: 'The URL of the album art image.', 1418 - format: 'uri', 1416 + type: "string", 1417 + description: "The URL of the album art image.", 1418 + format: "uri", 1419 1419 }, 1420 1420 releaseDate: { 1421 - type: 'string', 1422 - description: 'The release date of the album.', 1421 + type: "string", 1422 + description: "The release date of the album.", 1423 1423 }, 1424 1424 sha256: { 1425 - type: 'string', 1426 - description: 'The SHA256 hash of the album.', 1425 + type: "string", 1426 + description: "The SHA256 hash of the album.", 1427 1427 }, 1428 1428 playCount: { 1429 - type: 'integer', 1430 - description: 'The number of times the album has been played.', 1429 + type: "integer", 1430 + description: "The number of times the album has been played.", 1431 1431 minimum: 0, 1432 1432 }, 1433 1433 uniqueListeners: { 1434 - type: 'integer', 1434 + type: "integer", 1435 1435 description: 1436 - 'The number of unique listeners who have played the album.', 1436 + "The number of unique listeners who have played the album.", 1437 1437 minimum: 0, 1438 1438 }, 1439 1439 tags: { 1440 - type: 'array', 1440 + type: "array", 1441 1441 items: { 1442 - type: 'string', 1442 + type: "string", 1443 1443 }, 1444 1444 }, 1445 1445 tracks: { 1446 - type: 'array', 1446 + type: "array", 1447 1447 items: { 1448 - type: 'ref', 1449 - ref: 'lex:app.rocksky.song.defs.songViewBasic', 1448 + type: "ref", 1449 + ref: "lex:app.rocksky.song.defs.songViewBasic", 1450 1450 }, 1451 1451 }, 1452 1452 }, ··· 1455 1455 }, 1456 1456 AppRockskyAlbumGetAlbum: { 1457 1457 lexicon: 1, 1458 - id: 'app.rocksky.album.getAlbum', 1458 + id: "app.rocksky.album.getAlbum", 1459 1459 defs: { 1460 1460 main: { 1461 - type: 'query', 1462 - description: 'Get detailed album view', 1461 + type: "query", 1462 + description: "Get detailed album view", 1463 1463 parameters: { 1464 - type: 'params', 1465 - required: ['uri'], 1464 + type: "params", 1465 + required: ["uri"], 1466 1466 properties: { 1467 1467 uri: { 1468 - type: 'string', 1469 - description: 'The URI of the album to retrieve.', 1470 - format: 'at-uri', 1468 + type: "string", 1469 + description: "The URI of the album to retrieve.", 1470 + format: "at-uri", 1471 1471 }, 1472 1472 }, 1473 1473 }, 1474 1474 output: { 1475 - encoding: 'application/json', 1475 + encoding: "application/json", 1476 1476 schema: { 1477 - type: 'ref', 1478 - ref: 'lex:app.rocksky.album.defs#albumViewDetailed', 1477 + type: "ref", 1478 + ref: "lex:app.rocksky.album.defs#albumViewDetailed", 1479 1479 }, 1480 1480 }, 1481 1481 }, ··· 1483 1483 }, 1484 1484 AppRockskyAlbumGetAlbums: { 1485 1485 lexicon: 1, 1486 - id: 'app.rocksky.album.getAlbums', 1486 + id: "app.rocksky.album.getAlbums", 1487 1487 defs: { 1488 1488 main: { 1489 - type: 'query', 1490 - description: 'Get albums', 1489 + type: "query", 1490 + description: "Get albums", 1491 1491 parameters: { 1492 - type: 'params', 1492 + type: "params", 1493 1493 properties: { 1494 1494 limit: { 1495 - type: 'integer', 1496 - description: 'The maximum number of albums to return', 1495 + type: "integer", 1496 + description: "The maximum number of albums to return", 1497 1497 minimum: 1, 1498 1498 }, 1499 1499 offset: { 1500 - type: 'integer', 1501 - description: 'The offset for pagination', 1500 + type: "integer", 1501 + description: "The offset for pagination", 1502 1502 minimum: 0, 1503 1503 }, 1504 1504 genre: { 1505 - type: 'string', 1506 - description: 'The genre to filter artists by', 1505 + type: "string", 1506 + description: "The genre to filter artists by", 1507 1507 }, 1508 1508 }, 1509 1509 }, 1510 1510 output: { 1511 - encoding: 'application/json', 1511 + encoding: "application/json", 1512 1512 schema: { 1513 - type: 'object', 1513 + type: "object", 1514 1514 properties: { 1515 1515 albums: { 1516 - type: 'array', 1516 + type: "array", 1517 1517 items: { 1518 - type: 'ref', 1519 - ref: 'lex:app.rocksky.album.defs#albumViewBasic', 1518 + type: "ref", 1519 + ref: "lex:app.rocksky.album.defs#albumViewBasic", 1520 1520 }, 1521 1521 }, 1522 1522 }, ··· 1527 1527 }, 1528 1528 AppRockskyAlbumGetAlbumTracks: { 1529 1529 lexicon: 1, 1530 - id: 'app.rocksky.album.getAlbumTracks', 1530 + id: "app.rocksky.album.getAlbumTracks", 1531 1531 defs: { 1532 1532 main: { 1533 - type: 'query', 1534 - description: 'Get tracks for an album', 1533 + type: "query", 1534 + description: "Get tracks for an album", 1535 1535 parameters: { 1536 - type: 'params', 1537 - required: ['uri'], 1536 + type: "params", 1537 + required: ["uri"], 1538 1538 properties: { 1539 1539 uri: { 1540 - type: 'string', 1541 - description: 'The URI of the album to retrieve tracks from', 1542 - format: 'at-uri', 1540 + type: "string", 1541 + description: "The URI of the album to retrieve tracks from", 1542 + format: "at-uri", 1543 1543 }, 1544 1544 }, 1545 1545 }, 1546 1546 output: { 1547 - encoding: 'application/json', 1547 + encoding: "application/json", 1548 1548 schema: { 1549 - type: 'object', 1549 + type: "object", 1550 1550 properties: { 1551 1551 tracks: { 1552 - type: 'array', 1552 + type: "array", 1553 1553 items: { 1554 - type: 'ref', 1555 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 1554 + type: "ref", 1555 + ref: "lex:app.rocksky.song.defs#songViewBasic", 1556 1556 }, 1557 1557 }, 1558 1558 }, ··· 1563 1563 }, 1564 1564 AppRockskyApikeyCreateApikey: { 1565 1565 lexicon: 1, 1566 - id: 'app.rocksky.apikey.createApikey', 1566 + id: "app.rocksky.apikey.createApikey", 1567 1567 defs: { 1568 1568 main: { 1569 - type: 'procedure', 1570 - description: 'Create a new API key for the authenticated user', 1569 + type: "procedure", 1570 + description: "Create a new API key for the authenticated user", 1571 1571 input: { 1572 - encoding: 'application/json', 1572 + encoding: "application/json", 1573 1573 schema: { 1574 - type: 'object', 1575 - required: ['name'], 1574 + type: "object", 1575 + required: ["name"], 1576 1576 properties: { 1577 1577 name: { 1578 - type: 'string', 1579 - description: 'The name of the API key.', 1578 + type: "string", 1579 + description: "The name of the API key.", 1580 1580 }, 1581 1581 description: { 1582 - type: 'string', 1583 - description: 'A description for the API key.', 1582 + type: "string", 1583 + description: "A description for the API key.", 1584 1584 }, 1585 1585 }, 1586 1586 }, 1587 1587 }, 1588 1588 output: { 1589 - encoding: 'application/json', 1589 + encoding: "application/json", 1590 1590 schema: { 1591 - type: 'ref', 1592 - ref: 'lex:app.rocksky.apikey.defs#apiKey', 1591 + type: "ref", 1592 + ref: "lex:app.rocksky.apikey.defs#apiKey", 1593 1593 }, 1594 1594 }, 1595 1595 }, ··· 1597 1597 }, 1598 1598 AppRockskyApikeyDefs: { 1599 1599 lexicon: 1, 1600 - id: 'app.rocksky.apikey.defs', 1600 + id: "app.rocksky.apikey.defs", 1601 1601 defs: { 1602 1602 apiKeyView: { 1603 - type: 'object', 1603 + type: "object", 1604 1604 properties: { 1605 1605 id: { 1606 - type: 'string', 1607 - description: 'The unique identifier of the API key.', 1606 + type: "string", 1607 + description: "The unique identifier of the API key.", 1608 1608 }, 1609 1609 name: { 1610 - type: 'string', 1611 - description: 'The name of the API key.', 1610 + type: "string", 1611 + description: "The name of the API key.", 1612 1612 }, 1613 1613 description: { 1614 - type: 'string', 1615 - description: 'A description for the API key.', 1614 + type: "string", 1615 + description: "A description for the API key.", 1616 1616 }, 1617 1617 createdAt: { 1618 - type: 'string', 1619 - description: 'The date and time when the API key was created.', 1620 - format: 'datetime', 1618 + type: "string", 1619 + description: "The date and time when the API key was created.", 1620 + format: "datetime", 1621 1621 }, 1622 1622 }, 1623 1623 }, ··· 1625 1625 }, 1626 1626 AppRockskyApikeysDefs: { 1627 1627 lexicon: 1, 1628 - id: 'app.rocksky.apikeys.defs', 1628 + id: "app.rocksky.apikeys.defs", 1629 1629 defs: {}, 1630 1630 }, 1631 1631 AppRockskyApikeyGetApikeys: { 1632 1632 lexicon: 1, 1633 - id: 'app.rocksky.apikey.getApikeys', 1633 + id: "app.rocksky.apikey.getApikeys", 1634 1634 defs: { 1635 1635 main: { 1636 - type: 'query', 1637 - description: 'Get a list of API keys for the authenticated user', 1636 + type: "query", 1637 + description: "Get a list of API keys for the authenticated user", 1638 1638 parameters: { 1639 - type: 'params', 1639 + type: "params", 1640 1640 properties: { 1641 1641 offset: { 1642 - type: 'integer', 1642 + type: "integer", 1643 1643 description: 1644 - 'The number of API keys to skip before starting to collect the result set.', 1644 + "The number of API keys to skip before starting to collect the result set.", 1645 1645 }, 1646 1646 limit: { 1647 - type: 'integer', 1648 - description: 'The number of API keys to return per page.', 1647 + type: "integer", 1648 + description: "The number of API keys to return per page.", 1649 1649 }, 1650 1650 }, 1651 1651 }, 1652 1652 output: { 1653 - encoding: 'application/json', 1653 + encoding: "application/json", 1654 1654 schema: { 1655 - type: 'object', 1655 + type: "object", 1656 1656 properties: { 1657 1657 apiKeys: { 1658 - type: 'array', 1658 + type: "array", 1659 1659 items: { 1660 - type: 'ref', 1661 - ref: 'lex:app.rocksky.apikey.defs#apikeyView', 1660 + type: "ref", 1661 + ref: "lex:app.rocksky.apikey.defs#apikeyView", 1662 1662 }, 1663 1663 }, 1664 1664 }, ··· 1669 1669 }, 1670 1670 AppRockskyApikeyRemoveApikey: { 1671 1671 lexicon: 1, 1672 - id: 'app.rocksky.apikey.removeApikey', 1672 + id: "app.rocksky.apikey.removeApikey", 1673 1673 defs: { 1674 1674 main: { 1675 - type: 'procedure', 1676 - description: 'Remove an API key for the authenticated user', 1675 + type: "procedure", 1676 + description: "Remove an API key for the authenticated user", 1677 1677 parameters: { 1678 - type: 'params', 1679 - required: ['id'], 1678 + type: "params", 1679 + required: ["id"], 1680 1680 properties: { 1681 1681 id: { 1682 - type: 'string', 1683 - description: 'The ID of the API key to remove.', 1682 + type: "string", 1683 + description: "The ID of the API key to remove.", 1684 1684 }, 1685 1685 }, 1686 1686 }, 1687 1687 output: { 1688 - encoding: 'application/json', 1688 + encoding: "application/json", 1689 1689 schema: { 1690 - type: 'ref', 1691 - ref: 'lex:app.rocksky.apikey.defs#apiKey', 1690 + type: "ref", 1691 + ref: "lex:app.rocksky.apikey.defs#apiKey", 1692 1692 }, 1693 1693 }, 1694 1694 }, ··· 1696 1696 }, 1697 1697 AppRockskyApikeyUpdateApikey: { 1698 1698 lexicon: 1, 1699 - id: 'app.rocksky.apikey.updateApikey', 1699 + id: "app.rocksky.apikey.updateApikey", 1700 1700 defs: { 1701 1701 main: { 1702 - type: 'procedure', 1703 - description: 'Update an existing API key for the authenticated user', 1702 + type: "procedure", 1703 + description: "Update an existing API key for the authenticated user", 1704 1704 input: { 1705 - encoding: 'application/json', 1705 + encoding: "application/json", 1706 1706 schema: { 1707 - type: 'object', 1708 - required: ['id', 'name'], 1707 + type: "object", 1708 + required: ["id", "name"], 1709 1709 properties: { 1710 1710 id: { 1711 - type: 'string', 1712 - description: 'The ID of the API key to update.', 1711 + type: "string", 1712 + description: "The ID of the API key to update.", 1713 1713 }, 1714 1714 name: { 1715 - type: 'string', 1716 - description: 'The new name of the API key.', 1715 + type: "string", 1716 + description: "The new name of the API key.", 1717 1717 }, 1718 1718 description: { 1719 - type: 'string', 1720 - description: 'A new description for the API key.', 1719 + type: "string", 1720 + description: "A new description for the API key.", 1721 1721 }, 1722 1722 }, 1723 1723 }, 1724 1724 }, 1725 1725 output: { 1726 - encoding: 'application/json', 1726 + encoding: "application/json", 1727 1727 schema: { 1728 - type: 'ref', 1729 - ref: 'lex:app.rocksky.apikey.defs#apiKey', 1728 + type: "ref", 1729 + ref: "lex:app.rocksky.apikey.defs#apiKey", 1730 1730 }, 1731 1731 }, 1732 1732 }, ··· 1734 1734 }, 1735 1735 AppRockskyArtist: { 1736 1736 lexicon: 1, 1737 - id: 'app.rocksky.artist', 1737 + id: "app.rocksky.artist", 1738 1738 defs: { 1739 1739 main: { 1740 - type: 'record', 1741 - description: 'A declaration of an artist.', 1742 - key: 'tid', 1740 + type: "record", 1741 + description: "A declaration of an artist.", 1742 + key: "tid", 1743 1743 record: { 1744 - type: 'object', 1745 - required: ['name', 'createdAt'], 1744 + type: "object", 1745 + required: ["name", "createdAt"], 1746 1746 properties: { 1747 1747 name: { 1748 - type: 'string', 1749 - description: 'The name of the artist.', 1748 + type: "string", 1749 + description: "The name of the artist.", 1750 1750 minLength: 1, 1751 1751 maxLength: 512, 1752 1752 }, 1753 1753 bio: { 1754 - type: 'string', 1755 - description: 'The biography of the artist.', 1754 + type: "string", 1755 + description: "The biography of the artist.", 1756 1756 maxLength: 1000, 1757 1757 }, 1758 1758 picture: { 1759 - type: 'blob', 1760 - description: 'The picture of the artist.', 1761 - accept: ['image/png', 'image/jpeg'], 1759 + type: "blob", 1760 + description: "The picture of the artist.", 1761 + accept: ["image/png", "image/jpeg"], 1762 1762 maxSize: 2000000, 1763 1763 }, 1764 1764 pictureUrl: { 1765 - type: 'string', 1766 - description: 'The URL of the picture of the artist.', 1767 - format: 'uri', 1765 + type: "string", 1766 + description: "The URL of the picture of the artist.", 1767 + format: "uri", 1768 1768 }, 1769 1769 tags: { 1770 - type: 'array', 1771 - description: 'The tags of the artist.', 1770 + type: "array", 1771 + description: "The tags of the artist.", 1772 1772 items: { 1773 - type: 'string', 1773 + type: "string", 1774 1774 minLength: 1, 1775 1775 maxLength: 256, 1776 1776 }, 1777 1777 }, 1778 1778 born: { 1779 - type: 'string', 1780 - description: 'The birth date of the artist.', 1781 - format: 'datetime', 1779 + type: "string", 1780 + description: "The birth date of the artist.", 1781 + format: "datetime", 1782 1782 }, 1783 1783 died: { 1784 - type: 'string', 1785 - description: 'The death date of the artist.', 1786 - format: 'datetime', 1784 + type: "string", 1785 + description: "The death date of the artist.", 1786 + format: "datetime", 1787 1787 }, 1788 1788 bornIn: { 1789 - type: 'string', 1790 - description: 'The birth place of the artist.', 1789 + type: "string", 1790 + description: "The birth place of the artist.", 1791 1791 maxLength: 256, 1792 1792 }, 1793 1793 createdAt: { 1794 - type: 'string', 1795 - description: 'The date when the artist was created.', 1796 - format: 'datetime', 1794 + type: "string", 1795 + description: "The date when the artist was created.", 1796 + format: "datetime", 1797 1797 }, 1798 1798 }, 1799 1799 }, ··· 1802 1802 }, 1803 1803 AppRockskyArtistDefs: { 1804 1804 lexicon: 1, 1805 - id: 'app.rocksky.artist.defs', 1805 + id: "app.rocksky.artist.defs", 1806 1806 defs: { 1807 1807 artistViewBasic: { 1808 - type: 'object', 1808 + type: "object", 1809 1809 properties: { 1810 1810 id: { 1811 - type: 'string', 1812 - description: 'The unique identifier of the artist.', 1811 + type: "string", 1812 + description: "The unique identifier of the artist.", 1813 1813 }, 1814 1814 uri: { 1815 - type: 'string', 1816 - description: 'The URI of the artist.', 1817 - format: 'at-uri', 1815 + type: "string", 1816 + description: "The URI of the artist.", 1817 + format: "at-uri", 1818 1818 }, 1819 1819 name: { 1820 - type: 'string', 1821 - description: 'The name of the artist.', 1820 + type: "string", 1821 + description: "The name of the artist.", 1822 1822 }, 1823 1823 picture: { 1824 - type: 'string', 1825 - description: 'The picture of the artist.', 1824 + type: "string", 1825 + description: "The picture of the artist.", 1826 1826 }, 1827 1827 sha256: { 1828 - type: 'string', 1829 - description: 'The SHA256 hash of the artist.', 1828 + type: "string", 1829 + description: "The SHA256 hash of the artist.", 1830 1830 }, 1831 1831 playCount: { 1832 - type: 'integer', 1833 - description: 'The number of times the artist has been played.', 1832 + type: "integer", 1833 + description: "The number of times the artist has been played.", 1834 1834 minimum: 0, 1835 1835 }, 1836 1836 uniqueListeners: { 1837 - type: 'integer', 1837 + type: "integer", 1838 1838 description: 1839 - 'The number of unique listeners who have played the artist.', 1839 + "The number of unique listeners who have played the artist.", 1840 1840 minimum: 0, 1841 1841 }, 1842 1842 tags: { 1843 - type: 'array', 1843 + type: "array", 1844 1844 items: { 1845 - type: 'string', 1845 + type: "string", 1846 1846 }, 1847 1847 }, 1848 1848 }, 1849 1849 }, 1850 1850 artistViewDetailed: { 1851 - type: 'object', 1851 + type: "object", 1852 1852 properties: { 1853 1853 id: { 1854 - type: 'string', 1855 - description: 'The unique identifier of the artist.', 1854 + type: "string", 1855 + description: "The unique identifier of the artist.", 1856 1856 }, 1857 1857 uri: { 1858 - type: 'string', 1859 - description: 'The URI of the artist.', 1860 - format: 'at-uri', 1858 + type: "string", 1859 + description: "The URI of the artist.", 1860 + format: "at-uri", 1861 1861 }, 1862 1862 name: { 1863 - type: 'string', 1864 - description: 'The name of the artist.', 1863 + type: "string", 1864 + description: "The name of the artist.", 1865 1865 }, 1866 1866 picture: { 1867 - type: 'string', 1868 - description: 'The picture of the artist.', 1867 + type: "string", 1868 + description: "The picture of the artist.", 1869 1869 }, 1870 1870 sha256: { 1871 - type: 'string', 1872 - description: 'The SHA256 hash of the artist.', 1871 + type: "string", 1872 + description: "The SHA256 hash of the artist.", 1873 1873 }, 1874 1874 playCount: { 1875 - type: 'integer', 1876 - description: 'The number of times the artist has been played.', 1875 + type: "integer", 1876 + description: "The number of times the artist has been played.", 1877 1877 minimum: 0, 1878 1878 }, 1879 1879 uniqueListeners: { 1880 - type: 'integer', 1880 + type: "integer", 1881 1881 description: 1882 - 'The number of unique listeners who have played the artist.', 1882 + "The number of unique listeners who have played the artist.", 1883 1883 minimum: 0, 1884 1884 }, 1885 1885 tags: { 1886 - type: 'array', 1886 + type: "array", 1887 1887 items: { 1888 - type: 'string', 1888 + type: "string", 1889 1889 }, 1890 1890 }, 1891 1891 }, 1892 1892 }, 1893 1893 songViewBasic: { 1894 - type: 'object', 1894 + type: "object", 1895 1895 properties: { 1896 1896 uri: { 1897 - type: 'string', 1898 - description: 'The URI of the song.', 1899 - format: 'at-uri', 1897 + type: "string", 1898 + description: "The URI of the song.", 1899 + format: "at-uri", 1900 1900 }, 1901 1901 title: { 1902 - type: 'string', 1903 - description: 'The title of the song.', 1902 + type: "string", 1903 + description: "The title of the song.", 1904 1904 }, 1905 1905 playCount: { 1906 - type: 'integer', 1907 - description: 'The number of times the song has been played.', 1906 + type: "integer", 1907 + description: "The number of times the song has been played.", 1908 1908 minimum: 0, 1909 1909 }, 1910 1910 }, 1911 1911 }, 1912 1912 listenerViewBasic: { 1913 - type: 'object', 1913 + type: "object", 1914 1914 properties: { 1915 1915 id: { 1916 - type: 'string', 1917 - description: 'The unique identifier of the actor.', 1916 + type: "string", 1917 + description: "The unique identifier of the actor.", 1918 1918 }, 1919 1919 did: { 1920 - type: 'string', 1921 - description: 'The DID of the listener.', 1920 + type: "string", 1921 + description: "The DID of the listener.", 1922 1922 }, 1923 1923 handle: { 1924 - type: 'string', 1925 - description: 'The handle of the listener.', 1924 + type: "string", 1925 + description: "The handle of the listener.", 1926 1926 }, 1927 1927 displayName: { 1928 - type: 'string', 1929 - description: 'The display name of the listener.', 1928 + type: "string", 1929 + description: "The display name of the listener.", 1930 1930 }, 1931 1931 avatar: { 1932 - type: 'string', 1932 + type: "string", 1933 1933 description: "The URL of the listener's avatar image.", 1934 - format: 'uri', 1934 + format: "uri", 1935 1935 }, 1936 1936 mostListenedSong: { 1937 - type: 'ref', 1938 - ref: 'lex:app.rocksky.artist.defs#songViewBasic', 1937 + type: "ref", 1938 + ref: "lex:app.rocksky.artist.defs#songViewBasic", 1939 1939 }, 1940 1940 totalPlays: { 1941 - type: 'integer', 1942 - description: 'The total number of plays by the listener.', 1941 + type: "integer", 1942 + description: "The total number of plays by the listener.", 1943 1943 minimum: 0, 1944 1944 }, 1945 1945 rank: { 1946 - type: 'integer', 1946 + type: "integer", 1947 1947 description: 1948 - 'The rank of the listener among all listeners of the artist.', 1948 + "The rank of the listener among all listeners of the artist.", 1949 1949 minimum: 1, 1950 1950 }, 1951 1951 }, 1952 1952 }, 1953 1953 artistMbid: { 1954 - type: 'object', 1954 + type: "object", 1955 1955 properties: { 1956 1956 mbid: { 1957 - type: 'string', 1958 - description: 'The MusicBrainz Identifier (MBID) of the artist.', 1957 + type: "string", 1958 + description: "The MusicBrainz Identifier (MBID) of the artist.", 1959 1959 }, 1960 1960 name: { 1961 - type: 'string', 1962 - description: 'The name of the artist.', 1961 + type: "string", 1962 + description: "The name of the artist.", 1963 1963 minLength: 1, 1964 1964 maxLength: 256, 1965 1965 }, ··· 1969 1969 }, 1970 1970 AppRockskyArtistGetArtist: { 1971 1971 lexicon: 1, 1972 - id: 'app.rocksky.artist.getArtist', 1972 + id: "app.rocksky.artist.getArtist", 1973 1973 defs: { 1974 1974 main: { 1975 - type: 'query', 1976 - description: 'Get artist details', 1975 + type: "query", 1976 + description: "Get artist details", 1977 1977 parameters: { 1978 - type: 'params', 1979 - required: ['uri'], 1978 + type: "params", 1979 + required: ["uri"], 1980 1980 properties: { 1981 1981 uri: { 1982 - type: 'string', 1983 - description: 'The URI of the artist to retrieve details from', 1984 - format: 'at-uri', 1982 + type: "string", 1983 + description: "The URI of the artist to retrieve details from", 1984 + format: "at-uri", 1985 1985 }, 1986 1986 }, 1987 1987 }, 1988 1988 output: { 1989 - encoding: 'application/json', 1989 + encoding: "application/json", 1990 1990 schema: { 1991 - type: 'ref', 1992 - ref: 'lex:app.rocksky.artist.defs#artistViewDetailed', 1991 + type: "ref", 1992 + ref: "lex:app.rocksky.artist.defs#artistViewDetailed", 1993 1993 }, 1994 1994 }, 1995 1995 }, ··· 1997 1997 }, 1998 1998 AppRockskyArtistGetArtistAlbums: { 1999 1999 lexicon: 1, 2000 - id: 'app.rocksky.artist.getArtistAlbums', 2000 + id: "app.rocksky.artist.getArtistAlbums", 2001 2001 defs: { 2002 2002 main: { 2003 - type: 'query', 2003 + type: "query", 2004 2004 description: "Get artist's albums", 2005 2005 parameters: { 2006 - type: 'params', 2007 - required: ['uri'], 2006 + type: "params", 2007 + required: ["uri"], 2008 2008 properties: { 2009 2009 uri: { 2010 - type: 'string', 2011 - description: 'The URI of the artist to retrieve albums from', 2012 - format: 'at-uri', 2010 + type: "string", 2011 + description: "The URI of the artist to retrieve albums from", 2012 + format: "at-uri", 2013 2013 }, 2014 2014 }, 2015 2015 }, 2016 2016 output: { 2017 - encoding: 'application/json', 2017 + encoding: "application/json", 2018 2018 schema: { 2019 - type: 'object', 2019 + type: "object", 2020 2020 properties: { 2021 2021 albums: { 2022 - type: 'array', 2022 + type: "array", 2023 2023 items: { 2024 - type: 'ref', 2025 - ref: 'lex:app.rocksky.album.defs#albumViewBasic', 2024 + type: "ref", 2025 + ref: "lex:app.rocksky.album.defs#albumViewBasic", 2026 2026 }, 2027 2027 }, 2028 2028 }, ··· 2033 2033 }, 2034 2034 AppRockskyArtistGetArtistListeners: { 2035 2035 lexicon: 1, 2036 - id: 'app.rocksky.artist.getArtistListeners', 2036 + id: "app.rocksky.artist.getArtistListeners", 2037 2037 defs: { 2038 2038 main: { 2039 - type: 'query', 2040 - description: 'Get artist listeners', 2039 + type: "query", 2040 + description: "Get artist listeners", 2041 2041 parameters: { 2042 - type: 'params', 2043 - required: ['uri'], 2042 + type: "params", 2043 + required: ["uri"], 2044 2044 properties: { 2045 2045 uri: { 2046 - type: 'string', 2047 - description: 'The URI of the artist to retrieve listeners from', 2048 - format: 'at-uri', 2046 + type: "string", 2047 + description: "The URI of the artist to retrieve listeners from", 2048 + format: "at-uri", 2049 2049 }, 2050 2050 offset: { 2051 - type: 'integer', 2052 - description: 'Number of items to skip before returning results', 2051 + type: "integer", 2052 + description: "Number of items to skip before returning results", 2053 2053 }, 2054 2054 limit: { 2055 - type: 'integer', 2056 - description: 'Maximum number of results to return', 2055 + type: "integer", 2056 + description: "Maximum number of results to return", 2057 2057 }, 2058 2058 }, 2059 2059 }, 2060 2060 output: { 2061 - encoding: 'application/json', 2061 + encoding: "application/json", 2062 2062 schema: { 2063 - type: 'object', 2063 + type: "object", 2064 2064 properties: { 2065 2065 listeners: { 2066 - type: 'array', 2066 + type: "array", 2067 2067 items: { 2068 - type: 'ref', 2069 - ref: 'lex:app.rocksky.artist.defs#listenerViewBasic', 2068 + type: "ref", 2069 + ref: "lex:app.rocksky.artist.defs#listenerViewBasic", 2070 2070 }, 2071 2071 }, 2072 2072 }, ··· 2077 2077 }, 2078 2078 AppRockskyArtistGetArtists: { 2079 2079 lexicon: 1, 2080 - id: 'app.rocksky.artist.getArtists', 2080 + id: "app.rocksky.artist.getArtists", 2081 2081 defs: { 2082 2082 main: { 2083 - type: 'query', 2084 - description: 'Get artists', 2083 + type: "query", 2084 + description: "Get artists", 2085 2085 parameters: { 2086 - type: 'params', 2086 + type: "params", 2087 2087 properties: { 2088 2088 limit: { 2089 - type: 'integer', 2090 - description: 'The maximum number of artists to return', 2089 + type: "integer", 2090 + description: "The maximum number of artists to return", 2091 2091 minimum: 1, 2092 2092 }, 2093 2093 offset: { 2094 - type: 'integer', 2095 - description: 'The offset for pagination', 2094 + type: "integer", 2095 + description: "The offset for pagination", 2096 2096 minimum: 0, 2097 2097 }, 2098 2098 names: { 2099 - type: 'string', 2100 - description: 'The names of the artists to return', 2099 + type: "string", 2100 + description: "The names of the artists to return", 2101 2101 }, 2102 2102 genre: { 2103 - type: 'string', 2104 - description: 'The genre to filter artists by', 2103 + type: "string", 2104 + description: "The genre to filter artists by", 2105 2105 }, 2106 2106 }, 2107 2107 }, 2108 2108 output: { 2109 - encoding: 'application/json', 2109 + encoding: "application/json", 2110 2110 schema: { 2111 - type: 'object', 2111 + type: "object", 2112 2112 properties: { 2113 2113 artists: { 2114 - type: 'array', 2114 + type: "array", 2115 2115 items: { 2116 - type: 'ref', 2117 - ref: 'lex:app.rocksky.artist.defs#artistViewBasic', 2116 + type: "ref", 2117 + ref: "lex:app.rocksky.artist.defs#artistViewBasic", 2118 2118 }, 2119 2119 }, 2120 2120 }, ··· 2125 2125 }, 2126 2126 AppRockskyArtistGetArtistTracks: { 2127 2127 lexicon: 1, 2128 - id: 'app.rocksky.artist.getArtistTracks', 2128 + id: "app.rocksky.artist.getArtistTracks", 2129 2129 defs: { 2130 2130 main: { 2131 - type: 'query', 2131 + type: "query", 2132 2132 description: "Get artist's tracks", 2133 2133 parameters: { 2134 - type: 'params', 2134 + type: "params", 2135 2135 properties: { 2136 2136 uri: { 2137 - type: 'string', 2138 - description: 'The URI of the artist to retrieve albums from', 2139 - format: 'at-uri', 2137 + type: "string", 2138 + description: "The URI of the artist to retrieve albums from", 2139 + format: "at-uri", 2140 2140 }, 2141 2141 limit: { 2142 - type: 'integer', 2143 - description: 'The maximum number of tracks to return', 2142 + type: "integer", 2143 + description: "The maximum number of tracks to return", 2144 2144 minimum: 1, 2145 2145 }, 2146 2146 offset: { 2147 - type: 'integer', 2148 - description: 'The offset for pagination', 2147 + type: "integer", 2148 + description: "The offset for pagination", 2149 2149 minimum: 0, 2150 2150 }, 2151 2151 }, 2152 2152 }, 2153 2153 output: { 2154 - encoding: 'application/json', 2154 + encoding: "application/json", 2155 2155 schema: { 2156 - type: 'object', 2156 + type: "object", 2157 2157 properties: { 2158 2158 tracks: { 2159 - type: 'array', 2159 + type: "array", 2160 2160 items: { 2161 - type: 'ref', 2162 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 2161 + type: "ref", 2162 + ref: "lex:app.rocksky.song.defs#songViewBasic", 2163 2163 }, 2164 2164 }, 2165 2165 }, ··· 2170 2170 }, 2171 2171 AppRockskyChartsDefs: { 2172 2172 lexicon: 1, 2173 - id: 'app.rocksky.charts.defs', 2173 + id: "app.rocksky.charts.defs", 2174 2174 defs: { 2175 2175 chartsView: { 2176 - type: 'object', 2176 + type: "object", 2177 2177 properties: { 2178 2178 scrobbles: { 2179 - type: 'array', 2179 + type: "array", 2180 2180 items: { 2181 - type: 'ref', 2182 - ref: 'lex:app.rocksky.charts.defs#scrobbleViewBasic', 2181 + type: "ref", 2182 + ref: "lex:app.rocksky.charts.defs#scrobbleViewBasic", 2183 2183 }, 2184 2184 }, 2185 2185 }, 2186 2186 }, 2187 2187 scrobbleViewBasic: { 2188 - type: 'object', 2188 + type: "object", 2189 2189 properties: { 2190 2190 date: { 2191 - type: 'string', 2192 - description: 'The date of the scrobble.', 2193 - format: 'datetime', 2191 + type: "string", 2192 + description: "The date of the scrobble.", 2193 + format: "datetime", 2194 2194 }, 2195 2195 count: { 2196 - type: 'integer', 2197 - description: 'The number of scrobbles on this date.', 2196 + type: "integer", 2197 + description: "The number of scrobbles on this date.", 2198 2198 }, 2199 2199 }, 2200 2200 }, ··· 2202 2202 }, 2203 2203 AppRockskyChartsGetScrobblesChart: { 2204 2204 lexicon: 1, 2205 - id: 'app.rocksky.charts.getScrobblesChart', 2205 + id: "app.rocksky.charts.getScrobblesChart", 2206 2206 defs: { 2207 2207 main: { 2208 - type: 'query', 2209 - description: 'Get the scrobbles chart', 2208 + type: "query", 2209 + description: "Get the scrobbles chart", 2210 2210 parameters: { 2211 - type: 'params', 2211 + type: "params", 2212 2212 properties: { 2213 2213 did: { 2214 - type: 'string', 2215 - description: 'The DID or handle of the actor', 2216 - format: 'at-identifier', 2214 + type: "string", 2215 + description: "The DID or handle of the actor", 2216 + format: "at-identifier", 2217 2217 }, 2218 2218 artisturi: { 2219 - type: 'string', 2220 - description: 'The URI of the artist to filter by', 2221 - format: 'at-uri', 2219 + type: "string", 2220 + description: "The URI of the artist to filter by", 2221 + format: "at-uri", 2222 2222 }, 2223 2223 albumuri: { 2224 - type: 'string', 2225 - description: 'The URI of the album to filter by', 2226 - format: 'at-uri', 2224 + type: "string", 2225 + description: "The URI of the album to filter by", 2226 + format: "at-uri", 2227 2227 }, 2228 2228 songuri: { 2229 - type: 'string', 2230 - description: 'The URI of the track to filter by', 2231 - format: 'at-uri', 2229 + type: "string", 2230 + description: "The URI of the track to filter by", 2231 + format: "at-uri", 2232 + }, 2233 + genre: { 2234 + type: "string", 2235 + description: "The genre to filter by", 2232 2236 }, 2233 2237 }, 2234 2238 }, 2235 2239 output: { 2236 - encoding: 'application/json', 2240 + encoding: "application/json", 2237 2241 schema: { 2238 - type: 'ref', 2239 - ref: 'lex:app.rocksky.charts.defs#chartsView', 2242 + type: "ref", 2243 + ref: "lex:app.rocksky.charts.defs#chartsView", 2240 2244 }, 2241 2245 }, 2242 2246 }, ··· 2244 2248 }, 2245 2249 AppRockskyDropboxDefs: { 2246 2250 lexicon: 1, 2247 - id: 'app.rocksky.dropbox.defs', 2251 + id: "app.rocksky.dropbox.defs", 2248 2252 defs: { 2249 2253 fileView: { 2250 - type: 'object', 2254 + type: "object", 2251 2255 properties: { 2252 2256 id: { 2253 - type: 'string', 2254 - description: 'The unique identifier of the file.', 2257 + type: "string", 2258 + description: "The unique identifier of the file.", 2255 2259 }, 2256 2260 name: { 2257 - type: 'string', 2258 - description: 'The name of the file.', 2261 + type: "string", 2262 + description: "The name of the file.", 2259 2263 }, 2260 2264 pathLower: { 2261 - type: 'string', 2262 - description: 'The lowercased path of the file.', 2265 + type: "string", 2266 + description: "The lowercased path of the file.", 2263 2267 }, 2264 2268 pathDisplay: { 2265 - type: 'string', 2266 - description: 'The display path of the file.', 2269 + type: "string", 2270 + description: "The display path of the file.", 2267 2271 }, 2268 2272 clientModified: { 2269 - type: 'string', 2273 + type: "string", 2270 2274 description: 2271 - 'The last modified date and time of the file on the client.', 2272 - format: 'datetime', 2275 + "The last modified date and time of the file on the client.", 2276 + format: "datetime", 2273 2277 }, 2274 2278 serverModified: { 2275 - type: 'string', 2279 + type: "string", 2276 2280 description: 2277 - 'The last modified date and time of the file on the server.', 2278 - format: 'datetime', 2281 + "The last modified date and time of the file on the server.", 2282 + format: "datetime", 2279 2283 }, 2280 2284 }, 2281 2285 }, 2282 2286 fileListView: { 2283 - type: 'object', 2287 + type: "object", 2284 2288 properties: { 2285 2289 files: { 2286 - type: 'array', 2287 - description: 'A list of files in the Dropbox.', 2290 + type: "array", 2291 + description: "A list of files in the Dropbox.", 2288 2292 items: { 2289 - type: 'ref', 2290 - ref: 'lex:app.rocksky.dropbox.defs#fileView', 2293 + type: "ref", 2294 + ref: "lex:app.rocksky.dropbox.defs#fileView", 2291 2295 }, 2292 2296 }, 2293 2297 }, 2294 2298 }, 2295 2299 temporaryLinkView: { 2296 - type: 'object', 2300 + type: "object", 2297 2301 properties: { 2298 2302 link: { 2299 - type: 'string', 2300 - description: 'The temporary link to access the file.', 2301 - format: 'uri', 2303 + type: "string", 2304 + description: "The temporary link to access the file.", 2305 + format: "uri", 2302 2306 }, 2303 2307 }, 2304 2308 }, ··· 2306 2310 }, 2307 2311 AppRockskyDropboxDownloadFile: { 2308 2312 lexicon: 1, 2309 - id: 'app.rocksky.dropbox.downloadFile', 2313 + id: "app.rocksky.dropbox.downloadFile", 2310 2314 defs: { 2311 2315 main: { 2312 - type: 'query', 2313 - description: 'Download a file from Dropbox by its unique identifier', 2316 + type: "query", 2317 + description: "Download a file from Dropbox by its unique identifier", 2314 2318 parameters: { 2315 - type: 'params', 2316 - required: ['fileId'], 2319 + type: "params", 2320 + required: ["fileId"], 2317 2321 properties: { 2318 2322 fileId: { 2319 - type: 'string', 2320 - description: 'The unique identifier of the file to download', 2323 + type: "string", 2324 + description: "The unique identifier of the file to download", 2321 2325 }, 2322 2326 }, 2323 2327 }, 2324 2328 output: { 2325 - encoding: 'application/octet-stream', 2329 + encoding: "application/octet-stream", 2326 2330 }, 2327 2331 }, 2328 2332 }, 2329 2333 }, 2330 2334 AppRockskyDropboxGetFiles: { 2331 2335 lexicon: 1, 2332 - id: 'app.rocksky.dropbox.getFiles', 2336 + id: "app.rocksky.dropbox.getFiles", 2333 2337 defs: { 2334 2338 main: { 2335 - type: 'query', 2336 - description: 'Retrieve a list of files from Dropbox', 2339 + type: "query", 2340 + description: "Retrieve a list of files from Dropbox", 2337 2341 parameters: { 2338 - type: 'params', 2342 + type: "params", 2339 2343 properties: { 2340 2344 at: { 2341 - type: 'string', 2342 - description: 'Path to the Dropbox folder or root directory', 2345 + type: "string", 2346 + description: "Path to the Dropbox folder or root directory", 2343 2347 }, 2344 2348 }, 2345 2349 }, 2346 2350 output: { 2347 - encoding: 'application/json', 2351 + encoding: "application/json", 2348 2352 schema: { 2349 - type: 'ref', 2350 - ref: 'lex:app.rocksky.dropbox.defs#fileListView', 2353 + type: "ref", 2354 + ref: "lex:app.rocksky.dropbox.defs#fileListView", 2351 2355 }, 2352 2356 }, 2353 2357 }, ··· 2355 2359 }, 2356 2360 AppRockskyDropboxGetMetadata: { 2357 2361 lexicon: 1, 2358 - id: 'app.rocksky.dropbox.getMetadata', 2362 + id: "app.rocksky.dropbox.getMetadata", 2359 2363 defs: { 2360 2364 main: { 2361 - type: 'query', 2362 - description: 'Retrieve metadata of a file or folder in Dropbox', 2365 + type: "query", 2366 + description: "Retrieve metadata of a file or folder in Dropbox", 2363 2367 parameters: { 2364 - type: 'params', 2365 - required: ['path'], 2368 + type: "params", 2369 + required: ["path"], 2366 2370 properties: { 2367 2371 path: { 2368 - type: 'string', 2369 - description: 'Path to the file or folder in Dropbox', 2372 + type: "string", 2373 + description: "Path to the file or folder in Dropbox", 2370 2374 }, 2371 2375 }, 2372 2376 }, 2373 2377 output: { 2374 - encoding: 'application/json', 2378 + encoding: "application/json", 2375 2379 schema: { 2376 - type: 'ref', 2377 - ref: 'lex:app.rocksky.dropbox.defs#fileView', 2380 + type: "ref", 2381 + ref: "lex:app.rocksky.dropbox.defs#fileView", 2378 2382 }, 2379 2383 }, 2380 2384 }, ··· 2382 2386 }, 2383 2387 AppRockskyDropboxGetTemporaryLink: { 2384 2388 lexicon: 1, 2385 - id: 'app.rocksky.dropbox.getTemporaryLink', 2389 + id: "app.rocksky.dropbox.getTemporaryLink", 2386 2390 defs: { 2387 2391 main: { 2388 - type: 'query', 2389 - description: 'Retrieve a temporary link to access a file in Dropbox', 2392 + type: "query", 2393 + description: "Retrieve a temporary link to access a file in Dropbox", 2390 2394 parameters: { 2391 - type: 'params', 2392 - required: ['path'], 2395 + type: "params", 2396 + required: ["path"], 2393 2397 properties: { 2394 2398 path: { 2395 - type: 'string', 2396 - description: 'Path to the file in Dropbox', 2399 + type: "string", 2400 + description: "Path to the file in Dropbox", 2397 2401 }, 2398 2402 }, 2399 2403 }, 2400 2404 output: { 2401 - encoding: 'application/json', 2405 + encoding: "application/json", 2402 2406 schema: { 2403 - type: 'ref', 2404 - ref: 'lex:app.rocksky.dropbox.defs#temporaryLinkView', 2407 + type: "ref", 2408 + ref: "lex:app.rocksky.dropbox.defs#temporaryLinkView", 2405 2409 }, 2406 2410 }, 2407 2411 }, ··· 2409 2413 }, 2410 2414 AppRockskyFeedDefs: { 2411 2415 lexicon: 1, 2412 - id: 'app.rocksky.feed.defs', 2416 + id: "app.rocksky.feed.defs", 2413 2417 defs: { 2414 2418 searchResultsView: { 2415 - type: 'object', 2419 + type: "object", 2416 2420 properties: { 2417 2421 hits: { 2418 - type: 'array', 2422 + type: "array", 2419 2423 items: { 2420 - type: 'union', 2424 + type: "union", 2421 2425 refs: [ 2422 - 'lex:app.rocksky.song.defs#songViewBasic', 2423 - 'lex:app.rocksky.album.defs#albumViewBasic', 2424 - 'lex:app.rocksky.artist.defs#artistViewBasic', 2425 - 'lex:app.rocksky.playlist.defs#playlistViewBasic', 2426 - 'lex:app.rocksky.actor.defs#profileViewBasic', 2426 + "lex:app.rocksky.song.defs#songViewBasic", 2427 + "lex:app.rocksky.album.defs#albumViewBasic", 2428 + "lex:app.rocksky.artist.defs#artistViewBasic", 2429 + "lex:app.rocksky.playlist.defs#playlistViewBasic", 2430 + "lex:app.rocksky.actor.defs#profileViewBasic", 2427 2431 ], 2428 2432 }, 2429 2433 }, 2430 2434 processingTimeMs: { 2431 - type: 'integer', 2435 + type: "integer", 2432 2436 }, 2433 2437 limit: { 2434 - type: 'integer', 2438 + type: "integer", 2435 2439 }, 2436 2440 offset: { 2437 - type: 'integer', 2441 + type: "integer", 2438 2442 }, 2439 2443 estimatedTotalHits: { 2440 - type: 'integer', 2444 + type: "integer", 2441 2445 }, 2442 2446 }, 2443 2447 }, 2444 2448 nowPlayingView: { 2445 - type: 'object', 2449 + type: "object", 2446 2450 properties: { 2447 2451 album: { 2448 - type: 'string', 2452 + type: "string", 2449 2453 }, 2450 2454 albumArt: { 2451 - type: 'string', 2452 - format: 'uri', 2455 + type: "string", 2456 + format: "uri", 2453 2457 }, 2454 2458 albumArtist: { 2455 - type: 'string', 2459 + type: "string", 2456 2460 }, 2457 2461 albumUri: { 2458 - type: 'string', 2459 - format: 'at-uri', 2462 + type: "string", 2463 + format: "at-uri", 2460 2464 }, 2461 2465 artist: { 2462 - type: 'string', 2466 + type: "string", 2463 2467 }, 2464 2468 artistUri: { 2465 - type: 'string', 2466 - format: 'at-uri', 2469 + type: "string", 2470 + format: "at-uri", 2467 2471 }, 2468 2472 avatar: { 2469 - type: 'string', 2470 - format: 'uri', 2473 + type: "string", 2474 + format: "uri", 2471 2475 }, 2472 2476 createdAt: { 2473 - type: 'string', 2477 + type: "string", 2474 2478 }, 2475 2479 did: { 2476 - type: 'string', 2477 - format: 'at-identifier', 2480 + type: "string", 2481 + format: "at-identifier", 2478 2482 }, 2479 2483 handle: { 2480 - type: 'string', 2484 + type: "string", 2481 2485 }, 2482 2486 id: { 2483 - type: 'string', 2487 + type: "string", 2484 2488 }, 2485 2489 title: { 2486 - type: 'string', 2490 + type: "string", 2487 2491 }, 2488 2492 trackId: { 2489 - type: 'string', 2493 + type: "string", 2490 2494 }, 2491 2495 trackUri: { 2492 - type: 'string', 2493 - format: 'at-uri', 2496 + type: "string", 2497 + format: "at-uri", 2494 2498 }, 2495 2499 uri: { 2496 - type: 'string', 2497 - format: 'at-uri', 2500 + type: "string", 2501 + format: "at-uri", 2498 2502 }, 2499 2503 }, 2500 2504 }, 2501 2505 nowPlayingsView: { 2502 - type: 'object', 2506 + type: "object", 2503 2507 properties: { 2504 2508 nowPlayings: { 2505 - type: 'array', 2509 + type: "array", 2506 2510 items: { 2507 - type: 'ref', 2508 - ref: 'lex:app.rocksky.feed.defs#nowPlayingView', 2511 + type: "ref", 2512 + ref: "lex:app.rocksky.feed.defs#nowPlayingView", 2509 2513 }, 2510 2514 }, 2511 2515 }, 2512 2516 }, 2513 2517 feedGeneratorsView: { 2514 - type: 'object', 2518 + type: "object", 2515 2519 properties: { 2516 2520 feeds: { 2517 - type: 'array', 2521 + type: "array", 2518 2522 items: { 2519 - type: 'ref', 2520 - ref: 'lex:app.rocksky.feed.defs#feedGeneratorView', 2523 + type: "ref", 2524 + ref: "lex:app.rocksky.feed.defs#feedGeneratorView", 2521 2525 }, 2522 2526 }, 2523 2527 }, 2524 2528 }, 2525 2529 feedGeneratorView: { 2526 - type: 'object', 2530 + type: "object", 2527 2531 properties: { 2528 2532 id: { 2529 - type: 'string', 2533 + type: "string", 2530 2534 }, 2531 2535 name: { 2532 - type: 'string', 2536 + type: "string", 2533 2537 }, 2534 2538 description: { 2535 - type: 'string', 2539 + type: "string", 2536 2540 }, 2537 2541 uri: { 2538 - type: 'string', 2539 - format: 'at-uri', 2542 + type: "string", 2543 + format: "at-uri", 2540 2544 }, 2541 2545 avatar: { 2542 - type: 'string', 2543 - format: 'uri', 2546 + type: "string", 2547 + format: "uri", 2544 2548 }, 2545 2549 creator: { 2546 - type: 'ref', 2547 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 2550 + type: "ref", 2551 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 2548 2552 }, 2549 2553 }, 2550 2554 }, 2551 2555 feedUriView: { 2552 - type: 'object', 2556 + type: "object", 2553 2557 properties: { 2554 2558 uri: { 2555 - type: 'string', 2556 - description: 'The feed URI.', 2557 - format: 'at-uri', 2559 + type: "string", 2560 + description: "The feed URI.", 2561 + format: "at-uri", 2558 2562 }, 2559 2563 }, 2560 2564 }, 2561 2565 feedItemView: { 2562 - type: 'object', 2566 + type: "object", 2563 2567 properties: { 2564 2568 scrobble: { 2565 - type: 'ref', 2566 - ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic', 2569 + type: "ref", 2570 + ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic", 2567 2571 }, 2568 2572 }, 2569 2573 }, 2570 2574 feedView: { 2571 - type: 'object', 2575 + type: "object", 2572 2576 properties: { 2573 2577 feed: { 2574 - type: 'array', 2578 + type: "array", 2575 2579 items: { 2576 - type: 'ref', 2577 - ref: 'lex:app.rocksky.feed.defs#feedItemView', 2580 + type: "ref", 2581 + ref: "lex:app.rocksky.feed.defs#feedItemView", 2578 2582 }, 2579 2583 }, 2580 2584 cursor: { 2581 - type: 'string', 2582 - description: 'The pagination cursor for the next set of results.', 2585 + type: "string", 2586 + description: "The pagination cursor for the next set of results.", 2583 2587 }, 2584 2588 }, 2585 2589 }, ··· 2587 2591 }, 2588 2592 AppRockskyFeedDescribeFeedGenerator: { 2589 2593 lexicon: 1, 2590 - id: 'app.rocksky.feed.describeFeedGenerator', 2594 + id: "app.rocksky.feed.describeFeedGenerator", 2591 2595 defs: { 2592 2596 main: { 2593 - type: 'query', 2594 - description: 'Get information about a feed generator', 2597 + type: "query", 2598 + description: "Get information about a feed generator", 2595 2599 parameters: { 2596 - type: 'params', 2600 + type: "params", 2597 2601 properties: {}, 2598 2602 }, 2599 2603 output: { 2600 - encoding: 'application/json', 2604 + encoding: "application/json", 2601 2605 schema: { 2602 - type: 'object', 2606 + type: "object", 2603 2607 properties: { 2604 2608 did: { 2605 - type: 'string', 2606 - description: 'The DID of the feed generator.', 2607 - format: 'at-identifier', 2609 + type: "string", 2610 + description: "The DID of the feed generator.", 2611 + format: "at-identifier", 2608 2612 }, 2609 2613 feeds: { 2610 - type: 'array', 2614 + type: "array", 2611 2615 description: 2612 - 'List of feed URIs generated by this feed generator.', 2616 + "List of feed URIs generated by this feed generator.", 2613 2617 items: { 2614 - type: 'ref', 2615 - ref: 'lex:app.rocksky.feed.defs#feedUriView', 2618 + type: "ref", 2619 + ref: "lex:app.rocksky.feed.defs#feedUriView", 2616 2620 }, 2617 2621 }, 2618 2622 }, ··· 2623 2627 }, 2624 2628 AppRockskyFeedGenerator: { 2625 2629 lexicon: 1, 2626 - id: 'app.rocksky.feed.generator', 2630 + id: "app.rocksky.feed.generator", 2627 2631 defs: { 2628 2632 main: { 2629 - type: 'record', 2633 + type: "record", 2630 2634 description: 2631 - 'Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.', 2632 - key: 'tid', 2635 + "Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.", 2636 + key: "tid", 2633 2637 record: { 2634 - type: 'object', 2635 - required: ['did', 'displayName', 'createdAt'], 2638 + type: "object", 2639 + required: ["did", "displayName", "createdAt"], 2636 2640 properties: { 2637 2641 did: { 2638 - type: 'string', 2639 - format: 'did', 2642 + type: "string", 2643 + format: "did", 2640 2644 }, 2641 2645 avatar: { 2642 - type: 'blob', 2643 - accept: ['image/png', 'image/jpeg'], 2646 + type: "blob", 2647 + accept: ["image/png", "image/jpeg"], 2644 2648 maxSize: 1000000, 2645 2649 }, 2646 2650 displayName: { 2647 - type: 'string', 2651 + type: "string", 2648 2652 maxGraphemes: 24, 2649 2653 maxLength: 240, 2650 2654 }, 2651 2655 description: { 2652 - type: 'string', 2656 + type: "string", 2653 2657 maxGraphemes: 300, 2654 2658 maxLength: 3000, 2655 2659 }, 2656 2660 createdAt: { 2657 - type: 'string', 2658 - format: 'datetime', 2661 + type: "string", 2662 + format: "datetime", 2659 2663 }, 2660 2664 }, 2661 2665 }, ··· 2664 2668 }, 2665 2669 AppRockskyFeedGetFeed: { 2666 2670 lexicon: 1, 2667 - id: 'app.rocksky.feed.getFeed', 2671 + id: "app.rocksky.feed.getFeed", 2668 2672 defs: { 2669 2673 main: { 2670 - type: 'query', 2671 - description: 'Get the feed by uri', 2674 + type: "query", 2675 + description: "Get the feed by uri", 2672 2676 parameters: { 2673 - type: 'params', 2674 - required: ['feed'], 2677 + type: "params", 2678 + required: ["feed"], 2675 2679 properties: { 2676 2680 feed: { 2677 - type: 'string', 2678 - description: 'The feed URI.', 2679 - format: 'at-uri', 2681 + type: "string", 2682 + description: "The feed URI.", 2683 + format: "at-uri", 2680 2684 }, 2681 2685 limit: { 2682 - type: 'integer', 2683 - description: 'The maximum number of scrobbles to return', 2686 + type: "integer", 2687 + description: "The maximum number of scrobbles to return", 2684 2688 minimum: 1, 2685 2689 }, 2686 2690 cursor: { 2687 - type: 'string', 2688 - description: 'The cursor for pagination', 2691 + type: "string", 2692 + description: "The cursor for pagination", 2689 2693 }, 2690 2694 }, 2691 2695 }, 2692 2696 output: { 2693 - encoding: 'application/json', 2697 + encoding: "application/json", 2694 2698 schema: { 2695 - type: 'ref', 2696 - ref: 'lex:app.rocksky.feed.defs#feedView', 2699 + type: "ref", 2700 + ref: "lex:app.rocksky.feed.defs#feedView", 2697 2701 }, 2698 2702 }, 2699 2703 }, ··· 2701 2705 }, 2702 2706 AppRockskyFeedGetFeedGenerator: { 2703 2707 lexicon: 1, 2704 - id: 'app.rocksky.feed.getFeedGenerator', 2708 + id: "app.rocksky.feed.getFeedGenerator", 2705 2709 defs: { 2706 2710 main: { 2707 - type: 'query', 2708 - description: 'Get information about a feed generator', 2711 + type: "query", 2712 + description: "Get information about a feed generator", 2709 2713 parameters: { 2710 - type: 'params', 2711 - required: ['feed'], 2714 + type: "params", 2715 + required: ["feed"], 2712 2716 properties: { 2713 2717 feed: { 2714 - type: 'string', 2715 - description: 'AT-URI of the feed generator record.', 2716 - format: 'at-uri', 2718 + type: "string", 2719 + description: "AT-URI of the feed generator record.", 2720 + format: "at-uri", 2717 2721 }, 2718 2722 }, 2719 2723 }, 2720 2724 output: { 2721 - encoding: 'application/json', 2725 + encoding: "application/json", 2722 2726 schema: { 2723 - type: 'object', 2727 + type: "object", 2724 2728 properties: { 2725 2729 view: { 2726 - type: 'ref', 2727 - ref: 'lex:app.rocksky.feed.defs#feedGeneratorView', 2730 + type: "ref", 2731 + ref: "lex:app.rocksky.feed.defs#feedGeneratorView", 2728 2732 }, 2729 2733 }, 2730 2734 }, ··· 2734 2738 }, 2735 2739 AppRockskyFeedGetFeedGenerators: { 2736 2740 lexicon: 1, 2737 - id: 'app.rocksky.feed.getFeedGenerators', 2741 + id: "app.rocksky.feed.getFeedGenerators", 2738 2742 defs: { 2739 2743 main: { 2740 - type: 'query', 2741 - description: 'Get all feed generators', 2744 + type: "query", 2745 + description: "Get all feed generators", 2742 2746 parameters: { 2743 - type: 'params', 2747 + type: "params", 2744 2748 properties: { 2745 2749 size: { 2746 - type: 'integer', 2747 - description: 'The maximum number of feed generators to return.', 2750 + type: "integer", 2751 + description: "The maximum number of feed generators to return.", 2748 2752 minimum: 1, 2749 2753 }, 2750 2754 }, 2751 2755 }, 2752 2756 output: { 2753 - encoding: 'application/json', 2757 + encoding: "application/json", 2754 2758 schema: { 2755 - type: 'ref', 2756 - ref: 'lex:app.rocksky.feed.defs#feedGeneratorsView', 2759 + type: "ref", 2760 + ref: "lex:app.rocksky.feed.defs#feedGeneratorsView", 2757 2761 }, 2758 2762 }, 2759 2763 }, ··· 2761 2765 }, 2762 2766 AppRockskyFeedGetFeedSkeleton: { 2763 2767 lexicon: 1, 2764 - id: 'app.rocksky.feed.getFeedSkeleton', 2768 + id: "app.rocksky.feed.getFeedSkeleton", 2765 2769 defs: { 2766 2770 main: { 2767 - type: 'query', 2768 - description: 'Get the feed by uri', 2771 + type: "query", 2772 + description: "Get the feed by uri", 2769 2773 parameters: { 2770 - type: 'params', 2771 - required: ['feed'], 2774 + type: "params", 2775 + required: ["feed"], 2772 2776 properties: { 2773 2777 feed: { 2774 - type: 'string', 2775 - description: 'The feed URI.', 2776 - format: 'at-uri', 2778 + type: "string", 2779 + description: "The feed URI.", 2780 + format: "at-uri", 2777 2781 }, 2778 2782 limit: { 2779 - type: 'integer', 2780 - description: 'The maximum number of scrobbles to return', 2783 + type: "integer", 2784 + description: "The maximum number of scrobbles to return", 2781 2785 minimum: 1, 2782 2786 }, 2783 2787 offset: { 2784 - type: 'integer', 2785 - description: 'The offset for pagination', 2788 + type: "integer", 2789 + description: "The offset for pagination", 2786 2790 minimum: 0, 2787 2791 }, 2788 2792 cursor: { 2789 - type: 'string', 2790 - description: 'The pagination cursor.', 2793 + type: "string", 2794 + description: "The pagination cursor.", 2791 2795 }, 2792 2796 }, 2793 2797 }, 2794 2798 output: { 2795 - encoding: 'application/json', 2799 + encoding: "application/json", 2796 2800 schema: { 2797 - type: 'object', 2801 + type: "object", 2798 2802 properties: { 2799 2803 scrobbles: { 2800 - type: 'array', 2804 + type: "array", 2801 2805 items: { 2802 - type: 'ref', 2803 - ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic', 2806 + type: "ref", 2807 + ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic", 2804 2808 }, 2805 2809 }, 2806 2810 cursor: { 2807 - type: 'string', 2811 + type: "string", 2808 2812 description: 2809 - 'The pagination cursor for the next set of results.', 2813 + "The pagination cursor for the next set of results.", 2810 2814 }, 2811 2815 }, 2812 2816 }, ··· 2816 2820 }, 2817 2821 AppRockskyFeedGetNowPlayings: { 2818 2822 lexicon: 1, 2819 - id: 'app.rocksky.feed.getNowPlayings', 2823 + id: "app.rocksky.feed.getNowPlayings", 2820 2824 defs: { 2821 2825 main: { 2822 - type: 'query', 2823 - description: 'Get all currently playing tracks by users', 2826 + type: "query", 2827 + description: "Get all currently playing tracks by users", 2824 2828 parameters: { 2825 - type: 'params', 2829 + type: "params", 2826 2830 properties: { 2827 2831 size: { 2828 - type: 'integer', 2832 + type: "integer", 2829 2833 description: 2830 - 'The maximum number of now playing tracks to return.', 2834 + "The maximum number of now playing tracks to return.", 2831 2835 minimum: 1, 2832 2836 }, 2833 2837 }, 2834 2838 }, 2835 2839 output: { 2836 - encoding: 'application/json', 2840 + encoding: "application/json", 2837 2841 schema: { 2838 - type: 'ref', 2839 - ref: 'lex:app.rocksky.feed.defs#nowPlayingsView', 2842 + type: "ref", 2843 + ref: "lex:app.rocksky.feed.defs#nowPlayingsView", 2840 2844 }, 2841 2845 }, 2842 2846 }, ··· 2844 2848 }, 2845 2849 AppRockskyFeedSearch: { 2846 2850 lexicon: 1, 2847 - id: 'app.rocksky.feed.search', 2851 + id: "app.rocksky.feed.search", 2848 2852 defs: { 2849 2853 main: { 2850 - type: 'query', 2851 - description: 'Search for content in the feed', 2854 + type: "query", 2855 + description: "Search for content in the feed", 2852 2856 parameters: { 2853 - type: 'params', 2854 - required: ['query'], 2857 + type: "params", 2858 + required: ["query"], 2855 2859 properties: { 2856 2860 query: { 2857 - type: 'string', 2858 - description: 'The search query string', 2861 + type: "string", 2862 + description: "The search query string", 2859 2863 }, 2860 2864 }, 2861 2865 }, 2862 2866 output: { 2863 - encoding: 'application/json', 2867 + encoding: "application/json", 2864 2868 schema: { 2865 - type: 'ref', 2866 - ref: 'lex:app.rocksky.feed.defs#searchResultsView', 2869 + type: "ref", 2870 + ref: "lex:app.rocksky.feed.defs#searchResultsView", 2867 2871 }, 2868 2872 }, 2869 2873 }, ··· 2871 2875 }, 2872 2876 AppRockskyGoogledriveDefs: { 2873 2877 lexicon: 1, 2874 - id: 'app.rocksky.googledrive.defs', 2878 + id: "app.rocksky.googledrive.defs", 2875 2879 defs: { 2876 2880 fileView: { 2877 - type: 'object', 2881 + type: "object", 2878 2882 properties: { 2879 2883 id: { 2880 - type: 'string', 2881 - description: 'The unique identifier of the file.', 2884 + type: "string", 2885 + description: "The unique identifier of the file.", 2882 2886 }, 2883 2887 }, 2884 2888 }, 2885 2889 fileListView: { 2886 - type: 'object', 2890 + type: "object", 2887 2891 properties: { 2888 2892 files: { 2889 - type: 'array', 2893 + type: "array", 2890 2894 items: { 2891 - type: 'ref', 2892 - ref: 'lex:app.rocksky.googledrive.defs#fileView', 2895 + type: "ref", 2896 + ref: "lex:app.rocksky.googledrive.defs#fileView", 2893 2897 }, 2894 2898 }, 2895 2899 }, ··· 2898 2902 }, 2899 2903 AppRockskyGoogledriveDownloadFile: { 2900 2904 lexicon: 1, 2901 - id: 'app.rocksky.googledrive.downloadFile', 2905 + id: "app.rocksky.googledrive.downloadFile", 2902 2906 defs: { 2903 2907 main: { 2904 - type: 'query', 2908 + type: "query", 2905 2909 description: 2906 - 'Download a file from Google Drive by its unique identifier', 2910 + "Download a file from Google Drive by its unique identifier", 2907 2911 parameters: { 2908 - type: 'params', 2909 - required: ['fileId'], 2912 + type: "params", 2913 + required: ["fileId"], 2910 2914 properties: { 2911 2915 fileId: { 2912 - type: 'string', 2913 - description: 'The unique identifier of the file to download', 2916 + type: "string", 2917 + description: "The unique identifier of the file to download", 2914 2918 }, 2915 2919 }, 2916 2920 }, 2917 2921 output: { 2918 - encoding: 'application/octet-stream', 2922 + encoding: "application/octet-stream", 2919 2923 }, 2920 2924 }, 2921 2925 }, 2922 2926 }, 2923 2927 AppRockskyGoogledriveGetFile: { 2924 2928 lexicon: 1, 2925 - id: 'app.rocksky.googledrive.getFile', 2929 + id: "app.rocksky.googledrive.getFile", 2926 2930 defs: { 2927 2931 main: { 2928 - type: 'query', 2929 - description: 'Get a file from Google Drive by its unique identifier', 2932 + type: "query", 2933 + description: "Get a file from Google Drive by its unique identifier", 2930 2934 parameters: { 2931 - type: 'params', 2932 - required: ['fileId'], 2935 + type: "params", 2936 + required: ["fileId"], 2933 2937 properties: { 2934 2938 fileId: { 2935 - type: 'string', 2936 - description: 'The unique identifier of the file to retrieve', 2939 + type: "string", 2940 + description: "The unique identifier of the file to retrieve", 2937 2941 }, 2938 2942 }, 2939 2943 }, 2940 2944 output: { 2941 - encoding: 'application/json', 2945 + encoding: "application/json", 2942 2946 schema: { 2943 - type: 'ref', 2944 - ref: 'lex:app.rocksky.googledrive.defs#fileView', 2947 + type: "ref", 2948 + ref: "lex:app.rocksky.googledrive.defs#fileView", 2945 2949 }, 2946 2950 }, 2947 2951 }, ··· 2949 2953 }, 2950 2954 AppRockskyGoogledriveGetFiles: { 2951 2955 lexicon: 1, 2952 - id: 'app.rocksky.googledrive.getFiles', 2956 + id: "app.rocksky.googledrive.getFiles", 2953 2957 defs: { 2954 2958 main: { 2955 - type: 'query', 2956 - description: 'Get a list of files from Google Drive', 2959 + type: "query", 2960 + description: "Get a list of files from Google Drive", 2957 2961 parameters: { 2958 - type: 'params', 2962 + type: "params", 2959 2963 properties: { 2960 2964 at: { 2961 - type: 'string', 2962 - description: 'Path to the Google Drive folder or root directory', 2965 + type: "string", 2966 + description: "Path to the Google Drive folder or root directory", 2963 2967 }, 2964 2968 }, 2965 2969 }, 2966 2970 output: { 2967 - encoding: 'application/json', 2971 + encoding: "application/json", 2968 2972 schema: { 2969 - type: 'ref', 2970 - ref: 'lex:app.rocksky.googledrive.defs#fileListView', 2973 + type: "ref", 2974 + ref: "lex:app.rocksky.googledrive.defs#fileListView", 2971 2975 }, 2972 2976 }, 2973 2977 }, ··· 2975 2979 }, 2976 2980 AppRockskyGraphDefs: { 2977 2981 lexicon: 1, 2978 - id: 'app.rocksky.graph.defs', 2982 + id: "app.rocksky.graph.defs", 2979 2983 defs: { 2980 2984 notFoundActor: { 2981 - type: 'object', 2982 - description: 'indicates that a handle or DID could not be resolved', 2983 - required: ['actor', 'notFound'], 2985 + type: "object", 2986 + description: "indicates that a handle or DID could not be resolved", 2987 + required: ["actor", "notFound"], 2984 2988 properties: { 2985 2989 actor: { 2986 - type: 'string', 2987 - format: 'at-identifier', 2990 + type: "string", 2991 + format: "at-identifier", 2988 2992 }, 2989 2993 notFound: { 2990 - type: 'boolean', 2994 + type: "boolean", 2991 2995 }, 2992 2996 }, 2993 2997 }, 2994 2998 relationship: { 2995 - type: 'object', 2996 - required: ['did'], 2999 + type: "object", 3000 + required: ["did"], 2997 3001 properties: { 2998 3002 did: { 2999 - type: 'string', 3000 - format: 'did', 3003 + type: "string", 3004 + format: "did", 3001 3005 }, 3002 3006 following: { 3003 - type: 'string', 3007 + type: "string", 3004 3008 description: 3005 - 'if the actor follows this DID, this is the AT-URI of the follow record', 3006 - format: 'at-uri', 3009 + "if the actor follows this DID, this is the AT-URI of the follow record", 3010 + format: "at-uri", 3007 3011 }, 3008 3012 followedBy: { 3009 - type: 'string', 3013 + type: "string", 3010 3014 description: 3011 - 'if the actor is followed by this DID, contains the AT-URI of the follow record', 3012 - format: 'at-uri', 3015 + "if the actor is followed by this DID, contains the AT-URI of the follow record", 3016 + format: "at-uri", 3013 3017 }, 3014 3018 }, 3015 3019 }, ··· 3017 3021 }, 3018 3022 AppRockskyGraphFollow: { 3019 3023 lexicon: 1, 3020 - id: 'app.rocksky.graph.follow', 3024 + id: "app.rocksky.graph.follow", 3021 3025 defs: { 3022 3026 main: { 3023 - type: 'record', 3027 + type: "record", 3024 3028 description: 3025 3029 "Record declaring a social 'follow' relationship of another account.", 3026 - key: 'tid', 3030 + key: "tid", 3027 3031 record: { 3028 - type: 'object', 3029 - required: ['createdAt', 'subject'], 3032 + type: "object", 3033 + required: ["createdAt", "subject"], 3030 3034 properties: { 3031 3035 createdAt: { 3032 - type: 'string', 3033 - format: 'datetime', 3036 + type: "string", 3037 + format: "datetime", 3034 3038 }, 3035 3039 subject: { 3036 - type: 'string', 3037 - format: 'did', 3040 + type: "string", 3041 + format: "did", 3038 3042 }, 3039 3043 via: { 3040 - type: 'ref', 3041 - ref: 'lex:com.atproto.repo.strongRef', 3044 + type: "ref", 3045 + ref: "lex:com.atproto.repo.strongRef", 3042 3046 }, 3043 3047 }, 3044 3048 }, ··· 3047 3051 }, 3048 3052 AppRockskyGraphFollowAccount: { 3049 3053 lexicon: 1, 3050 - id: 'app.rocksky.graph.followAccount', 3054 + id: "app.rocksky.graph.followAccount", 3051 3055 defs: { 3052 3056 main: { 3053 - type: 'procedure', 3057 + type: "procedure", 3054 3058 description: 3055 3059 "Creates a 'follow' relationship from the authenticated account to a specified account.", 3056 3060 parameters: { 3057 - type: 'params', 3058 - required: ['account'], 3061 + type: "params", 3062 + required: ["account"], 3059 3063 properties: { 3060 3064 account: { 3061 - type: 'string', 3062 - format: 'at-identifier', 3065 + type: "string", 3066 + format: "at-identifier", 3063 3067 }, 3064 3068 }, 3065 3069 }, 3066 3070 output: { 3067 - encoding: 'application/json', 3071 + encoding: "application/json", 3068 3072 schema: { 3069 - type: 'object', 3070 - required: ['subject', 'followers'], 3073 + type: "object", 3074 + required: ["subject", "followers"], 3071 3075 properties: { 3072 3076 subject: { 3073 - type: 'ref', 3074 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3077 + type: "ref", 3078 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3075 3079 }, 3076 3080 followers: { 3077 - type: 'array', 3081 + type: "array", 3078 3082 items: { 3079 - type: 'ref', 3080 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3083 + type: "ref", 3084 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3081 3085 }, 3082 3086 }, 3083 3087 cursor: { 3084 - type: 'string', 3088 + type: "string", 3085 3089 description: 3086 - 'A cursor value to pass to subsequent calls to get the next page of results.', 3090 + "A cursor value to pass to subsequent calls to get the next page of results.", 3087 3091 }, 3088 3092 }, 3089 3093 }, ··· 3093 3097 }, 3094 3098 AppRockskyGraphGetFollowers: { 3095 3099 lexicon: 1, 3096 - id: 'app.rocksky.graph.getFollowers', 3100 + id: "app.rocksky.graph.getFollowers", 3097 3101 defs: { 3098 3102 main: { 3099 - type: 'query', 3103 + type: "query", 3100 3104 description: 3101 - 'Enumerates accounts which follow a specified account (actor).', 3105 + "Enumerates accounts which follow a specified account (actor).", 3102 3106 parameters: { 3103 - type: 'params', 3104 - required: ['actor'], 3107 + type: "params", 3108 + required: ["actor"], 3105 3109 properties: { 3106 3110 actor: { 3107 - type: 'string', 3108 - format: 'at-identifier', 3111 + type: "string", 3112 + format: "at-identifier", 3109 3113 }, 3110 3114 limit: { 3111 - type: 'integer', 3115 + type: "integer", 3112 3116 maximum: 100, 3113 3117 minimum: 1, 3114 3118 default: 50, 3115 3119 }, 3116 3120 dids: { 3117 - type: 'array', 3121 + type: "array", 3118 3122 description: 3119 - 'If provided, filters the followers to only include those with DIDs in this list.', 3123 + "If provided, filters the followers to only include those with DIDs in this list.", 3120 3124 items: { 3121 - type: 'string', 3122 - format: 'did', 3125 + type: "string", 3126 + format: "did", 3123 3127 }, 3124 3128 }, 3125 3129 cursor: { 3126 - type: 'string', 3130 + type: "string", 3127 3131 }, 3128 3132 }, 3129 3133 }, 3130 3134 output: { 3131 - encoding: 'application/json', 3135 + encoding: "application/json", 3132 3136 schema: { 3133 - type: 'object', 3134 - required: ['subject', 'followers'], 3137 + type: "object", 3138 + required: ["subject", "followers"], 3135 3139 properties: { 3136 3140 subject: { 3137 - type: 'ref', 3138 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3141 + type: "ref", 3142 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3139 3143 }, 3140 3144 followers: { 3141 - type: 'array', 3145 + type: "array", 3142 3146 items: { 3143 - type: 'ref', 3144 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3147 + type: "ref", 3148 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3145 3149 }, 3146 3150 }, 3147 3151 cursor: { 3148 - type: 'string', 3152 + type: "string", 3149 3153 description: 3150 - 'A cursor value to pass to subsequent calls to get the next page of results.', 3154 + "A cursor value to pass to subsequent calls to get the next page of results.", 3151 3155 }, 3152 3156 count: { 3153 - type: 'integer', 3154 - description: 'The total number of followers.', 3157 + type: "integer", 3158 + description: "The total number of followers.", 3155 3159 }, 3156 3160 }, 3157 3161 }, ··· 3161 3165 }, 3162 3166 AppRockskyGraphGetFollows: { 3163 3167 lexicon: 1, 3164 - id: 'app.rocksky.graph.getFollows', 3168 + id: "app.rocksky.graph.getFollows", 3165 3169 defs: { 3166 3170 main: { 3167 - type: 'query', 3171 + type: "query", 3168 3172 description: 3169 - 'Enumerates accounts which a specified account (actor) follows.', 3173 + "Enumerates accounts which a specified account (actor) follows.", 3170 3174 parameters: { 3171 - type: 'params', 3172 - required: ['actor'], 3175 + type: "params", 3176 + required: ["actor"], 3173 3177 properties: { 3174 3178 actor: { 3175 - type: 'string', 3176 - format: 'at-identifier', 3179 + type: "string", 3180 + format: "at-identifier", 3177 3181 }, 3178 3182 limit: { 3179 - type: 'integer', 3183 + type: "integer", 3180 3184 maximum: 100, 3181 3185 minimum: 1, 3182 3186 default: 50, 3183 3187 }, 3184 3188 dids: { 3185 - type: 'array', 3189 + type: "array", 3186 3190 description: 3187 - 'If provided, filters the follows to only include those with DIDs in this list.', 3191 + "If provided, filters the follows to only include those with DIDs in this list.", 3188 3192 items: { 3189 - type: 'string', 3190 - format: 'did', 3193 + type: "string", 3194 + format: "did", 3191 3195 }, 3192 3196 }, 3193 3197 cursor: { 3194 - type: 'string', 3198 + type: "string", 3195 3199 }, 3196 3200 }, 3197 3201 }, 3198 3202 output: { 3199 - encoding: 'application/json', 3203 + encoding: "application/json", 3200 3204 schema: { 3201 - type: 'object', 3202 - required: ['subject', 'follows'], 3205 + type: "object", 3206 + required: ["subject", "follows"], 3203 3207 properties: { 3204 3208 subject: { 3205 - type: 'ref', 3206 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3209 + type: "ref", 3210 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3207 3211 }, 3208 3212 follows: { 3209 - type: 'array', 3213 + type: "array", 3210 3214 items: { 3211 - type: 'ref', 3212 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3215 + type: "ref", 3216 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3213 3217 }, 3214 3218 }, 3215 3219 cursor: { 3216 - type: 'string', 3220 + type: "string", 3217 3221 description: 3218 - 'A cursor value to pass to subsequent calls to get the next page of results.', 3222 + "A cursor value to pass to subsequent calls to get the next page of results.", 3219 3223 }, 3220 3224 count: { 3221 - type: 'integer', 3222 - description: 'The total number of follows.', 3225 + type: "integer", 3226 + description: "The total number of follows.", 3223 3227 }, 3224 3228 }, 3225 3229 }, ··· 3229 3233 }, 3230 3234 AppRockskyGraphGetKnownFollowers: { 3231 3235 lexicon: 1, 3232 - id: 'app.rocksky.graph.getKnownFollowers', 3236 + id: "app.rocksky.graph.getKnownFollowers", 3233 3237 defs: { 3234 3238 main: { 3235 - type: 'query', 3239 + type: "query", 3236 3240 description: 3237 - 'Enumerates accounts which follow a specified account (actor) and are followed by the viewer.', 3241 + "Enumerates accounts which follow a specified account (actor) and are followed by the viewer.", 3238 3242 parameters: { 3239 - type: 'params', 3240 - required: ['actor'], 3243 + type: "params", 3244 + required: ["actor"], 3241 3245 properties: { 3242 3246 actor: { 3243 - type: 'string', 3244 - format: 'at-identifier', 3247 + type: "string", 3248 + format: "at-identifier", 3245 3249 }, 3246 3250 limit: { 3247 - type: 'integer', 3251 + type: "integer", 3248 3252 maximum: 100, 3249 3253 minimum: 1, 3250 3254 default: 50, 3251 3255 }, 3252 3256 cursor: { 3253 - type: 'string', 3257 + type: "string", 3254 3258 }, 3255 3259 }, 3256 3260 }, 3257 3261 output: { 3258 - encoding: 'application/json', 3262 + encoding: "application/json", 3259 3263 schema: { 3260 - type: 'object', 3261 - required: ['subject', 'followers'], 3264 + type: "object", 3265 + required: ["subject", "followers"], 3262 3266 properties: { 3263 3267 subject: { 3264 - type: 'ref', 3265 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3268 + type: "ref", 3269 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3266 3270 }, 3267 3271 followers: { 3268 - type: 'array', 3272 + type: "array", 3269 3273 items: { 3270 - type: 'ref', 3271 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3274 + type: "ref", 3275 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3272 3276 }, 3273 3277 }, 3274 3278 cursor: { 3275 - type: 'string', 3279 + type: "string", 3276 3280 description: 3277 - 'A cursor value to pass to subsequent calls to get the next page of results.', 3281 + "A cursor value to pass to subsequent calls to get the next page of results.", 3278 3282 }, 3279 3283 }, 3280 3284 }, ··· 3284 3288 }, 3285 3289 AppRockskyGraphUnfollowAccount: { 3286 3290 lexicon: 1, 3287 - id: 'app.rocksky.graph.unfollowAccount', 3291 + id: "app.rocksky.graph.unfollowAccount", 3288 3292 defs: { 3289 3293 main: { 3290 - type: 'procedure', 3294 + type: "procedure", 3291 3295 description: 3292 3296 "Removes a 'follow' relationship from the authenticated account to a specified account.", 3293 3297 parameters: { 3294 - type: 'params', 3295 - required: ['account'], 3298 + type: "params", 3299 + required: ["account"], 3296 3300 properties: { 3297 3301 account: { 3298 - type: 'string', 3299 - format: 'at-identifier', 3302 + type: "string", 3303 + format: "at-identifier", 3300 3304 }, 3301 3305 }, 3302 3306 }, 3303 3307 output: { 3304 - encoding: 'application/json', 3308 + encoding: "application/json", 3305 3309 schema: { 3306 - type: 'object', 3307 - required: ['subject', 'followers'], 3310 + type: "object", 3311 + required: ["subject", "followers"], 3308 3312 properties: { 3309 3313 subject: { 3310 - type: 'ref', 3311 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3314 + type: "ref", 3315 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3312 3316 }, 3313 3317 followers: { 3314 - type: 'array', 3318 + type: "array", 3315 3319 items: { 3316 - type: 'ref', 3317 - ref: 'lex:app.rocksky.actor.defs#profileViewBasic', 3320 + type: "ref", 3321 + ref: "lex:app.rocksky.actor.defs#profileViewBasic", 3318 3322 }, 3319 3323 }, 3320 3324 cursor: { 3321 - type: 'string', 3325 + type: "string", 3322 3326 description: 3323 - 'A cursor value to pass to subsequent calls to get the next page of results.', 3327 + "A cursor value to pass to subsequent calls to get the next page of results.", 3324 3328 }, 3325 3329 }, 3326 3330 }, ··· 3330 3334 }, 3331 3335 AppRockskyLikeDislikeShout: { 3332 3336 lexicon: 1, 3333 - id: 'app.rocksky.like.dislikeShout', 3337 + id: "app.rocksky.like.dislikeShout", 3334 3338 defs: { 3335 3339 main: { 3336 - type: 'procedure', 3337 - description: 'Dislike a shout', 3340 + type: "procedure", 3341 + description: "Dislike a shout", 3338 3342 input: { 3339 - encoding: 'application/json', 3343 + encoding: "application/json", 3340 3344 schema: { 3341 - type: 'object', 3345 + type: "object", 3342 3346 properties: { 3343 3347 uri: { 3344 - type: 'string', 3345 - description: 'The unique identifier of the shout to dislike', 3346 - format: 'at-uri', 3348 + type: "string", 3349 + description: "The unique identifier of the shout to dislike", 3350 + format: "at-uri", 3347 3351 }, 3348 3352 }, 3349 3353 }, 3350 3354 }, 3351 3355 output: { 3352 - encoding: 'application/json', 3356 + encoding: "application/json", 3353 3357 schema: { 3354 - type: 'ref', 3355 - ref: 'lex:app.rocksky.shout.defs#shoutView', 3358 + type: "ref", 3359 + ref: "lex:app.rocksky.shout.defs#shoutView", 3356 3360 }, 3357 3361 }, 3358 3362 }, ··· 3360 3364 }, 3361 3365 AppRockskyLikeDislikeSong: { 3362 3366 lexicon: 1, 3363 - id: 'app.rocksky.like.dislikeSong', 3367 + id: "app.rocksky.like.dislikeSong", 3364 3368 defs: { 3365 3369 main: { 3366 - type: 'procedure', 3367 - description: 'Dislike a song', 3370 + type: "procedure", 3371 + description: "Dislike a song", 3368 3372 input: { 3369 - encoding: 'application/json', 3373 + encoding: "application/json", 3370 3374 schema: { 3371 - type: 'object', 3375 + type: "object", 3372 3376 properties: { 3373 3377 uri: { 3374 - type: 'string', 3375 - description: 'The unique identifier of the song to dislike', 3376 - format: 'at-uri', 3378 + type: "string", 3379 + description: "The unique identifier of the song to dislike", 3380 + format: "at-uri", 3377 3381 }, 3378 3382 }, 3379 3383 }, 3380 3384 }, 3381 3385 output: { 3382 - encoding: 'application/json', 3386 + encoding: "application/json", 3383 3387 schema: { 3384 - type: 'ref', 3385 - ref: 'lex:app.rocksky.song.defs#songViewDetailed', 3388 + type: "ref", 3389 + ref: "lex:app.rocksky.song.defs#songViewDetailed", 3386 3390 }, 3387 3391 }, 3388 3392 }, ··· 3390 3394 }, 3391 3395 AppRockskyLike: { 3392 3396 lexicon: 1, 3393 - id: 'app.rocksky.like', 3397 + id: "app.rocksky.like", 3394 3398 defs: { 3395 3399 main: { 3396 - type: 'record', 3397 - description: 'A declaration of a like.', 3398 - key: 'tid', 3400 + type: "record", 3401 + description: "A declaration of a like.", 3402 + key: "tid", 3399 3403 record: { 3400 - type: 'object', 3401 - required: ['createdAt', 'subject'], 3404 + type: "object", 3405 + required: ["createdAt", "subject"], 3402 3406 properties: { 3403 3407 createdAt: { 3404 - type: 'string', 3405 - description: 'The date when the like was created.', 3406 - format: 'datetime', 3408 + type: "string", 3409 + description: "The date when the like was created.", 3410 + format: "datetime", 3407 3411 }, 3408 3412 subject: { 3409 - type: 'ref', 3410 - ref: 'lex:com.atproto.repo.strongRef', 3413 + type: "ref", 3414 + ref: "lex:com.atproto.repo.strongRef", 3411 3415 }, 3412 3416 }, 3413 3417 }, ··· 3416 3420 }, 3417 3421 AppRockskyLikeLikeShout: { 3418 3422 lexicon: 1, 3419 - id: 'app.rocksky.like.likeShout', 3423 + id: "app.rocksky.like.likeShout", 3420 3424 defs: { 3421 3425 main: { 3422 - type: 'procedure', 3423 - description: 'Like a shout', 3426 + type: "procedure", 3427 + description: "Like a shout", 3424 3428 input: { 3425 - encoding: 'application/json', 3429 + encoding: "application/json", 3426 3430 schema: { 3427 - type: 'object', 3431 + type: "object", 3428 3432 properties: { 3429 3433 uri: { 3430 - type: 'string', 3431 - description: 'The unique identifier of the shout to like', 3432 - format: 'at-uri', 3434 + type: "string", 3435 + description: "The unique identifier of the shout to like", 3436 + format: "at-uri", 3433 3437 }, 3434 3438 }, 3435 3439 }, 3436 3440 }, 3437 3441 output: { 3438 - encoding: 'application/json', 3442 + encoding: "application/json", 3439 3443 schema: { 3440 - type: 'ref', 3441 - ref: 'lex:app.rocksky.shout.defs#shoutView', 3444 + type: "ref", 3445 + ref: "lex:app.rocksky.shout.defs#shoutView", 3442 3446 }, 3443 3447 }, 3444 3448 }, ··· 3446 3450 }, 3447 3451 AppRockskyLikeLikeSong: { 3448 3452 lexicon: 1, 3449 - id: 'app.rocksky.like.likeSong', 3453 + id: "app.rocksky.like.likeSong", 3450 3454 defs: { 3451 3455 main: { 3452 - type: 'procedure', 3453 - description: 'Like a song', 3456 + type: "procedure", 3457 + description: "Like a song", 3454 3458 input: { 3455 - encoding: 'application/json', 3459 + encoding: "application/json", 3456 3460 schema: { 3457 - type: 'object', 3461 + type: "object", 3458 3462 properties: { 3459 3463 uri: { 3460 - type: 'string', 3461 - description: 'The unique identifier of the song to like', 3462 - format: 'at-uri', 3464 + type: "string", 3465 + description: "The unique identifier of the song to like", 3466 + format: "at-uri", 3463 3467 }, 3464 3468 }, 3465 3469 }, 3466 3470 }, 3467 3471 output: { 3468 - encoding: 'application/json', 3472 + encoding: "application/json", 3469 3473 schema: { 3470 - type: 'ref', 3471 - ref: 'lex:app.rocksky.song.defs#songViewDetailed', 3474 + type: "ref", 3475 + ref: "lex:app.rocksky.song.defs#songViewDetailed", 3472 3476 }, 3473 3477 }, 3474 3478 }, ··· 3476 3480 }, 3477 3481 AppRockskyPlayerAddDirectoryToQueue: { 3478 3482 lexicon: 1, 3479 - id: 'app.rocksky.player.addDirectoryToQueue', 3483 + id: "app.rocksky.player.addDirectoryToQueue", 3480 3484 defs: { 3481 3485 main: { 3482 - type: 'procedure', 3486 + type: "procedure", 3483 3487 description: "Add directory to the player's queue", 3484 3488 parameters: { 3485 - type: 'params', 3486 - required: ['directory'], 3489 + type: "params", 3490 + required: ["directory"], 3487 3491 properties: { 3488 3492 playerId: { 3489 - type: 'string', 3493 + type: "string", 3490 3494 }, 3491 3495 directory: { 3492 - type: 'string', 3493 - description: 'The directory to add to the queue', 3496 + type: "string", 3497 + description: "The directory to add to the queue", 3494 3498 }, 3495 3499 position: { 3496 - type: 'integer', 3500 + type: "integer", 3497 3501 description: 3498 - 'Position in the queue to insert the directory at, defaults to the end if not specified', 3502 + "Position in the queue to insert the directory at, defaults to the end if not specified", 3499 3503 }, 3500 3504 shuffle: { 3501 - type: 'boolean', 3505 + type: "boolean", 3502 3506 description: 3503 - 'Whether to shuffle the added directory in the queue', 3507 + "Whether to shuffle the added directory in the queue", 3504 3508 }, 3505 3509 }, 3506 3510 }, ··· 3509 3513 }, 3510 3514 AppRockskyPlayerAddItemsToQueue: { 3511 3515 lexicon: 1, 3512 - id: 'app.rocksky.player.addItemsToQueue', 3516 + id: "app.rocksky.player.addItemsToQueue", 3513 3517 defs: { 3514 3518 main: { 3515 - type: 'procedure', 3519 + type: "procedure", 3516 3520 description: "Add items to the player's queue", 3517 3521 parameters: { 3518 - type: 'params', 3519 - required: ['items'], 3522 + type: "params", 3523 + required: ["items"], 3520 3524 properties: { 3521 3525 playerId: { 3522 - type: 'string', 3526 + type: "string", 3523 3527 }, 3524 3528 items: { 3525 - type: 'array', 3529 + type: "array", 3526 3530 items: { 3527 - type: 'string', 3528 - description: 'List of file identifiers to add to the queue', 3531 + type: "string", 3532 + description: "List of file identifiers to add to the queue", 3529 3533 }, 3530 3534 }, 3531 3535 position: { 3532 - type: 'integer', 3536 + type: "integer", 3533 3537 description: 3534 - 'Position in the queue to insert the items at, defaults to the end if not specified', 3538 + "Position in the queue to insert the items at, defaults to the end if not specified", 3535 3539 }, 3536 3540 shuffle: { 3537 - type: 'boolean', 3538 - description: 'Whether to shuffle the added items in the queue', 3541 + type: "boolean", 3542 + description: "Whether to shuffle the added items in the queue", 3539 3543 }, 3540 3544 }, 3541 3545 }, ··· 3544 3548 }, 3545 3549 AppRockskyPlayerDefs: { 3546 3550 lexicon: 1, 3547 - id: 'app.rocksky.player.defs', 3551 + id: "app.rocksky.player.defs", 3548 3552 defs: { 3549 3553 currentlyPlayingViewDetailed: { 3550 - type: 'object', 3554 + type: "object", 3551 3555 properties: { 3552 3556 title: { 3553 - type: 'string', 3554 - description: 'The title of the currently playing track', 3557 + type: "string", 3558 + description: "The title of the currently playing track", 3555 3559 }, 3556 3560 }, 3557 3561 }, 3558 3562 playbackQueueViewDetailed: { 3559 - type: 'object', 3563 + type: "object", 3560 3564 properties: { 3561 3565 tracks: { 3562 - type: 'array', 3566 + type: "array", 3563 3567 items: { 3564 - type: 'ref', 3565 - ref: 'lex:app.rocksky.song.defs.songViewBasic', 3568 + type: "ref", 3569 + ref: "lex:app.rocksky.song.defs.songViewBasic", 3566 3570 }, 3567 3571 }, 3568 3572 }, ··· 3571 3575 }, 3572 3576 AppRockskyPlayerGetCurrentlyPlaying: { 3573 3577 lexicon: 1, 3574 - id: 'app.rocksky.player.getCurrentlyPlaying', 3578 + id: "app.rocksky.player.getCurrentlyPlaying", 3575 3579 defs: { 3576 3580 main: { 3577 - type: 'query', 3578 - description: 'Get the currently playing track', 3581 + type: "query", 3582 + description: "Get the currently playing track", 3579 3583 parameters: { 3580 - type: 'params', 3584 + type: "params", 3581 3585 properties: { 3582 3586 playerId: { 3583 - type: 'string', 3587 + type: "string", 3584 3588 }, 3585 3589 actor: { 3586 - type: 'string', 3590 + type: "string", 3587 3591 description: 3588 - 'Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.', 3589 - format: 'at-identifier', 3592 + "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.", 3593 + format: "at-identifier", 3590 3594 }, 3591 3595 }, 3592 3596 }, 3593 3597 output: { 3594 - encoding: 'application/json', 3598 + encoding: "application/json", 3595 3599 schema: { 3596 - type: 'ref', 3597 - ref: 'lex:app.rocksky.player.defs#currentlyPlayingViewDetailed', 3600 + type: "ref", 3601 + ref: "lex:app.rocksky.player.defs#currentlyPlayingViewDetailed", 3598 3602 }, 3599 3603 }, 3600 3604 }, ··· 3602 3606 }, 3603 3607 AppRockskyPlayerGetPlaybackQueue: { 3604 3608 lexicon: 1, 3605 - id: 'app.rocksky.player.getPlaybackQueue', 3609 + id: "app.rocksky.player.getPlaybackQueue", 3606 3610 defs: { 3607 3611 main: { 3608 - type: 'query', 3609 - description: 'Retrieve the current playback queue', 3612 + type: "query", 3613 + description: "Retrieve the current playback queue", 3610 3614 parameters: { 3611 - type: 'params', 3615 + type: "params", 3612 3616 properties: { 3613 3617 playerId: { 3614 - type: 'string', 3618 + type: "string", 3615 3619 }, 3616 3620 }, 3617 3621 }, 3618 3622 output: { 3619 - encoding: 'application/json', 3623 + encoding: "application/json", 3620 3624 schema: { 3621 - type: 'ref', 3622 - ref: 'lex:app.rocksky.player.defs#playbackQueueViewDetailed', 3625 + type: "ref", 3626 + ref: "lex:app.rocksky.player.defs#playbackQueueViewDetailed", 3623 3627 }, 3624 3628 }, 3625 3629 }, ··· 3627 3631 }, 3628 3632 AppRockskyPlayerNext: { 3629 3633 lexicon: 1, 3630 - id: 'app.rocksky.player.next', 3634 + id: "app.rocksky.player.next", 3631 3635 defs: { 3632 3636 main: { 3633 - type: 'procedure', 3634 - description: 'Play the next track in the queue', 3637 + type: "procedure", 3638 + description: "Play the next track in the queue", 3635 3639 parameters: { 3636 - type: 'params', 3640 + type: "params", 3637 3641 properties: { 3638 3642 playerId: { 3639 - type: 'string', 3643 + type: "string", 3640 3644 }, 3641 3645 }, 3642 3646 }, ··· 3645 3649 }, 3646 3650 AppRockskyPlayerPause: { 3647 3651 lexicon: 1, 3648 - id: 'app.rocksky.player.pause', 3652 + id: "app.rocksky.player.pause", 3649 3653 defs: { 3650 3654 main: { 3651 - type: 'procedure', 3652 - description: 'Pause the currently playing track', 3655 + type: "procedure", 3656 + description: "Pause the currently playing track", 3653 3657 parameters: { 3654 - type: 'params', 3658 + type: "params", 3655 3659 properties: { 3656 3660 playerId: { 3657 - type: 'string', 3661 + type: "string", 3658 3662 }, 3659 3663 }, 3660 3664 }, ··· 3663 3667 }, 3664 3668 AppRockskyPlayerPlay: { 3665 3669 lexicon: 1, 3666 - id: 'app.rocksky.player.play', 3670 + id: "app.rocksky.player.play", 3667 3671 defs: { 3668 3672 main: { 3669 - type: 'procedure', 3670 - description: 'Resume playback of the currently paused track', 3673 + type: "procedure", 3674 + description: "Resume playback of the currently paused track", 3671 3675 parameters: { 3672 - type: 'params', 3676 + type: "params", 3673 3677 properties: { 3674 3678 playerId: { 3675 - type: 'string', 3679 + type: "string", 3676 3680 }, 3677 3681 }, 3678 3682 }, ··· 3681 3685 }, 3682 3686 AppRockskyPlayerPlayDirectory: { 3683 3687 lexicon: 1, 3684 - id: 'app.rocksky.player.playDirectory', 3688 + id: "app.rocksky.player.playDirectory", 3685 3689 defs: { 3686 3690 main: { 3687 - type: 'procedure', 3688 - description: 'Play all tracks in a directory', 3691 + type: "procedure", 3692 + description: "Play all tracks in a directory", 3689 3693 parameters: { 3690 - type: 'params', 3691 - required: ['directoryId'], 3694 + type: "params", 3695 + required: ["directoryId"], 3692 3696 properties: { 3693 3697 playerId: { 3694 - type: 'string', 3698 + type: "string", 3695 3699 }, 3696 3700 directoryId: { 3697 - type: 'string', 3701 + type: "string", 3698 3702 }, 3699 3703 shuffle: { 3700 - type: 'boolean', 3704 + type: "boolean", 3701 3705 }, 3702 3706 recurse: { 3703 - type: 'boolean', 3707 + type: "boolean", 3704 3708 }, 3705 3709 position: { 3706 - type: 'integer', 3710 + type: "integer", 3707 3711 }, 3708 3712 }, 3709 3713 }, ··· 3712 3716 }, 3713 3717 AppRockskyPlayerPlayFile: { 3714 3718 lexicon: 1, 3715 - id: 'app.rocksky.player.playFile', 3719 + id: "app.rocksky.player.playFile", 3716 3720 defs: { 3717 3721 main: { 3718 - type: 'procedure', 3719 - description: 'Play a specific audio file', 3722 + type: "procedure", 3723 + description: "Play a specific audio file", 3720 3724 parameters: { 3721 - type: 'params', 3722 - required: ['fileId'], 3725 + type: "params", 3726 + required: ["fileId"], 3723 3727 properties: { 3724 3728 playerId: { 3725 - type: 'string', 3729 + type: "string", 3726 3730 }, 3727 3731 fileId: { 3728 - type: 'string', 3732 + type: "string", 3729 3733 }, 3730 3734 }, 3731 3735 }, ··· 3734 3738 }, 3735 3739 AppRockskyPlayerPrevious: { 3736 3740 lexicon: 1, 3737 - id: 'app.rocksky.player.previous', 3741 + id: "app.rocksky.player.previous", 3738 3742 defs: { 3739 3743 main: { 3740 - type: 'procedure', 3741 - description: 'Play the previous track in the queue', 3744 + type: "procedure", 3745 + description: "Play the previous track in the queue", 3742 3746 parameters: { 3743 - type: 'params', 3747 + type: "params", 3744 3748 properties: { 3745 3749 playerId: { 3746 - type: 'string', 3750 + type: "string", 3747 3751 }, 3748 3752 }, 3749 3753 }, ··· 3752 3756 }, 3753 3757 AppRockskyPlayerSeek: { 3754 3758 lexicon: 1, 3755 - id: 'app.rocksky.player.seek', 3759 + id: "app.rocksky.player.seek", 3756 3760 defs: { 3757 3761 main: { 3758 - type: 'procedure', 3762 + type: "procedure", 3759 3763 description: 3760 - 'Seek to a specific position in the currently playing track', 3764 + "Seek to a specific position in the currently playing track", 3761 3765 parameters: { 3762 - type: 'params', 3763 - required: ['position'], 3766 + type: "params", 3767 + required: ["position"], 3764 3768 properties: { 3765 3769 playerId: { 3766 - type: 'string', 3770 + type: "string", 3767 3771 }, 3768 3772 position: { 3769 - type: 'integer', 3770 - description: 'The position in seconds to seek to', 3773 + type: "integer", 3774 + description: "The position in seconds to seek to", 3771 3775 }, 3772 3776 }, 3773 3777 }, ··· 3776 3780 }, 3777 3781 AppRockskyPlaylistCreatePlaylist: { 3778 3782 lexicon: 1, 3779 - id: 'app.rocksky.playlist.createPlaylist', 3783 + id: "app.rocksky.playlist.createPlaylist", 3780 3784 defs: { 3781 3785 main: { 3782 - type: 'procedure', 3783 - description: 'Create a new playlist', 3786 + type: "procedure", 3787 + description: "Create a new playlist", 3784 3788 parameters: { 3785 - type: 'params', 3786 - required: ['name'], 3789 + type: "params", 3790 + required: ["name"], 3787 3791 properties: { 3788 3792 name: { 3789 - type: 'string', 3790 - description: 'The name of the playlist', 3793 + type: "string", 3794 + description: "The name of the playlist", 3791 3795 }, 3792 3796 description: { 3793 - type: 'string', 3794 - description: 'A brief description of the playlist', 3797 + type: "string", 3798 + description: "A brief description of the playlist", 3795 3799 }, 3796 3800 }, 3797 3801 }, ··· 3800 3804 }, 3801 3805 AppRockskyPlaylistDefs: { 3802 3806 lexicon: 1, 3803 - id: 'app.rocksky.playlist.defs', 3807 + id: "app.rocksky.playlist.defs", 3804 3808 defs: { 3805 3809 playlistViewDetailed: { 3806 - type: 'object', 3810 + type: "object", 3807 3811 description: 3808 - 'Detailed view of a playlist, including its tracks and metadata', 3812 + "Detailed view of a playlist, including its tracks and metadata", 3809 3813 properties: { 3810 3814 id: { 3811 - type: 'string', 3812 - description: 'The unique identifier of the playlist.', 3815 + type: "string", 3816 + description: "The unique identifier of the playlist.", 3813 3817 }, 3814 3818 title: { 3815 - type: 'string', 3816 - description: 'The title of the playlist.', 3819 + type: "string", 3820 + description: "The title of the playlist.", 3817 3821 }, 3818 3822 uri: { 3819 - type: 'string', 3820 - description: 'The URI of the playlist.', 3821 - format: 'at-uri', 3823 + type: "string", 3824 + description: "The URI of the playlist.", 3825 + format: "at-uri", 3822 3826 }, 3823 3827 curatorDid: { 3824 - type: 'string', 3825 - description: 'The DID of the curator of the playlist.', 3826 - format: 'at-identifier', 3828 + type: "string", 3829 + description: "The DID of the curator of the playlist.", 3830 + format: "at-identifier", 3827 3831 }, 3828 3832 curatorHandle: { 3829 - type: 'string', 3830 - description: 'The handle of the curator of the playlist.', 3831 - format: 'at-identifier', 3833 + type: "string", 3834 + description: "The handle of the curator of the playlist.", 3835 + format: "at-identifier", 3832 3836 }, 3833 3837 curatorName: { 3834 - type: 'string', 3835 - description: 'The name of the curator of the playlist.', 3838 + type: "string", 3839 + description: "The name of the curator of the playlist.", 3836 3840 }, 3837 3841 curatorAvatarUrl: { 3838 - type: 'string', 3839 - description: 'The URL of the avatar image of the curator.', 3840 - format: 'uri', 3842 + type: "string", 3843 + description: "The URL of the avatar image of the curator.", 3844 + format: "uri", 3841 3845 }, 3842 3846 description: { 3843 - type: 'string', 3844 - description: 'A description of the playlist.', 3847 + type: "string", 3848 + description: "A description of the playlist.", 3845 3849 }, 3846 3850 coverImageUrl: { 3847 - type: 'string', 3848 - description: 'The URL of the cover image for the playlist.', 3849 - format: 'uri', 3851 + type: "string", 3852 + description: "The URL of the cover image for the playlist.", 3853 + format: "uri", 3850 3854 }, 3851 3855 createdAt: { 3852 - type: 'string', 3853 - description: 'The date and time when the playlist was created.', 3854 - format: 'datetime', 3856 + type: "string", 3857 + description: "The date and time when the playlist was created.", 3858 + format: "datetime", 3855 3859 }, 3856 3860 tracks: { 3857 - type: 'array', 3858 - description: 'A list of tracks in the playlist.', 3861 + type: "array", 3862 + description: "A list of tracks in the playlist.", 3859 3863 items: { 3860 - type: 'ref', 3861 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 3864 + type: "ref", 3865 + ref: "lex:app.rocksky.song.defs#songViewBasic", 3862 3866 }, 3863 3867 }, 3864 3868 }, 3865 3869 }, 3866 3870 playlistViewBasic: { 3867 - type: 'object', 3868 - description: 'Basic view of a playlist, including its metadata', 3871 + type: "object", 3872 + description: "Basic view of a playlist, including its metadata", 3869 3873 properties: { 3870 3874 id: { 3871 - type: 'string', 3872 - description: 'The unique identifier of the playlist.', 3875 + type: "string", 3876 + description: "The unique identifier of the playlist.", 3873 3877 }, 3874 3878 title: { 3875 - type: 'string', 3876 - description: 'The title of the playlist.', 3879 + type: "string", 3880 + description: "The title of the playlist.", 3877 3881 }, 3878 3882 uri: { 3879 - type: 'string', 3880 - description: 'The URI of the playlist.', 3881 - format: 'at-uri', 3883 + type: "string", 3884 + description: "The URI of the playlist.", 3885 + format: "at-uri", 3882 3886 }, 3883 3887 curatorDid: { 3884 - type: 'string', 3885 - description: 'The DID of the curator of the playlist.', 3886 - format: 'at-identifier', 3888 + type: "string", 3889 + description: "The DID of the curator of the playlist.", 3890 + format: "at-identifier", 3887 3891 }, 3888 3892 curatorHandle: { 3889 - type: 'string', 3890 - description: 'The handle of the curator of the playlist.', 3891 - format: 'at-identifier', 3893 + type: "string", 3894 + description: "The handle of the curator of the playlist.", 3895 + format: "at-identifier", 3892 3896 }, 3893 3897 curatorName: { 3894 - type: 'string', 3895 - description: 'The name of the curator of the playlist.', 3898 + type: "string", 3899 + description: "The name of the curator of the playlist.", 3896 3900 }, 3897 3901 curatorAvatarUrl: { 3898 - type: 'string', 3899 - description: 'The URL of the avatar image of the curator.', 3900 - format: 'uri', 3902 + type: "string", 3903 + description: "The URL of the avatar image of the curator.", 3904 + format: "uri", 3901 3905 }, 3902 3906 description: { 3903 - type: 'string', 3904 - description: 'A description of the playlist.', 3907 + type: "string", 3908 + description: "A description of the playlist.", 3905 3909 }, 3906 3910 coverImageUrl: { 3907 - type: 'string', 3908 - description: 'The URL of the cover image for the playlist.', 3909 - format: 'uri', 3911 + type: "string", 3912 + description: "The URL of the cover image for the playlist.", 3913 + format: "uri", 3910 3914 }, 3911 3915 createdAt: { 3912 - type: 'string', 3913 - description: 'The date and time when the playlist was created.', 3914 - format: 'datetime', 3916 + type: "string", 3917 + description: "The date and time when the playlist was created.", 3918 + format: "datetime", 3915 3919 }, 3916 3920 trackCount: { 3917 - type: 'integer', 3918 - description: 'The number of tracks in the playlist.', 3921 + type: "integer", 3922 + description: "The number of tracks in the playlist.", 3919 3923 minimum: 0, 3920 3924 }, 3921 3925 }, ··· 3924 3928 }, 3925 3929 AppRockskyPlaylistGetPlaylist: { 3926 3930 lexicon: 1, 3927 - id: 'app.rocksky.playlist.getPlaylist', 3931 + id: "app.rocksky.playlist.getPlaylist", 3928 3932 defs: { 3929 3933 main: { 3930 - type: 'query', 3931 - description: 'Retrieve a playlist by its ID', 3934 + type: "query", 3935 + description: "Retrieve a playlist by its ID", 3932 3936 parameters: { 3933 - type: 'params', 3934 - required: ['uri'], 3937 + type: "params", 3938 + required: ["uri"], 3935 3939 properties: { 3936 3940 uri: { 3937 - type: 'string', 3938 - description: 'The URI of the playlist to retrieve.', 3939 - format: 'at-uri', 3941 + type: "string", 3942 + description: "The URI of the playlist to retrieve.", 3943 + format: "at-uri", 3940 3944 }, 3941 3945 }, 3942 3946 }, 3943 3947 output: { 3944 - encoding: 'application/json', 3948 + encoding: "application/json", 3945 3949 schema: { 3946 - type: 'ref', 3947 - ref: 'lex:app.rocksky.playlist.defs#playlistViewDetailed', 3950 + type: "ref", 3951 + ref: "lex:app.rocksky.playlist.defs#playlistViewDetailed", 3948 3952 }, 3949 3953 }, 3950 3954 }, ··· 3952 3956 }, 3953 3957 AppRockskyPlaylistGetPlaylists: { 3954 3958 lexicon: 1, 3955 - id: 'app.rocksky.playlist.getPlaylists', 3959 + id: "app.rocksky.playlist.getPlaylists", 3956 3960 defs: { 3957 3961 main: { 3958 - type: 'query', 3959 - description: 'Retrieve a list of playlists', 3962 + type: "query", 3963 + description: "Retrieve a list of playlists", 3960 3964 parameters: { 3961 - type: 'params', 3965 + type: "params", 3962 3966 properties: { 3963 3967 limit: { 3964 - type: 'integer', 3965 - description: 'The maximum number of playlists to return.', 3968 + type: "integer", 3969 + description: "The maximum number of playlists to return.", 3966 3970 }, 3967 3971 offset: { 3968 - type: 'integer', 3972 + type: "integer", 3969 3973 description: 3970 - 'The offset for pagination, used to skip a number of playlists.', 3974 + "The offset for pagination, used to skip a number of playlists.", 3971 3975 }, 3972 3976 }, 3973 3977 }, 3974 3978 output: { 3975 - encoding: 'application/json', 3979 + encoding: "application/json", 3976 3980 schema: { 3977 - type: 'object', 3981 + type: "object", 3978 3982 properties: { 3979 3983 playlists: { 3980 - type: 'array', 3984 + type: "array", 3981 3985 items: { 3982 - type: 'ref', 3983 - ref: 'lex:app.rocksky.playlist.defs#playlistViewBasic', 3986 + type: "ref", 3987 + ref: "lex:app.rocksky.playlist.defs#playlistViewBasic", 3984 3988 }, 3985 3989 }, 3986 3990 }, ··· 3991 3995 }, 3992 3996 AppRockskyPlaylistInsertDirectory: { 3993 3997 lexicon: 1, 3994 - id: 'app.rocksky.playlist.insertDirectory', 3998 + id: "app.rocksky.playlist.insertDirectory", 3995 3999 defs: { 3996 4000 main: { 3997 - type: 'procedure', 3998 - description: 'Insert a directory into a playlist', 4001 + type: "procedure", 4002 + description: "Insert a directory into a playlist", 3999 4003 parameters: { 4000 - type: 'params', 4001 - required: ['uri', 'directory'], 4004 + type: "params", 4005 + required: ["uri", "directory"], 4002 4006 properties: { 4003 4007 uri: { 4004 - type: 'string', 4005 - description: 'The URI of the playlist to start', 4006 - format: 'at-uri', 4008 + type: "string", 4009 + description: "The URI of the playlist to start", 4010 + format: "at-uri", 4007 4011 }, 4008 4012 directory: { 4009 - type: 'string', 4010 - description: 'The directory (id) to insert into the playlist', 4013 + type: "string", 4014 + description: "The directory (id) to insert into the playlist", 4011 4015 }, 4012 4016 position: { 4013 - type: 'integer', 4017 + type: "integer", 4014 4018 description: 4015 - 'The position in the playlist to insert the directory at, if not specified, the directory will be appended', 4019 + "The position in the playlist to insert the directory at, if not specified, the directory will be appended", 4016 4020 }, 4017 4021 }, 4018 4022 }, ··· 4021 4025 }, 4022 4026 AppRockskyPlaylistInsertFiles: { 4023 4027 lexicon: 1, 4024 - id: 'app.rocksky.playlist.insertFiles', 4028 + id: "app.rocksky.playlist.insertFiles", 4025 4029 defs: { 4026 4030 main: { 4027 - type: 'procedure', 4028 - description: 'Insert files into a playlist', 4031 + type: "procedure", 4032 + description: "Insert files into a playlist", 4029 4033 parameters: { 4030 - type: 'params', 4031 - required: ['uri', 'files'], 4034 + type: "params", 4035 + required: ["uri", "files"], 4032 4036 properties: { 4033 4037 uri: { 4034 - type: 'string', 4035 - description: 'The URI of the playlist to start', 4036 - format: 'at-uri', 4038 + type: "string", 4039 + description: "The URI of the playlist to start", 4040 + format: "at-uri", 4037 4041 }, 4038 4042 files: { 4039 - type: 'array', 4043 + type: "array", 4040 4044 items: { 4041 - type: 'string', 4042 - description: 'List of file (id) to insert into the playlist', 4045 + type: "string", 4046 + description: "List of file (id) to insert into the playlist", 4043 4047 }, 4044 4048 }, 4045 4049 position: { 4046 - type: 'integer', 4050 + type: "integer", 4047 4051 description: 4048 - 'The position in the playlist to insert the files at, if not specified, files will be appended', 4052 + "The position in the playlist to insert the files at, if not specified, files will be appended", 4049 4053 }, 4050 4054 }, 4051 4055 }, ··· 4054 4058 }, 4055 4059 AppRockskyPlaylist: { 4056 4060 lexicon: 1, 4057 - id: 'app.rocksky.playlist', 4061 + id: "app.rocksky.playlist", 4058 4062 defs: { 4059 4063 main: { 4060 - type: 'record', 4061 - description: 'A declaration of a playlist.', 4062 - key: 'tid', 4064 + type: "record", 4065 + description: "A declaration of a playlist.", 4066 + key: "tid", 4063 4067 record: { 4064 - type: 'object', 4065 - required: ['name', 'createdAt'], 4068 + type: "object", 4069 + required: ["name", "createdAt"], 4066 4070 properties: { 4067 4071 name: { 4068 - type: 'string', 4069 - description: 'The name of the playlist.', 4072 + type: "string", 4073 + description: "The name of the playlist.", 4070 4074 minLength: 1, 4071 4075 maxLength: 512, 4072 4076 }, 4073 4077 description: { 4074 - type: 'string', 4075 - description: 'The playlist description.', 4078 + type: "string", 4079 + description: "The playlist description.", 4076 4080 minLength: 1, 4077 4081 maxLength: 256, 4078 4082 }, 4079 4083 picture: { 4080 - type: 'blob', 4081 - description: 'The picture of the playlist.', 4082 - accept: ['image/png', 'image/jpeg'], 4084 + type: "blob", 4085 + description: "The picture of the playlist.", 4086 + accept: ["image/png", "image/jpeg"], 4083 4087 maxSize: 2000000, 4084 4088 }, 4085 4089 pictureUrl: { 4086 - type: 'string', 4087 - description: 'The URL of the picture of the artist.', 4088 - format: 'uri', 4090 + type: "string", 4091 + description: "The URL of the picture of the artist.", 4092 + format: "uri", 4089 4093 }, 4090 4094 createdAt: { 4091 - type: 'string', 4092 - description: 'The date the playlist was created.', 4093 - format: 'datetime', 4095 + type: "string", 4096 + description: "The date the playlist was created.", 4097 + format: "datetime", 4094 4098 }, 4095 4099 spotifyLink: { 4096 - type: 'string', 4097 - description: 'The Spotify link of the playlist.', 4100 + type: "string", 4101 + description: "The Spotify link of the playlist.", 4098 4102 }, 4099 4103 tidalLink: { 4100 - type: 'string', 4101 - description: 'The Tidal link of the playlist.', 4104 + type: "string", 4105 + description: "The Tidal link of the playlist.", 4102 4106 }, 4103 4107 youtubeLink: { 4104 - type: 'string', 4105 - description: 'The YouTube link of the playlist.', 4108 + type: "string", 4109 + description: "The YouTube link of the playlist.", 4106 4110 }, 4107 4111 appleMusicLink: { 4108 - type: 'string', 4109 - description: 'The Apple Music link of the playlist.', 4112 + type: "string", 4113 + description: "The Apple Music link of the playlist.", 4110 4114 }, 4111 4115 }, 4112 4116 }, ··· 4115 4119 }, 4116 4120 AppRockskyPlaylistItem: { 4117 4121 lexicon: 1, 4118 - id: 'app.rocksky.playlistItem', 4122 + id: "app.rocksky.playlistItem", 4119 4123 defs: { 4120 4124 main: { 4121 - type: 'record', 4125 + type: "record", 4122 4126 description: 4123 - 'A playlist item represents a single entry in a playlist, containing metadata and references to media content.', 4124 - key: 'tid', 4127 + "A playlist item represents a single entry in a playlist, containing metadata and references to media content.", 4128 + key: "tid", 4125 4129 record: { 4126 - type: 'object', 4127 - required: ['createdAt', 'track', 'order', 'subject'], 4130 + type: "object", 4131 + required: ["createdAt", "track", "order", "subject"], 4128 4132 properties: { 4129 4133 subject: { 4130 - type: 'ref', 4131 - ref: 'lex:com.atproto.repo.strongRef', 4134 + type: "ref", 4135 + ref: "lex:com.atproto.repo.strongRef", 4132 4136 }, 4133 4137 createdAt: { 4134 - type: 'string', 4135 - description: 'The date the playlist was created.', 4136 - format: 'datetime', 4138 + type: "string", 4139 + description: "The date the playlist was created.", 4140 + format: "datetime", 4137 4141 }, 4138 4142 track: { 4139 - type: 'ref', 4140 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 4143 + type: "ref", 4144 + ref: "lex:app.rocksky.song.defs#songViewBasic", 4141 4145 }, 4142 4146 order: { 4143 - type: 'integer', 4144 - description: 'The order of the item in the playlist.', 4147 + type: "integer", 4148 + description: "The order of the item in the playlist.", 4145 4149 minimum: 0, 4146 4150 }, 4147 4151 }, ··· 4151 4155 }, 4152 4156 AppRockskyPlaylistRemovePlaylist: { 4153 4157 lexicon: 1, 4154 - id: 'app.rocksky.playlist.removePlaylist', 4158 + id: "app.rocksky.playlist.removePlaylist", 4155 4159 defs: { 4156 4160 main: { 4157 - type: 'procedure', 4158 - description: 'Remove a playlist', 4161 + type: "procedure", 4162 + description: "Remove a playlist", 4159 4163 parameters: { 4160 - type: 'params', 4161 - required: ['uri'], 4164 + type: "params", 4165 + required: ["uri"], 4162 4166 properties: { 4163 4167 uri: { 4164 - type: 'string', 4165 - description: 'The URI of the playlist to remove', 4166 - format: 'at-uri', 4168 + type: "string", 4169 + description: "The URI of the playlist to remove", 4170 + format: "at-uri", 4167 4171 }, 4168 4172 }, 4169 4173 }, ··· 4172 4176 }, 4173 4177 AppRockskyPlaylistRemoveTrack: { 4174 4178 lexicon: 1, 4175 - id: 'app.rocksky.playlist.removeTrack', 4179 + id: "app.rocksky.playlist.removeTrack", 4176 4180 defs: { 4177 4181 main: { 4178 - type: 'procedure', 4179 - description: 'Remove a track from a playlist', 4182 + type: "procedure", 4183 + description: "Remove a track from a playlist", 4180 4184 parameters: { 4181 - type: 'params', 4182 - required: ['uri', 'position'], 4185 + type: "params", 4186 + required: ["uri", "position"], 4183 4187 properties: { 4184 4188 uri: { 4185 - type: 'string', 4186 - description: 'The URI of the playlist to remove the track from', 4187 - format: 'at-uri', 4189 + type: "string", 4190 + description: "The URI of the playlist to remove the track from", 4191 + format: "at-uri", 4188 4192 }, 4189 4193 position: { 4190 - type: 'integer', 4194 + type: "integer", 4191 4195 description: 4192 - 'The position of the track to remove in the playlist', 4196 + "The position of the track to remove in the playlist", 4193 4197 }, 4194 4198 }, 4195 4199 }, ··· 4198 4202 }, 4199 4203 AppRockskyPlaylistStartPlaylist: { 4200 4204 lexicon: 1, 4201 - id: 'app.rocksky.playlist.startPlaylist', 4205 + id: "app.rocksky.playlist.startPlaylist", 4202 4206 defs: { 4203 4207 main: { 4204 - type: 'procedure', 4205 - description: 'Start a playlist', 4208 + type: "procedure", 4209 + description: "Start a playlist", 4206 4210 parameters: { 4207 - type: 'params', 4208 - required: ['uri'], 4211 + type: "params", 4212 + required: ["uri"], 4209 4213 properties: { 4210 4214 uri: { 4211 - type: 'string', 4212 - description: 'The URI of the playlist to start', 4213 - format: 'at-uri', 4215 + type: "string", 4216 + description: "The URI of the playlist to start", 4217 + format: "at-uri", 4214 4218 }, 4215 4219 shuffle: { 4216 - type: 'boolean', 4217 - description: 'Whether to shuffle the playlist when starting it', 4220 + type: "boolean", 4221 + description: "Whether to shuffle the playlist when starting it", 4218 4222 }, 4219 4223 position: { 4220 - type: 'integer', 4224 + type: "integer", 4221 4225 description: 4222 - 'The position in the playlist to start from, if not specified, starts from the beginning', 4226 + "The position in the playlist to start from, if not specified, starts from the beginning", 4223 4227 }, 4224 4228 }, 4225 4229 }, ··· 4228 4232 }, 4229 4233 AppRockskyRadioDefs: { 4230 4234 lexicon: 1, 4231 - id: 'app.rocksky.radio.defs', 4235 + id: "app.rocksky.radio.defs", 4232 4236 defs: { 4233 4237 radioViewBasic: { 4234 - type: 'object', 4238 + type: "object", 4235 4239 properties: { 4236 4240 id: { 4237 - type: 'string', 4238 - description: 'The unique identifier of the radio.', 4241 + type: "string", 4242 + description: "The unique identifier of the radio.", 4239 4243 }, 4240 4244 name: { 4241 - type: 'string', 4242 - description: 'The name of the radio.', 4245 + type: "string", 4246 + description: "The name of the radio.", 4243 4247 }, 4244 4248 description: { 4245 - type: 'string', 4246 - description: 'A brief description of the radio.', 4249 + type: "string", 4250 + description: "A brief description of the radio.", 4247 4251 }, 4248 4252 createdAt: { 4249 - type: 'string', 4250 - description: 'The date and time when the radio was created.', 4251 - format: 'datetime', 4253 + type: "string", 4254 + description: "The date and time when the radio was created.", 4255 + format: "datetime", 4252 4256 }, 4253 4257 }, 4254 4258 }, 4255 4259 radioViewDetailed: { 4256 - type: 'object', 4260 + type: "object", 4257 4261 properties: { 4258 4262 id: { 4259 - type: 'string', 4260 - description: 'The unique identifier of the radio.', 4263 + type: "string", 4264 + description: "The unique identifier of the radio.", 4261 4265 }, 4262 4266 name: { 4263 - type: 'string', 4264 - description: 'The name of the radio.', 4267 + type: "string", 4268 + description: "The name of the radio.", 4265 4269 }, 4266 4270 description: { 4267 - type: 'string', 4268 - description: 'A brief description of the radio.', 4271 + type: "string", 4272 + description: "A brief description of the radio.", 4269 4273 }, 4270 4274 website: { 4271 - type: 'string', 4272 - description: 'The website of the radio.', 4273 - format: 'uri', 4275 + type: "string", 4276 + description: "The website of the radio.", 4277 + format: "uri", 4274 4278 }, 4275 4279 url: { 4276 - type: 'string', 4277 - description: 'The streaming URL of the radio.', 4278 - format: 'uri', 4280 + type: "string", 4281 + description: "The streaming URL of the radio.", 4282 + format: "uri", 4279 4283 }, 4280 4284 genre: { 4281 - type: 'string', 4282 - description: 'The genre of the radio.', 4285 + type: "string", 4286 + description: "The genre of the radio.", 4283 4287 }, 4284 4288 logo: { 4285 - type: 'string', 4286 - description: 'The logo of the radio station.', 4289 + type: "string", 4290 + description: "The logo of the radio station.", 4287 4291 }, 4288 4292 createdAt: { 4289 - type: 'string', 4290 - description: 'The date and time when the radio was created.', 4291 - format: 'datetime', 4293 + type: "string", 4294 + description: "The date and time when the radio was created.", 4295 + format: "datetime", 4292 4296 }, 4293 4297 }, 4294 4298 }, ··· 4296 4300 }, 4297 4301 AppRockskyRadio: { 4298 4302 lexicon: 1, 4299 - id: 'app.rocksky.radio', 4303 + id: "app.rocksky.radio", 4300 4304 defs: { 4301 4305 main: { 4302 - type: 'record', 4303 - description: 'A declaration of a radio station.', 4304 - key: 'tid', 4306 + type: "record", 4307 + description: "A declaration of a radio station.", 4308 + key: "tid", 4305 4309 record: { 4306 - type: 'object', 4307 - required: ['name', 'url', 'createdAt'], 4310 + type: "object", 4311 + required: ["name", "url", "createdAt"], 4308 4312 properties: { 4309 4313 name: { 4310 - type: 'string', 4311 - description: 'The name of the radio station.', 4314 + type: "string", 4315 + description: "The name of the radio station.", 4312 4316 minLength: 1, 4313 4317 maxLength: 512, 4314 4318 }, 4315 4319 url: { 4316 - type: 'string', 4317 - description: 'The URL of the radio station.', 4318 - format: 'uri', 4320 + type: "string", 4321 + description: "The URL of the radio station.", 4322 + format: "uri", 4319 4323 }, 4320 4324 description: { 4321 - type: 'string', 4322 - description: 'A description of the radio station.', 4325 + type: "string", 4326 + description: "A description of the radio station.", 4323 4327 minLength: 1, 4324 4328 maxLength: 1000, 4325 4329 }, 4326 4330 genre: { 4327 - type: 'string', 4328 - description: 'The genre of the radio station.', 4331 + type: "string", 4332 + description: "The genre of the radio station.", 4329 4333 minLength: 1, 4330 4334 maxLength: 256, 4331 4335 }, 4332 4336 logo: { 4333 - type: 'blob', 4334 - description: 'The logo of the radio station.', 4335 - accept: ['image/png', 'image/jpeg'], 4337 + type: "blob", 4338 + description: "The logo of the radio station.", 4339 + accept: ["image/png", "image/jpeg"], 4336 4340 maxSize: 2000000, 4337 4341 }, 4338 4342 website: { 4339 - type: 'string', 4340 - description: 'The website of the radio station.', 4341 - format: 'uri', 4343 + type: "string", 4344 + description: "The website of the radio station.", 4345 + format: "uri", 4342 4346 }, 4343 4347 createdAt: { 4344 - type: 'string', 4345 - description: 'The date when the radio station was created.', 4346 - format: 'datetime', 4348 + type: "string", 4349 + description: "The date when the radio station was created.", 4350 + format: "datetime", 4347 4351 }, 4348 4352 }, 4349 4353 }, ··· 4352 4356 }, 4353 4357 AppRockskyScrobbleCreateScrobble: { 4354 4358 lexicon: 1, 4355 - id: 'app.rocksky.scrobble.createScrobble', 4359 + id: "app.rocksky.scrobble.createScrobble", 4356 4360 defs: { 4357 4361 main: { 4358 - type: 'procedure', 4359 - description: 'Create a new scrobble', 4362 + type: "procedure", 4363 + description: "Create a new scrobble", 4360 4364 input: { 4361 - encoding: 'application/json', 4365 + encoding: "application/json", 4362 4366 schema: { 4363 - type: 'object', 4364 - required: ['title', 'artist'], 4367 + type: "object", 4368 + required: ["title", "artist"], 4365 4369 properties: { 4366 4370 title: { 4367 - type: 'string', 4368 - description: 'The title of the track being scrobbled', 4371 + type: "string", 4372 + description: "The title of the track being scrobbled", 4369 4373 }, 4370 4374 artist: { 4371 - type: 'string', 4372 - description: 'The artist of the track being scrobbled', 4375 + type: "string", 4376 + description: "The artist of the track being scrobbled", 4373 4377 }, 4374 4378 album: { 4375 - type: 'string', 4376 - description: 'The album of the track being scrobbled', 4379 + type: "string", 4380 + description: "The album of the track being scrobbled", 4377 4381 }, 4378 4382 duration: { 4379 - type: 'integer', 4380 - description: 'The duration of the track in seconds', 4383 + type: "integer", 4384 + description: "The duration of the track in seconds", 4381 4385 }, 4382 4386 mbId: { 4383 - type: 'string', 4384 - description: 'The MusicBrainz ID of the track, if available', 4387 + type: "string", 4388 + description: "The MusicBrainz ID of the track, if available", 4385 4389 }, 4386 4390 albumArt: { 4387 - type: 'string', 4388 - description: 'The URL of the album art for the track', 4389 - format: 'uri', 4391 + type: "string", 4392 + description: "The URL of the album art for the track", 4393 + format: "uri", 4390 4394 }, 4391 4395 trackNumber: { 4392 - type: 'integer', 4393 - description: 'The track number of the track in the album', 4396 + type: "integer", 4397 + description: "The track number of the track in the album", 4394 4398 }, 4395 4399 releaseDate: { 4396 - type: 'string', 4400 + type: "string", 4397 4401 description: 4398 - 'The release date of the track, formatted as YYYY-MM-DD', 4402 + "The release date of the track, formatted as YYYY-MM-DD", 4399 4403 }, 4400 4404 year: { 4401 - type: 'integer', 4402 - description: 'The year the track was released', 4405 + type: "integer", 4406 + description: "The year the track was released", 4403 4407 }, 4404 4408 discNumber: { 4405 - type: 'integer', 4409 + type: "integer", 4406 4410 description: 4407 - 'The disc number of the track in the album, if applicable', 4411 + "The disc number of the track in the album, if applicable", 4408 4412 }, 4409 4413 lyrics: { 4410 - type: 'string', 4411 - description: 'The lyrics of the track, if available', 4414 + type: "string", 4415 + description: "The lyrics of the track, if available", 4412 4416 }, 4413 4417 composer: { 4414 - type: 'string', 4415 - description: 'The composer of the track, if available', 4418 + type: "string", 4419 + description: "The composer of the track, if available", 4416 4420 }, 4417 4421 copyrightMessage: { 4418 - type: 'string', 4422 + type: "string", 4419 4423 description: 4420 - 'The copyright message for the track, if available', 4424 + "The copyright message for the track, if available", 4421 4425 }, 4422 4426 label: { 4423 - type: 'string', 4424 - description: 'The record label of the track, if available', 4427 + type: "string", 4428 + description: "The record label of the track, if available", 4425 4429 }, 4426 4430 artistPicture: { 4427 - type: 'string', 4431 + type: "string", 4428 4432 description: "The URL of the artist's picture, if available", 4429 - format: 'uri', 4433 + format: "uri", 4430 4434 }, 4431 4435 spotifyLink: { 4432 - type: 'string', 4433 - description: 'The Spotify link for the track, if available', 4434 - format: 'uri', 4436 + type: "string", 4437 + description: "The Spotify link for the track, if available", 4438 + format: "uri", 4435 4439 }, 4436 4440 lastfmLink: { 4437 - type: 'string', 4438 - description: 'The Last.fm link for the track, if available', 4439 - format: 'uri', 4441 + type: "string", 4442 + description: "The Last.fm link for the track, if available", 4443 + format: "uri", 4440 4444 }, 4441 4445 tidalLink: { 4442 - type: 'string', 4443 - description: 'The Tidal link for the track, if available', 4444 - format: 'uri', 4446 + type: "string", 4447 + description: "The Tidal link for the track, if available", 4448 + format: "uri", 4445 4449 }, 4446 4450 appleMusicLink: { 4447 - type: 'string', 4448 - description: 'The Apple Music link for the track, if available', 4449 - format: 'uri', 4451 + type: "string", 4452 + description: "The Apple Music link for the track, if available", 4453 + format: "uri", 4450 4454 }, 4451 4455 youtubeLink: { 4452 - type: 'string', 4453 - description: 'The Youtube link for the track, if available', 4454 - format: 'uri', 4456 + type: "string", 4457 + description: "The Youtube link for the track, if available", 4458 + format: "uri", 4455 4459 }, 4456 4460 deezerLink: { 4457 - type: 'string', 4458 - description: 'The Deezer link for the track, if available', 4459 - format: 'uri', 4461 + type: "string", 4462 + description: "The Deezer link for the track, if available", 4463 + format: "uri", 4460 4464 }, 4461 4465 timestamp: { 4462 - type: 'integer', 4466 + type: "integer", 4463 4467 description: 4464 - 'The timestamp of the scrobble in milliseconds since epoch', 4468 + "The timestamp of the scrobble in milliseconds since epoch", 4465 4469 }, 4466 4470 }, 4467 4471 }, 4468 4472 }, 4469 4473 output: { 4470 - encoding: 'application/json', 4474 + encoding: "application/json", 4471 4475 schema: { 4472 - type: 'ref', 4473 - ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic', 4476 + type: "ref", 4477 + ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic", 4474 4478 }, 4475 4479 }, 4476 4480 }, ··· 4478 4482 }, 4479 4483 AppRockskyScrobbleDefs: { 4480 4484 lexicon: 1, 4481 - id: 'app.rocksky.scrobble.defs', 4485 + id: "app.rocksky.scrobble.defs", 4482 4486 defs: { 4483 4487 scrobbleViewBasic: { 4484 - type: 'object', 4488 + type: "object", 4485 4489 properties: { 4486 4490 id: { 4487 - type: 'string', 4488 - description: 'The unique identifier of the scrobble.', 4491 + type: "string", 4492 + description: "The unique identifier of the scrobble.", 4489 4493 }, 4490 4494 user: { 4491 - type: 'string', 4492 - description: 'The handle of the user who created the scrobble.', 4495 + type: "string", 4496 + description: "The handle of the user who created the scrobble.", 4493 4497 }, 4494 4498 userDisplayName: { 4495 - type: 'string', 4499 + type: "string", 4496 4500 description: 4497 - 'The display name of the user who created the scrobble.', 4501 + "The display name of the user who created the scrobble.", 4498 4502 }, 4499 4503 userAvatar: { 4500 - type: 'string', 4501 - description: 'The avatar URL of the user who created the scrobble.', 4502 - format: 'uri', 4504 + type: "string", 4505 + description: "The avatar URL of the user who created the scrobble.", 4506 + format: "uri", 4503 4507 }, 4504 4508 title: { 4505 - type: 'string', 4506 - description: 'The title of the scrobble.', 4509 + type: "string", 4510 + description: "The title of the scrobble.", 4507 4511 }, 4508 4512 artist: { 4509 - type: 'string', 4510 - description: 'The artist of the song.', 4513 + type: "string", 4514 + description: "The artist of the song.", 4511 4515 }, 4512 4516 artistUri: { 4513 - type: 'string', 4514 - description: 'The URI of the artist.', 4515 - format: 'at-uri', 4517 + type: "string", 4518 + description: "The URI of the artist.", 4519 + format: "at-uri", 4516 4520 }, 4517 4521 album: { 4518 - type: 'string', 4519 - description: 'The album of the song.', 4522 + type: "string", 4523 + description: "The album of the song.", 4520 4524 }, 4521 4525 albumUri: { 4522 - type: 'string', 4523 - description: 'The URI of the album.', 4524 - format: 'at-uri', 4526 + type: "string", 4527 + description: "The URI of the album.", 4528 + format: "at-uri", 4525 4529 }, 4526 4530 cover: { 4527 - type: 'string', 4528 - description: 'The album art URL of the song.', 4529 - format: 'uri', 4531 + type: "string", 4532 + description: "The album art URL of the song.", 4533 + format: "uri", 4530 4534 }, 4531 4535 date: { 4532 - type: 'string', 4533 - description: 'The timestamp when the scrobble was created.', 4534 - format: 'datetime', 4536 + type: "string", 4537 + description: "The timestamp when the scrobble was created.", 4538 + format: "datetime", 4535 4539 }, 4536 4540 uri: { 4537 - type: 'string', 4538 - description: 'The URI of the scrobble.', 4539 - format: 'uri', 4541 + type: "string", 4542 + description: "The URI of the scrobble.", 4543 + format: "uri", 4540 4544 }, 4541 4545 sha256: { 4542 - type: 'string', 4543 - description: 'The SHA256 hash of the scrobble data.', 4546 + type: "string", 4547 + description: "The SHA256 hash of the scrobble data.", 4544 4548 }, 4545 4549 liked: { 4546 - type: 'boolean', 4550 + type: "boolean", 4547 4551 }, 4548 4552 likesCount: { 4549 - type: 'integer', 4553 + type: "integer", 4550 4554 }, 4551 4555 }, 4552 4556 }, 4553 4557 scrobbleViewDetailed: { 4554 - type: 'object', 4558 + type: "object", 4555 4559 properties: { 4556 4560 id: { 4557 - type: 'string', 4558 - description: 'The unique identifier of the scrobble.', 4561 + type: "string", 4562 + description: "The unique identifier of the scrobble.", 4559 4563 }, 4560 4564 user: { 4561 - type: 'string', 4562 - description: 'The handle of the user who created the scrobble.', 4565 + type: "string", 4566 + description: "The handle of the user who created the scrobble.", 4563 4567 }, 4564 4568 title: { 4565 - type: 'string', 4566 - description: 'The title of the scrobble.', 4569 + type: "string", 4570 + description: "The title of the scrobble.", 4567 4571 }, 4568 4572 artist: { 4569 - type: 'string', 4570 - description: 'The artist of the song.', 4573 + type: "string", 4574 + description: "The artist of the song.", 4571 4575 }, 4572 4576 artistUri: { 4573 - type: 'string', 4574 - description: 'The URI of the artist.', 4575 - format: 'at-uri', 4577 + type: "string", 4578 + description: "The URI of the artist.", 4579 + format: "at-uri", 4576 4580 }, 4577 4581 album: { 4578 - type: 'string', 4579 - description: 'The album of the song.', 4582 + type: "string", 4583 + description: "The album of the song.", 4580 4584 }, 4581 4585 albumUri: { 4582 - type: 'string', 4583 - description: 'The URI of the album.', 4584 - format: 'at-uri', 4586 + type: "string", 4587 + description: "The URI of the album.", 4588 + format: "at-uri", 4585 4589 }, 4586 4590 cover: { 4587 - type: 'string', 4588 - description: 'The album art URL of the song.', 4589 - format: 'uri', 4591 + type: "string", 4592 + description: "The album art URL of the song.", 4593 + format: "uri", 4590 4594 }, 4591 4595 date: { 4592 - type: 'string', 4593 - description: 'The timestamp when the scrobble was created.', 4594 - format: 'datetime', 4596 + type: "string", 4597 + description: "The timestamp when the scrobble was created.", 4598 + format: "datetime", 4595 4599 }, 4596 4600 uri: { 4597 - type: 'string', 4598 - description: 'The URI of the scrobble.', 4599 - format: 'uri', 4601 + type: "string", 4602 + description: "The URI of the scrobble.", 4603 + format: "uri", 4600 4604 }, 4601 4605 sha256: { 4602 - type: 'string', 4603 - description: 'The SHA256 hash of the scrobble data.', 4606 + type: "string", 4607 + description: "The SHA256 hash of the scrobble data.", 4604 4608 }, 4605 4609 listeners: { 4606 - type: 'integer', 4607 - description: 'The number of listeners', 4610 + type: "integer", 4611 + description: "The number of listeners", 4608 4612 }, 4609 4613 scrobbles: { 4610 - type: 'integer', 4611 - description: 'The number of scrobbles for this song', 4614 + type: "integer", 4615 + description: "The number of scrobbles for this song", 4612 4616 }, 4613 4617 }, 4614 4618 }, ··· 4616 4620 }, 4617 4621 AppRockskyScrobbleGetScrobble: { 4618 4622 lexicon: 1, 4619 - id: 'app.rocksky.scrobble.getScrobble', 4623 + id: "app.rocksky.scrobble.getScrobble", 4620 4624 defs: { 4621 4625 main: { 4622 - type: 'query', 4623 - description: 'Get a scrobble by its unique identifier', 4626 + type: "query", 4627 + description: "Get a scrobble by its unique identifier", 4624 4628 parameters: { 4625 - type: 'params', 4626 - required: ['uri'], 4629 + type: "params", 4630 + required: ["uri"], 4627 4631 properties: { 4628 4632 uri: { 4629 - type: 'string', 4630 - description: 'The unique identifier of the scrobble', 4631 - format: 'at-uri', 4633 + type: "string", 4634 + description: "The unique identifier of the scrobble", 4635 + format: "at-uri", 4632 4636 }, 4633 4637 }, 4634 4638 }, 4635 4639 output: { 4636 - encoding: 'application/json', 4640 + encoding: "application/json", 4637 4641 schema: { 4638 - type: 'ref', 4639 - ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewDetailed', 4642 + type: "ref", 4643 + ref: "lex:app.rocksky.scrobble.defs#scrobbleViewDetailed", 4640 4644 }, 4641 4645 }, 4642 4646 }, ··· 4644 4648 }, 4645 4649 AppRockskyScrobbleGetScrobbles: { 4646 4650 lexicon: 1, 4647 - id: 'app.rocksky.scrobble.getScrobbles', 4651 + id: "app.rocksky.scrobble.getScrobbles", 4648 4652 defs: { 4649 4653 main: { 4650 - type: 'query', 4651 - description: 'Get scrobbles all scrobbles', 4654 + type: "query", 4655 + description: "Get scrobbles all scrobbles", 4652 4656 parameters: { 4653 - type: 'params', 4657 + type: "params", 4654 4658 properties: { 4655 4659 did: { 4656 - type: 'string', 4657 - description: 'The DID or handle of the actor', 4658 - format: 'at-identifier', 4660 + type: "string", 4661 + description: "The DID or handle of the actor", 4662 + format: "at-identifier", 4659 4663 }, 4660 4664 following: { 4661 - type: 'boolean', 4665 + type: "boolean", 4662 4666 description: 4663 - 'If true, only return scrobbles from actors the viewer is following.', 4667 + "If true, only return scrobbles from actors the viewer is following.", 4664 4668 }, 4665 4669 limit: { 4666 - type: 'integer', 4667 - description: 'The maximum number of scrobbles to return', 4670 + type: "integer", 4671 + description: "The maximum number of scrobbles to return", 4668 4672 minimum: 1, 4669 4673 }, 4670 4674 offset: { 4671 - type: 'integer', 4672 - description: 'The offset for pagination', 4675 + type: "integer", 4676 + description: "The offset for pagination", 4673 4677 minimum: 0, 4674 4678 }, 4675 4679 }, 4676 4680 }, 4677 4681 output: { 4678 - encoding: 'application/json', 4682 + encoding: "application/json", 4679 4683 schema: { 4680 - type: 'object', 4684 + type: "object", 4681 4685 properties: { 4682 4686 scrobbles: { 4683 - type: 'array', 4687 + type: "array", 4684 4688 items: { 4685 - type: 'ref', 4686 - ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic', 4689 + type: "ref", 4690 + ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic", 4687 4691 }, 4688 4692 }, 4689 4693 }, ··· 4694 4698 }, 4695 4699 AppRockskyScrobble: { 4696 4700 lexicon: 1, 4697 - id: 'app.rocksky.scrobble', 4701 + id: "app.rocksky.scrobble", 4698 4702 defs: { 4699 4703 main: { 4700 - type: 'record', 4701 - description: 'A declaration of a scrobble.', 4702 - key: 'tid', 4704 + type: "record", 4705 + description: "A declaration of a scrobble.", 4706 + key: "tid", 4703 4707 record: { 4704 - type: 'object', 4708 + type: "object", 4705 4709 required: [ 4706 - 'title', 4707 - 'artist', 4708 - 'album', 4709 - 'albumArtist', 4710 - 'duration', 4711 - 'createdAt', 4710 + "title", 4711 + "artist", 4712 + "album", 4713 + "albumArtist", 4714 + "duration", 4715 + "createdAt", 4712 4716 ], 4713 4717 properties: { 4714 4718 title: { 4715 - type: 'string', 4716 - description: 'The title of the song.', 4719 + type: "string", 4720 + description: "The title of the song.", 4717 4721 minLength: 1, 4718 4722 maxLength: 512, 4719 4723 }, 4720 4724 artist: { 4721 - type: 'string', 4722 - description: 'The artist of the song.', 4725 + type: "string", 4726 + description: "The artist of the song.", 4723 4727 minLength: 1, 4724 4728 maxLength: 256, 4725 4729 }, 4726 4730 artists: { 4727 - type: 'array', 4728 - description: 'The artists of the song with MusicBrainz IDs.', 4731 + type: "array", 4732 + description: "The artists of the song with MusicBrainz IDs.", 4729 4733 items: { 4730 - type: 'ref', 4731 - ref: 'lex:app.rocksky.artist.defs#artistMbid', 4734 + type: "ref", 4735 + ref: "lex:app.rocksky.artist.defs#artistMbid", 4732 4736 }, 4733 4737 }, 4734 4738 albumArtist: { 4735 - type: 'string', 4736 - description: 'The album artist of the song.', 4739 + type: "string", 4740 + description: "The album artist of the song.", 4737 4741 minLength: 1, 4738 4742 maxLength: 256, 4739 4743 }, 4740 4744 album: { 4741 - type: 'string', 4742 - description: 'The album of the song.', 4745 + type: "string", 4746 + description: "The album of the song.", 4743 4747 minLength: 1, 4744 4748 maxLength: 256, 4745 4749 }, 4746 4750 duration: { 4747 - type: 'integer', 4748 - description: 'The duration of the song in seconds.', 4751 + type: "integer", 4752 + description: "The duration of the song in seconds.", 4749 4753 minimum: 1, 4750 4754 }, 4751 4755 trackNumber: { 4752 - type: 'integer', 4753 - description: 'The track number of the song in the album.', 4756 + type: "integer", 4757 + description: "The track number of the song in the album.", 4754 4758 minimum: 1, 4755 4759 }, 4756 4760 discNumber: { 4757 - type: 'integer', 4758 - description: 'The disc number of the song in the album.', 4761 + type: "integer", 4762 + description: "The disc number of the song in the album.", 4759 4763 minimum: 1, 4760 4764 }, 4761 4765 releaseDate: { 4762 - type: 'string', 4763 - description: 'The release date of the song.', 4764 - format: 'datetime', 4766 + type: "string", 4767 + description: "The release date of the song.", 4768 + format: "datetime", 4765 4769 }, 4766 4770 year: { 4767 - type: 'integer', 4768 - description: 'The year the song was released.', 4771 + type: "integer", 4772 + description: "The year the song was released.", 4769 4773 }, 4770 4774 genre: { 4771 - type: 'string', 4772 - description: 'The genre of the song.', 4775 + type: "string", 4776 + description: "The genre of the song.", 4773 4777 maxLength: 256, 4774 4778 }, 4775 4779 tags: { 4776 - type: 'array', 4777 - description: 'The tags of the song.', 4780 + type: "array", 4781 + description: "The tags of the song.", 4778 4782 items: { 4779 - type: 'string', 4783 + type: "string", 4780 4784 minLength: 1, 4781 4785 maxLength: 256, 4782 4786 }, 4783 4787 }, 4784 4788 composer: { 4785 - type: 'string', 4786 - description: 'The composer of the song.', 4789 + type: "string", 4790 + description: "The composer of the song.", 4787 4791 maxLength: 256, 4788 4792 }, 4789 4793 lyrics: { 4790 - type: 'string', 4791 - description: 'The lyrics of the song.', 4794 + type: "string", 4795 + description: "The lyrics of the song.", 4792 4796 maxLength: 10000, 4793 4797 }, 4794 4798 copyrightMessage: { 4795 - type: 'string', 4796 - description: 'The copyright message of the song.', 4799 + type: "string", 4800 + description: "The copyright message of the song.", 4797 4801 maxLength: 256, 4798 4802 }, 4799 4803 wiki: { 4800 - type: 'string', 4801 - description: 'Informations about the song', 4804 + type: "string", 4805 + description: "Informations about the song", 4802 4806 maxLength: 10000, 4803 4807 }, 4804 4808 albumArt: { 4805 - type: 'blob', 4806 - description: 'The album art of the song.', 4807 - accept: ['image/png', 'image/jpeg'], 4809 + type: "blob", 4810 + description: "The album art of the song.", 4811 + accept: ["image/png", "image/jpeg"], 4808 4812 maxSize: 2000000, 4809 4813 }, 4810 4814 albumArtUrl: { 4811 - type: 'string', 4812 - description: 'The URL of the album art of the song.', 4813 - format: 'uri', 4815 + type: "string", 4816 + description: "The URL of the album art of the song.", 4817 + format: "uri", 4814 4818 }, 4815 4819 youtubeLink: { 4816 - type: 'string', 4817 - description: 'The YouTube link of the song.', 4818 - format: 'uri', 4820 + type: "string", 4821 + description: "The YouTube link of the song.", 4822 + format: "uri", 4819 4823 }, 4820 4824 spotifyLink: { 4821 - type: 'string', 4822 - description: 'The Spotify link of the song.', 4823 - format: 'uri', 4825 + type: "string", 4826 + description: "The Spotify link of the song.", 4827 + format: "uri", 4824 4828 }, 4825 4829 tidalLink: { 4826 - type: 'string', 4827 - description: 'The Tidal link of the song.', 4828 - format: 'uri', 4830 + type: "string", 4831 + description: "The Tidal link of the song.", 4832 + format: "uri", 4829 4833 }, 4830 4834 appleMusicLink: { 4831 - type: 'string', 4832 - description: 'The Apple Music link of the song.', 4833 - format: 'uri', 4835 + type: "string", 4836 + description: "The Apple Music link of the song.", 4837 + format: "uri", 4834 4838 }, 4835 4839 createdAt: { 4836 - type: 'string', 4837 - description: 'The date when the song was created.', 4838 - format: 'datetime', 4840 + type: "string", 4841 + description: "The date when the song was created.", 4842 + format: "datetime", 4839 4843 }, 4840 4844 mbid: { 4841 - type: 'string', 4842 - description: 'The MusicBrainz ID of the song.', 4845 + type: "string", 4846 + description: "The MusicBrainz ID of the song.", 4843 4847 }, 4844 4848 label: { 4845 - type: 'string', 4846 - description: 'The label of the song.', 4849 + type: "string", 4850 + description: "The label of the song.", 4847 4851 maxLength: 256, 4848 4852 }, 4849 4853 }, ··· 4853 4857 }, 4854 4858 AppRockskyShoutCreateShout: { 4855 4859 lexicon: 1, 4856 - id: 'app.rocksky.shout.createShout', 4860 + id: "app.rocksky.shout.createShout", 4857 4861 defs: { 4858 4862 main: { 4859 - type: 'procedure', 4860 - description: 'Create a new shout', 4863 + type: "procedure", 4864 + description: "Create a new shout", 4861 4865 input: { 4862 - encoding: 'application/json', 4866 + encoding: "application/json", 4863 4867 schema: { 4864 - type: 'object', 4868 + type: "object", 4865 4869 properties: { 4866 4870 message: { 4867 - type: 'string', 4868 - description: 'The content of the shout', 4871 + type: "string", 4872 + description: "The content of the shout", 4869 4873 minLength: 1, 4870 4874 }, 4871 4875 }, 4872 4876 }, 4873 4877 }, 4874 4878 output: { 4875 - encoding: 'application/json', 4879 + encoding: "application/json", 4876 4880 schema: { 4877 - type: 'ref', 4878 - ref: 'lex:app.rocksky.shout.defs#shoutView', 4881 + type: "ref", 4882 + ref: "lex:app.rocksky.shout.defs#shoutView", 4879 4883 }, 4880 4884 }, 4881 4885 }, ··· 4883 4887 }, 4884 4888 AppRockskyShoutDefs: { 4885 4889 lexicon: 1, 4886 - id: 'app.rocksky.shout.defs', 4890 + id: "app.rocksky.shout.defs", 4887 4891 defs: { 4888 4892 author: { 4889 - type: 'object', 4893 + type: "object", 4890 4894 properties: { 4891 4895 id: { 4892 - type: 'string', 4893 - description: 'The unique identifier of the author.', 4896 + type: "string", 4897 + description: "The unique identifier of the author.", 4894 4898 }, 4895 4899 did: { 4896 - type: 'string', 4897 - description: 'The decentralized identifier (DID) of the author.', 4898 - format: 'at-identifier', 4900 + type: "string", 4901 + description: "The decentralized identifier (DID) of the author.", 4902 + format: "at-identifier", 4899 4903 }, 4900 4904 handle: { 4901 - type: 'string', 4902 - description: 'The handle of the author.', 4903 - format: 'at-identifier', 4905 + type: "string", 4906 + description: "The handle of the author.", 4907 + format: "at-identifier", 4904 4908 }, 4905 4909 displayName: { 4906 - type: 'string', 4907 - description: 'The display name of the author.', 4910 + type: "string", 4911 + description: "The display name of the author.", 4908 4912 }, 4909 4913 avatar: { 4910 - type: 'string', 4914 + type: "string", 4911 4915 description: "The URL of the author's avatar image.", 4912 - format: 'uri', 4916 + format: "uri", 4913 4917 }, 4914 4918 }, 4915 4919 }, 4916 4920 shoutView: { 4917 - type: 'object', 4921 + type: "object", 4918 4922 properties: { 4919 4923 id: { 4920 - type: 'string', 4921 - description: 'The unique identifier of the shout.', 4924 + type: "string", 4925 + description: "The unique identifier of the shout.", 4922 4926 }, 4923 4927 message: { 4924 - type: 'string', 4925 - description: 'The content of the shout.', 4928 + type: "string", 4929 + description: "The content of the shout.", 4926 4930 }, 4927 4931 parent: { 4928 - type: 'string', 4932 + type: "string", 4929 4933 description: 4930 - 'The ID of the parent shout if this is a reply, otherwise null.', 4934 + "The ID of the parent shout if this is a reply, otherwise null.", 4931 4935 }, 4932 4936 createdAt: { 4933 - type: 'string', 4934 - description: 'The date and time when the shout was created.', 4935 - format: 'datetime', 4937 + type: "string", 4938 + description: "The date and time when the shout was created.", 4939 + format: "datetime", 4936 4940 }, 4937 4941 author: { 4938 - type: 'ref', 4939 - description: 'The author of the shout.', 4940 - ref: 'lex:app.rocksky.shout.defs#author', 4942 + type: "ref", 4943 + description: "The author of the shout.", 4944 + ref: "lex:app.rocksky.shout.defs#author", 4941 4945 }, 4942 4946 }, 4943 4947 }, ··· 4945 4949 }, 4946 4950 AppRockskyShoutGetAlbumShouts: { 4947 4951 lexicon: 1, 4948 - id: 'app.rocksky.shout.getAlbumShouts', 4952 + id: "app.rocksky.shout.getAlbumShouts", 4949 4953 defs: { 4950 4954 main: { 4951 - type: 'query', 4952 - description: 'Get shouts for an album', 4955 + type: "query", 4956 + description: "Get shouts for an album", 4953 4957 parameters: { 4954 - type: 'params', 4955 - required: ['uri'], 4958 + type: "params", 4959 + required: ["uri"], 4956 4960 properties: { 4957 4961 uri: { 4958 - type: 'string', 4962 + type: "string", 4959 4963 description: 4960 - 'The unique identifier of the album to retrieve shouts for', 4961 - format: 'at-uri', 4964 + "The unique identifier of the album to retrieve shouts for", 4965 + format: "at-uri", 4962 4966 }, 4963 4967 limit: { 4964 - type: 'integer', 4965 - description: 'The maximum number of shouts to return', 4968 + type: "integer", 4969 + description: "The maximum number of shouts to return", 4966 4970 minimum: 1, 4967 4971 }, 4968 4972 offset: { 4969 - type: 'integer', 4973 + type: "integer", 4970 4974 description: 4971 - 'The number of shouts to skip before starting to collect the result set', 4975 + "The number of shouts to skip before starting to collect the result set", 4972 4976 minimum: 0, 4973 4977 }, 4974 4978 }, 4975 4979 }, 4976 4980 output: { 4977 - encoding: 'application/json', 4981 + encoding: "application/json", 4978 4982 schema: { 4979 - type: 'object', 4983 + type: "object", 4980 4984 properties: { 4981 4985 shouts: { 4982 - type: 'array', 4986 + type: "array", 4983 4987 items: { 4984 - type: 'ref', 4985 - ref: 'lex:app.rocksky.shout.defs#shoutViewBasic', 4988 + type: "ref", 4989 + ref: "lex:app.rocksky.shout.defs#shoutViewBasic", 4986 4990 }, 4987 4991 }, 4988 4992 }, ··· 4993 4997 }, 4994 4998 AppRockskyShoutGetArtistShouts: { 4995 4999 lexicon: 1, 4996 - id: 'app.rocksky.shout.getArtistShouts', 5000 + id: "app.rocksky.shout.getArtistShouts", 4997 5001 defs: { 4998 5002 main: { 4999 - type: 'query', 5000 - description: 'Get shouts for an artist', 5003 + type: "query", 5004 + description: "Get shouts for an artist", 5001 5005 parameters: { 5002 - type: 'params', 5003 - required: ['uri'], 5006 + type: "params", 5007 + required: ["uri"], 5004 5008 properties: { 5005 5009 uri: { 5006 - type: 'string', 5007 - description: 'The URI of the artist to retrieve shouts for', 5008 - format: 'at-uri', 5010 + type: "string", 5011 + description: "The URI of the artist to retrieve shouts for", 5012 + format: "at-uri", 5009 5013 }, 5010 5014 limit: { 5011 - type: 'integer', 5012 - description: 'The maximum number of shouts to return', 5015 + type: "integer", 5016 + description: "The maximum number of shouts to return", 5013 5017 minimum: 1, 5014 5018 }, 5015 5019 offset: { 5016 - type: 'integer', 5020 + type: "integer", 5017 5021 description: 5018 - 'The number of shouts to skip before starting to collect the result set', 5022 + "The number of shouts to skip before starting to collect the result set", 5019 5023 minimum: 0, 5020 5024 }, 5021 5025 }, 5022 5026 }, 5023 5027 output: { 5024 - encoding: 'application/json', 5028 + encoding: "application/json", 5025 5029 schema: { 5026 - type: 'object', 5030 + type: "object", 5027 5031 properties: { 5028 5032 shouts: { 5029 - type: 'array', 5033 + type: "array", 5030 5034 items: { 5031 - type: 'ref', 5032 - ref: 'lex:app.rocksky.shout.defs#shoutViewBasic', 5035 + type: "ref", 5036 + ref: "lex:app.rocksky.shout.defs#shoutViewBasic", 5033 5037 }, 5034 5038 }, 5035 5039 }, ··· 5040 5044 }, 5041 5045 AppRockskyShoutGetProfileShouts: { 5042 5046 lexicon: 1, 5043 - id: 'app.rocksky.shout.getProfileShouts', 5047 + id: "app.rocksky.shout.getProfileShouts", 5044 5048 defs: { 5045 5049 main: { 5046 - type: 'query', 5050 + type: "query", 5047 5051 description: "Get the shouts of an actor's profile", 5048 5052 parameters: { 5049 - type: 'params', 5050 - required: ['did'], 5053 + type: "params", 5054 + required: ["did"], 5051 5055 properties: { 5052 5056 did: { 5053 - type: 'string', 5054 - description: 'The DID or handle of the actor', 5055 - format: 'at-identifier', 5057 + type: "string", 5058 + description: "The DID or handle of the actor", 5059 + format: "at-identifier", 5056 5060 }, 5057 5061 offset: { 5058 - type: 'integer', 5059 - description: 'The offset for pagination', 5062 + type: "integer", 5063 + description: "The offset for pagination", 5060 5064 minimum: 0, 5061 5065 }, 5062 5066 limit: { 5063 - type: 'integer', 5064 - description: 'The maximum number of shouts to return', 5067 + type: "integer", 5068 + description: "The maximum number of shouts to return", 5065 5069 minimum: 1, 5066 5070 }, 5067 5071 }, 5068 5072 }, 5069 5073 output: { 5070 - encoding: 'application/json', 5074 + encoding: "application/json", 5071 5075 schema: { 5072 - type: 'object', 5076 + type: "object", 5073 5077 properties: { 5074 5078 shouts: { 5075 - type: 'array', 5079 + type: "array", 5076 5080 items: { 5077 - type: 'ref', 5078 - ref: 'lex:app.rocksky.shout.defs#shoutViewBasic', 5081 + type: "ref", 5082 + ref: "lex:app.rocksky.shout.defs#shoutViewBasic", 5079 5083 }, 5080 5084 }, 5081 5085 }, ··· 5086 5090 }, 5087 5091 AppRockskyShoutGetShoutReplies: { 5088 5092 lexicon: 1, 5089 - id: 'app.rocksky.shout.getShoutReplies', 5093 + id: "app.rocksky.shout.getShoutReplies", 5090 5094 defs: { 5091 5095 main: { 5092 - type: 'query', 5093 - description: 'Get replies to a shout', 5096 + type: "query", 5097 + description: "Get replies to a shout", 5094 5098 parameters: { 5095 - type: 'params', 5096 - required: ['uri'], 5099 + type: "params", 5100 + required: ["uri"], 5097 5101 properties: { 5098 5102 uri: { 5099 - type: 'string', 5100 - description: 'The URI of the shout to retrieve replies for', 5101 - format: 'at-uri', 5103 + type: "string", 5104 + description: "The URI of the shout to retrieve replies for", 5105 + format: "at-uri", 5102 5106 }, 5103 5107 limit: { 5104 - type: 'integer', 5105 - description: 'The maximum number of shouts to return', 5108 + type: "integer", 5109 + description: "The maximum number of shouts to return", 5106 5110 minimum: 1, 5107 5111 }, 5108 5112 offset: { 5109 - type: 'integer', 5113 + type: "integer", 5110 5114 description: 5111 - 'The number of shouts to skip before starting to collect the result set', 5115 + "The number of shouts to skip before starting to collect the result set", 5112 5116 minimum: 0, 5113 5117 }, 5114 5118 }, 5115 5119 }, 5116 5120 output: { 5117 - encoding: 'application/json', 5121 + encoding: "application/json", 5118 5122 schema: { 5119 - type: 'object', 5123 + type: "object", 5120 5124 properties: { 5121 5125 shouts: { 5122 - type: 'array', 5126 + type: "array", 5123 5127 items: { 5124 - type: 'ref', 5125 - ref: 'lex:app.rocksky.shout.defs#shoutViewBasic', 5128 + type: "ref", 5129 + ref: "lex:app.rocksky.shout.defs#shoutViewBasic", 5126 5130 }, 5127 5131 }, 5128 5132 }, ··· 5133 5137 }, 5134 5138 AppRockskyShoutGetTrackShouts: { 5135 5139 lexicon: 1, 5136 - id: 'app.rocksky.shout.getTrackShouts', 5140 + id: "app.rocksky.shout.getTrackShouts", 5137 5141 defs: { 5138 5142 main: { 5139 - type: 'query', 5140 - description: 'Get all shouts for a specific track', 5143 + type: "query", 5144 + description: "Get all shouts for a specific track", 5141 5145 parameters: { 5142 - type: 'params', 5143 - required: ['uri'], 5146 + type: "params", 5147 + required: ["uri"], 5144 5148 properties: { 5145 5149 uri: { 5146 - type: 'string', 5147 - description: 'The URI of the track to retrieve shouts for', 5148 - format: 'at-uri', 5150 + type: "string", 5151 + description: "The URI of the track to retrieve shouts for", 5152 + format: "at-uri", 5149 5153 }, 5150 5154 }, 5151 5155 }, 5152 5156 output: { 5153 - encoding: 'application/json', 5157 + encoding: "application/json", 5154 5158 schema: { 5155 - type: 'object', 5159 + type: "object", 5156 5160 properties: { 5157 5161 shouts: { 5158 - type: 'array', 5162 + type: "array", 5159 5163 items: { 5160 - type: 'ref', 5161 - ref: 'lex:app.rocksky.shout.defs#shoutViewBasic', 5164 + type: "ref", 5165 + ref: "lex:app.rocksky.shout.defs#shoutViewBasic", 5162 5166 }, 5163 5167 }, 5164 5168 }, ··· 5169 5173 }, 5170 5174 AppRockskyShoutRemoveShout: { 5171 5175 lexicon: 1, 5172 - id: 'app.rocksky.shout.removeShout', 5176 + id: "app.rocksky.shout.removeShout", 5173 5177 defs: { 5174 5178 main: { 5175 - type: 'procedure', 5176 - description: 'Remove a shout by its ID', 5179 + type: "procedure", 5180 + description: "Remove a shout by its ID", 5177 5181 parameters: { 5178 - type: 'params', 5179 - required: ['id'], 5182 + type: "params", 5183 + required: ["id"], 5180 5184 properties: { 5181 5185 id: { 5182 - type: 'string', 5183 - description: 'The ID of the shout to be removed', 5186 + type: "string", 5187 + description: "The ID of the shout to be removed", 5184 5188 }, 5185 5189 }, 5186 5190 }, 5187 5191 output: { 5188 - encoding: 'application/json', 5192 + encoding: "application/json", 5189 5193 schema: { 5190 - type: 'ref', 5191 - ref: 'lex:app.rocksky.shout.defs#shoutView', 5194 + type: "ref", 5195 + ref: "lex:app.rocksky.shout.defs#shoutView", 5192 5196 }, 5193 5197 }, 5194 5198 }, ··· 5196 5200 }, 5197 5201 AppRockskyShoutReplyShout: { 5198 5202 lexicon: 1, 5199 - id: 'app.rocksky.shout.replyShout', 5203 + id: "app.rocksky.shout.replyShout", 5200 5204 defs: { 5201 5205 main: { 5202 - type: 'procedure', 5203 - description: 'Reply to a shout', 5206 + type: "procedure", 5207 + description: "Reply to a shout", 5204 5208 input: { 5205 - encoding: 'application/json', 5209 + encoding: "application/json", 5206 5210 schema: { 5207 - type: 'object', 5208 - required: ['shoutId', 'message'], 5211 + type: "object", 5212 + required: ["shoutId", "message"], 5209 5213 properties: { 5210 5214 shoutId: { 5211 - type: 'string', 5212 - description: 'The unique identifier of the shout to reply to', 5215 + type: "string", 5216 + description: "The unique identifier of the shout to reply to", 5213 5217 }, 5214 5218 message: { 5215 - type: 'string', 5216 - description: 'The content of the reply', 5219 + type: "string", 5220 + description: "The content of the reply", 5217 5221 minLength: 1, 5218 5222 }, 5219 5223 }, 5220 5224 }, 5221 5225 }, 5222 5226 output: { 5223 - encoding: 'application/json', 5227 + encoding: "application/json", 5224 5228 schema: { 5225 - type: 'ref', 5226 - ref: 'lex:app.rocksky.shout.defs#shoutView', 5229 + type: "ref", 5230 + ref: "lex:app.rocksky.shout.defs#shoutView", 5227 5231 }, 5228 5232 }, 5229 5233 }, ··· 5231 5235 }, 5232 5236 AppRockskyShoutReportShout: { 5233 5237 lexicon: 1, 5234 - id: 'app.rocksky.shout.reportShout', 5238 + id: "app.rocksky.shout.reportShout", 5235 5239 defs: { 5236 5240 main: { 5237 - type: 'procedure', 5238 - description: 'Report a shout for moderation', 5241 + type: "procedure", 5242 + description: "Report a shout for moderation", 5239 5243 input: { 5240 - encoding: 'application/json', 5244 + encoding: "application/json", 5241 5245 schema: { 5242 - type: 'object', 5243 - required: ['shoutId'], 5246 + type: "object", 5247 + required: ["shoutId"], 5244 5248 properties: { 5245 5249 shoutId: { 5246 - type: 'string', 5247 - description: 'The unique identifier of the shout to report', 5250 + type: "string", 5251 + description: "The unique identifier of the shout to report", 5248 5252 }, 5249 5253 reason: { 5250 - type: 'string', 5251 - description: 'The reason for reporting the shout', 5254 + type: "string", 5255 + description: "The reason for reporting the shout", 5252 5256 minLength: 1, 5253 5257 }, 5254 5258 }, 5255 5259 }, 5256 5260 }, 5257 5261 output: { 5258 - encoding: 'application/json', 5262 + encoding: "application/json", 5259 5263 schema: { 5260 - type: 'ref', 5261 - ref: 'lex:app.rocksky.shout.defs#shoutView', 5264 + type: "ref", 5265 + ref: "lex:app.rocksky.shout.defs#shoutView", 5262 5266 }, 5263 5267 }, 5264 5268 }, ··· 5266 5270 }, 5267 5271 AppRockskyShout: { 5268 5272 lexicon: 1, 5269 - id: 'app.rocksky.shout', 5273 + id: "app.rocksky.shout", 5270 5274 defs: { 5271 5275 main: { 5272 - type: 'record', 5273 - description: 'A declaration of a shout.', 5274 - key: 'tid', 5276 + type: "record", 5277 + description: "A declaration of a shout.", 5278 + key: "tid", 5275 5279 record: { 5276 - type: 'object', 5277 - required: ['message', 'createdAt', 'subject'], 5280 + type: "object", 5281 + required: ["message", "createdAt", "subject"], 5278 5282 properties: { 5279 5283 message: { 5280 - type: 'string', 5281 - description: 'The message of the shout.', 5284 + type: "string", 5285 + description: "The message of the shout.", 5282 5286 minLength: 1, 5283 5287 maxLength: 1000, 5284 5288 }, 5285 5289 createdAt: { 5286 - type: 'string', 5287 - description: 'The date when the shout was created.', 5288 - format: 'datetime', 5290 + type: "string", 5291 + description: "The date when the shout was created.", 5292 + format: "datetime", 5289 5293 }, 5290 5294 parent: { 5291 - type: 'ref', 5292 - ref: 'lex:com.atproto.repo.strongRef', 5295 + type: "ref", 5296 + ref: "lex:com.atproto.repo.strongRef", 5293 5297 }, 5294 5298 subject: { 5295 - type: 'ref', 5296 - ref: 'lex:com.atproto.repo.strongRef', 5299 + type: "ref", 5300 + ref: "lex:com.atproto.repo.strongRef", 5297 5301 }, 5298 5302 }, 5299 5303 }, ··· 5302 5306 }, 5303 5307 AppRockskySongCreateSong: { 5304 5308 lexicon: 1, 5305 - id: 'app.rocksky.song.createSong', 5309 + id: "app.rocksky.song.createSong", 5306 5310 defs: { 5307 5311 main: { 5308 - type: 'procedure', 5309 - description: 'Create a new song', 5312 + type: "procedure", 5313 + description: "Create a new song", 5310 5314 input: { 5311 - encoding: 'application/json', 5315 + encoding: "application/json", 5312 5316 schema: { 5313 - type: 'object', 5314 - required: ['title', 'artist', 'album', 'albumArtist'], 5317 + type: "object", 5318 + required: ["title", "artist", "album", "albumArtist"], 5315 5319 properties: { 5316 5320 title: { 5317 - type: 'string', 5318 - description: 'The title of the song', 5321 + type: "string", 5322 + description: "The title of the song", 5319 5323 }, 5320 5324 artist: { 5321 - type: 'string', 5322 - description: 'The artist of the song', 5325 + type: "string", 5326 + description: "The artist of the song", 5323 5327 }, 5324 5328 albumArtist: { 5325 - type: 'string', 5329 + type: "string", 5326 5330 description: 5327 - 'The album artist of the song, if different from the main artist', 5331 + "The album artist of the song, if different from the main artist", 5328 5332 }, 5329 5333 album: { 5330 - type: 'string', 5331 - description: 'The album of the song, if applicable', 5334 + type: "string", 5335 + description: "The album of the song, if applicable", 5332 5336 }, 5333 5337 duration: { 5334 - type: 'integer', 5335 - description: 'The duration of the song in seconds', 5338 + type: "integer", 5339 + description: "The duration of the song in seconds", 5336 5340 }, 5337 5341 mbId: { 5338 - type: 'string', 5339 - description: 'The MusicBrainz ID of the song, if available', 5342 + type: "string", 5343 + description: "The MusicBrainz ID of the song, if available", 5340 5344 }, 5341 5345 albumArt: { 5342 - type: 'string', 5343 - description: 'The URL of the album art for the song', 5344 - format: 'uri', 5346 + type: "string", 5347 + description: "The URL of the album art for the song", 5348 + format: "uri", 5345 5349 }, 5346 5350 trackNumber: { 5347 - type: 'integer', 5351 + type: "integer", 5348 5352 description: 5349 - 'The track number of the song in the album, if applicable', 5353 + "The track number of the song in the album, if applicable", 5350 5354 }, 5351 5355 releaseDate: { 5352 - type: 'string', 5356 + type: "string", 5353 5357 description: 5354 - 'The release date of the song, formatted as YYYY-MM-DD', 5358 + "The release date of the song, formatted as YYYY-MM-DD", 5355 5359 }, 5356 5360 year: { 5357 - type: 'integer', 5358 - description: 'The year the song was released', 5361 + type: "integer", 5362 + description: "The year the song was released", 5359 5363 }, 5360 5364 discNumber: { 5361 - type: 'integer', 5365 + type: "integer", 5362 5366 description: 5363 - 'The disc number of the song in the album, if applicable', 5367 + "The disc number of the song in the album, if applicable", 5364 5368 }, 5365 5369 lyrics: { 5366 - type: 'string', 5367 - description: 'The lyrics of the song, if available', 5370 + type: "string", 5371 + description: "The lyrics of the song, if available", 5368 5372 }, 5369 5373 }, 5370 5374 }, 5371 5375 }, 5372 5376 output: { 5373 - encoding: 'application/json', 5377 + encoding: "application/json", 5374 5378 schema: { 5375 - type: 'ref', 5376 - ref: 'lex:app.rocksky.song.defs#songViewDetailed', 5379 + type: "ref", 5380 + ref: "lex:app.rocksky.song.defs#songViewDetailed", 5377 5381 }, 5378 5382 }, 5379 5383 }, ··· 5381 5385 }, 5382 5386 AppRockskySongDefs: { 5383 5387 lexicon: 1, 5384 - id: 'app.rocksky.song.defs', 5388 + id: "app.rocksky.song.defs", 5385 5389 defs: { 5386 5390 songViewBasic: { 5387 - type: 'object', 5391 + type: "object", 5388 5392 properties: { 5389 5393 id: { 5390 - type: 'string', 5391 - description: 'The unique identifier of the song.', 5394 + type: "string", 5395 + description: "The unique identifier of the song.", 5392 5396 }, 5393 5397 title: { 5394 - type: 'string', 5395 - description: 'The title of the song.', 5398 + type: "string", 5399 + description: "The title of the song.", 5396 5400 }, 5397 5401 artist: { 5398 - type: 'string', 5399 - description: 'The artist of the song.', 5402 + type: "string", 5403 + description: "The artist of the song.", 5400 5404 }, 5401 5405 albumArtist: { 5402 - type: 'string', 5403 - description: 'The artist of the album the song belongs to.', 5406 + type: "string", 5407 + description: "The artist of the album the song belongs to.", 5404 5408 }, 5405 5409 albumArt: { 5406 - type: 'string', 5407 - description: 'The URL of the album art image.', 5408 - format: 'uri', 5410 + type: "string", 5411 + description: "The URL of the album art image.", 5412 + format: "uri", 5409 5413 }, 5410 5414 uri: { 5411 - type: 'string', 5412 - description: 'The URI of the song.', 5413 - format: 'at-uri', 5415 + type: "string", 5416 + description: "The URI of the song.", 5417 + format: "at-uri", 5414 5418 }, 5415 5419 album: { 5416 - type: 'string', 5417 - description: 'The album of the song.', 5420 + type: "string", 5421 + description: "The album of the song.", 5418 5422 }, 5419 5423 duration: { 5420 - type: 'integer', 5421 - description: 'The duration of the song in milliseconds.', 5424 + type: "integer", 5425 + description: "The duration of the song in milliseconds.", 5422 5426 }, 5423 5427 trackNumber: { 5424 - type: 'integer', 5425 - description: 'The track number of the song in the album.', 5428 + type: "integer", 5429 + description: "The track number of the song in the album.", 5426 5430 }, 5427 5431 discNumber: { 5428 - type: 'integer', 5429 - description: 'The disc number of the song in the album.', 5432 + type: "integer", 5433 + description: "The disc number of the song in the album.", 5430 5434 }, 5431 5435 playCount: { 5432 - type: 'integer', 5433 - description: 'The number of times the song has been played.', 5436 + type: "integer", 5437 + description: "The number of times the song has been played.", 5434 5438 minimum: 0, 5435 5439 }, 5436 5440 uniqueListeners: { 5437 - type: 'integer', 5441 + type: "integer", 5438 5442 description: 5439 - 'The number of unique listeners who have played the song.', 5443 + "The number of unique listeners who have played the song.", 5440 5444 minimum: 0, 5441 5445 }, 5442 5446 albumUri: { 5443 - type: 'string', 5444 - description: 'The URI of the album the song belongs to.', 5445 - format: 'at-uri', 5447 + type: "string", 5448 + description: "The URI of the album the song belongs to.", 5449 + format: "at-uri", 5446 5450 }, 5447 5451 artistUri: { 5448 - type: 'string', 5449 - description: 'The URI of the artist of the song.', 5450 - format: 'at-uri', 5452 + type: "string", 5453 + description: "The URI of the artist of the song.", 5454 + format: "at-uri", 5451 5455 }, 5452 5456 sha256: { 5453 - type: 'string', 5454 - description: 'The SHA256 hash of the song.', 5457 + type: "string", 5458 + description: "The SHA256 hash of the song.", 5455 5459 }, 5456 5460 tags: { 5457 - type: 'array', 5461 + type: "array", 5458 5462 items: { 5459 - type: 'string', 5463 + type: "string", 5460 5464 }, 5461 5465 }, 5462 5466 createdAt: { 5463 - type: 'string', 5464 - description: 'The timestamp when the song was created.', 5465 - format: 'datetime', 5467 + type: "string", 5468 + description: "The timestamp when the song was created.", 5469 + format: "datetime", 5466 5470 }, 5467 5471 }, 5468 5472 }, 5469 5473 songViewDetailed: { 5470 - type: 'object', 5474 + type: "object", 5471 5475 properties: { 5472 5476 id: { 5473 - type: 'string', 5474 - description: 'The unique identifier of the song.', 5477 + type: "string", 5478 + description: "The unique identifier of the song.", 5475 5479 }, 5476 5480 title: { 5477 - type: 'string', 5478 - description: 'The title of the song.', 5481 + type: "string", 5482 + description: "The title of the song.", 5479 5483 }, 5480 5484 artist: { 5481 - type: 'string', 5482 - description: 'The artist of the song.', 5485 + type: "string", 5486 + description: "The artist of the song.", 5483 5487 }, 5484 5488 albumArtist: { 5485 - type: 'string', 5486 - description: 'The artist of the album the song belongs to.', 5489 + type: "string", 5490 + description: "The artist of the album the song belongs to.", 5487 5491 }, 5488 5492 albumArt: { 5489 - type: 'string', 5490 - description: 'The URL of the album art image.', 5491 - format: 'uri', 5493 + type: "string", 5494 + description: "The URL of the album art image.", 5495 + format: "uri", 5492 5496 }, 5493 5497 uri: { 5494 - type: 'string', 5495 - description: 'The URI of the song.', 5496 - format: 'at-uri', 5498 + type: "string", 5499 + description: "The URI of the song.", 5500 + format: "at-uri", 5497 5501 }, 5498 5502 album: { 5499 - type: 'string', 5500 - description: 'The album of the song.', 5503 + type: "string", 5504 + description: "The album of the song.", 5501 5505 }, 5502 5506 duration: { 5503 - type: 'integer', 5504 - description: 'The duration of the song in milliseconds.', 5507 + type: "integer", 5508 + description: "The duration of the song in milliseconds.", 5505 5509 }, 5506 5510 trackNumber: { 5507 - type: 'integer', 5508 - description: 'The track number of the song in the album.', 5511 + type: "integer", 5512 + description: "The track number of the song in the album.", 5509 5513 }, 5510 5514 discNumber: { 5511 - type: 'integer', 5512 - description: 'The disc number of the song in the album.', 5515 + type: "integer", 5516 + description: "The disc number of the song in the album.", 5513 5517 }, 5514 5518 playCount: { 5515 - type: 'integer', 5516 - description: 'The number of times the song has been played.', 5519 + type: "integer", 5520 + description: "The number of times the song has been played.", 5517 5521 minimum: 0, 5518 5522 }, 5519 5523 uniqueListeners: { 5520 - type: 'integer', 5524 + type: "integer", 5521 5525 description: 5522 - 'The number of unique listeners who have played the song.', 5526 + "The number of unique listeners who have played the song.", 5523 5527 minimum: 0, 5524 5528 }, 5525 5529 albumUri: { 5526 - type: 'string', 5527 - description: 'The URI of the album the song belongs to.', 5528 - format: 'at-uri', 5530 + type: "string", 5531 + description: "The URI of the album the song belongs to.", 5532 + format: "at-uri", 5529 5533 }, 5530 5534 artistUri: { 5531 - type: 'string', 5532 - description: 'The URI of the artist of the song.', 5533 - format: 'at-uri', 5535 + type: "string", 5536 + description: "The URI of the artist of the song.", 5537 + format: "at-uri", 5534 5538 }, 5535 5539 sha256: { 5536 - type: 'string', 5537 - description: 'The SHA256 hash of the song.', 5540 + type: "string", 5541 + description: "The SHA256 hash of the song.", 5538 5542 }, 5539 5543 tags: { 5540 - type: 'array', 5544 + type: "array", 5541 5545 items: { 5542 - type: 'string', 5546 + type: "string", 5543 5547 }, 5544 5548 }, 5545 5549 createdAt: { 5546 - type: 'string', 5547 - description: 'The timestamp when the song was created.', 5548 - format: 'datetime', 5550 + type: "string", 5551 + description: "The timestamp when the song was created.", 5552 + format: "datetime", 5549 5553 }, 5550 5554 }, 5551 5555 }, ··· 5553 5557 }, 5554 5558 AppRockskySongGetSong: { 5555 5559 lexicon: 1, 5556 - id: 'app.rocksky.song.getSong', 5560 + id: "app.rocksky.song.getSong", 5557 5561 defs: { 5558 5562 main: { 5559 - type: 'query', 5560 - description: 'Get a song by its uri', 5563 + type: "query", 5564 + description: "Get a song by its uri", 5561 5565 parameters: { 5562 - type: 'params', 5563 - required: ['uri'], 5566 + type: "params", 5567 + required: ["uri"], 5564 5568 properties: { 5565 5569 uri: { 5566 - type: 'string', 5567 - description: 'The unique identifier of the song to retrieve', 5568 - format: 'at-uri', 5570 + type: "string", 5571 + description: "The unique identifier of the song to retrieve", 5572 + format: "at-uri", 5569 5573 }, 5570 5574 }, 5571 5575 }, 5572 5576 output: { 5573 - encoding: 'application/json', 5577 + encoding: "application/json", 5574 5578 schema: { 5575 - type: 'ref', 5576 - ref: 'lex:app.rocksky.song.defs#songViewDetailed', 5579 + type: "ref", 5580 + ref: "lex:app.rocksky.song.defs#songViewDetailed", 5577 5581 }, 5578 5582 }, 5579 5583 }, ··· 5581 5585 }, 5582 5586 AppRockskySongGetSongs: { 5583 5587 lexicon: 1, 5584 - id: 'app.rocksky.song.getSongs', 5588 + id: "app.rocksky.song.getSongs", 5585 5589 defs: { 5586 5590 main: { 5587 - type: 'query', 5588 - description: 'Get songs', 5591 + type: "query", 5592 + description: "Get songs", 5589 5593 parameters: { 5590 - type: 'params', 5594 + type: "params", 5591 5595 properties: { 5592 5596 limit: { 5593 - type: 'integer', 5594 - description: 'The maximum number of songs to return', 5597 + type: "integer", 5598 + description: "The maximum number of songs to return", 5595 5599 minimum: 1, 5596 5600 }, 5597 5601 offset: { 5598 - type: 'integer', 5599 - description: 'The offset for pagination', 5602 + type: "integer", 5603 + description: "The offset for pagination", 5600 5604 minimum: 0, 5601 5605 }, 5602 5606 genre: { 5603 - type: 'string', 5604 - description: 'The genre to filter artists by', 5607 + type: "string", 5608 + description: "The genre to filter artists by", 5605 5609 }, 5606 5610 }, 5607 5611 }, 5608 5612 output: { 5609 - encoding: 'application/json', 5613 + encoding: "application/json", 5610 5614 schema: { 5611 - type: 'object', 5615 + type: "object", 5612 5616 properties: { 5613 5617 songs: { 5614 - type: 'array', 5618 + type: "array", 5615 5619 items: { 5616 - type: 'ref', 5617 - ref: 'lex:app.rocksky.song.defs#songViewBasic', 5620 + type: "ref", 5621 + ref: "lex:app.rocksky.song.defs#songViewBasic", 5618 5622 }, 5619 5623 }, 5620 5624 }, ··· 5625 5629 }, 5626 5630 AppRockskySongMatchSong: { 5627 5631 lexicon: 1, 5628 - id: 'app.rocksky.song.matchSong', 5632 + id: "app.rocksky.song.matchSong", 5629 5633 defs: { 5630 5634 main: { 5631 - type: 'query', 5635 + type: "query", 5632 5636 description: 5633 - 'Matches a song against Rocksky’s music database and external metadata providers to resolve the best canonical track, artist, and album', 5637 + "Matches a song against Rocksky’s music database and external metadata providers to resolve the best canonical track, artist, and album", 5634 5638 parameters: { 5635 - type: 'params', 5636 - required: ['title', 'artist'], 5639 + type: "params", 5640 + required: ["title", "artist"], 5637 5641 properties: { 5638 5642 title: { 5639 - type: 'string', 5640 - description: 'The title of the song to retrieve', 5643 + type: "string", 5644 + description: "The title of the song to retrieve", 5641 5645 }, 5642 5646 artist: { 5643 - type: 'string', 5644 - description: 'The artist of the song to retrieve', 5647 + type: "string", 5648 + description: "The artist of the song to retrieve", 5645 5649 }, 5646 5650 }, 5647 5651 }, 5648 5652 output: { 5649 - encoding: 'application/json', 5653 + encoding: "application/json", 5650 5654 schema: { 5651 - type: 'ref', 5652 - ref: 'lex:app.rocksky.song.defs#songViewDetailed', 5655 + type: "ref", 5656 + ref: "lex:app.rocksky.song.defs#songViewDetailed", 5653 5657 }, 5654 5658 }, 5655 5659 }, ··· 5657 5661 }, 5658 5662 AppRockskySong: { 5659 5663 lexicon: 1, 5660 - id: 'app.rocksky.song', 5664 + id: "app.rocksky.song", 5661 5665 defs: { 5662 5666 main: { 5663 - type: 'record', 5664 - description: 'A declaration of a song.', 5665 - key: 'tid', 5667 + type: "record", 5668 + description: "A declaration of a song.", 5669 + key: "tid", 5666 5670 record: { 5667 - type: 'object', 5671 + type: "object", 5668 5672 required: [ 5669 - 'title', 5670 - 'artist', 5671 - 'album', 5672 - 'albumArtist', 5673 - 'duration', 5674 - 'createdAt', 5673 + "title", 5674 + "artist", 5675 + "album", 5676 + "albumArtist", 5677 + "duration", 5678 + "createdAt", 5675 5679 ], 5676 5680 properties: { 5677 5681 title: { 5678 - type: 'string', 5679 - description: 'The title of the song.', 5682 + type: "string", 5683 + description: "The title of the song.", 5680 5684 minLength: 1, 5681 5685 maxLength: 512, 5682 5686 }, 5683 5687 artist: { 5684 - type: 'string', 5685 - description: 'The artist of the song.', 5688 + type: "string", 5689 + description: "The artist of the song.", 5686 5690 minLength: 1, 5687 5691 maxLength: 256, 5688 5692 }, 5689 5693 artists: { 5690 - type: 'array', 5691 - description: 'The artists of the song with MusicBrainz IDs.', 5694 + type: "array", 5695 + description: "The artists of the song with MusicBrainz IDs.", 5692 5696 items: { 5693 - type: 'ref', 5694 - ref: 'lex:app.rocksky.artist.defs#artistMbid', 5697 + type: "ref", 5698 + ref: "lex:app.rocksky.artist.defs#artistMbid", 5695 5699 }, 5696 5700 }, 5697 5701 albumArtist: { 5698 - type: 'string', 5699 - description: 'The album artist of the song.', 5702 + type: "string", 5703 + description: "The album artist of the song.", 5700 5704 minLength: 1, 5701 5705 maxLength: 256, 5702 5706 }, 5703 5707 album: { 5704 - type: 'string', 5705 - description: 'The album of the song.', 5708 + type: "string", 5709 + description: "The album of the song.", 5706 5710 minLength: 1, 5707 5711 maxLength: 256, 5708 5712 }, 5709 5713 duration: { 5710 - type: 'integer', 5711 - description: 'The duration of the song in seconds.', 5714 + type: "integer", 5715 + description: "The duration of the song in seconds.", 5712 5716 minimum: 1, 5713 5717 }, 5714 5718 trackNumber: { 5715 - type: 'integer', 5716 - description: 'The track number of the song in the album.', 5719 + type: "integer", 5720 + description: "The track number of the song in the album.", 5717 5721 minimum: 1, 5718 5722 }, 5719 5723 discNumber: { 5720 - type: 'integer', 5721 - description: 'The disc number of the song in the album.', 5724 + type: "integer", 5725 + description: "The disc number of the song in the album.", 5722 5726 minimum: 1, 5723 5727 }, 5724 5728 releaseDate: { 5725 - type: 'string', 5726 - description: 'The release date of the song.', 5727 - format: 'datetime', 5729 + type: "string", 5730 + description: "The release date of the song.", 5731 + format: "datetime", 5728 5732 }, 5729 5733 year: { 5730 - type: 'integer', 5731 - description: 'The year the song was released.', 5734 + type: "integer", 5735 + description: "The year the song was released.", 5732 5736 }, 5733 5737 genre: { 5734 - type: 'string', 5735 - description: 'The genre of the song.', 5738 + type: "string", 5739 + description: "The genre of the song.", 5736 5740 minLength: 1, 5737 5741 maxLength: 256, 5738 5742 }, 5739 5743 tags: { 5740 - type: 'array', 5741 - description: 'The tags of the song.', 5744 + type: "array", 5745 + description: "The tags of the song.", 5742 5746 items: { 5743 - type: 'string', 5747 + type: "string", 5744 5748 minLength: 1, 5745 5749 maxLength: 256, 5746 5750 }, 5747 5751 }, 5748 5752 composer: { 5749 - type: 'string', 5750 - description: 'The composer of the song.', 5753 + type: "string", 5754 + description: "The composer of the song.", 5751 5755 maxLength: 256, 5752 5756 }, 5753 5757 lyrics: { 5754 - type: 'string', 5755 - description: 'The lyrics of the song.', 5758 + type: "string", 5759 + description: "The lyrics of the song.", 5756 5760 maxLength: 10000, 5757 5761 }, 5758 5762 copyrightMessage: { 5759 - type: 'string', 5760 - description: 'The copyright message of the song.', 5763 + type: "string", 5764 + description: "The copyright message of the song.", 5761 5765 maxLength: 256, 5762 5766 }, 5763 5767 wiki: { 5764 - type: 'string', 5765 - description: 'Informations about the song', 5768 + type: "string", 5769 + description: "Informations about the song", 5766 5770 maxLength: 10000, 5767 5771 }, 5768 5772 albumArt: { 5769 - type: 'blob', 5770 - description: 'The album art of the song.', 5771 - accept: ['image/png', 'image/jpeg'], 5773 + type: "blob", 5774 + description: "The album art of the song.", 5775 + accept: ["image/png", "image/jpeg"], 5772 5776 maxSize: 2000000, 5773 5777 }, 5774 5778 albumArtUrl: { 5775 - type: 'string', 5776 - description: 'The URL of the album art of the song.', 5777 - format: 'uri', 5779 + type: "string", 5780 + description: "The URL of the album art of the song.", 5781 + format: "uri", 5778 5782 }, 5779 5783 youtubeLink: { 5780 - type: 'string', 5781 - description: 'The YouTube link of the song.', 5782 - format: 'uri', 5784 + type: "string", 5785 + description: "The YouTube link of the song.", 5786 + format: "uri", 5783 5787 }, 5784 5788 spotifyLink: { 5785 - type: 'string', 5786 - description: 'The Spotify link of the song.', 5787 - format: 'uri', 5789 + type: "string", 5790 + description: "The Spotify link of the song.", 5791 + format: "uri", 5788 5792 }, 5789 5793 tidalLink: { 5790 - type: 'string', 5791 - description: 'The Tidal link of the song.', 5792 - format: 'uri', 5794 + type: "string", 5795 + description: "The Tidal link of the song.", 5796 + format: "uri", 5793 5797 }, 5794 5798 appleMusicLink: { 5795 - type: 'string', 5796 - description: 'The Apple Music link of the song.', 5797 - format: 'uri', 5799 + type: "string", 5800 + description: "The Apple Music link of the song.", 5801 + format: "uri", 5798 5802 }, 5799 5803 createdAt: { 5800 - type: 'string', 5801 - description: 'The date when the song was created.', 5802 - format: 'datetime', 5804 + type: "string", 5805 + description: "The date when the song was created.", 5806 + format: "datetime", 5803 5807 }, 5804 5808 mbid: { 5805 - type: 'string', 5806 - description: 'The MusicBrainz ID of the song.', 5809 + type: "string", 5810 + description: "The MusicBrainz ID of the song.", 5807 5811 }, 5808 5812 label: { 5809 - type: 'string', 5810 - description: 'The label of the song.', 5813 + type: "string", 5814 + description: "The label of the song.", 5811 5815 maxLength: 256, 5812 5816 }, 5813 5817 }, ··· 5817 5821 }, 5818 5822 AppRockskySpotifyDefs: { 5819 5823 lexicon: 1, 5820 - id: 'app.rocksky.spotify.defs', 5824 + id: "app.rocksky.spotify.defs", 5821 5825 defs: { 5822 5826 spotifyTrackView: { 5823 - type: 'object', 5827 + type: "object", 5824 5828 properties: { 5825 5829 id: { 5826 - type: 'string', 5827 - description: 'The unique identifier of the Spotify track.', 5830 + type: "string", 5831 + description: "The unique identifier of the Spotify track.", 5828 5832 }, 5829 5833 name: { 5830 - type: 'string', 5831 - description: 'The name of the track.', 5834 + type: "string", 5835 + description: "The name of the track.", 5832 5836 }, 5833 5837 artist: { 5834 - type: 'string', 5835 - description: 'The name of the artist.', 5838 + type: "string", 5839 + description: "The name of the artist.", 5836 5840 }, 5837 5841 album: { 5838 - type: 'string', 5839 - description: 'The name of the album.', 5842 + type: "string", 5843 + description: "The name of the album.", 5840 5844 }, 5841 5845 duration: { 5842 - type: 'integer', 5843 - description: 'The duration of the track in milliseconds.', 5846 + type: "integer", 5847 + description: "The duration of the track in milliseconds.", 5844 5848 }, 5845 5849 previewUrl: { 5846 - type: 'string', 5847 - description: 'A URL to a preview of the track.', 5850 + type: "string", 5851 + description: "A URL to a preview of the track.", 5848 5852 }, 5849 5853 }, 5850 5854 }, ··· 5852 5856 }, 5853 5857 AppRockskySpotifyGetCurrentlyPlaying: { 5854 5858 lexicon: 1, 5855 - id: 'app.rocksky.spotify.getCurrentlyPlaying', 5859 + id: "app.rocksky.spotify.getCurrentlyPlaying", 5856 5860 defs: { 5857 5861 main: { 5858 - type: 'query', 5859 - description: 'Get the currently playing track', 5862 + type: "query", 5863 + description: "Get the currently playing track", 5860 5864 parameters: { 5861 - type: 'params', 5865 + type: "params", 5862 5866 properties: { 5863 5867 actor: { 5864 - type: 'string', 5868 + type: "string", 5865 5869 description: 5866 - 'Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.', 5867 - format: 'at-identifier', 5870 + "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.", 5871 + format: "at-identifier", 5868 5872 }, 5869 5873 }, 5870 5874 }, 5871 5875 output: { 5872 - encoding: 'application/json', 5876 + encoding: "application/json", 5873 5877 schema: { 5874 - type: 'ref', 5875 - ref: 'lex:app.rocksky.player.defs#currentlyPlayingViewDetailed', 5878 + type: "ref", 5879 + ref: "lex:app.rocksky.player.defs#currentlyPlayingViewDetailed", 5876 5880 }, 5877 5881 }, 5878 5882 }, ··· 5880 5884 }, 5881 5885 AppRockskySpotifyNext: { 5882 5886 lexicon: 1, 5883 - id: 'app.rocksky.spotify.next', 5887 + id: "app.rocksky.spotify.next", 5884 5888 defs: { 5885 5889 main: { 5886 - type: 'procedure', 5887 - description: 'Play the next track in the queue', 5890 + type: "procedure", 5891 + description: "Play the next track in the queue", 5888 5892 }, 5889 5893 }, 5890 5894 }, 5891 5895 AppRockskySpotifyPause: { 5892 5896 lexicon: 1, 5893 - id: 'app.rocksky.spotify.pause', 5897 + id: "app.rocksky.spotify.pause", 5894 5898 defs: { 5895 5899 main: { 5896 - type: 'procedure', 5897 - description: 'Pause the currently playing track', 5900 + type: "procedure", 5901 + description: "Pause the currently playing track", 5898 5902 }, 5899 5903 }, 5900 5904 }, 5901 5905 AppRockskySpotifyPlay: { 5902 5906 lexicon: 1, 5903 - id: 'app.rocksky.spotify.play', 5907 + id: "app.rocksky.spotify.play", 5904 5908 defs: { 5905 5909 main: { 5906 - type: 'procedure', 5907 - description: 'Resume playback of the currently paused track', 5910 + type: "procedure", 5911 + description: "Resume playback of the currently paused track", 5908 5912 }, 5909 5913 }, 5910 5914 }, 5911 5915 AppRockskySpotifyPrevious: { 5912 5916 lexicon: 1, 5913 - id: 'app.rocksky.spotify.previous', 5917 + id: "app.rocksky.spotify.previous", 5914 5918 defs: { 5915 5919 main: { 5916 - type: 'procedure', 5917 - description: 'Play the previous track in the queue', 5920 + type: "procedure", 5921 + description: "Play the previous track in the queue", 5918 5922 }, 5919 5923 }, 5920 5924 }, 5921 5925 AppRockskySpotifySeek: { 5922 5926 lexicon: 1, 5923 - id: 'app.rocksky.spotify.seek', 5927 + id: "app.rocksky.spotify.seek", 5924 5928 defs: { 5925 5929 main: { 5926 - type: 'procedure', 5930 + type: "procedure", 5927 5931 description: 5928 - 'Seek to a specific position in the currently playing track', 5932 + "Seek to a specific position in the currently playing track", 5929 5933 parameters: { 5930 - type: 'params', 5931 - required: ['position'], 5934 + type: "params", 5935 + required: ["position"], 5932 5936 properties: { 5933 5937 position: { 5934 - type: 'integer', 5935 - description: 'The position in seconds to seek to', 5938 + type: "integer", 5939 + description: "The position in seconds to seek to", 5936 5940 }, 5937 5941 }, 5938 5942 }, ··· 5941 5945 }, 5942 5946 AppRockskyStatsDefs: { 5943 5947 lexicon: 1, 5944 - id: 'app.rocksky.stats.defs', 5948 + id: "app.rocksky.stats.defs", 5945 5949 defs: { 5946 5950 statsView: { 5947 - type: 'object', 5951 + type: "object", 5948 5952 properties: { 5949 5953 scrobbles: { 5950 - type: 'integer', 5951 - description: 'The total number of scrobbles.', 5954 + type: "integer", 5955 + description: "The total number of scrobbles.", 5952 5956 }, 5953 5957 artists: { 5954 - type: 'integer', 5955 - description: 'The total number of unique artists scrobbled.', 5958 + type: "integer", 5959 + description: "The total number of unique artists scrobbled.", 5956 5960 }, 5957 5961 lovedTracks: { 5958 - type: 'integer', 5959 - description: 'The total number of tracks marked as loved.', 5962 + type: "integer", 5963 + description: "The total number of tracks marked as loved.", 5960 5964 }, 5961 5965 albums: { 5962 - type: 'integer', 5963 - description: 'The total number of unique albums scrobbled.', 5966 + type: "integer", 5967 + description: "The total number of unique albums scrobbled.", 5964 5968 }, 5965 5969 tracks: { 5966 - type: 'integer', 5967 - description: 'The total number of unique tracks scrobbled.', 5970 + type: "integer", 5971 + description: "The total number of unique tracks scrobbled.", 5968 5972 }, 5969 5973 }, 5970 5974 }, ··· 5972 5976 }, 5973 5977 AppRockskyStatsGetStats: { 5974 5978 lexicon: 1, 5975 - id: 'app.rocksky.stats.getStats', 5979 + id: "app.rocksky.stats.getStats", 5976 5980 defs: { 5977 5981 main: { 5978 - type: 'query', 5982 + type: "query", 5979 5983 parameters: { 5980 - type: 'params', 5981 - required: ['did'], 5984 + type: "params", 5985 + required: ["did"], 5982 5986 properties: { 5983 5987 did: { 5984 - type: 'string', 5985 - description: 'The DID or handle of the user to get stats for.', 5986 - format: 'at-identifier', 5988 + type: "string", 5989 + description: "The DID or handle of the user to get stats for.", 5990 + format: "at-identifier", 5987 5991 }, 5988 5992 }, 5989 5993 }, 5990 5994 output: { 5991 - encoding: 'application/json', 5995 + encoding: "application/json", 5992 5996 schema: { 5993 - type: 'ref', 5994 - ref: 'lex:app.rocksky.stats.defs#statsView', 5997 + type: "ref", 5998 + ref: "lex:app.rocksky.stats.defs#statsView", 5995 5999 }, 5996 6000 }, 5997 6001 }, ··· 5999 6003 }, 6000 6004 ComAtprotoRepoStrongRef: { 6001 6005 lexicon: 1, 6002 - id: 'com.atproto.repo.strongRef', 6003 - description: 'A URI with a content-hash fingerprint.', 6006 + id: "com.atproto.repo.strongRef", 6007 + description: "A URI with a content-hash fingerprint.", 6004 6008 defs: { 6005 6009 main: { 6006 - type: 'object', 6007 - required: ['uri', 'cid'], 6010 + type: "object", 6011 + required: ["uri", "cid"], 6008 6012 properties: { 6009 6013 uri: { 6010 - type: 'string', 6011 - format: 'at-uri', 6014 + type: "string", 6015 + format: "at-uri", 6012 6016 }, 6013 6017 cid: { 6014 - type: 'string', 6015 - format: 'cid', 6018 + type: "string", 6019 + format: "cid", 6016 6020 }, 6017 6021 }, 6018 6022 }, 6019 6023 }, 6020 6024 }, 6021 - } as const satisfies Record<string, LexiconDoc> 6025 + } as const satisfies Record<string, LexiconDoc>; 6022 6026 6023 - export const schemas = Object.values(schemaDict) 6024 - export const lexicons: Lexicons = new Lexicons(schemas) 6027 + export const schemas = Object.values(schemaDict); 6028 + export const lexicons: Lexicons = new Lexicons(schemas); 6025 6029 export const ids = { 6026 - FmTealAlphaActorDefs: 'fm.teal.alpha.actor.defs', 6027 - FmTealAlphaActorGetProfile: 'fm.teal.alpha.actor.getProfile', 6028 - FmTealAlphaActorGetProfiles: 'fm.teal.alpha.actor.getProfiles', 6029 - FmTealAlphaActorProfile: 'fm.teal.alpha.actor.profile', 6030 - FmTealAlphaActorSearchActors: 'fm.teal.alpha.actor.searchActors', 6031 - FmTealAlphaActorStatus: 'fm.teal.alpha.actor.status', 6032 - FmTealAlphaFeedDefs: 'fm.teal.alpha.feed.defs', 6033 - FmTealAlphaFeedGetActorFeed: 'fm.teal.alpha.feed.getActorFeed', 6034 - FmTealAlphaFeedGetPlay: 'fm.teal.alpha.feed.getPlay', 6035 - FmTealAlphaFeedPlay: 'fm.teal.alpha.feed.play', 6036 - AppRockskyActorDefs: 'app.rocksky.actor.defs', 6037 - AppRockskyActorGetActorAlbums: 'app.rocksky.actor.getActorAlbums', 6038 - AppRockskyActorGetActorArtists: 'app.rocksky.actor.getActorArtists', 6030 + FmTealAlphaActorDefs: "fm.teal.alpha.actor.defs", 6031 + FmTealAlphaActorGetProfile: "fm.teal.alpha.actor.getProfile", 6032 + FmTealAlphaActorGetProfiles: "fm.teal.alpha.actor.getProfiles", 6033 + FmTealAlphaActorProfile: "fm.teal.alpha.actor.profile", 6034 + FmTealAlphaActorSearchActors: "fm.teal.alpha.actor.searchActors", 6035 + FmTealAlphaActorStatus: "fm.teal.alpha.actor.status", 6036 + FmTealAlphaFeedDefs: "fm.teal.alpha.feed.defs", 6037 + FmTealAlphaFeedGetActorFeed: "fm.teal.alpha.feed.getActorFeed", 6038 + FmTealAlphaFeedGetPlay: "fm.teal.alpha.feed.getPlay", 6039 + FmTealAlphaFeedPlay: "fm.teal.alpha.feed.play", 6040 + AppRockskyActorDefs: "app.rocksky.actor.defs", 6041 + AppRockskyActorGetActorAlbums: "app.rocksky.actor.getActorAlbums", 6042 + AppRockskyActorGetActorArtists: "app.rocksky.actor.getActorArtists", 6039 6043 AppRockskyActorGetActorCompatibility: 6040 - 'app.rocksky.actor.getActorCompatibility', 6041 - AppRockskyActorGetActorLovedSongs: 'app.rocksky.actor.getActorLovedSongs', 6042 - AppRockskyActorGetActorNeighbours: 'app.rocksky.actor.getActorNeighbours', 6043 - AppRockskyActorGetActorPlaylists: 'app.rocksky.actor.getActorPlaylists', 6044 - AppRockskyActorGetActorScrobbles: 'app.rocksky.actor.getActorScrobbles', 6045 - AppRockskyActorGetActorSongs: 'app.rocksky.actor.getActorSongs', 6046 - AppRockskyActorGetProfile: 'app.rocksky.actor.getProfile', 6047 - AppBskyActorProfile: 'app.bsky.actor.profile', 6048 - AppRockskyAlbum: 'app.rocksky.album', 6049 - AppRockskyAlbumDefs: 'app.rocksky.album.defs', 6050 - AppRockskyAlbumGetAlbum: 'app.rocksky.album.getAlbum', 6051 - AppRockskyAlbumGetAlbums: 'app.rocksky.album.getAlbums', 6052 - AppRockskyAlbumGetAlbumTracks: 'app.rocksky.album.getAlbumTracks', 6053 - AppRockskyApikeyCreateApikey: 'app.rocksky.apikey.createApikey', 6054 - AppRockskyApikeyDefs: 'app.rocksky.apikey.defs', 6055 - AppRockskyApikeysDefs: 'app.rocksky.apikeys.defs', 6056 - AppRockskyApikeyGetApikeys: 'app.rocksky.apikey.getApikeys', 6057 - AppRockskyApikeyRemoveApikey: 'app.rocksky.apikey.removeApikey', 6058 - AppRockskyApikeyUpdateApikey: 'app.rocksky.apikey.updateApikey', 6059 - AppRockskyArtist: 'app.rocksky.artist', 6060 - AppRockskyArtistDefs: 'app.rocksky.artist.defs', 6061 - AppRockskyArtistGetArtist: 'app.rocksky.artist.getArtist', 6062 - AppRockskyArtistGetArtistAlbums: 'app.rocksky.artist.getArtistAlbums', 6063 - AppRockskyArtistGetArtistListeners: 'app.rocksky.artist.getArtistListeners', 6064 - AppRockskyArtistGetArtists: 'app.rocksky.artist.getArtists', 6065 - AppRockskyArtistGetArtistTracks: 'app.rocksky.artist.getArtistTracks', 6066 - AppRockskyChartsDefs: 'app.rocksky.charts.defs', 6067 - AppRockskyChartsGetScrobblesChart: 'app.rocksky.charts.getScrobblesChart', 6068 - AppRockskyDropboxDefs: 'app.rocksky.dropbox.defs', 6069 - AppRockskyDropboxDownloadFile: 'app.rocksky.dropbox.downloadFile', 6070 - AppRockskyDropboxGetFiles: 'app.rocksky.dropbox.getFiles', 6071 - AppRockskyDropboxGetMetadata: 'app.rocksky.dropbox.getMetadata', 6072 - AppRockskyDropboxGetTemporaryLink: 'app.rocksky.dropbox.getTemporaryLink', 6073 - AppRockskyFeedDefs: 'app.rocksky.feed.defs', 6074 - AppRockskyFeedDescribeFeedGenerator: 'app.rocksky.feed.describeFeedGenerator', 6075 - AppRockskyFeedGenerator: 'app.rocksky.feed.generator', 6076 - AppRockskyFeedGetFeed: 'app.rocksky.feed.getFeed', 6077 - AppRockskyFeedGetFeedGenerator: 'app.rocksky.feed.getFeedGenerator', 6078 - AppRockskyFeedGetFeedGenerators: 'app.rocksky.feed.getFeedGenerators', 6079 - AppRockskyFeedGetFeedSkeleton: 'app.rocksky.feed.getFeedSkeleton', 6080 - AppRockskyFeedGetNowPlayings: 'app.rocksky.feed.getNowPlayings', 6081 - AppRockskyFeedSearch: 'app.rocksky.feed.search', 6082 - AppRockskyGoogledriveDefs: 'app.rocksky.googledrive.defs', 6083 - AppRockskyGoogledriveDownloadFile: 'app.rocksky.googledrive.downloadFile', 6084 - AppRockskyGoogledriveGetFile: 'app.rocksky.googledrive.getFile', 6085 - AppRockskyGoogledriveGetFiles: 'app.rocksky.googledrive.getFiles', 6086 - AppRockskyGraphDefs: 'app.rocksky.graph.defs', 6087 - AppRockskyGraphFollow: 'app.rocksky.graph.follow', 6088 - AppRockskyGraphFollowAccount: 'app.rocksky.graph.followAccount', 6089 - AppRockskyGraphGetFollowers: 'app.rocksky.graph.getFollowers', 6090 - AppRockskyGraphGetFollows: 'app.rocksky.graph.getFollows', 6091 - AppRockskyGraphGetKnownFollowers: 'app.rocksky.graph.getKnownFollowers', 6092 - AppRockskyGraphUnfollowAccount: 'app.rocksky.graph.unfollowAccount', 6093 - AppRockskyLikeDislikeShout: 'app.rocksky.like.dislikeShout', 6094 - AppRockskyLikeDislikeSong: 'app.rocksky.like.dislikeSong', 6095 - AppRockskyLike: 'app.rocksky.like', 6096 - AppRockskyLikeLikeShout: 'app.rocksky.like.likeShout', 6097 - AppRockskyLikeLikeSong: 'app.rocksky.like.likeSong', 6098 - AppRockskyPlayerAddDirectoryToQueue: 'app.rocksky.player.addDirectoryToQueue', 6099 - AppRockskyPlayerAddItemsToQueue: 'app.rocksky.player.addItemsToQueue', 6100 - AppRockskyPlayerDefs: 'app.rocksky.player.defs', 6101 - AppRockskyPlayerGetCurrentlyPlaying: 'app.rocksky.player.getCurrentlyPlaying', 6102 - AppRockskyPlayerGetPlaybackQueue: 'app.rocksky.player.getPlaybackQueue', 6103 - AppRockskyPlayerNext: 'app.rocksky.player.next', 6104 - AppRockskyPlayerPause: 'app.rocksky.player.pause', 6105 - AppRockskyPlayerPlay: 'app.rocksky.player.play', 6106 - AppRockskyPlayerPlayDirectory: 'app.rocksky.player.playDirectory', 6107 - AppRockskyPlayerPlayFile: 'app.rocksky.player.playFile', 6108 - AppRockskyPlayerPrevious: 'app.rocksky.player.previous', 6109 - AppRockskyPlayerSeek: 'app.rocksky.player.seek', 6110 - AppRockskyPlaylistCreatePlaylist: 'app.rocksky.playlist.createPlaylist', 6111 - AppRockskyPlaylistDefs: 'app.rocksky.playlist.defs', 6112 - AppRockskyPlaylistGetPlaylist: 'app.rocksky.playlist.getPlaylist', 6113 - AppRockskyPlaylistGetPlaylists: 'app.rocksky.playlist.getPlaylists', 6114 - AppRockskyPlaylistInsertDirectory: 'app.rocksky.playlist.insertDirectory', 6115 - AppRockskyPlaylistInsertFiles: 'app.rocksky.playlist.insertFiles', 6116 - AppRockskyPlaylist: 'app.rocksky.playlist', 6117 - AppRockskyPlaylistItem: 'app.rocksky.playlistItem', 6118 - AppRockskyPlaylistRemovePlaylist: 'app.rocksky.playlist.removePlaylist', 6119 - AppRockskyPlaylistRemoveTrack: 'app.rocksky.playlist.removeTrack', 6120 - AppRockskyPlaylistStartPlaylist: 'app.rocksky.playlist.startPlaylist', 6121 - AppRockskyRadioDefs: 'app.rocksky.radio.defs', 6122 - AppRockskyRadio: 'app.rocksky.radio', 6123 - AppRockskyScrobbleCreateScrobble: 'app.rocksky.scrobble.createScrobble', 6124 - AppRockskyScrobbleDefs: 'app.rocksky.scrobble.defs', 6125 - AppRockskyScrobbleGetScrobble: 'app.rocksky.scrobble.getScrobble', 6126 - AppRockskyScrobbleGetScrobbles: 'app.rocksky.scrobble.getScrobbles', 6127 - AppRockskyScrobble: 'app.rocksky.scrobble', 6128 - AppRockskyShoutCreateShout: 'app.rocksky.shout.createShout', 6129 - AppRockskyShoutDefs: 'app.rocksky.shout.defs', 6130 - AppRockskyShoutGetAlbumShouts: 'app.rocksky.shout.getAlbumShouts', 6131 - AppRockskyShoutGetArtistShouts: 'app.rocksky.shout.getArtistShouts', 6132 - AppRockskyShoutGetProfileShouts: 'app.rocksky.shout.getProfileShouts', 6133 - AppRockskyShoutGetShoutReplies: 'app.rocksky.shout.getShoutReplies', 6134 - AppRockskyShoutGetTrackShouts: 'app.rocksky.shout.getTrackShouts', 6135 - AppRockskyShoutRemoveShout: 'app.rocksky.shout.removeShout', 6136 - AppRockskyShoutReplyShout: 'app.rocksky.shout.replyShout', 6137 - AppRockskyShoutReportShout: 'app.rocksky.shout.reportShout', 6138 - AppRockskyShout: 'app.rocksky.shout', 6139 - AppRockskySongCreateSong: 'app.rocksky.song.createSong', 6140 - AppRockskySongDefs: 'app.rocksky.song.defs', 6141 - AppRockskySongGetSong: 'app.rocksky.song.getSong', 6142 - AppRockskySongGetSongs: 'app.rocksky.song.getSongs', 6143 - AppRockskySongMatchSong: 'app.rocksky.song.matchSong', 6144 - AppRockskySong: 'app.rocksky.song', 6145 - AppRockskySpotifyDefs: 'app.rocksky.spotify.defs', 6044 + "app.rocksky.actor.getActorCompatibility", 6045 + AppRockskyActorGetActorLovedSongs: "app.rocksky.actor.getActorLovedSongs", 6046 + AppRockskyActorGetActorNeighbours: "app.rocksky.actor.getActorNeighbours", 6047 + AppRockskyActorGetActorPlaylists: "app.rocksky.actor.getActorPlaylists", 6048 + AppRockskyActorGetActorScrobbles: "app.rocksky.actor.getActorScrobbles", 6049 + AppRockskyActorGetActorSongs: "app.rocksky.actor.getActorSongs", 6050 + AppRockskyActorGetProfile: "app.rocksky.actor.getProfile", 6051 + AppBskyActorProfile: "app.bsky.actor.profile", 6052 + AppRockskyAlbum: "app.rocksky.album", 6053 + AppRockskyAlbumDefs: "app.rocksky.album.defs", 6054 + AppRockskyAlbumGetAlbum: "app.rocksky.album.getAlbum", 6055 + AppRockskyAlbumGetAlbums: "app.rocksky.album.getAlbums", 6056 + AppRockskyAlbumGetAlbumTracks: "app.rocksky.album.getAlbumTracks", 6057 + AppRockskyApikeyCreateApikey: "app.rocksky.apikey.createApikey", 6058 + AppRockskyApikeyDefs: "app.rocksky.apikey.defs", 6059 + AppRockskyApikeysDefs: "app.rocksky.apikeys.defs", 6060 + AppRockskyApikeyGetApikeys: "app.rocksky.apikey.getApikeys", 6061 + AppRockskyApikeyRemoveApikey: "app.rocksky.apikey.removeApikey", 6062 + AppRockskyApikeyUpdateApikey: "app.rocksky.apikey.updateApikey", 6063 + AppRockskyArtist: "app.rocksky.artist", 6064 + AppRockskyArtistDefs: "app.rocksky.artist.defs", 6065 + AppRockskyArtistGetArtist: "app.rocksky.artist.getArtist", 6066 + AppRockskyArtistGetArtistAlbums: "app.rocksky.artist.getArtistAlbums", 6067 + AppRockskyArtistGetArtistListeners: "app.rocksky.artist.getArtistListeners", 6068 + AppRockskyArtistGetArtists: "app.rocksky.artist.getArtists", 6069 + AppRockskyArtistGetArtistTracks: "app.rocksky.artist.getArtistTracks", 6070 + AppRockskyChartsDefs: "app.rocksky.charts.defs", 6071 + AppRockskyChartsGetScrobblesChart: "app.rocksky.charts.getScrobblesChart", 6072 + AppRockskyDropboxDefs: "app.rocksky.dropbox.defs", 6073 + AppRockskyDropboxDownloadFile: "app.rocksky.dropbox.downloadFile", 6074 + AppRockskyDropboxGetFiles: "app.rocksky.dropbox.getFiles", 6075 + AppRockskyDropboxGetMetadata: "app.rocksky.dropbox.getMetadata", 6076 + AppRockskyDropboxGetTemporaryLink: "app.rocksky.dropbox.getTemporaryLink", 6077 + AppRockskyFeedDefs: "app.rocksky.feed.defs", 6078 + AppRockskyFeedDescribeFeedGenerator: "app.rocksky.feed.describeFeedGenerator", 6079 + AppRockskyFeedGenerator: "app.rocksky.feed.generator", 6080 + AppRockskyFeedGetFeed: "app.rocksky.feed.getFeed", 6081 + AppRockskyFeedGetFeedGenerator: "app.rocksky.feed.getFeedGenerator", 6082 + AppRockskyFeedGetFeedGenerators: "app.rocksky.feed.getFeedGenerators", 6083 + AppRockskyFeedGetFeedSkeleton: "app.rocksky.feed.getFeedSkeleton", 6084 + AppRockskyFeedGetNowPlayings: "app.rocksky.feed.getNowPlayings", 6085 + AppRockskyFeedSearch: "app.rocksky.feed.search", 6086 + AppRockskyGoogledriveDefs: "app.rocksky.googledrive.defs", 6087 + AppRockskyGoogledriveDownloadFile: "app.rocksky.googledrive.downloadFile", 6088 + AppRockskyGoogledriveGetFile: "app.rocksky.googledrive.getFile", 6089 + AppRockskyGoogledriveGetFiles: "app.rocksky.googledrive.getFiles", 6090 + AppRockskyGraphDefs: "app.rocksky.graph.defs", 6091 + AppRockskyGraphFollow: "app.rocksky.graph.follow", 6092 + AppRockskyGraphFollowAccount: "app.rocksky.graph.followAccount", 6093 + AppRockskyGraphGetFollowers: "app.rocksky.graph.getFollowers", 6094 + AppRockskyGraphGetFollows: "app.rocksky.graph.getFollows", 6095 + AppRockskyGraphGetKnownFollowers: "app.rocksky.graph.getKnownFollowers", 6096 + AppRockskyGraphUnfollowAccount: "app.rocksky.graph.unfollowAccount", 6097 + AppRockskyLikeDislikeShout: "app.rocksky.like.dislikeShout", 6098 + AppRockskyLikeDislikeSong: "app.rocksky.like.dislikeSong", 6099 + AppRockskyLike: "app.rocksky.like", 6100 + AppRockskyLikeLikeShout: "app.rocksky.like.likeShout", 6101 + AppRockskyLikeLikeSong: "app.rocksky.like.likeSong", 6102 + AppRockskyPlayerAddDirectoryToQueue: "app.rocksky.player.addDirectoryToQueue", 6103 + AppRockskyPlayerAddItemsToQueue: "app.rocksky.player.addItemsToQueue", 6104 + AppRockskyPlayerDefs: "app.rocksky.player.defs", 6105 + AppRockskyPlayerGetCurrentlyPlaying: "app.rocksky.player.getCurrentlyPlaying", 6106 + AppRockskyPlayerGetPlaybackQueue: "app.rocksky.player.getPlaybackQueue", 6107 + AppRockskyPlayerNext: "app.rocksky.player.next", 6108 + AppRockskyPlayerPause: "app.rocksky.player.pause", 6109 + AppRockskyPlayerPlay: "app.rocksky.player.play", 6110 + AppRockskyPlayerPlayDirectory: "app.rocksky.player.playDirectory", 6111 + AppRockskyPlayerPlayFile: "app.rocksky.player.playFile", 6112 + AppRockskyPlayerPrevious: "app.rocksky.player.previous", 6113 + AppRockskyPlayerSeek: "app.rocksky.player.seek", 6114 + AppRockskyPlaylistCreatePlaylist: "app.rocksky.playlist.createPlaylist", 6115 + AppRockskyPlaylistDefs: "app.rocksky.playlist.defs", 6116 + AppRockskyPlaylistGetPlaylist: "app.rocksky.playlist.getPlaylist", 6117 + AppRockskyPlaylistGetPlaylists: "app.rocksky.playlist.getPlaylists", 6118 + AppRockskyPlaylistInsertDirectory: "app.rocksky.playlist.insertDirectory", 6119 + AppRockskyPlaylistInsertFiles: "app.rocksky.playlist.insertFiles", 6120 + AppRockskyPlaylist: "app.rocksky.playlist", 6121 + AppRockskyPlaylistItem: "app.rocksky.playlistItem", 6122 + AppRockskyPlaylistRemovePlaylist: "app.rocksky.playlist.removePlaylist", 6123 + AppRockskyPlaylistRemoveTrack: "app.rocksky.playlist.removeTrack", 6124 + AppRockskyPlaylistStartPlaylist: "app.rocksky.playlist.startPlaylist", 6125 + AppRockskyRadioDefs: "app.rocksky.radio.defs", 6126 + AppRockskyRadio: "app.rocksky.radio", 6127 + AppRockskyScrobbleCreateScrobble: "app.rocksky.scrobble.createScrobble", 6128 + AppRockskyScrobbleDefs: "app.rocksky.scrobble.defs", 6129 + AppRockskyScrobbleGetScrobble: "app.rocksky.scrobble.getScrobble", 6130 + AppRockskyScrobbleGetScrobbles: "app.rocksky.scrobble.getScrobbles", 6131 + AppRockskyScrobble: "app.rocksky.scrobble", 6132 + AppRockskyShoutCreateShout: "app.rocksky.shout.createShout", 6133 + AppRockskyShoutDefs: "app.rocksky.shout.defs", 6134 + AppRockskyShoutGetAlbumShouts: "app.rocksky.shout.getAlbumShouts", 6135 + AppRockskyShoutGetArtistShouts: "app.rocksky.shout.getArtistShouts", 6136 + AppRockskyShoutGetProfileShouts: "app.rocksky.shout.getProfileShouts", 6137 + AppRockskyShoutGetShoutReplies: "app.rocksky.shout.getShoutReplies", 6138 + AppRockskyShoutGetTrackShouts: "app.rocksky.shout.getTrackShouts", 6139 + AppRockskyShoutRemoveShout: "app.rocksky.shout.removeShout", 6140 + AppRockskyShoutReplyShout: "app.rocksky.shout.replyShout", 6141 + AppRockskyShoutReportShout: "app.rocksky.shout.reportShout", 6142 + AppRockskyShout: "app.rocksky.shout", 6143 + AppRockskySongCreateSong: "app.rocksky.song.createSong", 6144 + AppRockskySongDefs: "app.rocksky.song.defs", 6145 + AppRockskySongGetSong: "app.rocksky.song.getSong", 6146 + AppRockskySongGetSongs: "app.rocksky.song.getSongs", 6147 + AppRockskySongMatchSong: "app.rocksky.song.matchSong", 6148 + AppRockskySong: "app.rocksky.song", 6149 + AppRockskySpotifyDefs: "app.rocksky.spotify.defs", 6146 6150 AppRockskySpotifyGetCurrentlyPlaying: 6147 - 'app.rocksky.spotify.getCurrentlyPlaying', 6148 - AppRockskySpotifyNext: 'app.rocksky.spotify.next', 6149 - AppRockskySpotifyPause: 'app.rocksky.spotify.pause', 6150 - AppRockskySpotifyPlay: 'app.rocksky.spotify.play', 6151 - AppRockskySpotifyPrevious: 'app.rocksky.spotify.previous', 6152 - AppRockskySpotifySeek: 'app.rocksky.spotify.seek', 6153 - AppRockskyStatsDefs: 'app.rocksky.stats.defs', 6154 - AppRockskyStatsGetStats: 'app.rocksky.stats.getStats', 6155 - ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 6156 - } 6151 + "app.rocksky.spotify.getCurrentlyPlaying", 6152 + AppRockskySpotifyNext: "app.rocksky.spotify.next", 6153 + AppRockskySpotifyPause: "app.rocksky.spotify.pause", 6154 + AppRockskySpotifyPlay: "app.rocksky.spotify.play", 6155 + AppRockskySpotifyPrevious: "app.rocksky.spotify.previous", 6156 + AppRockskySpotifySeek: "app.rocksky.spotify.seek", 6157 + AppRockskyStatsDefs: "app.rocksky.stats.defs", 6158 + AppRockskyStatsGetStats: "app.rocksky.stats.getStats", 6159 + ComAtprotoRepoStrongRef: "com.atproto.repo.strongRef", 6160 + };
+19 -19
apps/api/src/lexicon/types/app/bsky/actor/profile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 9 - import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs"; 9 + import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef"; 10 10 11 11 export interface Record { 12 - displayName?: string 12 + displayName?: string; 13 13 /** Free-form profile description text. */ 14 - description?: string 14 + description?: string; 15 15 /** Small image to be displayed next to posts from account. AKA, 'profile picture' */ 16 - avatar?: BlobRef 16 + avatar?: BlobRef; 17 17 /** Larger horizontal image to display behind profile view. */ 18 - banner?: BlobRef 18 + banner?: BlobRef; 19 19 labels?: 20 20 | ComAtprotoLabelDefs.SelfLabels 21 - | { $type: string; [k: string]: unknown } 22 - joinedViaStarterPack?: ComAtprotoRepoStrongRef.Main 23 - createdAt?: string 24 - [k: string]: unknown 21 + | { $type: string; [k: string]: unknown }; 22 + joinedViaStarterPack?: ComAtprotoRepoStrongRef.Main; 23 + createdAt?: string; 24 + [k: string]: unknown; 25 25 } 26 26 27 27 export function isRecord(v: unknown): v is Record { 28 28 return ( 29 29 isObj(v) && 30 - hasProp(v, '$type') && 31 - (v.$type === 'app.bsky.actor.profile#main' || 32 - v.$type === 'app.bsky.actor.profile') 33 - ) 30 + hasProp(v, "$type") && 31 + (v.$type === "app.bsky.actor.profile#main" || 32 + v.$type === "app.bsky.actor.profile") 33 + ); 34 34 } 35 35 36 36 export function validateRecord(v: unknown): ValidationResult { 37 - return lexicons.validate('app.bsky.actor.profile#main', v) 37 + return lexicons.validate("app.bsky.actor.profile#main", v); 38 38 }
+67 -67
apps/api/src/lexicon/types/app/rocksky/actor/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskyArtistDefs from '../artist/defs' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskyArtistDefs from "../artist/defs"; 9 9 10 10 export interface ProfileViewDetailed { 11 11 /** The unique identifier of the actor. */ 12 - id?: string 12 + id?: string; 13 13 /** The DID of the actor. */ 14 - did?: string 14 + did?: string; 15 15 /** The handle of the actor. */ 16 - handle?: string 16 + handle?: string; 17 17 /** The display name of the actor. */ 18 - displayName?: string 18 + displayName?: string; 19 19 /** The URL of the actor's avatar image. */ 20 - avatar?: string 20 + avatar?: string; 21 21 /** The date and time when the actor was created. */ 22 - createdAt?: string 22 + createdAt?: string; 23 23 /** The date and time when the actor was last updated. */ 24 - updatedAt?: string 25 - [k: string]: unknown 24 + updatedAt?: string; 25 + [k: string]: unknown; 26 26 } 27 27 28 28 export function isProfileViewDetailed(v: unknown): v is ProfileViewDetailed { 29 29 return ( 30 30 isObj(v) && 31 - hasProp(v, '$type') && 32 - v.$type === 'app.rocksky.actor.defs#profileViewDetailed' 33 - ) 31 + hasProp(v, "$type") && 32 + v.$type === "app.rocksky.actor.defs#profileViewDetailed" 33 + ); 34 34 } 35 35 36 36 export function validateProfileViewDetailed(v: unknown): ValidationResult { 37 - return lexicons.validate('app.rocksky.actor.defs#profileViewDetailed', v) 37 + return lexicons.validate("app.rocksky.actor.defs#profileViewDetailed", v); 38 38 } 39 39 40 40 export interface ProfileViewBasic { 41 41 /** The unique identifier of the actor. */ 42 - id?: string 42 + id?: string; 43 43 /** The DID of the actor. */ 44 - did?: string 44 + did?: string; 45 45 /** The handle of the actor. */ 46 - handle?: string 46 + handle?: string; 47 47 /** The display name of the actor. */ 48 - displayName?: string 48 + displayName?: string; 49 49 /** The URL of the actor's avatar image. */ 50 - avatar?: string 50 + avatar?: string; 51 51 /** The date and time when the actor was created. */ 52 - createdAt?: string 52 + createdAt?: string; 53 53 /** The date and time when the actor was last updated. */ 54 - updatedAt?: string 55 - [k: string]: unknown 54 + updatedAt?: string; 55 + [k: string]: unknown; 56 56 } 57 57 58 58 export function isProfileViewBasic(v: unknown): v is ProfileViewBasic { 59 59 return ( 60 60 isObj(v) && 61 - hasProp(v, '$type') && 62 - v.$type === 'app.rocksky.actor.defs#profileViewBasic' 63 - ) 61 + hasProp(v, "$type") && 62 + v.$type === "app.rocksky.actor.defs#profileViewBasic" 63 + ); 64 64 } 65 65 66 66 export function validateProfileViewBasic(v: unknown): ValidationResult { 67 - return lexicons.validate('app.rocksky.actor.defs#profileViewBasic', v) 67 + return lexicons.validate("app.rocksky.actor.defs#profileViewBasic", v); 68 68 } 69 69 70 70 export interface NeighbourViewBasic { 71 - userId?: string 72 - did?: string 73 - handle?: string 74 - displayName?: string 71 + userId?: string; 72 + did?: string; 73 + handle?: string; 74 + displayName?: string; 75 75 /** The URL of the actor's avatar image. */ 76 - avatar?: string 76 + avatar?: string; 77 77 /** The number of artists shared with the actor. */ 78 - sharedArtistsCount?: number 78 + sharedArtistsCount?: number; 79 79 /** The similarity score with the actor. */ 80 - similarityScore?: number 80 + similarityScore?: number; 81 81 /** The top shared artist names with the actor. */ 82 - topSharedArtistNames?: string[] 82 + topSharedArtistNames?: string[]; 83 83 /** The top shared artist details with the actor. */ 84 - topSharedArtistsDetails?: AppRockskyArtistDefs.ArtistViewBasic[] 85 - [k: string]: unknown 84 + topSharedArtistsDetails?: AppRockskyArtistDefs.ArtistViewBasic[]; 85 + [k: string]: unknown; 86 86 } 87 87 88 88 export function isNeighbourViewBasic(v: unknown): v is NeighbourViewBasic { 89 89 return ( 90 90 isObj(v) && 91 - hasProp(v, '$type') && 92 - v.$type === 'app.rocksky.actor.defs#neighbourViewBasic' 93 - ) 91 + hasProp(v, "$type") && 92 + v.$type === "app.rocksky.actor.defs#neighbourViewBasic" 93 + ); 94 94 } 95 95 96 96 export function validateNeighbourViewBasic(v: unknown): ValidationResult { 97 - return lexicons.validate('app.rocksky.actor.defs#neighbourViewBasic', v) 97 + return lexicons.validate("app.rocksky.actor.defs#neighbourViewBasic", v); 98 98 } 99 99 100 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 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 109 } 110 110 111 111 export function isCompatibilityViewBasic( ··· 113 113 ): v is CompatibilityViewBasic { 114 114 return ( 115 115 isObj(v) && 116 - hasProp(v, '$type') && 117 - v.$type === 'app.rocksky.actor.defs#compatibilityViewBasic' 118 - ) 116 + hasProp(v, "$type") && 117 + v.$type === "app.rocksky.actor.defs#compatibilityViewBasic" 118 + ); 119 119 } 120 120 121 121 export function validateCompatibilityViewBasic(v: unknown): ValidationResult { 122 - return lexicons.validate('app.rocksky.actor.defs#compatibilityViewBasic', v) 122 + return lexicons.validate("app.rocksky.actor.defs#compatibilityViewBasic", v); 123 123 } 124 124 125 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 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 134 } 135 135 136 136 export function isArtistViewBasic(v: unknown): v is ArtistViewBasic { 137 137 return ( 138 138 isObj(v) && 139 - hasProp(v, '$type') && 140 - v.$type === 'app.rocksky.actor.defs#artistViewBasic' 141 - ) 139 + hasProp(v, "$type") && 140 + v.$type === "app.rocksky.actor.defs#artistViewBasic" 141 + ); 142 142 } 143 143 144 144 export function validateArtistViewBasic(v: unknown): ValidationResult { 145 - return lexicons.validate('app.rocksky.actor.defs#artistViewBasic', v) 145 + return lexicons.validate("app.rocksky.actor.defs#artistViewBasic", v); 146 146 }
+30 -30
apps/api/src/lexicon/types/app/rocksky/actor/getActorAlbums.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyAlbumDefs from '../album/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyAlbumDefs from "../album/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The maximum number of albums to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 /** The start date to filter albums from (ISO 8601 format) */ 20 - startDate?: string 20 + startDate?: string; 21 21 /** The end date to filter albums to (ISO 8601 format) */ 22 - endDate?: string 22 + endDate?: string; 23 23 } 24 24 25 - export type InputSchema = undefined 25 + export type InputSchema = undefined; 26 26 27 27 export interface OutputSchema { 28 - albums?: AppRockskyAlbumDefs.AlbumViewBasic[] 29 - [k: string]: unknown 28 + albums?: AppRockskyAlbumDefs.AlbumViewBasic[]; 29 + [k: string]: unknown; 30 30 } 31 31 32 - export type HandlerInput = undefined 32 + export type HandlerInput = undefined; 33 33 34 34 export interface HandlerSuccess { 35 - encoding: 'application/json' 36 - body: OutputSchema 37 - headers?: { [key: string]: string } 35 + encoding: "application/json"; 36 + body: OutputSchema; 37 + headers?: { [key: string]: string }; 38 38 } 39 39 40 40 export interface HandlerError { 41 - status: number 42 - message?: string 41 + status: number; 42 + message?: string; 43 43 } 44 44 45 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 45 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 46 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 - } 47 + auth: HA; 48 + params: QueryParams; 49 + input: HandlerInput; 50 + req: express.Request; 51 + res: express.Response; 52 + resetRouteRateLimits: () => Promise<void>; 53 + }; 54 54 export type Handler<HA extends HandlerAuth = never> = ( 55 55 ctx: HandlerReqCtx<HA>, 56 - ) => Promise<HandlerOutput> | HandlerOutput 56 + ) => Promise<HandlerOutput> | HandlerOutput;
+30 -30
apps/api/src/lexicon/types/app/rocksky/actor/getActorArtists.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyArtistDefs from '../artist/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyArtistDefs from "../artist/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The maximum number of albums to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 /** The start date to filter albums from (ISO 8601 format) */ 20 - startDate?: string 20 + startDate?: string; 21 21 /** The end date to filter albums to (ISO 8601 format) */ 22 - endDate?: string 22 + endDate?: string; 23 23 } 24 24 25 - export type InputSchema = undefined 25 + export type InputSchema = undefined; 26 26 27 27 export interface OutputSchema { 28 - artists?: AppRockskyArtistDefs.ArtistViewBasic[] 29 - [k: string]: unknown 28 + artists?: AppRockskyArtistDefs.ArtistViewBasic[]; 29 + [k: string]: unknown; 30 30 } 31 31 32 - export type HandlerInput = undefined 32 + export type HandlerInput = undefined; 33 33 34 34 export interface HandlerSuccess { 35 - encoding: 'application/json' 36 - body: OutputSchema 37 - headers?: { [key: string]: string } 35 + encoding: "application/json"; 36 + body: OutputSchema; 37 + headers?: { [key: string]: string }; 38 38 } 39 39 40 40 export interface HandlerError { 41 - status: number 42 - message?: string 41 + status: number; 42 + message?: string; 43 43 } 44 44 45 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 45 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 46 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 - } 47 + auth: HA; 48 + params: QueryParams; 49 + input: HandlerInput; 50 + req: express.Request; 51 + res: express.Response; 52 + resetRouteRateLimits: () => Promise<void>; 53 + }; 54 54 export type Handler<HA extends HandlerAuth = never> = ( 55 55 ctx: HandlerReqCtx<HA>, 56 - ) => Promise<HandlerOutput> | HandlerOutput 56 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/actor/getActorCompatibility.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** DID or handle to get compatibility for */ 14 - did: string 14 + did: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - compatibility?: AppRockskyActorDefs.CompatibilityViewBasic 21 - [k: string]: unknown 20 + compatibility?: AppRockskyActorDefs.CompatibilityViewBasic; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/actor/getActorLovedSongs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from '../song/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "../song/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The maximum number of albums to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - tracks?: AppRockskySongDefs.SongViewBasic[] 25 - [k: string]: unknown 24 + tracks?: AppRockskySongDefs.SongViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/actor/getActorNeighbours.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - neighbours?: AppRockskyActorDefs.NeighbourViewBasic[] 21 - [k: string]: unknown 20 + neighbours?: AppRockskyActorDefs.NeighbourViewBasic[]; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/actor/getActorPlaylists.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyPlaylistDefs from '../playlist/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyPlaylistDefs from "../playlist/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The maximum number of albums to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - playlists?: AppRockskyPlaylistDefs.PlaylistViewBasic[] 25 - [k: string]: unknown 24 + playlists?: AppRockskyPlaylistDefs.PlaylistViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/actor/getActorScrobbles.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyScrobbleDefs from '../scrobble/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyScrobbleDefs from "../scrobble/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The maximum number of albums to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[] 25 - [k: string]: unknown 24 + scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+30 -30
apps/api/src/lexicon/types/app/rocksky/actor/getActorSongs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from '../song/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "../song/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The maximum number of albums to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 /** The start date to filter albums from (ISO 8601 format) */ 20 - startDate?: string 20 + startDate?: string; 21 21 /** The end date to filter albums to (ISO 8601 format) */ 22 - endDate?: string 22 + endDate?: string; 23 23 } 24 24 25 - export type InputSchema = undefined 25 + export type InputSchema = undefined; 26 26 27 27 export interface OutputSchema { 28 - songs?: AppRockskySongDefs.SongViewBasic[] 29 - [k: string]: unknown 28 + songs?: AppRockskySongDefs.SongViewBasic[]; 29 + [k: string]: unknown; 30 30 } 31 31 32 - export type HandlerInput = undefined 32 + export type HandlerInput = undefined; 33 33 34 34 export interface HandlerSuccess { 35 - encoding: 'application/json' 36 - body: OutputSchema 37 - headers?: { [key: string]: string } 35 + encoding: "application/json"; 36 + body: OutputSchema; 37 + headers?: { [key: string]: string }; 38 38 } 39 39 40 40 export interface HandlerError { 41 - status: number 42 - message?: string 41 + status: number; 42 + message?: string; 43 43 } 44 44 45 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 45 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 46 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 - } 47 + auth: HA; 48 + params: QueryParams; 49 + input: HandlerInput; 50 + req: express.Request; 51 + res: express.Response; 52 + resetRouteRateLimits: () => Promise<void>; 53 + }; 54 54 export type Handler<HA extends HandlerAuth = never> = ( 55 55 ctx: HandlerReqCtx<HA>, 56 - ) => Promise<HandlerOutput> | HandlerOutput 56 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/actor/getProfile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did?: string 14 + did?: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyActorDefs.ProfileViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyActorDefs.ProfileViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+23 -23
apps/api/src/lexicon/types/app/rocksky/album.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Record { 10 10 /** The title of the album. */ 11 - title: string 11 + title: string; 12 12 /** The artist of the album. */ 13 - artist: string 13 + artist: string; 14 14 /** The duration of the album in seconds. */ 15 - duration?: number 15 + duration?: number; 16 16 /** The release date of the album. */ 17 - releaseDate?: string 17 + releaseDate?: string; 18 18 /** The year the album was released. */ 19 - year?: number 19 + year?: number; 20 20 /** The genre of the album. */ 21 - genre?: string 21 + genre?: string; 22 22 /** The album art of the album. */ 23 - albumArt?: BlobRef 23 + albumArt?: BlobRef; 24 24 /** The URL of the album art of the album. */ 25 - albumArtUrl?: string 25 + albumArtUrl?: string; 26 26 /** The tags of the album. */ 27 - tags?: string[] 27 + tags?: string[]; 28 28 /** The YouTube link of the album. */ 29 - youtubeLink?: string 29 + youtubeLink?: string; 30 30 /** The Spotify link of the album. */ 31 - spotifyLink?: string 31 + spotifyLink?: string; 32 32 /** The tidal link of the album. */ 33 - tidalLink?: string 33 + tidalLink?: string; 34 34 /** The Apple Music link of the album. */ 35 - appleMusicLink?: string 35 + appleMusicLink?: string; 36 36 /** The date and time when the album was created. */ 37 - createdAt: string 38 - [k: string]: unknown 37 + createdAt: string; 38 + [k: string]: unknown; 39 39 } 40 40 41 41 export function isRecord(v: unknown): v is Record { 42 42 return ( 43 43 isObj(v) && 44 - hasProp(v, '$type') && 45 - (v.$type === 'app.rocksky.album#main' || v.$type === 'app.rocksky.album') 46 - ) 44 + hasProp(v, "$type") && 45 + (v.$type === "app.rocksky.album#main" || v.$type === "app.rocksky.album") 46 + ); 47 47 } 48 48 49 49 export function validateRecord(v: unknown): ValidationResult { 50 - return lexicons.validate('app.rocksky.album#main', v) 50 + return lexicons.validate("app.rocksky.album#main", v); 51 51 }
+39 -39
apps/api/src/lexicon/types/app/rocksky/album/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskySongDefsSongViewBasic from '../song/defs/songViewBasic' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskySongDefsSongViewBasic from "../song/defs/songViewBasic"; 9 9 10 10 export interface AlbumViewBasic { 11 11 /** The unique identifier of the album. */ 12 - id?: string 12 + id?: string; 13 13 /** The URI of the album. */ 14 - uri?: string 14 + uri?: string; 15 15 /** The title of the album. */ 16 - title?: string 16 + title?: string; 17 17 /** The artist of the album. */ 18 - artist?: string 18 + artist?: string; 19 19 /** The URI of the album's artist. */ 20 - artistUri?: string 20 + artistUri?: string; 21 21 /** The year the album was released. */ 22 - year?: number 22 + year?: number; 23 23 /** The URL of the album art image. */ 24 - albumArt?: string 24 + albumArt?: string; 25 25 /** The release date of the album. */ 26 - releaseDate?: string 26 + releaseDate?: string; 27 27 /** The SHA256 hash of the album. */ 28 - sha256?: string 28 + sha256?: string; 29 29 /** The number of times the album has been played. */ 30 - playCount?: number 30 + playCount?: number; 31 31 /** The number of unique listeners who have played the album. */ 32 - uniqueListeners?: number 33 - [k: string]: unknown 32 + uniqueListeners?: number; 33 + [k: string]: unknown; 34 34 } 35 35 36 36 export function isAlbumViewBasic(v: unknown): v is AlbumViewBasic { 37 37 return ( 38 38 isObj(v) && 39 - hasProp(v, '$type') && 40 - v.$type === 'app.rocksky.album.defs#albumViewBasic' 41 - ) 39 + hasProp(v, "$type") && 40 + v.$type === "app.rocksky.album.defs#albumViewBasic" 41 + ); 42 42 } 43 43 44 44 export function validateAlbumViewBasic(v: unknown): ValidationResult { 45 - return lexicons.validate('app.rocksky.album.defs#albumViewBasic', v) 45 + return lexicons.validate("app.rocksky.album.defs#albumViewBasic", v); 46 46 } 47 47 48 48 export interface AlbumViewDetailed { 49 49 /** The unique identifier of the album. */ 50 - id?: string 50 + id?: string; 51 51 /** The URI of the album. */ 52 - uri?: string 52 + uri?: string; 53 53 /** The title of the album. */ 54 - title?: string 54 + title?: string; 55 55 /** The artist of the album. */ 56 - artist?: string 56 + artist?: string; 57 57 /** The URI of the album's artist. */ 58 - artistUri?: string 58 + artistUri?: string; 59 59 /** The year the album was released. */ 60 - year?: number 60 + year?: number; 61 61 /** The URL of the album art image. */ 62 - albumArt?: string 62 + albumArt?: string; 63 63 /** The release date of the album. */ 64 - releaseDate?: string 64 + releaseDate?: string; 65 65 /** The SHA256 hash of the album. */ 66 - sha256?: string 66 + sha256?: string; 67 67 /** The number of times the album has been played. */ 68 - playCount?: number 68 + playCount?: number; 69 69 /** The number of unique listeners who have played the album. */ 70 - uniqueListeners?: number 71 - tags?: string[] 72 - tracks?: AppRockskySongDefsSongViewBasic.Main[] 73 - [k: string]: unknown 70 + uniqueListeners?: number; 71 + tags?: string[]; 72 + tracks?: AppRockskySongDefsSongViewBasic.Main[]; 73 + [k: string]: unknown; 74 74 } 75 75 76 76 export function isAlbumViewDetailed(v: unknown): v is AlbumViewDetailed { 77 77 return ( 78 78 isObj(v) && 79 - hasProp(v, '$type') && 80 - v.$type === 'app.rocksky.album.defs#albumViewDetailed' 81 - ) 79 + hasProp(v, "$type") && 80 + v.$type === "app.rocksky.album.defs#albumViewDetailed" 81 + ); 82 82 } 83 83 84 84 export function validateAlbumViewDetailed(v: unknown): ValidationResult { 85 - return lexicons.validate('app.rocksky.album.defs#albumViewDetailed', v) 85 + return lexicons.validate("app.rocksky.album.defs#albumViewDetailed", v); 86 86 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/album/getAlbum.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyAlbumDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyAlbumDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the album to retrieve. */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyAlbumDefs.AlbumViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyAlbumDefs.AlbumViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/album/getAlbumTracks.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from '../song/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "../song/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the album to retrieve tracks from */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - tracks?: AppRockskySongDefs.SongViewBasic[] 21 - [k: string]: unknown 20 + tracks?: AppRockskySongDefs.SongViewBasic[]; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/album/getAlbums.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyAlbumDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyAlbumDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The maximum number of albums to return */ 14 - limit?: number 14 + limit?: number; 15 15 /** The offset for pagination */ 16 - offset?: number 16 + offset?: number; 17 17 /** The genre to filter artists by */ 18 - genre?: string 18 + genre?: string; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - albums?: AppRockskyAlbumDefs.AlbumViewBasic[] 25 - [k: string]: unknown 24 + albums?: AppRockskyAlbumDefs.AlbumViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/apikey/createApikey.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyApikeyDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyApikeyDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The name of the API key. */ 16 - name: string 16 + name: string; 17 17 /** A description for the API key. */ 18 - description?: string 19 - [k: string]: unknown 18 + description?: string; 19 + [k: string]: unknown; 20 20 } 21 21 22 - export type OutputSchema = AppRockskyApikeyDefs.ApiKey 22 + export type OutputSchema = AppRockskyApikeyDefs.ApiKey; 23 23 24 24 export interface HandlerInput { 25 - encoding: 'application/json' 26 - body: InputSchema 25 + encoding: "application/json"; 26 + body: InputSchema; 27 27 } 28 28 29 29 export interface HandlerSuccess { 30 - encoding: 'application/json' 31 - body: OutputSchema 32 - headers?: { [key: string]: string } 30 + encoding: "application/json"; 31 + body: OutputSchema; 32 + headers?: { [key: string]: string }; 33 33 } 34 34 35 35 export interface HandlerError { 36 - status: number 37 - message?: string 36 + status: number; 37 + message?: string; 38 38 } 39 39 40 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 40 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 41 41 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 42 - auth: HA 43 - params: QueryParams 44 - input: HandlerInput 45 - req: express.Request 46 - res: express.Response 47 - resetRouteRateLimits: () => Promise<void> 48 - } 42 + auth: HA; 43 + params: QueryParams; 44 + input: HandlerInput; 45 + req: express.Request; 46 + res: express.Response; 47 + resetRouteRateLimits: () => Promise<void>; 48 + }; 49 49 export type Handler<HA extends HandlerAuth = never> = ( 50 50 ctx: HandlerReqCtx<HA>, 51 - ) => Promise<HandlerOutput> | HandlerOutput 51 + ) => Promise<HandlerOutput> | HandlerOutput;
+13 -13
apps/api/src/lexicon/types/app/rocksky/apikey/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface ApiKeyView { 10 10 /** The unique identifier of the API key. */ 11 - id?: string 11 + id?: string; 12 12 /** The name of the API key. */ 13 - name?: string 13 + name?: string; 14 14 /** A description for the API key. */ 15 - description?: string 15 + description?: string; 16 16 /** The date and time when the API key was created. */ 17 - createdAt?: string 18 - [k: string]: unknown 17 + createdAt?: string; 18 + [k: string]: unknown; 19 19 } 20 20 21 21 export function isApiKeyView(v: unknown): v is ApiKeyView { 22 22 return ( 23 23 isObj(v) && 24 - hasProp(v, '$type') && 25 - v.$type === 'app.rocksky.apikey.defs#apiKeyView' 26 - ) 24 + hasProp(v, "$type") && 25 + v.$type === "app.rocksky.apikey.defs#apiKeyView" 26 + ); 27 27 } 28 28 29 29 export function validateApiKeyView(v: unknown): ValidationResult { 30 - return lexicons.validate('app.rocksky.apikey.defs#apiKeyView', v) 30 + return lexicons.validate("app.rocksky.apikey.defs#apiKeyView", v); 31 31 }
+27 -27
apps/api/src/lexicon/types/app/rocksky/apikey/getApikeys.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyApikeyDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyApikeyDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The number of API keys to skip before starting to collect the result set. */ 14 - offset?: number 14 + offset?: number; 15 15 /** The number of API keys to return per page. */ 16 - limit?: number 16 + limit?: number; 17 17 } 18 18 19 - export type InputSchema = undefined 19 + export type InputSchema = undefined; 20 20 21 21 export interface OutputSchema { 22 - apiKeys?: AppRockskyApikeyDefs.ApikeyView[] 23 - [k: string]: unknown 22 + apiKeys?: AppRockskyApikeyDefs.ApikeyView[]; 23 + [k: string]: unknown; 24 24 } 25 25 26 - export type HandlerInput = undefined 26 + export type HandlerInput = undefined; 27 27 28 28 export interface HandlerSuccess { 29 - encoding: 'application/json' 30 - body: OutputSchema 31 - headers?: { [key: string]: string } 29 + encoding: "application/json"; 30 + body: OutputSchema; 31 + headers?: { [key: string]: string }; 32 32 } 33 33 34 34 export interface HandlerError { 35 - status: number 36 - message?: string 35 + status: number; 36 + message?: string; 37 37 } 38 38 39 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 39 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 40 40 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 41 - auth: HA 42 - params: QueryParams 43 - input: HandlerInput 44 - req: express.Request 45 - res: express.Response 46 - resetRouteRateLimits: () => Promise<void> 47 - } 41 + auth: HA; 42 + params: QueryParams; 43 + input: HandlerInput; 44 + req: express.Request; 45 + res: express.Response; 46 + resetRouteRateLimits: () => Promise<void>; 47 + }; 48 48 export type Handler<HA extends HandlerAuth = never> = ( 49 49 ctx: HandlerReqCtx<HA>, 50 - ) => Promise<HandlerOutput> | HandlerOutput 50 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/apikey/removeApikey.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyApikeyDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyApikeyDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The ID of the API key to remove. */ 14 - id: string 14 + id: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyApikeyDefs.ApiKey 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyApikeyDefs.ApiKey; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+29 -29
apps/api/src/lexicon/types/app/rocksky/apikey/updateApikey.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyApikeyDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyApikeyDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The ID of the API key to update. */ 16 - id: string 16 + id: string; 17 17 /** The new name of the API key. */ 18 - name: string 18 + name: string; 19 19 /** A new description for the API key. */ 20 - description?: string 21 - [k: string]: unknown 20 + description?: string; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type OutputSchema = AppRockskyApikeyDefs.ApiKey 24 + export type OutputSchema = AppRockskyApikeyDefs.ApiKey; 25 25 26 26 export interface HandlerInput { 27 - encoding: 'application/json' 28 - body: InputSchema 27 + encoding: "application/json"; 28 + body: InputSchema; 29 29 } 30 30 31 31 export interface HandlerSuccess { 32 - encoding: 'application/json' 33 - body: OutputSchema 34 - headers?: { [key: string]: string } 32 + encoding: "application/json"; 33 + body: OutputSchema; 34 + headers?: { [key: string]: string }; 35 35 } 36 36 37 37 export interface HandlerError { 38 - status: number 39 - message?: string 38 + status: number; 39 + message?: string; 40 40 } 41 41 42 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 42 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 43 43 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 44 - auth: HA 45 - params: QueryParams 46 - input: HandlerInput 47 - req: express.Request 48 - res: express.Response 49 - resetRouteRateLimits: () => Promise<void> 50 - } 44 + auth: HA; 45 + params: QueryParams; 46 + input: HandlerInput; 47 + req: express.Request; 48 + res: express.Response; 49 + resetRouteRateLimits: () => Promise<void>; 50 + }; 51 51 export type Handler<HA extends HandlerAuth = never> = ( 52 52 ctx: HandlerReqCtx<HA>, 53 - ) => Promise<HandlerOutput> | HandlerOutput 53 + ) => Promise<HandlerOutput> | HandlerOutput;
+4 -4
apps/api/src/lexicon/types/app/rocksky/apikeys/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 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' 4 + import { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid";
+18 -18
apps/api/src/lexicon/types/app/rocksky/artist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Record { 10 10 /** The name of the artist. */ 11 - name: string 11 + name: string; 12 12 /** The biography of the artist. */ 13 - bio?: string 13 + bio?: string; 14 14 /** The picture of the artist. */ 15 - picture?: BlobRef 15 + picture?: BlobRef; 16 16 /** The URL of the picture of the artist. */ 17 - pictureUrl?: string 17 + pictureUrl?: string; 18 18 /** The tags of the artist. */ 19 - tags?: string[] 19 + tags?: string[]; 20 20 /** The birth date of the artist. */ 21 - born?: string 21 + born?: string; 22 22 /** The death date of the artist. */ 23 - died?: string 23 + died?: string; 24 24 /** The birth place of the artist. */ 25 - bornIn?: string 25 + bornIn?: string; 26 26 /** The date when the artist was created. */ 27 - createdAt: string 28 - [k: string]: unknown 27 + createdAt: string; 28 + [k: string]: unknown; 29 29 } 30 30 31 31 export function isRecord(v: unknown): v is Record { 32 32 return ( 33 33 isObj(v) && 34 - hasProp(v, '$type') && 35 - (v.$type === 'app.rocksky.artist#main' || v.$type === 'app.rocksky.artist') 36 - ) 34 + hasProp(v, "$type") && 35 + (v.$type === "app.rocksky.artist#main" || v.$type === "app.rocksky.artist") 36 + ); 37 37 } 38 38 39 39 export function validateRecord(v: unknown): ValidationResult { 40 - return lexicons.validate('app.rocksky.artist#main', v) 40 + return lexicons.validate("app.rocksky.artist#main", v); 41 41 }
+58 -58
apps/api/src/lexicon/types/app/rocksky/artist/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface ArtistViewBasic { 10 10 /** The unique identifier of the artist. */ 11 - id?: string 11 + id?: string; 12 12 /** The URI of the artist. */ 13 - uri?: string 13 + uri?: string; 14 14 /** The name of the artist. */ 15 - name?: string 15 + name?: string; 16 16 /** The picture of the artist. */ 17 - picture?: string 17 + picture?: string; 18 18 /** The SHA256 hash of the artist. */ 19 - sha256?: string 19 + sha256?: string; 20 20 /** The number of times the artist has been played. */ 21 - playCount?: number 21 + playCount?: number; 22 22 /** The number of unique listeners who have played the artist. */ 23 - uniqueListeners?: number 24 - tags?: string[] 25 - [k: string]: unknown 23 + uniqueListeners?: number; 24 + tags?: string[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 28 export function isArtistViewBasic(v: unknown): v is ArtistViewBasic { 29 29 return ( 30 30 isObj(v) && 31 - hasProp(v, '$type') && 32 - v.$type === 'app.rocksky.artist.defs#artistViewBasic' 33 - ) 31 + hasProp(v, "$type") && 32 + v.$type === "app.rocksky.artist.defs#artistViewBasic" 33 + ); 34 34 } 35 35 36 36 export function validateArtistViewBasic(v: unknown): ValidationResult { 37 - return lexicons.validate('app.rocksky.artist.defs#artistViewBasic', v) 37 + return lexicons.validate("app.rocksky.artist.defs#artistViewBasic", v); 38 38 } 39 39 40 40 export interface ArtistViewDetailed { 41 41 /** The unique identifier of the artist. */ 42 - id?: string 42 + id?: string; 43 43 /** The URI of the artist. */ 44 - uri?: string 44 + uri?: string; 45 45 /** The name of the artist. */ 46 - name?: string 46 + name?: string; 47 47 /** The picture of the artist. */ 48 - picture?: string 48 + picture?: string; 49 49 /** The SHA256 hash of the artist. */ 50 - sha256?: string 50 + sha256?: string; 51 51 /** The number of times the artist has been played. */ 52 - playCount?: number 52 + playCount?: number; 53 53 /** The number of unique listeners who have played the artist. */ 54 - uniqueListeners?: number 55 - tags?: string[] 56 - [k: string]: unknown 54 + uniqueListeners?: number; 55 + tags?: string[]; 56 + [k: string]: unknown; 57 57 } 58 58 59 59 export function isArtistViewDetailed(v: unknown): v is ArtistViewDetailed { 60 60 return ( 61 61 isObj(v) && 62 - hasProp(v, '$type') && 63 - v.$type === 'app.rocksky.artist.defs#artistViewDetailed' 64 - ) 62 + hasProp(v, "$type") && 63 + v.$type === "app.rocksky.artist.defs#artistViewDetailed" 64 + ); 65 65 } 66 66 67 67 export function validateArtistViewDetailed(v: unknown): ValidationResult { 68 - return lexicons.validate('app.rocksky.artist.defs#artistViewDetailed', v) 68 + return lexicons.validate("app.rocksky.artist.defs#artistViewDetailed", v); 69 69 } 70 70 71 71 export interface SongViewBasic { 72 72 /** The URI of the song. */ 73 - uri?: string 73 + uri?: string; 74 74 /** The title of the song. */ 75 - title?: string 75 + title?: string; 76 76 /** The number of times the song has been played. */ 77 - playCount?: number 78 - [k: string]: unknown 77 + playCount?: number; 78 + [k: string]: unknown; 79 79 } 80 80 81 81 export function isSongViewBasic(v: unknown): v is SongViewBasic { 82 82 return ( 83 83 isObj(v) && 84 - hasProp(v, '$type') && 85 - v.$type === 'app.rocksky.artist.defs#songViewBasic' 86 - ) 84 + hasProp(v, "$type") && 85 + v.$type === "app.rocksky.artist.defs#songViewBasic" 86 + ); 87 87 } 88 88 89 89 export function validateSongViewBasic(v: unknown): ValidationResult { 90 - return lexicons.validate('app.rocksky.artist.defs#songViewBasic', v) 90 + return lexicons.validate("app.rocksky.artist.defs#songViewBasic", v); 91 91 } 92 92 93 93 export interface ListenerViewBasic { 94 94 /** The unique identifier of the actor. */ 95 - id?: string 95 + id?: string; 96 96 /** The DID of the listener. */ 97 - did?: string 97 + did?: string; 98 98 /** The handle of the listener. */ 99 - handle?: string 99 + handle?: string; 100 100 /** The display name of the listener. */ 101 - displayName?: string 101 + displayName?: string; 102 102 /** The URL of the listener's avatar image. */ 103 - avatar?: string 104 - mostListenedSong?: SongViewBasic 103 + avatar?: string; 104 + mostListenedSong?: SongViewBasic; 105 105 /** The total number of plays by the listener. */ 106 - totalPlays?: number 106 + totalPlays?: number; 107 107 /** The rank of the listener among all listeners of the artist. */ 108 - rank?: number 109 - [k: string]: unknown 108 + rank?: number; 109 + [k: string]: unknown; 110 110 } 111 111 112 112 export function isListenerViewBasic(v: unknown): v is ListenerViewBasic { 113 113 return ( 114 114 isObj(v) && 115 - hasProp(v, '$type') && 116 - v.$type === 'app.rocksky.artist.defs#listenerViewBasic' 117 - ) 115 + hasProp(v, "$type") && 116 + v.$type === "app.rocksky.artist.defs#listenerViewBasic" 117 + ); 118 118 } 119 119 120 120 export function validateListenerViewBasic(v: unknown): ValidationResult { 121 - return lexicons.validate('app.rocksky.artist.defs#listenerViewBasic', v) 121 + return lexicons.validate("app.rocksky.artist.defs#listenerViewBasic", v); 122 122 } 123 123 124 124 export interface ArtistMbid { 125 125 /** The MusicBrainz Identifier (MBID) of the artist. */ 126 - mbid?: string 126 + mbid?: string; 127 127 /** The name of the artist. */ 128 - name?: string 129 - [k: string]: unknown 128 + name?: string; 129 + [k: string]: unknown; 130 130 } 131 131 132 132 export function isArtistMbid(v: unknown): v is ArtistMbid { 133 133 return ( 134 134 isObj(v) && 135 - hasProp(v, '$type') && 136 - v.$type === 'app.rocksky.artist.defs#artistMbid' 137 - ) 135 + hasProp(v, "$type") && 136 + v.$type === "app.rocksky.artist.defs#artistMbid" 137 + ); 138 138 } 139 139 140 140 export function validateArtistMbid(v: unknown): ValidationResult { 141 - return lexicons.validate('app.rocksky.artist.defs#artistMbid', v) 141 + return lexicons.validate("app.rocksky.artist.defs#artistMbid", v); 142 142 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/artist/getArtist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyArtistDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyArtistDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the artist to retrieve details from */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyArtistDefs.ArtistViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyArtistDefs.ArtistViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/artist/getArtistAlbums.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyAlbumDefs from '../album/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyAlbumDefs from "../album/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the artist to retrieve albums from */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - albums?: AppRockskyAlbumDefs.AlbumViewBasic[] 21 - [k: string]: unknown 20 + albums?: AppRockskyAlbumDefs.AlbumViewBasic[]; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/artist/getArtistListeners.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyArtistDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyArtistDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the artist to retrieve listeners from */ 14 - uri: string 14 + uri: string; 15 15 /** Number of items to skip before returning results */ 16 - offset?: number 16 + offset?: number; 17 17 /** Maximum number of results to return */ 18 - limit?: number 18 + limit?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - listeners?: AppRockskyArtistDefs.ListenerViewBasic[] 25 - [k: string]: unknown 24 + listeners?: AppRockskyArtistDefs.ListenerViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/artist/getArtistTracks.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from '../song/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "../song/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the artist to retrieve albums from */ 14 - uri?: string 14 + uri?: string; 15 15 /** The maximum number of tracks to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - tracks?: AppRockskySongDefs.SongViewBasic[] 25 - [k: string]: unknown 24 + tracks?: AppRockskySongDefs.SongViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+29 -29
apps/api/src/lexicon/types/app/rocksky/artist/getArtists.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyArtistDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyArtistDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The maximum number of artists to return */ 14 - limit?: number 14 + limit?: number; 15 15 /** The offset for pagination */ 16 - offset?: number 16 + offset?: number; 17 17 /** The names of the artists to return */ 18 - names?: string 18 + names?: string; 19 19 /** The genre to filter artists by */ 20 - genre?: string 20 + genre?: string; 21 21 } 22 22 23 - export type InputSchema = undefined 23 + export type InputSchema = undefined; 24 24 25 25 export interface OutputSchema { 26 - artists?: AppRockskyArtistDefs.ArtistViewBasic[] 27 - [k: string]: unknown 26 + artists?: AppRockskyArtistDefs.ArtistViewBasic[]; 27 + [k: string]: unknown; 28 28 } 29 29 30 - export type HandlerInput = undefined 30 + export type HandlerInput = undefined; 31 31 32 32 export interface HandlerSuccess { 33 - encoding: 'application/json' 34 - body: OutputSchema 35 - headers?: { [key: string]: string } 33 + encoding: "application/json"; 34 + body: OutputSchema; 35 + headers?: { [key: string]: string }; 36 36 } 37 37 38 38 export interface HandlerError { 39 - status: number 40 - message?: string 39 + status: number; 40 + message?: string; 41 41 } 42 42 43 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 43 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 44 44 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 45 - auth: HA 46 - params: QueryParams 47 - input: HandlerInput 48 - req: express.Request 49 - res: express.Response 50 - resetRouteRateLimits: () => Promise<void> 51 - } 45 + auth: HA; 46 + params: QueryParams; 47 + input: HandlerInput; 48 + req: express.Request; 49 + res: express.Response; 50 + resetRouteRateLimits: () => Promise<void>; 51 + }; 52 52 export type Handler<HA extends HandlerAuth = never> = ( 53 53 ctx: HandlerReqCtx<HA>, 54 - ) => Promise<HandlerOutput> | HandlerOutput 54 + ) => Promise<HandlerOutput> | HandlerOutput;
+17 -17
apps/api/src/lexicon/types/app/rocksky/charts/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface ChartsView { 10 - scrobbles?: ScrobbleViewBasic[] 11 - [k: string]: unknown 10 + scrobbles?: ScrobbleViewBasic[]; 11 + [k: string]: unknown; 12 12 } 13 13 14 14 export function isChartsView(v: unknown): v is ChartsView { 15 15 return ( 16 16 isObj(v) && 17 - hasProp(v, '$type') && 18 - v.$type === 'app.rocksky.charts.defs#chartsView' 19 - ) 17 + hasProp(v, "$type") && 18 + v.$type === "app.rocksky.charts.defs#chartsView" 19 + ); 20 20 } 21 21 22 22 export function validateChartsView(v: unknown): ValidationResult { 23 - return lexicons.validate('app.rocksky.charts.defs#chartsView', v) 23 + return lexicons.validate("app.rocksky.charts.defs#chartsView", v); 24 24 } 25 25 26 26 export interface ScrobbleViewBasic { 27 27 /** The date of the scrobble. */ 28 - date?: string 28 + date?: string; 29 29 /** The number of scrobbles on this date. */ 30 - count?: number 31 - [k: string]: unknown 30 + count?: number; 31 + [k: string]: unknown; 32 32 } 33 33 34 34 export function isScrobbleViewBasic(v: unknown): v is ScrobbleViewBasic { 35 35 return ( 36 36 isObj(v) && 37 - hasProp(v, '$type') && 38 - v.$type === 'app.rocksky.charts.defs#scrobbleViewBasic' 39 - ) 37 + hasProp(v, "$type") && 38 + v.$type === "app.rocksky.charts.defs#scrobbleViewBasic" 39 + ); 40 40 } 41 41 42 42 export function validateScrobbleViewBasic(v: unknown): ValidationResult { 43 - return lexicons.validate('app.rocksky.charts.defs#scrobbleViewBasic', v) 43 + return lexicons.validate("app.rocksky.charts.defs#scrobbleViewBasic", v); 44 44 }
+30 -28
apps/api/src/lexicon/types/app/rocksky/charts/getScrobblesChart.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyChartsDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyChartsDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did?: string 14 + did?: string; 15 15 /** The URI of the artist to filter by */ 16 - artisturi?: string 16 + artisturi?: string; 17 17 /** The URI of the album to filter by */ 18 - albumuri?: string 18 + albumuri?: string; 19 19 /** The URI of the track to filter by */ 20 - songuri?: string 20 + songuri?: string; 21 + /** The genre to filter by */ 22 + genre?: string; 21 23 } 22 24 23 - export type InputSchema = undefined 24 - export type OutputSchema = AppRockskyChartsDefs.ChartsView 25 - export type HandlerInput = undefined 25 + export type InputSchema = undefined; 26 + export type OutputSchema = AppRockskyChartsDefs.ChartsView; 27 + export type HandlerInput = undefined; 26 28 27 29 export interface HandlerSuccess { 28 - encoding: 'application/json' 29 - body: OutputSchema 30 - headers?: { [key: string]: string } 30 + encoding: "application/json"; 31 + body: OutputSchema; 32 + headers?: { [key: string]: string }; 31 33 } 32 34 33 35 export interface HandlerError { 34 - status: number 35 - message?: string 36 + status: number; 37 + message?: string; 36 38 } 37 39 38 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 40 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 39 41 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 40 - auth: HA 41 - params: QueryParams 42 - input: HandlerInput 43 - req: express.Request 44 - res: express.Response 45 - resetRouteRateLimits: () => Promise<void> 46 - } 42 + auth: HA; 43 + params: QueryParams; 44 + input: HandlerInput; 45 + req: express.Request; 46 + res: express.Response; 47 + resetRouteRateLimits: () => Promise<void>; 48 + }; 47 49 export type Handler<HA extends HandlerAuth = never> = ( 48 50 ctx: HandlerReqCtx<HA>, 49 - ) => Promise<HandlerOutput> | HandlerOutput 51 + ) => Promise<HandlerOutput> | HandlerOutput;
+27 -27
apps/api/src/lexicon/types/app/rocksky/dropbox/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface FileView { 10 10 /** The unique identifier of the file. */ 11 - id?: string 11 + id?: string; 12 12 /** The name of the file. */ 13 - name?: string 13 + name?: string; 14 14 /** The lowercased path of the file. */ 15 - pathLower?: string 15 + pathLower?: string; 16 16 /** The display path of the file. */ 17 - pathDisplay?: string 17 + pathDisplay?: string; 18 18 /** The last modified date and time of the file on the client. */ 19 - clientModified?: string 19 + clientModified?: string; 20 20 /** The last modified date and time of the file on the server. */ 21 - serverModified?: string 22 - [k: string]: unknown 21 + serverModified?: string; 22 + [k: string]: unknown; 23 23 } 24 24 25 25 export function isFileView(v: unknown): v is FileView { 26 26 return ( 27 27 isObj(v) && 28 - hasProp(v, '$type') && 29 - v.$type === 'app.rocksky.dropbox.defs#fileView' 30 - ) 28 + hasProp(v, "$type") && 29 + v.$type === "app.rocksky.dropbox.defs#fileView" 30 + ); 31 31 } 32 32 33 33 export function validateFileView(v: unknown): ValidationResult { 34 - return lexicons.validate('app.rocksky.dropbox.defs#fileView', v) 34 + return lexicons.validate("app.rocksky.dropbox.defs#fileView", v); 35 35 } 36 36 37 37 export interface FileListView { 38 38 /** A list of files in the Dropbox. */ 39 - files?: FileView[] 40 - [k: string]: unknown 39 + files?: FileView[]; 40 + [k: string]: unknown; 41 41 } 42 42 43 43 export function isFileListView(v: unknown): v is FileListView { 44 44 return ( 45 45 isObj(v) && 46 - hasProp(v, '$type') && 47 - v.$type === 'app.rocksky.dropbox.defs#fileListView' 48 - ) 46 + hasProp(v, "$type") && 47 + v.$type === "app.rocksky.dropbox.defs#fileListView" 48 + ); 49 49 } 50 50 51 51 export function validateFileListView(v: unknown): ValidationResult { 52 - return lexicons.validate('app.rocksky.dropbox.defs#fileListView', v) 52 + return lexicons.validate("app.rocksky.dropbox.defs#fileListView", v); 53 53 } 54 54 55 55 export interface TemporaryLinkView { 56 56 /** The temporary link to access the file. */ 57 - link?: string 58 - [k: string]: unknown 57 + link?: string; 58 + [k: string]: unknown; 59 59 } 60 60 61 61 export function isTemporaryLinkView(v: unknown): v is TemporaryLinkView { 62 62 return ( 63 63 isObj(v) && 64 - hasProp(v, '$type') && 65 - v.$type === 'app.rocksky.dropbox.defs#temporaryLinkView' 66 - ) 64 + hasProp(v, "$type") && 65 + v.$type === "app.rocksky.dropbox.defs#temporaryLinkView" 66 + ); 67 67 } 68 68 69 69 export function validateTemporaryLinkView(v: unknown): ValidationResult { 70 - return lexicons.validate('app.rocksky.dropbox.defs#temporaryLinkView', v) 70 + return lexicons.validate("app.rocksky.dropbox.defs#temporaryLinkView", v); 71 71 }
+24 -24
apps/api/src/lexicon/types/app/rocksky/dropbox/downloadFile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type express from 'express' 5 - import type stream from 'stream' 6 - import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 - import { lexicons } from '../../../../lexicons' 8 - import { isObj, hasProp } from '../../../../util' 9 - import { CID } from 'multiformats/cid' 10 - import type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type express from "express"; 5 + import type stream from "stream"; 6 + import { ValidationResult, BlobRef } from "@atproto/lexicon"; 7 + import { lexicons } from "../../../../lexicons"; 8 + import { isObj, hasProp } from "../../../../util"; 9 + import { CID } from "multiformats/cid"; 10 + import type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 11 11 12 12 export interface QueryParams { 13 13 /** The unique identifier of the file to download */ 14 - fileId: string 14 + fileId: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type HandlerInput = undefined; 19 19 20 20 export interface HandlerSuccess { 21 - encoding: 'application/octet-stream' 22 - body: Uint8Array | stream.Readable 23 - headers?: { [key: string]: string } 21 + encoding: "application/octet-stream"; 22 + body: Uint8Array | stream.Readable; 23 + headers?: { [key: string]: string }; 24 24 } 25 25 26 26 export interface HandlerError { 27 - status: number 28 - message?: string 27 + status: number; 28 + message?: string; 29 29 } 30 30 31 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 31 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 32 32 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 33 - auth: HA 34 - params: QueryParams 35 - input: HandlerInput 36 - req: express.Request 37 - res: express.Response 38 - resetRouteRateLimits: () => Promise<void> 39 - } 33 + auth: HA; 34 + params: QueryParams; 35 + input: HandlerInput; 36 + req: express.Request; 37 + res: express.Response; 38 + resetRouteRateLimits: () => Promise<void>; 39 + }; 40 40 export type Handler<HA extends HandlerAuth = never> = ( 41 41 ctx: HandlerReqCtx<HA>, 42 - ) => Promise<HandlerOutput> | HandlerOutput 42 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/dropbox/getFiles.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyDropboxDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyDropboxDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** Path to the Dropbox folder or root directory */ 14 - at?: string 14 + at?: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyDropboxDefs.FileListView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyDropboxDefs.FileListView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/dropbox/getMetadata.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyDropboxDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyDropboxDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** Path to the file or folder in Dropbox */ 14 - path: string 14 + path: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyDropboxDefs.FileView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyDropboxDefs.FileView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/dropbox/getTemporaryLink.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyDropboxDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyDropboxDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** Path to the file in Dropbox */ 14 - path: string 14 + path: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyDropboxDefs.TemporaryLinkView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyDropboxDefs.TemporaryLinkView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+82 -82
apps/api/src/lexicon/types/app/rocksky/feed/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskySongDefs from '../song/defs' 9 - import type * as AppRockskyAlbumDefs from '../album/defs' 10 - import type * as AppRockskyArtistDefs from '../artist/defs' 11 - import type * as AppRockskyPlaylistDefs from '../playlist/defs' 12 - import type * as AppRockskyActorDefs from '../actor/defs' 13 - import type * as AppRockskyScrobbleDefs from '../scrobble/defs' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskySongDefs from "../song/defs"; 9 + import type * as AppRockskyAlbumDefs from "../album/defs"; 10 + import type * as AppRockskyArtistDefs from "../artist/defs"; 11 + import type * as AppRockskyPlaylistDefs from "../playlist/defs"; 12 + import type * as AppRockskyActorDefs from "../actor/defs"; 13 + import type * as AppRockskyScrobbleDefs from "../scrobble/defs"; 14 14 15 15 export interface SearchResultsView { 16 16 hits?: ( ··· 20 20 | AppRockskyPlaylistDefs.PlaylistViewBasic 21 21 | AppRockskyActorDefs.ProfileViewBasic 22 22 | { $type: string; [k: string]: unknown } 23 - )[] 24 - processingTimeMs?: number 25 - limit?: number 26 - offset?: number 27 - estimatedTotalHits?: number 28 - [k: string]: unknown 23 + )[]; 24 + processingTimeMs?: number; 25 + limit?: number; 26 + offset?: number; 27 + estimatedTotalHits?: number; 28 + [k: string]: unknown; 29 29 } 30 30 31 31 export function isSearchResultsView(v: unknown): v is SearchResultsView { 32 32 return ( 33 33 isObj(v) && 34 - hasProp(v, '$type') && 35 - v.$type === 'app.rocksky.feed.defs#searchResultsView' 36 - ) 34 + hasProp(v, "$type") && 35 + v.$type === "app.rocksky.feed.defs#searchResultsView" 36 + ); 37 37 } 38 38 39 39 export function validateSearchResultsView(v: unknown): ValidationResult { 40 - return lexicons.validate('app.rocksky.feed.defs#searchResultsView', v) 40 + return lexicons.validate("app.rocksky.feed.defs#searchResultsView", v); 41 41 } 42 42 43 43 export interface NowPlayingView { 44 - album?: string 45 - albumArt?: string 46 - albumArtist?: string 47 - albumUri?: string 48 - artist?: string 49 - artistUri?: string 50 - avatar?: string 51 - createdAt?: string 52 - did?: string 53 - handle?: string 54 - id?: string 55 - title?: string 56 - trackId?: string 57 - trackUri?: string 58 - uri?: string 59 - [k: string]: unknown 44 + album?: string; 45 + albumArt?: string; 46 + albumArtist?: string; 47 + albumUri?: string; 48 + artist?: string; 49 + artistUri?: string; 50 + avatar?: string; 51 + createdAt?: string; 52 + did?: string; 53 + handle?: string; 54 + id?: string; 55 + title?: string; 56 + trackId?: string; 57 + trackUri?: string; 58 + uri?: string; 59 + [k: string]: unknown; 60 60 } 61 61 62 62 export function isNowPlayingView(v: unknown): v is NowPlayingView { 63 63 return ( 64 64 isObj(v) && 65 - hasProp(v, '$type') && 66 - v.$type === 'app.rocksky.feed.defs#nowPlayingView' 67 - ) 65 + hasProp(v, "$type") && 66 + v.$type === "app.rocksky.feed.defs#nowPlayingView" 67 + ); 68 68 } 69 69 70 70 export function validateNowPlayingView(v: unknown): ValidationResult { 71 - return lexicons.validate('app.rocksky.feed.defs#nowPlayingView', v) 71 + return lexicons.validate("app.rocksky.feed.defs#nowPlayingView", v); 72 72 } 73 73 74 74 export interface NowPlayingsView { 75 - nowPlayings?: NowPlayingView[] 76 - [k: string]: unknown 75 + nowPlayings?: NowPlayingView[]; 76 + [k: string]: unknown; 77 77 } 78 78 79 79 export function isNowPlayingsView(v: unknown): v is NowPlayingsView { 80 80 return ( 81 81 isObj(v) && 82 - hasProp(v, '$type') && 83 - v.$type === 'app.rocksky.feed.defs#nowPlayingsView' 84 - ) 82 + hasProp(v, "$type") && 83 + v.$type === "app.rocksky.feed.defs#nowPlayingsView" 84 + ); 85 85 } 86 86 87 87 export function validateNowPlayingsView(v: unknown): ValidationResult { 88 - return lexicons.validate('app.rocksky.feed.defs#nowPlayingsView', v) 88 + return lexicons.validate("app.rocksky.feed.defs#nowPlayingsView", v); 89 89 } 90 90 91 91 export interface FeedGeneratorsView { 92 - feeds?: FeedGeneratorView[] 93 - [k: string]: unknown 92 + feeds?: FeedGeneratorView[]; 93 + [k: string]: unknown; 94 94 } 95 95 96 96 export function isFeedGeneratorsView(v: unknown): v is FeedGeneratorsView { 97 97 return ( 98 98 isObj(v) && 99 - hasProp(v, '$type') && 100 - v.$type === 'app.rocksky.feed.defs#feedGeneratorsView' 101 - ) 99 + hasProp(v, "$type") && 100 + v.$type === "app.rocksky.feed.defs#feedGeneratorsView" 101 + ); 102 102 } 103 103 104 104 export function validateFeedGeneratorsView(v: unknown): ValidationResult { 105 - return lexicons.validate('app.rocksky.feed.defs#feedGeneratorsView', v) 105 + return lexicons.validate("app.rocksky.feed.defs#feedGeneratorsView", v); 106 106 } 107 107 108 108 export interface FeedGeneratorView { 109 - id?: string 110 - name?: string 111 - description?: string 112 - uri?: string 113 - avatar?: string 114 - creator?: AppRockskyActorDefs.ProfileViewBasic 115 - [k: string]: unknown 109 + id?: string; 110 + name?: string; 111 + description?: string; 112 + uri?: string; 113 + avatar?: string; 114 + creator?: AppRockskyActorDefs.ProfileViewBasic; 115 + [k: string]: unknown; 116 116 } 117 117 118 118 export function isFeedGeneratorView(v: unknown): v is FeedGeneratorView { 119 119 return ( 120 120 isObj(v) && 121 - hasProp(v, '$type') && 122 - v.$type === 'app.rocksky.feed.defs#feedGeneratorView' 123 - ) 121 + hasProp(v, "$type") && 122 + v.$type === "app.rocksky.feed.defs#feedGeneratorView" 123 + ); 124 124 } 125 125 126 126 export function validateFeedGeneratorView(v: unknown): ValidationResult { 127 - return lexicons.validate('app.rocksky.feed.defs#feedGeneratorView', v) 127 + return lexicons.validate("app.rocksky.feed.defs#feedGeneratorView", v); 128 128 } 129 129 130 130 export interface FeedUriView { 131 131 /** The feed URI. */ 132 - uri?: string 133 - [k: string]: unknown 132 + uri?: string; 133 + [k: string]: unknown; 134 134 } 135 135 136 136 export function isFeedUriView(v: unknown): v is FeedUriView { 137 137 return ( 138 138 isObj(v) && 139 - hasProp(v, '$type') && 140 - v.$type === 'app.rocksky.feed.defs#feedUriView' 141 - ) 139 + hasProp(v, "$type") && 140 + v.$type === "app.rocksky.feed.defs#feedUriView" 141 + ); 142 142 } 143 143 144 144 export function validateFeedUriView(v: unknown): ValidationResult { 145 - return lexicons.validate('app.rocksky.feed.defs#feedUriView', v) 145 + return lexicons.validate("app.rocksky.feed.defs#feedUriView", v); 146 146 } 147 147 148 148 export interface FeedItemView { 149 - scrobble?: AppRockskyScrobbleDefs.ScrobbleViewBasic 150 - [k: string]: unknown 149 + scrobble?: AppRockskyScrobbleDefs.ScrobbleViewBasic; 150 + [k: string]: unknown; 151 151 } 152 152 153 153 export function isFeedItemView(v: unknown): v is FeedItemView { 154 154 return ( 155 155 isObj(v) && 156 - hasProp(v, '$type') && 157 - v.$type === 'app.rocksky.feed.defs#feedItemView' 158 - ) 156 + hasProp(v, "$type") && 157 + v.$type === "app.rocksky.feed.defs#feedItemView" 158 + ); 159 159 } 160 160 161 161 export function validateFeedItemView(v: unknown): ValidationResult { 162 - return lexicons.validate('app.rocksky.feed.defs#feedItemView', v) 162 + return lexicons.validate("app.rocksky.feed.defs#feedItemView", v); 163 163 } 164 164 165 165 export interface FeedView { 166 - feed?: FeedItemView[] 166 + feed?: FeedItemView[]; 167 167 /** The pagination cursor for the next set of results. */ 168 - cursor?: string 169 - [k: string]: unknown 168 + cursor?: string; 169 + [k: string]: unknown; 170 170 } 171 171 172 172 export function isFeedView(v: unknown): v is FeedView { 173 173 return ( 174 174 isObj(v) && 175 - hasProp(v, '$type') && 176 - v.$type === 'app.rocksky.feed.defs#feedView' 177 - ) 175 + hasProp(v, "$type") && 176 + v.$type === "app.rocksky.feed.defs#feedView" 177 + ); 178 178 } 179 179 180 180 export function validateFeedView(v: unknown): ValidationResult { 181 - return lexicons.validate('app.rocksky.feed.defs#feedView', v) 181 + return lexicons.validate("app.rocksky.feed.defs#feedView", v); 182 182 }
+27 -27
apps/api/src/lexicon/types/app/rocksky/feed/describeFeedGenerator.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyFeedDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 - export type InputSchema = undefined 14 + export type InputSchema = undefined; 15 15 16 16 export interface OutputSchema { 17 17 /** The DID of the feed generator. */ 18 - did?: string 18 + did?: string; 19 19 /** List of feed URIs generated by this feed generator. */ 20 - feeds?: AppRockskyFeedDefs.FeedUriView[] 21 - [k: string]: unknown 20 + feeds?: AppRockskyFeedDefs.FeedUriView[]; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+15 -15
apps/api/src/lexicon/types/app/rocksky/feed/generator.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Record { 10 - did: string 11 - avatar?: BlobRef 12 - displayName: string 13 - description?: string 14 - createdAt: string 15 - [k: string]: unknown 10 + did: string; 11 + avatar?: BlobRef; 12 + displayName: string; 13 + description?: string; 14 + createdAt: string; 15 + [k: string]: unknown; 16 16 } 17 17 18 18 export function isRecord(v: unknown): v is Record { 19 19 return ( 20 20 isObj(v) && 21 - hasProp(v, '$type') && 22 - (v.$type === 'app.rocksky.feed.generator#main' || 23 - v.$type === 'app.rocksky.feed.generator') 24 - ) 21 + hasProp(v, "$type") && 22 + (v.$type === "app.rocksky.feed.generator#main" || 23 + v.$type === "app.rocksky.feed.generator") 24 + ); 25 25 } 26 26 27 27 export function validateRecord(v: unknown): ValidationResult { 28 - return lexicons.validate('app.rocksky.feed.generator#main', v) 28 + return lexicons.validate("app.rocksky.feed.generator#main", v); 29 29 }
+27 -27
apps/api/src/lexicon/types/app/rocksky/feed/getFeed.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The feed URI. */ 14 - feed: string 14 + feed: string; 15 15 /** The maximum number of scrobbles to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The cursor for pagination */ 18 - cursor?: string 18 + cursor?: string; 19 19 } 20 20 21 - export type InputSchema = undefined 22 - export type OutputSchema = AppRockskyFeedDefs.FeedView 23 - export type HandlerInput = undefined 21 + export type InputSchema = undefined; 22 + export type OutputSchema = AppRockskyFeedDefs.FeedView; 23 + export type HandlerInput = undefined; 24 24 25 25 export interface HandlerSuccess { 26 - encoding: 'application/json' 27 - body: OutputSchema 28 - headers?: { [key: string]: string } 26 + encoding: "application/json"; 27 + body: OutputSchema; 28 + headers?: { [key: string]: string }; 29 29 } 30 30 31 31 export interface HandlerError { 32 - status: number 33 - message?: string 32 + status: number; 33 + message?: string; 34 34 } 35 35 36 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 36 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 37 37 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 38 - auth: HA 39 - params: QueryParams 40 - input: HandlerInput 41 - req: express.Request 42 - res: express.Response 43 - resetRouteRateLimits: () => Promise<void> 44 - } 38 + auth: HA; 39 + params: QueryParams; 40 + input: HandlerInput; 41 + req: express.Request; 42 + res: express.Response; 43 + resetRouteRateLimits: () => Promise<void>; 44 + }; 45 45 export type Handler<HA extends HandlerAuth = never> = ( 46 46 ctx: HandlerReqCtx<HA>, 47 - ) => Promise<HandlerOutput> | HandlerOutput 47 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/feed/getFeedGenerator.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** AT-URI of the feed generator record. */ 14 - feed: string 14 + feed: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - view?: AppRockskyFeedDefs.FeedGeneratorView 21 - [k: string]: unknown 20 + view?: AppRockskyFeedDefs.FeedGeneratorView; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/feed/getFeedGenerators.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The maximum number of feed generators to return. */ 14 - size?: number 14 + size?: number; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyFeedDefs.FeedGeneratorsView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyFeedDefs.FeedGeneratorsView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+30 -30
apps/api/src/lexicon/types/app/rocksky/feed/getFeedSkeleton.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyScrobbleDefs from '../scrobble/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyScrobbleDefs from "../scrobble/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The feed URI. */ 14 - feed: string 14 + feed: string; 15 15 /** The maximum number of scrobbles to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The offset for pagination */ 18 - offset?: number 18 + offset?: number; 19 19 /** The pagination cursor. */ 20 - cursor?: string 20 + cursor?: string; 21 21 } 22 22 23 - export type InputSchema = undefined 23 + export type InputSchema = undefined; 24 24 25 25 export interface OutputSchema { 26 - scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[] 26 + scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[]; 27 27 /** The pagination cursor for the next set of results. */ 28 - cursor?: string 29 - [k: string]: unknown 28 + cursor?: string; 29 + [k: string]: unknown; 30 30 } 31 31 32 - export type HandlerInput = undefined 32 + export type HandlerInput = undefined; 33 33 34 34 export interface HandlerSuccess { 35 - encoding: 'application/json' 36 - body: OutputSchema 37 - headers?: { [key: string]: string } 35 + encoding: "application/json"; 36 + body: OutputSchema; 37 + headers?: { [key: string]: string }; 38 38 } 39 39 40 40 export interface HandlerError { 41 - status: number 42 - message?: string 41 + status: number; 42 + message?: string; 43 43 } 44 44 45 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 45 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 46 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 - } 47 + auth: HA; 48 + params: QueryParams; 49 + input: HandlerInput; 50 + req: express.Request; 51 + res: express.Response; 52 + resetRouteRateLimits: () => Promise<void>; 53 + }; 54 54 export type Handler<HA extends HandlerAuth = never> = ( 55 55 ctx: HandlerReqCtx<HA>, 56 - ) => Promise<HandlerOutput> | HandlerOutput 56 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/feed/getNowPlayings.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The maximum number of now playing tracks to return. */ 14 - size?: number 14 + size?: number; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyFeedDefs.NowPlayingsView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyFeedDefs.NowPlayingsView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/feed/search.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The search query string */ 14 - query: string 14 + query: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyFeedDefs.SearchResultsView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyFeedDefs.SearchResultsView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+16 -16
apps/api/src/lexicon/types/app/rocksky/googledrive/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface FileView { 10 10 /** The unique identifier of the file. */ 11 - id?: string 12 - [k: string]: unknown 11 + id?: string; 12 + [k: string]: unknown; 13 13 } 14 14 15 15 export function isFileView(v: unknown): v is FileView { 16 16 return ( 17 17 isObj(v) && 18 - hasProp(v, '$type') && 19 - v.$type === 'app.rocksky.googledrive.defs#fileView' 20 - ) 18 + hasProp(v, "$type") && 19 + v.$type === "app.rocksky.googledrive.defs#fileView" 20 + ); 21 21 } 22 22 23 23 export function validateFileView(v: unknown): ValidationResult { 24 - return lexicons.validate('app.rocksky.googledrive.defs#fileView', v) 24 + return lexicons.validate("app.rocksky.googledrive.defs#fileView", v); 25 25 } 26 26 27 27 export interface FileListView { 28 - files?: FileView[] 29 - [k: string]: unknown 28 + files?: FileView[]; 29 + [k: string]: unknown; 30 30 } 31 31 32 32 export function isFileListView(v: unknown): v is FileListView { 33 33 return ( 34 34 isObj(v) && 35 - hasProp(v, '$type') && 36 - v.$type === 'app.rocksky.googledrive.defs#fileListView' 37 - ) 35 + hasProp(v, "$type") && 36 + v.$type === "app.rocksky.googledrive.defs#fileListView" 37 + ); 38 38 } 39 39 40 40 export function validateFileListView(v: unknown): ValidationResult { 41 - return lexicons.validate('app.rocksky.googledrive.defs#fileListView', v) 41 + return lexicons.validate("app.rocksky.googledrive.defs#fileListView", v); 42 42 }
+24 -24
apps/api/src/lexicon/types/app/rocksky/googledrive/downloadFile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type express from 'express' 5 - import type stream from 'stream' 6 - import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 - import { lexicons } from '../../../../lexicons' 8 - import { isObj, hasProp } from '../../../../util' 9 - import { CID } from 'multiformats/cid' 10 - import type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type express from "express"; 5 + import type stream from "stream"; 6 + import { ValidationResult, BlobRef } from "@atproto/lexicon"; 7 + import { lexicons } from "../../../../lexicons"; 8 + import { isObj, hasProp } from "../../../../util"; 9 + import { CID } from "multiformats/cid"; 10 + import type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 11 11 12 12 export interface QueryParams { 13 13 /** The unique identifier of the file to download */ 14 - fileId: string 14 + fileId: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type HandlerInput = undefined; 19 19 20 20 export interface HandlerSuccess { 21 - encoding: 'application/octet-stream' 22 - body: Uint8Array | stream.Readable 23 - headers?: { [key: string]: string } 21 + encoding: "application/octet-stream"; 22 + body: Uint8Array | stream.Readable; 23 + headers?: { [key: string]: string }; 24 24 } 25 25 26 26 export interface HandlerError { 27 - status: number 28 - message?: string 27 + status: number; 28 + message?: string; 29 29 } 30 30 31 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 31 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 32 32 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 33 - auth: HA 34 - params: QueryParams 35 - input: HandlerInput 36 - req: express.Request 37 - res: express.Response 38 - resetRouteRateLimits: () => Promise<void> 39 - } 33 + auth: HA; 34 + params: QueryParams; 35 + input: HandlerInput; 36 + req: express.Request; 37 + res: express.Response; 38 + resetRouteRateLimits: () => Promise<void>; 39 + }; 40 40 export type Handler<HA extends HandlerAuth = never> = ( 41 41 ctx: HandlerReqCtx<HA>, 42 - ) => Promise<HandlerOutput> | HandlerOutput 42 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/googledrive/getFile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyGoogledriveDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyGoogledriveDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The unique identifier of the file to retrieve */ 14 - fileId: string 14 + fileId: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyGoogledriveDefs.FileView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyGoogledriveDefs.FileView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/googledrive/getFiles.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyGoogledriveDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyGoogledriveDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** Path to the Google Drive folder or root directory */ 14 - at?: string 14 + at?: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyGoogledriveDefs.FileListView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyGoogledriveDefs.FileListView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+19 -19
apps/api/src/lexicon/types/app/rocksky/graph/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 /** indicates that a handle or DID could not be resolved */ 10 10 export interface NotFoundActor { 11 - actor: string 12 - notFound: boolean 13 - [k: string]: unknown 11 + actor: string; 12 + notFound: boolean; 13 + [k: string]: unknown; 14 14 } 15 15 16 16 export function isNotFoundActor(v: unknown): v is NotFoundActor { 17 17 return ( 18 18 isObj(v) && 19 - hasProp(v, '$type') && 20 - v.$type === 'app.rocksky.graph.defs#notFoundActor' 21 - ) 19 + hasProp(v, "$type") && 20 + v.$type === "app.rocksky.graph.defs#notFoundActor" 21 + ); 22 22 } 23 23 24 24 export function validateNotFoundActor(v: unknown): ValidationResult { 25 - return lexicons.validate('app.rocksky.graph.defs#notFoundActor', v) 25 + return lexicons.validate("app.rocksky.graph.defs#notFoundActor", v); 26 26 } 27 27 28 28 export interface Relationship { 29 - did: string 29 + did: string; 30 30 /** if the actor follows this DID, this is the AT-URI of the follow record */ 31 - following?: string 31 + following?: string; 32 32 /** if the actor is followed by this DID, contains the AT-URI of the follow record */ 33 - followedBy?: string 34 - [k: string]: unknown 33 + followedBy?: string; 34 + [k: string]: unknown; 35 35 } 36 36 37 37 export function isRelationship(v: unknown): v is Relationship { 38 38 return ( 39 39 isObj(v) && 40 - hasProp(v, '$type') && 41 - v.$type === 'app.rocksky.graph.defs#relationship' 42 - ) 40 + hasProp(v, "$type") && 41 + v.$type === "app.rocksky.graph.defs#relationship" 42 + ); 43 43 } 44 44 45 45 export function validateRelationship(v: unknown): ValidationResult { 46 - return lexicons.validate('app.rocksky.graph.defs#relationship', v) 46 + return lexicons.validate("app.rocksky.graph.defs#relationship", v); 47 47 }
+14 -14
apps/api/src/lexicon/types/app/rocksky/graph/follow.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef"; 9 9 10 10 export interface Record { 11 - createdAt: string 12 - subject: string 13 - via?: ComAtprotoRepoStrongRef.Main 14 - [k: string]: unknown 11 + createdAt: string; 12 + subject: string; 13 + via?: ComAtprotoRepoStrongRef.Main; 14 + [k: string]: unknown; 15 15 } 16 16 17 17 export function isRecord(v: unknown): v is Record { 18 18 return ( 19 19 isObj(v) && 20 - hasProp(v, '$type') && 21 - (v.$type === 'app.rocksky.graph.follow#main' || 22 - v.$type === 'app.rocksky.graph.follow') 23 - ) 20 + hasProp(v, "$type") && 21 + (v.$type === "app.rocksky.graph.follow#main" || 22 + v.$type === "app.rocksky.graph.follow") 23 + ); 24 24 } 25 25 26 26 export function validateRecord(v: unknown): ValidationResult { 27 - return lexicons.validate('app.rocksky.graph.follow#main', v) 27 + return lexicons.validate("app.rocksky.graph.follow#main", v); 28 28 }
+28 -28
apps/api/src/lexicon/types/app/rocksky/graph/followAccount.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from '../actor/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "../actor/defs"; 11 11 12 12 export interface QueryParams { 13 - account: string 13 + account: string; 14 14 } 15 15 16 - export type InputSchema = undefined 16 + export type InputSchema = undefined; 17 17 18 18 export interface OutputSchema { 19 - subject: AppRockskyActorDefs.ProfileViewBasic 20 - followers: AppRockskyActorDefs.ProfileViewBasic[] 19 + subject: AppRockskyActorDefs.ProfileViewBasic; 20 + followers: AppRockskyActorDefs.ProfileViewBasic[]; 21 21 /** A cursor value to pass to subsequent calls to get the next page of results. */ 22 - cursor?: string 23 - [k: string]: unknown 22 + cursor?: string; 23 + [k: string]: unknown; 24 24 } 25 25 26 - export type HandlerInput = undefined 26 + export type HandlerInput = undefined; 27 27 28 28 export interface HandlerSuccess { 29 - encoding: 'application/json' 30 - body: OutputSchema 31 - headers?: { [key: string]: string } 29 + encoding: "application/json"; 30 + body: OutputSchema; 31 + headers?: { [key: string]: string }; 32 32 } 33 33 34 34 export interface HandlerError { 35 - status: number 36 - message?: string 35 + status: number; 36 + message?: string; 37 37 } 38 38 39 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 39 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 40 40 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 41 - auth: HA 42 - params: QueryParams 43 - input: HandlerInput 44 - req: express.Request 45 - res: express.Response 46 - resetRouteRateLimits: () => Promise<void> 47 - } 41 + auth: HA; 42 + params: QueryParams; 43 + input: HandlerInput; 44 + req: express.Request; 45 + res: express.Response; 46 + resetRouteRateLimits: () => Promise<void>; 47 + }; 48 48 export type Handler<HA extends HandlerAuth = never> = ( 49 49 ctx: HandlerReqCtx<HA>, 50 - ) => Promise<HandlerOutput> | HandlerOutput 50 + ) => Promise<HandlerOutput> | HandlerOutput;
+32 -32
apps/api/src/lexicon/types/app/rocksky/graph/getFollowers.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from '../actor/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "../actor/defs"; 11 11 12 12 export interface QueryParams { 13 - actor: string 14 - limit: number 13 + actor: string; 14 + limit: number; 15 15 /** If provided, filters the followers to only include those with DIDs in this list. */ 16 - dids?: string[] 17 - cursor?: string 16 + dids?: string[]; 17 + cursor?: string; 18 18 } 19 19 20 - export type InputSchema = undefined 20 + export type InputSchema = undefined; 21 21 22 22 export interface OutputSchema { 23 - subject: AppRockskyActorDefs.ProfileViewBasic 24 - followers: AppRockskyActorDefs.ProfileViewBasic[] 23 + subject: AppRockskyActorDefs.ProfileViewBasic; 24 + followers: AppRockskyActorDefs.ProfileViewBasic[]; 25 25 /** A cursor value to pass to subsequent calls to get the next page of results. */ 26 - cursor?: string 26 + cursor?: string; 27 27 /** The total number of followers. */ 28 - count?: number 29 - [k: string]: unknown 28 + count?: number; 29 + [k: string]: unknown; 30 30 } 31 31 32 - export type HandlerInput = undefined 32 + export type HandlerInput = undefined; 33 33 34 34 export interface HandlerSuccess { 35 - encoding: 'application/json' 36 - body: OutputSchema 37 - headers?: { [key: string]: string } 35 + encoding: "application/json"; 36 + body: OutputSchema; 37 + headers?: { [key: string]: string }; 38 38 } 39 39 40 40 export interface HandlerError { 41 - status: number 42 - message?: string 41 + status: number; 42 + message?: string; 43 43 } 44 44 45 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 45 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 46 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 - } 47 + auth: HA; 48 + params: QueryParams; 49 + input: HandlerInput; 50 + req: express.Request; 51 + res: express.Response; 52 + resetRouteRateLimits: () => Promise<void>; 53 + }; 54 54 export type Handler<HA extends HandlerAuth = never> = ( 55 55 ctx: HandlerReqCtx<HA>, 56 - ) => Promise<HandlerOutput> | HandlerOutput 56 + ) => Promise<HandlerOutput> | HandlerOutput;
+32 -32
apps/api/src/lexicon/types/app/rocksky/graph/getFollows.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from '../actor/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "../actor/defs"; 11 11 12 12 export interface QueryParams { 13 - actor: string 14 - limit: number 13 + actor: string; 14 + limit: number; 15 15 /** If provided, filters the follows to only include those with DIDs in this list. */ 16 - dids?: string[] 17 - cursor?: string 16 + dids?: string[]; 17 + cursor?: string; 18 18 } 19 19 20 - export type InputSchema = undefined 20 + export type InputSchema = undefined; 21 21 22 22 export interface OutputSchema { 23 - subject: AppRockskyActorDefs.ProfileViewBasic 24 - follows: AppRockskyActorDefs.ProfileViewBasic[] 23 + subject: AppRockskyActorDefs.ProfileViewBasic; 24 + follows: AppRockskyActorDefs.ProfileViewBasic[]; 25 25 /** A cursor value to pass to subsequent calls to get the next page of results. */ 26 - cursor?: string 26 + cursor?: string; 27 27 /** The total number of follows. */ 28 - count?: number 29 - [k: string]: unknown 28 + count?: number; 29 + [k: string]: unknown; 30 30 } 31 31 32 - export type HandlerInput = undefined 32 + export type HandlerInput = undefined; 33 33 34 34 export interface HandlerSuccess { 35 - encoding: 'application/json' 36 - body: OutputSchema 37 - headers?: { [key: string]: string } 35 + encoding: "application/json"; 36 + body: OutputSchema; 37 + headers?: { [key: string]: string }; 38 38 } 39 39 40 40 export interface HandlerError { 41 - status: number 42 - message?: string 41 + status: number; 42 + message?: string; 43 43 } 44 44 45 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 45 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 46 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 - } 47 + auth: HA; 48 + params: QueryParams; 49 + input: HandlerInput; 50 + req: express.Request; 51 + res: express.Response; 52 + resetRouteRateLimits: () => Promise<void>; 53 + }; 54 54 export type Handler<HA extends HandlerAuth = never> = ( 55 55 ctx: HandlerReqCtx<HA>, 56 - ) => Promise<HandlerOutput> | HandlerOutput 56 + ) => Promise<HandlerOutput> | HandlerOutput;
+30 -30
apps/api/src/lexicon/types/app/rocksky/graph/getKnownFollowers.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from '../actor/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "../actor/defs"; 11 11 12 12 export interface QueryParams { 13 - actor: string 14 - limit: number 15 - cursor?: string 13 + actor: string; 14 + limit: number; 15 + cursor?: string; 16 16 } 17 17 18 - export type InputSchema = undefined 18 + export type InputSchema = undefined; 19 19 20 20 export interface OutputSchema { 21 - subject: AppRockskyActorDefs.ProfileViewBasic 22 - followers: AppRockskyActorDefs.ProfileViewBasic[] 21 + subject: AppRockskyActorDefs.ProfileViewBasic; 22 + followers: AppRockskyActorDefs.ProfileViewBasic[]; 23 23 /** A cursor value to pass to subsequent calls to get the next page of results. */ 24 - cursor?: string 25 - [k: string]: unknown 24 + cursor?: string; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/graph/unfollowAccount.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyActorDefs from '../actor/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyActorDefs from "../actor/defs"; 11 11 12 12 export interface QueryParams { 13 - account: string 13 + account: string; 14 14 } 15 15 16 - export type InputSchema = undefined 16 + export type InputSchema = undefined; 17 17 18 18 export interface OutputSchema { 19 - subject: AppRockskyActorDefs.ProfileViewBasic 20 - followers: AppRockskyActorDefs.ProfileViewBasic[] 19 + subject: AppRockskyActorDefs.ProfileViewBasic; 20 + followers: AppRockskyActorDefs.ProfileViewBasic[]; 21 21 /** A cursor value to pass to subsequent calls to get the next page of results. */ 22 - cursor?: string 23 - [k: string]: unknown 22 + cursor?: string; 23 + [k: string]: unknown; 24 24 } 25 25 26 - export type HandlerInput = undefined 26 + export type HandlerInput = undefined; 27 27 28 28 export interface HandlerSuccess { 29 - encoding: 'application/json' 30 - body: OutputSchema 31 - headers?: { [key: string]: string } 29 + encoding: "application/json"; 30 + body: OutputSchema; 31 + headers?: { [key: string]: string }; 32 32 } 33 33 34 34 export interface HandlerError { 35 - status: number 36 - message?: string 35 + status: number; 36 + message?: string; 37 37 } 38 38 39 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 39 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 40 40 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 41 - auth: HA 42 - params: QueryParams 43 - input: HandlerInput 44 - req: express.Request 45 - res: express.Response 46 - resetRouteRateLimits: () => Promise<void> 47 - } 41 + auth: HA; 42 + params: QueryParams; 43 + input: HandlerInput; 44 + req: express.Request; 45 + res: express.Response; 46 + resetRouteRateLimits: () => Promise<void>; 47 + }; 48 48 export type Handler<HA extends HandlerAuth = never> = ( 49 49 ctx: HandlerReqCtx<HA>, 50 - ) => Promise<HandlerOutput> | HandlerOutput 50 + ) => Promise<HandlerOutput> | HandlerOutput;
+12 -12
apps/api/src/lexicon/types/app/rocksky/like.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as ComAtprotoRepoStrongRef from '../../com/atproto/repo/strongRef' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as ComAtprotoRepoStrongRef from "../../com/atproto/repo/strongRef"; 9 9 10 10 export interface Record { 11 11 /** The date when the like was created. */ 12 - createdAt: string 13 - subject: ComAtprotoRepoStrongRef.Main 14 - [k: string]: unknown 12 + createdAt: string; 13 + subject: ComAtprotoRepoStrongRef.Main; 14 + [k: string]: unknown; 15 15 } 16 16 17 17 export function isRecord(v: unknown): v is Record { 18 18 return ( 19 19 isObj(v) && 20 - hasProp(v, '$type') && 21 - (v.$type === 'app.rocksky.like#main' || v.$type === 'app.rocksky.like') 22 - ) 20 + hasProp(v, "$type") && 21 + (v.$type === "app.rocksky.like#main" || v.$type === "app.rocksky.like") 22 + ); 23 23 } 24 24 25 25 export function validateRecord(v: unknown): ValidationResult { 26 - return lexicons.validate('app.rocksky.like#main', v) 26 + return lexicons.validate("app.rocksky.like#main", v); 27 27 }
+27 -27
apps/api/src/lexicon/types/app/rocksky/like/dislikeShout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from '../shout/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "../shout/defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The unique identifier of the shout to dislike */ 16 - uri?: string 17 - [k: string]: unknown 16 + uri?: string; 17 + [k: string]: unknown; 18 18 } 19 19 20 - export type OutputSchema = AppRockskyShoutDefs.ShoutView 20 + export type OutputSchema = AppRockskyShoutDefs.ShoutView; 21 21 22 22 export interface HandlerInput { 23 - encoding: 'application/json' 24 - body: InputSchema 23 + encoding: "application/json"; 24 + body: InputSchema; 25 25 } 26 26 27 27 export interface HandlerSuccess { 28 - encoding: 'application/json' 29 - body: OutputSchema 30 - headers?: { [key: string]: string } 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 31 } 32 32 33 33 export interface HandlerError { 34 - status: number 35 - message?: string 34 + status: number; 35 + message?: string; 36 36 } 37 37 38 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 38 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 39 39 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 40 - auth: HA 41 - params: QueryParams 42 - input: HandlerInput 43 - req: express.Request 44 - res: express.Response 45 - resetRouteRateLimits: () => Promise<void> 46 - } 40 + auth: HA; 41 + params: QueryParams; 42 + input: HandlerInput; 43 + req: express.Request; 44 + res: express.Response; 45 + resetRouteRateLimits: () => Promise<void>; 46 + }; 47 47 export type Handler<HA extends HandlerAuth = never> = ( 48 48 ctx: HandlerReqCtx<HA>, 49 - ) => Promise<HandlerOutput> | HandlerOutput 49 + ) => Promise<HandlerOutput> | HandlerOutput;
+27 -27
apps/api/src/lexicon/types/app/rocksky/like/dislikeSong.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from '../song/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "../song/defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The unique identifier of the song to dislike */ 16 - uri?: string 17 - [k: string]: unknown 16 + uri?: string; 17 + [k: string]: unknown; 18 18 } 19 19 20 - export type OutputSchema = AppRockskySongDefs.SongViewDetailed 20 + export type OutputSchema = AppRockskySongDefs.SongViewDetailed; 21 21 22 22 export interface HandlerInput { 23 - encoding: 'application/json' 24 - body: InputSchema 23 + encoding: "application/json"; 24 + body: InputSchema; 25 25 } 26 26 27 27 export interface HandlerSuccess { 28 - encoding: 'application/json' 29 - body: OutputSchema 30 - headers?: { [key: string]: string } 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 31 } 32 32 33 33 export interface HandlerError { 34 - status: number 35 - message?: string 34 + status: number; 35 + message?: string; 36 36 } 37 37 38 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 38 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 39 39 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 40 - auth: HA 41 - params: QueryParams 42 - input: HandlerInput 43 - req: express.Request 44 - res: express.Response 45 - resetRouteRateLimits: () => Promise<void> 46 - } 40 + auth: HA; 41 + params: QueryParams; 42 + input: HandlerInput; 43 + req: express.Request; 44 + res: express.Response; 45 + resetRouteRateLimits: () => Promise<void>; 46 + }; 47 47 export type Handler<HA extends HandlerAuth = never> = ( 48 48 ctx: HandlerReqCtx<HA>, 49 - ) => Promise<HandlerOutput> | HandlerOutput 49 + ) => Promise<HandlerOutput> | HandlerOutput;
+27 -27
apps/api/src/lexicon/types/app/rocksky/like/likeShout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from '../shout/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "../shout/defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The unique identifier of the shout to like */ 16 - uri?: string 17 - [k: string]: unknown 16 + uri?: string; 17 + [k: string]: unknown; 18 18 } 19 19 20 - export type OutputSchema = AppRockskyShoutDefs.ShoutView 20 + export type OutputSchema = AppRockskyShoutDefs.ShoutView; 21 21 22 22 export interface HandlerInput { 23 - encoding: 'application/json' 24 - body: InputSchema 23 + encoding: "application/json"; 24 + body: InputSchema; 25 25 } 26 26 27 27 export interface HandlerSuccess { 28 - encoding: 'application/json' 29 - body: OutputSchema 30 - headers?: { [key: string]: string } 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 31 } 32 32 33 33 export interface HandlerError { 34 - status: number 35 - message?: string 34 + status: number; 35 + message?: string; 36 36 } 37 37 38 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 38 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 39 39 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 40 - auth: HA 41 - params: QueryParams 42 - input: HandlerInput 43 - req: express.Request 44 - res: express.Response 45 - resetRouteRateLimits: () => Promise<void> 46 - } 40 + auth: HA; 41 + params: QueryParams; 42 + input: HandlerInput; 43 + req: express.Request; 44 + res: express.Response; 45 + resetRouteRateLimits: () => Promise<void>; 46 + }; 47 47 export type Handler<HA extends HandlerAuth = never> = ( 48 48 ctx: HandlerReqCtx<HA>, 49 - ) => Promise<HandlerOutput> | HandlerOutput 49 + ) => Promise<HandlerOutput> | HandlerOutput;
+27 -27
apps/api/src/lexicon/types/app/rocksky/like/likeSong.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from '../song/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "../song/defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The unique identifier of the song to like */ 16 - uri?: string 17 - [k: string]: unknown 16 + uri?: string; 17 + [k: string]: unknown; 18 18 } 19 19 20 - export type OutputSchema = AppRockskySongDefs.SongViewDetailed 20 + export type OutputSchema = AppRockskySongDefs.SongViewDetailed; 21 21 22 22 export interface HandlerInput { 23 - encoding: 'application/json' 24 - body: InputSchema 23 + encoding: "application/json"; 24 + body: InputSchema; 25 25 } 26 26 27 27 export interface HandlerSuccess { 28 - encoding: 'application/json' 29 - body: OutputSchema 30 - headers?: { [key: string]: string } 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 31 } 32 32 33 33 export interface HandlerError { 34 - status: number 35 - message?: string 34 + status: number; 35 + message?: string; 36 36 } 37 37 38 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 38 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 39 39 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 40 - auth: HA 41 - params: QueryParams 42 - input: HandlerInput 43 - req: express.Request 44 - res: express.Response 45 - resetRouteRateLimits: () => Promise<void> 46 - } 40 + auth: HA; 41 + params: QueryParams; 42 + input: HandlerInput; 43 + req: express.Request; 44 + res: express.Response; 45 + resetRouteRateLimits: () => Promise<void>; 46 + }; 47 47 export type Handler<HA extends HandlerAuth = never> = ( 48 48 ctx: HandlerReqCtx<HA>, 49 - ) => Promise<HandlerOutput> | HandlerOutput 49 + ) => Promise<HandlerOutput> | HandlerOutput;
+23 -23
apps/api/src/lexicon/types/app/rocksky/player/addDirectoryToQueue.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 12 + playerId?: string; 13 13 /** The directory to add to the queue */ 14 - directory: string 14 + directory: string; 15 15 /** Position in the queue to insert the directory at, defaults to the end if not specified */ 16 - position?: number 16 + position?: number; 17 17 /** Whether to shuffle the added directory in the queue */ 18 - shuffle?: boolean 18 + shuffle?: boolean; 19 19 } 20 20 21 - export type InputSchema = undefined 22 - export type HandlerInput = undefined 21 + export type InputSchema = undefined; 22 + export type HandlerInput = undefined; 23 23 24 24 export interface HandlerError { 25 - status: number 26 - message?: string 25 + status: number; 26 + message?: string; 27 27 } 28 28 29 - export type HandlerOutput = HandlerError | void 29 + export type HandlerOutput = HandlerError | void; 30 30 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 31 - auth: HA 32 - params: QueryParams 33 - input: HandlerInput 34 - req: express.Request 35 - res: express.Response 36 - resetRouteRateLimits: () => Promise<void> 37 - } 31 + auth: HA; 32 + params: QueryParams; 33 + input: HandlerInput; 34 + req: express.Request; 35 + res: express.Response; 36 + resetRouteRateLimits: () => Promise<void>; 37 + }; 38 38 export type Handler<HA extends HandlerAuth = never> = ( 39 39 ctx: HandlerReqCtx<HA>, 40 - ) => Promise<HandlerOutput> | HandlerOutput 40 + ) => Promise<HandlerOutput> | HandlerOutput;
+23 -23
apps/api/src/lexicon/types/app/rocksky/player/addItemsToQueue.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 13 - items: string[] 12 + playerId?: string; 13 + items: string[]; 14 14 /** Position in the queue to insert the items at, defaults to the end if not specified */ 15 - position?: number 15 + position?: number; 16 16 /** Whether to shuffle the added items in the queue */ 17 - shuffle?: boolean 17 + shuffle?: boolean; 18 18 } 19 19 20 - export type InputSchema = undefined 21 - export type HandlerInput = undefined 20 + export type InputSchema = undefined; 21 + export type HandlerInput = undefined; 22 22 23 23 export interface HandlerError { 24 - status: number 25 - message?: string 24 + status: number; 25 + message?: string; 26 26 } 27 27 28 - export type HandlerOutput = HandlerError | void 28 + export type HandlerOutput = HandlerError | void; 29 29 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 30 - auth: HA 31 - params: QueryParams 32 - input: HandlerInput 33 - req: express.Request 34 - res: express.Response 35 - resetRouteRateLimits: () => Promise<void> 36 - } 30 + auth: HA; 31 + params: QueryParams; 32 + input: HandlerInput; 33 + req: express.Request; 34 + res: express.Response; 35 + resetRouteRateLimits: () => Promise<void>; 36 + }; 37 37 export type Handler<HA extends HandlerAuth = never> = ( 38 38 ctx: HandlerReqCtx<HA>, 39 - ) => Promise<HandlerOutput> | HandlerOutput 39 + ) => Promise<HandlerOutput> | HandlerOutput;
+19 -19
apps/api/src/lexicon/types/app/rocksky/player/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskySongDefsSongViewBasic from '../song/defs/songViewBasic' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskySongDefsSongViewBasic from "../song/defs/songViewBasic"; 9 9 10 10 export interface CurrentlyPlayingViewDetailed { 11 11 /** The title of the currently playing track */ 12 - title?: string 13 - [k: string]: unknown 12 + title?: string; 13 + [k: string]: unknown; 14 14 } 15 15 16 16 export function isCurrentlyPlayingViewDetailed( ··· 18 18 ): v is CurrentlyPlayingViewDetailed { 19 19 return ( 20 20 isObj(v) && 21 - hasProp(v, '$type') && 22 - v.$type === 'app.rocksky.player.defs#currentlyPlayingViewDetailed' 23 - ) 21 + hasProp(v, "$type") && 22 + v.$type === "app.rocksky.player.defs#currentlyPlayingViewDetailed" 23 + ); 24 24 } 25 25 26 26 export function validateCurrentlyPlayingViewDetailed( 27 27 v: unknown, 28 28 ): ValidationResult { 29 29 return lexicons.validate( 30 - 'app.rocksky.player.defs#currentlyPlayingViewDetailed', 30 + "app.rocksky.player.defs#currentlyPlayingViewDetailed", 31 31 v, 32 - ) 32 + ); 33 33 } 34 34 35 35 export interface PlaybackQueueViewDetailed { 36 - tracks?: AppRockskySongDefsSongViewBasic.Main[] 37 - [k: string]: unknown 36 + tracks?: AppRockskySongDefsSongViewBasic.Main[]; 37 + [k: string]: unknown; 38 38 } 39 39 40 40 export function isPlaybackQueueViewDetailed( ··· 42 42 ): v is PlaybackQueueViewDetailed { 43 43 return ( 44 44 isObj(v) && 45 - hasProp(v, '$type') && 46 - v.$type === 'app.rocksky.player.defs#playbackQueueViewDetailed' 47 - ) 45 + hasProp(v, "$type") && 46 + v.$type === "app.rocksky.player.defs#playbackQueueViewDetailed" 47 + ); 48 48 } 49 49 50 50 export function validatePlaybackQueueViewDetailed( 51 51 v: unknown, 52 52 ): ValidationResult { 53 53 return lexicons.validate( 54 - 'app.rocksky.player.defs#playbackQueueViewDetailed', 54 + "app.rocksky.player.defs#playbackQueueViewDetailed", 55 55 v, 56 - ) 56 + ); 57 57 }
+26 -26
apps/api/src/lexicon/types/app/rocksky/player/getCurrentlyPlaying.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyPlayerDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyPlayerDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 - playerId?: string 13 + playerId?: string; 14 14 /** Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user. */ 15 - actor?: string 15 + actor?: string; 16 16 } 17 17 18 - export type InputSchema = undefined 19 - export type OutputSchema = AppRockskyPlayerDefs.CurrentlyPlayingViewDetailed 20 - export type HandlerInput = undefined 18 + export type InputSchema = undefined; 19 + export type OutputSchema = AppRockskyPlayerDefs.CurrentlyPlayingViewDetailed; 20 + export type HandlerInput = undefined; 21 21 22 22 export interface HandlerSuccess { 23 - encoding: 'application/json' 24 - body: OutputSchema 25 - headers?: { [key: string]: string } 23 + encoding: "application/json"; 24 + body: OutputSchema; 25 + headers?: { [key: string]: string }; 26 26 } 27 27 28 28 export interface HandlerError { 29 - status: number 30 - message?: string 29 + status: number; 30 + message?: string; 31 31 } 32 32 33 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 33 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 34 34 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 35 - auth: HA 36 - params: QueryParams 37 - input: HandlerInput 38 - req: express.Request 39 - res: express.Response 40 - resetRouteRateLimits: () => Promise<void> 41 - } 35 + auth: HA; 36 + params: QueryParams; 37 + input: HandlerInput; 38 + req: express.Request; 39 + res: express.Response; 40 + resetRouteRateLimits: () => Promise<void>; 41 + }; 42 42 export type Handler<HA extends HandlerAuth = never> = ( 43 43 ctx: HandlerReqCtx<HA>, 44 - ) => Promise<HandlerOutput> | HandlerOutput 44 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/player/getPlaybackQueue.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyPlayerDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyPlayerDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 - playerId?: string 13 + playerId?: string; 14 14 } 15 15 16 - export type InputSchema = undefined 17 - export type OutputSchema = AppRockskyPlayerDefs.PlaybackQueueViewDetailed 18 - export type HandlerInput = undefined 16 + export type InputSchema = undefined; 17 + export type OutputSchema = AppRockskyPlayerDefs.PlaybackQueueViewDetailed; 18 + export type HandlerInput = undefined; 19 19 20 20 export interface HandlerSuccess { 21 - encoding: 'application/json' 22 - body: OutputSchema 23 - headers?: { [key: string]: string } 21 + encoding: "application/json"; 22 + body: OutputSchema; 23 + headers?: { [key: string]: string }; 24 24 } 25 25 26 26 export interface HandlerError { 27 - status: number 28 - message?: string 27 + status: number; 28 + message?: string; 29 29 } 30 30 31 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 31 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 32 32 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 33 - auth: HA 34 - params: QueryParams 35 - input: HandlerInput 36 - req: express.Request 37 - res: express.Response 38 - resetRouteRateLimits: () => Promise<void> 39 - } 33 + auth: HA; 34 + params: QueryParams; 35 + input: HandlerInput; 36 + req: express.Request; 37 + res: express.Response; 38 + resetRouteRateLimits: () => Promise<void>; 39 + }; 40 40 export type Handler<HA extends HandlerAuth = never> = ( 41 41 ctx: HandlerReqCtx<HA>, 42 - ) => Promise<HandlerOutput> | HandlerOutput 42 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/player/next.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 12 + playerId?: string; 13 13 } 14 14 15 - export type InputSchema = undefined 16 - export type HandlerInput = undefined 15 + export type InputSchema = undefined; 16 + export type HandlerInput = undefined; 17 17 18 18 export interface HandlerError { 19 - status: number 20 - message?: string 19 + status: number; 20 + message?: string; 21 21 } 22 22 23 - export type HandlerOutput = HandlerError | void 23 + export type HandlerOutput = HandlerError | void; 24 24 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 25 - auth: HA 26 - params: QueryParams 27 - input: HandlerInput 28 - req: express.Request 29 - res: express.Response 30 - resetRouteRateLimits: () => Promise<void> 31 - } 25 + auth: HA; 26 + params: QueryParams; 27 + input: HandlerInput; 28 + req: express.Request; 29 + res: express.Response; 30 + resetRouteRateLimits: () => Promise<void>; 31 + }; 32 32 export type Handler<HA extends HandlerAuth = never> = ( 33 33 ctx: HandlerReqCtx<HA>, 34 - ) => Promise<HandlerOutput> | HandlerOutput 34 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/player/pause.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 12 + playerId?: string; 13 13 } 14 14 15 - export type InputSchema = undefined 16 - export type HandlerInput = undefined 15 + export type InputSchema = undefined; 16 + export type HandlerInput = undefined; 17 17 18 18 export interface HandlerError { 19 - status: number 20 - message?: string 19 + status: number; 20 + message?: string; 21 21 } 22 22 23 - export type HandlerOutput = HandlerError | void 23 + export type HandlerOutput = HandlerError | void; 24 24 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 25 - auth: HA 26 - params: QueryParams 27 - input: HandlerInput 28 - req: express.Request 29 - res: express.Response 30 - resetRouteRateLimits: () => Promise<void> 31 - } 25 + auth: HA; 26 + params: QueryParams; 27 + input: HandlerInput; 28 + req: express.Request; 29 + res: express.Response; 30 + resetRouteRateLimits: () => Promise<void>; 31 + }; 32 32 export type Handler<HA extends HandlerAuth = never> = ( 33 33 ctx: HandlerReqCtx<HA>, 34 - ) => Promise<HandlerOutput> | HandlerOutput 34 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/player/play.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 12 + playerId?: string; 13 13 } 14 14 15 - export type InputSchema = undefined 16 - export type HandlerInput = undefined 15 + export type InputSchema = undefined; 16 + export type HandlerInput = undefined; 17 17 18 18 export interface HandlerError { 19 - status: number 20 - message?: string 19 + status: number; 20 + message?: string; 21 21 } 22 22 23 - export type HandlerOutput = HandlerError | void 23 + export type HandlerOutput = HandlerError | void; 24 24 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 25 - auth: HA 26 - params: QueryParams 27 - input: HandlerInput 28 - req: express.Request 29 - res: express.Response 30 - resetRouteRateLimits: () => Promise<void> 31 - } 25 + auth: HA; 26 + params: QueryParams; 27 + input: HandlerInput; 28 + req: express.Request; 29 + res: express.Response; 30 + resetRouteRateLimits: () => Promise<void>; 31 + }; 32 32 export type Handler<HA extends HandlerAuth = never> = ( 33 33 ctx: HandlerReqCtx<HA>, 34 - ) => Promise<HandlerOutput> | HandlerOutput 34 + ) => Promise<HandlerOutput> | HandlerOutput;
+24 -24
apps/api/src/lexicon/types/app/rocksky/player/playDirectory.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 13 - directoryId: string 14 - shuffle?: boolean 15 - recurse?: boolean 16 - position?: number 12 + playerId?: string; 13 + directoryId: string; 14 + shuffle?: boolean; 15 + recurse?: boolean; 16 + position?: number; 17 17 } 18 18 19 - export type InputSchema = undefined 20 - export type HandlerInput = undefined 19 + export type InputSchema = undefined; 20 + export type HandlerInput = undefined; 21 21 22 22 export interface HandlerError { 23 - status: number 24 - message?: string 23 + status: number; 24 + message?: string; 25 25 } 26 26 27 - export type HandlerOutput = HandlerError | void 27 + export type HandlerOutput = HandlerError | void; 28 28 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 29 - auth: HA 30 - params: QueryParams 31 - input: HandlerInput 32 - req: express.Request 33 - res: express.Response 34 - resetRouteRateLimits: () => Promise<void> 35 - } 29 + auth: HA; 30 + params: QueryParams; 31 + input: HandlerInput; 32 + req: express.Request; 33 + res: express.Response; 34 + resetRouteRateLimits: () => Promise<void>; 35 + }; 36 36 export type Handler<HA extends HandlerAuth = never> = ( 37 37 ctx: HandlerReqCtx<HA>, 38 - ) => Promise<HandlerOutput> | HandlerOutput 38 + ) => Promise<HandlerOutput> | HandlerOutput;
+21 -21
apps/api/src/lexicon/types/app/rocksky/player/playFile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 13 - fileId: string 12 + playerId?: string; 13 + fileId: string; 14 14 } 15 15 16 - export type InputSchema = undefined 17 - export type HandlerInput = undefined 16 + export type InputSchema = undefined; 17 + export type HandlerInput = undefined; 18 18 19 19 export interface HandlerError { 20 - status: number 21 - message?: string 20 + status: number; 21 + message?: string; 22 22 } 23 23 24 - export type HandlerOutput = HandlerError | void 24 + export type HandlerOutput = HandlerError | void; 25 25 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 26 - auth: HA 27 - params: QueryParams 28 - input: HandlerInput 29 - req: express.Request 30 - res: express.Response 31 - resetRouteRateLimits: () => Promise<void> 32 - } 26 + auth: HA; 27 + params: QueryParams; 28 + input: HandlerInput; 29 + req: express.Request; 30 + res: express.Response; 31 + resetRouteRateLimits: () => Promise<void>; 32 + }; 33 33 export type Handler<HA extends HandlerAuth = never> = ( 34 34 ctx: HandlerReqCtx<HA>, 35 - ) => Promise<HandlerOutput> | HandlerOutput 35 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/player/previous.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 12 + playerId?: string; 13 13 } 14 14 15 - export type InputSchema = undefined 16 - export type HandlerInput = undefined 15 + export type InputSchema = undefined; 16 + export type HandlerInput = undefined; 17 17 18 18 export interface HandlerError { 19 - status: number 20 - message?: string 19 + status: number; 20 + message?: string; 21 21 } 22 22 23 - export type HandlerOutput = HandlerError | void 23 + export type HandlerOutput = HandlerError | void; 24 24 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 25 - auth: HA 26 - params: QueryParams 27 - input: HandlerInput 28 - req: express.Request 29 - res: express.Response 30 - resetRouteRateLimits: () => Promise<void> 31 - } 25 + auth: HA; 26 + params: QueryParams; 27 + input: HandlerInput; 28 + req: express.Request; 29 + res: express.Response; 30 + resetRouteRateLimits: () => Promise<void>; 31 + }; 32 32 export type Handler<HA extends HandlerAuth = never> = ( 33 33 ctx: HandlerReqCtx<HA>, 34 - ) => Promise<HandlerOutput> | HandlerOutput 34 + ) => Promise<HandlerOutput> | HandlerOutput;
+21 -21
apps/api/src/lexicon/types/app/rocksky/player/seek.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 - playerId?: string 12 + playerId?: string; 13 13 /** The position in seconds to seek to */ 14 - position: number 14 + position: number; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type HandlerInput = undefined; 19 19 20 20 export interface HandlerError { 21 - status: number 22 - message?: string 21 + status: number; 22 + message?: string; 23 23 } 24 24 25 - export type HandlerOutput = HandlerError | void 25 + export type HandlerOutput = HandlerError | void; 26 26 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 27 - auth: HA 28 - params: QueryParams 29 - input: HandlerInput 30 - req: express.Request 31 - res: express.Response 32 - resetRouteRateLimits: () => Promise<void> 33 - } 27 + auth: HA; 28 + params: QueryParams; 29 + input: HandlerInput; 30 + req: express.Request; 31 + res: express.Response; 32 + resetRouteRateLimits: () => Promise<void>; 33 + }; 34 34 export type Handler<HA extends HandlerAuth = never> = ( 35 35 ctx: HandlerReqCtx<HA>, 36 - ) => Promise<HandlerOutput> | HandlerOutput 36 + ) => Promise<HandlerOutput> | HandlerOutput;
+19 -19
apps/api/src/lexicon/types/app/rocksky/playlist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Record { 10 10 /** The name of the playlist. */ 11 - name: string 11 + name: string; 12 12 /** The playlist description. */ 13 - description?: string 13 + description?: string; 14 14 /** The picture of the playlist. */ 15 - picture?: BlobRef 15 + picture?: BlobRef; 16 16 /** The URL of the picture of the artist. */ 17 - pictureUrl?: string 17 + pictureUrl?: string; 18 18 /** The date the playlist was created. */ 19 - createdAt: string 19 + createdAt: string; 20 20 /** The Spotify link of the playlist. */ 21 - spotifyLink?: string 21 + spotifyLink?: string; 22 22 /** The Tidal link of the playlist. */ 23 - tidalLink?: string 23 + tidalLink?: string; 24 24 /** The YouTube link of the playlist. */ 25 - youtubeLink?: string 25 + youtubeLink?: string; 26 26 /** The Apple Music link of the playlist. */ 27 - appleMusicLink?: string 28 - [k: string]: unknown 27 + appleMusicLink?: string; 28 + [k: string]: unknown; 29 29 } 30 30 31 31 export function isRecord(v: unknown): v is Record { 32 32 return ( 33 33 isObj(v) && 34 - hasProp(v, '$type') && 35 - (v.$type === 'app.rocksky.playlist#main' || 36 - v.$type === 'app.rocksky.playlist') 37 - ) 34 + hasProp(v, "$type") && 35 + (v.$type === "app.rocksky.playlist#main" || 36 + v.$type === "app.rocksky.playlist") 37 + ); 38 38 } 39 39 40 40 export function validateRecord(v: unknown): ValidationResult { 41 - return lexicons.validate('app.rocksky.playlist#main', v) 41 + return lexicons.validate("app.rocksky.playlist#main", v); 42 42 }
+21 -21
apps/api/src/lexicon/types/app/rocksky/playlist/createPlaylist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The name of the playlist */ 13 - name: string 13 + name: string; 14 14 /** A brief description of the playlist */ 15 - description?: string 15 + description?: string; 16 16 } 17 17 18 - export type InputSchema = undefined 19 - export type HandlerInput = undefined 18 + export type InputSchema = undefined; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerError { 22 - status: number 23 - message?: string 22 + status: number; 23 + message?: string; 24 24 } 25 25 26 - export type HandlerOutput = HandlerError | void 26 + export type HandlerOutput = HandlerError | void; 27 27 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 28 - auth: HA 29 - params: QueryParams 30 - input: HandlerInput 31 - req: express.Request 32 - res: express.Response 33 - resetRouteRateLimits: () => Promise<void> 34 - } 28 + auth: HA; 29 + params: QueryParams; 30 + input: HandlerInput; 31 + req: express.Request; 32 + res: express.Response; 33 + resetRouteRateLimits: () => Promise<void>; 34 + }; 35 35 export type Handler<HA extends HandlerAuth = never> = ( 36 36 ctx: HandlerReqCtx<HA>, 37 - ) => Promise<HandlerOutput> | HandlerOutput 37 + ) => Promise<HandlerOutput> | HandlerOutput;
+37 -37
apps/api/src/lexicon/types/app/rocksky/playlist/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskySongDefs from '../song/defs' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskySongDefs from "../song/defs"; 9 9 10 10 /** Detailed view of a playlist, including its tracks and metadata */ 11 11 export interface PlaylistViewDetailed { 12 12 /** The unique identifier of the playlist. */ 13 - id?: string 13 + id?: string; 14 14 /** The title of the playlist. */ 15 - title?: string 15 + title?: string; 16 16 /** The URI of the playlist. */ 17 - uri?: string 17 + uri?: string; 18 18 /** The DID of the curator of the playlist. */ 19 - curatorDid?: string 19 + curatorDid?: string; 20 20 /** The handle of the curator of the playlist. */ 21 - curatorHandle?: string 21 + curatorHandle?: string; 22 22 /** The name of the curator of the playlist. */ 23 - curatorName?: string 23 + curatorName?: string; 24 24 /** The URL of the avatar image of the curator. */ 25 - curatorAvatarUrl?: string 25 + curatorAvatarUrl?: string; 26 26 /** A description of the playlist. */ 27 - description?: string 27 + description?: string; 28 28 /** The URL of the cover image for the playlist. */ 29 - coverImageUrl?: string 29 + coverImageUrl?: string; 30 30 /** The date and time when the playlist was created. */ 31 - createdAt?: string 31 + createdAt?: string; 32 32 /** A list of tracks in the playlist. */ 33 - tracks?: AppRockskySongDefs.SongViewBasic[] 34 - [k: string]: unknown 33 + tracks?: AppRockskySongDefs.SongViewBasic[]; 34 + [k: string]: unknown; 35 35 } 36 36 37 37 export function isPlaylistViewDetailed(v: unknown): v is PlaylistViewDetailed { 38 38 return ( 39 39 isObj(v) && 40 - hasProp(v, '$type') && 41 - v.$type === 'app.rocksky.playlist.defs#playlistViewDetailed' 42 - ) 40 + hasProp(v, "$type") && 41 + v.$type === "app.rocksky.playlist.defs#playlistViewDetailed" 42 + ); 43 43 } 44 44 45 45 export function validatePlaylistViewDetailed(v: unknown): ValidationResult { 46 - return lexicons.validate('app.rocksky.playlist.defs#playlistViewDetailed', v) 46 + return lexicons.validate("app.rocksky.playlist.defs#playlistViewDetailed", v); 47 47 } 48 48 49 49 /** Basic view of a playlist, including its metadata */ 50 50 export interface PlaylistViewBasic { 51 51 /** The unique identifier of the playlist. */ 52 - id?: string 52 + id?: string; 53 53 /** The title of the playlist. */ 54 - title?: string 54 + title?: string; 55 55 /** The URI of the playlist. */ 56 - uri?: string 56 + uri?: string; 57 57 /** The DID of the curator of the playlist. */ 58 - curatorDid?: string 58 + curatorDid?: string; 59 59 /** The handle of the curator of the playlist. */ 60 - curatorHandle?: string 60 + curatorHandle?: string; 61 61 /** The name of the curator of the playlist. */ 62 - curatorName?: string 62 + curatorName?: string; 63 63 /** The URL of the avatar image of the curator. */ 64 - curatorAvatarUrl?: string 64 + curatorAvatarUrl?: string; 65 65 /** A description of the playlist. */ 66 - description?: string 66 + description?: string; 67 67 /** The URL of the cover image for the playlist. */ 68 - coverImageUrl?: string 68 + coverImageUrl?: string; 69 69 /** The date and time when the playlist was created. */ 70 - createdAt?: string 70 + createdAt?: string; 71 71 /** The number of tracks in the playlist. */ 72 - trackCount?: number 73 - [k: string]: unknown 72 + trackCount?: number; 73 + [k: string]: unknown; 74 74 } 75 75 76 76 export function isPlaylistViewBasic(v: unknown): v is PlaylistViewBasic { 77 77 return ( 78 78 isObj(v) && 79 - hasProp(v, '$type') && 80 - v.$type === 'app.rocksky.playlist.defs#playlistViewBasic' 81 - ) 79 + hasProp(v, "$type") && 80 + v.$type === "app.rocksky.playlist.defs#playlistViewBasic" 81 + ); 82 82 } 83 83 84 84 export function validatePlaylistViewBasic(v: unknown): ValidationResult { 85 - return lexicons.validate('app.rocksky.playlist.defs#playlistViewBasic', v) 85 + return lexicons.validate("app.rocksky.playlist.defs#playlistViewBasic", v); 86 86 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/playlist/getPlaylist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyPlaylistDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyPlaylistDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the playlist to retrieve. */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyPlaylistDefs.PlaylistViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyPlaylistDefs.PlaylistViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+27 -27
apps/api/src/lexicon/types/app/rocksky/playlist/getPlaylists.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyPlaylistDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyPlaylistDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The maximum number of playlists to return. */ 14 - limit?: number 14 + limit?: number; 15 15 /** The offset for pagination, used to skip a number of playlists. */ 16 - offset?: number 16 + offset?: number; 17 17 } 18 18 19 - export type InputSchema = undefined 19 + export type InputSchema = undefined; 20 20 21 21 export interface OutputSchema { 22 - playlists?: AppRockskyPlaylistDefs.PlaylistViewBasic[] 23 - [k: string]: unknown 22 + playlists?: AppRockskyPlaylistDefs.PlaylistViewBasic[]; 23 + [k: string]: unknown; 24 24 } 25 25 26 - export type HandlerInput = undefined 26 + export type HandlerInput = undefined; 27 27 28 28 export interface HandlerSuccess { 29 - encoding: 'application/json' 30 - body: OutputSchema 31 - headers?: { [key: string]: string } 29 + encoding: "application/json"; 30 + body: OutputSchema; 31 + headers?: { [key: string]: string }; 32 32 } 33 33 34 34 export interface HandlerError { 35 - status: number 36 - message?: string 35 + status: number; 36 + message?: string; 37 37 } 38 38 39 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 39 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 40 40 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 41 - auth: HA 42 - params: QueryParams 43 - input: HandlerInput 44 - req: express.Request 45 - res: express.Response 46 - resetRouteRateLimits: () => Promise<void> 47 - } 41 + auth: HA; 42 + params: QueryParams; 43 + input: HandlerInput; 44 + req: express.Request; 45 + res: express.Response; 46 + resetRouteRateLimits: () => Promise<void>; 47 + }; 48 48 export type Handler<HA extends HandlerAuth = never> = ( 49 49 ctx: HandlerReqCtx<HA>, 50 - ) => Promise<HandlerOutput> | HandlerOutput 50 + ) => Promise<HandlerOutput> | HandlerOutput;
+22 -22
apps/api/src/lexicon/types/app/rocksky/playlist/insertDirectory.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The URI of the playlist to start */ 13 - uri: string 13 + uri: string; 14 14 /** The directory (id) to insert into the playlist */ 15 - directory: string 15 + directory: string; 16 16 /** The position in the playlist to insert the directory at, if not specified, the directory will be appended */ 17 - position?: number 17 + position?: number; 18 18 } 19 19 20 - export type InputSchema = undefined 21 - export type HandlerInput = undefined 20 + export type InputSchema = undefined; 21 + export type HandlerInput = undefined; 22 22 23 23 export interface HandlerError { 24 - status: number 25 - message?: string 24 + status: number; 25 + message?: string; 26 26 } 27 27 28 - export type HandlerOutput = HandlerError | void 28 + export type HandlerOutput = HandlerError | void; 29 29 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 30 - auth: HA 31 - params: QueryParams 32 - input: HandlerInput 33 - req: express.Request 34 - res: express.Response 35 - resetRouteRateLimits: () => Promise<void> 36 - } 30 + auth: HA; 31 + params: QueryParams; 32 + input: HandlerInput; 33 + req: express.Request; 34 + res: express.Response; 35 + resetRouteRateLimits: () => Promise<void>; 36 + }; 37 37 export type Handler<HA extends HandlerAuth = never> = ( 38 38 ctx: HandlerReqCtx<HA>, 39 - ) => Promise<HandlerOutput> | HandlerOutput 39 + ) => Promise<HandlerOutput> | HandlerOutput;
+22 -22
apps/api/src/lexicon/types/app/rocksky/playlist/insertFiles.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The URI of the playlist to start */ 13 - uri: string 14 - files: string[] 13 + uri: string; 14 + files: string[]; 15 15 /** The position in the playlist to insert the files at, if not specified, files will be appended */ 16 - position?: number 16 + position?: number; 17 17 } 18 18 19 - export type InputSchema = undefined 20 - export type HandlerInput = undefined 19 + export type InputSchema = undefined; 20 + export type HandlerInput = undefined; 21 21 22 22 export interface HandlerError { 23 - status: number 24 - message?: string 23 + status: number; 24 + message?: string; 25 25 } 26 26 27 - export type HandlerOutput = HandlerError | void 27 + export type HandlerOutput = HandlerError | void; 28 28 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 29 - auth: HA 30 - params: QueryParams 31 - input: HandlerInput 32 - req: express.Request 33 - res: express.Response 34 - resetRouteRateLimits: () => Promise<void> 35 - } 29 + auth: HA; 30 + params: QueryParams; 31 + input: HandlerInput; 32 + req: express.Request; 33 + res: express.Response; 34 + resetRouteRateLimits: () => Promise<void>; 35 + }; 36 36 export type Handler<HA extends HandlerAuth = never> = ( 37 37 ctx: HandlerReqCtx<HA>, 38 - ) => Promise<HandlerOutput> | HandlerOutput 38 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/playlist/removePlaylist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The URI of the playlist to remove */ 13 - uri: string 13 + uri: string; 14 14 } 15 15 16 - export type InputSchema = undefined 17 - export type HandlerInput = undefined 16 + export type InputSchema = undefined; 17 + export type HandlerInput = undefined; 18 18 19 19 export interface HandlerError { 20 - status: number 21 - message?: string 20 + status: number; 21 + message?: string; 22 22 } 23 23 24 - export type HandlerOutput = HandlerError | void 24 + export type HandlerOutput = HandlerError | void; 25 25 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 26 - auth: HA 27 - params: QueryParams 28 - input: HandlerInput 29 - req: express.Request 30 - res: express.Response 31 - resetRouteRateLimits: () => Promise<void> 32 - } 26 + auth: HA; 27 + params: QueryParams; 28 + input: HandlerInput; 29 + req: express.Request; 30 + res: express.Response; 31 + resetRouteRateLimits: () => Promise<void>; 32 + }; 33 33 export type Handler<HA extends HandlerAuth = never> = ( 34 34 ctx: HandlerReqCtx<HA>, 35 - ) => Promise<HandlerOutput> | HandlerOutput 35 + ) => Promise<HandlerOutput> | HandlerOutput;
+21 -21
apps/api/src/lexicon/types/app/rocksky/playlist/removeTrack.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The URI of the playlist to remove the track from */ 13 - uri: string 13 + uri: string; 14 14 /** The position of the track to remove in the playlist */ 15 - position: number 15 + position: number; 16 16 } 17 17 18 - export type InputSchema = undefined 19 - export type HandlerInput = undefined 18 + export type InputSchema = undefined; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerError { 22 - status: number 23 - message?: string 22 + status: number; 23 + message?: string; 24 24 } 25 25 26 - export type HandlerOutput = HandlerError | void 26 + export type HandlerOutput = HandlerError | void; 27 27 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 28 - auth: HA 29 - params: QueryParams 30 - input: HandlerInput 31 - req: express.Request 32 - res: express.Response 33 - resetRouteRateLimits: () => Promise<void> 34 - } 28 + auth: HA; 29 + params: QueryParams; 30 + input: HandlerInput; 31 + req: express.Request; 32 + res: express.Response; 33 + resetRouteRateLimits: () => Promise<void>; 34 + }; 35 35 export type Handler<HA extends HandlerAuth = never> = ( 36 36 ctx: HandlerReqCtx<HA>, 37 - ) => Promise<HandlerOutput> | HandlerOutput 37 + ) => Promise<HandlerOutput> | HandlerOutput;
+22 -22
apps/api/src/lexicon/types/app/rocksky/playlist/startPlaylist.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The URI of the playlist to start */ 13 - uri: string 13 + uri: string; 14 14 /** Whether to shuffle the playlist when starting it */ 15 - shuffle?: boolean 15 + shuffle?: boolean; 16 16 /** The position in the playlist to start from, if not specified, starts from the beginning */ 17 - position?: number 17 + position?: number; 18 18 } 19 19 20 - export type InputSchema = undefined 21 - export type HandlerInput = undefined 20 + export type InputSchema = undefined; 21 + export type HandlerInput = undefined; 22 22 23 23 export interface HandlerError { 24 - status: number 25 - message?: string 24 + status: number; 25 + message?: string; 26 26 } 27 27 28 - export type HandlerOutput = HandlerError | void 28 + export type HandlerOutput = HandlerError | void; 29 29 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 30 - auth: HA 31 - params: QueryParams 32 - input: HandlerInput 33 - req: express.Request 34 - res: express.Response 35 - resetRouteRateLimits: () => Promise<void> 36 - } 30 + auth: HA; 31 + params: QueryParams; 32 + input: HandlerInput; 33 + req: express.Request; 34 + res: express.Response; 35 + resetRouteRateLimits: () => Promise<void>; 36 + }; 37 37 export type Handler<HA extends HandlerAuth = never> = ( 38 38 ctx: HandlerReqCtx<HA>, 39 - ) => Promise<HandlerOutput> | HandlerOutput 39 + ) => Promise<HandlerOutput> | HandlerOutput;
+16 -16
apps/api/src/lexicon/types/app/rocksky/playlistItem.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as ComAtprotoRepoStrongRef from '../../com/atproto/repo/strongRef' 9 - import type * as AppRockskySongDefs from './song/defs' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as ComAtprotoRepoStrongRef from "../../com/atproto/repo/strongRef"; 9 + import type * as AppRockskySongDefs from "./song/defs"; 10 10 11 11 export interface Record { 12 - subject: ComAtprotoRepoStrongRef.Main 12 + subject: ComAtprotoRepoStrongRef.Main; 13 13 /** The date the playlist was created. */ 14 - createdAt: string 15 - track: AppRockskySongDefs.SongViewBasic 14 + createdAt: string; 15 + track: AppRockskySongDefs.SongViewBasic; 16 16 /** The order of the item in the playlist. */ 17 - order: number 18 - [k: string]: unknown 17 + order: number; 18 + [k: string]: unknown; 19 19 } 20 20 21 21 export function isRecord(v: unknown): v is Record { 22 22 return ( 23 23 isObj(v) && 24 - hasProp(v, '$type') && 25 - (v.$type === 'app.rocksky.playlistItem#main' || 26 - v.$type === 'app.rocksky.playlistItem') 27 - ) 24 + hasProp(v, "$type") && 25 + (v.$type === "app.rocksky.playlistItem#main" || 26 + v.$type === "app.rocksky.playlistItem") 27 + ); 28 28 } 29 29 30 30 export function validateRecord(v: unknown): ValidationResult { 31 - return lexicons.validate('app.rocksky.playlistItem#main', v) 31 + return lexicons.validate("app.rocksky.playlistItem#main", v); 32 32 }
+16 -16
apps/api/src/lexicon/types/app/rocksky/radio.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Record { 10 10 /** The name of the radio station. */ 11 - name: string 11 + name: string; 12 12 /** The URL of the radio station. */ 13 - url: string 13 + url: string; 14 14 /** A description of the radio station. */ 15 - description?: string 15 + description?: string; 16 16 /** The genre of the radio station. */ 17 - genre?: string 17 + genre?: string; 18 18 /** The logo of the radio station. */ 19 - logo?: BlobRef 19 + logo?: BlobRef; 20 20 /** The website of the radio station. */ 21 - website?: string 21 + website?: string; 22 22 /** The date when the radio station was created. */ 23 - createdAt: string 24 - [k: string]: unknown 23 + createdAt: string; 24 + [k: string]: unknown; 25 25 } 26 26 27 27 export function isRecord(v: unknown): v is Record { 28 28 return ( 29 29 isObj(v) && 30 - hasProp(v, '$type') && 31 - (v.$type === 'app.rocksky.radio#main' || v.$type === 'app.rocksky.radio') 32 - ) 30 + hasProp(v, "$type") && 31 + (v.$type === "app.rocksky.radio#main" || v.$type === "app.rocksky.radio") 32 + ); 33 33 } 34 34 35 35 export function validateRecord(v: unknown): ValidationResult { 36 - return lexicons.validate('app.rocksky.radio#main', v) 36 + return lexicons.validate("app.rocksky.radio#main", v); 37 37 }
+26 -26
apps/api/src/lexicon/types/app/rocksky/radio/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface RadioViewBasic { 10 10 /** The unique identifier of the radio. */ 11 - id?: string 11 + id?: string; 12 12 /** The name of the radio. */ 13 - name?: string 13 + name?: string; 14 14 /** A brief description of the radio. */ 15 - description?: string 15 + description?: string; 16 16 /** The date and time when the radio was created. */ 17 - createdAt?: string 18 - [k: string]: unknown 17 + createdAt?: string; 18 + [k: string]: unknown; 19 19 } 20 20 21 21 export function isRadioViewBasic(v: unknown): v is RadioViewBasic { 22 22 return ( 23 23 isObj(v) && 24 - hasProp(v, '$type') && 25 - v.$type === 'app.rocksky.radio.defs#radioViewBasic' 26 - ) 24 + hasProp(v, "$type") && 25 + v.$type === "app.rocksky.radio.defs#radioViewBasic" 26 + ); 27 27 } 28 28 29 29 export function validateRadioViewBasic(v: unknown): ValidationResult { 30 - return lexicons.validate('app.rocksky.radio.defs#radioViewBasic', v) 30 + return lexicons.validate("app.rocksky.radio.defs#radioViewBasic", v); 31 31 } 32 32 33 33 export interface RadioViewDetailed { 34 34 /** The unique identifier of the radio. */ 35 - id?: string 35 + id?: string; 36 36 /** The name of the radio. */ 37 - name?: string 37 + name?: string; 38 38 /** A brief description of the radio. */ 39 - description?: string 39 + description?: string; 40 40 /** The website of the radio. */ 41 - website?: string 41 + website?: string; 42 42 /** The streaming URL of the radio. */ 43 - url?: string 43 + url?: string; 44 44 /** The genre of the radio. */ 45 - genre?: string 45 + genre?: string; 46 46 /** The logo of the radio station. */ 47 - logo?: string 47 + logo?: string; 48 48 /** The date and time when the radio was created. */ 49 - createdAt?: string 50 - [k: string]: unknown 49 + createdAt?: string; 50 + [k: string]: unknown; 51 51 } 52 52 53 53 export function isRadioViewDetailed(v: unknown): v is RadioViewDetailed { 54 54 return ( 55 55 isObj(v) && 56 - hasProp(v, '$type') && 57 - v.$type === 'app.rocksky.radio.defs#radioViewDetailed' 58 - ) 56 + hasProp(v, "$type") && 57 + v.$type === "app.rocksky.radio.defs#radioViewDetailed" 58 + ); 59 59 } 60 60 61 61 export function validateRadioViewDetailed(v: unknown): ValidationResult { 62 - return lexicons.validate('app.rocksky.radio.defs#radioViewDetailed', v) 62 + return lexicons.validate("app.rocksky.radio.defs#radioViewDetailed", v); 63 63 }
+36 -36
apps/api/src/lexicon/types/app/rocksky/scrobble.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskyArtistDefs from './artist/defs' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskyArtistDefs from "./artist/defs"; 9 9 10 10 export interface Record { 11 11 /** The title of the song. */ 12 - title: string 12 + title: string; 13 13 /** The artist of the song. */ 14 - artist: string 14 + artist: string; 15 15 /** The artists of the song with MusicBrainz IDs. */ 16 - artists?: AppRockskyArtistDefs.ArtistMbid[] 16 + artists?: AppRockskyArtistDefs.ArtistMbid[]; 17 17 /** The album artist of the song. */ 18 - albumArtist: string 18 + albumArtist: string; 19 19 /** The album of the song. */ 20 - album: string 20 + album: string; 21 21 /** The duration of the song in seconds. */ 22 - duration: number 22 + duration: number; 23 23 /** The track number of the song in the album. */ 24 - trackNumber?: number 24 + trackNumber?: number; 25 25 /** The disc number of the song in the album. */ 26 - discNumber?: number 26 + discNumber?: number; 27 27 /** The release date of the song. */ 28 - releaseDate?: string 28 + releaseDate?: string; 29 29 /** The year the song was released. */ 30 - year?: number 30 + year?: number; 31 31 /** The genre of the song. */ 32 - genre?: string 32 + genre?: string; 33 33 /** The tags of the song. */ 34 - tags?: string[] 34 + tags?: string[]; 35 35 /** The composer of the song. */ 36 - composer?: string 36 + composer?: string; 37 37 /** The lyrics of the song. */ 38 - lyrics?: string 38 + lyrics?: string; 39 39 /** The copyright message of the song. */ 40 - copyrightMessage?: string 40 + copyrightMessage?: string; 41 41 /** Informations about the song */ 42 - wiki?: string 42 + wiki?: string; 43 43 /** The album art of the song. */ 44 - albumArt?: BlobRef 44 + albumArt?: BlobRef; 45 45 /** The URL of the album art of the song. */ 46 - albumArtUrl?: string 46 + albumArtUrl?: string; 47 47 /** The YouTube link of the song. */ 48 - youtubeLink?: string 48 + youtubeLink?: string; 49 49 /** The Spotify link of the song. */ 50 - spotifyLink?: string 50 + spotifyLink?: string; 51 51 /** The Tidal link of the song. */ 52 - tidalLink?: string 52 + tidalLink?: string; 53 53 /** The Apple Music link of the song. */ 54 - appleMusicLink?: string 54 + appleMusicLink?: string; 55 55 /** The date when the song was created. */ 56 - createdAt: string 56 + createdAt: string; 57 57 /** The MusicBrainz ID of the song. */ 58 - mbid?: string 58 + mbid?: string; 59 59 /** The label of the song. */ 60 - label?: string 61 - [k: string]: unknown 60 + label?: string; 61 + [k: string]: unknown; 62 62 } 63 63 64 64 export function isRecord(v: unknown): v is Record { 65 65 return ( 66 66 isObj(v) && 67 - hasProp(v, '$type') && 68 - (v.$type === 'app.rocksky.scrobble#main' || 69 - v.$type === 'app.rocksky.scrobble') 70 - ) 67 + hasProp(v, "$type") && 68 + (v.$type === "app.rocksky.scrobble#main" || 69 + v.$type === "app.rocksky.scrobble") 70 + ); 71 71 } 72 72 73 73 export function validateRecord(v: unknown): ValidationResult { 74 - return lexicons.validate('app.rocksky.scrobble#main', v) 74 + return lexicons.validate("app.rocksky.scrobble#main", v); 75 75 }
+48 -48
apps/api/src/lexicon/types/app/rocksky/scrobble/createScrobble.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyScrobbleDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyScrobbleDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The title of the track being scrobbled */ 16 - title: string 16 + title: string; 17 17 /** The artist of the track being scrobbled */ 18 - artist: string 18 + artist: string; 19 19 /** The album of the track being scrobbled */ 20 - album?: string 20 + album?: string; 21 21 /** The duration of the track in seconds */ 22 - duration?: number 22 + duration?: number; 23 23 /** The MusicBrainz ID of the track, if available */ 24 - mbId?: string 24 + mbId?: string; 25 25 /** The URL of the album art for the track */ 26 - albumArt?: string 26 + albumArt?: string; 27 27 /** The track number of the track in the album */ 28 - trackNumber?: number 28 + trackNumber?: number; 29 29 /** The release date of the track, formatted as YYYY-MM-DD */ 30 - releaseDate?: string 30 + releaseDate?: string; 31 31 /** The year the track was released */ 32 - year?: number 32 + year?: number; 33 33 /** The disc number of the track in the album, if applicable */ 34 - discNumber?: number 34 + discNumber?: number; 35 35 /** The lyrics of the track, if available */ 36 - lyrics?: string 36 + lyrics?: string; 37 37 /** The composer of the track, if available */ 38 - composer?: string 38 + composer?: string; 39 39 /** The copyright message for the track, if available */ 40 - copyrightMessage?: string 40 + copyrightMessage?: string; 41 41 /** The record label of the track, if available */ 42 - label?: string 42 + label?: string; 43 43 /** The URL of the artist's picture, if available */ 44 - artistPicture?: string 44 + artistPicture?: string; 45 45 /** The Spotify link for the track, if available */ 46 - spotifyLink?: string 46 + spotifyLink?: string; 47 47 /** The Last.fm link for the track, if available */ 48 - lastfmLink?: string 48 + lastfmLink?: string; 49 49 /** The Tidal link for the track, if available */ 50 - tidalLink?: string 50 + tidalLink?: string; 51 51 /** The Apple Music link for the track, if available */ 52 - appleMusicLink?: string 52 + appleMusicLink?: string; 53 53 /** The Youtube link for the track, if available */ 54 - youtubeLink?: string 54 + youtubeLink?: string; 55 55 /** The Deezer link for the track, if available */ 56 - deezerLink?: string 56 + deezerLink?: string; 57 57 /** The timestamp of the scrobble in milliseconds since epoch */ 58 - timestamp?: number 59 - [k: string]: unknown 58 + timestamp?: number; 59 + [k: string]: unknown; 60 60 } 61 61 62 - export type OutputSchema = AppRockskyScrobbleDefs.ScrobbleViewBasic 62 + export type OutputSchema = AppRockskyScrobbleDefs.ScrobbleViewBasic; 63 63 64 64 export interface HandlerInput { 65 - encoding: 'application/json' 66 - body: InputSchema 65 + encoding: "application/json"; 66 + body: InputSchema; 67 67 } 68 68 69 69 export interface HandlerSuccess { 70 - encoding: 'application/json' 71 - body: OutputSchema 72 - headers?: { [key: string]: string } 70 + encoding: "application/json"; 71 + body: OutputSchema; 72 + headers?: { [key: string]: string }; 73 73 } 74 74 75 75 export interface HandlerError { 76 - status: number 77 - message?: string 76 + status: number; 77 + message?: string; 78 78 } 79 79 80 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 80 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 81 81 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 82 - auth: HA 83 - params: QueryParams 84 - input: HandlerInput 85 - req: express.Request 86 - res: express.Response 87 - resetRouteRateLimits: () => Promise<void> 88 - } 82 + auth: HA; 83 + params: QueryParams; 84 + input: HandlerInput; 85 + req: express.Request; 86 + res: express.Response; 87 + resetRouteRateLimits: () => Promise<void>; 88 + }; 89 89 export type Handler<HA extends HandlerAuth = never> = ( 90 90 ctx: HandlerReqCtx<HA>, 91 - ) => Promise<HandlerOutput> | HandlerOutput 91 + ) => Promise<HandlerOutput> | HandlerOutput;
+42 -42
apps/api/src/lexicon/types/app/rocksky/scrobble/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface ScrobbleViewBasic { 10 10 /** The unique identifier of the scrobble. */ 11 - id?: string 11 + id?: string; 12 12 /** The handle of the user who created the scrobble. */ 13 - user?: string 13 + user?: string; 14 14 /** The display name of the user who created the scrobble. */ 15 - userDisplayName?: string 15 + userDisplayName?: string; 16 16 /** The avatar URL of the user who created the scrobble. */ 17 - userAvatar?: string 17 + userAvatar?: string; 18 18 /** The title of the scrobble. */ 19 - title?: string 19 + title?: string; 20 20 /** The artist of the song. */ 21 - artist?: string 21 + artist?: string; 22 22 /** The URI of the artist. */ 23 - artistUri?: string 23 + artistUri?: string; 24 24 /** The album of the song. */ 25 - album?: string 25 + album?: string; 26 26 /** The URI of the album. */ 27 - albumUri?: string 27 + albumUri?: string; 28 28 /** The album art URL of the song. */ 29 - cover?: string 29 + cover?: string; 30 30 /** The timestamp when the scrobble was created. */ 31 - date?: string 31 + date?: string; 32 32 /** The URI of the scrobble. */ 33 - uri?: string 33 + uri?: string; 34 34 /** The SHA256 hash of the scrobble data. */ 35 - sha256?: string 36 - liked?: boolean 37 - likesCount?: number 38 - [k: string]: unknown 35 + sha256?: string; 36 + liked?: boolean; 37 + likesCount?: number; 38 + [k: string]: unknown; 39 39 } 40 40 41 41 export function isScrobbleViewBasic(v: unknown): v is ScrobbleViewBasic { 42 42 return ( 43 43 isObj(v) && 44 - hasProp(v, '$type') && 45 - v.$type === 'app.rocksky.scrobble.defs#scrobbleViewBasic' 46 - ) 44 + hasProp(v, "$type") && 45 + v.$type === "app.rocksky.scrobble.defs#scrobbleViewBasic" 46 + ); 47 47 } 48 48 49 49 export function validateScrobbleViewBasic(v: unknown): ValidationResult { 50 - return lexicons.validate('app.rocksky.scrobble.defs#scrobbleViewBasic', v) 50 + return lexicons.validate("app.rocksky.scrobble.defs#scrobbleViewBasic", v); 51 51 } 52 52 53 53 export interface ScrobbleViewDetailed { 54 54 /** The unique identifier of the scrobble. */ 55 - id?: string 55 + id?: string; 56 56 /** The handle of the user who created the scrobble. */ 57 - user?: string 57 + user?: string; 58 58 /** The title of the scrobble. */ 59 - title?: string 59 + title?: string; 60 60 /** The artist of the song. */ 61 - artist?: string 61 + artist?: string; 62 62 /** The URI of the artist. */ 63 - artistUri?: string 63 + artistUri?: string; 64 64 /** The album of the song. */ 65 - album?: string 65 + album?: string; 66 66 /** The URI of the album. */ 67 - albumUri?: string 67 + albumUri?: string; 68 68 /** The album art URL of the song. */ 69 - cover?: string 69 + cover?: string; 70 70 /** The timestamp when the scrobble was created. */ 71 - date?: string 71 + date?: string; 72 72 /** The URI of the scrobble. */ 73 - uri?: string 73 + uri?: string; 74 74 /** The SHA256 hash of the scrobble data. */ 75 - sha256?: string 75 + sha256?: string; 76 76 /** The number of listeners */ 77 - listeners?: number 77 + listeners?: number; 78 78 /** The number of scrobbles for this song */ 79 - scrobbles?: number 80 - [k: string]: unknown 79 + scrobbles?: number; 80 + [k: string]: unknown; 81 81 } 82 82 83 83 export function isScrobbleViewDetailed(v: unknown): v is ScrobbleViewDetailed { 84 84 return ( 85 85 isObj(v) && 86 - hasProp(v, '$type') && 87 - v.$type === 'app.rocksky.scrobble.defs#scrobbleViewDetailed' 88 - ) 86 + hasProp(v, "$type") && 87 + v.$type === "app.rocksky.scrobble.defs#scrobbleViewDetailed" 88 + ); 89 89 } 90 90 91 91 export function validateScrobbleViewDetailed(v: unknown): ValidationResult { 92 - return lexicons.validate('app.rocksky.scrobble.defs#scrobbleViewDetailed', v) 92 + return lexicons.validate("app.rocksky.scrobble.defs#scrobbleViewDetailed", v); 93 93 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/scrobble/getScrobble.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyScrobbleDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyScrobbleDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The unique identifier of the scrobble */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyScrobbleDefs.ScrobbleViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyScrobbleDefs.ScrobbleViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+29 -29
apps/api/src/lexicon/types/app/rocksky/scrobble/getScrobbles.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyScrobbleDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyScrobbleDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did?: string 14 + did?: string; 15 15 /** If true, only return scrobbles from actors the viewer is following. */ 16 - following?: boolean 16 + following?: boolean; 17 17 /** The maximum number of scrobbles to return */ 18 - limit?: number 18 + limit?: number; 19 19 /** The offset for pagination */ 20 - offset?: number 20 + offset?: number; 21 21 } 22 22 23 - export type InputSchema = undefined 23 + export type InputSchema = undefined; 24 24 25 25 export interface OutputSchema { 26 - scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[] 27 - [k: string]: unknown 26 + scrobbles?: AppRockskyScrobbleDefs.ScrobbleViewBasic[]; 27 + [k: string]: unknown; 28 28 } 29 29 30 - export type HandlerInput = undefined 30 + export type HandlerInput = undefined; 31 31 32 32 export interface HandlerSuccess { 33 - encoding: 'application/json' 34 - body: OutputSchema 35 - headers?: { [key: string]: string } 33 + encoding: "application/json"; 34 + body: OutputSchema; 35 + headers?: { [key: string]: string }; 36 36 } 37 37 38 38 export interface HandlerError { 39 - status: number 40 - message?: string 39 + status: number; 40 + message?: string; 41 41 } 42 42 43 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 43 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 44 44 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 45 - auth: HA 46 - params: QueryParams 47 - input: HandlerInput 48 - req: express.Request 49 - res: express.Response 50 - resetRouteRateLimits: () => Promise<void> 51 - } 45 + auth: HA; 46 + params: QueryParams; 47 + input: HandlerInput; 48 + req: express.Request; 49 + res: express.Response; 50 + resetRouteRateLimits: () => Promise<void>; 51 + }; 52 52 export type Handler<HA extends HandlerAuth = never> = ( 53 53 ctx: HandlerReqCtx<HA>, 54 - ) => Promise<HandlerOutput> | HandlerOutput 54 + ) => Promise<HandlerOutput> | HandlerOutput;
+14 -14
apps/api/src/lexicon/types/app/rocksky/shout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as ComAtprotoRepoStrongRef from '../../com/atproto/repo/strongRef' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as ComAtprotoRepoStrongRef from "../../com/atproto/repo/strongRef"; 9 9 10 10 export interface Record { 11 11 /** The message of the shout. */ 12 - message: string 12 + message: string; 13 13 /** The date when the shout was created. */ 14 - createdAt: string 15 - parent?: ComAtprotoRepoStrongRef.Main 16 - subject: ComAtprotoRepoStrongRef.Main 17 - [k: string]: unknown 14 + createdAt: string; 15 + parent?: ComAtprotoRepoStrongRef.Main; 16 + subject: ComAtprotoRepoStrongRef.Main; 17 + [k: string]: unknown; 18 18 } 19 19 20 20 export function isRecord(v: unknown): v is Record { 21 21 return ( 22 22 isObj(v) && 23 - hasProp(v, '$type') && 24 - (v.$type === 'app.rocksky.shout#main' || v.$type === 'app.rocksky.shout') 25 - ) 23 + hasProp(v, "$type") && 24 + (v.$type === "app.rocksky.shout#main" || v.$type === "app.rocksky.shout") 25 + ); 26 26 } 27 27 28 28 export function validateRecord(v: unknown): ValidationResult { 29 - return lexicons.validate('app.rocksky.shout#main', v) 29 + return lexicons.validate("app.rocksky.shout#main", v); 30 30 }
+27 -27
apps/api/src/lexicon/types/app/rocksky/shout/createShout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The content of the shout */ 16 - message?: string 17 - [k: string]: unknown 16 + message?: string; 17 + [k: string]: unknown; 18 18 } 19 19 20 - export type OutputSchema = AppRockskyShoutDefs.ShoutView 20 + export type OutputSchema = AppRockskyShoutDefs.ShoutView; 21 21 22 22 export interface HandlerInput { 23 - encoding: 'application/json' 24 - body: InputSchema 23 + encoding: "application/json"; 24 + body: InputSchema; 25 25 } 26 26 27 27 export interface HandlerSuccess { 28 - encoding: 'application/json' 29 - body: OutputSchema 30 - headers?: { [key: string]: string } 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 31 } 32 32 33 33 export interface HandlerError { 34 - status: number 35 - message?: string 34 + status: number; 35 + message?: string; 36 36 } 37 37 38 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 38 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 39 39 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 40 - auth: HA 41 - params: QueryParams 42 - input: HandlerInput 43 - req: express.Request 44 - res: express.Response 45 - resetRouteRateLimits: () => Promise<void> 46 - } 40 + auth: HA; 41 + params: QueryParams; 42 + input: HandlerInput; 43 + req: express.Request; 44 + res: express.Response; 45 + resetRouteRateLimits: () => Promise<void>; 46 + }; 47 47 export type Handler<HA extends HandlerAuth = never> = ( 48 48 ctx: HandlerReqCtx<HA>, 49 - ) => Promise<HandlerOutput> | HandlerOutput 49 + ) => Promise<HandlerOutput> | HandlerOutput;
+24 -24
apps/api/src/lexicon/types/app/rocksky/shout/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Author { 10 10 /** The unique identifier of the author. */ 11 - id?: string 11 + id?: string; 12 12 /** The decentralized identifier (DID) of the author. */ 13 - did?: string 13 + did?: string; 14 14 /** The handle of the author. */ 15 - handle?: string 15 + handle?: string; 16 16 /** The display name of the author. */ 17 - displayName?: string 17 + displayName?: string; 18 18 /** The URL of the author's avatar image. */ 19 - avatar?: string 20 - [k: string]: unknown 19 + avatar?: string; 20 + [k: string]: unknown; 21 21 } 22 22 23 23 export function isAuthor(v: unknown): v is Author { 24 24 return ( 25 25 isObj(v) && 26 - hasProp(v, '$type') && 27 - v.$type === 'app.rocksky.shout.defs#author' 28 - ) 26 + hasProp(v, "$type") && 27 + v.$type === "app.rocksky.shout.defs#author" 28 + ); 29 29 } 30 30 31 31 export function validateAuthor(v: unknown): ValidationResult { 32 - return lexicons.validate('app.rocksky.shout.defs#author', v) 32 + return lexicons.validate("app.rocksky.shout.defs#author", v); 33 33 } 34 34 35 35 export interface ShoutView { 36 36 /** The unique identifier of the shout. */ 37 - id?: string 37 + id?: string; 38 38 /** The content of the shout. */ 39 - message?: string 39 + message?: string; 40 40 /** The ID of the parent shout if this is a reply, otherwise null. */ 41 - parent?: string 41 + parent?: string; 42 42 /** The date and time when the shout was created. */ 43 - createdAt?: string 44 - author?: Author 45 - [k: string]: unknown 43 + createdAt?: string; 44 + author?: Author; 45 + [k: string]: unknown; 46 46 } 47 47 48 48 export function isShoutView(v: unknown): v is ShoutView { 49 49 return ( 50 50 isObj(v) && 51 - hasProp(v, '$type') && 52 - v.$type === 'app.rocksky.shout.defs#shoutView' 53 - ) 51 + hasProp(v, "$type") && 52 + v.$type === "app.rocksky.shout.defs#shoutView" 53 + ); 54 54 } 55 55 56 56 export function validateShoutView(v: unknown): ValidationResult { 57 - return lexicons.validate('app.rocksky.shout.defs#shoutView', v) 57 + return lexicons.validate("app.rocksky.shout.defs#shoutView", v); 58 58 }
+28 -28
apps/api/src/lexicon/types/app/rocksky/shout/getAlbumShouts.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The unique identifier of the album to retrieve shouts for */ 14 - uri: string 14 + uri: string; 15 15 /** The maximum number of shouts to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The number of shouts to skip before starting to collect the result set */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - shouts?: AppRockskyShoutDefs.ShoutViewBasic[] 25 - [k: string]: unknown 24 + shouts?: AppRockskyShoutDefs.ShoutViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/shout/getArtistShouts.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the artist to retrieve shouts for */ 14 - uri: string 14 + uri: string; 15 15 /** The maximum number of shouts to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The number of shouts to skip before starting to collect the result set */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - shouts?: AppRockskyShoutDefs.ShoutViewBasic[] 25 - [k: string]: unknown 24 + shouts?: AppRockskyShoutDefs.ShoutViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/shout/getProfileShouts.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the actor */ 14 - did: string 14 + did: string; 15 15 /** The offset for pagination */ 16 - offset?: number 16 + offset?: number; 17 17 /** The maximum number of shouts to return */ 18 - limit?: number 18 + limit?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - shouts?: AppRockskyShoutDefs.ShoutViewBasic[] 25 - [k: string]: unknown 24 + shouts?: AppRockskyShoutDefs.ShoutViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/shout/getShoutReplies.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the shout to retrieve replies for */ 14 - uri: string 14 + uri: string; 15 15 /** The maximum number of shouts to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** The number of shouts to skip before starting to collect the result set */ 18 - offset?: number 18 + offset?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - shouts?: AppRockskyShoutDefs.ShoutViewBasic[] 25 - [k: string]: unknown 24 + shouts?: AppRockskyShoutDefs.ShoutViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/shout/getTrackShouts.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The URI of the track to retrieve shouts for */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - shouts?: AppRockskyShoutDefs.ShoutViewBasic[] 21 - [k: string]: unknown 20 + shouts?: AppRockskyShoutDefs.ShoutViewBasic[]; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/app/rocksky/shout/removeShout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The ID of the shout to be removed */ 14 - id: string 14 + id: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyShoutDefs.ShoutView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyShoutDefs.ShoutView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/shout/replyShout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The unique identifier of the shout to reply to */ 16 - shoutId: string 16 + shoutId: string; 17 17 /** The content of the reply */ 18 - message: string 19 - [k: string]: unknown 18 + message: string; 19 + [k: string]: unknown; 20 20 } 21 21 22 - export type OutputSchema = AppRockskyShoutDefs.ShoutView 22 + export type OutputSchema = AppRockskyShoutDefs.ShoutView; 23 23 24 24 export interface HandlerInput { 25 - encoding: 'application/json' 26 - body: InputSchema 25 + encoding: "application/json"; 26 + body: InputSchema; 27 27 } 28 28 29 29 export interface HandlerSuccess { 30 - encoding: 'application/json' 31 - body: OutputSchema 32 - headers?: { [key: string]: string } 30 + encoding: "application/json"; 31 + body: OutputSchema; 32 + headers?: { [key: string]: string }; 33 33 } 34 34 35 35 export interface HandlerError { 36 - status: number 37 - message?: string 36 + status: number; 37 + message?: string; 38 38 } 39 39 40 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 40 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 41 41 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 42 - auth: HA 43 - params: QueryParams 44 - input: HandlerInput 45 - req: express.Request 46 - res: express.Response 47 - resetRouteRateLimits: () => Promise<void> 48 - } 42 + auth: HA; 43 + params: QueryParams; 44 + input: HandlerInput; 45 + req: express.Request; 46 + res: express.Response; 47 + resetRouteRateLimits: () => Promise<void>; 48 + }; 49 49 export type Handler<HA extends HandlerAuth = never> = ( 50 50 ctx: HandlerReqCtx<HA>, 51 - ) => Promise<HandlerOutput> | HandlerOutput 51 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/shout/reportShout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyShoutDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyShoutDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The unique identifier of the shout to report */ 16 - shoutId: string 16 + shoutId: string; 17 17 /** The reason for reporting the shout */ 18 - reason?: string 19 - [k: string]: unknown 18 + reason?: string; 19 + [k: string]: unknown; 20 20 } 21 21 22 - export type OutputSchema = AppRockskyShoutDefs.ShoutView 22 + export type OutputSchema = AppRockskyShoutDefs.ShoutView; 23 23 24 24 export interface HandlerInput { 25 - encoding: 'application/json' 26 - body: InputSchema 25 + encoding: "application/json"; 26 + body: InputSchema; 27 27 } 28 28 29 29 export interface HandlerSuccess { 30 - encoding: 'application/json' 31 - body: OutputSchema 32 - headers?: { [key: string]: string } 30 + encoding: "application/json"; 31 + body: OutputSchema; 32 + headers?: { [key: string]: string }; 33 33 } 34 34 35 35 export interface HandlerError { 36 - status: number 37 - message?: string 36 + status: number; 37 + message?: string; 38 38 } 39 39 40 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 40 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 41 41 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 42 - auth: HA 43 - params: QueryParams 44 - input: HandlerInput 45 - req: express.Request 46 - res: express.Response 47 - resetRouteRateLimits: () => Promise<void> 48 - } 42 + auth: HA; 43 + params: QueryParams; 44 + input: HandlerInput; 45 + req: express.Request; 46 + res: express.Response; 47 + resetRouteRateLimits: () => Promise<void>; 48 + }; 49 49 export type Handler<HA extends HandlerAuth = never> = ( 50 50 ctx: HandlerReqCtx<HA>, 51 - ) => Promise<HandlerOutput> | HandlerOutput 51 + ) => Promise<HandlerOutput> | HandlerOutput;
+35 -35
apps/api/src/lexicon/types/app/rocksky/song.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../lexicons' 6 - import { isObj, hasProp } from '../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppRockskyArtistDefs from './artist/defs' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../lexicons"; 6 + import { isObj, hasProp } from "../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppRockskyArtistDefs from "./artist/defs"; 9 9 10 10 export interface Record { 11 11 /** The title of the song. */ 12 - title: string 12 + title: string; 13 13 /** The artist of the song. */ 14 - artist: string 14 + artist: string; 15 15 /** The artists of the song with MusicBrainz IDs. */ 16 - artists?: AppRockskyArtistDefs.ArtistMbid[] 16 + artists?: AppRockskyArtistDefs.ArtistMbid[]; 17 17 /** The album artist of the song. */ 18 - albumArtist: string 18 + albumArtist: string; 19 19 /** The album of the song. */ 20 - album: string 20 + album: string; 21 21 /** The duration of the song in seconds. */ 22 - duration: number 22 + duration: number; 23 23 /** The track number of the song in the album. */ 24 - trackNumber?: number 24 + trackNumber?: number; 25 25 /** The disc number of the song in the album. */ 26 - discNumber?: number 26 + discNumber?: number; 27 27 /** The release date of the song. */ 28 - releaseDate?: string 28 + releaseDate?: string; 29 29 /** The year the song was released. */ 30 - year?: number 30 + year?: number; 31 31 /** The genre of the song. */ 32 - genre?: string 32 + genre?: string; 33 33 /** The tags of the song. */ 34 - tags?: string[] 34 + tags?: string[]; 35 35 /** The composer of the song. */ 36 - composer?: string 36 + composer?: string; 37 37 /** The lyrics of the song. */ 38 - lyrics?: string 38 + lyrics?: string; 39 39 /** The copyright message of the song. */ 40 - copyrightMessage?: string 40 + copyrightMessage?: string; 41 41 /** Informations about the song */ 42 - wiki?: string 42 + wiki?: string; 43 43 /** The album art of the song. */ 44 - albumArt?: BlobRef 44 + albumArt?: BlobRef; 45 45 /** The URL of the album art of the song. */ 46 - albumArtUrl?: string 46 + albumArtUrl?: string; 47 47 /** The YouTube link of the song. */ 48 - youtubeLink?: string 48 + youtubeLink?: string; 49 49 /** The Spotify link of the song. */ 50 - spotifyLink?: string 50 + spotifyLink?: string; 51 51 /** The Tidal link of the song. */ 52 - tidalLink?: string 52 + tidalLink?: string; 53 53 /** The Apple Music link of the song. */ 54 - appleMusicLink?: string 54 + appleMusicLink?: string; 55 55 /** The date when the song was created. */ 56 - createdAt: string 56 + createdAt: string; 57 57 /** The MusicBrainz ID of the song. */ 58 - mbid?: string 58 + mbid?: string; 59 59 /** The label of the song. */ 60 - label?: string 61 - [k: string]: unknown 60 + label?: string; 61 + [k: string]: unknown; 62 62 } 63 63 64 64 export function isRecord(v: unknown): v is Record { 65 65 return ( 66 66 isObj(v) && 67 - hasProp(v, '$type') && 68 - (v.$type === 'app.rocksky.song#main' || v.$type === 'app.rocksky.song') 69 - ) 67 + hasProp(v, "$type") && 68 + (v.$type === "app.rocksky.song#main" || v.$type === "app.rocksky.song") 69 + ); 70 70 } 71 71 72 72 export function validateRecord(v: unknown): ValidationResult { 73 - return lexicons.validate('app.rocksky.song#main', v) 73 + return lexicons.validate("app.rocksky.song#main", v); 74 74 }
+38 -38
apps/api/src/lexicon/types/app/rocksky/song/createSong.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "./defs"; 11 11 12 - export type QueryParams = {} 12 + export type QueryParams = {}; 13 13 14 14 export interface InputSchema { 15 15 /** The title of the song */ 16 - title: string 16 + title: string; 17 17 /** The artist of the song */ 18 - artist: string 18 + artist: string; 19 19 /** The album artist of the song, if different from the main artist */ 20 - albumArtist: string 20 + albumArtist: string; 21 21 /** The album of the song, if applicable */ 22 - album: string 22 + album: string; 23 23 /** The duration of the song in seconds */ 24 - duration?: number 24 + duration?: number; 25 25 /** The MusicBrainz ID of the song, if available */ 26 - mbId?: string 26 + mbId?: string; 27 27 /** The URL of the album art for the song */ 28 - albumArt?: string 28 + albumArt?: string; 29 29 /** The track number of the song in the album, if applicable */ 30 - trackNumber?: number 30 + trackNumber?: number; 31 31 /** The release date of the song, formatted as YYYY-MM-DD */ 32 - releaseDate?: string 32 + releaseDate?: string; 33 33 /** The year the song was released */ 34 - year?: number 34 + year?: number; 35 35 /** The disc number of the song in the album, if applicable */ 36 - discNumber?: number 36 + discNumber?: number; 37 37 /** The lyrics of the song, if available */ 38 - lyrics?: string 39 - [k: string]: unknown 38 + lyrics?: string; 39 + [k: string]: unknown; 40 40 } 41 41 42 - export type OutputSchema = AppRockskySongDefs.SongViewDetailed 42 + export type OutputSchema = AppRockskySongDefs.SongViewDetailed; 43 43 44 44 export interface HandlerInput { 45 - encoding: 'application/json' 46 - body: InputSchema 45 + encoding: "application/json"; 46 + body: InputSchema; 47 47 } 48 48 49 49 export interface HandlerSuccess { 50 - encoding: 'application/json' 51 - body: OutputSchema 52 - headers?: { [key: string]: string } 50 + encoding: "application/json"; 51 + body: OutputSchema; 52 + headers?: { [key: string]: string }; 53 53 } 54 54 55 55 export interface HandlerError { 56 - status: number 57 - message?: string 56 + status: number; 57 + message?: string; 58 58 } 59 59 60 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 60 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 61 61 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 62 - auth: HA 63 - params: QueryParams 64 - input: HandlerInput 65 - req: express.Request 66 - res: express.Response 67 - resetRouteRateLimits: () => Promise<void> 68 - } 62 + auth: HA; 63 + params: QueryParams; 64 + input: HandlerInput; 65 + req: express.Request; 66 + res: express.Response; 67 + resetRouteRateLimits: () => Promise<void>; 68 + }; 69 69 export type Handler<HA extends HandlerAuth = never> = ( 70 70 ctx: HandlerReqCtx<HA>, 71 - ) => Promise<HandlerOutput> | HandlerOutput 71 + ) => Promise<HandlerOutput> | HandlerOutput;
+48 -48
apps/api/src/lexicon/types/app/rocksky/song/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface SongViewBasic { 10 10 /** The unique identifier of the song. */ 11 - id?: string 11 + id?: string; 12 12 /** The title of the song. */ 13 - title?: string 13 + title?: string; 14 14 /** The artist of the song. */ 15 - artist?: string 15 + artist?: string; 16 16 /** The artist of the album the song belongs to. */ 17 - albumArtist?: string 17 + albumArtist?: string; 18 18 /** The URL of the album art image. */ 19 - albumArt?: string 19 + albumArt?: string; 20 20 /** The URI of the song. */ 21 - uri?: string 21 + uri?: string; 22 22 /** The album of the song. */ 23 - album?: string 23 + album?: string; 24 24 /** The duration of the song in milliseconds. */ 25 - duration?: number 25 + duration?: number; 26 26 /** The track number of the song in the album. */ 27 - trackNumber?: number 27 + trackNumber?: number; 28 28 /** The disc number of the song in the album. */ 29 - discNumber?: number 29 + discNumber?: number; 30 30 /** The number of times the song has been played. */ 31 - playCount?: number 31 + playCount?: number; 32 32 /** The number of unique listeners who have played the song. */ 33 - uniqueListeners?: number 33 + uniqueListeners?: number; 34 34 /** The URI of the album the song belongs to. */ 35 - albumUri?: string 35 + albumUri?: string; 36 36 /** The URI of the artist of the song. */ 37 - artistUri?: string 37 + artistUri?: string; 38 38 /** The SHA256 hash of the song. */ 39 - sha256?: string 40 - tags?: string[] 39 + sha256?: string; 40 + tags?: string[]; 41 41 /** The timestamp when the song was created. */ 42 - createdAt?: string 43 - [k: string]: unknown 42 + createdAt?: string; 43 + [k: string]: unknown; 44 44 } 45 45 46 46 export function isSongViewBasic(v: unknown): v is SongViewBasic { 47 47 return ( 48 48 isObj(v) && 49 - hasProp(v, '$type') && 50 - v.$type === 'app.rocksky.song.defs#songViewBasic' 51 - ) 49 + hasProp(v, "$type") && 50 + v.$type === "app.rocksky.song.defs#songViewBasic" 51 + ); 52 52 } 53 53 54 54 export function validateSongViewBasic(v: unknown): ValidationResult { 55 - return lexicons.validate('app.rocksky.song.defs#songViewBasic', v) 55 + return lexicons.validate("app.rocksky.song.defs#songViewBasic", v); 56 56 } 57 57 58 58 export interface SongViewDetailed { 59 59 /** The unique identifier of the song. */ 60 - id?: string 60 + id?: string; 61 61 /** The title of the song. */ 62 - title?: string 62 + title?: string; 63 63 /** The artist of the song. */ 64 - artist?: string 64 + artist?: string; 65 65 /** The artist of the album the song belongs to. */ 66 - albumArtist?: string 66 + albumArtist?: string; 67 67 /** The URL of the album art image. */ 68 - albumArt?: string 68 + albumArt?: string; 69 69 /** The URI of the song. */ 70 - uri?: string 70 + uri?: string; 71 71 /** The album of the song. */ 72 - album?: string 72 + album?: string; 73 73 /** The duration of the song in milliseconds. */ 74 - duration?: number 74 + duration?: number; 75 75 /** The track number of the song in the album. */ 76 - trackNumber?: number 76 + trackNumber?: number; 77 77 /** The disc number of the song in the album. */ 78 - discNumber?: number 78 + discNumber?: number; 79 79 /** The number of times the song has been played. */ 80 - playCount?: number 80 + playCount?: number; 81 81 /** The number of unique listeners who have played the song. */ 82 - uniqueListeners?: number 82 + uniqueListeners?: number; 83 83 /** The URI of the album the song belongs to. */ 84 - albumUri?: string 84 + albumUri?: string; 85 85 /** The URI of the artist of the song. */ 86 - artistUri?: string 86 + artistUri?: string; 87 87 /** The SHA256 hash of the song. */ 88 - sha256?: string 89 - tags?: string[] 88 + sha256?: string; 89 + tags?: string[]; 90 90 /** The timestamp when the song was created. */ 91 - createdAt?: string 92 - [k: string]: unknown 91 + createdAt?: string; 92 + [k: string]: unknown; 93 93 } 94 94 95 95 export function isSongViewDetailed(v: unknown): v is SongViewDetailed { 96 96 return ( 97 97 isObj(v) && 98 - hasProp(v, '$type') && 99 - v.$type === 'app.rocksky.song.defs#songViewDetailed' 100 - ) 98 + hasProp(v, "$type") && 99 + v.$type === "app.rocksky.song.defs#songViewDetailed" 100 + ); 101 101 } 102 102 103 103 export function validateSongViewDetailed(v: unknown): ValidationResult { 104 - return lexicons.validate('app.rocksky.song.defs#songViewDetailed', v) 104 + return lexicons.validate("app.rocksky.song.defs#songViewDetailed", v); 105 105 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/song/getSong.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The unique identifier of the song to retrieve */ 14 - uri: string 14 + uri: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskySongDefs.SongViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskySongDefs.SongViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+28 -28
apps/api/src/lexicon/types/app/rocksky/song/getSongs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The maximum number of songs to return */ 14 - limit?: number 14 + limit?: number; 15 15 /** The offset for pagination */ 16 - offset?: number 16 + offset?: number; 17 17 /** The genre to filter artists by */ 18 - genre?: string 18 + genre?: string; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - songs?: AppRockskySongDefs.SongViewBasic[] 25 - [k: string]: unknown 24 + songs?: AppRockskySongDefs.SongViewBasic[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/app/rocksky/song/matchSong.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskySongDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskySongDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The title of the song to retrieve */ 14 - title: string 14 + title: string; 15 15 /** The artist of the song to retrieve */ 16 - artist: string 16 + artist: string; 17 17 } 18 18 19 - export type InputSchema = undefined 20 - export type OutputSchema = AppRockskySongDefs.SongViewDetailed 21 - export type HandlerInput = undefined 19 + export type InputSchema = undefined; 20 + export type OutputSchema = AppRockskySongDefs.SongViewDetailed; 21 + export type HandlerInput = undefined; 22 22 23 23 export interface HandlerSuccess { 24 - encoding: 'application/json' 25 - body: OutputSchema 26 - headers?: { [key: string]: string } 24 + encoding: "application/json"; 25 + body: OutputSchema; 26 + headers?: { [key: string]: string }; 27 27 } 28 28 29 29 export interface HandlerError { 30 - status: number 31 - message?: string 30 + status: number; 31 + message?: string; 32 32 } 33 33 34 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 34 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 35 35 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 36 - auth: HA 37 - params: QueryParams 38 - input: HandlerInput 39 - req: express.Request 40 - res: express.Response 41 - resetRouteRateLimits: () => Promise<void> 42 - } 36 + auth: HA; 37 + params: QueryParams; 38 + input: HandlerInput; 39 + req: express.Request; 40 + res: express.Response; 41 + resetRouteRateLimits: () => Promise<void>; 42 + }; 43 43 export type Handler<HA extends HandlerAuth = never> = ( 44 44 ctx: HandlerReqCtx<HA>, 45 - ) => Promise<HandlerOutput> | HandlerOutput 45 + ) => Promise<HandlerOutput> | HandlerOutput;
+15 -15
apps/api/src/lexicon/types/app/rocksky/spotify/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface SpotifyTrackView { 10 10 /** The unique identifier of the Spotify track. */ 11 - id?: string 11 + id?: string; 12 12 /** The name of the track. */ 13 - name?: string 13 + name?: string; 14 14 /** The name of the artist. */ 15 - artist?: string 15 + artist?: string; 16 16 /** The name of the album. */ 17 - album?: string 17 + album?: string; 18 18 /** The duration of the track in milliseconds. */ 19 - duration?: number 19 + duration?: number; 20 20 /** A URL to a preview of the track. */ 21 - previewUrl?: string 22 - [k: string]: unknown 21 + previewUrl?: string; 22 + [k: string]: unknown; 23 23 } 24 24 25 25 export function isSpotifyTrackView(v: unknown): v is SpotifyTrackView { 26 26 return ( 27 27 isObj(v) && 28 - hasProp(v, '$type') && 29 - v.$type === 'app.rocksky.spotify.defs#spotifyTrackView' 30 - ) 28 + hasProp(v, "$type") && 29 + v.$type === "app.rocksky.spotify.defs#spotifyTrackView" 30 + ); 31 31 } 32 32 33 33 export function validateSpotifyTrackView(v: unknown): ValidationResult { 34 - return lexicons.validate('app.rocksky.spotify.defs#spotifyTrackView', v) 34 + return lexicons.validate("app.rocksky.spotify.defs#spotifyTrackView", v); 35 35 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/spotify/getCurrentlyPlaying.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyPlayerDefs from '../player/defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyPlayerDefs from "../player/defs"; 11 11 12 12 export interface QueryParams { 13 13 /** Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user. */ 14 - actor?: string 14 + actor?: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyPlayerDefs.CurrentlyPlayingViewDetailed 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyPlayerDefs.CurrentlyPlayingViewDetailed; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/spotify/next.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 - export type QueryParams = {} 11 + export type QueryParams = {}; 12 12 13 - export type InputSchema = undefined 14 - export type HandlerInput = undefined 13 + export type InputSchema = undefined; 14 + export type HandlerInput = undefined; 15 15 16 16 export interface HandlerError { 17 - status: number 18 - message?: string 17 + status: number; 18 + message?: string; 19 19 } 20 20 21 - export type HandlerOutput = HandlerError | void 21 + export type HandlerOutput = HandlerError | void; 22 22 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 23 - auth: HA 24 - params: QueryParams 25 - input: HandlerInput 26 - req: express.Request 27 - res: express.Response 28 - resetRouteRateLimits: () => Promise<void> 29 - } 23 + auth: HA; 24 + params: QueryParams; 25 + input: HandlerInput; 26 + req: express.Request; 27 + res: express.Response; 28 + resetRouteRateLimits: () => Promise<void>; 29 + }; 30 30 export type Handler<HA extends HandlerAuth = never> = ( 31 31 ctx: HandlerReqCtx<HA>, 32 - ) => Promise<HandlerOutput> | HandlerOutput 32 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/spotify/pause.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 - export type QueryParams = {} 11 + export type QueryParams = {}; 12 12 13 - export type InputSchema = undefined 14 - export type HandlerInput = undefined 13 + export type InputSchema = undefined; 14 + export type HandlerInput = undefined; 15 15 16 16 export interface HandlerError { 17 - status: number 18 - message?: string 17 + status: number; 18 + message?: string; 19 19 } 20 20 21 - export type HandlerOutput = HandlerError | void 21 + export type HandlerOutput = HandlerError | void; 22 22 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 23 - auth: HA 24 - params: QueryParams 25 - input: HandlerInput 26 - req: express.Request 27 - res: express.Response 28 - resetRouteRateLimits: () => Promise<void> 29 - } 23 + auth: HA; 24 + params: QueryParams; 25 + input: HandlerInput; 26 + req: express.Request; 27 + res: express.Response; 28 + resetRouteRateLimits: () => Promise<void>; 29 + }; 30 30 export type Handler<HA extends HandlerAuth = never> = ( 31 31 ctx: HandlerReqCtx<HA>, 32 - ) => Promise<HandlerOutput> | HandlerOutput 32 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/spotify/play.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 - export type QueryParams = {} 11 + export type QueryParams = {}; 12 12 13 - export type InputSchema = undefined 14 - export type HandlerInput = undefined 13 + export type InputSchema = undefined; 14 + export type HandlerInput = undefined; 15 15 16 16 export interface HandlerError { 17 - status: number 18 - message?: string 17 + status: number; 18 + message?: string; 19 19 } 20 20 21 - export type HandlerOutput = HandlerError | void 21 + export type HandlerOutput = HandlerError | void; 22 22 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 23 - auth: HA 24 - params: QueryParams 25 - input: HandlerInput 26 - req: express.Request 27 - res: express.Response 28 - resetRouteRateLimits: () => Promise<void> 29 - } 23 + auth: HA; 24 + params: QueryParams; 25 + input: HandlerInput; 26 + req: express.Request; 27 + res: express.Response; 28 + resetRouteRateLimits: () => Promise<void>; 29 + }; 30 30 export type Handler<HA extends HandlerAuth = never> = ( 31 31 ctx: HandlerReqCtx<HA>, 32 - ) => Promise<HandlerOutput> | HandlerOutput 32 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/spotify/previous.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 - export type QueryParams = {} 11 + export type QueryParams = {}; 12 12 13 - export type InputSchema = undefined 14 - export type HandlerInput = undefined 13 + export type InputSchema = undefined; 14 + export type HandlerInput = undefined; 15 15 16 16 export interface HandlerError { 17 - status: number 18 - message?: string 17 + status: number; 18 + message?: string; 19 19 } 20 20 21 - export type HandlerOutput = HandlerError | void 21 + export type HandlerOutput = HandlerError | void; 22 22 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 23 - auth: HA 24 - params: QueryParams 25 - input: HandlerInput 26 - req: express.Request 27 - res: express.Response 28 - resetRouteRateLimits: () => Promise<void> 29 - } 23 + auth: HA; 24 + params: QueryParams; 25 + input: HandlerInput; 26 + req: express.Request; 27 + res: express.Response; 28 + resetRouteRateLimits: () => Promise<void>; 29 + }; 30 30 export type Handler<HA extends HandlerAuth = never> = ( 31 31 ctx: HandlerReqCtx<HA>, 32 - ) => Promise<HandlerOutput> | HandlerOutput 32 + ) => Promise<HandlerOutput> | HandlerOutput;
+20 -20
apps/api/src/lexicon/types/app/rocksky/spotify/seek.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 { type HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 4 + import type 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 { type HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 10 11 11 export interface QueryParams { 12 12 /** The position in seconds to seek to */ 13 - position: number 13 + position: number; 14 14 } 15 15 16 - export type InputSchema = undefined 17 - export type HandlerInput = undefined 16 + export type InputSchema = undefined; 17 + export type HandlerInput = undefined; 18 18 19 19 export interface HandlerError { 20 - status: number 21 - message?: string 20 + status: number; 21 + message?: string; 22 22 } 23 23 24 - export type HandlerOutput = HandlerError | void 24 + export type HandlerOutput = HandlerError | void; 25 25 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 26 - auth: HA 27 - params: QueryParams 28 - input: HandlerInput 29 - req: express.Request 30 - res: express.Response 31 - resetRouteRateLimits: () => Promise<void> 32 - } 26 + auth: HA; 27 + params: QueryParams; 28 + input: HandlerInput; 29 + req: express.Request; 30 + res: express.Response; 31 + resetRouteRateLimits: () => Promise<void>; 32 + }; 33 33 export type Handler<HA extends HandlerAuth = never> = ( 34 34 ctx: HandlerReqCtx<HA>, 35 - ) => Promise<HandlerOutput> | HandlerOutput 35 + ) => Promise<HandlerOutput> | HandlerOutput;
+14 -14
apps/api/src/lexicon/types/app/rocksky/stats/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface StatsView { 10 10 /** The total number of scrobbles. */ 11 - scrobbles?: number 11 + scrobbles?: number; 12 12 /** The total number of unique artists scrobbled. */ 13 - artists?: number 13 + artists?: number; 14 14 /** The total number of tracks marked as loved. */ 15 - lovedTracks?: number 15 + lovedTracks?: number; 16 16 /** The total number of unique albums scrobbled. */ 17 - albums?: number 17 + albums?: number; 18 18 /** The total number of unique tracks scrobbled. */ 19 - tracks?: number 20 - [k: string]: unknown 19 + tracks?: number; 20 + [k: string]: unknown; 21 21 } 22 22 23 23 export function isStatsView(v: unknown): v is StatsView { 24 24 return ( 25 25 isObj(v) && 26 - hasProp(v, '$type') && 27 - v.$type === 'app.rocksky.stats.defs#statsView' 28 - ) 26 + hasProp(v, "$type") && 27 + v.$type === "app.rocksky.stats.defs#statsView" 28 + ); 29 29 } 30 30 31 31 export function validateStatsView(v: unknown): ValidationResult { 32 - return lexicons.validate('app.rocksky.stats.defs#statsView', v) 32 + return lexicons.validate("app.rocksky.stats.defs#statsView", v); 33 33 }
+25 -25
apps/api/src/lexicon/types/app/rocksky/stats/getStats.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as AppRockskyStatsDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as AppRockskyStatsDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The DID or handle of the user to get stats for. */ 14 - did: string 14 + did: string; 15 15 } 16 16 17 - export type InputSchema = undefined 18 - export type OutputSchema = AppRockskyStatsDefs.StatsView 19 - export type HandlerInput = undefined 17 + export type InputSchema = undefined; 18 + export type OutputSchema = AppRockskyStatsDefs.StatsView; 19 + export type HandlerInput = undefined; 20 20 21 21 export interface HandlerSuccess { 22 - encoding: 'application/json' 23 - body: OutputSchema 24 - headers?: { [key: string]: string } 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 25 } 26 26 27 27 export interface HandlerError { 28 - status: number 29 - message?: string 28 + status: number; 29 + message?: string; 30 30 } 31 31 32 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 32 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 33 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 - } 34 + auth: HA; 35 + params: QueryParams; 36 + input: HandlerInput; 37 + req: express.Request; 38 + res: express.Response; 39 + resetRouteRateLimits: () => Promise<void>; 40 + }; 41 41 export type Handler<HA extends HandlerAuth = never> = ( 42 42 ctx: HandlerReqCtx<HA>, 43 - ) => Promise<HandlerOutput> | HandlerOutput 43 + ) => Promise<HandlerOutput> | HandlerOutput;
+12 -12
apps/api/src/lexicon/types/com/atproto/repo/strongRef.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface Main { 10 - uri: string 11 - cid: string 12 - [k: string]: unknown 10 + uri: string; 11 + cid: string; 12 + [k: string]: unknown; 13 13 } 14 14 15 15 export function isMain(v: unknown): v is Main { 16 16 return ( 17 17 isObj(v) && 18 - hasProp(v, '$type') && 19 - (v.$type === 'com.atproto.repo.strongRef#main' || 20 - v.$type === 'com.atproto.repo.strongRef') 21 - ) 18 + hasProp(v, "$type") && 19 + (v.$type === "com.atproto.repo.strongRef#main" || 20 + v.$type === "com.atproto.repo.strongRef") 21 + ); 22 22 } 23 23 24 24 export function validateMain(v: unknown): ValidationResult { 25 - return lexicons.validate('com.atproto.repo.strongRef#main', v) 25 + return lexicons.validate("com.atproto.repo.strongRef#main", v); 26 26 }
+28 -28
apps/api/src/lexicon/types/fm/teal/alpha/actor/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppBskyRichtextFacet from '../../../../app/bsky/richtext/facet' 9 - import type * as FmTealAlphaActorProfile from './profile' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppBskyRichtextFacet from "../../../../app/bsky/richtext/facet"; 9 + import type * as FmTealAlphaActorProfile from "./profile"; 10 10 11 11 export interface ProfileView { 12 12 /** The decentralized identifier of the actor */ 13 - did?: string 14 - displayName?: string 13 + did?: string; 14 + displayName?: string; 15 15 /** Free-form profile description text. */ 16 - description?: string 16 + description?: string; 17 17 /** Annotations of text in the profile description (mentions, URLs, hashtags, etc). May be changed to another (backwards compatible) lexicon. */ 18 - descriptionFacets?: AppBskyRichtextFacet.Main[] 19 - featuredItem?: FmTealAlphaActorProfile.FeaturedItem 18 + descriptionFacets?: AppBskyRichtextFacet.Main[]; 19 + featuredItem?: FmTealAlphaActorProfile.FeaturedItem; 20 20 /** IPLD of the avatar */ 21 - avatar?: string 21 + avatar?: string; 22 22 /** IPLD of the banner image */ 23 - banner?: string 24 - createdAt?: string 25 - [k: string]: unknown 23 + banner?: string; 24 + createdAt?: string; 25 + [k: string]: unknown; 26 26 } 27 27 28 28 export function isProfileView(v: unknown): v is ProfileView { 29 29 return ( 30 30 isObj(v) && 31 - hasProp(v, '$type') && 32 - v.$type === 'fm.teal.alpha.actor.defs#profileView' 33 - ) 31 + hasProp(v, "$type") && 32 + v.$type === "fm.teal.alpha.actor.defs#profileView" 33 + ); 34 34 } 35 35 36 36 export function validateProfileView(v: unknown): ValidationResult { 37 - return lexicons.validate('fm.teal.alpha.actor.defs#profileView', v) 37 + return lexicons.validate("fm.teal.alpha.actor.defs#profileView", v); 38 38 } 39 39 40 40 export interface MiniProfileView { 41 41 /** The decentralized identifier of the actor */ 42 - did?: string 43 - displayName?: string 44 - handle?: string 42 + did?: string; 43 + displayName?: string; 44 + handle?: string; 45 45 /** IPLD of the avatar */ 46 - avatar?: string 47 - [k: string]: unknown 46 + avatar?: string; 47 + [k: string]: unknown; 48 48 } 49 49 50 50 export function isMiniProfileView(v: unknown): v is MiniProfileView { 51 51 return ( 52 52 isObj(v) && 53 - hasProp(v, '$type') && 54 - v.$type === 'fm.teal.alpha.actor.defs#miniProfileView' 55 - ) 53 + hasProp(v, "$type") && 54 + v.$type === "fm.teal.alpha.actor.defs#miniProfileView" 55 + ); 56 56 } 57 57 58 58 export function validateMiniProfileView(v: unknown): ValidationResult { 59 - return lexicons.validate('fm.teal.alpha.actor.defs#miniProfileView', v) 59 + return lexicons.validate("fm.teal.alpha.actor.defs#miniProfileView", v); 60 60 }
+26 -26
apps/api/src/lexicon/types/fm/teal/alpha/actor/getProfile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as FmTealAlphaActorDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as FmTealAlphaActorDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The author's DID */ 14 - actor: string 14 + actor: string; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - actor: FmTealAlphaActorDefs.ProfileView 21 - [k: string]: unknown 20 + actor: FmTealAlphaActorDefs.ProfileView; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+26 -26
apps/api/src/lexicon/types/fm/teal/alpha/actor/getProfiles.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as FmTealAlphaActorDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as FmTealAlphaActorDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** Array of actor DIDs */ 14 - actors: string[] 14 + actors: string[]; 15 15 } 16 16 17 - export type InputSchema = undefined 17 + export type InputSchema = undefined; 18 18 19 19 export interface OutputSchema { 20 - actors: FmTealAlphaActorDefs.MiniProfileView[] 21 - [k: string]: unknown 20 + actors: FmTealAlphaActorDefs.MiniProfileView[]; 21 + [k: string]: unknown; 22 22 } 23 23 24 - export type HandlerInput = undefined 24 + export type HandlerInput = undefined; 25 25 26 26 export interface HandlerSuccess { 27 - encoding: 'application/json' 28 - body: OutputSchema 29 - headers?: { [key: string]: string } 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 30 } 31 31 32 32 export interface HandlerError { 33 - status: number 34 - message?: string 33 + status: number; 34 + message?: string; 35 35 } 36 36 37 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 37 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 38 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 - } 39 + auth: HA; 40 + params: QueryParams; 41 + input: HandlerInput; 42 + req: express.Request; 43 + res: express.Response; 44 + resetRouteRateLimits: () => Promise<void>; 45 + }; 46 46 export type Handler<HA extends HandlerAuth = never> = ( 47 47 ctx: HandlerReqCtx<HA>, 48 - ) => Promise<HandlerOutput> | HandlerOutput 48 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/fm/teal/alpha/actor/profile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type { ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as AppBskyRichtextFacet from '../../../../app/bsky/richtext/facet' 4 + import type { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as AppBskyRichtextFacet from "../../../../app/bsky/richtext/facet"; 9 9 10 10 export interface Record { 11 - displayName?: string 11 + displayName?: string; 12 12 /** Free-form profile description text. */ 13 - description?: string 13 + description?: string; 14 14 /** Annotations of text in the profile description (mentions, URLs, hashtags, etc). */ 15 - descriptionFacets?: AppBskyRichtextFacet.Main[] 16 - featuredItem?: FeaturedItem 15 + descriptionFacets?: AppBskyRichtextFacet.Main[]; 16 + featuredItem?: FeaturedItem; 17 17 /** Small image to be displayed next to posts from account. AKA, 'profile picture' */ 18 - avatar?: BlobRef 18 + avatar?: BlobRef; 19 19 /** Larger horizontal image to display behind profile view. */ 20 - banner?: BlobRef 21 - createdAt?: string 22 - [k: string]: unknown 20 + banner?: BlobRef; 21 + createdAt?: string; 22 + [k: string]: unknown; 23 23 } 24 24 25 25 export function isRecord(v: unknown): v is Record { 26 26 return ( 27 27 isObj(v) && 28 - hasProp(v, '$type') && 29 - (v.$type === 'fm.teal.alpha.actor.profile#main' || 30 - v.$type === 'fm.teal.alpha.actor.profile') 31 - ) 28 + hasProp(v, "$type") && 29 + (v.$type === "fm.teal.alpha.actor.profile#main" || 30 + v.$type === "fm.teal.alpha.actor.profile") 31 + ); 32 32 } 33 33 34 34 export function validateRecord(v: unknown): ValidationResult { 35 - return lexicons.validate('fm.teal.alpha.actor.profile#main', v) 35 + return lexicons.validate("fm.teal.alpha.actor.profile#main", v); 36 36 } 37 37 38 38 export interface FeaturedItem { 39 39 /** The Musicbrainz ID of the item */ 40 - mbid: string 40 + mbid: string; 41 41 /** The type of the item. Must be a valid Musicbrainz type, e.g. album, track, recording, etc. */ 42 - type: string 43 - [k: string]: unknown 42 + type: string; 43 + [k: string]: unknown; 44 44 } 45 45 46 46 export function isFeaturedItem(v: unknown): v is FeaturedItem { 47 47 return ( 48 48 isObj(v) && 49 - hasProp(v, '$type') && 50 - v.$type === 'fm.teal.alpha.actor.profile#featuredItem' 51 - ) 49 + hasProp(v, "$type") && 50 + v.$type === "fm.teal.alpha.actor.profile#featuredItem" 51 + ); 52 52 } 53 53 54 54 export function validateFeaturedItem(v: unknown): ValidationResult { 55 - return lexicons.validate('fm.teal.alpha.actor.profile#featuredItem', v) 55 + return lexicons.validate("fm.teal.alpha.actor.profile#featuredItem", v); 56 56 }
+29 -29
apps/api/src/lexicon/types/fm/teal/alpha/actor/searchActors.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as FmTealAlphaActorDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as FmTealAlphaActorDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The search query */ 14 - q: string 14 + q: string; 15 15 /** The maximum number of actors to return */ 16 - limit?: number 16 + limit?: number; 17 17 /** Cursor for pagination */ 18 - cursor?: string 18 + cursor?: string; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - actors: FmTealAlphaActorDefs.MiniProfileView[] 24 + actors: FmTealAlphaActorDefs.MiniProfileView[]; 25 25 /** Cursor for pagination */ 26 - cursor?: string 27 - [k: string]: unknown 26 + cursor?: string; 27 + [k: string]: unknown; 28 28 } 29 29 30 - export type HandlerInput = undefined 30 + export type HandlerInput = undefined; 31 31 32 32 export interface HandlerSuccess { 33 - encoding: 'application/json' 34 - body: OutputSchema 35 - headers?: { [key: string]: string } 33 + encoding: "application/json"; 34 + body: OutputSchema; 35 + headers?: { [key: string]: string }; 36 36 } 37 37 38 38 export interface HandlerError { 39 - status: number 40 - message?: string 39 + status: number; 40 + message?: string; 41 41 } 42 42 43 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 43 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 44 44 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 45 - auth: HA 46 - params: QueryParams 47 - input: HandlerInput 48 - req: express.Request 49 - res: express.Response 50 - resetRouteRateLimits: () => Promise<void> 51 - } 45 + auth: HA; 46 + params: QueryParams; 47 + input: HandlerInput; 48 + req: express.Request; 49 + res: express.Response; 50 + resetRouteRateLimits: () => Promise<void>; 51 + }; 52 52 export type Handler<HA extends HandlerAuth = never> = ( 53 53 ctx: HandlerReqCtx<HA>, 54 - ) => Promise<HandlerOutput> | HandlerOutput 54 + ) => Promise<HandlerOutput> | HandlerOutput;
+14 -14
apps/api/src/lexicon/types/fm/teal/alpha/actor/status.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as FmTealAlphaFeedDefs from '../feed/defs' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as FmTealAlphaFeedDefs from "../feed/defs"; 9 9 10 10 export interface Record { 11 11 /** The unix timestamp of when the item was recorded */ 12 - time: string 12 + time: string; 13 13 /** The unix timestamp of the expiry time of the item. If unavailable, default to 10 minutes past the start time. */ 14 - expiry?: string 15 - item: FmTealAlphaFeedDefs.PlayView 16 - [k: string]: unknown 14 + expiry?: string; 15 + item: FmTealAlphaFeedDefs.PlayView; 16 + [k: string]: unknown; 17 17 } 18 18 19 19 export function isRecord(v: unknown): v is Record { 20 20 return ( 21 21 isObj(v) && 22 - hasProp(v, '$type') && 23 - (v.$type === 'fm.teal.alpha.actor.status#main' || 24 - v.$type === 'fm.teal.alpha.actor.status') 25 - ) 22 + hasProp(v, "$type") && 23 + (v.$type === "fm.teal.alpha.actor.status#main" || 24 + v.$type === "fm.teal.alpha.actor.status") 25 + ); 26 26 } 27 27 28 28 export function validateRecord(v: unknown): ValidationResult { 29 - return lexicons.validate('fm.teal.alpha.actor.status#main', v) 29 + return lexicons.validate("fm.teal.alpha.actor.status#main", v); 30 30 }
+28 -28
apps/api/src/lexicon/types/fm/teal/alpha/feed/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../../util' 7 - import { CID } from 'multiformats/cid' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 8 9 9 export interface PlayView { 10 10 /** The name of the track */ 11 - trackName: string 11 + trackName: string; 12 12 /** The Musicbrainz ID of the track */ 13 - trackMbId?: string 13 + trackMbId?: string; 14 14 /** The Musicbrainz recording ID of the track */ 15 - recordingMbId?: string 15 + recordingMbId?: string; 16 16 /** The length of the track in seconds */ 17 - duration?: number 17 + duration?: number; 18 18 /** Array of artists in order of original appearance. */ 19 - artists: Artist[] 19 + artists: Artist[]; 20 20 /** The name of the release/album */ 21 - releaseName?: string 21 + releaseName?: string; 22 22 /** The Musicbrainz release ID */ 23 - releaseMbId?: string 23 + releaseMbId?: string; 24 24 /** The ISRC code associated with the recording */ 25 - isrc?: string 25 + isrc?: string; 26 26 /** The URL associated with this track */ 27 - originUrl?: string 27 + originUrl?: string; 28 28 /** The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided. */ 29 - musicServiceBaseDomain?: string 29 + musicServiceBaseDomain?: string; 30 30 /** A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided. */ 31 - submissionClientAgent?: string 31 + submissionClientAgent?: string; 32 32 /** The unix timestamp of when the track was played */ 33 - playedTime?: string 34 - [k: string]: unknown 33 + playedTime?: string; 34 + [k: string]: unknown; 35 35 } 36 36 37 37 export function isPlayView(v: unknown): v is PlayView { 38 38 return ( 39 39 isObj(v) && 40 - hasProp(v, '$type') && 41 - v.$type === 'fm.teal.alpha.feed.defs#playView' 42 - ) 40 + hasProp(v, "$type") && 41 + v.$type === "fm.teal.alpha.feed.defs#playView" 42 + ); 43 43 } 44 44 45 45 export function validatePlayView(v: unknown): ValidationResult { 46 - return lexicons.validate('fm.teal.alpha.feed.defs#playView', v) 46 + return lexicons.validate("fm.teal.alpha.feed.defs#playView", v); 47 47 } 48 48 49 49 export interface Artist { 50 50 /** The name of the artist */ 51 - artistName: string 51 + artistName: string; 52 52 /** The Musicbrainz ID of the artist */ 53 - artistMbId?: string 54 - [k: string]: unknown 53 + artistMbId?: string; 54 + [k: string]: unknown; 55 55 } 56 56 57 57 export function isArtist(v: unknown): v is Artist { 58 58 return ( 59 59 isObj(v) && 60 - hasProp(v, '$type') && 61 - v.$type === 'fm.teal.alpha.feed.defs#artist' 62 - ) 60 + hasProp(v, "$type") && 61 + v.$type === "fm.teal.alpha.feed.defs#artist" 62 + ); 63 63 } 64 64 65 65 export function validateArtist(v: unknown): ValidationResult { 66 - return lexicons.validate('fm.teal.alpha.feed.defs#artist', v) 66 + return lexicons.validate("fm.teal.alpha.feed.defs#artist", v); 67 67 }
+28 -28
apps/api/src/lexicon/types/fm/teal/alpha/feed/getActorFeed.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as FmTealAlphaFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as FmTealAlphaFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The author's DID for the play */ 14 - authorDID: string 14 + authorDID: string; 15 15 /** The cursor to start the query from */ 16 - cursor?: string 16 + cursor?: string; 17 17 /** The upper limit of tracks to get per request. Default is 20, max is 50. */ 18 - limit?: number 18 + limit?: number; 19 19 } 20 20 21 - export type InputSchema = undefined 21 + export type InputSchema = undefined; 22 22 23 23 export interface OutputSchema { 24 - plays: FmTealAlphaFeedDefs.PlayView[] 25 - [k: string]: unknown 24 + plays: FmTealAlphaFeedDefs.PlayView[]; 25 + [k: string]: unknown; 26 26 } 27 27 28 - export type HandlerInput = undefined 28 + export type HandlerInput = undefined; 29 29 30 30 export interface HandlerSuccess { 31 - encoding: 'application/json' 32 - body: OutputSchema 33 - headers?: { [key: string]: string } 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 34 } 35 35 36 36 export interface HandlerError { 37 - status: number 38 - message?: string 37 + status: number; 38 + message?: string; 39 39 } 40 40 41 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 41 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 42 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 - } 43 + auth: HA; 44 + params: QueryParams; 45 + input: HandlerInput; 46 + req: express.Request; 47 + res: express.Response; 48 + resetRouteRateLimits: () => Promise<void>; 49 + }; 50 50 export type Handler<HA extends HandlerAuth = never> = ( 51 51 ctx: HandlerReqCtx<HA>, 52 - ) => Promise<HandlerOutput> | HandlerOutput 52 + ) => Promise<HandlerOutput> | HandlerOutput;
+27 -27
apps/api/src/lexicon/types/fm/teal/alpha/feed/getPlay.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import type 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 type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server' 10 - import type * as FmTealAlphaFeedDefs from './defs' 4 + import type 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 type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server"; 10 + import type * as FmTealAlphaFeedDefs from "./defs"; 11 11 12 12 export interface QueryParams { 13 13 /** The author's DID for the play */ 14 - authorDID: string 14 + authorDID: string; 15 15 /** The record key of the play */ 16 - rkey: string 16 + rkey: string; 17 17 } 18 18 19 - export type InputSchema = undefined 19 + export type InputSchema = undefined; 20 20 21 21 export interface OutputSchema { 22 - play: FmTealAlphaFeedDefs.PlayView 23 - [k: string]: unknown 22 + play: FmTealAlphaFeedDefs.PlayView; 23 + [k: string]: unknown; 24 24 } 25 25 26 - export type HandlerInput = undefined 26 + export type HandlerInput = undefined; 27 27 28 28 export interface HandlerSuccess { 29 - encoding: 'application/json' 30 - body: OutputSchema 31 - headers?: { [key: string]: string } 29 + encoding: "application/json"; 30 + body: OutputSchema; 31 + headers?: { [key: string]: string }; 32 32 } 33 33 34 34 export interface HandlerError { 35 - status: number 36 - message?: string 35 + status: number; 36 + message?: string; 37 37 } 38 38 39 - export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough 39 + export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough; 40 40 export type HandlerReqCtx<HA extends HandlerAuth = never> = { 41 - auth: HA 42 - params: QueryParams 43 - input: HandlerInput 44 - req: express.Request 45 - res: express.Response 46 - resetRouteRateLimits: () => Promise<void> 47 - } 41 + auth: HA; 42 + params: QueryParams; 43 + input: HandlerInput; 44 + req: express.Request; 45 + res: express.Response; 46 + resetRouteRateLimits: () => Promise<void>; 47 + }; 48 48 export type Handler<HA extends HandlerAuth = never> = ( 49 49 ctx: HandlerReqCtx<HA>, 50 - ) => Promise<HandlerOutput> | HandlerOutput 50 + ) => Promise<HandlerOutput> | HandlerOutput;
+25 -25
apps/api/src/lexicon/types/fm/teal/alpha/feed/play.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 - import { lexicons } from '../../../../../lexicons' 6 - import { isObj, hasProp } from '../../../../../util' 7 - import { CID } from 'multiformats/cid' 8 - import type * as FmTealAlphaFeedDefs from './defs' 4 + import { type ValidationResult, BlobRef } from "@atproto/lexicon"; 5 + import { lexicons } from "../../../../../lexicons"; 6 + import { isObj, hasProp } from "../../../../../util"; 7 + import { CID } from "multiformats/cid"; 8 + import type * as FmTealAlphaFeedDefs from "./defs"; 9 9 10 10 export interface Record { 11 11 /** The name of the track */ 12 - trackName: string 12 + trackName: string; 13 13 /** The Musicbrainz ID of the track */ 14 - trackMbId?: string 14 + trackMbId?: string; 15 15 /** The Musicbrainz recording ID of the track */ 16 - recordingMbId?: string 16 + recordingMbId?: string; 17 17 /** The length of the track in seconds */ 18 - duration?: number 18 + duration?: number; 19 19 /** Array of artist names in order of original appearance. Prefer using 'artists'. */ 20 - artistNames?: string[] 20 + artistNames?: string[]; 21 21 /** Array of Musicbrainz artist IDs. Prefer using 'artists'. */ 22 - artistMbIds?: string[] 22 + artistMbIds?: string[]; 23 23 /** Array of artists in order of original appearance. */ 24 - artists?: FmTealAlphaFeedDefs.Artist[] 24 + artists?: FmTealAlphaFeedDefs.Artist[]; 25 25 /** The name of the release/album */ 26 - releaseName?: string 26 + releaseName?: string; 27 27 /** The Musicbrainz release ID */ 28 - releaseMbId?: string 28 + releaseMbId?: string; 29 29 /** The ISRC code associated with the recording */ 30 - isrc?: string 30 + isrc?: string; 31 31 /** The URL associated with this track */ 32 - originUrl?: string 32 + originUrl?: string; 33 33 /** The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if unavailable or not provided. */ 34 - musicServiceBaseDomain?: string 34 + musicServiceBaseDomain?: string; 35 35 /** A metadata string specifying the user agent where the format is `<app-identifier>/<version> (<kernel/OS-base>; <platform/OS-version>; <device-model>)`. If string is provided, only `app-identifier` and `version` are required. `app-identifier` is recommended to be in reverse dns format. Defaults to 'manual/unknown' if unavailable or not provided. */ 36 - submissionClientAgent?: string 36 + submissionClientAgent?: string; 37 37 /** The unix timestamp of when the track was played */ 38 - playedTime?: string 39 - [k: string]: unknown 38 + playedTime?: string; 39 + [k: string]: unknown; 40 40 } 41 41 42 42 export function isRecord(v: unknown): v is Record { 43 43 return ( 44 44 isObj(v) && 45 - hasProp(v, '$type') && 46 - (v.$type === 'fm.teal.alpha.feed.play#main' || 47 - v.$type === 'fm.teal.alpha.feed.play') 48 - ) 45 + hasProp(v, "$type") && 46 + (v.$type === "fm.teal.alpha.feed.play#main" || 47 + v.$type === "fm.teal.alpha.feed.play") 48 + ); 49 49 } 50 50 51 51 export function validateRecord(v: unknown): ValidationResult { 52 - return lexicons.validate('fm.teal.alpha.feed.play#main', v) 52 + return lexicons.validate("fm.teal.alpha.feed.play#main", v); 53 53 }
+2 -2
apps/api/src/lexicon/util.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 export function isObj(v: unknown): v is Record<string, unknown> { 5 - return typeof v === 'object' && v !== null 5 + return typeof v === "object" && v !== null; 6 6 } 7 7 8 8 export function hasProp<K extends PropertyKey>( 9 9 data: object, 10 10 prop: K, 11 11 ): data is Record<K, unknown> { 12 - return prop in data 12 + return prop in data; 13 13 }
+5
apps/api/src/xrpc/app/rocksky/charts/getScrobblesChart.ts
··· 86 86 track_id: songuri, 87 87 }), 88 88 ), 89 + Match.when({ genre: (genre) => !!genre }, ({ genre }) => 90 + ctx.analytics.post("library.getScrobblesPerDay", { 91 + genre, 92 + }), 93 + ), 89 94 Match.orElse(() => 90 95 ctx.analytics.post("library.getScrobblesPerDay", {}), 91 96 ),
+30 -3
crates/analytics/src/handlers/stats.rs
··· 122 122 .end 123 123 .unwrap_or(GetScrobblesPerDayParams::default().end.unwrap()); 124 124 let did = params.user_did; 125 + let genre = params.genre; 125 126 tracing::info!(start = %start, end = %end, user_did = ?did, "Get scrobbles per day"); 126 127 127 128 let conn = conn.lock().unwrap(); 128 - match did { 129 - Some(did) => { 129 + match (did, genre) { 130 + (Some(did), None) => { 130 131 let mut stmt = conn.prepare( 131 132 r#" 132 133 SELECT ··· 153 154 let scrobbles: Result<Vec<_>, _> = scrobbles.collect(); 154 155 Ok(HttpResponse::Ok().json(scrobbles?)) 155 156 } 156 - None => { 157 + (None, Some(genre)) => { 158 + let mut stmt = conn.prepare( 159 + r#" 160 + SELECT 161 + date_trunc('day', created_at) AS date, 162 + COUNT(DISTINCT s.created_at) AS count 163 + FROM 164 + scrobbles s 165 + LEFT JOIN users u ON s.user_id = u.id 166 + LEFT JOIN artists a ON s.artist_id = a.id 167 + WHERE list_contains(a.genres, ?) AND created_at BETWEEN ? AND ? 168 + GROUP BY 169 + date_trunc('day', created_at) 170 + ORDER BY 171 + date; 172 + "#, 173 + )?; 174 + let scrobbles = stmt.query_map([&genre, &start, &end], |row| { 175 + Ok(ScrobblesPerDay { 176 + date: row.get(0)?, 177 + count: row.get(1)?, 178 + }) 179 + })?; 180 + let scrobbles: Result<Vec<_>, _> = scrobbles.collect(); 181 + Ok(HttpResponse::Ok().json(scrobbles?)) 182 + } 183 + _ => { 157 184 let mut stmt = conn.prepare( 158 185 r#" 159 186 SELECT
+2
crates/analytics/src/types/stats.rs
··· 12 12 #[derive(Debug, Serialize, Deserialize)] 13 13 pub struct GetScrobblesPerDayParams { 14 14 pub user_did: Option<String>, 15 + pub genre: Option<String>, 15 16 pub start: Option<String>, 16 17 pub end: Option<String>, 17 18 } ··· 23 24 24 25 GetScrobblesPerDayParams { 25 26 user_did: None, 27 + genre: None, 26 28 start: Some(date_30_days_ago.to_string()), 27 29 end: Some(current_date.to_string()), 28 30 }