@pulsesync/yamusic-types 0.0.2 → 0.0.3

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/dist/index.d.ts CHANGED
@@ -75,6 +75,26 @@ export interface PulseSyncPageEntity {
75
75
  readonly type: PulseSyncPageEntityType;
76
76
  readonly entity: unknown;
77
77
  }
78
+ export interface PulseSyncPlayerSnapshot {
79
+ readonly status: PulseSyncPlayerStatus;
80
+ readonly isPlaying: boolean;
81
+ readonly track: PulseSyncTrackMeta | null;
82
+ readonly progress: number | PulseSyncProgressState | null;
83
+ readonly duration: number | null;
84
+ readonly volume: number | null;
85
+ readonly repeatMode: PulseSyncRepeatMode | null;
86
+ readonly shuffle: boolean;
87
+ }
88
+ export interface PulseSyncQueueSnapshot {
89
+ readonly currentIndex: number | null;
90
+ readonly items: readonly PulseSyncTrackMeta[];
91
+ }
92
+ export interface PulseSyncRouteSnapshot {
93
+ readonly href: string;
94
+ readonly pathname: string;
95
+ readonly search: string;
96
+ readonly hash: string;
97
+ }
78
98
  export interface PulseSyncObservableState<T> {
79
99
  value?: T;
80
100
  onChange?: (callback: (value: T) => void, options?: Record<string, unknown>) => (() => void) | void;
@@ -274,6 +294,9 @@ export interface PulseSyncApi {
274
294
  isTrackLiked: (trackId?: string, albumId?: string) => boolean;
275
295
  isTrackDisliked: (trackId?: string, albumId?: string) => boolean;
276
296
  isPlaying: () => boolean;
297
+ getPlayerSnapshot: () => PulseSyncPlayerSnapshot;
298
+ getQueueSnapshot: () => PulseSyncQueueSnapshot;
299
+ getRouteSnapshot: () => PulseSyncRouteSnapshot;
277
300
  getState: () => PulseSyncPlayerState | null | undefined;
278
301
  getCurrentTrack: () => PulseSyncTrackMeta | undefined;
279
302
  getQueue: () => PulseSyncQueueItem[] | undefined;
@@ -286,6 +309,9 @@ export interface PulseSyncApi {
286
309
  includeArtistBrief?: boolean;
287
310
  }) => Promise<PulseSyncPageEntity | null>;
288
311
  onCurrentTrackChange: (listener: (track: PulseSyncTrackMeta | null) => void) => () => void;
312
+ onPlayerSnapshotChange: (listener: (snapshot: PulseSyncPlayerSnapshot) => void) => () => void;
313
+ onQueueChange: (listener: (snapshot: PulseSyncQueueSnapshot) => void) => () => void;
314
+ onRouteChange: (listener: (snapshot: PulseSyncRouteSnapshot) => void) => () => void;
289
315
  onPageEntityChange: (listener: (snapshot: PulseSyncPageEntity) => void) => () => void;
290
316
  setTrackReplacement: (trackId: string, url: string, ownerId?: string) => boolean;
291
317
  setTrackReplacements: (replacements: Readonly<Record<string, string>>, ownerId?: string) => number;
@@ -298,15 +324,32 @@ export interface PulseSyncApi {
298
324
  getSettings: <TSettings extends AddonSettings = AddonSettings>(addonId: string) => AddonSettingsStore<TSettings>;
299
325
  }
300
326
  export declare const PULSESYNC_WEB_HOST_API_VERSION: 1;
301
- export declare const PULSESYNC_WEB_HOST_API_V1_RPC_METHODS: readonly ["playVibe", "play", "pause", "togglePlayPause", "next", "previous", "setRepeatMode", "toggleShuffle", "setVolume", "setProgress", "playTrackById", "playPlaylistById", "addTrackToQueueById", "likeTrack", "unlikeTrack", "dislikeTrack", "undislikeTrack", "isTrackLiked", "isTrackDisliked", "isPlaying", "getCurrentTrack", "getQueue", "getProgress", "getDuration", "getVolume", "getRepeatMode", "isShuffle", "getDisplayMaxFps", "getPlatform", "getPremiumStatus", "refreshPlayerBar", "getPageEntity", "setTrackReplacement", "setTrackReplacements", "removeTrackReplacement", "clearTrackReplacements"];
327
+ export declare const PULSESYNC_WEB_HOST_API_V1_RPC_METHODS: readonly ["playVibe", "play", "pause", "togglePlayPause", "next", "previous", "setRepeatMode", "toggleShuffle", "setVolume", "setProgress", "playTrackById", "playPlaylistById", "addTrackToQueueById", "likeTrack", "unlikeTrack", "dislikeTrack", "undislikeTrack", "isTrackLiked", "isTrackDisliked", "isPlaying", "getPlayerSnapshot", "getQueueSnapshot", "getRouteSnapshot", "getCurrentTrack", "getQueue", "getProgress", "getDuration", "getVolume", "getRepeatMode", "isShuffle", "getDisplayMaxFps", "getPlatform", "getPremiumStatus", "refreshPlayerBar", "getPageEntity", "setTrackReplacement", "setTrackReplacements", "removeTrackReplacement", "clearTrackReplacements"];
302
328
  export type PulseSyncWebHostApiV1RpcMethod = (typeof PULSESYNC_WEB_HOST_API_V1_RPC_METHODS)[number];
303
329
  export type PulseSyncWebHostRpcApiV1 = {
304
330
  readonly [TMethod in PulseSyncWebHostApiV1RpcMethod]: PulseSyncApi[TMethod] extends (...args: infer TArgs) => infer TResult ? (...args: TArgs) => Promise<Awaited<TResult>> : never;
305
331
  };
306
332
  export type PulseSyncWebHostApiV1 = PulseSyncWebHostRpcApiV1 & {
307
333
  onCurrentTrackChange: (listener: (track: PulseSyncTrackMeta | null) => void) => () => void;
334
+ onPlayerSnapshotChange: (listener: (snapshot: PulseSyncPlayerSnapshot) => void) => () => void;
335
+ onQueueChange: (listener: (snapshot: PulseSyncQueueSnapshot) => void) => () => void;
336
+ onRouteChange: (listener: (snapshot: PulseSyncRouteSnapshot) => void) => () => void;
308
337
  onPageEntityChange: (listener: (snapshot: PulseSyncPageEntity) => void) => () => void;
309
338
  };
339
+ export type PulseSyncPlayerApiV1 = {
340
+ getSnapshot: PulseSyncWebHostApiV1['getPlayerSnapshot'];
341
+ onChange: PulseSyncWebHostApiV1['onPlayerSnapshotChange'];
342
+ onQueueChange: PulseSyncWebHostApiV1['onQueueChange'];
343
+ onTrackChange: PulseSyncWebHostApiV1['onCurrentTrackChange'];
344
+ };
345
+ export type PulseSyncPageApiV1 = {
346
+ getSnapshot: PulseSyncWebHostApiV1['getPageEntity'];
347
+ onChange: PulseSyncWebHostApiV1['onPageEntityChange'];
348
+ };
349
+ export type PulseSyncRouterApiV1 = {
350
+ getSnapshot: PulseSyncWebHostApiV1['getRouteSnapshot'];
351
+ onChange: PulseSyncWebHostApiV1['onRouteChange'];
352
+ };
310
353
  export interface WolfyPlayerState {
311
354
  speed: number;
312
355
  status: PulseSyncPlayerStatus;
package/dist/index.js CHANGED
@@ -20,6 +20,9 @@ export const PULSESYNC_WEB_HOST_API_V1_RPC_METHODS = Object.freeze([
20
20
  'isTrackLiked',
21
21
  'isTrackDisliked',
22
22
  'isPlaying',
23
+ 'getPlayerSnapshot',
24
+ 'getQueueSnapshot',
25
+ 'getRouteSnapshot',
23
26
  'getCurrentTrack',
24
27
  'getQueue',
25
28
  'getProgress',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pulsesync/yamusic-types",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "TypeScript declaration package for PulseSync YaMusic addon development",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "type": "module",