@francofantomius/jellyfin 0.2.0 → 0.4.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.
- package/README.md +181 -1
- package/dist/index.cjs +1527 -172
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +686 -9
- package/dist/index.d.ts +686 -9
- package/dist/index.js +1520 -173
- package/dist/index.js.map +1 -1
- package/llms.txt +542 -0
- package/package.json +8 -6
package/dist/index.d.cts
CHANGED
|
@@ -187,6 +187,15 @@ interface BaseItemDto {
|
|
|
187
187
|
BackdropImageTags?: string[];
|
|
188
188
|
MediaSources?: MediaSourceInfo[];
|
|
189
189
|
HasLyrics?: boolean;
|
|
190
|
+
/**
|
|
191
|
+
* Trickplay thumbnail metadata dictionary (Jellyfin 10.9+).
|
|
192
|
+
* Keyed by MediaSourceId -> Width string -> TrickplayInfoDto.
|
|
193
|
+
*/
|
|
194
|
+
Trickplay?: Record<string, Record<string, TrickplayInfoDto>> | null;
|
|
195
|
+
/**
|
|
196
|
+
* Chapter markers associated with the media item.
|
|
197
|
+
*/
|
|
198
|
+
Chapters?: ChapterInfoDto[];
|
|
190
199
|
/**
|
|
191
200
|
* Unique relational playlist entry ID (Jellyfin 12+).
|
|
192
201
|
* Distinguishes duplicate tracks inside the same playlist.
|
|
@@ -289,16 +298,19 @@ interface UpdatePlaylistOptions {
|
|
|
289
298
|
name?: string;
|
|
290
299
|
}
|
|
291
300
|
interface AudioStreamOptions {
|
|
301
|
+
static?: boolean;
|
|
292
302
|
maxStreamingBitrate?: string | number;
|
|
293
303
|
quality?: AudioQualityPresetKey | AudioQualityOption | number | string;
|
|
294
304
|
startTimeTicks?: number;
|
|
295
305
|
container?: string;
|
|
296
306
|
transcodingContainer?: string;
|
|
297
307
|
audioCodec?: string;
|
|
308
|
+
deviceId?: string;
|
|
309
|
+
mediaSourceId?: string;
|
|
298
310
|
/**
|
|
299
|
-
* Whether to include the
|
|
311
|
+
* Whether to include the authentication token in the URL query parameters (ApiKey, api_key, X-Emby-Token).
|
|
300
312
|
* Defaults to true for HTML5 <audio> tag compatibility.
|
|
301
|
-
*
|
|
313
|
+
* Set to false when providing modern Authorization headers to avoid conflicting authentication credentials in Jellyfin 12+.
|
|
302
314
|
*/
|
|
303
315
|
useQueryToken?: boolean;
|
|
304
316
|
}
|
|
@@ -308,10 +320,12 @@ interface AudioHlsStreamOptions {
|
|
|
308
320
|
startTimeTicks?: number;
|
|
309
321
|
audioCodec?: string;
|
|
310
322
|
segmentLength?: number;
|
|
323
|
+
deviceId?: string;
|
|
324
|
+
mediaSourceId?: string;
|
|
311
325
|
/**
|
|
312
|
-
* Whether to include the
|
|
326
|
+
* Whether to include the authentication token in the URL query parameters (ApiKey, api_key, X-Emby-Token).
|
|
313
327
|
* Defaults to true for legacy compatibility.
|
|
314
|
-
*
|
|
328
|
+
* Set to false when players (e.g. hls.js) are configured with Authorization headers via xhrSetup to prevent 401s from conflicting auth methods in Jellyfin 12+.
|
|
315
329
|
*/
|
|
316
330
|
useQueryToken?: boolean;
|
|
317
331
|
}
|
|
@@ -445,6 +459,7 @@ interface VideoStreamOptions {
|
|
|
445
459
|
container?: string;
|
|
446
460
|
transcodingContainer?: string;
|
|
447
461
|
transcodingProtocol?: string;
|
|
462
|
+
deviceId?: string;
|
|
448
463
|
useQueryToken?: boolean;
|
|
449
464
|
}
|
|
450
465
|
interface VideoHlsStreamOptions {
|
|
@@ -456,14 +471,15 @@ interface VideoHlsStreamOptions {
|
|
|
456
471
|
maxWidth?: number;
|
|
457
472
|
maxHeight?: number;
|
|
458
473
|
maxFramerate?: number;
|
|
459
|
-
segmentLength?: number;
|
|
460
|
-
minSegments?: number;
|
|
461
474
|
audioStreamIndex?: number;
|
|
462
475
|
subtitleStreamIndex?: number;
|
|
463
476
|
subtitleMethod?: 'Embed' | 'Encode' | 'Hls' | 'External';
|
|
477
|
+
startTimeTicks?: number;
|
|
478
|
+
segmentLength?: number;
|
|
479
|
+
minSegments?: number;
|
|
464
480
|
transcodingContainer?: 'ts' | 'fmp4' | string;
|
|
465
481
|
transcodingProtocol?: 'hls';
|
|
466
|
-
|
|
482
|
+
deviceId?: string;
|
|
467
483
|
useQueryToken?: boolean;
|
|
468
484
|
}
|
|
469
485
|
interface SubtitleTrackInfo {
|
|
@@ -544,6 +560,279 @@ interface StopActiveEncodingOptions {
|
|
|
544
560
|
playSessionId: string;
|
|
545
561
|
deviceId?: string;
|
|
546
562
|
}
|
|
563
|
+
type WebSocketMessageType = 'KeepAlive' | 'ForceKeepAlive' | 'LibraryChanged' | 'UserDataChanged' | 'Sessions' | 'Play' | 'Playstate' | 'GeneralCommand' | 'ActivityLogEntry' | 'ScheduledTasksInfo' | 'ScheduledTasksInfoStop' | 'SessionsStart' | 'SessionsStop' | (string & {});
|
|
564
|
+
interface WebSocketInboundMessage<T = unknown> {
|
|
565
|
+
MessageType: WebSocketMessageType;
|
|
566
|
+
MessageId?: string;
|
|
567
|
+
Data?: T;
|
|
568
|
+
}
|
|
569
|
+
interface LibraryChangedData {
|
|
570
|
+
FoldersAddedTo?: string[];
|
|
571
|
+
FoldersRemovedFrom?: string[];
|
|
572
|
+
ItemsAdded?: string[];
|
|
573
|
+
ItemsUpdated?: string[];
|
|
574
|
+
ItemsRemoved?: string[];
|
|
575
|
+
CollectionFolders?: string[];
|
|
576
|
+
EmptyFolders?: string[];
|
|
577
|
+
}
|
|
578
|
+
interface UserDataChangedData {
|
|
579
|
+
UserId: string;
|
|
580
|
+
UserDataList: UserItemDataDto[];
|
|
581
|
+
}
|
|
582
|
+
interface WebSocketModuleOptions {
|
|
583
|
+
url?: string;
|
|
584
|
+
autoReconnect?: boolean;
|
|
585
|
+
reconnectIntervalMs?: number;
|
|
586
|
+
maxReconnectAttempts?: number;
|
|
587
|
+
keepAliveIntervalMs?: number;
|
|
588
|
+
webSocketFactory?: (url: string) => any;
|
|
589
|
+
}
|
|
590
|
+
interface SessionPlayState {
|
|
591
|
+
PositionTicks?: number;
|
|
592
|
+
CanSeek?: boolean;
|
|
593
|
+
IsPaused?: boolean;
|
|
594
|
+
IsMuted?: boolean;
|
|
595
|
+
VolumeLevel?: number;
|
|
596
|
+
AudioStreamIndex?: number;
|
|
597
|
+
SubtitleStreamIndex?: number;
|
|
598
|
+
MediaSourceId?: string;
|
|
599
|
+
PlayMethod?: string;
|
|
600
|
+
RepeatMode?: string;
|
|
601
|
+
PlaylistItemId?: string;
|
|
602
|
+
}
|
|
603
|
+
interface SessionInfoDto {
|
|
604
|
+
Id: string;
|
|
605
|
+
UserId?: string;
|
|
606
|
+
UserName?: string;
|
|
607
|
+
Client?: string;
|
|
608
|
+
LastActivityDate?: string;
|
|
609
|
+
LastPlaybackCheckIn?: string;
|
|
610
|
+
DeviceName?: string;
|
|
611
|
+
DeviceType?: string;
|
|
612
|
+
NowPlayingItem?: BaseItemDto;
|
|
613
|
+
NowViewingItem?: BaseItemDto;
|
|
614
|
+
DeviceId?: string;
|
|
615
|
+
ApplicationVersion?: string;
|
|
616
|
+
IsActive?: boolean;
|
|
617
|
+
SupportsMediaControl?: boolean;
|
|
618
|
+
SupportsRemoteControl?: boolean;
|
|
619
|
+
PlayableMediaTypes?: string[];
|
|
620
|
+
SupportedCommands?: string[];
|
|
621
|
+
TranscodingInfo?: Record<string, unknown>;
|
|
622
|
+
PlayState?: SessionPlayState;
|
|
623
|
+
AdditionalUsers?: Array<{
|
|
624
|
+
UserId: string;
|
|
625
|
+
UserName: string;
|
|
626
|
+
}>;
|
|
627
|
+
Capabilities?: Record<string, unknown>;
|
|
628
|
+
}
|
|
629
|
+
interface GetSessionsOptions {
|
|
630
|
+
controllableByUserId?: string;
|
|
631
|
+
deviceId?: string;
|
|
632
|
+
activeWithinSeconds?: number;
|
|
633
|
+
}
|
|
634
|
+
type PlayCommandType = 'PlayNow' | 'PlayNext' | 'PlayLast';
|
|
635
|
+
interface RemotePlayOptions {
|
|
636
|
+
playCommand?: PlayCommandType;
|
|
637
|
+
startPositionTicks?: number;
|
|
638
|
+
mediaSourceId?: string;
|
|
639
|
+
audioStreamIndex?: number;
|
|
640
|
+
subtitleStreamIndex?: number;
|
|
641
|
+
startIndex?: number;
|
|
642
|
+
}
|
|
643
|
+
type PlaystateCommand = 'PlayPause' | 'Pause' | 'Unpause' | 'Stop' | 'Seek' | 'NextTrack' | 'PreviousTrack';
|
|
644
|
+
type GeneralCommandType = 'MoveUp' | 'MoveDown' | 'MoveLeft' | 'MoveRight' | 'PageUp' | 'PageDown' | 'PreviousLetter' | 'NextLetter' | 'ToggleOsd' | 'ToggleContextMenu' | 'Select' | 'Back' | 'TakeScreenshot' | 'SendKey' | 'SendString' | 'GoHome' | 'GoToSettings' | 'VolumeUp' | 'VolumeDown' | 'Mute' | 'Unmute' | 'ToggleMute' | 'SetVolume' | 'SetAudioStreamIndex' | 'SetSubtitleStreamIndex' | 'DisplayContent' | 'DisplayMessage' | (string & {});
|
|
645
|
+
interface GeneralCommandDto {
|
|
646
|
+
Name: GeneralCommandType;
|
|
647
|
+
Arguments?: Record<string, string>;
|
|
648
|
+
}
|
|
649
|
+
interface SessionMessageOptions {
|
|
650
|
+
header?: string;
|
|
651
|
+
text: string;
|
|
652
|
+
timeoutMs?: number;
|
|
653
|
+
}
|
|
654
|
+
interface QuickConnectResult {
|
|
655
|
+
Code: string;
|
|
656
|
+
Secret: string;
|
|
657
|
+
AuthenticationToken?: string;
|
|
658
|
+
}
|
|
659
|
+
interface QuickConnectState {
|
|
660
|
+
Authenticated: boolean;
|
|
661
|
+
Secret: string;
|
|
662
|
+
Code?: string;
|
|
663
|
+
AuthenticationToken?: string;
|
|
664
|
+
UserId?: string;
|
|
665
|
+
DateAdded?: string;
|
|
666
|
+
}
|
|
667
|
+
interface QuickConnectPollOptions {
|
|
668
|
+
intervalMs?: number;
|
|
669
|
+
timeoutMs?: number;
|
|
670
|
+
signal?: AbortSignal;
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* Metadata describing generated trickplay tiles for scrubbing previews (Jellyfin 10.9+).
|
|
674
|
+
*/
|
|
675
|
+
interface TrickplayInfoDto {
|
|
676
|
+
Width: number;
|
|
677
|
+
Height: number;
|
|
678
|
+
TileWidth: number;
|
|
679
|
+
TileHeight: number;
|
|
680
|
+
ThumbnailCount: number;
|
|
681
|
+
Interval: number;
|
|
682
|
+
Bandwidth: number;
|
|
683
|
+
}
|
|
684
|
+
interface TrickplayStreamOptions {
|
|
685
|
+
mediaSourceId?: string;
|
|
686
|
+
useQueryToken?: boolean;
|
|
687
|
+
}
|
|
688
|
+
interface TrickplayManifestTile {
|
|
689
|
+
index: number;
|
|
690
|
+
durationMs: number;
|
|
691
|
+
url: string;
|
|
692
|
+
}
|
|
693
|
+
interface TrickplayManifestInfo {
|
|
694
|
+
width: number;
|
|
695
|
+
rawM3u8: string;
|
|
696
|
+
tiles: TrickplayManifestTile[];
|
|
697
|
+
}
|
|
698
|
+
interface ThumbnailLookupOptions {
|
|
699
|
+
item?: BaseItemDto;
|
|
700
|
+
trickplayInfo?: TrickplayInfoDto;
|
|
701
|
+
timestampMs?: number;
|
|
702
|
+
timestampTicks?: number;
|
|
703
|
+
width?: number;
|
|
704
|
+
mediaSourceId?: string;
|
|
705
|
+
useQueryToken?: boolean;
|
|
706
|
+
}
|
|
707
|
+
interface ThumbnailLookupResult {
|
|
708
|
+
tileIndex: number;
|
|
709
|
+
imageUrl: string;
|
|
710
|
+
x: number;
|
|
711
|
+
y: number;
|
|
712
|
+
width: number;
|
|
713
|
+
height: number;
|
|
714
|
+
thumbnailIndex: number;
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* Chapter marker within a media item.
|
|
718
|
+
*/
|
|
719
|
+
interface ChapterInfoDto {
|
|
720
|
+
StartPositionTicks: number;
|
|
721
|
+
Name?: string;
|
|
722
|
+
ImageTag?: string;
|
|
723
|
+
ImagePath?: string;
|
|
724
|
+
ImageDateModified?: string;
|
|
725
|
+
MarkerType?: 'IntroStart' | 'IntroEnd' | 'CreditsStart' | 'CreditsEnd' | (string & {});
|
|
726
|
+
}
|
|
727
|
+
interface ChapterImageOptions {
|
|
728
|
+
maxWidth?: number;
|
|
729
|
+
maxHeight?: number;
|
|
730
|
+
width?: number;
|
|
731
|
+
height?: number;
|
|
732
|
+
quality?: number;
|
|
733
|
+
format?: 'jpg' | 'png' | 'webp';
|
|
734
|
+
tag?: string;
|
|
735
|
+
fillWidth?: number;
|
|
736
|
+
fillHeight?: number;
|
|
737
|
+
useQueryToken?: boolean;
|
|
738
|
+
}
|
|
739
|
+
type MediaSegmentType = 'Intro' | 'Outro' | 'Preview' | 'Recap' | 'Commercial' | (string & {});
|
|
740
|
+
interface MediaSegmentDto {
|
|
741
|
+
Id: string;
|
|
742
|
+
ItemId: string;
|
|
743
|
+
Type: MediaSegmentType;
|
|
744
|
+
StartTicks: number;
|
|
745
|
+
EndTicks: number;
|
|
746
|
+
}
|
|
747
|
+
interface GetMediaSegmentsOptions {
|
|
748
|
+
includeSegmentTypes?: MediaSegmentType[];
|
|
749
|
+
}
|
|
750
|
+
interface MarkerRange {
|
|
751
|
+
startTicks: number;
|
|
752
|
+
endTicks: number;
|
|
753
|
+
startMs: number;
|
|
754
|
+
endMs: number;
|
|
755
|
+
}
|
|
756
|
+
interface IntroCreditsMarkers {
|
|
757
|
+
intro?: MarkerRange;
|
|
758
|
+
credits?: MarkerRange;
|
|
759
|
+
segments: MediaSegmentDto[];
|
|
760
|
+
}
|
|
761
|
+
interface GetGenresOptions {
|
|
762
|
+
parentId?: string;
|
|
763
|
+
startIndex?: number;
|
|
764
|
+
limit?: number;
|
|
765
|
+
searchTerm?: string;
|
|
766
|
+
sortBy?: string;
|
|
767
|
+
sortOrder?: 'Ascending' | 'Descending';
|
|
768
|
+
enableImages?: boolean;
|
|
769
|
+
imageTypeLimit?: number;
|
|
770
|
+
enableImageTypes?: string[];
|
|
771
|
+
userId?: string;
|
|
772
|
+
}
|
|
773
|
+
interface GetStudiosOptions {
|
|
774
|
+
parentId?: string;
|
|
775
|
+
startIndex?: number;
|
|
776
|
+
limit?: number;
|
|
777
|
+
searchTerm?: string;
|
|
778
|
+
sortBy?: string;
|
|
779
|
+
sortOrder?: 'Ascending' | 'Descending';
|
|
780
|
+
enableImages?: boolean;
|
|
781
|
+
imageTypeLimit?: number;
|
|
782
|
+
enableImageTypes?: string[];
|
|
783
|
+
userId?: string;
|
|
784
|
+
}
|
|
785
|
+
interface GetCollectionsOptions {
|
|
786
|
+
parentId?: string;
|
|
787
|
+
startIndex?: number;
|
|
788
|
+
limit?: number;
|
|
789
|
+
searchTerm?: string;
|
|
790
|
+
sortBy?: string;
|
|
791
|
+
sortOrder?: 'Ascending' | 'Descending';
|
|
792
|
+
enableImages?: boolean;
|
|
793
|
+
imageTypeLimit?: number;
|
|
794
|
+
enableImageTypes?: string[];
|
|
795
|
+
userId?: string;
|
|
796
|
+
}
|
|
797
|
+
interface GetCollectionItemsOptions {
|
|
798
|
+
userId?: string;
|
|
799
|
+
startIndex?: number;
|
|
800
|
+
limit?: number;
|
|
801
|
+
fields?: string;
|
|
802
|
+
sortBy?: string;
|
|
803
|
+
sortOrder?: 'Ascending' | 'Descending';
|
|
804
|
+
}
|
|
805
|
+
interface CreateCollectionOptions {
|
|
806
|
+
name: string;
|
|
807
|
+
ids?: string[];
|
|
808
|
+
parentId?: string;
|
|
809
|
+
isFolder?: boolean;
|
|
810
|
+
}
|
|
811
|
+
interface DisplayPreferencesDto {
|
|
812
|
+
Id?: string;
|
|
813
|
+
ViewType?: string;
|
|
814
|
+
SortBy?: string;
|
|
815
|
+
IndexBy?: string;
|
|
816
|
+
RememberIndexing?: boolean;
|
|
817
|
+
PrimaryImageHeight?: number;
|
|
818
|
+
PrimaryImageWidth?: number;
|
|
819
|
+
CustomPrefs?: Record<string, string>;
|
|
820
|
+
ScrollDirection?: 'Horizontal' | 'Vertical' | (string & {});
|
|
821
|
+
ShowBackdrop?: boolean;
|
|
822
|
+
RememberSorting?: boolean;
|
|
823
|
+
SortOrder?: 'Ascending' | 'Descending' | (string & {});
|
|
824
|
+
ShowSidebar?: boolean;
|
|
825
|
+
Client?: string;
|
|
826
|
+
[key: string]: unknown;
|
|
827
|
+
}
|
|
828
|
+
interface GetDisplayPreferencesOptions {
|
|
829
|
+
userId?: string;
|
|
830
|
+
client?: string;
|
|
831
|
+
}
|
|
832
|
+
interface UpdateDisplayPreferencesOptions {
|
|
833
|
+
userId?: string;
|
|
834
|
+
client?: string;
|
|
835
|
+
}
|
|
547
836
|
|
|
548
837
|
interface RequestOptions {
|
|
549
838
|
method?: string;
|
|
@@ -859,8 +1148,11 @@ declare class MediaModule {
|
|
|
859
1148
|
/**
|
|
860
1149
|
* Returns authentication headers for media streaming requests (e.g., configuring hls.js xhrSetup).
|
|
861
1150
|
* Crucial for Jellyfin 12+ servers where query-based auth (?api_key=) is disabled.
|
|
1151
|
+
* Pass { legacy: false } to only send Authorization and avoid conflicting headers or reverse-proxy CORS rejections.
|
|
862
1152
|
*/
|
|
863
|
-
getStreamHeaders(
|
|
1153
|
+
getStreamHeaders(options?: {
|
|
1154
|
+
legacy?: boolean;
|
|
1155
|
+
}): Record<string, string>;
|
|
864
1156
|
}
|
|
865
1157
|
|
|
866
1158
|
declare class LyricsModule {
|
|
@@ -1133,6 +1425,383 @@ declare class SearchModule {
|
|
|
1133
1425
|
searchEpisodes(query: string, options?: Omit<SearchOptions, 'includeItemTypes'>): Promise<ItemsResponse>;
|
|
1134
1426
|
}
|
|
1135
1427
|
|
|
1428
|
+
type WebSocketEventListener = (...args: any[]) => void;
|
|
1429
|
+
declare class WebSocketModule {
|
|
1430
|
+
private http;
|
|
1431
|
+
private getDeviceId;
|
|
1432
|
+
private ws;
|
|
1433
|
+
private keepAliveTimer;
|
|
1434
|
+
private reconnectTimer;
|
|
1435
|
+
private listeners;
|
|
1436
|
+
private reconnectAttempts;
|
|
1437
|
+
private explicitlyClosed;
|
|
1438
|
+
private options;
|
|
1439
|
+
constructor(http: HttpTransport, getDeviceId: () => string);
|
|
1440
|
+
/**
|
|
1441
|
+
* Check whether the WebSocket is currently open and connected.
|
|
1442
|
+
*/
|
|
1443
|
+
get isConnected(): boolean;
|
|
1444
|
+
/**
|
|
1445
|
+
* Build the Jellyfin WebSocket URL from current serverUrl, accessToken, and deviceId.
|
|
1446
|
+
*/
|
|
1447
|
+
getWebSocketUrl(): string;
|
|
1448
|
+
/**
|
|
1449
|
+
* Connect to the Jellyfin WebSocket endpoint.
|
|
1450
|
+
*/
|
|
1451
|
+
connect(options?: WebSocketModuleOptions): void;
|
|
1452
|
+
/**
|
|
1453
|
+
* Disconnect the WebSocket and prevent automatic reconnection.
|
|
1454
|
+
*/
|
|
1455
|
+
disconnect(): void;
|
|
1456
|
+
/**
|
|
1457
|
+
* Send a raw string or JSON message through the open WebSocket.
|
|
1458
|
+
*/
|
|
1459
|
+
send(message: string | Record<string, unknown>): void;
|
|
1460
|
+
/**
|
|
1461
|
+
* Send a KeepAlive message to the Jellyfin server.
|
|
1462
|
+
*/
|
|
1463
|
+
sendKeepAlive(): void;
|
|
1464
|
+
/**
|
|
1465
|
+
* Subscribe to real-time session updates from the server.
|
|
1466
|
+
*/
|
|
1467
|
+
startSessionsSubscription(intervalMs?: number): void;
|
|
1468
|
+
/**
|
|
1469
|
+
* Stop receiving real-time session updates.
|
|
1470
|
+
*/
|
|
1471
|
+
stopSessionsSubscription(): void;
|
|
1472
|
+
/**
|
|
1473
|
+
* Subscribe to scheduled tasks updates from the server.
|
|
1474
|
+
*/
|
|
1475
|
+
startScheduledTasksSubscription(intervalMs?: number): void;
|
|
1476
|
+
/**
|
|
1477
|
+
* Stop scheduled tasks updates.
|
|
1478
|
+
*/
|
|
1479
|
+
stopScheduledTasksSubscription(): void;
|
|
1480
|
+
/**
|
|
1481
|
+
* Subscribe to server activity log updates.
|
|
1482
|
+
*/
|
|
1483
|
+
startActivityLogSubscription(intervalMs?: number): void;
|
|
1484
|
+
/**
|
|
1485
|
+
* Stop server activity log updates.
|
|
1486
|
+
*/
|
|
1487
|
+
stopActivityLogSubscription(): void;
|
|
1488
|
+
on(event: 'open', listener: () => void): () => void;
|
|
1489
|
+
on(event: 'close', listener: (code?: number, reason?: string) => void): () => void;
|
|
1490
|
+
on(event: 'error', listener: (error: unknown) => void): () => void;
|
|
1491
|
+
on(event: 'message', listener: (msg: WebSocketInboundMessage) => void): () => void;
|
|
1492
|
+
on(event: 'libraryChanged', listener: (data: LibraryChangedData) => void): () => void;
|
|
1493
|
+
on(event: 'userDataChanged', listener: (data: UserDataChangedData) => void): () => void;
|
|
1494
|
+
on(event: 'sessions', listener: (data: SessionInfoDto[]) => void): () => void;
|
|
1495
|
+
on(event: string, listener: WebSocketEventListener): () => void;
|
|
1496
|
+
off(event: string, listener: WebSocketEventListener): void;
|
|
1497
|
+
emit(event: string, ...args: unknown[]): void;
|
|
1498
|
+
private setupSocketEvents;
|
|
1499
|
+
private startKeepAlive;
|
|
1500
|
+
private stopKeepAlive;
|
|
1501
|
+
private scheduleReconnect;
|
|
1502
|
+
private cleanup;
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
declare class SessionsModule {
|
|
1506
|
+
private http;
|
|
1507
|
+
private getUserId;
|
|
1508
|
+
constructor(http: HttpTransport, getUserId: () => string);
|
|
1509
|
+
/**
|
|
1510
|
+
* Query active client sessions across the Jellyfin server via GET /Sessions.
|
|
1511
|
+
*/
|
|
1512
|
+
getSessions(options?: GetSessionsOptions): Promise<SessionInfoDto[]>;
|
|
1513
|
+
/**
|
|
1514
|
+
* Instruct a remote session to start playback of specified items via POST /Sessions/{sessionId}/Playing.
|
|
1515
|
+
*
|
|
1516
|
+
* @param sessionId The target session ID.
|
|
1517
|
+
* @param itemIds Single item ID or array of item IDs to play.
|
|
1518
|
+
* @param options Additional playback parameters (command type, start ticks, etc.).
|
|
1519
|
+
*/
|
|
1520
|
+
play(sessionId: string, itemIds: string | string[], options?: RemotePlayOptions): Promise<void>;
|
|
1521
|
+
/**
|
|
1522
|
+
* Send a playback control command to a remote session via POST /Sessions/{sessionId}/Playing/{command}.
|
|
1523
|
+
*/
|
|
1524
|
+
sendPlaystateCommand(sessionId: string, command: PlaystateCommand, params?: Record<string, unknown>): Promise<void>;
|
|
1525
|
+
/**
|
|
1526
|
+
* Toggle play / pause on a remote session.
|
|
1527
|
+
*/
|
|
1528
|
+
playPause(sessionId: string): Promise<void>;
|
|
1529
|
+
/**
|
|
1530
|
+
* Pause playback on a remote session.
|
|
1531
|
+
*/
|
|
1532
|
+
pause(sessionId: string): Promise<void>;
|
|
1533
|
+
/**
|
|
1534
|
+
* Resume playback on a remote session.
|
|
1535
|
+
*/
|
|
1536
|
+
unpause(sessionId: string): Promise<void>;
|
|
1537
|
+
/**
|
|
1538
|
+
* Stop playback on a remote session.
|
|
1539
|
+
*/
|
|
1540
|
+
stop(sessionId: string): Promise<void>;
|
|
1541
|
+
/**
|
|
1542
|
+
* Seek to a specific tick position on a remote session.
|
|
1543
|
+
*
|
|
1544
|
+
* @param sessionId Target session ID.
|
|
1545
|
+
* @param positionTicks Position in ticks (1 tick = 10,000 milliseconds = 100 nanoseconds).
|
|
1546
|
+
*/
|
|
1547
|
+
seek(sessionId: string, positionTicks: number): Promise<void>;
|
|
1548
|
+
/**
|
|
1549
|
+
* Skip to the next track on a remote session.
|
|
1550
|
+
*/
|
|
1551
|
+
nextTrack(sessionId: string): Promise<void>;
|
|
1552
|
+
/**
|
|
1553
|
+
* Skip to the previous track on a remote session.
|
|
1554
|
+
*/
|
|
1555
|
+
previousTrack(sessionId: string): Promise<void>;
|
|
1556
|
+
/**
|
|
1557
|
+
* Send a general command to a remote session via POST /Sessions/{sessionId}/Command.
|
|
1558
|
+
*/
|
|
1559
|
+
sendGeneralCommand(sessionId: string, command: GeneralCommandDto): Promise<void>;
|
|
1560
|
+
/**
|
|
1561
|
+
* Set volume level on a remote session (0-100).
|
|
1562
|
+
*/
|
|
1563
|
+
setVolume(sessionId: string, volume: number): Promise<void>;
|
|
1564
|
+
/**
|
|
1565
|
+
* Mute audio on a remote session.
|
|
1566
|
+
*/
|
|
1567
|
+
mute(sessionId: string): Promise<void>;
|
|
1568
|
+
/**
|
|
1569
|
+
* Unmute audio on a remote session.
|
|
1570
|
+
*/
|
|
1571
|
+
unmute(sessionId: string): Promise<void>;
|
|
1572
|
+
/**
|
|
1573
|
+
* Toggle mute on a remote session.
|
|
1574
|
+
*/
|
|
1575
|
+
toggleMute(sessionId: string): Promise<void>;
|
|
1576
|
+
/**
|
|
1577
|
+
* Switch the audio stream index on a remote session.
|
|
1578
|
+
*/
|
|
1579
|
+
setAudioStreamIndex(sessionId: string, index: number): Promise<void>;
|
|
1580
|
+
/**
|
|
1581
|
+
* Switch the subtitle stream index on a remote session.
|
|
1582
|
+
*/
|
|
1583
|
+
setSubtitleStreamIndex(sessionId: string, index: number): Promise<void>;
|
|
1584
|
+
/**
|
|
1585
|
+
* Display an on-screen dialog message modal on a remote session via POST /Sessions/{sessionId}/Message.
|
|
1586
|
+
*/
|
|
1587
|
+
sendMessage(sessionId: string, options: SessionMessageOptions | string): Promise<void>;
|
|
1588
|
+
/**
|
|
1589
|
+
* Instruct a remote session to navigate and view an item or page via POST /Sessions/{sessionId}/Viewing.
|
|
1590
|
+
*/
|
|
1591
|
+
viewItem(sessionId: string, itemType: string, itemId: string, itemName: string): Promise<void>;
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
declare class QuickConnectModule {
|
|
1595
|
+
private http;
|
|
1596
|
+
constructor(http: HttpTransport);
|
|
1597
|
+
/**
|
|
1598
|
+
* Check whether Quick Connect is enabled on the connected Jellyfin server.
|
|
1599
|
+
*/
|
|
1600
|
+
isEnabled(): Promise<boolean>;
|
|
1601
|
+
/**
|
|
1602
|
+
* Initiate a Quick Connect authentication session.
|
|
1603
|
+
* Typically called by a client device (e.g. Smart TV or CLI) to generate a user-facing pairing code.
|
|
1604
|
+
*/
|
|
1605
|
+
initiate(): Promise<QuickConnectResult>;
|
|
1606
|
+
/**
|
|
1607
|
+
* Check the current authorization status of an initiated Quick Connect secret.
|
|
1608
|
+
*
|
|
1609
|
+
* @param secret The secret token returned from initiate().
|
|
1610
|
+
*/
|
|
1611
|
+
check(secret: string): Promise<QuickConnectState>;
|
|
1612
|
+
/**
|
|
1613
|
+
* Authorize a Quick Connect pairing code from an authenticated session.
|
|
1614
|
+
* Typically called on a mobile app or browser where the user is already logged in.
|
|
1615
|
+
*
|
|
1616
|
+
* @param code The pairing code shown on the target device.
|
|
1617
|
+
* @param userId Optional specific user ID to authenticate as (defaults to the currently authenticated user).
|
|
1618
|
+
*/
|
|
1619
|
+
authorize(code: string, userId?: string): Promise<boolean>;
|
|
1620
|
+
/**
|
|
1621
|
+
* Repeatedly poll until the user authorizes the Quick Connect request or a timeout occurs.
|
|
1622
|
+
*
|
|
1623
|
+
* @param secret The secret token returned from initiate().
|
|
1624
|
+
* @param options Polling configuration (intervalMs, timeoutMs, signal).
|
|
1625
|
+
*/
|
|
1626
|
+
poll(secret: string, options?: QuickConnectPollOptions): Promise<QuickConnectState>;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
declare class TrickplayModule {
|
|
1630
|
+
private http;
|
|
1631
|
+
constructor(http: HttpTransport);
|
|
1632
|
+
/**
|
|
1633
|
+
* Generates the HLS playlist URL for trickplay scrubbing image tiles.
|
|
1634
|
+
* E.g. /Videos/{itemId}/Trickplay/{width}/tiles.m3u8
|
|
1635
|
+
*/
|
|
1636
|
+
getTilesHlsUrl(itemId: string, width: number, options?: TrickplayStreamOptions): string;
|
|
1637
|
+
/**
|
|
1638
|
+
* Generates the URL for a specific trickplay thumbnail tile image sheet.
|
|
1639
|
+
* E.g. /Videos/{itemId}/Trickplay/{width}/{index}.jpg
|
|
1640
|
+
*/
|
|
1641
|
+
getTileImageUrl(itemId: string, width: number, index: number, options?: TrickplayStreamOptions): string;
|
|
1642
|
+
/**
|
|
1643
|
+
* Fetches and parses the HLS trickplay manifest (tiles.m3u8) for the given item and resolution.
|
|
1644
|
+
*/
|
|
1645
|
+
getTrickplayManifest(itemId: string, width: number, options?: {
|
|
1646
|
+
mediaSourceId?: string;
|
|
1647
|
+
useQueryToken?: boolean;
|
|
1648
|
+
}): Promise<TrickplayManifestInfo>;
|
|
1649
|
+
/**
|
|
1650
|
+
* Helper to parse #EXTINF and tile file names from a tiles.m3u8 playlist.
|
|
1651
|
+
*/
|
|
1652
|
+
private parseTilesM3u8;
|
|
1653
|
+
/**
|
|
1654
|
+
* Extracts the available trickplay thumbnail widths from a BaseItemDto's Trickplay metadata.
|
|
1655
|
+
*/
|
|
1656
|
+
getAvailableResolutions(item: BaseItemDto, mediaSourceId?: string): number[];
|
|
1657
|
+
/**
|
|
1658
|
+
* Retrieves the TrickplayInfoDto metadata for a specified item and optional width.
|
|
1659
|
+
*/
|
|
1660
|
+
getTrickplayInfo(item: BaseItemDto, width?: number, mediaSourceId?: string): TrickplayInfoDto | null;
|
|
1661
|
+
/**
|
|
1662
|
+
* Calculates the exact tile sheet index, image URL, and sprite coordinates (x, y, width, height)
|
|
1663
|
+
* for a given playback timestamp to render scrubbing thumbnails in a player or seekbar UI.
|
|
1664
|
+
*/
|
|
1665
|
+
getThumbnailForTimestamp(options: ThumbnailLookupOptions): ThumbnailLookupResult | null;
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
declare class ChaptersModule {
|
|
1669
|
+
private http;
|
|
1670
|
+
private getUserId?;
|
|
1671
|
+
constructor(http: HttpTransport, getUserId?: () => string);
|
|
1672
|
+
/**
|
|
1673
|
+
* Synchronously extracts chapter markers from an already fetched BaseItemDto.
|
|
1674
|
+
*/
|
|
1675
|
+
extractChapters(item: BaseItemDto): ChapterInfoDto[];
|
|
1676
|
+
/**
|
|
1677
|
+
* Fetches the chapter markers for an item from the server.
|
|
1678
|
+
*/
|
|
1679
|
+
getChapters(itemId: string): Promise<ChapterInfoDto[]>;
|
|
1680
|
+
/**
|
|
1681
|
+
* Generates the URL for a chapter preview thumbnail image.
|
|
1682
|
+
* E.g. /Items/{itemId}/Images/Chapter/{chapterIndex}
|
|
1683
|
+
*/
|
|
1684
|
+
getChapterImageUrl(itemId: string, chapterIndex: number, options?: ChapterImageOptions): string;
|
|
1685
|
+
/**
|
|
1686
|
+
* Retrieves media segments (Intro, Outro, Recap, Commercials) for an item via Jellyfin 10.10+ /MediaSegments.
|
|
1687
|
+
*/
|
|
1688
|
+
getMediaSegments(itemId: string, options?: GetMediaSegmentsOptions): Promise<MediaSegmentDto[]>;
|
|
1689
|
+
/**
|
|
1690
|
+
* Resolves intro and end credits markers for an item, combining /MediaSegments API
|
|
1691
|
+
* and chapter marker heuristics (MarkerType or naming like 'Intro', 'Opening', 'Credits', 'Ending').
|
|
1692
|
+
*/
|
|
1693
|
+
getIntroCredits(itemOrChaptersOrId: BaseItemDto | ChapterInfoDto[] | string, mediaSegments?: MediaSegmentDto[]): Promise<IntroCreditsMarkers>;
|
|
1694
|
+
/**
|
|
1695
|
+
* Checks whether the current playback position falls within an intro or credits range.
|
|
1696
|
+
*/
|
|
1697
|
+
findCurrentSegment(positionTicks: number, markersOrSegments: IntroCreditsMarkers | MediaSegmentDto[]): {
|
|
1698
|
+
type: string;
|
|
1699
|
+
startTicks: number;
|
|
1700
|
+
endTicks: number;
|
|
1701
|
+
} | null;
|
|
1702
|
+
/**
|
|
1703
|
+
* Returns the timestamp ticks to skip to if the current position is within a skippable segment,
|
|
1704
|
+
* or null if not currently within any skippable range.
|
|
1705
|
+
*/
|
|
1706
|
+
getSkipPosition(positionTicks: number, markersOrSegments: IntroCreditsMarkers | MediaSegmentDto[]): number | null;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
declare class GenresModule {
|
|
1710
|
+
private http;
|
|
1711
|
+
private getUserId;
|
|
1712
|
+
constructor(http: HttpTransport, getUserId: () => string);
|
|
1713
|
+
private resolveUserId;
|
|
1714
|
+
/**
|
|
1715
|
+
* Retrieves video/movie genres from the server via GET /Genres.
|
|
1716
|
+
*/
|
|
1717
|
+
getGenres(options?: GetGenresOptions): Promise<ItemsResponse>;
|
|
1718
|
+
/**
|
|
1719
|
+
* Retrieves a single genre by name via GET /Genres/{genreName}.
|
|
1720
|
+
*/
|
|
1721
|
+
getGenre(genreName: string, options?: {
|
|
1722
|
+
userId?: string;
|
|
1723
|
+
}): Promise<BaseItemDto>;
|
|
1724
|
+
/**
|
|
1725
|
+
* Retrieves music genres from the server via GET /MusicGenres.
|
|
1726
|
+
*/
|
|
1727
|
+
getMusicGenres(options?: GetGenresOptions): Promise<ItemsResponse>;
|
|
1728
|
+
/**
|
|
1729
|
+
* Retrieves a single music genre by name via GET /MusicGenres/{genreName}.
|
|
1730
|
+
*/
|
|
1731
|
+
getMusicGenre(genreName: string, options?: {
|
|
1732
|
+
userId?: string;
|
|
1733
|
+
}): Promise<BaseItemDto>;
|
|
1734
|
+
/**
|
|
1735
|
+
* Retrieves studios/production companies from the server via GET /Studios.
|
|
1736
|
+
*/
|
|
1737
|
+
getStudios(options?: GetStudiosOptions): Promise<ItemsResponse>;
|
|
1738
|
+
/**
|
|
1739
|
+
* Retrieves a single studio by name via GET /Studios/{studioName}.
|
|
1740
|
+
*/
|
|
1741
|
+
getStudio(studioName: string, options?: {
|
|
1742
|
+
userId?: string;
|
|
1743
|
+
}): Promise<BaseItemDto>;
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
declare class CollectionsModule {
|
|
1747
|
+
private http;
|
|
1748
|
+
private getUserId;
|
|
1749
|
+
constructor(http: HttpTransport, getUserId: () => string);
|
|
1750
|
+
private resolveUserId;
|
|
1751
|
+
/**
|
|
1752
|
+
* Retrieves user BoxSet / Collections via GET /Collections.
|
|
1753
|
+
*/
|
|
1754
|
+
getCollections(options?: GetCollectionsOptions): Promise<ItemsResponse>;
|
|
1755
|
+
/**
|
|
1756
|
+
* Retrieves the items belonging to a collection / BoxSet.
|
|
1757
|
+
*/
|
|
1758
|
+
getCollectionItems(collectionId: string, options?: GetCollectionItemsOptions): Promise<ItemsResponse>;
|
|
1759
|
+
/**
|
|
1760
|
+
* Creates a new BoxSet / Collection via POST /Collections.
|
|
1761
|
+
*/
|
|
1762
|
+
createCollection(options: CreateCollectionOptions): Promise<{
|
|
1763
|
+
Id: string;
|
|
1764
|
+
}>;
|
|
1765
|
+
/**
|
|
1766
|
+
* Adds items to an existing BoxSet / Collection via POST /Collections/{collectionId}/Items.
|
|
1767
|
+
*/
|
|
1768
|
+
addToCollection(collectionId: string, itemIds: string | string[]): Promise<void>;
|
|
1769
|
+
/**
|
|
1770
|
+
* Removes items from an existing BoxSet / Collection via DELETE /Collections/{collectionId}/Items.
|
|
1771
|
+
*/
|
|
1772
|
+
removeFromCollection(collectionId: string, itemIds: string | string[]): Promise<void>;
|
|
1773
|
+
}
|
|
1774
|
+
|
|
1775
|
+
declare class DisplayPreferencesModule {
|
|
1776
|
+
private http;
|
|
1777
|
+
private getUserId;
|
|
1778
|
+
private defaultClient;
|
|
1779
|
+
constructor(http: HttpTransport, getUserId: () => string, defaultClient?: string);
|
|
1780
|
+
private resolveUserId;
|
|
1781
|
+
/**
|
|
1782
|
+
* Retrieves the user's display preferences for a specific folder or view.
|
|
1783
|
+
* GET /DisplayPreferences/{displayPreferencesId}
|
|
1784
|
+
*/
|
|
1785
|
+
getDisplayPreferences(displayPreferencesId: string, options?: GetDisplayPreferencesOptions): Promise<DisplayPreferencesDto>;
|
|
1786
|
+
/**
|
|
1787
|
+
* Updates display preferences for a specific folder or view.
|
|
1788
|
+
* POST /DisplayPreferences/{displayPreferencesId}
|
|
1789
|
+
*/
|
|
1790
|
+
updateDisplayPreferences(displayPreferencesId: string, preferences: DisplayPreferencesDto, options?: UpdateDisplayPreferencesOptions): Promise<void>;
|
|
1791
|
+
/**
|
|
1792
|
+
* Sets a custom client-specific key-value pair in CustomPrefs.
|
|
1793
|
+
*/
|
|
1794
|
+
setCustomPreference(displayPreferencesId: string, key: string, value: string, options?: UpdateDisplayPreferencesOptions): Promise<DisplayPreferencesDto>;
|
|
1795
|
+
/**
|
|
1796
|
+
* Updates sort field and order preferences for a view.
|
|
1797
|
+
*/
|
|
1798
|
+
setSortPreferences(displayPreferencesId: string, sortBy: string, sortOrder: 'Ascending' | 'Descending', options?: UpdateDisplayPreferencesOptions): Promise<DisplayPreferencesDto>;
|
|
1799
|
+
/**
|
|
1800
|
+
* Sets the view presentation layout type (e.g. 'Poster', 'Thumb', 'Banner', 'List').
|
|
1801
|
+
*/
|
|
1802
|
+
setViewType(displayPreferencesId: string, viewType: string, options?: UpdateDisplayPreferencesOptions): Promise<DisplayPreferencesDto>;
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1136
1805
|
interface CacheRecord<T = unknown> {
|
|
1137
1806
|
key: string;
|
|
1138
1807
|
data: T;
|
|
@@ -1185,6 +1854,14 @@ declare class JellyfinClient {
|
|
|
1185
1854
|
readonly nextUp: NextUpModule;
|
|
1186
1855
|
readonly latest: LatestModule;
|
|
1187
1856
|
readonly transcode: TranscodeModule;
|
|
1857
|
+
readonly websocket: WebSocketModule;
|
|
1858
|
+
readonly sessions: SessionsModule;
|
|
1859
|
+
readonly quickConnect: QuickConnectModule;
|
|
1860
|
+
readonly trickplay: TrickplayModule;
|
|
1861
|
+
readonly chapters: ChaptersModule;
|
|
1862
|
+
readonly genres: GenresModule;
|
|
1863
|
+
readonly collections: CollectionsModule;
|
|
1864
|
+
readonly displayPreferences: DisplayPreferencesModule;
|
|
1188
1865
|
private http;
|
|
1189
1866
|
private storage;
|
|
1190
1867
|
private cache;
|
|
@@ -1261,4 +1938,4 @@ declare class JellyfinAuthError extends JellyfinApiError {
|
|
|
1261
1938
|
constructor(message?: string, status?: number, endpoint?: string);
|
|
1262
1939
|
}
|
|
1263
1940
|
|
|
1264
|
-
export { AUDIO_QUALITY_PRESETS, type ArtworkUrlOptions, type AudioHlsStreamOptions, type AudioQualityOption, type AudioQualityPresetKey, type AudioStreamOptions, AuthModule, type AuthenticationResult, type BaseItemDto, COMMON_SEARCH_FIELDS, type CacheAdapter, type CacheRecord, type ClientCapabilities, type ClientEventListener, type ClientEventType, type ClientInfo, type CreatePlaylistDto, type CreatePlaylistOptions, type DownloadItemOptions, type DownloadProgress, type DownloadRecord, type DownloadUrlOptions, FavoritesModule, type GetAlbumsOptions, type GetArtistsOptions, type GetEpisodesOptions, type GetLatestMediaOptions, type GetMoviesOptions, type GetNextUpOptions, type GetResumeItemsOptions, type GetSeasonsOptions, type GetSeriesOptions, type GetSongsOptions, type GetVideosOptions, HttpTransport, IndexedDBCacheAdapter, type ItemsResponse, JellyfinApiError, JellyfinAuthError, JellyfinClient, type JellyfinClientOptions, JellyfinError, LatestModule, LibraryModule, LocalStorageAdapter, type LyricLine, type LyricsDto, LyricsModule, MediaModule, type MediaSourceInfo, type MediaStreamInfo, MemoryCacheAdapter, MemoryStorage, NextUpModule, OfflineStorageManager, type PlaybackInfoOptions, type PlaybackInfoResponse, PlaybackModule, PlaylistsModule, type PublicSystemInfo, type RequestOptions, ResumeModule, SearchModule, type SearchOptions, type StopActiveEncodingOptions, type StorageAdapter, type SubtitleTrackInfo, type SubtitleUrlOptions, type SystemInfo, SystemModule, TranscodeModule, type UpdatePlaylistOptions, type UserDto, type UserItemDataDto, VIDEO_QUALITY_PRESETS, type VideoHlsStreamOptions, type VideoQualityOption, type VideoQualityPresetKey, type VideoStreamOptions, buildAuthHeader, cleanUrl, fetchWithCache, formatBitrate, generateDeviceId, getAudioQualityList, getDefaultStorage, getVideoQualityList, isV12OrHigher, isVersionAtLeast, parseSemVer, resolveAudioQuality, resolveVideoQuality };
|
|
1941
|
+
export { AUDIO_QUALITY_PRESETS, type ArtworkUrlOptions, type AudioHlsStreamOptions, type AudioQualityOption, type AudioQualityPresetKey, type AudioStreamOptions, AuthModule, type AuthenticationResult, type BaseItemDto, COMMON_SEARCH_FIELDS, type CacheAdapter, type CacheRecord, type ChapterImageOptions, type ChapterInfoDto, ChaptersModule, type ClientCapabilities, type ClientEventListener, type ClientEventType, type ClientInfo, CollectionsModule, type CreateCollectionOptions, type CreatePlaylistDto, type CreatePlaylistOptions, type DisplayPreferencesDto, DisplayPreferencesModule, type DownloadItemOptions, type DownloadProgress, type DownloadRecord, type DownloadUrlOptions, FavoritesModule, type GeneralCommandDto, type GeneralCommandType, GenresModule, type GetAlbumsOptions, type GetArtistsOptions, type GetCollectionItemsOptions, type GetCollectionsOptions, type GetDisplayPreferencesOptions, type GetEpisodesOptions, type GetGenresOptions, type GetLatestMediaOptions, type GetMediaSegmentsOptions, type GetMoviesOptions, type GetNextUpOptions, type GetResumeItemsOptions, type GetSeasonsOptions, type GetSeriesOptions, type GetSessionsOptions, type GetSongsOptions, type GetStudiosOptions, type GetVideosOptions, HttpTransport, IndexedDBCacheAdapter, type IntroCreditsMarkers, type ItemsResponse, JellyfinApiError, JellyfinAuthError, JellyfinClient, type JellyfinClientOptions, JellyfinError, LatestModule, type LibraryChangedData, LibraryModule, LocalStorageAdapter, type LyricLine, type LyricsDto, LyricsModule, type MarkerRange, MediaModule, type MediaSegmentDto, type MediaSegmentType, type MediaSourceInfo, type MediaStreamInfo, MemoryCacheAdapter, MemoryStorage, NextUpModule, OfflineStorageManager, type PlayCommandType, type PlaybackInfoOptions, type PlaybackInfoResponse, PlaybackModule, PlaylistsModule, type PlaystateCommand, type PublicSystemInfo, QuickConnectModule, type QuickConnectPollOptions, type QuickConnectResult, type QuickConnectState, type RemotePlayOptions, type RequestOptions, ResumeModule, SearchModule, type SearchOptions, type SessionInfoDto, type SessionMessageOptions, type SessionPlayState, SessionsModule, type StopActiveEncodingOptions, type StorageAdapter, type SubtitleTrackInfo, type SubtitleUrlOptions, type SystemInfo, SystemModule, type ThumbnailLookupOptions, type ThumbnailLookupResult, TranscodeModule, type TrickplayInfoDto, type TrickplayManifestInfo, type TrickplayManifestTile, TrickplayModule, type TrickplayStreamOptions, type UpdateDisplayPreferencesOptions, type UpdatePlaylistOptions, type UserDataChangedData, type UserDto, type UserItemDataDto, VIDEO_QUALITY_PRESETS, type VideoHlsStreamOptions, type VideoQualityOption, type VideoQualityPresetKey, type VideoStreamOptions, type WebSocketEventListener, type WebSocketInboundMessage, type WebSocketMessageType, WebSocketModule, type WebSocketModuleOptions, buildAuthHeader, cleanUrl, fetchWithCache, formatBitrate, generateDeviceId, getAudioQualityList, getDefaultStorage, getVideoQualityList, isV12OrHigher, isVersionAtLeast, parseSemVer, resolveAudioQuality, resolveVideoQuality };
|