mirror of
https://github.com/jellyfin/jellyfin-vue.git
synced 2026-09-03 05:10:26 +03:00
224 lines
6.7 KiB
TypeScript
224 lines
6.7 KiB
TypeScript
import { Plugin } from '@nuxt/types';
|
|
import { AxiosInstance } from 'axios';
|
|
import {
|
|
ActivityLogApi,
|
|
ApiKeyApi,
|
|
ArtistsApi,
|
|
AudioApi,
|
|
BrandingApi,
|
|
ChannelsApi,
|
|
CollectionApi,
|
|
Configuration,
|
|
ConfigurationApi,
|
|
DashboardApi,
|
|
DevicesApi,
|
|
DisplayPreferencesApi,
|
|
DlnaApi,
|
|
DlnaServerApi,
|
|
DynamicHlsApi,
|
|
EnvironmentApi,
|
|
FilterApi,
|
|
GenresApi,
|
|
HlsSegmentApi,
|
|
ImageApi,
|
|
ImageByNameApi,
|
|
InstantMixApi,
|
|
ItemLookupApi,
|
|
ItemRefreshApi,
|
|
ItemUpdateApi,
|
|
ItemsApi,
|
|
LibraryApi,
|
|
LibraryStructureApi,
|
|
LiveTvApi,
|
|
LocalizationApi,
|
|
MediaInfoApi,
|
|
MoviesApi,
|
|
MusicGenresApi,
|
|
NotificationsApi,
|
|
PackageApi,
|
|
PersonsApi,
|
|
PlaylistsApi,
|
|
PlaystateApi,
|
|
PluginsApi,
|
|
QuickConnectApi,
|
|
RemoteImageApi,
|
|
ScheduledTasksApi,
|
|
SearchApi,
|
|
SessionApi,
|
|
StartupApi,
|
|
StudiosApi,
|
|
SubtitleApi,
|
|
SuggestionsApi,
|
|
SyncPlayApi,
|
|
SystemApi,
|
|
TimeSyncApi,
|
|
TrailersApi,
|
|
TvShowsApi,
|
|
UniversalAudioApi,
|
|
UserApi,
|
|
UserLibraryApi,
|
|
UserViewsApi,
|
|
VideoAttachmentsApi,
|
|
VideoHlsApi,
|
|
VideosApi,
|
|
YearsApi
|
|
} from '@jellyfin/client-axios';
|
|
|
|
interface ApiPlugin {
|
|
activityLog: ActivityLogApi;
|
|
apiKey: ApiKeyApi;
|
|
artists: ArtistsApi;
|
|
audio: AudioApi;
|
|
branding: BrandingApi;
|
|
channels: ChannelsApi;
|
|
collection: CollectionApi;
|
|
configuration: ConfigurationApi;
|
|
dashboard: DashboardApi;
|
|
devices: DevicesApi;
|
|
displayPreferences: DisplayPreferencesApi;
|
|
dlna: DlnaApi;
|
|
dlnaServer: DlnaServerApi;
|
|
dynamicHls: DynamicHlsApi;
|
|
environment: EnvironmentApi;
|
|
filter: FilterApi;
|
|
genres: GenresApi;
|
|
hlsSegment: HlsSegmentApi;
|
|
image: ImageApi;
|
|
imageByName: ImageByNameApi;
|
|
instantMix: InstantMixApi;
|
|
itemLookup: ItemLookupApi;
|
|
itemRefresh: ItemRefreshApi;
|
|
itemUpdate: ItemUpdateApi;
|
|
items: ItemsApi;
|
|
library: LibraryApi;
|
|
libraryStructure: LibraryStructureApi;
|
|
liveTv: LiveTvApi;
|
|
localization: LocalizationApi;
|
|
mediaInfo: MediaInfoApi;
|
|
movies: MoviesApi;
|
|
musicGenres: MusicGenresApi;
|
|
notifications: NotificationsApi;
|
|
package: PackageApi;
|
|
persons: PersonsApi;
|
|
playlists: PlaylistsApi;
|
|
playState: PlaystateApi;
|
|
plugins: PluginsApi;
|
|
quickConnect: QuickConnectApi;
|
|
remoteImage: RemoteImageApi;
|
|
scheduledTasks: ScheduledTasksApi;
|
|
search: SearchApi;
|
|
session: SessionApi;
|
|
startup: StartupApi;
|
|
studios: StudiosApi;
|
|
subtitle: SubtitleApi;
|
|
suggestions: SuggestionsApi;
|
|
syncPlay: SyncPlayApi;
|
|
system: SystemApi;
|
|
timeSync: TimeSyncApi;
|
|
trailers: TrailersApi;
|
|
tvShows: TvShowsApi;
|
|
universalAudio: UniversalAudioApi;
|
|
user: UserApi;
|
|
userLibrary: UserLibraryApi;
|
|
userViews: UserViewsApi;
|
|
videoAttachments: VideoAttachmentsApi;
|
|
videoHls: VideoHlsApi;
|
|
videos: VideosApi;
|
|
years: YearsApi;
|
|
}
|
|
|
|
declare module '@nuxt/types' {
|
|
interface Context {
|
|
$api: ApiPlugin;
|
|
}
|
|
|
|
interface NuxtAppOptions {
|
|
$api: ApiPlugin;
|
|
}
|
|
}
|
|
|
|
declare module 'vue/types/vue' {
|
|
interface Vue {
|
|
$api: ApiPlugin;
|
|
}
|
|
}
|
|
|
|
declare module 'vuex/types/index' {
|
|
// eslint-disable-next-line -- Current TypeScript rules flag S as unused, but Nuxt requires identical types
|
|
interface Store<S> {
|
|
$api: ApiPlugin;
|
|
}
|
|
}
|
|
|
|
const apiPlugin: Plugin = (context, inject) => {
|
|
const config = new Configuration();
|
|
const contextAxios = context.$axios as AxiosInstance;
|
|
|
|
const api: ApiPlugin = {
|
|
activityLog: new ActivityLogApi(config, '', contextAxios),
|
|
apiKey: new ApiKeyApi(config, '', contextAxios),
|
|
artists: new ArtistsApi(config, '', contextAxios),
|
|
audio: new AudioApi(config, '', contextAxios),
|
|
branding: new BrandingApi(config, '', contextAxios),
|
|
channels: new ChannelsApi(config, '', contextAxios),
|
|
collection: new CollectionApi(config, '', contextAxios),
|
|
configuration: new ConfigurationApi(config, '', contextAxios),
|
|
dashboard: new DashboardApi(config, '', contextAxios),
|
|
devices: new DevicesApi(config, '', contextAxios),
|
|
displayPreferences: new DisplayPreferencesApi(config, '', contextAxios),
|
|
dlna: new DlnaApi(config, '', contextAxios),
|
|
dlnaServer: new DlnaServerApi(config, '', contextAxios),
|
|
dynamicHls: new DynamicHlsApi(config, '', contextAxios),
|
|
environment: new EnvironmentApi(config, '', contextAxios),
|
|
filter: new FilterApi(config, '', contextAxios),
|
|
genres: new GenresApi(config, '', contextAxios),
|
|
hlsSegment: new HlsSegmentApi(config, '', contextAxios),
|
|
image: new ImageApi(config, '', contextAxios),
|
|
imageByName: new ImageByNameApi(config, '', contextAxios),
|
|
instantMix: new InstantMixApi(config, '', contextAxios),
|
|
itemLookup: new ItemLookupApi(config, '', contextAxios),
|
|
itemRefresh: new ItemRefreshApi(config, '', contextAxios),
|
|
itemUpdate: new ItemUpdateApi(config, '', contextAxios),
|
|
items: new ItemsApi(config, '', contextAxios),
|
|
library: new LibraryApi(config, '', contextAxios),
|
|
libraryStructure: new LibraryStructureApi(config, '', contextAxios),
|
|
liveTv: new LiveTvApi(config, '', contextAxios),
|
|
localization: new LocalizationApi(config, '', contextAxios),
|
|
mediaInfo: new MediaInfoApi(config, '', contextAxios),
|
|
movies: new MoviesApi(config, '', contextAxios),
|
|
musicGenres: new MusicGenresApi(config, '', contextAxios),
|
|
notifications: new NotificationsApi(config, '', contextAxios),
|
|
package: new PackageApi(config, '', contextAxios),
|
|
persons: new PersonsApi(config, '', contextAxios),
|
|
playlists: new PlaylistsApi(config, '', contextAxios),
|
|
playState: new PlaystateApi(config, '', contextAxios),
|
|
plugins: new PluginsApi(config, '', contextAxios),
|
|
quickConnect: new QuickConnectApi(config, '', contextAxios),
|
|
remoteImage: new RemoteImageApi(config, '', contextAxios),
|
|
scheduledTasks: new ScheduledTasksApi(config, '', contextAxios),
|
|
search: new SearchApi(config, '', contextAxios),
|
|
session: new SessionApi(config, '', contextAxios),
|
|
startup: new StartupApi(config, '', contextAxios),
|
|
studios: new StudiosApi(config, '', contextAxios),
|
|
subtitle: new SubtitleApi(config, '', contextAxios),
|
|
suggestions: new SuggestionsApi(config, '', contextAxios),
|
|
syncPlay: new SyncPlayApi(config, '', contextAxios),
|
|
system: new SystemApi(config, '', contextAxios),
|
|
timeSync: new TimeSyncApi(config, '', contextAxios),
|
|
trailers: new TrailersApi(config, '', contextAxios),
|
|
tvShows: new TvShowsApi(config, '', contextAxios),
|
|
universalAudio: new UniversalAudioApi(config, '', contextAxios),
|
|
user: new UserApi(config, '', contextAxios),
|
|
userLibrary: new UserLibraryApi(config, '', contextAxios),
|
|
userViews: new UserViewsApi(config, '', contextAxios),
|
|
videoAttachments: new VideoAttachmentsApi(config, '', contextAxios),
|
|
videoHls: new VideoHlsApi(config, '', contextAxios),
|
|
videos: new VideosApi(config, '', contextAxios),
|
|
years: new YearsApi(config, '', contextAxios)
|
|
};
|
|
|
|
inject('api', api);
|
|
};
|
|
|
|
export default apiPlugin;
|