tsarr 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/clients/lidarr.js +62 -45
  2. package/dist/clients/prowlarr.js +62 -45
  3. package/dist/clients/radarr.d.ts +57 -0
  4. package/dist/clients/radarr.d.ts.map +1 -1
  5. package/dist/clients/radarr.js +131 -45
  6. package/dist/clients/readarr.js +62 -45
  7. package/dist/clients/sonarr.js +62 -45
  8. package/dist/generated/lidarr/client/client.gen.d.ts.map +1 -1
  9. package/dist/generated/lidarr/client/index.d.ts +1 -0
  10. package/dist/generated/lidarr/client/index.d.ts.map +1 -1
  11. package/dist/generated/lidarr/client/utils.gen.d.ts +6 -11
  12. package/dist/generated/lidarr/client/utils.gen.d.ts.map +1 -1
  13. package/dist/generated/lidarr/client.gen.d.ts +3 -3
  14. package/dist/generated/lidarr/client.gen.d.ts.map +1 -1
  15. package/dist/generated/lidarr/core/queryKeySerializer.gen.d.ts +19 -0
  16. package/dist/generated/lidarr/core/queryKeySerializer.gen.d.ts.map +1 -0
  17. package/dist/generated/lidarr/core/utils.gen.d.ts +6 -1
  18. package/dist/generated/lidarr/core/utils.gen.d.ts.map +1 -1
  19. package/dist/generated/lidarr/index.d.ts +1 -1
  20. package/dist/generated/lidarr/index.d.ts.map +1 -1
  21. package/dist/generated/lidarr/sdk.gen.d.ts +3 -3
  22. package/dist/generated/lidarr/sdk.gen.d.ts.map +1 -1
  23. package/dist/generated/lidarr/types.gen.d.ts +7 -4
  24. package/dist/generated/lidarr/types.gen.d.ts.map +1 -1
  25. package/dist/generated/prowlarr/client/client.gen.d.ts.map +1 -1
  26. package/dist/generated/prowlarr/client/index.d.ts +1 -0
  27. package/dist/generated/prowlarr/client/index.d.ts.map +1 -1
  28. package/dist/generated/prowlarr/client/utils.gen.d.ts +6 -11
  29. package/dist/generated/prowlarr/client/utils.gen.d.ts.map +1 -1
  30. package/dist/generated/prowlarr/client.gen.d.ts +3 -3
  31. package/dist/generated/prowlarr/client.gen.d.ts.map +1 -1
  32. package/dist/generated/prowlarr/core/queryKeySerializer.gen.d.ts +19 -0
  33. package/dist/generated/prowlarr/core/queryKeySerializer.gen.d.ts.map +1 -0
  34. package/dist/generated/prowlarr/core/utils.gen.d.ts +6 -1
  35. package/dist/generated/prowlarr/core/utils.gen.d.ts.map +1 -1
  36. package/dist/generated/prowlarr/index.d.ts +1 -1
  37. package/dist/generated/prowlarr/index.d.ts.map +1 -1
  38. package/dist/generated/prowlarr/sdk.gen.d.ts +3 -3
  39. package/dist/generated/prowlarr/sdk.gen.d.ts.map +1 -1
  40. package/dist/generated/prowlarr/types.gen.d.ts +3 -3
  41. package/dist/generated/prowlarr/types.gen.d.ts.map +1 -1
  42. package/dist/generated/radarr/client/client.gen.d.ts.map +1 -1
  43. package/dist/generated/radarr/client/index.d.ts +1 -0
  44. package/dist/generated/radarr/client/index.d.ts.map +1 -1
  45. package/dist/generated/radarr/client/utils.gen.d.ts +6 -11
  46. package/dist/generated/radarr/client/utils.gen.d.ts.map +1 -1
  47. package/dist/generated/radarr/client.gen.d.ts +3 -3
  48. package/dist/generated/radarr/client.gen.d.ts.map +1 -1
  49. package/dist/generated/radarr/core/queryKeySerializer.gen.d.ts +19 -0
  50. package/dist/generated/radarr/core/queryKeySerializer.gen.d.ts.map +1 -0
  51. package/dist/generated/radarr/core/utils.gen.d.ts +6 -1
  52. package/dist/generated/radarr/core/utils.gen.d.ts.map +1 -1
  53. package/dist/generated/radarr/index.d.ts +1 -1
  54. package/dist/generated/radarr/index.d.ts.map +1 -1
  55. package/dist/generated/radarr/sdk.gen.d.ts +3 -3
  56. package/dist/generated/radarr/sdk.gen.d.ts.map +1 -1
  57. package/dist/generated/radarr/types.gen.d.ts +3 -3
  58. package/dist/generated/radarr/types.gen.d.ts.map +1 -1
  59. package/dist/generated/readarr/client/client.gen.d.ts.map +1 -1
  60. package/dist/generated/readarr/client/index.d.ts +1 -0
  61. package/dist/generated/readarr/client/index.d.ts.map +1 -1
  62. package/dist/generated/readarr/client/utils.gen.d.ts +6 -11
  63. package/dist/generated/readarr/client/utils.gen.d.ts.map +1 -1
  64. package/dist/generated/readarr/client.gen.d.ts +3 -3
  65. package/dist/generated/readarr/client.gen.d.ts.map +1 -1
  66. package/dist/generated/readarr/core/queryKeySerializer.gen.d.ts +19 -0
  67. package/dist/generated/readarr/core/queryKeySerializer.gen.d.ts.map +1 -0
  68. package/dist/generated/readarr/core/utils.gen.d.ts +6 -1
  69. package/dist/generated/readarr/core/utils.gen.d.ts.map +1 -1
  70. package/dist/generated/readarr/index.d.ts +1 -1
  71. package/dist/generated/readarr/index.d.ts.map +1 -1
  72. package/dist/generated/readarr/sdk.gen.d.ts +3 -3
  73. package/dist/generated/readarr/sdk.gen.d.ts.map +1 -1
  74. package/dist/generated/readarr/types.gen.d.ts +3 -3
  75. package/dist/generated/readarr/types.gen.d.ts.map +1 -1
  76. package/dist/generated/sonarr/client/client.gen.d.ts.map +1 -1
  77. package/dist/generated/sonarr/client/index.d.ts +1 -0
  78. package/dist/generated/sonarr/client/index.d.ts.map +1 -1
  79. package/dist/generated/sonarr/client/utils.gen.d.ts +6 -11
  80. package/dist/generated/sonarr/client/utils.gen.d.ts.map +1 -1
  81. package/dist/generated/sonarr/client.gen.d.ts +3 -3
  82. package/dist/generated/sonarr/client.gen.d.ts.map +1 -1
  83. package/dist/generated/sonarr/core/queryKeySerializer.gen.d.ts +19 -0
  84. package/dist/generated/sonarr/core/queryKeySerializer.gen.d.ts.map +1 -0
  85. package/dist/generated/sonarr/core/utils.gen.d.ts +6 -1
  86. package/dist/generated/sonarr/core/utils.gen.d.ts.map +1 -1
  87. package/dist/generated/sonarr/index.d.ts +1 -1
  88. package/dist/generated/sonarr/index.d.ts.map +1 -1
  89. package/dist/generated/sonarr/sdk.gen.d.ts +3 -3
  90. package/dist/generated/sonarr/sdk.gen.d.ts.map +1 -1
  91. package/dist/generated/sonarr/types.gen.d.ts +3 -3
  92. package/dist/generated/sonarr/types.gen.d.ts.map +1 -1
  93. package/dist/index.js +16 -16
  94. package/dist/tsarr-1.9.0.tgz +0 -0
  95. package/package.json +8 -8
  96. package/dist/tsarr-1.8.0.tgz +0 -0
