@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 CHANGED
@@ -20,13 +20,7 @@ npm run check
20
20
  npm run build
21
21
  ```
22
22
 
23
- ## Локальная проверка перед публикацией
24
-
25
- ```bash
26
- npm run pack
27
- ```
28
-
29
- Для публикации:
23
+ ## Публикация
30
24
 
31
25
  ```bash
32
26
  npm run publish:public
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.1",
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
- ".": "./dist/index.d.ts",
10
- "./global": "./dist/global.d.ts",
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": [