@groovenet/contracts 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ Shared runtime schemas and TypeScript types for Groovenet API resources. It is
4
4
  the source of truth for the wire enums, entities, and request/response payloads
5
5
  of live sets (`liveSets.ts`), playlists (`playlists.ts`), tracks (`tracks.ts`),
6
6
  albums (`albums.ts`), friends with the default-library setting (`friends.ts`)
7
- and physical-copy record care (`recordCare.ts`).
7
+ physical-copy record care (`recordCare.ts`) and genre taxonomy (`genres.ts`).
8
8
 
9
9
  [`INVENTORY.md`](INVENTORY.md) lists every published API operation with its
10
10
  family and migration status, and the order the remaining families follow.
@@ -23,7 +23,7 @@ family and migration status, and the order the remaining families follow.
23
23
  shape and enum values.
24
24
 
25
25
  Migrate one resource family at a time: live sets, playlists, tracks, albums,
26
- friends, record care and spins are done; `INVENTORY.md` orders the rest. Preserve permissive response fields where
26
+ friends, record care, spins and genre taxonomy are done; `INVENTORY.md` orders the rest. Preserve permissive response fields where
27
27
  the database returns additional wire fields; make request schemas strict only
28
28
  when the endpoint already rejects unknown fields.
29
29
 
@@ -0,0 +1,316 @@
1
+ import { z } from "zod";
2
+ export declare const genreSourceSchema: z.ZodEnum<{
3
+ custom: "custom";
4
+ discogs: "discogs";
5
+ }>;
6
+ /** Taxonomy counts are direct links; page counts include subgenres. */
7
+ export declare const genreTreeNodeSchema: z.ZodObject<{
8
+ id: z.ZodString;
9
+ name: z.ZodString;
10
+ slug: z.ZodString;
11
+ parent_id: z.ZodNullable<z.ZodString>;
12
+ source: z.ZodEnum<{
13
+ custom: "custom";
14
+ discogs: "discogs";
15
+ }>;
16
+ track_count: z.ZodNumber;
17
+ album_count: z.ZodNumber;
18
+ aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ children: z.ZodArray<typeof genreTreeNodeSchema>;
20
+ }, z.core.$strip>;
21
+ export declare const genreTreeResponseSchema: z.ZodObject<{
22
+ genres: z.ZodArray<z.ZodObject<{
23
+ id: z.ZodString;
24
+ name: z.ZodString;
25
+ slug: z.ZodString;
26
+ parent_id: z.ZodNullable<z.ZodString>;
27
+ source: z.ZodEnum<{
28
+ custom: "custom";
29
+ discogs: "discogs";
30
+ }>;
31
+ track_count: z.ZodNumber;
32
+ album_count: z.ZodNumber;
33
+ aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ children: z.ZodArray<typeof genreTreeNodeSchema>;
35
+ }, z.core.$strip>>;
36
+ }, z.core.$strip>;
37
+ /** A genre as the genre page links to it (#376), with its track count, subgenres included. */
38
+ export declare const genrePageRefSchema: z.ZodObject<{
39
+ id: z.ZodString;
40
+ name: z.ZodString;
41
+ slug: z.ZodString;
42
+ track_count: z.ZodNumber;
43
+ }, z.core.$strip>;
44
+ export type GenrePageRef = z.infer<typeof genrePageRefSchema>;
45
+ /** What produced a similar-genre score (#377): a taxonomy relation, co-occurrence, or both. */
46
+ export declare const genreSimilaritySignalsSchema: z.ZodObject<{
47
+ taxonomy: z.ZodOptional<z.ZodEnum<{
48
+ child: "child";
49
+ parent: "parent";
50
+ sibling: "sibling";
51
+ }>>;
52
+ npmi: z.ZodOptional<z.ZodNumber>;
53
+ shared_albums: z.ZodOptional<z.ZodNumber>;
54
+ }, z.core.$strip>;
55
+ export type GenreSimilaritySignals = z.infer<typeof genreSimilaritySignalsSchema>;
56
+ /** A related genre (#377): stored similarity when it exists, else the sibling stand-in it falls back to. */
57
+ export declare const genreRelatedRefSchema: z.ZodObject<{
58
+ id: z.ZodString;
59
+ name: z.ZodString;
60
+ slug: z.ZodString;
61
+ track_count: z.ZodNumber;
62
+ score: z.ZodOptional<z.ZodNumber>;
63
+ signals: z.ZodOptional<z.ZodObject<{
64
+ taxonomy: z.ZodOptional<z.ZodEnum<{
65
+ child: "child";
66
+ parent: "parent";
67
+ sibling: "sibling";
68
+ }>>;
69
+ npmi: z.ZodOptional<z.ZodNumber>;
70
+ shared_albums: z.ZodOptional<z.ZodNumber>;
71
+ }, z.core.$strip>>;
72
+ }, z.core.$strip>;
73
+ export type GenreRelatedRef = z.infer<typeof genreRelatedRefSchema>;
74
+ export declare const genrePageQuerySchema: z.ZodObject<{
75
+ friend_id: z.ZodOptional<z.ZodNumber>;
76
+ }, z.core.$strip>;
77
+ /** `GET /api/genres/{id}`: one genre's place in the taxonomy and in the collection (#376). */
78
+ export declare const genrePageResponseSchema: z.ZodObject<{
79
+ genre: z.ZodObject<{
80
+ id: z.ZodString;
81
+ name: z.ZodString;
82
+ slug: z.ZodString;
83
+ parent_id: z.ZodNullable<z.ZodString>;
84
+ source: z.ZodEnum<{
85
+ custom: "custom";
86
+ discogs: "discogs";
87
+ }>;
88
+ aliases: z.ZodArray<z.ZodString>;
89
+ }, z.core.$strip>;
90
+ ancestors: z.ZodArray<z.ZodObject<{
91
+ id: z.ZodString;
92
+ name: z.ZodString;
93
+ slug: z.ZodString;
94
+ }, z.core.$strip>>;
95
+ children: z.ZodArray<z.ZodObject<{
96
+ id: z.ZodString;
97
+ name: z.ZodString;
98
+ slug: z.ZodString;
99
+ track_count: z.ZodNumber;
100
+ }, z.core.$strip>>;
101
+ related: z.ZodArray<z.ZodObject<{
102
+ id: z.ZodString;
103
+ name: z.ZodString;
104
+ slug: z.ZodString;
105
+ track_count: z.ZodNumber;
106
+ score: z.ZodOptional<z.ZodNumber>;
107
+ signals: z.ZodOptional<z.ZodObject<{
108
+ taxonomy: z.ZodOptional<z.ZodEnum<{
109
+ child: "child";
110
+ parent: "parent";
111
+ sibling: "sibling";
112
+ }>>;
113
+ npmi: z.ZodOptional<z.ZodNumber>;
114
+ shared_albums: z.ZodOptional<z.ZodNumber>;
115
+ }, z.core.$strip>>;
116
+ }, z.core.$strip>>;
117
+ counts: z.ZodObject<{
118
+ tracks: z.ZodNumber;
119
+ albums: z.ZodNumber;
120
+ tracks_total: z.ZodNumber;
121
+ albums_total: z.ZodNumber;
122
+ }, z.core.$strip>;
123
+ stats: z.ZodObject<{
124
+ bpm_min: z.ZodNullable<z.ZodNumber>;
125
+ bpm_max: z.ZodNullable<z.ZodNumber>;
126
+ added_this_year: z.ZodNumber;
127
+ year: z.ZodNumber;
128
+ playable_tracks: z.ZodNumber;
129
+ bpm_histogram: z.ZodArray<z.ZodObject<{
130
+ min: z.ZodNumber;
131
+ max: z.ZodNumber;
132
+ count: z.ZodNumber;
133
+ }, z.core.$strip>>;
134
+ }, z.core.$strip>;
135
+ top_tracks: z.ZodArray<z.ZodObject<{
136
+ id: z.ZodOptional<z.ZodNumber>;
137
+ track_id: z.ZodString;
138
+ friend_id: z.ZodNumber;
139
+ isrc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
140
+ title: z.ZodString;
141
+ artist: z.ZodString;
142
+ album: z.ZodString;
143
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
144
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
145
+ genres: z.ZodOptional<z.ZodArray<z.ZodString>>;
146
+ album_genres: z.ZodOptional<z.ZodArray<z.ZodString>>;
147
+ album_styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
148
+ duration: z.ZodOptional<z.ZodString>;
149
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
150
+ position: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
151
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
153
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
154
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
155
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
156
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
157
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
158
+ track_genres: z.ZodOptional<z.ZodArray<z.ZodObject<{
159
+ id: z.ZodString;
160
+ name: z.ZodString;
161
+ slug: z.ZodString;
162
+ parent_id: z.ZodNullable<z.ZodString>;
163
+ parent_name: z.ZodNullable<z.ZodString>;
164
+ }, z.core.$strip>>>;
165
+ descriptors: z.ZodOptional<z.ZodArray<z.ZodString>>;
166
+ composer: z.ZodOptional<z.ZodNullable<z.ZodString>>;
167
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
168
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
169
+ key_confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
170
+ bpm_confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
171
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
172
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
173
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
174
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
175
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
176
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
177
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
178
+ audio_file_album_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
179
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
180
+ username: z.ZodOptional<z.ZodString>;
181
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
182
+ library_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
183
+ hasVectors: z.ZodOptional<z.ZodBoolean>;
184
+ deleted_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
185
+ play_count: z.ZodNumber;
186
+ }, z.core.$loose>>;
187
+ top_albums: z.ZodArray<z.ZodObject<{
188
+ genre_override_ids: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
189
+ style_override_ids: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
190
+ effective_genres: z.ZodOptional<z.ZodArray<z.ZodString>>;
191
+ effective_styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
192
+ release_id: z.ZodString;
193
+ friend_id: z.ZodNumber;
194
+ username: z.ZodOptional<z.ZodString>;
195
+ title: z.ZodString;
196
+ artist: z.ZodString;
197
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
198
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
199
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
200
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
201
+ audio_file_album_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
202
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
203
+ date_added: z.ZodOptional<z.ZodNullable<z.ZodString>>;
204
+ date_changed: z.ZodOptional<z.ZodNullable<z.ZodString>>;
205
+ track_count: z.ZodOptional<z.ZodNumber>;
206
+ album_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
207
+ album_notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
208
+ purchase_price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
209
+ condition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
210
+ label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
211
+ catalog_number: z.ZodOptional<z.ZodNullable<z.ZodString>>;
212
+ country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
213
+ format: z.ZodOptional<z.ZodNullable<z.ZodString>>;
214
+ created_at: z.ZodOptional<z.ZodString>;
215
+ updated_at: z.ZodOptional<z.ZodString>;
216
+ library_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
217
+ album_art_source: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
218
+ apple_music: "apple_music";
219
+ discogs: "discogs";
220
+ upload: "upload";
221
+ }>>>;
222
+ discogs_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
223
+ apple_music_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
224
+ art_match_status: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
225
+ matched: "matched";
226
+ mismatch: "mismatch";
227
+ no_candidate: "no_candidate";
228
+ no_reference: "no_reference";
229
+ }>>>;
230
+ art_match_distance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
231
+ play_count: z.ZodNumber;
232
+ }, z.core.$loose>>;
233
+ }, z.core.$strip>;
234
+ export type GenrePageResponse = z.infer<typeof genrePageResponseSchema>;
235
+ /** `GET /api/genres/{id}/similar` (#377): the same ranking `related` reads on the genre page, standalone. */
236
+ export declare const genreSimilarQuerySchema: z.ZodObject<{
237
+ limit: z.ZodOptional<z.ZodNumber>;
238
+ }, z.core.$strip>;
239
+ export declare const genreSimilarResponseSchema: z.ZodObject<{
240
+ genre: z.ZodObject<{
241
+ id: z.ZodString;
242
+ name: z.ZodString;
243
+ slug: z.ZodString;
244
+ track_count: z.ZodNumber;
245
+ }, z.core.$strip>;
246
+ related: z.ZodArray<z.ZodObject<{
247
+ id: z.ZodString;
248
+ name: z.ZodString;
249
+ slug: z.ZodString;
250
+ track_count: z.ZodNumber;
251
+ score: z.ZodOptional<z.ZodNumber>;
252
+ signals: z.ZodOptional<z.ZodObject<{
253
+ taxonomy: z.ZodOptional<z.ZodEnum<{
254
+ child: "child";
255
+ parent: "parent";
256
+ sibling: "sibling";
257
+ }>>;
258
+ npmi: z.ZodOptional<z.ZodNumber>;
259
+ shared_albums: z.ZodOptional<z.ZodNumber>;
260
+ }, z.core.$strip>>;
261
+ }, z.core.$strip>>;
262
+ }, z.core.$strip>;
263
+ export type GenreSimilarResponse = z.infer<typeof genreSimilarResponseSchema>;
264
+ export declare const genreParamsSchema: z.ZodObject<{
265
+ id: z.ZodString;
266
+ }, z.core.$strip>;
267
+ export declare const genreCreateBodySchema: z.ZodObject<{
268
+ name: z.ZodString;
269
+ parent_id: z.ZodString;
270
+ }, z.core.$strip>;
271
+ export declare const genreUpdateBodySchema: z.ZodObject<{
272
+ name: z.ZodOptional<z.ZodString>;
273
+ parent_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
274
+ }, z.core.$strip>;
275
+ export declare const genreAliasBodySchema: z.ZodObject<{
276
+ alias: z.ZodString;
277
+ }, z.core.$strip>;
278
+ export declare const genreMergeBodySchema: z.ZodObject<{
279
+ target_id: z.ZodString;
280
+ }, z.core.$strip>;
281
+ export declare const genreMutationResponseSchema: z.ZodObject<{
282
+ id: z.ZodString;
283
+ name: z.ZodString;
284
+ slug: z.ZodString;
285
+ parent_id: z.ZodNullable<z.ZodString>;
286
+ source: z.ZodEnum<{
287
+ custom: "custom";
288
+ discogs: "discogs";
289
+ }>;
290
+ }, z.core.$strip>;
291
+ export declare const genreAliasResponseSchema: z.ZodObject<{
292
+ success: z.ZodLiteral<true>;
293
+ }, z.core.$strip>;
294
+ export declare const genreMergeResponseSchema: z.ZodObject<{
295
+ success: z.ZodLiteral<true>;
296
+ merged_genre_id: z.ZodString;
297
+ survivor_genre_id: z.ZodString;
298
+ }, z.core.$strip>;
299
+ export type GenreSource = z.infer<typeof genreSourceSchema>;
300
+ export type Genre = z.infer<typeof genreMutationResponseSchema>;
301
+ export type GenreTreeNode = z.infer<typeof genreTreeNodeSchema>;
302
+ export type GenreTreeResponse = z.infer<typeof genreTreeResponseSchema>;
303
+ export type GenrePageQuery = z.infer<typeof genrePageQuerySchema>;
304
+ export type GenreSimilarQuery = z.infer<typeof genreSimilarQuerySchema>;
305
+ export type GenreCreateInput = z.infer<typeof genreCreateBodySchema>;
306
+ export type GenreUpdateInput = z.infer<typeof genreUpdateBodySchema>;
307
+ export type GenreAliasInput = z.infer<typeof genreAliasBodySchema>;
308
+ export type GenreMergeInput = z.infer<typeof genreMergeBodySchema>;
309
+ export type GenreAliasResponse = z.infer<typeof genreAliasResponseSchema>;
310
+ export type GenreMergeResponse = z.infer<typeof genreMergeResponseSchema>;
311
+ export declare const genreJsonSchemas: {
312
+ [k: string]: {
313
+ [k: string]: unknown;
314
+ };
315
+ };
316
+ //# sourceMappingURL=genres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genres.d.ts","sourceRoot":"","sources":["../src/genres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import { z } from "zod";
2
+ import { trackSchema } from "./tracks.js";
3
+ import { albumSchema } from "./albums.js";
4
+ export const genreSourceSchema = z.enum(["discogs", "custom"]);
5
+ /** Taxonomy counts are direct links; page counts include subgenres. */
6
+ export const genreTreeNodeSchema = z.object({
7
+ id: z.string().uuid(),
8
+ name: z.string(),
9
+ slug: z.string(),
10
+ parent_id: z.string().uuid().nullable(),
11
+ source: genreSourceSchema,
12
+ track_count: z.number().int().nonnegative(),
13
+ album_count: z.number().int().nonnegative(),
14
+ aliases: z.array(z.string()).optional().meta({
15
+ description: "Normalised alias keys that resolve to this genre, for matching raw Discogs spellings",
16
+ }),
17
+ get children() {
18
+ return z.array(genreTreeNodeSchema);
19
+ },
20
+ });
21
+ export const genreTreeResponseSchema = z.object({ genres: z.array(genreTreeNodeSchema) });
22
+ /** A genre as the genre page links to it (#376), with its track count, subgenres included. */
23
+ export const genrePageRefSchema = z.object({
24
+ id: z.string().uuid(),
25
+ name: z.string(),
26
+ slug: z.string(),
27
+ track_count: z.number().int().nonnegative().meta({ description: "Tracks the genre filter returns, subgenres included" }),
28
+ });
29
+ /** What produced a similar-genre score (#377): a taxonomy relation, co-occurrence, or both. */
30
+ export const genreSimilaritySignalsSchema = z.object({
31
+ taxonomy: z.enum(["sibling", "parent", "child"]).optional(),
32
+ npmi: z.number().min(-1).max(1).optional().meta({ description: "Normalised PMI of the two genres’ album co-occurrence" }),
33
+ shared_albums: z.number().int().nonnegative().optional().meta({ description: "Distinct albums tagged with both genres" }),
34
+ });
35
+ /** A related genre (#377): stored similarity when it exists, else the sibling stand-in it falls back to. */
36
+ export const genreRelatedRefSchema = genrePageRefSchema.extend({
37
+ score: z.number().optional().meta({ description: "Absent for a sibling-fallback entry, which has no stored score" }),
38
+ signals: genreSimilaritySignalsSchema.optional(),
39
+ });
40
+ export const genrePageQuerySchema = z.object({ friend_id: z.number().int().optional() });
41
+ /** `GET /api/genres/{id}`: one genre's place in the taxonomy and in the collection (#376). */
42
+ export const genrePageResponseSchema = z.object({
43
+ genre: z.object({
44
+ id: z.string().uuid(),
45
+ name: z.string(),
46
+ slug: z.string(),
47
+ parent_id: z.string().uuid().nullable(),
48
+ source: genreSourceSchema,
49
+ aliases: z.array(z.string()),
50
+ }),
51
+ /** Root first, ending with the genre's parent. */
52
+ ancestors: z.array(z.object({ id: z.string().uuid(), name: z.string(), slug: z.string() })).meta({ description: "Root first, ending with the parent" }),
53
+ children: z.array(genrePageRefSchema),
54
+ /** From the genre_similarity table (#377), falling back to taxonomy siblings when it has no rows yet. */
55
+ related: z.array(genreRelatedRefSchema).meta({ description: "From the genre_similarity table, falling back to taxonomy siblings when it has no rows yet" }),
56
+ counts: z.object({
57
+ tracks: z.number().int().nonnegative().meta({ description: "Tracks linked to this genre itself" }),
58
+ albums: z.number().int().nonnegative().meta({ description: "Albums whose Discogs genres or styles name this genre" }),
59
+ tracks_total: z.number().int().nonnegative().meta({ description: "Tracks the genre filter returns" }),
60
+ albums_total: z.number().int().nonnegative().meta({ description: "Albums the genre filter returns" }),
61
+ }),
62
+ stats: z.object({
63
+ bpm_min: z.number().positive().nullable(),
64
+ bpm_max: z.number().positive().nullable(),
65
+ added_this_year: z.number().int().nonnegative().meta({ description: "Matching tracks with collection date_added in the current UTC calendar year; never import/created_at time" }),
66
+ year: z.number().int(),
67
+ playable_tracks: z.number().int().nonnegative().meta({ description: "Matching live tracks with a nonblank local_audio_url" }),
68
+ bpm_histogram: z.array(z.object({
69
+ min: z.number().nonnegative(),
70
+ max: z.number().positive(),
71
+ count: z.number().int().nonnegative(),
72
+ })).meta({ description: "10 BPM bins [min, max), over all matching live tracks with finite positive BPM; empty bins omitted" }),
73
+ }),
74
+ top_tracks: z.array(trackSchema.extend({ play_count: z.number().int().nonnegative() })).meta({ description: "Most played first, then most recently added" }),
75
+ top_albums: z.array(albumSchema.extend({ play_count: z.number().int().nonnegative() })).meta({ description: "Most played first, then most recently added" }),
76
+ });
77
+ /** `GET /api/genres/{id}/similar` (#377): the same ranking `related` reads on the genre page, standalone. */
78
+ export const genreSimilarQuerySchema = z.object({
79
+ limit: z.number().int().positive().optional(),
80
+ });
81
+ export const genreSimilarResponseSchema = z.object({
82
+ genre: genrePageRefSchema,
83
+ related: z.array(genreRelatedRefSchema),
84
+ });
85
+ export const genreParamsSchema = z.object({ id: z.string().uuid() });
86
+ export const genreCreateBodySchema = z.object({
87
+ name: z.string().trim().min(1),
88
+ parent_id: z.string().uuid(),
89
+ });
90
+ export const genreUpdateBodySchema = z.object({
91
+ name: z.string().trim().min(1).optional(),
92
+ parent_id: z.string().uuid().nullable().optional(),
93
+ }).refine((value) => value.name !== undefined || value.parent_id !== undefined, {
94
+ message: "name or parent_id is required",
95
+ }).meta({ description: "At least one of name or parent_id is required; null parent_id moves the genre to the root" });
96
+ export const genreAliasBodySchema = z.object({ alias: z.string().trim().min(1) });
97
+ export const genreMergeBodySchema = z.object({ target_id: z.string().uuid() });
98
+ export const genreMutationResponseSchema = z.object({
99
+ id: z.string().uuid(),
100
+ name: z.string(),
101
+ slug: z.string(),
102
+ parent_id: z.string().uuid().nullable(),
103
+ source: genreSourceSchema,
104
+ });
105
+ export const genreAliasResponseSchema = z.object({ success: z.literal(true) });
106
+ export const genreMergeResponseSchema = z.object({
107
+ success: z.literal(true),
108
+ merged_genre_id: z.string().uuid(),
109
+ survivor_genre_id: z.string().uuid(),
110
+ });
111
+ const registry = z.registry();
112
+ registry.add(genreSourceSchema, { id: "GenreSource" });
113
+ registry.add(genreMutationResponseSchema, { id: "Genre" });
114
+ registry.add(genreTreeNodeSchema, { id: "GenreTreeNode" });
115
+ registry.add(genreTreeResponseSchema, { id: "GenreTreeResponse" });
116
+ registry.add(genrePageRefSchema, { id: "GenrePageRef" });
117
+ registry.add(genreSimilaritySignalsSchema, { id: "GenreSimilaritySignals" });
118
+ registry.add(genreRelatedRefSchema, { id: "GenreRelatedRef" });
119
+ registry.add(genrePageResponseSchema, { id: "GenrePageResponse" });
120
+ registry.add(genreSimilarResponseSchema, { id: "GenreSimilarResponse" });
121
+ registry.add(genreCreateBodySchema, { id: "GenreCreateInput" });
122
+ registry.add(genreUpdateBodySchema, { id: "GenreUpdateInput" });
123
+ registry.add(genreAliasBodySchema, { id: "GenreAliasInput" });
124
+ registry.add(genreMergeBodySchema, { id: "GenreMergeInput" });
125
+ registry.add(genreAliasResponseSchema, { id: "GenreAliasResponse" });
126
+ registry.add(genreMergeResponseSchema, { id: "GenreMergeResponse" });
127
+ // Input mode preserves the routes' acceptance of unknown keys. Registered
128
+ // recursive nodes reference the shared OpenAPI component, never a local "$ref".
129
+ const jsonSchemas = z.toJSONSchema(registry, {
130
+ io: "input",
131
+ uri: (id) => `#/components/schemas/${id}`,
132
+ }).schemas;
133
+ // Components resolve against the document; fragment-only $ids are not valid
134
+ // JSON Schema identifiers and must not change that resolution base.
135
+ export const genreJsonSchemas = Object.fromEntries(Object.entries(jsonSchemas).map(([name, schema]) => [
136
+ name,
137
+ Object.fromEntries(Object.entries(schema).filter(([key]) => key !== "$id")),
138
+ ]));
139
+ //# sourceMappingURL=genres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genres.js","sourceRoot":"","sources":["../src/genres.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -6,4 +6,5 @@ export * from "./friends.js";
6
6
  export * from "./recordCare.js";
