@groovenet/contracts 0.0.0-stage → 1.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveSets.js","sourceRoot":"","sources":["../src/liveSets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,432 @@
1
+ import { z } from "zod";
2
+ export declare const playlistOptimizerModeSchema: z.ZodEnum<{
3
+ cohesive_blocks: "cohesive_blocks";
4
+ genetic: "genetic";
5
+ greedy: "greedy";
6
+ }>;
7
+ /** A playlist entry as the API returns it: a reference to a track, not the track itself. */
8
+ export declare const playlistTrackRefSchema: z.ZodObject<{
9
+ track_id: z.ZodString;
10
+ friend_id: z.ZodNumber;
11
+ position: z.ZodNumber;
12
+ }, z.core.$strip>;
13
+ /** A track supplied when creating or replacing a playlist's contents. */
14
+ export declare const playlistTrackInputSchema: z.ZodObject<{
15
+ track_id: z.ZodString;
16
+ friend_id: z.ZodOptional<z.ZodNumber>;
17
+ username: z.ZodOptional<z.ZodNullable<z.ZodString>>;
18
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ artist: z.ZodOptional<z.ZodNullable<z.ZodString>>;
20
+ album: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
22
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
23
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
24
+ duration: z.ZodOptional<z.ZodNullable<z.ZodString>>;
25
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
26
+ position: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
27
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
33
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
34
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
35
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
37
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
38
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
39
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
40
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
41
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
42
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
43
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
44
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ }, z.core.$loose>;
46
+ export declare const playlistSchema: z.ZodObject<{
47
+ id: z.ZodNumber;
48
+ name: z.ZodString;
49
+ created_at: z.ZodString;
50
+ total_duration_seconds: z.ZodOptional<z.ZodNumber>;
51
+ tracks: z.ZodArray<z.ZodObject<{
52
+ track_id: z.ZodString;
53
+ friend_id: z.ZodNumber;
54
+ position: z.ZodNumber;
55
+ }, z.core.$strip>>;
56
+ set: z.ZodOptional<z.ZodObject<{
57
+ id: z.ZodNumber;
58
+ title: z.ZodNullable<z.ZodString>;
59
+ status: z.ZodEnum<{
60
+ archived: "archived";
61
+ draft: "draft";
62
+ performed: "performed";
63
+ }>;
64
+ cover_image_url: z.ZodNullable<z.ZodString>;
65
+ last_performed_at: z.ZodNullable<z.ZodString>;
66
+ venue_name: z.ZodNullable<z.ZodString>;
67
+ location_city: z.ZodNullable<z.ZodString>;
68
+ collaborators: z.ZodArray<z.ZodObject<{
69
+ friend_id: z.ZodNumber;
70
+ username: z.ZodString;
71
+ role: z.ZodString;
72
+ }, z.core.$strip>>;
73
+ }, z.core.$loose>>;
74
+ }, z.core.$loose>;
75
+ export declare const playlistCreateSchema: z.ZodObject<{
76
+ name: z.ZodString;
77
+ tracks: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
78
+ track_id: z.ZodString;
79
+ friend_id: z.ZodOptional<z.ZodNumber>;
80
+ username: z.ZodOptional<z.ZodNullable<z.ZodString>>;
81
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
+ artist: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ album: z.ZodOptional<z.ZodNullable<z.ZodString>>;
84
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
85
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
86
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
87
+ duration: z.ZodOptional<z.ZodNullable<z.ZodString>>;
88
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
89
+ position: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
90
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
93
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
94
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
95
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
96
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
97
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
98
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
99
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
100
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
101
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
102
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
103
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
104
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
105
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
106
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
107
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
108
+ }, z.core.$loose>>>>;
109
+ default_friend_id: z.ZodOptional<z.ZodNumber>;
110
+ }, z.core.$loose>;
111
+ /** Bare track ids keep the entry's existing friend; objects can carry one. */
112
+ export declare const playlistUpdateSchema: z.ZodObject<{
113
+ id: z.ZodNumber;
114
+ name: z.ZodOptional<z.ZodString>;
115
+ tracks: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
116
+ track_id: z.ZodString;
117
+ friend_id: z.ZodOptional<z.ZodNumber>;
118
+ username: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
120
+ artist: z.ZodOptional<z.ZodNullable<z.ZodString>>;
121
+ album: z.ZodOptional<z.ZodNullable<z.ZodString>>;
122
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
123
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
124
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
125
+ duration: z.ZodOptional<z.ZodNullable<z.ZodString>>;
126
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
127
+ position: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
128
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
129
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
130
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
131
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
132
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
133
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
134
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
135
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
136
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
137
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
138
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
139
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
140
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
141
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
142
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
143
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
144
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
145
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
146
+ }, z.core.$loose>]>>>;
147
+ default_friend_id: z.ZodOptional<z.ZodNumber>;
148
+ }, z.core.$loose>;
149
+ export declare const playlistDetailSchema: z.ZodObject<{
150
+ playlist_id: z.ZodNumber;
151
+ playlist_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
+ tracks: z.ZodArray<z.ZodObject<{
153
+ track_id: z.ZodString;
154
+ friend_id: z.ZodNumber;
155
+ position: z.ZodNumber;
156
+ }, z.core.$strip>>;
157
+ }, z.core.$strip>;
158
+ export declare const playlistDeleteResponseSchema: z.ZodObject<{
159
+ success: z.ZodLiteral<true>;
160
+ }, z.core.$strip>;
161
+ export declare const playlistSpinsInputSchema: z.ZodObject<{
162
+ performed_at: z.ZodOptional<z.ZodString>;
163
+ performance_id: z.ZodOptional<z.ZodNumber>;
164
+ derivation_id: z.ZodOptional<z.ZodString>;
165
+ }, z.core.$strip>;
166
+ export declare const playlistSpinsResultSchema: z.ZodObject<{
167
+ playlist_id: z.ZodNumber;
168
+ performance_id: z.ZodNullable<z.ZodNumber>;
169
+ performed_at: z.ZodString;
170
+ created: z.ZodNumber;
171
+ skipped: z.ZodNumber;
172
+ }, z.core.$strip>;
173
+ export declare const playlistGeneticTrackSchema: z.ZodObject<{
174
+ track_id: z.ZodString;
175
+ friend_id: z.ZodOptional<z.ZodNumber>;
176
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
177
+ }, z.core.$loose>;
178
+ export declare const playlistGeneticRequestSchema: z.ZodObject<{
179
+ playlist: z.ZodArray<z.ZodObject<{
180
+ track_id: z.ZodString;
181
+ friend_id: z.ZodOptional<z.ZodNumber>;
182
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
183
+ }, z.core.$loose>>;
184
+ mode: z.ZodOptional<z.ZodEnum<{
185
+ cohesive_blocks: "cohesive_blocks";
186
+ genetic: "genetic";
187
+ greedy: "greedy";
188
+ }>>;
189
+ }, z.core.$strip>;
190
+ export declare const playlistGeneticResultTrackSchema: z.ZodObject<{
191
+ track_id: z.ZodString;
192
+ }, z.core.$loose>;
193
+ export declare const playlistGeneticResponseSchema: z.ZodObject<{
194
+ mode: z.ZodOptional<z.ZodEnum<{
195
+ cohesive_blocks: "cohesive_blocks";
196
+ genetic: "genetic";
197
+ greedy: "greedy";
198
+ }>>;
199
+ result: z.ZodUnion<readonly [z.ZodArray<z.ZodObject<{
200
+ track_id: z.ZodString;
201
+ }, z.core.$loose>>, z.ZodRecord<z.ZodString, z.ZodObject<{
202
+ track_id: z.ZodString;
203
+ }, z.core.$loose>>]>;
204
+ }, z.core.$loose>;
205
+ export declare const playlistGeneticInvalidItemSchema: z.ZodObject<{
206
+ track_id: z.ZodOptional<z.ZodString>;
207
+ reason: z.ZodString;
208
+ }, z.core.$strip>;
209
+ export declare const playlistGeneticValidationErrorSchema: z.ZodObject<{
210
+ error: z.ZodString;
211
+ invalid: z.ZodArray<z.ZodObject<{
212
+ track_id: z.ZodOptional<z.ZodString>;
213
+ reason: z.ZodString;
214
+ }, z.core.$strip>>;
215
+ invalid_count: z.ZodNumber;
216
+ }, z.core.$strip>;
217
+ export type PlaylistOptimizerMode = z.infer<typeof playlistOptimizerModeSchema>;
218
+ export type PlaylistTrackRef = z.infer<typeof playlistTrackRefSchema>;
219
+ export type PlaylistTrackInput = z.infer<typeof playlistTrackInputSchema>;
220
+ export type Playlist = z.infer<typeof playlistSchema>;
221
+ export type PlaylistCreate = z.input<typeof playlistCreateSchema>;
222
+ export type PlaylistUpdate = z.infer<typeof playlistUpdateSchema>;
223
+ export type PlaylistDetail = z.infer<typeof playlistDetailSchema>;
224
+ export type PlaylistDeleteResponse = z.infer<typeof playlistDeleteResponseSchema>;
225
+ export type PlaylistSpinsInput = z.infer<typeof playlistSpinsInputSchema>;
226
+ export type PlaylistSpinsResult = z.infer<typeof playlistSpinsResultSchema>;
227
+ export type PlaylistGeneticRequest = z.infer<typeof playlistGeneticRequestSchema>;
228
+ export type PlaylistGeneticResponse = z.infer<typeof playlistGeneticResponseSchema>;
229
+ export type PlaylistGeneticValidationError = z.infer<typeof playlistGeneticValidationErrorSchema>;
230
+ export declare const playlistJsonSchemas: {
231
+ PlaylistOptimizerMode: z.core.ZodStandardJSONSchemaPayload<z.ZodEnum<{
232
+ cohesive_blocks: "cohesive_blocks";
233
+ genetic: "genetic";
234
+ greedy: "greedy";
235
+ }>>;
236
+ PlaylistTrackRef: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
237
+ track_id: z.ZodString;
238
+ friend_id: z.ZodNumber;
239
+ position: z.ZodNumber;
240
+ }, z.core.$strip>>;
241
+ PlaylistTrackInput: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
242
+ track_id: z.ZodString;
243
+ friend_id: z.ZodOptional<z.ZodNumber>;
244
+ username: z.ZodOptional<z.ZodNullable<z.ZodString>>;
245
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
246
+ artist: z.ZodOptional<z.ZodNullable<z.ZodString>>;
247
+ album: z.ZodOptional<z.ZodNullable<z.ZodString>>;
248
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
249
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
250
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
251
+ duration: z.ZodOptional<z.ZodNullable<z.ZodString>>;
252
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
253
+ position: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
254
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
255
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
256
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
257
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
258
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
259
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
260
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
261
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
262
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
263
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
264
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
265
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
266
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
267
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
268
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
269
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
270
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
271
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
272
+ }, z.core.$loose>>;
273
+ Playlist: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
274
+ id: z.ZodNumber;
275
+ name: z.ZodString;
276
+ created_at: z.ZodString;
277
+ total_duration_seconds: z.ZodOptional<z.ZodNumber>;
278
+ tracks: z.ZodArray<z.ZodObject<{
279
+ track_id: z.ZodString;
280
+ friend_id: z.ZodNumber;
281
+ position: z.ZodNumber;
282
+ }, z.core.$strip>>;
283
+ set: z.ZodOptional<z.ZodObject<{
284
+ id: z.ZodNumber;
285
+ title: z.ZodNullable<z.ZodString>;
286
+ status: z.ZodEnum<{
287
+ archived: "archived";
288
+ draft: "draft";
289
+ performed: "performed";
290
+ }>;
291
+ cover_image_url: z.ZodNullable<z.ZodString>;
292
+ last_performed_at: z.ZodNullable<z.ZodString>;
293
+ venue_name: z.ZodNullable<z.ZodString>;
294
+ location_city: z.ZodNullable<z.ZodString>;
295
+ collaborators: z.ZodArray<z.ZodObject<{
296
+ friend_id: z.ZodNumber;
297
+ username: z.ZodString;
298
+ role: z.ZodString;
299
+ }, z.core.$strip>>;
300
+ }, z.core.$loose>>;
301
+ }, z.core.$loose>>;
302
+ PlaylistCreate: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
303
+ name: z.ZodString;
304
+ tracks: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
305
+ track_id: z.ZodString;
306
+ friend_id: z.ZodOptional<z.ZodNumber>;
307
+ username: z.ZodOptional<z.ZodNullable<z.ZodString>>;
308
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
309
+ artist: z.ZodOptional<z.ZodNullable<z.ZodString>>;
310
+ album: z.ZodOptional<z.ZodNullable<z.ZodString>>;
311
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
312
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
313
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
314
+ duration: z.ZodOptional<z.ZodNullable<z.ZodString>>;
315
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
316
+ position: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
317
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
318
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
319
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
320
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
321
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
322
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
323
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
324
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
325
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
326
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
327
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
328
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
329
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
330
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
331
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
332
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
333
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
334
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
335
+ }, z.core.$loose>>>>;
336
+ default_friend_id: z.ZodOptional<z.ZodNumber>;
337
+ }, z.core.$loose>>;
338
+ PlaylistUpdate: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
339
+ id: z.ZodNumber;
340
+ name: z.ZodOptional<z.ZodString>;
341
+ tracks: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
342
+ track_id: z.ZodString;
343
+ friend_id: z.ZodOptional<z.ZodNumber>;
344
+ username: z.ZodOptional<z.ZodNullable<z.ZodString>>;
345
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
346
+ artist: z.ZodOptional<z.ZodNullable<z.ZodString>>;
347
+ album: z.ZodOptional<z.ZodNullable<z.ZodString>>;
348
+ year: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
349
+ styles: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
350
+ genres: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
351
+ duration: z.ZodOptional<z.ZodNullable<z.ZodString>>;
352
+ duration_seconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
353
+ position: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
354
+ discogs_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
355
+ apple_music_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
356
+ youtube_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
357
+ spotify_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
358
+ soundcloud_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
359
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
360
+ local_tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
361
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
362
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
363
+ danceability: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
364
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
365
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
366
+ release_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
367
+ mood_happy: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
368
+ mood_sad: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
369
+ mood_relaxed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
370
+ mood_aggressive: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
371
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
372
+ }, z.core.$loose>]>>>;
373
+ default_friend_id: z.ZodOptional<z.ZodNumber>;
374
+ }, z.core.$loose>>;
375
+ PlaylistDetail: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
376
+ playlist_id: z.ZodNumber;
377
+ playlist_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
378
+ tracks: z.ZodArray<z.ZodObject<{
379
+ track_id: z.ZodString;
380
+ friend_id: z.ZodNumber;
381
+ position: z.ZodNumber;
382
+ }, z.core.$strip>>;
383
+ }, z.core.$strip>>;
384
+ PlaylistDeleteResponse: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
385
+ success: z.ZodLiteral<true>;
386
+ }, z.core.$strip>>;
387
+ PlaylistSpinsInput: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
388
+ performed_at: z.ZodOptional<z.ZodString>;
389
+ performance_id: z.ZodOptional<z.ZodNumber>;
390
+ derivation_id: z.ZodOptional<z.ZodString>;
391
+ }, z.core.$strip>>;
392
+ PlaylistSpinsResult: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
393
+ playlist_id: z.ZodNumber;
394
+ performance_id: z.ZodNullable<z.ZodNumber>;
395
+ performed_at: z.ZodString;
396
+ created: z.ZodNumber;
397
+ skipped: z.ZodNumber;
398
+ }, z.core.$strip>>;
399
+ PlaylistGeneticRequest: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
400
+ playlist: z.ZodArray<z.ZodObject<{
401
+ track_id: z.ZodString;
402
+ friend_id: z.ZodOptional<z.ZodNumber>;
403
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
404
+ }, z.core.$loose>>;
405
+ mode: z.ZodOptional<z.ZodEnum<{
406
+ cohesive_blocks: "cohesive_blocks";
407
+ genetic: "genetic";
408
+ greedy: "greedy";
409
+ }>>;
410
+ }, z.core.$strip>>;
411
+ PlaylistGeneticResponse: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
412
+ mode: z.ZodOptional<z.ZodEnum<{
413
+ cohesive_blocks: "cohesive_blocks";
414
+ genetic: "genetic";
415
+ greedy: "greedy";
416
+ }>>;
417
+ result: z.ZodUnion<readonly [z.ZodArray<z.ZodObject<{
418
+ track_id: z.ZodString;
419
+ }, z.core.$loose>>, z.ZodRecord<z.ZodString, z.ZodObject<{
420
+ track_id: z.ZodString;
421
+ }, z.core.$loose>>]>;
422
+ }, z.core.$loose>>;
423
+ PlaylistGeneticValidationError: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
424
+ error: z.ZodString;
425
+ invalid: z.ZodArray<z.ZodObject<{
426
+ track_id: z.ZodOptional<z.ZodString>;
427
+ reason: z.ZodString;
428
+ }, z.core.$strip>>;
429
+ invalid_count: z.ZodNumber;
430
+ }, z.core.$strip>>;
431
+ };
432
+ //# sourceMappingURL=playlists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlists.d.ts","sourceRoot":"","sources":["../src/playlists.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import { z } from "zod";
2
+ import { liveSetSummarySchema } from "./liveSets.js";
3
+ export const playlistOptimizerModeSchema = z.enum(["genetic", "greedy", "cohesive_blocks"]);
4
+ /** A playlist entry as the API returns it: a reference to a track, not the track itself. */
5
+ export const playlistTrackRefSchema = z.object({
6
+ track_id: z.string(),
7
+ friend_id: z.number().int(),
8
+ position: z.number().int(),
9
+ });
10
+ /** A track supplied when creating or replacing a playlist's contents. */
11
+ export const playlistTrackInputSchema = z
12
+ .object({
13
+ track_id: z.string(),
14
+ friend_id: z.number().int().optional(),
15
+ username: z.string().nullable().optional(),
16
+ title: z.string().nullable().optional(),
17
+ artist: z.string().nullable().optional(),
18
+ album: z.string().nullable().optional(),
19
+ year: z.union([z.string(), z.number()]).nullable().optional(),
20
+ styles: z.array(z.string()).nullable().optional(),
21
+ genres: z.array(z.string()).nullable().optional(),
22
+ duration: z.string().nullable().optional(),
23
+ duration_seconds: z.number().nullable().optional(),
24
+ position: z.union([z.string(), z.number()]).nullable().optional(),
25
+ discogs_url: z.string().nullable().optional(),
26
+ apple_music_url: z.string().nullable().optional(),
27
+ youtube_url: z.string().nullable().optional(),
28
+ spotify_url: z.string().nullable().optional(),
29
+ soundcloud_url: z.string().nullable().optional(),
30
+ album_thumbnail: z.string().nullable().optional(),
31
+ local_tags: z.string().nullable().optional(),
32
+ bpm: z.union([z.number(), z.string()]).nullable().optional(),
33
+ key: z.string().nullable().optional(),
34
+ danceability: z.number().nullable().optional(),
35
+ notes: z.string().nullable().optional(),
36
+ star_rating: z.number().nullable().optional(),
37
+ release_id: z.string().nullable().optional(),
38
+ mood_happy: z.number().nullable().optional(),
39
+ mood_sad: z.number().nullable().optional(),
40
+ mood_relaxed: z.number().nullable().optional(),
41
+ mood_aggressive: z.number().nullable().optional(),
42
+ local_audio_url: z.string().nullable().optional(),
43
+ })
44
+ .passthrough();
45
+ export const playlistSchema = z
46
+ .object({
47
+ id: z.number().int(),
48
+ name: z.string(),
49
+ created_at: z.string(),
50
+ total_duration_seconds: z.number().optional(),
51
+ tracks: z.array(playlistTrackRefSchema),
52
+ set: liveSetSummarySchema.optional(),
53
+ })
54
+ .passthrough();
55
+ export const playlistCreateSchema = z
56
+ .object({
57
+ name: z.string(),
58
+ tracks: z.array(playlistTrackInputSchema).optional().default([]),
59
+ default_friend_id: z.number().int().optional(),
60
+ })
61
+ .passthrough();
62
+ /** Bare track ids keep the entry's existing friend; objects can carry one. */
63
+ export const playlistUpdateSchema = z
64
+ .object({
65
+ id: z.number().int(),
66
+ name: z.string().optional(),
67
+ tracks: z.array(z.union([z.string(), playlistTrackInputSchema])).optional(),
68
+ default_friend_id: z.number().int().optional(),
69
+ })
70
+ .passthrough();
71
+ export const playlistDetailSchema = z.object({
72
+ playlist_id: z.number().int(),
73
+ playlist_name: z.string().nullable().optional(),
74
+ tracks: z.array(playlistTrackRefSchema),
75
+ });
76
+ export const playlistDeleteResponseSchema = z.object({ success: z.literal(true) });
77
+ export const playlistSpinsInputSchema = z
78
+ .object({
79
+ performed_at: z
80
+ .string()
81
+ .min(1)
82
+ .refine((value) => !Number.isNaN(Date.parse(value)), "Invalid timestamp")
83
+ .optional(),
84
+ performance_id: z.number().int().positive().optional(),
85
+ derivation_id: z.string().uuid().optional(),
86
+ })
87
+ .superRefine((value, ctx) => {
88
+ if (value.performed_at != null && value.performance_id != null) {
89
+ ctx.addIssue({
90
+ code: "custom",
91
+ message: "Provide either performed_at or performance_id, not both",
92
+ });
93
+ }
94
+ });
95
+ export const playlistSpinsResultSchema = z.object({
96
+ playlist_id: z.number().int(),
97
+ performance_id: z.number().int().nullable(),
98
+ performed_at: z.string(),
99
+ created: z.number().int().nonnegative(),
100
+ skipped: z.number().int().nonnegative(),
101
+ });
102
+ export const playlistGeneticTrackSchema = z
103
+ .object({
104
+ track_id: z.string().min(1),
105
+ friend_id: z.number().int().optional(),
106
+ bpm: z.union([z.number(), z.string()]).nullable().optional(),
107
+ })
108
+ .passthrough();
109
+ export const playlistGeneticRequestSchema = z.object({
110
+ playlist: z.array(playlistGeneticTrackSchema).min(1),
111
+ mode: playlistOptimizerModeSchema.optional(),
112
+ });
113
+ export const playlistGeneticResultTrackSchema = z
114
+ .object({ track_id: z.string().min(1) })
115
+ .passthrough();
116
+ export const playlistGeneticResponseSchema = z
117
+ .object({
118
+ mode: playlistOptimizerModeSchema.optional(),
119
+ result: z.union([
120
+ z.array(playlistGeneticResultTrackSchema),
121
+ z.record(z.string(), playlistGeneticResultTrackSchema),
122
+ ]),
123
+ })
124
+ .passthrough();
125
+ export const playlistGeneticInvalidItemSchema = z.object({
126
+ track_id: z.string().optional(),
127
+ reason: z.string(),
128
+ });
129
+ export const playlistGeneticValidationErrorSchema = z.object({
130
+ error: z.string(),
131
+ invalid: z.array(playlistGeneticInvalidItemSchema),
132
+ invalid_count: z.number().int(),
133
+ });
134
+ export const playlistJsonSchemas = {
135
+ PlaylistOptimizerMode: z.toJSONSchema(playlistOptimizerModeSchema),
136
+ PlaylistTrackRef: z.toJSONSchema(playlistTrackRefSchema),
137
+ PlaylistTrackInput: z.toJSONSchema(playlistTrackInputSchema),
138
+ Playlist: z.toJSONSchema(playlistSchema),
139
+ PlaylistCreate: z.toJSONSchema(playlistCreateSchema, { io: "input" }),
140
+ PlaylistUpdate: z.toJSONSchema(playlistUpdateSchema),
141
+ PlaylistDetail: z.toJSONSchema(playlistDetailSchema),
142
+ PlaylistDeleteResponse: z.toJSONSchema(playlistDeleteResponseSchema),
143
+ PlaylistSpinsInput: z.toJSONSchema(playlistSpinsInputSchema, { io: "input" }),
144
+ PlaylistSpinsResult: z.toJSONSchema(playlistSpinsResultSchema),
145
+ PlaylistGeneticRequest: z.toJSONSchema(playlistGeneticRequestSchema),
146
+ PlaylistGeneticResponse: z.toJSONSchema(playlistGeneticResponseSchema),
147
+ PlaylistGeneticValidationError: z.toJSONSchema(playlistGeneticValidationErrorSchema),
148
+ };
149
+ //# sourceMappingURL=playlists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlists.js","sourceRoot":"","sources":["../src/playlists.ts"],"names":[],"mappings":"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"}