navidrome-mcp 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.
Files changed (195) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +397 -0
  3. package/dist/capabilities.d.ts +20 -0
  4. package/dist/capabilities.d.ts.map +1 -0
  5. package/dist/capabilities.js +25 -0
  6. package/dist/capabilities.js.map +1 -0
  7. package/dist/client/auth-manager.d.ts +27 -0
  8. package/dist/client/auth-manager.d.ts.map +1 -0
  9. package/dist/client/auth-manager.js +54 -0
  10. package/dist/client/auth-manager.js.map +1 -0
  11. package/dist/client/navidrome-client.d.ts +28 -0
  12. package/dist/client/navidrome-client.d.ts.map +1 -0
  13. package/dist/client/navidrome-client.js +84 -0
  14. package/dist/client/navidrome-client.js.map +1 -0
  15. package/dist/config.d.ts +41 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +132 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/constants/defaults.d.ts +29 -0
  20. package/dist/constants/defaults.d.ts.map +1 -0
  21. package/dist/constants/defaults.js +37 -0
  22. package/dist/constants/defaults.js.map +1 -0
  23. package/dist/constants/timeouts.d.ts +66 -0
  24. package/dist/constants/timeouts.d.ts.map +1 -0
  25. package/dist/constants/timeouts.js +66 -0
  26. package/dist/constants/timeouts.js.map +1 -0
  27. package/dist/index.d.ts +20 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +70 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/resources/index.d.ts +21 -0
  32. package/dist/resources/index.d.ts.map +1 -0
  33. package/dist/resources/index.js +83 -0
  34. package/dist/resources/index.js.map +1 -0
  35. package/dist/schemas/common.d.ts +68 -0
  36. package/dist/schemas/common.d.ts.map +1 -0
  37. package/dist/schemas/common.js +69 -0
  38. package/dist/schemas/common.js.map +1 -0
  39. package/dist/schemas/index.d.ts +21 -0
  40. package/dist/schemas/index.d.ts.map +1 -0
  41. package/dist/schemas/index.js +24 -0
  42. package/dist/schemas/index.js.map +1 -0
  43. package/dist/schemas/pagination.d.ts +153 -0
  44. package/dist/schemas/pagination.d.ts.map +1 -0
  45. package/dist/schemas/pagination.js +93 -0
  46. package/dist/schemas/pagination.js.map +1 -0
  47. package/dist/schemas/validation.d.ts +147 -0
  48. package/dist/schemas/validation.d.ts.map +1 -0
  49. package/dist/schemas/validation.js +143 -0
  50. package/dist/schemas/validation.js.map +1 -0
  51. package/dist/tools/handlers/lastfm-handlers.d.ts +5 -0
  52. package/dist/tools/handlers/lastfm-handlers.d.ts.map +1 -0
  53. package/dist/tools/handlers/lastfm-handlers.js +143 -0
  54. package/dist/tools/handlers/lastfm-handlers.js.map +1 -0
  55. package/dist/tools/handlers/lyrics-handlers.d.ts +5 -0
  56. package/dist/tools/handlers/lyrics-handlers.d.ts.map +1 -0
  57. package/dist/tools/handlers/lyrics-handlers.js +51 -0
  58. package/dist/tools/handlers/lyrics-handlers.js.map +1 -0
  59. package/dist/tools/handlers/playlist-handlers.d.ts +5 -0
  60. package/dist/tools/handlers/playlist-handlers.d.ts.map +1 -0
  61. package/dist/tools/handlers/playlist-handlers.js +316 -0
  62. package/dist/tools/handlers/playlist-handlers.js.map +1 -0
  63. package/dist/tools/handlers/queue-handlers.d.ts +5 -0
  64. package/dist/tools/handlers/queue-handlers.d.ts.map +1 -0
  65. package/dist/tools/handlers/queue-handlers.js +135 -0
  66. package/dist/tools/handlers/queue-handlers.js.map +1 -0
  67. package/dist/tools/handlers/radio-handlers.d.ts +5 -0
  68. package/dist/tools/handlers/radio-handlers.d.ts.map +1 -0
  69. package/dist/tools/handlers/radio-handlers.js +323 -0
  70. package/dist/tools/handlers/radio-handlers.js.map +1 -0
  71. package/dist/tools/handlers/registry.d.ts +26 -0
  72. package/dist/tools/handlers/registry.d.ts.map +1 -0
  73. package/dist/tools/handlers/registry.js +77 -0
  74. package/dist/tools/handlers/registry.js.map +1 -0
  75. package/dist/tools/handlers/search-handlers.d.ts +5 -0
  76. package/dist/tools/handlers/search-handlers.d.ts.map +1 -0
  77. package/dist/tools/handlers/search-handlers.js +125 -0
  78. package/dist/tools/handlers/search-handlers.js.map +1 -0
  79. package/dist/tools/handlers/tag-handlers.d.ts +5 -0
  80. package/dist/tools/handlers/tag-handlers.d.ts.map +1 -0
  81. package/dist/tools/handlers/tag-handlers.js +155 -0
  82. package/dist/tools/handlers/tag-handlers.js.map +1 -0
  83. package/dist/tools/handlers/user-preferences-handlers.d.ts +5 -0
  84. package/dist/tools/handlers/user-preferences-handlers.d.ts.map +1 -0
  85. package/dist/tools/handlers/user-preferences-handlers.js +155 -0
  86. package/dist/tools/handlers/user-preferences-handlers.js.map +1 -0
  87. package/dist/tools/index.d.ts +19 -0
  88. package/dist/tools/index.d.ts.map +1 -0
  89. package/dist/tools/index.js +20 -0
  90. package/dist/tools/index.js.map +1 -0
  91. package/dist/tools/lastfm-discovery.d.ts +107 -0
  92. package/dist/tools/lastfm-discovery.d.ts.map +1 -0
  93. package/dist/tools/lastfm-discovery.js +238 -0
  94. package/dist/tools/lastfm-discovery.js.map +1 -0
  95. package/dist/tools/library.d.ts +31 -0
  96. package/dist/tools/library.d.ts.map +1 -0
  97. package/dist/tools/library.js +272 -0
  98. package/dist/tools/library.js.map +1 -0
  99. package/dist/tools/listening-history.d.ts +51 -0
  100. package/dist/tools/listening-history.d.ts.map +1 -0
  101. package/dist/tools/listening-history.js +126 -0
  102. package/dist/tools/listening-history.js.map +1 -0
  103. package/dist/tools/lyrics.d.ts +35 -0
  104. package/dist/tools/lyrics.d.ts.map +1 -0
  105. package/dist/tools/lyrics.js +222 -0
  106. package/dist/tools/lyrics.js.map +1 -0
  107. package/dist/tools/media-library.d.ts +46 -0
  108. package/dist/tools/media-library.d.ts.map +1 -0
  109. package/dist/tools/media-library.js +179 -0
  110. package/dist/tools/media-library.js.map +1 -0
  111. package/dist/tools/playlist-management.d.ts +80 -0
  112. package/dist/tools/playlist-management.d.ts.map +1 -0
  113. package/dist/tools/playlist-management.js +384 -0
  114. package/dist/tools/playlist-management.js.map +1 -0
  115. package/dist/tools/queue-management.d.ts +48 -0
  116. package/dist/tools/queue-management.d.ts.map +1 -0
  117. package/dist/tools/queue-management.js +83 -0
  118. package/dist/tools/queue-management.js.map +1 -0
  119. package/dist/tools/radio-discovery.d.ts +95 -0
  120. package/dist/tools/radio-discovery.d.ts.map +1 -0
  121. package/dist/tools/radio-discovery.js +352 -0
  122. package/dist/tools/radio-discovery.js.map +1 -0
  123. package/dist/tools/radio-validation.d.ts +49 -0
  124. package/dist/tools/radio-validation.d.ts.map +1 -0
  125. package/dist/tools/radio-validation.js +463 -0
  126. package/dist/tools/radio-validation.js.map +1 -0
  127. package/dist/tools/radio.d.ts +38 -0
  128. package/dist/tools/radio.d.ts.map +1 -0
  129. package/dist/tools/radio.js +315 -0
  130. package/dist/tools/radio.js.map +1 -0
  131. package/dist/tools/search.d.ts +54 -0
  132. package/dist/tools/search.d.ts.map +1 -0
  133. package/dist/tools/search.js +165 -0
  134. package/dist/tools/search.js.map +1 -0
  135. package/dist/tools/tags.d.ts +63 -0
  136. package/dist/tools/tags.d.ts.map +1 -0
  137. package/dist/tools/tags.js +260 -0
  138. package/dist/tools/tags.js.map +1 -0
  139. package/dist/tools/test.d.ts +50 -0
  140. package/dist/tools/test.d.ts.map +1 -0
  141. package/dist/tools/test.js +121 -0
  142. package/dist/tools/test.js.map +1 -0
  143. package/dist/tools/user-preferences.d.ts +73 -0
  144. package/dist/tools/user-preferences.d.ts.map +1 -0
  145. package/dist/tools/user-preferences.js +231 -0
  146. package/dist/tools/user-preferences.js.map +1 -0
  147. package/dist/transformers/song-transformer.d.ts +122 -0
  148. package/dist/transformers/song-transformer.d.ts.map +1 -0
  149. package/dist/transformers/song-transformer.js +232 -0
  150. package/dist/transformers/song-transformer.js.map +1 -0
  151. package/dist/types/core.d.ts +147 -0
  152. package/dist/types/core.d.ts.map +1 -0
  153. package/dist/types/core.js +19 -0
  154. package/dist/types/core.js.map +1 -0
  155. package/dist/types/index.d.ts +23 -0
  156. package/dist/types/index.d.ts.map +1 -0
  157. package/dist/types/index.js +19 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/types/lyrics.d.ts +58 -0
  160. package/dist/types/lyrics.d.ts.map +1 -0
  161. package/dist/types/lyrics.js +19 -0
  162. package/dist/types/lyrics.js.map +1 -0
  163. package/dist/types/playlists.d.ts +150 -0
  164. package/dist/types/playlists.d.ts.map +1 -0
  165. package/dist/types/playlists.js +19 -0
  166. package/dist/types/playlists.js.map +1 -0
  167. package/dist/types/radio.d.ts +192 -0
  168. package/dist/types/radio.d.ts.map +1 -0
  169. package/dist/types/radio.js +19 -0
  170. package/dist/types/radio.js.map +1 -0
  171. package/dist/types/tags.d.ts +72 -0
  172. package/dist/types/tags.d.ts.map +1 -0
  173. package/dist/types/tags.js +19 -0
  174. package/dist/types/tags.js.map +1 -0
  175. package/dist/utils/cache.d.ts +32 -0
  176. package/dist/utils/cache.d.ts.map +1 -0
  177. package/dist/utils/cache.js +84 -0
  178. package/dist/utils/cache.js.map +1 -0
  179. package/dist/utils/error-formatter.d.ts +108 -0
  180. package/dist/utils/error-formatter.d.ts.map +1 -0
  181. package/dist/utils/error-formatter.js +161 -0
  182. package/dist/utils/error-formatter.js.map +1 -0
  183. package/dist/utils/logger.d.ts +33 -0
  184. package/dist/utils/logger.d.ts.map +1 -0
  185. package/dist/utils/logger.js +52 -0
  186. package/dist/utils/logger.js.map +1 -0
  187. package/dist/utils/message-manager.d.ts +74 -0
  188. package/dist/utils/message-manager.d.ts.map +1 -0
  189. package/dist/utils/message-manager.js +134 -0
  190. package/dist/utils/message-manager.js.map +1 -0
  191. package/dist/utils/version.d.ts +5 -0
  192. package/dist/utils/version.d.ts.map +1 -0
  193. package/dist/utils/version.js +19 -0
  194. package/dist/utils/version.js.map +1 -0
  195. package/package.json +78 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Navidrome MCP Server - Common Schema Definitions
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { z } from 'zod';
19
+ export declare const IdSchema: z.ZodObject<{
20
+ id: z.ZodString;
21
+ }, z.core.$strip>;
22
+ export declare const createIdSchema: (resourceType: string) => z.ZodObject<{
23
+ id: z.ZodString;
24
+ }, z.core.$strip>;
25
+ export declare const SearchQuerySchema: z.ZodObject<{
26
+ query: z.ZodString;
27
+ }, z.core.$strip>;
28
+ export declare const ItemTypeSchema: z.ZodEnum<{
29
+ artist: "artist";
30
+ album: "album";
31
+ song: "song";
32
+ }>;
33
+ export declare const ItemListTypeSchema: z.ZodEnum<{
34
+ songs: "songs";
35
+ albums: "albums";
36
+ artists: "artists";
37
+ }>;
38
+ export declare const createLimitSchema: (min?: number, max?: number, defaultValue?: number) => z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
39
+ export declare const OffsetSchema: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
40
+ export declare const OrderSchema: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
41
+ ASC: "ASC";
42
+ DESC: "DESC";
43
+ }>>>;
44
+ export declare const SortSchema: z.ZodDefault<z.ZodOptional<z.ZodString>>;
45
+ export declare const OptionalBooleanSchema: z.ZodOptional<z.ZodBoolean>;
46
+ export declare const RequiredBooleanSchema: z.ZodBoolean;
47
+ export declare const RatingSchema: z.ZodNumber;
48
+ export declare const createTimeoutSchema: (min: number, max: number, defaultValue: number) => z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
49
+ export declare const UrlSchema: z.ZodString;
50
+ export declare const StringArraySchema: z.ZodArray<z.ZodString>;
51
+ export declare const OptionalStringArraySchema: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
+ export declare const NonEmptyStringArraySchema: z.ZodArray<z.ZodString>;
53
+ export declare const PlaylistIdSchema: z.ZodObject<{
54
+ id: z.ZodString;
55
+ }, z.core.$strip>;
56
+ export declare const SongIdSchema: z.ZodObject<{
57
+ id: z.ZodString;
58
+ }, z.core.$strip>;
59
+ export declare const ArtistIdSchema: z.ZodObject<{
60
+ id: z.ZodString;
61
+ }, z.core.$strip>;
62
+ export declare const AlbumIdSchema: z.ZodObject<{
63
+ id: z.ZodString;
64
+ }, z.core.$strip>;
65
+ export declare const TagIdSchema: z.ZodObject<{
66
+ id: z.ZodString;
67
+ }, z.core.$strip>;
68
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,QAAQ;;iBAEnB,CAAC;AAIH,eAAO,MAAM,cAAc,GAAI,cAAc,MAAM;;iBAEjD,CAAC;AAGH,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAGH,eAAO,MAAM,cAAc;;;;EAAsC,CAAC;AAClE,eAAO,MAAM,kBAAkB;;;;EAAyC,CAAC;AAIzE,eAAO,MAAM,iBAAiB,GAAI,YAAO,EAAE,YAAS,EAAE,eAAe,MAAM,2DAK1E,CAAC;AAGF,eAAO,MAAM,YAAY,0CAA0C,CAAC;AAGpE,eAAO,MAAM,WAAW;;;IAAoD,CAAC;AAG7E,eAAO,MAAM,UAAU,0CAAwC,CAAC;AAGhE,eAAO,MAAM,qBAAqB,6BAAyB,CAAC;AAC5D,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAGjD,eAAO,MAAM,YAAY,aAA2B,CAAC;AAIrD,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,cAAc,MAAM,6CACnB,CAAC;AAGhE,eAAO,MAAM,SAAS,aAA4C,CAAC;AAGnE,eAAO,MAAM,iBAAiB,yBAAsB,CAAC;AACrD,eAAO,MAAM,yBAAyB,wCAAiC,CAAC;AACxE,eAAO,MAAM,yBAAyB,yBAA8D,CAAC;AAGrG,eAAO,MAAM,gBAAgB;;iBAA6B,CAAC;AAC3D,eAAO,MAAM,YAAY;;iBAAyB,CAAC;AACnD,eAAO,MAAM,cAAc;;iBAA2B,CAAC;AACvD,eAAO,MAAM,aAAa;;iBAA0B,CAAC;AACrD,eAAO,MAAM,WAAW;;iBAAwB,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Navidrome MCP Server - Common Schema Definitions
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { z } from 'zod';
19
+ // Basic ID validation schema
20
+ export const IdSchema = z.object({
21
+ id: z.string().min(1, 'ID is required'),
22
+ });
23
+ // Required ID with custom message
24
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
25
+ export const createIdSchema = (resourceType) => z.object({
26
+ id: z.string().min(1, `${resourceType} ID is required`),
27
+ });
28
+ // Search query schema
29
+ export const SearchQuerySchema = z.object({
30
+ query: z.string().min(1, 'Search query is required'),
31
+ });
32
+ // Item type enums for user preferences
33
+ export const ItemTypeSchema = z.enum(['song', 'album', 'artist']);
34
+ export const ItemListTypeSchema = z.enum(['songs', 'albums', 'artists']);
35
+ // Common limit validation patterns
36
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
37
+ export const createLimitSchema = (min = 1, max = 500, defaultValue) => {
38
+ if (defaultValue !== undefined) {
39
+ return z.number().min(min).max(max).optional().default(defaultValue);
40
+ }
41
+ return z.number().min(min).max(max);
42
+ };
43
+ // Offset schema for pagination
44
+ export const OffsetSchema = z.number().min(0).optional().default(0);
45
+ // Order enum
46
+ export const OrderSchema = z.enum(['ASC', 'DESC']).optional().default('ASC');
47
+ // Common sort fields (can be extended per tool)
48
+ export const SortSchema = z.string().optional().default('name');
49
+ // Boolean flag schema
50
+ export const OptionalBooleanSchema = z.boolean().optional();
51
+ export const RequiredBooleanSchema = z.boolean();
52
+ // Rating validation
53
+ export const RatingSchema = z.number().min(0).max(5);
54
+ // Duration validation for timeouts
55
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
56
+ export const createTimeoutSchema = (min, max, defaultValue) => z.number().min(min).max(max).optional().default(defaultValue);
57
+ // URL validation
58
+ export const UrlSchema = z.string().url('URL must be a valid URL');
59
+ // String array schemas
60
+ export const StringArraySchema = z.array(z.string());
61
+ export const OptionalStringArraySchema = z.array(z.string()).optional();
62
+ export const NonEmptyStringArraySchema = z.array(z.string()).min(1, 'At least one item is required');
63
+ // Common validation schemas for different resource types
64
+ export const PlaylistIdSchema = createIdSchema('Playlist');
65
+ export const SongIdSchema = createIdSchema('Song');
66
+ export const ArtistIdSchema = createIdSchema('Artist');
67
+ export const AlbumIdSchema = createIdSchema('Album');
68
+ export const TagIdSchema = createIdSchema('Tag');
69
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Navidrome MCP Server - Schema Export Index
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export * from './common.js';
19
+ export * from './pagination.js';
20
+ export * from './validation.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Navidrome MCP Server - Schema Export Index
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ // Common schemas
19
+ export * from './common.js';
20
+ // Pagination schemas
21
+ export * from './pagination.js';
22
+ // Validation schemas
23
+ export * from './validation.js';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,iBAAiB;AACjB,cAAc,aAAa,CAAC;AAE5B,qBAAqB;AACrB,cAAc,iBAAiB,CAAC;AAEhC,qBAAqB;AACrB,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Navidrome MCP Server - Pagination Schema Definitions
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { z } from 'zod';
19
+ export declare const createPaginationSchema: (limitDefault: number, maxLimit?: number, sortDefault?: string) => z.ZodObject<{
20
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
21
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
22
+ sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
23
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
24
+ ASC: "ASC";
25
+ DESC: "DESC";
26
+ }>>>;
27
+ }, z.core.$strip>;
28
+ export declare const PlaylistPaginationSchema: z.ZodObject<{
29
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
30
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
31
+ sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
32
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
33
+ ASC: "ASC";
34
+ DESC: "DESC";
35
+ }>>>;
36
+ }, z.core.$strip>;
37
+ export declare const AlbumPaginationSchema: z.ZodObject<{
38
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
39
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
40
+ sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
41
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
42
+ ASC: "ASC";
43
+ DESC: "DESC";
44
+ }>>>;
45
+ }, z.core.$strip>;
46
+ export declare const ArtistPaginationSchema: z.ZodObject<{
47
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
48
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
49
+ sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
50
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
51
+ ASC: "ASC";
52
+ DESC: "DESC";
53
+ }>>>;
54
+ }, z.core.$strip>;
55
+ export declare const SongPaginationSchema: z.ZodObject<{
56
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
57
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
58
+ sort: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
59
+ title: "title";
60
+ artist: "artist";
61
+ album: "album";
62
+ year: "year";
63
+ duration: "duration";
64
+ playCount: "playCount";
65
+ rating: "rating";
66
+ }>>>;
67
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
68
+ ASC: "ASC";
69
+ DESC: "DESC";
70
+ }>>>;
71
+ starred: z.ZodOptional<z.ZodBoolean>;
72
+ }, z.core.$strip>;
73
+ export declare const GenrePaginationSchema: z.ZodObject<{
74
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
75
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
76
+ sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
77
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
78
+ ASC: "ASC";
79
+ DESC: "DESC";
80
+ }>>>;
81
+ }, z.core.$strip>;
82
+ export declare const PlaylistTracksPaginationSchema: z.ZodObject<{
83
+ playlistId: z.ZodString;
84
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
85
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
86
+ format: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
87
+ json: "json";
88
+ m3u: "m3u";
89
+ }>>>;
90
+ }, z.core.$strip>;
91
+ export declare const StarredItemsPaginationSchema: z.ZodObject<{
92
+ type: z.ZodEnum<{
93
+ songs: "songs";
94
+ albums: "albums";
95
+ artists: "artists";
96
+ }>;
97
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
98
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
99
+ }, z.core.$strip>;
100
+ export declare const TopRatedItemsPaginationSchema: z.ZodObject<{
101
+ type: z.ZodEnum<{
102
+ songs: "songs";
103
+ albums: "albums";
104
+ artists: "artists";
105
+ }>;
106
+ minRating: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
107
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
108
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
109
+ }, z.core.$strip>;
110
+ export declare const RecentlyPlayedPaginationSchema: z.ZodObject<{
111
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
112
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
113
+ timeRange: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
114
+ today: "today";
115
+ week: "week";
116
+ month: "month";
117
+ all: "all";
118
+ }>>>;
119
+ }, z.core.$strip>;
120
+ export declare const MostPlayedPaginationSchema: z.ZodObject<{
121
+ type: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
122
+ songs: "songs";
123
+ albums: "albums";
124
+ artists: "artists";
125
+ }>>>;
126
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
127
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
128
+ minPlayCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
129
+ }, z.core.$strip>;
130
+ export declare const TagsPaginationSchema: z.ZodObject<{
131
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
132
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
133
+ sort: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
134
+ songCount: "songCount";
135
+ albumCount: "albumCount";
136
+ tagName: "tagName";
137
+ tagValue: "tagValue";
138
+ }>>>;
139
+ order: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
140
+ ASC: "ASC";
141
+ DESC: "DESC";
142
+ }>>>;
143
+ tagName: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>;
145
+ export declare const SearchPaginationSchema: z.ZodObject<{
146
+ artistCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
147
+ albumCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
148
+ songCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
149
+ }, z.core.$strip>;
150
+ export declare const SimpleSearchPaginationSchema: z.ZodObject<{
151
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
152
+ }, z.core.$strip>;
153
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/schemas/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,sBAAsB,GACjC,cAAc,MAAM,EACpB,iBAAc,EACd,oBAAoB;;;;;;;;iBAOpB,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;iBAIpC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;iBAIjC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;iBAIlC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;iBAQ/B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;iBAIjC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;iBAKzC,CAAC;AAGH,eAAO,MAAM,4BAA4B;;;;;;;;iBAIvC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;iBAKxC,CAAC;AAGH,eAAO,MAAM,8BAA8B;;;;;;;;;iBAIzC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;iBAKrC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAM/B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Navidrome MCP Server - Pagination Schema Definitions
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { z } from 'zod';
19
+ import { DEFAULT_VALUES } from '../constants/defaults.js';
20
+ import { createLimitSchema, OffsetSchema, OrderSchema } from './common.js';
21
+ // Base pagination schema factory
22
+ export const createPaginationSchema = (limitDefault, maxLimit = 500, sortDefault = 'name'
23
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
24
+ ) => z.object({
25
+ limit: createLimitSchema(1, maxLimit, limitDefault),
26
+ offset: OffsetSchema,
27
+ sort: z.string().optional().default(sortDefault),
28
+ order: OrderSchema,
29
+ });
30
+ // Specific pagination schemas for different resources
31
+ export const PlaylistPaginationSchema = createPaginationSchema(DEFAULT_VALUES.PLAYLISTS_LIMIT, 500, 'name');
32
+ export const AlbumPaginationSchema = createPaginationSchema(DEFAULT_VALUES.ALBUMS_LIMIT, 500, 'name');
33
+ export const ArtistPaginationSchema = createPaginationSchema(DEFAULT_VALUES.ALBUMS_LIMIT, // Use ALBUMS_LIMIT for artists as well
34
+ 500, 'name');
35
+ export const SongPaginationSchema = z.object({
36
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.SONGS_LIMIT),
37
+ offset: OffsetSchema,
38
+ sort: z.enum(['title', 'artist', 'album', 'year', 'duration', 'playCount', 'rating'])
39
+ .optional()
40
+ .default('title'),
41
+ order: OrderSchema,
42
+ starred: z.boolean().optional(),
43
+ });
44
+ export const GenrePaginationSchema = createPaginationSchema(DEFAULT_VALUES.ALBUMS_LIMIT, // Use ALBUMS_LIMIT for genres as well
45
+ 500, 'name');
46
+ export const PlaylistTracksPaginationSchema = z.object({
47
+ playlistId: z.string().min(1, 'Playlist ID is required'),
48
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.PLAYLIST_TRACKS_LIMIT),
49
+ offset: OffsetSchema,
50
+ format: z.enum(['json', 'm3u']).optional().default('json'),
51
+ });
52
+ // User preferences pagination
53
+ export const StarredItemsPaginationSchema = z.object({
54
+ type: z.enum(['songs', 'albums', 'artists']),
55
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.STARRED_ITEMS_LIMIT),
56
+ offset: OffsetSchema,
57
+ });
58
+ export const TopRatedItemsPaginationSchema = z.object({
59
+ type: z.enum(['songs', 'albums', 'artists']),
60
+ minRating: z.number().min(1).max(5).optional().default(4),
61
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.TOP_RATED_LIMIT),
62
+ offset: OffsetSchema,
63
+ });
64
+ // Listening history pagination
65
+ export const RecentlyPlayedPaginationSchema = z.object({
66
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.RECENTLY_PLAYED_LIMIT),
67
+ offset: OffsetSchema,
68
+ timeRange: z.enum(['today', 'week', 'month', 'all']).optional().default('all'),
69
+ });
70
+ export const MostPlayedPaginationSchema = z.object({
71
+ type: z.enum(['songs', 'albums', 'artists']).optional().default('songs'),
72
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.MOST_PLAYED_LIMIT),
73
+ offset: OffsetSchema,
74
+ minPlayCount: z.number().min(1).optional().default(1),
75
+ });
76
+ // Tag pagination
77
+ export const TagsPaginationSchema = z.object({
78
+ limit: createLimitSchema(1, 500, DEFAULT_VALUES.TAGS_LIMIT),
79
+ offset: OffsetSchema,
80
+ sort: z.enum(['tagName', 'tagValue', 'albumCount', 'songCount']).optional().default('tagName'),
81
+ order: OrderSchema,
82
+ tagName: z.string().optional(),
83
+ });
84
+ // Search pagination (smaller limits for performance)
85
+ export const SearchPaginationSchema = z.object({
86
+ artistCount: z.number().min(0).max(100).optional().default(DEFAULT_VALUES.SEARCH_ALL_LIMIT),
87
+ albumCount: z.number().min(0).max(100).optional().default(DEFAULT_VALUES.SEARCH_ALL_LIMIT),
88
+ songCount: z.number().min(0).max(100).optional().default(DEFAULT_VALUES.SEARCH_ALL_LIMIT),
89
+ });
90
+ export const SimpleSearchPaginationSchema = z.object({
91
+ limit: createLimitSchema(1, 100, DEFAULT_VALUES.SEARCH_LIMIT),
92
+ });
93
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/schemas/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Navidrome MCP Server - Validation Schema Definitions
3
+ * Copyright (C) 2025
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { z } from 'zod';
19
+ export declare const StarItemSchema: z.ZodObject<{
20
+ id: z.ZodString;
21
+ type: z.ZodEnum<{
22
+ artist: "artist";
23
+ album: "album";
24
+ song: "song";
25
+ }>;
26
+ }, z.core.$strip>;
27
+ export declare const SetRatingSchema: z.ZodObject<{
28
+ id: z.ZodString;
29
+ type: z.ZodEnum<{
30
+ artist: "artist";
31
+ album: "album";
32
+ song: "song";
33
+ }>;
34
+ rating: z.ZodNumber;
35
+ }, z.core.$strip>;
36
+ export declare const CreatePlaylistSchema: z.ZodObject<{
37
+ name: z.ZodString;
38
+ comment: z.ZodOptional<z.ZodString>;
39
+ public: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
40
+ }, z.core.$strip>;
41
+ export declare const UpdatePlaylistSchema: z.ZodObject<{
42
+ id: z.ZodString;
43
+ name: z.ZodOptional<z.ZodString>;
44
+ comment: z.ZodOptional<z.ZodString>;
45
+ public: z.ZodOptional<z.ZodBoolean>;
46
+ }, z.core.$strip>;
47
+ export declare const AddTracksToPlaylistSchema: z.ZodObject<{
48
+ playlistId: z.ZodString;
49
+ ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
50
+ albumIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ artistIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
+ discs: z.ZodOptional<z.ZodArray<z.ZodObject<{
53
+ albumId: z.ZodString;
54
+ discNumber: z.ZodNumber;
55
+ }, z.core.$strip>>>;
56
+ }, z.core.$strip>;
57
+ export declare const RemoveTracksFromPlaylistSchema: z.ZodObject<{
58
+ playlistId: z.ZodString;
59
+ trackIds: z.ZodArray<z.ZodString>;
60
+ }, z.core.$strip>;
61
+ export declare const ReorderPlaylistTrackSchema: z.ZodObject<{
62
+ playlistId: z.ZodString;
63
+ trackId: z.ZodString;
64
+ insert_before: z.ZodNumber;
65
+ }, z.core.$strip>;
66
+ export declare const SetQueueSchema: z.ZodObject<{
67
+ songIds: z.ZodArray<z.ZodString>;
68
+ current: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
69
+ position: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
70
+ }, z.core.$strip>;
71
+ export declare const SearchAllSchema: z.ZodObject<{
72
+ query: z.ZodString;
73
+ artistCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
74
+ albumCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
75
+ songCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
76
+ }, z.core.$strip>;
77
+ export declare const SearchSongsSchema: z.ZodObject<{
78
+ query: z.ZodString;
79
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
80
+ }, z.core.$strip>;
81
+ export declare const SearchAlbumsSchema: z.ZodObject<{
82
+ query: z.ZodString;
83
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
84
+ }, z.core.$strip>;
85
+ export declare const SearchArtistsSchema: z.ZodObject<{
86
+ query: z.ZodString;
87
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
88
+ }, z.core.$strip>;
89
+ export declare const SearchByTagsSchema: z.ZodObject<{
90
+ tagName: z.ZodString;
91
+ tagValue: z.ZodOptional<z.ZodString>;
92
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
93
+ }, z.core.$strip>;
94
+ export declare const TagDistributionSchema: z.ZodObject<{
95
+ tagNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
97
+ distributionLimit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
98
+ }, z.core.$strip>;
99
+ export declare const UniqueTagsSchema: z.ZodObject<{
100
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
101
+ minUsage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
102
+ }, z.core.$strip>;
103
+ export declare const ValidateRadioStreamSchema: z.ZodObject<{
104
+ url: z.ZodString;
105
+ timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
106
+ followRedirects: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
107
+ }, z.core.$strip>;
108
+ export declare const SimilarArtistsSchema: z.ZodObject<{
109
+ artist: z.ZodString;
110
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
111
+ }, z.core.$strip>;
112
+ export declare const SimilarTracksSchema: z.ZodObject<{
113
+ artist: z.ZodString;
114
+ track: z.ZodString;
115
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
116
+ }, z.core.$strip>;
117
+ export declare const ArtistInfoSchema: z.ZodObject<{
118
+ artist: z.ZodString;
119
+ lang: z.ZodDefault<z.ZodOptional<z.ZodString>>;
120
+ }, z.core.$strip>;
121
+ export declare const TopTracksByArtistSchema: z.ZodObject<{
122
+ artist: z.ZodString;
123
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
124
+ }, z.core.$strip>;
125
+ export declare const TrendingMusicSchema: z.ZodObject<{
126
+ type: z.ZodEnum<{
127
+ artists: "artists";
128
+ tracks: "tracks";
129
+ tags: "tags";
130
+ }>;
131
+ limit: z.ZodNumber | z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
132
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
133
+ }, z.core.$strip>;
134
+ export declare const GetLyricsSchema: z.ZodObject<{
135
+ title: z.ZodString;
136
+ artist: z.ZodString;
137
+ album: z.ZodOptional<z.ZodString>;
138
+ durationMs: z.ZodOptional<z.ZodNumber>;
139
+ id: z.ZodOptional<z.ZodString>;
140
+ }, z.core.$strip>;
141
+ export declare const TestConnectionSchema: z.ZodObject<{
142
+ includeServerInfo: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
143
+ }, z.core.$strip>;
144
+ export declare const GetSongPlaylistsSchema: z.ZodObject<{
145
+ songId: z.ZodString;
146
+ }, z.core.$strip>;
147
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/schemas/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,eAAO,MAAM,cAAc;;;;;;;iBAGzB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;iBAI1B,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;iBASpC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;iBAGzC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;iBAIrC,CAAC;AAGH,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAE5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAE7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;iBAE9B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;iBAI9B,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;iBAM1B,CAAC;AAGH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC"}