@pulsesync/yamusic-types 0.0.2 → 0.0.4

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
@@ -17,6 +17,9 @@ export interface PulseSyncTrackSelector {
17
17
  from?: string;
18
18
  position?: 'next' | 'last' | string;
19
19
  }
20
+ export interface PulseSyncToastOptions {
21
+ durationMs?: number;
22
+ }
20
23
  export interface PulseSyncTrackArtist {
21
24
  id?: string | number;
22
25
  name?: string;
@@ -75,6 +78,26 @@ export interface PulseSyncPageEntity {
75
78
  readonly type: PulseSyncPageEntityType;
76
79
  readonly entity: unknown;
77
80
  }
81
+ export interface PulseSyncPlayerSnapshot {
82
+ readonly status: PulseSyncPlayerStatus;
83
+ readonly isPlaying: boolean;
84
+ readonly track: PulseSyncTrackMeta | null;
85
+ readonly progress: number | PulseSyncProgressState | null;
86
+ readonly duration: number | null;
87
+ readonly volume: number | null;
88
+ readonly repeatMode: PulseSyncRepeatMode | null;
89
+ readonly shuffle: boolean;
90
+ }
91
+ export interface PulseSyncQueueSnapshot {
92
+ readonly currentIndex: number | null;
93
+ readonly items: readonly PulseSyncTrackMeta[];
94
+ }
95
+ export interface PulseSyncRouteSnapshot {
96
+ readonly href: string;
97
+ readonly pathname: string;
98
+ readonly search: string;
99
+ readonly hash: string;
100
+ }
78
101
  export interface PulseSyncObservableState<T> {
79
102
  value?: T;
80
103
  onChange?: (callback: (value: T) => void, options?: Record<string, unknown>) => (() => void) | void;
@@ -274,6 +297,9 @@ export interface PulseSyncApi {
274
297
  isTrackLiked: (trackId?: string, albumId?: string) => boolean;
275
298
  isTrackDisliked: (trackId?: string, albumId?: string) => boolean;
276
299
  isPlaying: () => boolean;
300
+ getPlayerSnapshot: () => PulseSyncPlayerSnapshot;
301
+ getQueueSnapshot: () => PulseSyncQueueSnapshot;
302
+ getRouteSnapshot: () => PulseSyncRouteSnapshot;
277
303
  getState: () => PulseSyncPlayerState | null | undefined;
278
304
  getCurrentTrack: () => PulseSyncTrackMeta | undefined;
279
305
  getQueue: () => PulseSyncQueueItem[] | undefined;
@@ -286,6 +312,9 @@ export interface PulseSyncApi {
286
312
  includeArtistBrief?: boolean;
287
313
  }) => Promise<PulseSyncPageEntity | null>;
288
314
  onCurrentTrackChange: (listener: (track: PulseSyncTrackMeta | null) => void) => () => void;
315
+ onPlayerSnapshotChange: (listener: (snapshot: PulseSyncPlayerSnapshot) => void) => () => void;
316
+ onQueueChange: (listener: (snapshot: PulseSyncQueueSnapshot) => void) => () => void;
317
+ onRouteChange: (listener: (snapshot: PulseSyncRouteSnapshot) => void) => () => void;
289
318
  onPageEntityChange: (listener: (snapshot: PulseSyncPageEntity) => void) => () => void;
290
319
  setTrackReplacement: (trackId: string, url: string, ownerId?: string) => boolean;
291
320
  setTrackReplacements: (replacements: Readonly<Record<string, string>>, ownerId?: string) => number;
@@ -294,19 +323,37 @@ export interface PulseSyncApi {
294
323
  getDisplayMaxFps: () => number;
295
324
  getPlatform: () => string;
296
325
  getPremiumStatus: () => Promise<boolean>;
326
+ showToast: (message: string, options?: PulseSyncToastOptions, ownerId?: string) => Promise<void>;
297
327
  refreshPlayerBar: () => void;
298
328
  getSettings: <TSettings extends AddonSettings = AddonSettings>(addonId: string) => AddonSettingsStore<TSettings>;
299
329
  }
300
330
  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"];
331
+ 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", "showToast", "refreshPlayerBar", "getPageEntity", "setTrackReplacement", "setTrackReplacements", "removeTrackReplacement", "clearTrackReplacements"];
302
332
  export type PulseSyncWebHostApiV1RpcMethod = (typeof PULSESYNC_WEB_HOST_API_V1_RPC_METHODS)[number];
303
333
  export type PulseSyncWebHostRpcApiV1 = {
304
334
  readonly [TMethod in PulseSyncWebHostApiV1RpcMethod]: PulseSyncApi[TMethod] extends (...args: infer TArgs) => infer TResult ? (...args: TArgs) => Promise<Awaited<TResult>> : never;
305
335
  };
306
336
  export type PulseSyncWebHostApiV1 = PulseSyncWebHostRpcApiV1 & {
307
337
  onCurrentTrackChange: (listener: (track: PulseSyncTrackMeta | null) => void) => () => void;
338
+ onPlayerSnapshotChange: (listener: (snapshot: PulseSyncPlayerSnapshot) => void) => () => void;
339
+ onQueueChange: (listener: (snapshot: PulseSyncQueueSnapshot) => void) => () => void;
340
+ onRouteChange: (listener: (snapshot: PulseSyncRouteSnapshot) => void) => () => void;
308
341
  onPageEntityChange: (listener: (snapshot: PulseSyncPageEntity) => void) => () => void;
309
342
  };
343
+ export type PulseSyncPlayerApiV1 = {
344
+ getSnapshot: PulseSyncWebHostApiV1['getPlayerSnapshot'];
345
+ onChange: PulseSyncWebHostApiV1['onPlayerSnapshotChange'];
346
+ onQueueChange: PulseSyncWebHostApiV1['onQueueChange'];
347
+ onTrackChange: PulseSyncWebHostApiV1['onCurrentTrackChange'];
348
+ };
349
+ export type PulseSyncPageApiV1 = {
350
+ getSnapshot: PulseSyncWebHostApiV1['getPageEntity'];
351
+ onChange: PulseSyncWebHostApiV1['onPageEntityChange'];
352
+ };
353
+ export type PulseSyncRouterApiV1 = {
354
+ getSnapshot: PulseSyncWebHostApiV1['getRouteSnapshot'];
355
+ onChange: PulseSyncWebHostApiV1['onRouteChange'];
356
+ };
310
357
  export interface WolfyPlayerState {
311
358
  speed: number;
312
359
  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',
@@ -30,6 +33,7 @@ export const PULSESYNC_WEB_HOST_API_V1_RPC_METHODS = Object.freeze([
30
33
  'getDisplayMaxFps',
31
34
  'getPlatform',
32
35
  'getPremiumStatus',
36
+ 'showToast',
33
37
  'refreshPlayerBar',
34
38
  'getPageEntity',
35
39
  'setTrackReplacement',
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.4",
4
4
  "description": "TypeScript declaration package for PulseSync YaMusic addon development",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "type": "module",