@lox-audioserver/node-librespot 0.3.2
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/Cargo.lock +3597 -0
- package/Cargo.toml +32 -0
- package/README.md +105 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +151 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.js +3 -0
- package/package.json +64 -0
- package/prebuilds/darwin-arm64/librespot_addon.node +0 -0
- package/prebuilds/linux-arm64-gnu/librespot_addon.node +0 -0
- package/prebuilds/linux-x64-gnu/librespot_addon.node +0 -0
- package/scripts/postinstall.js +59 -0
- package/scripts/prebuild.js +23 -0
- package/scripts/prepare-prebuilds.js +44 -0
- package/scripts/test-connect.js +113 -0
- package/scripts/test-service.js +205 -0
- package/scripts/test.js +112 -0
- package/scripts/update-librespot.sh +13 -0
- package/src/index.ts +232 -0
- package/src/lib.rs +2305 -0
- package/src/types.ts +129 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/* Auto-generated from the addon shape; keep in sync with N-API exports. */
|
|
2
|
+
|
|
3
|
+
/** Options used to create a librespot session. */
|
|
4
|
+
export interface CreateSessionOpts {
|
|
5
|
+
accessToken?: string;
|
|
6
|
+
clientId?: string;
|
|
7
|
+
deviceName?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Options for streaming a track. */
|
|
11
|
+
export interface StreamTrackOpts {
|
|
12
|
+
uri: string;
|
|
13
|
+
startPositionMs?: number;
|
|
14
|
+
bitrate?: number;
|
|
15
|
+
output?: string;
|
|
16
|
+
emitEvents?: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Options for downloading raw (decrypted) audio bytes. */
|
|
20
|
+
export interface DownloadTrackOpts {
|
|
21
|
+
uri: string;
|
|
22
|
+
bitrate?: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Result of a credentials login flow. */
|
|
26
|
+
export interface CredentialsResult {
|
|
27
|
+
username: string;
|
|
28
|
+
credentialsJson: string;
|
|
29
|
+
credentials_json?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Helper signature for OAuth-based credentials minting. */
|
|
33
|
+
export type LoginWithAccessToken = (
|
|
34
|
+
accessToken: string,
|
|
35
|
+
deviceName?: string,
|
|
36
|
+
) => Promise<CredentialsResult>;
|
|
37
|
+
|
|
38
|
+
export type LibrespotEventType =
|
|
39
|
+
| 'playing'
|
|
40
|
+
| 'paused'
|
|
41
|
+
| 'loading'
|
|
42
|
+
| 'stopped'
|
|
43
|
+
| 'end_of_track'
|
|
44
|
+
| 'unavailable'
|
|
45
|
+
| 'volume'
|
|
46
|
+
| 'position_correction'
|
|
47
|
+
| 'health'
|
|
48
|
+
| 'error'
|
|
49
|
+
| 'metric'
|
|
50
|
+
| 'preloading'
|
|
51
|
+
| 'time_to_preload'
|
|
52
|
+
| 'play_request_id'
|
|
53
|
+
| 'other';
|
|
54
|
+
|
|
55
|
+
export type LibrespotErrorCode =
|
|
56
|
+
| 'audio_key_error'
|
|
57
|
+
| 'no_pcm'
|
|
58
|
+
| 'end_of_track'
|
|
59
|
+
| 'pcm_missing'
|
|
60
|
+
| 'pcm_stalled'
|
|
61
|
+
| 'pcm_ok'
|
|
62
|
+
| 'unavailable'
|
|
63
|
+
| 'unknown';
|
|
64
|
+
|
|
65
|
+
/** Event payload emitted by the connect host. */
|
|
66
|
+
export interface ConnectEvent {
|
|
67
|
+
type: LibrespotEventType;
|
|
68
|
+
deviceId?: string;
|
|
69
|
+
sessionId?: string;
|
|
70
|
+
trackId?: string;
|
|
71
|
+
uri?: string;
|
|
72
|
+
title?: string;
|
|
73
|
+
artist?: string;
|
|
74
|
+
album?: string;
|
|
75
|
+
durationMs?: number;
|
|
76
|
+
positionMs?: number;
|
|
77
|
+
volume?: number;
|
|
78
|
+
errorCode?: LibrespotErrorCode;
|
|
79
|
+
errorMessage?: string;
|
|
80
|
+
metricName?: string;
|
|
81
|
+
metricValueMs?: number;
|
|
82
|
+
metricMessage?: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Log payload emitted by the native module. */
|
|
86
|
+
export interface LogEvent {
|
|
87
|
+
level: string;
|
|
88
|
+
message: string;
|
|
89
|
+
scope?: string;
|
|
90
|
+
deviceId?: string;
|
|
91
|
+
sessionId?: string;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Handle returned when hosting a connect device. */
|
|
95
|
+
export interface ConnectHandle {
|
|
96
|
+
stop(): void;
|
|
97
|
+
shutdown(): void;
|
|
98
|
+
close(): void;
|
|
99
|
+
play(): void;
|
|
100
|
+
pause(): void;
|
|
101
|
+
next(): void;
|
|
102
|
+
prev(): void;
|
|
103
|
+
sampleRate: number;
|
|
104
|
+
channels: number;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** Handle to a librespot session. */
|
|
108
|
+
export interface LibrespotSession {
|
|
109
|
+
streamTrack(
|
|
110
|
+
opts: StreamTrackOpts,
|
|
111
|
+
onChunk: (chunk: Buffer) => void,
|
|
112
|
+
onEvent?: (event: ConnectEvent) => void,
|
|
113
|
+
onLog?: (event: LogEvent) => void,
|
|
114
|
+
): StreamHandle;
|
|
115
|
+
close(): Promise<void>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface StreamHandle {
|
|
119
|
+
stop(): void;
|
|
120
|
+
sampleRate: number;
|
|
121
|
+
channels: number;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** Handle for a raw download stream. */
|
|
125
|
+
export interface DownloadHandle {
|
|
126
|
+
stop(): void;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export declare function setLogLevel(level: string): void;
|