7
7
  export * from "./spins.js";
8
8
  export * from "./players.js";
9
+ export * from "./genres.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
package/build/index.js CHANGED
@@ -6,4 +6,5 @@ export * from "./friends.js";
6
6
  export * from "./recordCare.js";
7
7
  export * from "./spins.js";
8
8
  export * from "./players.js";
9
+ export * from "./genres.js";
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -54,6 +54,10 @@ export declare const liveSetSummarySchema: z.ZodObject<{
54
54
  username: z.ZodString;
55
55
  role: z.ZodString;
56
56
  }, z.core.$strip>>;
57
+ flyer_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
58
+ recording_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
59
+ post_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
60
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
57
61
  }, z.core.$loose>;
58
62
  export declare const liveSetSchema: z.ZodObject<{
59
63
  id: z.ZodNumber;
@@ -202,6 +206,10 @@ export declare const liveSetJsonSchemas: {
202
206
  username: z.ZodString;
203
207
  role: z.ZodString;
204
208
  }, z.core.$strip>>;
209
+ flyer_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
210
+ recording_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
211
+ post_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
212
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
205
213
  }, z.core.$loose>>;
206
214
  LiveSet: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
207
215
  id: z.ZodNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"liveSets.d.ts","sourceRoot":"","sources":["../src/liveSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;EAA6C,CAAC;AAC9E,eAAO,MAAM,sBAAsB;;;;;;EAAyD,CAAC;AAE7F,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;iBAMrB,CAAC;AAEjB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAOf,CAAC;AAEjB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;iBASjB,CAAC;AAEjB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYV,CAAC;AAEjB,eAAO,MAAM,6BAA6B;;;iBAGxC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;iBAAyC,CAAC;AAElF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBhB,CAAC;AAEjB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;IAC7B,aAAa;;;;;IACb,gBAAgB;;;;;;;IAChB,mBAAmB;;;;;IACnB,kBAAkB;;;;;;;IAClB,YAAY;;;;;;;;;;;;;;IACZ,cAAc;;;;;;;;;;;;;;;;;;IACd,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACP,uBAAuB;;;;IACvB,qBAAqB;;;IACrB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACd,CAAC"}