@@ -187,21 +187,6 @@ var createSseClient = ({
187
187
  return { stream };
188
188
  };
189
189
 
190
- // src/generated/radarr/core/auth.gen.ts
191
- var getAuthToken = async (auth, callback) => {
192
- const token = typeof callback === "function" ? await callback(auth) : callback;
193
- if (!token) {
194
- return;
195
- }
196
- if (auth.scheme === "bearer") {
197
- return `Bearer ${token}`;
198
- }
199
- if (auth.scheme === "basic") {
200
- return `Basic ${btoa(token)}`;
201
- }
202
- return token;
203
- };
204
-
205
190
  // src/generated/radarr/core/pathSerializer.gen.ts
206
191
  var separatorArrayExplode = (style) => {
207
192
  switch (style) {
@@ -399,6 +384,36 @@ var getUrl = ({
399
384
  }
400
385
  return url;
401
386
  };
387
+ function getValidRequestBody(options) {
388
+ const hasBody = options.body !== undefined;
389
+ const isSerializedBody = hasBody && options.bodySerializer;
390
+ if (isSerializedBody) {
391
+ if ("serializedBody" in options) {
392
+ const hasSerializedBody = options.serializedBody !== undefined && options.serializedBody !== "";
393
+ return hasSerializedBody ? options.serializedBody : null;
394
+ }
395
+ return options.body !== "" ? options.body : null;
396
+ }
397
+ if (hasBody) {
398
+ return options.body;
399
+ }
400
+ return;
401
+ }
402
+
403
+ // src/generated/radarr/core/auth.gen.ts
404
+ var getAuthToken = async (auth, callback) => {
405
+ const token = typeof callback === "function" ? await callback(auth) : callback;
406
+ if (!token) {
407
+ return;
408
+ }
409
+ if (auth.scheme === "bearer") {
410
+ return `Bearer ${token}`;
411
+ }
412
+ if (auth.scheme === "basic") {
413
+ return `Basic ${btoa(token)}`;
414
+ }
415
+ return token;
416
+ };
402
417
 
403
418
  // src/generated/radarr/client/utils.gen.ts
404
419
  var createQuerySerializer = ({
@@ -527,13 +542,20 @@ var mergeConfigs = (a, b) => {
527
542
  config.headers = mergeHeaders(a.headers, b.headers);
528
543
  return config;
529
544
  };
545
+ var headersEntries = (headers) => {
546
+ const entries = [];
547
+ headers.forEach((value, key) => {
548
+ entries.push([key, value]);
549
+ });
550
+ return entries;
551
+ };
530
552
  var mergeHeaders = (...headers) => {
531
553
  const mergedHeaders = new Headers;
532
554
  for (const header of headers) {
533
- if (!header || typeof header !== "object") {
555
+ if (!header) {
534
556
  continue;
535
557
  }
536
- const iterator = header instanceof Headers ? header.entries() : Object.entries(header);
558
+ const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
537
559
  for (const [key, value] of iterator) {
538
560
  if (value === null) {
539
561
  mergedHeaders.delete(key);
@@ -550,42 +572,37 @@ var mergeHeaders = (...headers) => {
550
572
  };
551
573
 
552
574
  class Interceptors {
553
- _fns;
554
- constructor() {
555
- this._fns = [];
556
- }
575
+ fns = [];
557
576
  clear() {
558
- this._fns = [];
577
+ this.fns = [];
559
578
  }
560
- getInterceptorIndex(id) {
561
- if (typeof id === "number") {
562
- return this._fns[id] ? id : -1;
563
- } else {
564
- return this._fns.indexOf(id);
579
+ eject(id) {
580
+ const index = this.getInterceptorIndex(id);
581
+ if (this.fns[index]) {
582
+ this.fns[index] = null;
565
583
  }
566
584
  }
567
585
  exists(id) {
568
586
  const index = this.getInterceptorIndex(id);
569
- return !!this._fns[index];
587
+ return Boolean(this.fns[index]);
570
588
  }
571
- eject(id) {
572
- const index = this.getInterceptorIndex(id);
573
- if (this._fns[index]) {
574
- this._fns[index] = null;
589
+ getInterceptorIndex(id) {
590
+ if (typeof id === "number") {
591
+ return this.fns[id] ? id : -1;
575
592
  }
593
+ return this.fns.indexOf(id);
576
594
  }
577
595
  update(id, fn) {
578
596
  const index = this.getInterceptorIndex(id);
579
- if (this._fns[index]) {
580
- this._fns[index] = fn;
597
+ if (this.fns[index]) {
598
+ this.fns[index] = fn;
581
599
  return id;
582
- } else {
583
- return false;
584
600
  }
601
+ return false;
585
602
  }
586
603
  use(fn) {
587
- this._fns = [...this._fns, fn];
588
- return this._fns.length - 1;
604
+ this.fns.push(fn);
605
+ return this.fns.length - 1;
589
606
  }
590
607
  }
591
608
  var createInterceptors = () => ({
@@ -641,10 +658,10 @@ var createClient = (config = {}) => {
641
658
  if (opts.requestValidator) {
642
659
  await opts.requestValidator(opts);
643
660
  }
644
- if (opts.body && opts.bodySerializer) {
661
+ if (opts.body !== undefined && opts.bodySerializer) {
645
662
  opts.serializedBody = opts.bodySerializer(opts.body);
646
663
  }
647
- if (opts.serializedBody === undefined || opts.serializedBody === "") {
664
+ if (opts.body === undefined || opts.serializedBody === "") {
648
665
  opts.headers.delete("Content-Type");
649
666
  }
650
667
  const url = buildUrl(opts);
@@ -655,17 +672,17 @@ var createClient = (config = {}) => {
655
672
  const requestInit = {
656
673
  redirect: "follow",
657
674
  ...opts,
658
- body: opts.serializedBody
675
+ body: getValidRequestBody(opts)
659
676
  };
660
677
  let request2 = new Request(url, requestInit);
661
- for (const fn of interceptors.request._fns) {
678
+ for (const fn of interceptors.request.fns) {
662
679
  if (fn) {
663
680
  request2 = await fn(request2, opts);
664
681
  }
665
682
  }
666
683
  const _fetch = opts.fetch;
667
684
  let response = await _fetch(request2);
668
- for (const fn of interceptors.response._fns) {
685
+ for (const fn of interceptors.response.fns) {
669
686
  if (fn) {
670
687
  response = await fn(response, request2, opts);
671
688
  }
@@ -735,7 +752,7 @@ var createClient = (config = {}) => {
735
752
  } catch {}
736
753
  const error = jsonError ?? textError;
737
754
  let finalError = error;
738
- for (const fn of interceptors.error._fns) {
755
+ for (const fn of interceptors.error.fns) {
739
756
  if (fn) {
740
757
  finalError = await fn(error, response, request2, opts);
741
758
  }
@@ -759,7 +776,7 @@ var createClient = (config = {}) => {
759
776
  method,
760
777
  onRequest: async (url2, init) => {
761
778
  let request2 = new Request(url2, init);
762
- for (const fn of interceptors.request._fns) {
779
+ for (const fn of interceptors.request.fns) {
763
780
  if (fn) {
764
781
  request2 = await fn(request2, opts);
765
782
  }
@@ -1990,6 +2007,40 @@ var postApiV3MovieImport = (options) => {
1990
2007
  }
1991
2008
  });
1992
2009
  };
2010
+ var getApiV3MovieLookupTmdb = (options) => {
2011
+ return (options?.client ?? client).get({
2012
+ security: [
2013
+ {
2014
+ name: "X-Api-Key",
2015
+ type: "apiKey"
2016
+ },
2017
+ {
2018
+ in: "query",
2019
+ name: "apikey",
2020
+ type: "apiKey"
2021
+ }
2022
+ ],
2023
+ url: "/api/v3/movie/lookup/tmdb",
2024
+ ...options
2025
+ });
2026
+ };
2027
+ var getApiV3MovieLookupImdb = (options) => {
2028
+ return (options?.client ?? client).get({
2029
+ security: [
2030
+ {
2031
+ name: "X-Api-Key",
2032
+ type: "apiKey"
2033
+ },
2034
+ {
2035
+ in: "query",
2036
+ name: "apikey",
2037
+ type: "apiKey"
2038
+ }
2039
+ ],
2040
+ url: "/api/v3/movie/lookup/imdb",
2041
+ ...options
2042
+ });
2043
+ };
1993
2044
  var getApiV3MovieLookup = (options) => {
1994
2045
  return (options?.client ?? client).get({
1995
2046
  security: [
@@ -2787,6 +2838,41 @@ class RadarrClient {
2787
2838
  async searchMovies(term) {
2788
2839
  return getApiV3MovieLookup({ query: { term } });
2789
2840
  }
2841
+ async lookupMovieByTmdbId(tmdbId) {
2842
+ return getApiV3MovieLookupTmdb({ query: { tmdbId } });
2843
+ }
2844
+ async lookupMovieByImdbId(imdbId) {
2845
+ return getApiV3MovieLookupImdb({ query: { imdbId } });
2846
+ }
2847
+ async lookupMovieById(id) {
2848
+ const parts = id.split(":");
2849
+ if (parts.length !== 2) {
2850
+ throw new Error('Invalid ID format. Must contain exactly one colon. Use "tmdb:123" or "imdb:tt0175142"');
2851
+ }
2852
+ const [providerRaw, value] = parts;
2853
+ if (!providerRaw || !value) {
2854
+ throw new Error('Invalid ID format. Both provider and value must be non-empty. Use "tmdb:123" or "imdb:tt0175142"');
2855
+ }
2856
+ const provider = providerRaw.toLowerCase();
2857
+ if (provider !== "tmdb" && provider !== "imdb") {
2858
+ throw new Error(`Invalid provider "${providerRaw}". Must be either "tmdb" or "imdb"`);
2859
+ }
2860
+ if (provider === "tmdb") {
2861
+ const tmdbId = Number.parseInt(value, 10);
2862
+ if (Number.isNaN(tmdbId)) {
2863
+ throw new Error(`Invalid TMDB ID "${value}". Must be a numeric value`);
2864
+ }
2865
+ if (!Number.isInteger(tmdbId) || tmdbId <= 0) {
2866
+ throw new Error(`Invalid TMDB ID "${value}". Must be a positive integer`);
2867
+ }
2868
+ return getApiV3MovieLookupTmdb({ query: { tmdbId } });
2869
+ }
2870
+ const imdbPattern = /^tt\d+$/;
2871
+ if (!imdbPattern.test(value)) {
2872
+ throw new Error(`Invalid IMDB ID "${value}". Must match pattern "tt" followed by digits (e.g., "tt0175142")`);
2873
+ }
2874
+ return getApiV3MovieLookupImdb({ query: { imdbId: value } });
2875
+ }
2790
2876
  async runCommand(command) {
2791
2877
  return postApiV3Command({ body: command });
2792
2878
  }
@@ -187,21 +187,6 @@ var createSseClient = ({
187
187
  return { stream };
188
188
  };
189
189
 
190
- // src/generated/readarr/core/auth.gen.ts
191
- var getAuthToken = async (auth, callback) => {
192
- const token = typeof callback === "function" ? await callback(auth) : callback;
193
- if (!token) {
194
- return;
195
- }
196
- if (auth.scheme === "bearer") {
197
- return `Bearer ${token}`;
198
- }
199
- if (auth.scheme === "basic") {
200
- return `Basic ${btoa(token)}`;
201
- }
202
- return token;
203
- };
204
-
205
190
  // src/generated/readarr/core/pathSerializer.gen.ts
206
191
  var separatorArrayExplode = (style) => {
207
192
  switch (style) {
@@ -399,6 +384,36 @@ var getUrl = ({
399
384
  }
400
385
  return url;
401
386
  };
387
+ function getValidRequestBody(options) {
388
+ const hasBody = options.body !== undefined;
389
+ const isSerializedBody = hasBody && options.bodySerializer;
390
+ if (isSerializedBody) {
391
+ if ("serializedBody" in options) {
392
+ const hasSerializedBody = options.serializedBody !== undefined && options.serializedBody !== "";
393
+ return hasSerializedBody ? options.serializedBody : null;
394
+ }
395
+ return options.body !== "" ? options.body : null;
396
+ }
397
+ if (hasBody) {
398
+ return options.body;
399
+ }
400
+ return;
401
+ }
402
+
403
+ // src/generated/readarr/core/auth.gen.ts
404
+ var getAuthToken = async (auth, callback) => {
405
+ const token = typeof callback === "function" ? await callback(auth) : callback;
406
+ if (!token) {
407
+ return;
408
+ }
409
+ if (auth.scheme === "bearer") {
410
+ return `Bearer ${token}`;
411
+ }
412
+ if (auth.scheme === "basic") {
413
+ return `Basic ${btoa(token)}`;
414
+ }
415
+ return token;
416
+ };
402
417
 
403
418
  // src/generated/readarr/client/utils.gen.ts
404
419
  var createQuerySerializer = ({
@@ -527,13 +542,20 @@ var mergeConfigs = (a, b) => {
527
542
  config.headers = mergeHeaders(a.headers, b.headers);
528
543
  return config;
529
544
  };
545
+ var headersEntries = (headers) => {
546
+ const entries = [];
547
+ headers.forEach((value, key) => {
548
+ entries.push([key, value]);
549
+ });
550
+ return entries;
551
+ };
530
552
  var mergeHeaders = (...headers) => {
531
553
  const mergedHeaders = new Headers;
532
554
  for (const header of headers) {
533
- if (!header || typeof header !== "object") {
555
+ if (!header) {
534
556
  continue;
535
557
  }
536
- const iterator = header instanceof Headers ? header.entries() : Object.entries(header);
558
+ const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
537
559
  for (const [key, value] of iterator) {
538
560
  if (value === null) {
539
561
  mergedHeaders.delete(key);
@@ -550,42 +572,37 @@ var mergeHeaders = (...headers) => {
550
572
  };
551
573
 
552
574
  class Interceptors {
553
- _fns;
554
- constructor() {
555
- this._fns = [];
556
- }
575
+ fns = [];
557
576
  clear() {
558
- this._fns = [];
577
+ this.fns = [];
559
578
  }
560
- getInterceptorIndex(id) {
561
- if (typeof id === "number") {
562
- return this._fns[id] ? id : -1;
563
- } else {
564
- return this._fns.indexOf(id);
579
+ eject(id) {
580
+ const index = this.getInterceptorIndex(id);
581
+ if (this.fns[index]) {
582
+ this.fns[index] = null;
565
583
  }
566
584
  }
567
585
  exists(id) {
568
586
  const index = this.getInterceptorIndex(id);
569
- return !!this._fns[index];
587
+ return Boolean(this.fns[index]);
570
588
  }
571
- eject(id) {
572
- const index = this.getInterceptorIndex(id);
573
- if (this._fns[index]) {
574
- this._fns[index] = null;
589
+ getInterceptorIndex(id) {
590
+ if (typeof id === "number") {
591
+ return this.fns[id] ? id : -1;
575
592
  }
593
+ return this.fns.indexOf(id);
576
594
  }
577
595
  update(id, fn) {
578
596
  const index = this.getInterceptorIndex(id);
579
- if (this._fns[index]) {
580
- this._fns[index] = fn;
597
+ if (this.fns[index]) {
598
+ this.fns[index] = fn;
581
599
  return id;
582
- } else {
583
- return false;
584
600
  }
601
+ return false;
585
602
  }
586
603
  use(fn) {
587
- this._fns = [...this._fns, fn];
588
- return this._fns.length - 1;
604
+ this.fns.push(fn);
605
+ return this.fns.length - 1;
589
606
  }
590
607
  }
591
608
  var createInterceptors = () => ({
@@ -641,10 +658,10 @@ var createClient = (config = {}) => {
641
658
  if (opts.requestValidator) {
642
659
  await opts.requestValidator(opts);
643
660
  }
644
- if (opts.body && opts.bodySerializer) {
661
+ if (opts.body !== undefined && opts.bodySerializer) {
645
662
  opts.serializedBody = opts.bodySerializer(opts.body);
646
663
  }
647
- if (opts.serializedBody === undefined || opts.serializedBody === "") {
664
+ if (opts.body === undefined || opts.serializedBody === "") {
648
665
  opts.headers.delete("Content-Type");
649
666
  }
650
667
  const url = buildUrl(opts);
@@ -655,17 +672,17 @@ var createClient = (config = {}) => {
655
672
  const requestInit = {
656
673
  redirect: "follow",
657
674
  ...opts,
658
- body: opts.serializedBody
675
+ body: getValidRequestBody(opts)
659
676
  };
660
677
  let request2 = new Request(url, requestInit);
661
- for (const fn of interceptors.request._fns) {
678
+ for (const fn of interceptors.request.fns) {
662
679
  if (fn) {
663
680
  request2 = await fn(request2, opts);
664
681
  }
665
682
  }
666
683
  const _fetch = opts.fetch;
667
684
  let response = await _fetch(request2);
668
- for (const fn of interceptors.response._fns) {
685
+ for (const fn of interceptors.response.fns) {
669
686
  if (fn) {
670
687
  response = await fn(response, request2, opts);
671
688
  }
@@ -735,7 +752,7 @@ var createClient = (config = {}) => {
735
752
  } catch {}
736
753
  const error = jsonError ?? textError;
737
754
  let finalError = error;
738
- for (const fn of interceptors.error._fns) {
755
+ for (const fn of interceptors.error.fns) {
739
756
  if (fn) {
740
757
  finalError = await fn(error, response, request2, opts);
741
758
  }
@@ -759,7 +776,7 @@ var createClient = (config = {}) => {
759
776
  method,
760
777
  onRequest: async (url2, init) => {
761
778
  let request2 = new Request(url2, init);
762
- for (const fn of interceptors.request._fns) {
779
+ for (const fn of interceptors.request.fns) {
763
780
  if (fn) {
764
781
  request2 = await fn(request2, opts);
765
782
  }
@@ -187,21 +187,6 @@ var createSseClient = ({
187
187
  return { stream };
188
188
  };
189
189
 
190
- // src/generated/sonarr/core/auth.gen.ts
191
- var getAuthToken = async (auth, callback) => {
192
- const token = typeof callback === "function" ? await callback(auth) : callback;
193
- if (!token) {
194
- return;
195
- }
196
- if (auth.scheme === "bearer") {
197
- return `Bearer ${token}`;
198
- }
199
- if (auth.scheme === "basic") {
200
- return `Basic ${btoa(token)}`;
201
- }
202
- return token;
203
- };
204
-
205
190
  // src/generated/sonarr/core/pathSerializer.gen.ts
206
191
  var separatorArrayExplode = (style) => {
207
192
  switch (style) {
@@ -399,6 +384,36 @@ var getUrl = ({
399
384
  }
400
385
  return url;
401
386
  };
387
+ function getValidRequestBody(options) {
388
+ const hasBody = options.body !== undefined;
389
+ const isSerializedBody = hasBody && options.bodySerializer;
390
+ if (isSerializedBody) {
391
+ if ("serializedBody" in options) {
392
+ const hasSerializedBody = options.serializedBody !== undefined && options.serializedBody !== "";
393
+ return hasSerializedBody ? options.serializedBody : null;
394
+ }
395
+ return options.body !== "" ? options.body : null;
396
+ }
397
+ if (hasBody) {
398
+ return options.body;
399
+ }
400
+ return;
401
+ }
402
+
403
+ // src/generated/sonarr/core/auth.gen.ts
404
+ var getAuthToken = async (auth, callback) => {
405
+ const token = typeof callback === "function" ? await callback(auth) : callback;
406
+ if (!token) {
407
+ return;
408
+ }
409
+ if (auth.scheme === "bearer") {
410
+ return `Bearer ${token}`;
411
+ }
412
+ if (auth.scheme === "basic") {
413
+ return `Basic ${btoa(token)}`;
414
+ }
415
+ return token;
416
+ };
402
417
 
403
418
  // src/generated/sonarr/client/utils.gen.ts
404
419
  var createQuerySerializer = ({
@@ -527,13 +542,20 @@ var mergeConfigs = (a, b) => {
527
542
  config.headers = mergeHeaders(a.headers, b.headers);
528
543
  return config;
529
544
  };
545
+ var headersEntries = (headers) => {
546
+ const entries = [];
547
+ headers.forEach((value, key) => {
548
+ entries.push([key, value]);
549
+ });
550
+ return entries;
551
+ };
530
552
  var mergeHeaders = (...headers) => {
531
553
  const mergedHeaders = new Headers;
532
554
  for (const header of headers) {
533
- if (!header || typeof header !== "object") {
555
+ if (!header) {
534
556
  continue;
535
557
  }
536
- const iterator = header instanceof Headers ? header.entries() : Object.entries(header);
558
+ const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
537
559
  for (const [key, value] of iterator) {
538
560
  if (value === null) {
539
561
  mergedHeaders.delete(key);
@@ -550,42 +572,37 @@ var mergeHeaders = (...headers) => {
550
572
  };
551
573
 
552
574
  class Interceptors {
553
- _fns;
554
- constructor() {
555
- this._fns = [];
556
- }
575
+ fns = [];
557
576
  clear() {
558
- this._fns = [];
577
+ this.fns = [];
559
578
  }
560
- getInterceptorIndex(id) {
561
- if (typeof id === "number") {
562
- return this._fns[id] ? id : -1;
563
- } else {
564
- return this._fns.indexOf(id);
579
+ eject(id) {
580
+ const index = this.getInterceptorIndex(id);
581
+ if (this.fns[index]) {
582
+ this.fns[index] = null;
565
583
  }
566
584
  }
567
585
  exists(id) {
568
586
  const index = this.getInterceptorIndex(id);
569
- return !!this._fns[index];
587
+ return Boolean(this.fns[index]);
570
588
  }
571
- eject(id) {
572
- const index = this.getInterceptorIndex(id);
573
- if (this._fns[index]) {
574
- this._fns[index] = null;
589
+ getInterceptorIndex(id) {
590
+ if (typeof id === "number") {
591
+ return this.fns[id] ? id : -1;
575
592
  }
593
+ return this.fns.indexOf(id);
576
594
  }
577
595
  update(id, fn) {
578
596
  const index = this.getInterceptorIndex(id);
579
- if (this._fns[index]) {
580
- this._fns[index] = fn;
597
+ if (this.fns[index]) {
598
+ this.fns[index] = fn;
581
599
  return id;
582
- } else {
583
- return false;
584
600
  }
601
+ return false;
585
602
  }
586
603
  use(fn) {
587
- this._fns = [...this._fns, fn];
588
- return this._fns.length - 1;
604
+ this.fns.push(fn);
605
+ return this.fns.length - 1;
589
606
  }
590
607
  }
591
608
  var createInterceptors = () => ({
@@ -641,10 +658,10 @@ var createClient = (config = {}) => {
641
658
  if (opts.requestValidator) {
642
659
  await opts.requestValidator(opts);
643
660
  }
644
- if (opts.body && opts.bodySerializer) {
661
+ if (opts.body !== undefined && opts.bodySerializer) {
645
662
  opts.serializedBody = opts.bodySerializer(opts.body);
646
663
  }
647
- if (opts.serializedBody === undefined || opts.serializedBody === "") {
664
+ if (opts.body === undefined || opts.serializedBody === "") {
648
665
  opts.headers.delete("Content-Type");
649
666
  }
650
667
  const url = buildUrl(opts);
@@ -655,17 +672,17 @@ var createClient = (config = {}) => {
655
672
  const requestInit = {
656
673
  redirect: "follow",
657
674
  ...opts,
658
- body: opts.serializedBody
675
+ body: getValidRequestBody(opts)
659
676
  };
660
677
  let request2 = new Request(url, requestInit);
661
- for (const fn of interceptors.request._fns) {
678
+ for (const fn of interceptors.request.fns) {
662
679
  if (fn) {
663
680
  request2 = await fn(request2, opts);
664
681
  }
665
682
  }
666
683
  const _fetch = opts.fetch;
667
684
  let response = await _fetch(request2);
668
- for (const fn of interceptors.response._fns) {
685
+ for (const fn of interceptors.response.fns) {
669
686
  if (fn) {
670
687
  response = await fn(response, request2, opts);
671
688
  }
@@ -735,7 +752,7 @@ var createClient = (config = {}) => {
735
752
  } catch {}
736
753
  const error = jsonError ?? textError;
737
754
  let finalError = error;
738
- for (const fn of interceptors.error._fns) {
755
+ for (const fn of interceptors.error.fns) {
739
756
  if (fn) {
740
757
  finalError = await fn(error, response, request2, opts);
741
758
  }
@@ -759,7 +776,7 @@ var createClient = (config = {}) => {
759
776
  method,
760
777
  onRequest: async (url2, init) => {
761
778
  let request2 = new Request(url2, init);
762
- for (const fn of interceptors.request._fns) {
779
+ for (const fn of interceptors.request.fns) {
763
780
  if (fn) {
764
781
  request2 = await fn(request2, opts);
765
782
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.gen.d.ts","sourceRoot":"","sources":["../../../../src/generated/lidarr/client/client.gen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,MAAM,EAGP,MAAM,aAAa,CAAC;AAgBrB,eAAO,MAAM,YAAY,GAAI,SAAQ,MAAW,KAAG,MAiPlD,CAAC"}
1
+ {"version":3,"file":"client.gen.d.ts","sourceRoot":"","sources":["../../../../src/generated/lidarr/client/client.gen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EACN,MAAM,EAGP,MAAM,aAAa,CAAC;AAgBrB,eAAO,MAAM,YAAY,GAAI,SAAQ,MAAW,KAAG,MAiPlD,CAAC"}
@@ -2,6 +2,7 @@ export type { Auth } from '../core/auth.gen';
2
2
  export type { QuerySerializerOptions } from '../core/bodySerializer.gen';
3
3
  export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen';
4
4
  export { buildClientParams } from '../core/params.gen';
5
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen';
5
6
  export { createClient } from './client.gen';
6
7
  export type { Client, ClientOptions, Config, CreateClientConfig, Options, OptionsLegacyParser, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen';
7
8
  export { createConfig, mergeHeaders } from './utils.gen';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generated/lidarr/client/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EACV,MAAM,EACN,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generated/lidarr/client/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EACV,MAAM,EACN,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}