@pulsesync/yamusic-types 0.0.1 → 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/README.md +1 -7
- package/dist/global.js +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.js +42 -0
- package/package.json +10 -3
package/README.md
CHANGED
package/dist/global.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -69,6 +69,32 @@ export interface PulseSyncProgressState {
|
|
|
69
69
|
remainingBufferedTime?: number;
|
|
70
70
|
[key: string]: unknown;
|
|
71
71
|
}
|
|
72
|
+
export type PulseSyncPageEntityType = 'album' | 'playlist' | 'artist';
|
|
73
|
+
export interface PulseSyncPageEntity {
|
|
74
|
+
readonly revision: number;
|
|
75
|
+
readonly type: PulseSyncPageEntityType;
|
|
76
|
+
readonly entity: unknown;
|
|
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
|
+
}
|
|
72
98
|
export interface PulseSyncObservableState<T> {
|
|
73
99
|
value?: T;
|
|
74
100
|
onChange?: (callback: (value: T) => void, options?: Record<string, unknown>) => (() => void) | void;
|
|
@@ -256,6 +282,10 @@ export interface PulseSyncApi {
|
|
|
256
282
|
setVolume: (volume: number) => void;
|
|
257
283
|
setProgress: (progress: number) => void;
|
|
258
284
|
playTrackById: (trackId: string, options?: PulseSyncTrackSelector) => void;
|
|
285
|
+
playPlaylistById: (playlistId: string, options?: PulseSyncTrackSelector & {
|
|
286
|
+
uuid?: string;
|
|
287
|
+
utmLink?: string;
|
|
288
|
+
}) => void;
|
|
259
289
|
addTrackToQueueById: (trackId: string, options?: PulseSyncTrackSelector) => void;
|
|
260
290
|
likeTrack: (trackId?: string, options?: PulseSyncTrackSelector) => boolean;
|
|
261
291
|
unlikeTrack: (trackId?: string, options?: PulseSyncTrackSelector) => boolean;
|
|
@@ -263,6 +293,10 @@ export interface PulseSyncApi {
|
|
|
263
293
|
undislikeTrack: (trackId?: string, options?: PulseSyncTrackSelector) => boolean;
|
|
264
294
|
isTrackLiked: (trackId?: string, albumId?: string) => boolean;
|
|
265
295
|
isTrackDisliked: (trackId?: string, albumId?: string) => boolean;
|
|
296
|
+
isPlaying: () => boolean;
|
|
297
|
+
getPlayerSnapshot: () => PulseSyncPlayerSnapshot;
|
|
298
|
+
getQueueSnapshot: () => PulseSyncQueueSnapshot;
|
|
299
|
+
getRouteSnapshot: () => PulseSyncRouteSnapshot;
|
|
266
300
|
getState: () => PulseSyncPlayerState | null | undefined;
|
|
267
301
|
getCurrentTrack: () => PulseSyncTrackMeta | undefined;
|
|
268
302
|
getQueue: () => PulseSyncQueueItem[] | undefined;
|
|
@@ -271,8 +305,51 @@ export interface PulseSyncApi {
|
|
|
271
305
|
getVolume: () => number | undefined;
|
|
272
306
|
getRepeatMode: () => PulseSyncRepeatMode | undefined;
|
|
273
307
|
isShuffle: () => boolean | undefined;
|
|
308
|
+
getPageEntity: (options?: {
|
|
309
|
+
includeArtistBrief?: boolean;
|
|
310
|
+
}) => Promise<PulseSyncPageEntity | null>;
|
|
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;
|
|
315
|
+
onPageEntityChange: (listener: (snapshot: PulseSyncPageEntity) => void) => () => void;
|
|
316
|
+
setTrackReplacement: (trackId: string, url: string, ownerId?: string) => boolean;
|
|
317
|
+
setTrackReplacements: (replacements: Readonly<Record<string, string>>, ownerId?: string) => number;
|
|
318
|
+
removeTrackReplacement: (trackId: string, ownerId?: string) => boolean;
|
|
319
|
+
clearTrackReplacements: (ownerId?: string) => boolean;
|
|
320
|
+
getDisplayMaxFps: () => number;
|
|
321
|
+
getPlatform: () => string;
|
|
322
|
+
getPremiumStatus: () => Promise<boolean>;
|
|
323
|
+
refreshPlayerBar: () => void;
|
|
274
324
|
getSettings: <TSettings extends AddonSettings = AddonSettings>(addonId: string) => AddonSettingsStore<TSettings>;
|
|
275
325
|
}
|
|
326
|
+
export declare const PULSESYNC_WEB_HOST_API_VERSION: 1;
|
|
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"];
|
|
328
|
+
export type PulseSyncWebHostApiV1RpcMethod = (typeof PULSESYNC_WEB_HOST_API_V1_RPC_METHODS)[number];
|
|
329
|
+
export type PulseSyncWebHostRpcApiV1 = {
|
|
330
|
+
readonly [TMethod in PulseSyncWebHostApiV1RpcMethod]: PulseSyncApi[TMethod] extends (...args: infer TArgs) => infer TResult ? (...args: TArgs) => Promise<Awaited<TResult>> : never;
|
|
331
|
+
};
|
|
332
|
+
export type PulseSyncWebHostApiV1 = PulseSyncWebHostRpcApiV1 & {
|
|
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;
|
|
337
|
+
onPageEntityChange: (listener: (snapshot: PulseSyncPageEntity) => void) => () => void;
|
|
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
|
+
};
|
|
276
353
|
export interface WolfyPlayerState {
|
|
277
354
|
speed: number;
|
|
278
355
|
status: PulseSyncPlayerStatus;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const PULSESYNC_WEB_HOST_API_VERSION = 1;
|
|
2
|
+
export const PULSESYNC_WEB_HOST_API_V1_RPC_METHODS = Object.freeze([
|
|
3
|
+
'playVibe',
|
|
4
|
+
'play',
|
|
5
|
+
'pause',
|
|
6
|
+
'togglePlayPause',
|
|
7
|
+
'next',
|
|
8
|
+
'previous',
|
|
9
|
+
'setRepeatMode',
|
|
10
|
+
'toggleShuffle',
|
|
11
|
+
'setVolume',
|
|
12
|
+
'setProgress',
|
|
13
|
+
'playTrackById',
|
|
14
|
+
'playPlaylistById',
|
|
15
|
+
'addTrackToQueueById',
|
|
16
|
+
'likeTrack',
|
|
17
|
+
'unlikeTrack',
|
|
18
|
+
'dislikeTrack',
|
|
19
|
+
'undislikeTrack',
|
|
20
|
+
'isTrackLiked',
|
|
21
|
+
'isTrackDisliked',
|
|
22
|
+
'isPlaying',
|
|
23
|
+
'getPlayerSnapshot',
|
|
24
|
+
'getQueueSnapshot',
|
|
25
|
+
'getRouteSnapshot',
|
|
26
|
+
'getCurrentTrack',
|
|
27
|
+
'getQueue',
|
|
28
|
+
'getProgress',
|
|
29
|
+
'getDuration',
|
|
30
|
+
'getVolume',
|
|
31
|
+
'getRepeatMode',
|
|
32
|
+
'isShuffle',
|
|
33
|
+
'getDisplayMaxFps',
|
|
34
|
+
'getPlatform',
|
|
35
|
+
'getPremiumStatus',
|
|
36
|
+
'refreshPlayerBar',
|
|
37
|
+
'getPageEntity',
|
|
38
|
+
'setTrackReplacement',
|
|
39
|
+
'setTrackReplacements',
|
|
40
|
+
'removeTrackReplacement',
|
|
41
|
+
'clearTrackReplacements',
|
|
42
|
+
]);
|
package/package.json
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulsesync/yamusic-types",
|
|
3
|
-
"version": "0.0.
|
|
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
|
+
"type": "module",
|
|
6
7
|
"sideEffects": false,
|
|
7
8
|
"types": "./dist/index.d.ts",
|
|
8
9
|
"exports": {
|
|
9
|
-
".":
|
|
10
|
-
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./global": {
|
|
15
|
+
"types": "./dist/global.d.ts",
|
|
16
|
+
"import": "./dist/global.js"
|
|
17
|
+
},
|
|
11
18
|
"./package.json": "./package.json"
|
|
12
19
|
},
|
|
13
20
|
"files": [
|