1
+ {"version":3,"file":"liveSets.d.ts","sourceRoot":"","sources":["../src/liveSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;EAA6C,CAAC;AAC9E,eAAO,MAAM,sBAAsB;;;;;;EAAyD,CAAC;AAE7F,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;iBAMrB,CAAC;AAEjB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAOf,CAAC;AAEjB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAcjB,CAAC;AAEjB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYV,CAAC;AAEjB,eAAO,MAAM,6BAA6B;;;iBAGxC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;iBAAyC,CAAC;AAElF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBhB,CAAC;AAEjB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;IAC7B,aAAa;;;;;IACb,gBAAgB;;;;;;;IAChB,mBAAmB;;;;;IACnB,kBAAkB;;;;;;;IAClB,YAAY;;;;;;;;;;;;;;IACZ,cAAc;;;;;;;;;;;;;;;;;;;;;;IACd,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACP,uBAAuB;;;;IACvB,qBAAqB;;;IACrB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACd,CAAC"}
package/build/liveSets.js CHANGED
@@ -30,6 +30,11 @@ export const liveSetSummarySchema = z.object({
30
30
  venue_name: z.string().nullable(),
31
31
  location_city: z.string().nullable(),
32
32
  collaborators: z.array(liveSetCollaboratorSchema),
33
+ /** First media of each type by position; null when the set has none. */
34
+ flyer_url: z.string().nullable().optional(),
35
+ recording_url: z.string().nullable().optional(),
36
+ post_url: z.string().nullable().optional(),
37
+ youtube_url: z.string().nullable().optional(),
33
38
  }).passthrough();
34
39
  export const liveSetSchema = z.object({
35
40
  id: z.number().int(),
@@ -1 +1 @@
1
- {"version":3,"file":"liveSets.js","sourceRoot":"","sources":["../src/liveSets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liveSets.js","sourceRoot":"","sources":["../src/liveSets.ts"],"names":[],"mappings":"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"}