chore: upgrade to eslint v9 (#2574)
This commit is contained in:
@@ -154,7 +154,9 @@ class AnimeListMapping {
|
||||
{ label: 'Anime-List Sync' }
|
||||
);
|
||||
} catch (e) {
|
||||
throw new Error(`Failed to load Anime-List mappings: ${e.message}`);
|
||||
throw new Error(`Failed to load Anime-List mappings: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -173,7 +175,9 @@ class AnimeListMapping {
|
||||
response.data.pipe(writer);
|
||||
});
|
||||
} catch (e) {
|
||||
throw new Error(`Failed to download Anime-List mapping: ${e.message}`);
|
||||
throw new Error(`Failed to download Anime-List mapping: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -284,7 +284,7 @@ class JellyfinAPI extends ExternalAPI {
|
||||
const mediaFolderResponse = await this.get<any>(`/Library/MediaFolders`);
|
||||
|
||||
return this.mapLibraries(mediaFolderResponse.Items);
|
||||
} catch (mediaFoldersResponseError) {
|
||||
} catch {
|
||||
// fallback to user views to get libraries
|
||||
// this only and maybe/depending on factors affects LDAP users
|
||||
try {
|
||||
|
||||
@@ -205,7 +205,7 @@ class PlexTvAPI extends ExternalAPI {
|
||||
label: 'Plex.tv API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
throw new Error('Invalid auth token');
|
||||
throw new Error('Invalid auth token', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ class PlexTvAPI extends ExternalAPI {
|
||||
`Something went wrong while getting the account from plex.tv: ${e.message}`,
|
||||
{ label: 'Plex.tv API' }
|
||||
);
|
||||
throw new Error('Invalid auth token');
|
||||
throw new Error('Invalid auth token', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,9 @@ class PushoverAPI extends ExternalAPI {
|
||||
|
||||
return mapSounds(data.sounds);
|
||||
} catch (e) {
|
||||
throw new Error(`[Pushover] Failed to retrieve sounds: ${e.message}`);
|
||||
throw new Error(`[Pushover] Failed to retrieve sounds: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,7 +192,8 @@ class IMDBRadarrProxy extends ExternalAPI {
|
||||
};
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[IMDB RADARR PROXY API] Failed to retrieve movie ratings: ${e.message}`
|
||||
`[IMDB RADARR PROXY API] Failed to retrieve movie ratings: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +167,8 @@ class RottenTomatoes extends ExternalAPI {
|
||||
};
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[RT API] Failed to retrieve movie ratings: ${e.message}`
|
||||
`[RT API] Failed to retrieve movie ratings: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -205,7 +206,9 @@ class RottenTomatoes extends ExternalAPI {
|
||||
year: Number(tvshow.releaseYear),
|
||||
};
|
||||
} catch (e) {
|
||||
throw new Error(`[RT API] Failed to retrieve tv ratings: ${e.message}`);
|
||||
throw new Error(`[RT API] Failed to retrieve tv ratings: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,8 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[${this.apiName}] Failed to retrieve system status: ${e.message}`
|
||||
`[${this.apiName}] Failed to retrieve system status: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -137,7 +138,8 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[${this.apiName}] Failed to retrieve profiles: ${e.message}`
|
||||
`[${this.apiName}] Failed to retrieve profiles: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -153,7 +155,8 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[${this.apiName}] Failed to retrieve root folders: ${e.message}`
|
||||
`[${this.apiName}] Failed to retrieve root folders: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -172,7 +175,8 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
return response.data.records;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[${this.apiName}] Failed to retrieve queue: ${e.message}`
|
||||
`[${this.apiName}] Failed to retrieve queue: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -184,7 +188,8 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[${this.apiName}] Failed to retrieve tags: ${e.message}`
|
||||
`[${this.apiName}] Failed to retrieve tags: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -197,7 +202,9 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(`[${this.apiName}] Failed to create tag: ${e.message}`);
|
||||
throw new Error(`[${this.apiName}] Failed to create tag: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -216,7 +223,9 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(`[${this.apiName}] Failed to rename tag: ${e.message}`);
|
||||
throw new Error(`[${this.apiName}] Failed to rename tag: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -234,7 +243,9 @@ class ServarrBase<QueueItemAppendT> extends ExternalAPI {
|
||||
...options,
|
||||
});
|
||||
} catch (e) {
|
||||
throw new Error(`[${this.apiName}] Failed to run command: ${e.message}`);
|
||||
throw new Error(`[${this.apiName}] Failed to run command: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,9 @@ class RadarrAPI extends ServarrBase<{ movieId: number }> {
|
||||
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(`[Radarr] Failed to retrieve movies: ${e.message}`);
|
||||
throw new Error(`[Radarr] Failed to retrieve movies: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,7 +86,9 @@ class RadarrAPI extends ServarrBase<{ movieId: number }> {
|
||||
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(`[Radarr] Failed to retrieve movie: ${e.message}`);
|
||||
throw new Error(`[Radarr] Failed to retrieve movie: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -107,7 +111,7 @@ class RadarrAPI extends ServarrBase<{ movieId: number }> {
|
||||
errorMessage: e.message,
|
||||
tmdbId: id,
|
||||
});
|
||||
throw new Error('Movie not found');
|
||||
throw new Error('Movie not found', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,7 +244,7 @@ class RadarrAPI extends ServarrBase<{ movieId: number }> {
|
||||
response: e?.response?.data,
|
||||
}
|
||||
);
|
||||
throw new Error('Failed to add movie to Radarr');
|
||||
throw new Error('Failed to add movie to Radarr', { cause: e });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -274,7 +278,9 @@ class RadarrAPI extends ServarrBase<{ movieId: number }> {
|
||||
});
|
||||
logger.info(`[Radarr] Removed movie ${title}`);
|
||||
} catch (e) {
|
||||
throw new Error(`[Radarr] Failed to remove movie: ${e.message}`);
|
||||
throw new Error(`[Radarr] Failed to remove movie: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -123,7 +123,9 @@ class SonarrAPI extends ServarrBase<{
|
||||
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(`[Sonarr] Failed to retrieve series: ${e.message}`);
|
||||
throw new Error(`[Sonarr] Failed to retrieve series: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +135,10 @@ class SonarrAPI extends ServarrBase<{
|
||||
|
||||
return response.data;
|
||||
} catch (e) {
|
||||
throw new Error(`[Sonarr] Failed to retrieve series by ID: ${e.message}`);
|
||||
throw new Error(
|
||||
`[Sonarr] Failed to retrieve series by ID: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +161,7 @@ class SonarrAPI extends ServarrBase<{
|
||||
errorMessage: e.message,
|
||||
title,
|
||||
});
|
||||
throw new Error('No series found');
|
||||
throw new Error('No series found', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +184,7 @@ class SonarrAPI extends ServarrBase<{
|
||||
errorMessage: e.message,
|
||||
tvdbId: id,
|
||||
});
|
||||
throw new Error('Series not found');
|
||||
throw new Error('Series not found', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -303,7 +308,7 @@ class SonarrAPI extends ServarrBase<{
|
||||
options,
|
||||
response: e?.response?.data,
|
||||
});
|
||||
throw new Error('Failed to add series');
|
||||
throw new Error('Failed to add series', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,7 +330,7 @@ class SonarrAPI extends ServarrBase<{
|
||||
}
|
||||
);
|
||||
|
||||
throw new Error('Failed to get language profiles');
|
||||
throw new Error('Failed to get language profiles', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,7 +366,7 @@ class SonarrAPI extends ServarrBase<{
|
||||
errorMessage: e.message,
|
||||
seriesId,
|
||||
});
|
||||
throw new Error('Failed to get episodes');
|
||||
throw new Error('Failed to get episodes', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,7 +382,7 @@ class SonarrAPI extends ServarrBase<{
|
||||
errorMessage: e.message,
|
||||
episodeIds,
|
||||
});
|
||||
throw new Error('Failed to monitor episodes');
|
||||
throw new Error('Failed to monitor episodes', { cause: e });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -416,7 +421,9 @@ class SonarrAPI extends ServarrBase<{
|
||||
});
|
||||
logger.info(`[Sonarr] Removed series ${title}`);
|
||||
} catch (e) {
|
||||
throw new Error(`[Sonarr] Failed to remove series: ${e.message}`);
|
||||
throw new Error(`[Sonarr] Failed to remove series: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -140,7 +140,8 @@ class TautulliAPI {
|
||||
errorMessage: e.message,
|
||||
});
|
||||
throw new Error(
|
||||
`[Tautulli] Failed to fetch Tautulli server info: ${e.message}`
|
||||
`[Tautulli] Failed to fetch Tautulli server info: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -168,7 +169,8 @@ class TautulliAPI {
|
||||
}
|
||||
);
|
||||
throw new Error(
|
||||
`[Tautulli] Failed to fetch media watch stats: ${e.message}`
|
||||
`[Tautulli] Failed to fetch media watch stats: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -196,7 +198,8 @@ class TautulliAPI {
|
||||
}
|
||||
);
|
||||
throw new Error(
|
||||
`[Tautulli] Failed to fetch media watch users: ${e.message}`
|
||||
`[Tautulli] Failed to fetch media watch users: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -227,7 +230,8 @@ class TautulliAPI {
|
||||
}
|
||||
);
|
||||
throw new Error(
|
||||
`[Tautulli] Failed to fetch user watch stats: ${e.message}`
|
||||
`[Tautulli] Failed to fetch user watch stats: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -287,7 +291,8 @@ class TautulliAPI {
|
||||
}
|
||||
);
|
||||
throw new Error(
|
||||
`[Tautulli] Failed to fetch user watch history: ${e.message}`
|
||||
`[Tautulli] Failed to fetch user watch history: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
});
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
return {
|
||||
page: 1,
|
||||
results: [],
|
||||
@@ -191,7 +191,7 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
});
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
return {
|
||||
page: 1,
|
||||
results: [],
|
||||
@@ -220,7 +220,7 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
});
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
return {
|
||||
page: 1,
|
||||
results: [],
|
||||
@@ -244,7 +244,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch person details: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch person details: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -266,7 +268,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch person combined credits: ${e.message}`
|
||||
`[TMDB] Failed to fetch person combined credits: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -294,7 +297,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch movie details: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch movie details: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -321,7 +326,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV show details: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch TV show details: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -354,7 +361,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV show details: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch TV show details: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -380,7 +389,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch discover movies: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch discover movies: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -406,7 +417,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch discover movies: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch discover movies: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -432,7 +445,10 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch movies by keyword: ${e.message}`);
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch movies by keyword: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -459,7 +475,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch TV recommendations: ${e.message}`
|
||||
`[TMDB] Failed to fetch TV recommendations: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -483,7 +500,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV similar: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch TV similar: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,7 +588,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch discover movies: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch discover movies: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -655,7 +676,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch discover TV: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch discover TV: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -681,7 +704,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch upcoming movies: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch upcoming movies: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -708,7 +733,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch all trending: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch all trending: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -734,7 +761,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch all trending: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch all trending: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -760,7 +789,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch all trending: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch all trending: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -792,7 +823,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to find by external ID: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to find by external ID: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -830,7 +863,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
throw new Error(`No movie or show returned from API for ID ${imdbId}`);
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to find media using external IMDb ID: ${e.message}`
|
||||
`[TMDB] Failed to find media using external IMDb ID: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -860,7 +894,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
throw new Error(`No show returned from API for ID ${tvdbId}`);
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to get TV show using the external TVDB ID: ${e.message}`
|
||||
`[TMDB] Failed to get TV show using the external TVDB ID: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -884,7 +919,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch collection: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch collection: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -900,7 +937,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return regions;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch countries: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch countries: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -916,7 +955,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return languages;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch langauges: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch langauges: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -928,7 +969,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch movie studio: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch movie studio: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -938,7 +981,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV network: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch TV network: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -989,7 +1034,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return movieGenres;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch movie genres: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch movie genres: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1040,7 +1087,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return tvGenres;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV genres: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch TV genres: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1055,7 +1104,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch movie certifications: ${e}`);
|
||||
throw new Error(`[TMDB] Failed to fetch movie certifications: ${e}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1069,7 +1120,10 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV certifications: ${e.message}`);
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch TV certifications: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1090,7 +1144,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
if (e.response?.status === 404) {
|
||||
return null;
|
||||
}
|
||||
throw new Error(`[TMDB] Failed to fetch keyword: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to fetch keyword: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1115,7 +1171,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to search keyword: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to search keyword: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1140,7 +1198,9 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to search companies: ${e.message}`);
|
||||
throw new Error(`[TMDB] Failed to search companies: ${e.message}`, {
|
||||
cause: e,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1163,7 +1223,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
return data.results;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch available watch regions: ${e.message}`
|
||||
`[TMDB] Failed to fetch available watch regions: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1190,7 +1251,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
return data.results;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch movie watch providers: ${e.message}`
|
||||
`[TMDB] Failed to fetch movie watch providers: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1217,7 +1279,8 @@ class TheMovieDb extends ExternalAPI implements TvShowProvider {
|
||||
return data.results;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[TMDB] Failed to fetch TV watch providers: ${e.message}`
|
||||
`[TMDB] Failed to fetch TV watch providers: ${e.message}`,
|
||||
{ cause: e }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ class Tvdb extends ExternalAPI implements TvShowProvider {
|
||||
}
|
||||
|
||||
return tmdbTvShow;
|
||||
} catch (error) {
|
||||
} catch {
|
||||
return tmdbTvShow;
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
@@ -13,7 +13,7 @@ export interface PaginatedResponse {
|
||||
* Get the keys of an object that are not functions
|
||||
*/
|
||||
type NonFunctionPropertyNames<T> = {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||
[K in keyof T]: T[K] extends Function ? never : K;
|
||||
}[keyof T];
|
||||
|
||||
|
||||
@@ -254,7 +254,7 @@ class ImageProxy {
|
||||
imageBuffer: buffer,
|
||||
};
|
||||
}
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// No files. Treat as empty cache.
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ export const hasNotificationType = (
|
||||
types: Notification | Notification[],
|
||||
value: number
|
||||
): boolean => {
|
||||
let total = 0;
|
||||
let total: number;
|
||||
|
||||
// If we are not checking any notifications, bail out and return true
|
||||
if (types === 0) {
|
||||
|
||||
@@ -36,7 +36,7 @@ const checkOverseerrMerge = async (): Promise<boolean> => {
|
||||
// We have to replace Jellyseerr migrations not working with Overseerr with a custom one
|
||||
try {
|
||||
// Filter out the Jellyseerr migrations and replace them with the Seerr migration
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||
const newMigrations: MixedList<string | Function> = migrations
|
||||
?.filter(
|
||||
(migration) =>
|
||||
|
||||
@@ -61,7 +61,7 @@ export async function checkAvatarChanged(
|
||||
if (headResponse.status !== 200) {
|
||||
return { changed: false };
|
||||
}
|
||||
} catch (error) {
|
||||
} catch {
|
||||
return { changed: false };
|
||||
}
|
||||
|
||||
|
||||
@@ -915,7 +915,7 @@ discoverRoutes.get<Record<string, unknown>, WatchlistResponse>(
|
||||
async (req, res) => {
|
||||
const userRepository = getRepository(User);
|
||||
const itemsPerPage = 20;
|
||||
const page = Number(req.query.page) ?? 1;
|
||||
const page = req.query.page ? Number(req.query.page) : 1;
|
||||
const offset = (page - 1) * itemsPerPage;
|
||||
|
||||
const activeUser = await userRepository.findOne({
|
||||
|
||||
@@ -48,8 +48,6 @@ mediaRoutes.get('/', async (req, res, next) => {
|
||||
case 'pending':
|
||||
statusFilter = MediaStatus.PENDING;
|
||||
break;
|
||||
default:
|
||||
statusFilter = undefined;
|
||||
}
|
||||
|
||||
let sortFilter: FindOneOptions<Media>['order'] = {
|
||||
|
||||
@@ -269,7 +269,7 @@ router.post<
|
||||
);
|
||||
|
||||
return res.status(204).send();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
logger.error('Failed to register user push subscription', {
|
||||
label: 'API',
|
||||
});
|
||||
@@ -290,7 +290,7 @@ router.get<{ userId: string }>(
|
||||
});
|
||||
|
||||
return res.status(200).json(userPushSubs);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
next({ status: 404, message: 'User subscriptions not found.' });
|
||||
}
|
||||
}
|
||||
@@ -314,7 +314,7 @@ router.get<{ userId: string; endpoint: string }>(
|
||||
});
|
||||
|
||||
return res.status(200).json(userPushSub);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
next({ status: 404, message: 'User subscription not found.' });
|
||||
}
|
||||
}
|
||||
@@ -368,7 +368,7 @@ router.get<{ id: string }>('/:id', async (req, res, next) => {
|
||||
const isAdmin = req.user?.hasPermission(Permission.MANAGE_USERS);
|
||||
|
||||
return res.status(200).json(user.filter(isOwnProfile || isAdmin));
|
||||
} catch (e) {
|
||||
} catch {
|
||||
next({ status: 404, message: 'User not found.' });
|
||||
}
|
||||
});
|
||||
@@ -513,7 +513,7 @@ router.put<{ id: string }>(
|
||||
await userRepository.save(user);
|
||||
|
||||
return res.status(200).json(user.filter());
|
||||
} catch (e) {
|
||||
} catch {
|
||||
next({ status: 404, message: 'User not found.' });
|
||||
}
|
||||
}
|
||||
@@ -877,7 +877,7 @@ router.get<{ id: string }, WatchlistResponse>(
|
||||
}
|
||||
|
||||
const itemsPerPage = 20;
|
||||
const page = Number(req.query.page) ?? 1;
|
||||
const page = req.query.page ? Number(req.query.page) : 1;
|
||||
const offset = (page - 1) * itemsPerPage;
|
||||
|
||||
const user = await getRepository(User).findOneOrFail({
|
||||
|
||||
2
server/types/custom.d.ts
vendored
2
server/types/custom.d.ts
vendored
@@ -1,4 +1,4 @@
|
||||
declare module '@dr.pogodin/csurf' {
|
||||
import csrf = require('csurf');
|
||||
import csrf from 'csurf';
|
||||
export = csrf;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ export const appDataPermissions = (): boolean => {
|
||||
try {
|
||||
accessSync(CONFIG_PATH);
|
||||
return true;
|
||||
} catch (err) {
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@ const COMMIT_TAG_PATH = path.join(__dirname, '../../committag.json');
|
||||
let commitTag = 'local';
|
||||
|
||||
if (existsSync(COMMIT_TAG_PATH)) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
commitTag = require(COMMIT_TAG_PATH).commitTag;
|
||||
logger.info(`Commit Tag: ${commitTag}`);
|
||||
}
|
||||
@@ -16,7 +16,7 @@ export const getCommitTag = (): string => {
|
||||
};
|
||||
|
||||
export const getAppVersion = (): string => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
const { version } = require('../../package.json');
|
||||
|
||||
let finalVersion = version;
|
||||
|
||||
Reference in New Issue
Block a user