@basmilius/apple-devices 0.7.2 → 0.8.0
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.mts +253 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +14 -13
- package/dist/airplay/client.d.ts +0 -16
- package/dist/airplay/const.d.ts +0 -4
- package/dist/airplay/device.d.ts +0 -28
- package/dist/airplay/index.d.ts +0 -2
- package/dist/airplay/remote.d.ts +0 -25
- package/dist/airplay/state.d.ts +0 -56
- package/dist/airplay/volume.d.ts +0 -9
- package/dist/companion-link/const.d.ts +0 -1
- package/dist/companion-link/device.d.ts +0 -33
- package/dist/companion-link/index.d.ts +0 -2
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -2038
- package/dist/model/apple-tv.d.ts +0 -37
- package/dist/model/homepod-base.d.ts +0 -31
- package/dist/model/homepod-mini.d.ts +0 -2
- package/dist/model/homepod.d.ts +0 -2
- package/dist/model/index.d.ts +0 -3
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from "node:events";
|
|
3
|
+
import * as AirPlay from "@basmilius/apple-airplay";
|
|
4
|
+
import { Proto, Protocol } from "@basmilius/apple-airplay";
|
|
5
|
+
import { AccessoryCredentials, DiscoveryResult, TimingServer } from "@basmilius/apple-common";
|
|
6
|
+
import { AttentionState, ButtonPressType, HidCommandKey, LaunchableApp, MediaControlCommandKey, Protocol as Protocol$1, UserAccount } from "@basmilius/apple-companion-link";
|
|
7
|
+
|
|
8
|
+
//#region src/airplay/const.d.ts
|
|
9
|
+
declare const PROTOCOL: unique symbol;
|
|
10
|
+
declare const STATE_SUBSCRIBE_SYMBOL: unique symbol;
|
|
11
|
+
declare const STATE_UNSUBSCRIBE_SYMBOL: unique symbol;
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/airplay/remote.d.ts
|
|
14
|
+
declare class export_default$8 {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(device: export_default);
|
|
17
|
+
up(): Promise<void>;
|
|
18
|
+
down(): Promise<void>;
|
|
19
|
+
left(): Promise<void>;
|
|
20
|
+
right(): Promise<void>;
|
|
21
|
+
menu(): Promise<void>;
|
|
22
|
+
play(): Promise<void>;
|
|
23
|
+
playPause(): Promise<void>;
|
|
24
|
+
pause(): Promise<void>;
|
|
25
|
+
next(): Promise<void>;
|
|
26
|
+
previous(): Promise<void>;
|
|
27
|
+
suspend(): Promise<void>;
|
|
28
|
+
select(): Promise<void>;
|
|
29
|
+
wake(): Promise<void>;
|
|
30
|
+
home(): Promise<void>;
|
|
31
|
+
volumeUp(): Promise<void>;
|
|
32
|
+
volumeDown(): Promise<void>;
|
|
33
|
+
mute(): Promise<void>;
|
|
34
|
+
doublePress(usePage: number, usage: number): Promise<void>;
|
|
35
|
+
longPress(usePage: number, usage: number, duration?: number): Promise<void>;
|
|
36
|
+
pressAndRelease(usePage: number, usage: number): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/airplay/client.d.ts
|
|
40
|
+
declare class Client {
|
|
41
|
+
#private;
|
|
42
|
+
get bundleIdentifier(): string;
|
|
43
|
+
get displayName(): string;
|
|
44
|
+
get playbackQueue(): Proto.PlaybackQueue | null;
|
|
45
|
+
get playbackState(): Proto.PlaybackState_Enum;
|
|
46
|
+
get playbackStateTimestamp(): number;
|
|
47
|
+
get supportedCommands(): Proto.CommandInfo[];
|
|
48
|
+
constructor(bundleIdentifier: string, displayName: string);
|
|
49
|
+
isCommandSupported(command: Proto.Command): boolean;
|
|
50
|
+
setPlaybackQueue(playbackQueue: Proto.PlaybackQueue): void;
|
|
51
|
+
setPlaybackState(playbackState: Proto.PlaybackState_Enum, playbackStateTimestamp: number): void;
|
|
52
|
+
setSupportedCommands(supportedCommands: Proto.CommandInfo[]): void;
|
|
53
|
+
updateContentItem(item: Proto.ContentItem): void;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/airplay/state.d.ts
|
|
57
|
+
type EventMap$4 = {
|
|
58
|
+
readonly clients: [Record<string, Client>];
|
|
59
|
+
readonly deviceInfo: [Proto.DeviceInfoMessage];
|
|
60
|
+
readonly deviceInfoUpdate: [Proto.DeviceInfoMessage];
|
|
61
|
+
readonly originClientProperties: [Proto.OriginClientPropertiesMessage];
|
|
62
|
+
readonly playerClientProperties: [Proto.PlayerClientPropertiesMessage];
|
|
63
|
+
readonly removeClient: [Proto.RemoveClientMessage];
|
|
64
|
+
readonly sendCommandResult: [Proto.SendCommandResultMessage];
|
|
65
|
+
readonly setArtwork: [Proto.SetArtworkMessage];
|
|
66
|
+
readonly setDefaultSupportedCommands: [Proto.SetDefaultSupportedCommandsMessage];
|
|
67
|
+
readonly setNowPlayingClient: [Proto.SetNowPlayingClientMessage];
|
|
68
|
+
readonly setNowPlayingPlayer: [Proto.SetNowPlayingPlayerMessage];
|
|
69
|
+
readonly setState: [Proto.SetStateMessage];
|
|
70
|
+
readonly updateClient: [Proto.UpdateClientMessage];
|
|
71
|
+
readonly updateContentItem: [Proto.UpdateContentItemMessage];
|
|
72
|
+
readonly updateContentItemArtwork: [Proto.UpdateContentItemArtworkMessage];
|
|
73
|
+
readonly updatePlayer: [Proto.UpdatePlayerMessage];
|
|
74
|
+
readonly updateOutputDevice: [Proto.UpdateOutputDeviceMessage];
|
|
75
|
+
readonly volumeControlAvailability: [boolean, Proto.VolumeCapabilities_Enum];
|
|
76
|
+
readonly volumeControlCapabilitiesDidChange: [boolean, Proto.VolumeCapabilities_Enum];
|
|
77
|
+
readonly volumeDidChange: [number];
|
|
78
|
+
};
|
|
79
|
+
declare class export_default$7 extends EventEmitter<EventMap$4> {
|
|
80
|
+
#private;
|
|
81
|
+
get clients(): Record<string, Client>;
|
|
82
|
+
get nowPlayingClient(): Client | null;
|
|
83
|
+
get outputDeviceUID(): string | null;
|
|
84
|
+
get volume(): number;
|
|
85
|
+
get volumeAvailable(): boolean;
|
|
86
|
+
get volumeCapabilities(): Proto.VolumeCapabilities_Enum;
|
|
87
|
+
constructor(device: export_default);
|
|
88
|
+
[STATE_SUBSCRIBE_SYMBOL](): void;
|
|
89
|
+
[STATE_UNSUBSCRIBE_SYMBOL](): void;
|
|
90
|
+
clear(): void;
|
|
91
|
+
onDeviceInfo(message: Proto.DeviceInfoMessage): void;
|
|
92
|
+
onDeviceInfoUpdate(message: Proto.DeviceInfoMessage): void;
|
|
93
|
+
onOriginClientProperties(message: Proto.OriginClientPropertiesMessage): void;
|
|
94
|
+
onPlayerClientProperties(message: Proto.PlayerClientPropertiesMessage): void;
|
|
95
|
+
onRemoveClient(message: Proto.RemoveClientMessage): void;
|
|
96
|
+
onSendCommandResult(message: Proto.SendCommandResultMessage): void;
|
|
97
|
+
onSetArtwork(message: Proto.SetArtworkMessage): void;
|
|
98
|
+
onSetDefaultSupportedCommands(message: Proto.SetDefaultSupportedCommandsMessage): void;
|
|
99
|
+
onSetNowPlayingClient(message: Proto.SetNowPlayingClientMessage): void;
|
|
100
|
+
onSetNowPlayingPlayer(message: Proto.SetNowPlayingPlayerMessage): void;
|
|
101
|
+
onSetState(message: Proto.SetStateMessage): void;
|
|
102
|
+
onUpdateContentItem(message: Proto.UpdateContentItemMessage): void;
|
|
103
|
+
onUpdateContentItemArtwork(message: Proto.UpdateContentItemArtworkMessage): void;
|
|
104
|
+
onUpdatePlayer(message: Proto.UpdatePlayerMessage): void;
|
|
105
|
+
onUpdateClient(message: Proto.UpdateClientMessage): void;
|
|
106
|
+
onUpdateOutputDevice(message: Proto.UpdateOutputDeviceMessage): void;
|
|
107
|
+
onVolumeControlAvailability(message: Proto.VolumeControlAvailabilityMessage): void;
|
|
108
|
+
onVolumeControlCapabilitiesDidChange(message: Proto.VolumeControlCapabilitiesDidChangeMessage): void;
|
|
109
|
+
onVolumeDidChange(message: Proto.VolumeDidChangeMessage): void;
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/airplay/volume.d.ts
|
|
113
|
+
declare class export_default$6 {
|
|
114
|
+
#private;
|
|
115
|
+
constructor(device: export_default);
|
|
116
|
+
down(): Promise<void>;
|
|
117
|
+
up(): Promise<void>;
|
|
118
|
+
get(): Promise<number>;
|
|
119
|
+
set(volume: number): Promise<void>;
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/airplay/device.d.ts
|
|
123
|
+
type EventMap$3 = {
|
|
124
|
+
connected: [];
|
|
125
|
+
disconnected: [unexpected: boolean];
|
|
126
|
+
};
|
|
127
|
+
declare class export_default extends EventEmitter<EventMap$3> {
|
|
128
|
+
#private;
|
|
129
|
+
get [PROTOCOL](): Protocol;
|
|
130
|
+
get discoveryResult(): DiscoveryResult;
|
|
131
|
+
set discoveryResult(discoveryResult: DiscoveryResult);
|
|
132
|
+
get isConnected(): boolean;
|
|
133
|
+
get remote(): export_default$8;
|
|
134
|
+
get state(): export_default$7;
|
|
135
|
+
get volume(): export_default$6;
|
|
136
|
+
get timingServer(): TimingServer | undefined;
|
|
137
|
+
set timingServer(timingServer: TimingServer | undefined);
|
|
138
|
+
constructor(discoveryResult: DiscoveryResult);
|
|
139
|
+
connect(): Promise<void>;
|
|
140
|
+
disconnect(): Promise<void>;
|
|
141
|
+
disconnectSafely(): Promise<void>;
|
|
142
|
+
requestPlaybackQueue(length: number): Promise<void>;
|
|
143
|
+
sendCommand(command: Proto.Command, options?: Proto.CommandOptions): Promise<void>;
|
|
144
|
+
setCredentials(credentials: AccessoryCredentials): Promise<void>;
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
//#region src/companion-link/const.d.ts
|
|
148
|
+
declare const PROTOCOL$1: unique symbol;
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/companion-link/device.d.ts
|
|
151
|
+
type EventMap$2 = {
|
|
152
|
+
connected: [];
|
|
153
|
+
disconnected: [unexpected: boolean];
|
|
154
|
+
power: [AttentionState];
|
|
155
|
+
};
|
|
156
|
+
declare class export_default$2 extends EventEmitter<EventMap$2> {
|
|
157
|
+
#private;
|
|
158
|
+
get [PROTOCOL$1](): Protocol$1;
|
|
159
|
+
get discoveryResult(): DiscoveryResult;
|
|
160
|
+
set discoveryResult(discoveryResult: DiscoveryResult);
|
|
161
|
+
get isConnected(): boolean;
|
|
162
|
+
constructor(discoveryResult: DiscoveryResult);
|
|
163
|
+
connect(): Promise<void>;
|
|
164
|
+
disconnect(): Promise<void>;
|
|
165
|
+
disconnectSafely(): Promise<void>;
|
|
166
|
+
setCredentials(credentials: AccessoryCredentials): Promise<void>;
|
|
167
|
+
getAttentionState(): Promise<AttentionState>;
|
|
168
|
+
getLaunchableApps(): Promise<LaunchableApp[]>;
|
|
169
|
+
getUserAccounts(): Promise<UserAccount[]>;
|
|
170
|
+
launchApp(bundleId: string): Promise<void>;
|
|
171
|
+
launchUrl(url: string): Promise<void>;
|
|
172
|
+
mediaControlCommand(command: MediaControlCommandKey, content?: object): Promise<void>;
|
|
173
|
+
pressButton(command: HidCommandKey, type?: ButtonPressType, holdDelayMs?: number): Promise<void>;
|
|
174
|
+
switchUserAccount(accountId: string): Promise<void>;
|
|
175
|
+
onSystemStatus(data: {
|
|
176
|
+
readonly state: number;
|
|
177
|
+
}): Promise<void>;
|
|
178
|
+
onTVSystemStatus(data: {
|
|
179
|
+
readonly state: number;
|
|
180
|
+
}): Promise<void>;
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src/model/apple-tv.d.ts
|
|
184
|
+
type EventMap$1 = {
|
|
185
|
+
connected: [];
|
|
186
|
+
disconnected: [unexpected: boolean];
|
|
187
|
+
};
|
|
188
|
+
declare class export_default$1 extends EventEmitter<EventMap$1> {
|
|
189
|
+
#private;
|
|
190
|
+
get airplay(): export_default;
|
|
191
|
+
get companionLink(): export_default$2;
|
|
192
|
+
get bundleIdentifier(): string | null;
|
|
193
|
+
get displayName(): string | null;
|
|
194
|
+
get isConnected(): boolean;
|
|
195
|
+
get isPlaying(): boolean;
|
|
196
|
+
get playbackQueue(): AirPlay.Proto.PlaybackQueue | null;
|
|
197
|
+
get playbackState(): AirPlay.Proto.PlaybackState_Enum;
|
|
198
|
+
get playbackStateTimestamp(): number;
|
|
199
|
+
constructor(airplayDiscoveryResult: DiscoveryResult, companionLinkDiscoveryResult: DiscoveryResult);
|
|
200
|
+
connect(credentials: AccessoryCredentials): Promise<void>;
|
|
201
|
+
disconnect(): Promise<void>;
|
|
202
|
+
turnOff(): Promise<void>;
|
|
203
|
+
turnOn(): Promise<void>;
|
|
204
|
+
pause(): Promise<void>;
|
|
205
|
+
playPause(): Promise<void>;
|
|
206
|
+
play(): Promise<void>;
|
|
207
|
+
stop(): Promise<void>;
|
|
208
|
+
next(): Promise<void>;
|
|
209
|
+
previous(): Promise<void>;
|
|
210
|
+
volumeDown(): Promise<void>;
|
|
211
|
+
volumeMute(): Promise<void>;
|
|
212
|
+
volumeUp(): Promise<void>;
|
|
213
|
+
getCommandInfo(command: AirPlay.Proto.Command): Promise<AirPlay.Proto.CommandInfo | null>;
|
|
214
|
+
isCommandSupported(command: AirPlay.Proto.Command): Promise<boolean>;
|
|
215
|
+
}
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region src/model/homepod-base.d.ts
|
|
218
|
+
type EventMap = {
|
|
219
|
+
connected: [];
|
|
220
|
+
disconnected: [unexpected: boolean];
|
|
221
|
+
};
|
|
222
|
+
declare abstract class export_default$5 extends EventEmitter<EventMap> {
|
|
223
|
+
#private;
|
|
224
|
+
get airplay(): export_default;
|
|
225
|
+
get bundleIdentifier(): string | null;
|
|
226
|
+
get displayName(): string | null;
|
|
227
|
+
get isConnected(): boolean;
|
|
228
|
+
get isPlaying(): boolean;
|
|
229
|
+
get playbackQueue(): AirPlay.Proto.PlaybackQueue | null;
|
|
230
|
+
get playbackState(): AirPlay.Proto.PlaybackState_Enum;
|
|
231
|
+
get playbackStateTimestamp(): number;
|
|
232
|
+
get volume(): number;
|
|
233
|
+
constructor(discoveryResult: DiscoveryResult);
|
|
234
|
+
connect(): Promise<void>;
|
|
235
|
+
disconnect(): Promise<void>;
|
|
236
|
+
pause(): Promise<void>;
|
|
237
|
+
playPause(): Promise<void>;
|
|
238
|
+
play(): Promise<void>;
|
|
239
|
+
stop(): Promise<void>;
|
|
240
|
+
next(): Promise<void>;
|
|
241
|
+
previous(): Promise<void>;
|
|
242
|
+
getCommandInfo(command: AirPlay.Proto.Command): Promise<AirPlay.Proto.CommandInfo | null>;
|
|
243
|
+
isCommandSupported(command: AirPlay.Proto.Command): Promise<boolean>;
|
|
244
|
+
}
|
|
245
|
+
//#endregion
|
|
246
|
+
//#region src/model/homepod.d.ts
|
|
247
|
+
declare class export_default$3 extends export_default$5 {}
|
|
248
|
+
//#endregion
|
|
249
|
+
//#region src/model/homepod-mini.d.ts
|
|
250
|
+
declare class export_default$4 extends export_default$5 {}
|
|
251
|
+
//#endregion
|
|
252
|
+
export { PROTOCOL as AIRPLAY, export_default as AirPlayDevice, export_default$1 as AppleTV, PROTOCOL$1 as COMPANION_LINK, export_default$2 as CompanionLinkDevice, export_default$3 as HomePod, export_default$4 as HomePodMini };
|
|
253
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["FEEDBACK_INTERVAL","PROTOCOL","STATE_SUBSCRIBE_SYMBOL","STATE_UNSUBSCRIBE_SYMBOL","Device","export_default","Promise","private","constructor","device","up","down","left","right","menu","play","playPause","pause","next","previous","suspend","select","wake","home","volumeUp","volumeDown","mute","doublePress","usePage","usage","longPress","duration","pressAndRelease","default","Proto","Client","PlaybackQueue","PlaybackState_Enum","CommandInfo","Command","ContentItem","private","bundleIdentifier","displayName","playbackQueue","playbackState","playbackStateTimestamp","supportedCommands","constructor","isCommandSupported","command","setPlaybackQueue","setPlaybackState","setSupportedCommands","updateContentItem","item","default","EventEmitter","Proto","STATE_SUBSCRIBE_SYMBOL","STATE_UNSUBSCRIBE_SYMBOL","Client","Device","EventMap","Record","DeviceInfoMessage","OriginClientPropertiesMessage","PlayerClientPropertiesMessage","RemoveClientMessage","SendCommandResultMessage","SetArtworkMessage","SetDefaultSupportedCommandsMessage","SetNowPlayingClientMessage","SetNowPlayingPlayerMessage","SetStateMessage","UpdateClientMessage","UpdateContentItemMessage","UpdateContentItemArtworkMessage","UpdatePlayerMessage","UpdateOutputDeviceMessage","VolumeCapabilities_Enum","clients","deviceInfo","deviceInfoUpdate","originClientProperties","playerClientProperties","removeClient","sendCommandResult","setArtwork","setDefaultSupportedCommands","setNowPlayingClient","setNowPlayingPlayer","setState","updateClient","updateContentItem","updateContentItemArtwork","updatePlayer","updateOutputDevice","volumeControlAvailability","volumeControlCapabilitiesDidChange","volumeDidChange","export_default","VolumeControlAvailabilityMessage","VolumeControlCapabilitiesDidChangeMessage","VolumeDidChangeMessage","private","nowPlayingClient","outputDeviceUID","volume","volumeAvailable","volumeCapabilities","constructor","device","clear","onDeviceInfo","message","onDeviceInfoUpdate","onOriginClientProperties","onPlayerClientProperties","onRemoveClient","onSendCommandResult","onSetArtwork","onSetDefaultSupportedCommands","onSetNowPlayingClient","onSetNowPlayingPlayer","onSetState","onUpdateContentItem","onUpdateContentItemArtwork","onUpdatePlayer","onUpdateClient","onUpdateOutputDevice","onVolumeControlAvailability","onVolumeControlCapabilitiesDidChange","onVolumeDidChange","default","Device","export_default","Promise","private","constructor","device","down","up","get","set","volume","default","EventEmitter","Proto","Protocol","AccessoryCredentials","DiscoveryResult","TimingServer","PROTOCOL","Remote","State","Volume","EventMap","connected","disconnected","unexpected","export_default","Promise","Command","CommandOptions","private","discoveryResult","isConnected","remote","state","volume","timingServer","constructor","connect","disconnect","disconnectSafely","requestPlaybackQueue","length","sendCommand","command","options","setCredentials","credentials","default","PROTOCOL","EventEmitter","AccessoryCredentials","DiscoveryResult","AttentionState","ButtonPressType","HidCommandKey","LaunchableApp","MediaControlCommandKey","Protocol","UserAccount","PROTOCOL","EventMap","connected","disconnected","unexpected","power","export_default","Promise","private","discoveryResult","isConnected","constructor","connect","disconnect","disconnectSafely","setCredentials","credentials","getAttentionState","getLaunchableApps","getUserAccounts","launchApp","bundleId","launchUrl","url","mediaControlCommand","command","content","pressButton","type","holdDelayMs","switchUserAccount","accountId","onSystemStatus","state","data","onTVSystemStatus","default","EventEmitter","AccessoryCredentials","DiscoveryResult","AirPlay","AirPlayDevice","CompanionLinkDevice","EventMap","connected","disconnected","unexpected","export_default","Proto","PlaybackQueue","PlaybackState_Enum","Promise","Command","CommandInfo","private","airplay","companionLink","bundleIdentifier","displayName","isConnected","isPlaying","playbackQueue","playbackState","playbackStateTimestamp","constructor","airplayDiscoveryResult","companionLinkDiscoveryResult","connect","credentials","disconnect","turnOff","turnOn","pause","playPause","play","stop","next","previous","volumeDown","volumeMute","volumeUp","getCommandInfo","command","isCommandSupported","default","EventEmitter","DiscoveryResult","AirPlay","AirPlayDevice","EventMap","connected","disconnected","unexpected","export_default","Proto","PlaybackQueue","PlaybackState_Enum","Promise","Command","CommandInfo","private","airplay","bundleIdentifier","displayName","isConnected","isPlaying","playbackQueue","playbackState","playbackStateTimestamp","volume","constructor","discoveryResult","connect","disconnect","pause","playPause","play","stop","next","previous","getCommandInfo","command","isCommandSupported","default","HomePodBase","export_default","default","HomePodBase","export_default","default"],"sources":["../src/airplay/const.d.ts","../src/airplay/remote.d.ts","../src/airplay/client.d.ts","../src/airplay/state.d.ts","../src/airplay/volume.d.ts","../src/airplay/device.d.ts","../src/companion-link/const.d.ts","../src/companion-link/device.d.ts","../src/model/apple-tv.d.ts","../src/model/homepod-base.d.ts","../src/model/homepod.d.ts","../src/model/homepod-mini.d.ts"],"mappings":"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"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{EventEmitter as e}from"node:events";import*as t from"@basmilius/apple-airplay";import{DataStreamMessage as n,Proto as r,Protocol as i}from"@basmilius/apple-airplay";import{waitFor as a}from"@basmilius/apple-common";import{Protocol as o,convertAttentionState as s}from"@basmilius/apple-companion-link";const c=Symbol(`com.basmilius.airplay:protocol`),l=Symbol(`com.basmilius.airplay:subscribe`),u=Symbol(`com.basmilius.airplay:unsubscribe`);var d=class{get#e(){return this.#t.dataStream}get#t(){return this.#n[c]}#n;constructor(e){this.#n=e}async up(){await this.pressAndRelease(1,140)}async down(){await this.pressAndRelease(1,141)}async left(){await this.pressAndRelease(1,139)}async right(){await this.pressAndRelease(1,138)}async menu(){await this.pressAndRelease(1,134)}async play(){await this.pressAndRelease(12,176)}async playPause(){this.#n.state.nowPlayingClient?.playbackState===r.PlaybackState_Enum.Playing?await this.pause():await this.play()}async pause(){await this.pressAndRelease(12,177)}async next(){await this.pressAndRelease(12,181)}async previous(){await this.pressAndRelease(12,182)}async suspend(){await this.pressAndRelease(1,130)}async select(){await this.pressAndRelease(1,137)}async wake(){await this.pressAndRelease(1,131)}async home(){await this.pressAndRelease(12,64)}async volumeUp(){await this.pressAndRelease(12,233)}async volumeDown(){await this.pressAndRelease(12,234)}async mute(){await this.pressAndRelease(12,226)}async doublePress(e,t){await this.pressAndRelease(e,t),await a(150),await this.pressAndRelease(e,t)}async longPress(e,t,r=1e3){await this.#e.exchange(n.sendHIDEvent(e,t,!0)),await a(r),await this.#e.exchange(n.sendHIDEvent(e,t,!1))}async pressAndRelease(e,t){await this.#e.exchange(n.sendHIDEvent(e,t,!0)),await a(25),await this.#e.exchange(n.sendHIDEvent(e,t,!1))}},f=typeof global==`object`&&global&&global.Object===Object&&global,p=typeof self==`object`&&self&&self.Object===Object&&self,m=f||p||Function(`return this`)(),h=m.Symbol,g=Object.prototype,ee=g.hasOwnProperty,te=g.toString,_=h?h.toStringTag:void 0;function ne(e){var t=ee.call(e,_),n=e[_];try{e[_]=void 0;var r=!0}catch{}var i=te.call(e);return r&&(t?e[_]=n:delete e[_]),i}var re=Object.prototype.toString;function ie(e){return re.call(e)}var ae=`[object Null]`,oe=`[object Undefined]`,se=h?h.toStringTag:void 0;function v(e){return e==null?e===void 0?oe:ae:se&&se in Object(e)?ne(e):ie(e)}function y(e){return typeof e==`object`&&!!e}var b=Array.isArray;function x(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}function S(e){return e}var ce=`[object AsyncFunction]`,le=`[object Function]`,ue=`[object GeneratorFunction]`,de=`[object Proxy]`;function C(e){if(!x(e))return!1;var t=v(e);return t==le||t==ue||t==ce||t==de}var w=m[`__core-js_shared__`],T=function(){var e=/[^.]+$/.exec(w&&w.keys&&w.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function fe(e){return!!T&&T in e}var pe=Function.prototype.toString;function me(e){if(e!=null){try{return pe.call(e)}catch{}try{return e+``}catch{}}return``}var he=/[\\^$.*+?()[\]{}|]/g,ge=/^\[object .+?Constructor\]$/,_e=Function.prototype,ve=Object.prototype,ye=_e.toString,be=ve.hasOwnProperty,xe=RegExp(`^`+ye.call(be).replace(he,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function Se(e){return!x(e)||fe(e)?!1:(C(e)?xe:ge).test(me(e))}function Ce(e,t){return e?.[t]}function E(e,t){var n=Ce(e,t);return Se(n)?n:void 0}var we=Object.create,Te=function(){function e(){}return function(t){if(!x(t))return{};if(we)return we(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Ee(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function De(e,t){var n=-1,r=e.length;for(t||=Array(r);++n<r;)t[n]=e[n];return t}var Oe=800,ke=16,Ae=Date.now;function je(e){var t=0,n=0;return function(){var r=Ae(),i=ke-(r-n);if(n=r,i>0){if(++t>=Oe)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Me(e){return function(){return e}}var D=function(){try{var e=E(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Ne=je(D?function(e,t){return D(e,`toString`,{configurable:!0,enumerable:!1,value:Me(t),writable:!0})}:S),Pe=9007199254740991,Fe=/^(?:0|[1-9]\d*)$/;function Ie(e,t){var n=typeof e;return t??=Pe,!!t&&(n==`number`||n!=`symbol`&&Fe.test(e))&&e>-1&&e%1==0&&e<t}function O(e,t,n){t==`__proto__`&&D?D(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function k(e,t){return e===t||e!==e&&t!==t}var Le=Object.prototype.hasOwnProperty;function Re(e,t,n){var r=e[t];(!(Le.call(e,t)&&k(r,n))||n===void 0&&!(t in e))&&O(e,t,n)}function ze(e,t,n,r){var i=!n;n||={};for(var a=-1,o=t.length;++a<o;){var s=t[a],c=r?r(n[s],e[s],s,n,e):void 0;c===void 0&&(c=e[s]),i?O(n,s,c):Re(n,s,c)}return n}var A=Math.max;function Be(e,t,n){return t=A(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=A(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=r[i];return s[t]=n(o),Ee(e,this,s)}}function Ve(e,t){return Ne(Be(e,t,S),e+``)}var He=9007199254740991;function Ue(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=He}function j(e){return e!=null&&Ue(e.length)&&!C(e)}function We(e,t,n){if(!x(n))return!1;var r=typeof t;return(r==`number`?j(n)&&Ie(t,n.length):r==`string`&&t in n)?k(n[t],e):!1}function Ge(e){return Ve(function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&We(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r<i;){var s=n[r];s&&e(t,s,r,a)}return t})}var Ke=Object.prototype;function qe(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||Ke)}function Je(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var Ye=`[object Arguments]`;function M(e){return y(e)&&v(e)==Ye}var N=Object.prototype,Xe=N.hasOwnProperty,Ze=N.propertyIsEnumerable,P=M(function(){return arguments}())?M:function(e){return y(e)&&Xe.call(e,`callee`)&&!Ze.call(e,`callee`)};function Qe(){return!1}var $e=typeof exports==`object`&&exports&&!exports.nodeType&&exports,et=$e&&typeof module==`object`&&module&&!module.nodeType&&module,tt=et&&et.exports===$e?m.Buffer:void 0,nt=(tt?tt.isBuffer:void 0)||Qe,rt=`[object Arguments]`,it=`[object Array]`,at=`[object Boolean]`,ot=`[object Date]`,st=`[object Error]`,ct=`[object Function]`,lt=`[object Map]`,ut=`[object Number]`,dt=`[object Object]`,ft=`[object RegExp]`,pt=`[object Set]`,mt=`[object String]`,ht=`[object WeakMap]`,gt=`[object ArrayBuffer]`,_t=`[object DataView]`,vt=`[object Float32Array]`,yt=`[object Float64Array]`,bt=`[object Int8Array]`,xt=`[object Int16Array]`,St=`[object Int32Array]`,Ct=`[object Uint8Array]`,wt=`[object Uint8ClampedArray]`,Tt=`[object Uint16Array]`,Et=`[object Uint32Array]`,F={};F[vt]=F[yt]=F[bt]=F[xt]=F[St]=F[Ct]=F[wt]=F[Tt]=F[Et]=!0,F[rt]=F[it]=F[gt]=F[at]=F[_t]=F[ot]=F[st]=F[ct]=F[lt]=F[ut]=F[dt]=F[ft]=F[pt]=F[mt]=F[ht]=!1;function Dt(e){return y(e)&&Ue(e.length)&&!!F[v(e)]}function Ot(e){return function(t){return e(t)}}var I=typeof exports==`object`&&exports&&!exports.nodeType&&exports,L=I&&typeof module==`object`&&module&&!module.nodeType&&module,R=L&&L.exports===I&&f.process,z=function(){try{return L&&L.require&&L.require(`util`).types||R&&R.binding&&R.binding(`util`)}catch{}}(),B=z&&z.isTypedArray,V=B?Ot(B):Dt,kt=Object.prototype.hasOwnProperty;function At(e,t){var n=b(e),r=!n&&P(e),i=!n&&!r&&nt(e),a=!n&&!r&&!i&&V(e),o=n||r||i||a,s=o?Je(e.length,String):[],c=s.length;for(var l in e)(t||kt.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||Ie(l,c)))&&s.push(l);return s}function jt(e,t){return function(n){return e(t(n))}}function Mt(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Nt=Object.prototype.hasOwnProperty;function Pt(e){if(!x(e))return Mt(e);var t=qe(e),n=[];for(var r in e)r==`constructor`&&(t||!Nt.call(e,r))||n.push(r);return n}function H(e){return j(e)?At(e,!0):Pt(e)}var U=E(Object,`create`);function Ft(){this.__data__=U?U(null):{},this.size=0}function It(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Lt=`__lodash_hash_undefined__`,Rt=Object.prototype.hasOwnProperty;function zt(e){var t=this.__data__;if(U){var n=t[e];return n===Lt?void 0:n}return Rt.call(t,e)?t[e]:void 0}var Bt=Object.prototype.hasOwnProperty;function Vt(e){var t=this.__data__;return U?t[e]!==void 0:Bt.call(t,e)}var Ht=`__lodash_hash_undefined__`;function Ut(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=U&&t===void 0?Ht:t,this}function W(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}W.prototype.clear=Ft,W.prototype.delete=It,W.prototype.get=zt,W.prototype.has=Vt,W.prototype.set=Ut;function Wt(){this.__data__=[],this.size=0}function G(e,t){for(var n=e.length;n--;)if(k(e[n][0],t))return n;return-1}var Gt=Array.prototype.splice;function Kt(e){var t=this.__data__,n=G(t,e);return n<0?!1:(n==t.length-1?t.pop():Gt.call(t,n,1),--this.size,!0)}function qt(e){var t=this.__data__,n=G(t,e);return n<0?void 0:t[n][1]}function Jt(e){return G(this.__data__,e)>-1}function Yt(e,t){var n=this.__data__,r=G(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function K(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}K.prototype.clear=Wt,K.prototype.delete=Kt,K.prototype.get=qt,K.prototype.has=Jt,K.prototype.set=Yt;var Xt=E(m,`Map`);function Zt(){this.size=0,this.__data__={hash:new W,map:new(Xt||K),string:new W}}function Qt(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}function q(e,t){var n=e.__data__;return Qt(t)?n[typeof t==`string`?`string`:`hash`]:n.map}function $t(e){var t=q(this,e).delete(e);return this.size-=t?1:0,t}function en(e){return q(this,e).get(e)}function tn(e){return q(this,e).has(e)}function nn(e,t){var n=q(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function J(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}J.prototype.clear=Zt,J.prototype.delete=$t,J.prototype.get=en,J.prototype.has=tn,J.prototype.set=nn;var Y=jt(Object.getPrototypeOf,Object),rn=`[object Object]`,an=Function.prototype,on=Object.prototype,sn=an.toString,cn=on.hasOwnProperty,ln=sn.call(Object);function un(e){if(!y(e)||v(e)!=rn)return!1;var t=Y(e);if(t===null)return!0;var n=cn.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&sn.call(n)==ln}function dn(){this.__data__=new K,this.size=0}function fn(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function pn(e){return this.__data__.get(e)}function mn(e){return this.__data__.has(e)}var hn=200;function gn(e,t){var n=this.__data__;if(n instanceof K){var r=n.__data__;if(!Xt||r.length<hn-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new J(r)}return n.set(e,t),this.size=n.size,this}function X(e){this.size=(this.__data__=new K(e)).size}X.prototype.clear=dn,X.prototype.delete=fn,X.prototype.get=pn,X.prototype.has=mn,X.prototype.set=gn;var _n=typeof exports==`object`&&exports&&!exports.nodeType&&exports,vn=_n&&typeof module==`object`&&module&&!module.nodeType&&module,yn=vn&&vn.exports===_n?m.Buffer:void 0,bn=yn?yn.allocUnsafe:void 0;function xn(e,t){if(t)return e.slice();var n=e.length,r=bn?bn(n):new e.constructor(n);return e.copy(r),r}var Sn=m.Uint8Array;function Cn(e){var t=new e.constructor(e.byteLength);return new Sn(t).set(new Sn(e)),t}function wn(e,t){var n=t?Cn(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Tn(e){return typeof e.constructor==`function`&&!qe(e)?Te(Y(e)):{}}function En(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var Dn=En();function Z(e,t,n){(n!==void 0&&!k(e[t],n)||n===void 0&&!(t in e))&&O(e,t,n)}function On(e){return y(e)&&j(e)}function Q(e,t){if(!(t===`constructor`&&typeof e[t]==`function`)&&t!=`__proto__`)return e[t]}function kn(e){return ze(e,H(e))}function An(e,t,n,r,i,a,o){var s=Q(e,n),c=Q(t,n),l=o.get(c);if(l){Z(e,n,l);return}var u=a?a(s,c,n+``,e,t,o):void 0,d=u===void 0;if(d){var f=b(c),p=!f&&nt(c),m=!f&&!p&&V(c);u=c,f||p||m?b(s)?u=s:On(s)?u=De(s):p?(d=!1,u=xn(c,!0)):m?(d=!1,u=wn(c,!0)):u=[]:un(c)||P(c)?(u=s,P(s)?u=kn(s):(!x(s)||C(s))&&(u=Tn(c))):d=!1}d&&(o.set(c,u),i(u,c,r,a,o),o.delete(c)),Z(e,n,u)}function jn(e,t,n,r,i){e!==t&&Dn(t,function(a,o){if(i||=new X,x(a))An(e,t,o,n,jn,r,i);else{var s=r?r(Q(e,o),a,o+``,e,t,i):void 0;s===void 0&&(s=a),Z(e,o,s)}},H)}var Mn=Ge(function(e,t,n){jn(e,t,n)}),Nn=class{get bundleIdentifier(){return this.#e}get displayName(){return this.#t}get playbackQueue(){return this.#n}get playbackState(){return this.#r}get playbackStateTimestamp(){return this.#i}get supportedCommands(){return this.#a}#e;#t;#n=null;#r;#i;#a=[];constructor(e,t){this.#e=e,this.#t=t,this.#r=r.PlaybackState_Enum.Unknown,this.#a=[]}isCommandSupported(e){return this.#a.some(t=>t.command===e)}setPlaybackQueue(e){this.#n=e}setPlaybackState(e,t){t<this.#i||(this.#r=e,this.#i=t)}setSupportedCommands(e){this.#a=e}updateContentItem(e){if(!this.#n)return;let t=this.#n.contentItems.findIndex(t=>t.identifier===e.identifier);t!==-1&&(this.#n.contentItems[t]=Mn(e,this.#n.contentItems[t]))}},Pn=class extends e{get#e(){return this.#t.dataStream}get#t(){return this.#n[c]}get clients(){return this.#r}get nowPlayingClient(){return this.#i?this.#r[this.#i]??null:null}get outputDeviceUID(){return this.#a}get volume(){return this.#o}get volumeAvailable(){return this.#s}get volumeCapabilities(){return this.#c}#n;#r;#i;#a;#o;#s;#c;constructor(e){super(),this.#n=e,this.clear(),this.onDeviceInfo=this.onDeviceInfo.bind(this),this.onDeviceInfoUpdate=this.onDeviceInfoUpdate.bind(this),this.onOriginClientProperties=this.onOriginClientProperties.bind(this),this.onPlayerClientProperties=this.onPlayerClientProperties.bind(this),this.onRemoveClient=this.onRemoveClient.bind(this),this.onSendCommandResult=this.onSendCommandResult.bind(this),this.onSetArtwork=this.onSetArtwork.bind(this),this.onSetDefaultSupportedCommands=this.onSetDefaultSupportedCommands.bind(this),this.onSetNowPlayingClient=this.onSetNowPlayingClient.bind(this),this.onSetNowPlayingPlayer=this.onSetNowPlayingPlayer.bind(this),this.onSetState=this.onSetState.bind(this),this.onUpdateClient=this.onUpdateClient.bind(this),this.onUpdateContentItem=this.onUpdateContentItem.bind(this),this.onUpdateContentItemArtwork=this.onUpdateContentItemArtwork.bind(this),this.onUpdatePlayer=this.onUpdatePlayer.bind(this),this.onUpdateOutputDevice=this.onUpdateOutputDevice.bind(this),this.onVolumeControlAvailability=this.onVolumeControlAvailability.bind(this),this.onVolumeControlCapabilitiesDidChange=this.onVolumeControlCapabilitiesDidChange.bind(this),this.onVolumeDidChange=this.onVolumeDidChange.bind(this)}[l](){this.#e.on(`deviceInfo`,this.onDeviceInfo),this.#e.on(`deviceInfoUpdate`,this.onDeviceInfoUpdate),this.#e.on(`originClientProperties`,this.onOriginClientProperties),this.#e.on(`playerClientProperties`,this.onPlayerClientProperties),this.#e.on(`removeClient`,this.onRemoveClient),this.#e.on(`sendCommandResult`,this.onSendCommandResult),this.#e.on(`setArtwork`,this.onSetArtwork),this.#e.on(`setDefaultSupportedCommands`,this.onSetDefaultSupportedCommands),this.#e.on(`setNowPlayingClient`,this.onSetNowPlayingClient),this.#e.on(`setNowPlayingPlayer`,this.onSetNowPlayingPlayer),this.#e.on(`setState`,this.onSetState),this.#e.on(`updateClient`,this.onUpdateClient),this.#e.on(`updateContentItem`,this.onUpdateContentItem),this.#e.on(`updateContentItemArtwork`,this.onUpdateContentItemArtwork),this.#e.on(`updatePlayer`,this.onUpdatePlayer),this.#e.on(`updateOutputDevice`,this.onUpdateOutputDevice),this.#e.on(`volumeControlAvailability`,this.onVolumeControlAvailability),this.#e.on(`volumeControlCapabilitiesDidChange`,this.onVolumeControlCapabilitiesDidChange),this.#e.on(`volumeDidChange`,this.onVolumeDidChange)}[u](){let e=this.#e;e&&(e.off(`deviceInfo`,this.onDeviceInfo),e.off(`deviceInfoUpdate`,this.onDeviceInfoUpdate),e.off(`originClientProperties`,this.onOriginClientProperties),e.off(`playerClientProperties`,this.onPlayerClientProperties),e.off(`removeClient`,this.onRemoveClient),e.off(`sendCommandResult`,this.onSendCommandResult),e.off(`setArtwork`,this.onSetArtwork),e.off(`setDefaultSupportedCommands`,this.onSetDefaultSupportedCommands),e.off(`setNowPlayingClient`,this.onSetNowPlayingClient),e.off(`setNowPlayingPlayer`,this.onSetNowPlayingPlayer),e.off(`setState`,this.onSetState),e.off(`updateClient`,this.onUpdateClient),e.off(`updateContentItem`,this.onUpdateContentItem),e.off(`updateContentItemArtwork`,this.onUpdateContentItemArtwork),e.off(`updatePlayer`,this.onUpdatePlayer),e.off(`updateOutputDevice`,this.onUpdateOutputDevice),e.off(`volumeControlAvailability`,this.onVolumeControlAvailability),e.off(`volumeControlCapabilitiesDidChange`,this.onVolumeControlCapabilitiesDidChange),e.off(`volumeDidChange`,this.onVolumeDidChange))}clear(){this.#r={},this.#i=null,this.#a=null,this.#o=0,this.#s=!1,this.#c=r.VolumeCapabilities_Enum.None}onDeviceInfo(e){e.clusterID?this.#a=e.clusterID:e.deviceUID?this.#a=e.deviceUID:e.uniqueIdentifier&&(this.#a=e.uniqueIdentifier),this.emit(`deviceInfo`,e)}onDeviceInfoUpdate(e){e.clusterID?this.#a=e.clusterID:e.deviceUID?this.#a=e.deviceUID:e.uniqueIdentifier&&(this.#a=e.uniqueIdentifier),this.emit(`deviceInfoUpdate`,e)}onOriginClientProperties(e){this.emit(`originClientProperties`,e)}onPlayerClientProperties(e){this.emit(`playerClientProperties`,e)}onRemoveClient(e){e.client.bundleIdentifier in this.#r&&(delete this.#r[e.client.bundleIdentifier],this.emit(`clients`,this.#r))}onSendCommandResult(e){this.emit(`sendCommandResult`,e)}onSetArtwork(e){this.emit(`setArtwork`,e)}onSetDefaultSupportedCommands(e){this.emit(`setDefaultSupportedCommands`,e)}onSetNowPlayingClient(e){this.#i=e.client?.bundleIdentifier??null,this.emit(`setNowPlayingClient`,e)}onSetNowPlayingPlayer(e){this.emit(`setNowPlayingPlayer`,e)}onSetState(e){let t=this.#l(e.playerPath.client.bundleIdentifier,e.displayName);e.playbackState&&t.setPlaybackState(e.playbackState,e.playbackStateTimestamp),e.supportedCommands&&t.setSupportedCommands(e.supportedCommands.supportedCommands),e.playbackQueue&&t.setPlaybackQueue(e.playbackQueue),this.emit(`setState`,e)}onUpdateContentItem(e){let t=this.#l(e.playerPath.client.bundleIdentifier,e.playerPath.client.displayName);if(t){for(let n of e.contentItems)t.updateContentItem(n);this.emit(`updateContentItem`,e)}}onUpdateContentItemArtwork(e){this.emit(`updateContentItemArtwork`,e)}onUpdatePlayer(e){this.emit(`updatePlayer`,e)}onUpdateClient(e){this.#l(e.client.bundleIdentifier,e.client.displayName),this.emit(`clients`,this.#r)}onUpdateOutputDevice(e){this.emit(`updateOutputDevice`,e)}onVolumeControlAvailability(e){this.#s=e.volumeControlAvailable,this.#c=e.volumeCapabilities,this.emit(`volumeControlAvailability`,e.volumeControlAvailable,e.volumeCapabilities)}onVolumeControlCapabilitiesDidChange(e){this.#s=e.capabilities.volumeControlAvailable,this.#c=e.capabilities.volumeCapabilities,this.emit(`volumeControlCapabilitiesDidChange`,e.capabilities.volumeControlAvailable,e.capabilities.volumeCapabilities)}onVolumeDidChange(e){this.#o=e.volume,this.emit(`volumeDidChange`,e.volume)}#l(e,t){if(e in this.#r)return this.#r[e];{let n=new Nn(e,t);return this.#r[e]=n,this.emit(`clients`,this.#r),n}}};const Fn=.05;var In=class{get#e(){return this.#n[c]}get#t(){return this.#n.state}#n;constructor(e){this.#n=e}async down(){switch(this.#t.volumeCapabilities){case r.VolumeCapabilities_Enum.Absolute:case r.VolumeCapabilities_Enum.Both:let e=Math.max(0,this.#t.volume-Fn);await this.set(e);break;case r.VolumeCapabilities_Enum.Relative:await this.#n.remote.volumeDown();break;default:throw Error(`Volume control is not available.`)}}async up(){switch(this.#t.volumeCapabilities){case r.VolumeCapabilities_Enum.Absolute:case r.VolumeCapabilities_Enum.Both:let e=Math.max(0,this.#t.volume+Fn);await this.set(e);break;case r.VolumeCapabilities_Enum.Relative:await this.#n.remote.volumeUp();break;default:throw Error(`Volume control is not available.`)}}async get(){if(!this.#t.outputDeviceUID)throw Error(`No output device active.`);let e=await this.#e.dataStream.exchange(n.getVolume(this.#t.outputDeviceUID));if(e.type===r.ProtocolMessage_Type.GET_VOLUME_RESULT_MESSAGE)return n.getExtension(e,r.getVolumeResultMessage).volume;throw Error(`Failed to get volume.`)}async set(e){if(!this.#t.outputDeviceUID)throw Error(`No output device active.`);if(![r.VolumeCapabilities_Enum.Absolute,r.VolumeCapabilities_Enum.Both].includes(this.#t.volumeCapabilities))throw Error(`Absolute volume control is not available.`);e=Math.min(1,Math.max(0,e)),this.#e.context.logger.info(`Setting volume to ${e} for device ${this.#t.outputDeviceUID}`),await this.#e.dataStream.exchange(n.setVolume(this.#t.outputDeviceUID,e))}},$=class extends e{get[c](){return this.#c}get discoveryResult(){return this.#a}set discoveryResult(e){this.#a=e}get isConnected(){return this.#c?.controlStream?.isConnected??!1}get remote(){return this.#e}get state(){return this.#t}get volume(){return this.#n}get timingServer(){return this.#l}set timingServer(e){this.#l=e}#e;#t;#n;#r;#i=!1;#a;#o;#s;#c;#l;constructor(e){super(),this.#a=e,this.#e=new d(this),this.#t=new Pn(this),this.#n=new In(this)}async connect(){this.#i=!1,this.#t.clear(),this.#c=new i(this.#a),this.#c.controlStream.on(`close`,async()=>this.#d()),this.#c.controlStream.on(`error`,async e=>this.#f(e)),this.#c.controlStream.on(`timeout`,async()=>this.#p()),await this.#c.connect(),this.#r?this.#s=await this.#c.verify.start(this.#r):(await this.#c.pairing.start(),this.#s=await this.#c.pairing.transient()),await this.#m(),this.emit(`connected`)}async disconnect(){this.#i=!0,this.#o&&=(clearInterval(this.#o),void 0),this.#g(),await this.#c.disconnect()}async disconnectSafely(){try{await this.disconnect()}catch{}}async requestPlaybackQueue(e){await this.#c.dataStream.exchange(n.playbackQueueRequest(0,e))}async sendCommand(e,t){await this.#c.dataStream.exchange(n.sendCommand(e,t))}async setCredentials(e){this.#r=e}async#u(){try{await this.#c.feedback()}catch(e){this.#c.context.logger.error(`Feedback error`,e)}}async#d(){this.#c.context.logger.net(`#onClose() called on airplay device.`),this.#i?this.emit(`disconnected`,!1):(await this.disconnectSafely(),this.emit(`disconnected`,!0))}async#f(e){this.#c.context.logger.error(`AirPlay error`,e)}async#p(){this.#c.context.logger.error(`AirPlay timeout`),await this.#c.controlStream.destroy()}async#m(){let e=this.#s;this.#c.controlStream.enableEncryption(e.accessoryToControllerKey,e.controllerToAccessoryKey),this.#g(),this.#l&&this.#c.useTimingServer(this.#l),await this.#c.setupEventStream(e.sharedSecret,e.pairingId),await this.#c.setupDataStream(e.sharedSecret,()=>this.#h()),this.#c.dataStream.on(`error`,async e=>this.#f(e)),this.#c.dataStream.on(`timeout`,async()=>this.#p()),this.#c.eventStream.on(`error`,async e=>this.#f(e)),this.#c.eventStream.on(`timeout`,async()=>this.#p()),this.#o=setInterval(async()=>await this.#u(),2e3);try{await this.#c.dataStream.exchange(n.setConnectionState(r.SetConnectionStateMessage_ConnectionState.Connecting)),await a(500);let t=this.#a.txt.gid;t&&await this.#c.dataStream.exchange(n.configureConnection(t)),await Promise.race([new Promise(async t=>{this.#c.dataStream.once(`deviceInfo`,async()=>{await this.#c.dataStream.exchange(n.setConnectionState()),await this.#c.dataStream.exchange(n.clientUpdatesConfig()),t(!0)}),await this.#c.dataStream.exchange(n.deviceInfo(e.pairingId))}),async()=>(await a(3e3),!1)])?this.#c.context.logger.info(`Device info received successfully, protocol should be ready.`):await this.#f(Error(`Device did not respond in time with its info.`))}catch(e){throw clearInterval(this.#o),this.#o=void 0,e}}#h(){this.#t[l]()}#g(){try{this.#t[u]()}catch(e){this.#c.context.logger.error(`State unsubscribe error`,e)}}};const Ln=Symbol(`com.basmilius.companion-link:protocol`);var Rn=class extends e{get[Ln](){return this.#a}get discoveryResult(){return this.#n}set discoveryResult(e){this.#n=e}get isConnected(){return this.#a?.stream?.isConnected??!1}#e;#t=!1;#n;#r;#i;#a;constructor(e){super(),this.#n=e,this.onSystemStatus=this.onSystemStatus.bind(this),this.onTVSystemStatus=this.onTVSystemStatus.bind(this)}async connect(){if(!this.#e)throw Error(`Credentials are required to connect to a Companion Link device.`);this.#t=!1,this.#a=new o(this.#n),this.#a.stream.on(`close`,async()=>this.#s()),this.#a.stream.on(`error`,async e=>this.#c(e)),this.#a.stream.on(`timeout`,async()=>this.#l()),await this.#a.connect(),this.#i=await this.#a.verify.start(this.#e),await this.#u(),this.emit(`connected`)}async disconnect(){this.#t=!0,this.#r&&=(clearInterval(this.#r),void 0),await this.#f(),await this.#a.disconnect()}async disconnectSafely(){try{await this.disconnect()}catch{}}async setCredentials(e){this.#e=e}async getAttentionState(){return await this.#a.getAttentionState()}async getLaunchableApps(){return await this.#a.getLaunchableApps()}async getUserAccounts(){return await this.#a.getUserAccounts()}async launchApp(e){await this.#a.launchApp(e)}async launchUrl(e){await this.#a.launchUrl(e)}async mediaControlCommand(e,t){await this.#a.mediaControlCommand(e,t)}async pressButton(e,t,n){await this.#a.pressButton(e,t,n)}async switchUserAccount(e){await this.#a.switchUserAccount(e)}async#o(){try{this.#a.noOp()}catch(e){this.#a.context.logger.error(`Heartbeat error`,e)}}async#s(){this.#a.context.logger.net(`#onClose() called on companion link device.`),this.#t?this.emit(`disconnected`,!1):(await this.disconnectSafely(),this.emit(`disconnected`,!0))}async#c(e){this.#a.context.logger.error(`Companion Link error`,e)}async#l(){this.#a.context.logger.error(`Companion Link timeout`),await this.#a.stream.destroy()}async#u(){let e=this.#i;this.#a.stream.enableEncryption(e.accessoryToControllerKey,e.controllerToAccessoryKey);try{await this.#a.systemInfo(this.#e.pairingId),await this.#a.sessionStart(),await this.#a.tvrcSessionStart(),await this.#a.touchStart(),await this.#a.tiStart(),await this.#a.unsubscribe(`_iMC`),this.#r=setInterval(async()=>await this.#o(),15e3),await this.#d()}catch(e){throw clearInterval(this.#r),this.#r=void 0,e}}async#d(){await this.#a.subscribe(`SystemStatus`,this.onSystemStatus),await this.#a.subscribe(`TVSystemStatus`,this.onTVSystemStatus);let e=await this.getAttentionState();this.emit(`power`,e)}async#f(){try{await this.#a.unsubscribe(`SystemStatus`,this.onSystemStatus),await this.#a.unsubscribe(`TVSystemStatus`,this.onTVSystemStatus)}catch{}}async onSystemStatus(e){this.#a.context.logger.info(`System Status`,e),this.emit(`power`,s(e.state))}async onTVSystemStatus(e){this.#a.context.logger.info(`TV System Status`,e),this.emit(`power`,s(e.state))}},zn=class extends e{get airplay(){return this.#e}get companionLink(){return this.#t}get bundleIdentifier(){return this.#e.state.nowPlayingClient?.bundleIdentifier??null}get displayName(){return this.#e.state.nowPlayingClient?.displayName??null}get isConnected(){return this.#e.isConnected&&this.#t.isConnected}get isPlaying(){return this.playbackState===t.Proto.PlaybackState_Enum.Playing}get playbackQueue(){return this.#e.state.nowPlayingClient?.playbackQueue??null}get playbackState(){return this.#e.state.nowPlayingClient?.playbackState??t.Proto.PlaybackState_Enum.Unknown}get playbackStateTimestamp(){return this.#e.state.nowPlayingClient?.playbackStateTimestamp??-1}#e;#t;#n=!1;constructor(e,t){super(),this.#e=new $(e),this.#t=new Rn(t),this.#e.on(`connected`,()=>this.#r()),this.#e.on(`disconnected`,e=>this.#i(e)),this.#t.on(`connected`,()=>this.#r()),this.#t.on(`disconnected`,e=>this.#i(e))}async connect(e){await this.#e.setCredentials(e),await this.#t.setCredentials(e),await this.#e.connect(),await this.#t.connect(),this.#n=!1}async disconnect(){await this.#e.disconnect(),await this.#t.disconnect()}async turnOff(){await this.#e.remote.suspend()}async turnOn(){await this.#e.remote.wake()}async pause(){await this.#e.sendCommand(t.Proto.Command.Pause)}async playPause(){await this.#e.sendCommand(t.Proto.Command.TogglePlayPause)}async play(){await this.#e.sendCommand(t.Proto.Command.Play)}async stop(){await this.#e.sendCommand(t.Proto.Command.Stop)}async next(){await this.#e.sendCommand(t.Proto.Command.NextInContext)}async previous(){await this.#e.sendCommand(t.Proto.Command.PreviousInContext)}async volumeDown(){await this.#e.remote.volumeDown()}async volumeMute(){await this.#e.remote.mute()}async volumeUp(){await this.#e.remote.volumeUp()}async getCommandInfo(e){let t=this.#e.state.nowPlayingClient;return t?t.supportedCommands.find(t=>t.command===e)??null:null}async isCommandSupported(e){let t=this.#e.state.nowPlayingClient;return t?t.isCommandSupported(e):!1}async#r(){!this.#e.isConnected||!this.#t.isConnected||this.emit(`connected`)}async#i(e){this.#n||(this.#n=!0,await this.disconnect(),this.emit(`disconnected`,e))}},Bn=class extends e{get airplay(){return this.#e}get bundleIdentifier(){return this.#e.state.nowPlayingClient?.bundleIdentifier??null}get displayName(){return this.#e.state.nowPlayingClient?.displayName??null}get isConnected(){return this.#e.isConnected}get isPlaying(){return this.playbackState===t.Proto.PlaybackState_Enum.Playing}get playbackQueue(){return this.#e.state.nowPlayingClient?.playbackQueue??null}get playbackState(){return this.#e.state.nowPlayingClient?.playbackState??t.Proto.PlaybackState_Enum.Unknown}get playbackStateTimestamp(){return this.#e.state.nowPlayingClient?.playbackStateTimestamp??-1}get volume(){return this.#e.state.volume??0}#e;#t=!1;constructor(e){super(),this.#e=new $(e),this.#e.on(`connected`,()=>this.#n()),this.#e.on(`disconnected`,e=>this.#r(e))}async connect(){await this.#e.connect(),this.#t=!1}async disconnect(){await this.#e.disconnect()}async pause(){await this.#e.sendCommand(t.Proto.Command.Pause)}async playPause(){await this.#e.sendCommand(t.Proto.Command.TogglePlayPause)}async play(){await this.#e.sendCommand(t.Proto.Command.Play)}async stop(){await this.#e.sendCommand(t.Proto.Command.Stop)}async next(){await this.#e.sendCommand(t.Proto.Command.NextInContext)}async previous(){await this.#e.sendCommand(t.Proto.Command.PreviousInContext)}async getCommandInfo(e){let t=this.#e.state.nowPlayingClient;return t?t.supportedCommands.find(t=>t.command===e)??null:null}async isCommandSupported(e){let t=this.#e.state.nowPlayingClient;return t?t.isCommandSupported(e):!1}async#n(){this.emit(`connected`)}async#r(e){this.#t||(this.#t=!0,await this.disconnect(),this.emit(`disconnected`,e))}},Vn=class extends Bn{},Hn=class extends Bn{};export{c as AIRPLAY,$ as AirPlayDevice,zn as AppleTV,Ln as COMPANION_LINK,Rn as CompanionLinkDevice,Vn as HomePod,Hn as HomePodMini};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|