@basmilius/apple-devices 0.0.74 → 0.0.75

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.
@@ -3,6 +3,7 @@ import { Proto } from "@basmilius/apple-airplay";
3
3
  import { type AccessoryCredentials, type DiscoveryResult, type TimingServer } from "@basmilius/apple-common";
4
4
  import Remote from "./remote";
5
5
  import State from "./state";
6
+ import Volume from "./volume";
6
7
  type EventMap = {
7
8
  connected: [];
8
9
  disconnected: [unexpected: boolean];
@@ -12,6 +13,7 @@ export default class extends EventEmitter<EventMap> {
12
13
  get isConnected(): boolean;
13
14
  get remote(): Remote;
14
15
  get state(): State;
16
+ get volume(): Volume;
15
17
  get timingServer(): TimingServer | undefined;
16
18
  set timingServer(timingServer: TimingServer | undefined);
17
19
  constructor(discoveryResult: DiscoveryResult);
@@ -20,6 +22,5 @@ export default class extends EventEmitter<EventMap> {
20
22
  disconnectSafely(): Promise<void>;
21
23
  requestPlaybackQueue(length: number): Promise<void>;
22
24
  sendCommand(command: Proto.Command, options?: Proto.CommandOptions): Promise<void>;
23
- setVolume(volume: number): Promise<void>;
24
25
  setCredentials(credentials: AccessoryCredentials): Promise<void>;
25
26
  }
@@ -5,6 +5,7 @@ import type Device from "./device";
5
5
  type EventMap = {
6
6
  readonly clients: [Record<string, Client>];
7
7
  readonly deviceInfo: [Proto.DeviceInfoMessage];
8
+ readonly deviceInfoUpdate: [Proto.DeviceInfoMessage];
8
9
  readonly originClientProperties: [Proto.OriginClientPropertiesMessage];
9
10
  readonly playerClientProperties: [Proto.PlayerClientPropertiesMessage];
10
11
  readonly removeClient: [Proto.RemoveClientMessage];
@@ -27,12 +28,14 @@ export default class extends EventEmitter<EventMap> {
27
28
  #private;
28
29
  get clients(): Record<string, Client>;
29
30
  get nowPlayingClient(): Client | null;
31
+ get outputDeviceUID(): string | null;
30
32
  get volume(): number;
31
33
  get volumeAvailable(): boolean;
32
34
  get volumeCapabilities(): Proto.VolumeCapabilities_Enum;
33
35
  constructor(device: Device);
34
36
  clear(): void;
35
37
  onDeviceInfo(message: Proto.DeviceInfoMessage): Promise<void>;
38
+ onDeviceInfoUpdate(message: Proto.DeviceInfoMessage): Promise<void>;
36
39
  onOriginClientProperties(message: Proto.OriginClientPropertiesMessage): Promise<void>;
37
40
  onPlayerClientProperties(message: Proto.PlayerClientPropertiesMessage): Promise<void>;
38
41
  onRemoveClient(message: Proto.RemoveClientMessage): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import type Device from "./device";
2
+ export default class {
3
+ #private;
4
+ constructor(device: Device);
5
+ down(): Promise<void>;
6
+ up(): Promise<void>;
7
+ get(): Promise<number>;
8
+ set(volume: number): Promise<void>;
9
+ }
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var ff=Object.defineProperty;var Eo=(o,t)=>{for(var f in t)ff(o,f,{get:t[f],enumerable:!0,configurable:!0,set:(d)=>t[f]=()=>d})};var Io=2000,h=Symbol("com.basmilius.airplay:protocol"),c=Symbol("com.basmilius.airplay:subscribe"),y=Symbol("com.basmilius.airplay:unsubscribe");import{EventEmitter as um}from"node:events";import{AirPlay as hm}from"@basmilius/apple-airplay";import{waitFor as Em}from"@basmilius/apple-common";import{reporter as V}from"@basmilius/apple-common";import{Proto as df}from"@basmilius/apple-airplay";import{waitFor as Uo}from"@basmilius/apple-common";class qo{get#o(){return this.#f.dataStream}get#f(){return this.#d[h]}#d;constructor(o){this.#d=o}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(){if(this.#d.state.nowPlayingClient?.playbackState===df.PlaybackState_Enum.Playing)await this.pause();else 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(o,t){await this.pressAndRelease(o,t),await Uo(150),await this.pressAndRelease(o,t)}async longPress(o,t,f=1000){await this.#o.exchange(this.#o.messages.sendHIDEvent(o,t,!0)),await Uo(f),await this.#o.exchange(this.#o.messages.sendHIDEvent(o,t,!1))}async pressAndRelease(o,t){await this.#o.exchange(this.#o.messages.sendHIDEvent(o,t,!0)),await this.#o.exchange(this.#o.messages.sendHIDEvent(o,t,!1))}}import{EventEmitter as am}from"node:events";import{Proto as wm}from"@basmilius/apple-airplay";import{Proto as Pm}from"@basmilius/apple-airplay";var mf=typeof global=="object"&&global&&global.Object===Object&&global,v=mf;var rf=typeof self=="object"&&self&&self.Object===Object&&self,nf=v||rf||Function("return this")(),a=nf;var pf=a.Symbol,K=pf;var Yo=Object.prototype,xf=Yo.hasOwnProperty,lf=Yo.toString,z=K?K.toStringTag:void 0;function sf(o){var t=xf.call(o,z),f=o[z];try{o[z]=void 0;var d=!0}catch(r){}var m=lf.call(o);if(d)if(t)o[z]=f;else delete o[z];return m}var No=sf;var Pf=Object.prototype,af=Pf.toString;function wf(o){return af.call(o)}var Bo=wf;var uf="[object Null]",hf="[object Undefined]",$o=K?K.toStringTag:void 0;function Ef(o){if(o==null)return o===void 0?hf:uf;return $o&&$o in Object(o)?No(o):Bo(o)}var E=Ef;function Wf(o){return o!=null&&typeof o=="object"}var w=Wf;var Cf=Array.isArray,H=Cf;function Df(o){var t=typeof o;return o!=null&&(t=="object"||t=="function")}var l=Df;function Sf(o){return o}var T=Sf;var Rf="[object AsyncFunction]",Qf="[object Function]",Kf="[object GeneratorFunction]",If="[object Proxy]";function Uf(o){if(!l(o))return!1;var t=E(o);return t==Qf||t==Kf||t==Rf||t==If}var I=Uf;var qf=a["__core-js_shared__"],k=qf;var Jo=function(){var o=/[^.]+$/.exec(k&&k.keys&&k.keys.IE_PROTO||"");return o?"Symbol(src)_1."+o:""}();function Yf(o){return!!Jo&&Jo in o}var Zo=Yf;var Nf=Function.prototype,Bf=Nf.toString;function $f(o){if(o!=null){try{return Bf.call(o)}catch(t){}try{return o+""}catch(t){}}return""}var Xo=$f;var Jf=/[\\^$.*+?()[\]{}|]/g,Zf=/^\[object .+?Constructor\]$/,Xf=Function.prototype,Lf=Object.prototype,zf=Xf.toString,Hf=Lf.hasOwnProperty,Ff=RegExp("^"+zf.call(Hf).replace(Jf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Mf(o){if(!l(o)||Zo(o))return!1;var t=I(o)?Ff:Zf;return t.test(Xo(o))}var Lo=Mf;function Gf(o,t){return o==null?void 0:o[t]}var zo=Gf;function Af(o,t){var f=zo(o,t);return Lo(f)?f:void 0}var U=Af;var Ho=Object.create,Of=function(){function o(){}return function(t){if(!l(t))return{};if(Ho)return Ho(t);o.prototype=t;var f=new o;return o.prototype=void 0,f}}(),Fo=Of;function Vf(o,t,f){switch(f.length){case 0:return o.call(t);case 1:return o.call(t,f[0]);case 2:return o.call(t,f[0],f[1]);case 3:return o.call(t,f[0],f[1],f[2])}return o.apply(t,f)}var Mo=Vf;function _f(o,t){var f=-1,d=o.length;t||(t=Array(d));while(++f<d)t[f]=o[f];return t}var Go=_f;var cf=800,yf=16,vf=Date.now;function Tf(o){var t=0,f=0;return function(){var d=vf(),m=yf-(d-f);if(f=d,m>0){if(++t>=cf)return arguments[0]}else t=0;return o.apply(void 0,arguments)}}var Ao=Tf;function kf(o){return function(){return o}}var Oo=kf;var bf=function(){try{var o=U(Object,"defineProperty");return o({},"",{}),o}catch(t){}}(),q=bf;var gf=!q?T:function(o,t){return q(o,"toString",{configurable:!0,enumerable:!1,value:Oo(t),writable:!0})},Vo=gf;var jf=Ao(Vo),_o=jf;var ef=9007199254740991,od=/^(?:0|[1-9]\d*)$/;function td(o,t){var f=typeof o;return t=t==null?ef:t,!!t&&(f=="number"||f!="symbol"&&od.test(o))&&(o>-1&&o%1==0&&o<t)}var b=td;function fd(o,t,f){if(t=="__proto__"&&q)q(o,t,{configurable:!0,enumerable:!0,value:f,writable:!0});else o[t]=f}var Y=fd;function dd(o,t){return o===t||o!==o&&t!==t}var W=dd;var id=Object.prototype,md=id.hasOwnProperty;function rd(o,t,f){var d=o[t];if(!(md.call(o,t)&&W(d,f))||f===void 0&&!(t in o))Y(o,t,f)}var co=rd;function nd(o,t,f,d){var m=!f;f||(f={});var r=-1,p=t.length;while(++r<p){var i=t[r],x=d?d(f[i],o[i],i,f,o):void 0;if(x===void 0)x=o[i];if(m)Y(f,i,x);else co(f,i,x)}return f}var yo=nd;var vo=Math.max;function pd(o,t,f){return t=vo(t===void 0?o.length-1:t,0),function(){var d=arguments,m=-1,r=vo(d.length-t,0),p=Array(r);while(++m<r)p[m]=d[t+m];m=-1;var i=Array(t+1);while(++m<t)i[m]=d[m];return i[t]=f(p),Mo(o,this,i)}}var To=pd;function xd(o,t){return _o(To(o,t,T),o+"")}var ko=xd;var ld=9007199254740991;function sd(o){return typeof o=="number"&&o>-1&&o%1==0&&o<=ld}var g=sd;function Pd(o){return o!=null&&g(o.length)&&!I(o)}var N=Pd;function ad(o,t,f){if(!l(f))return!1;var d=typeof t;if(d=="number"?N(f)&&b(t,f.length):d=="string"&&(t in f))return W(f[t],o);return!1}var bo=ad;function wd(o){return ko(function(t,f){var d=-1,m=f.length,r=m>1?f[m-1]:void 0,p=m>2?f[2]:void 0;if(r=o.length>3&&typeof r=="function"?(m--,r):void 0,p&&bo(f[0],f[1],p))r=m<3?void 0:r,m=1;t=Object(t);while(++d<m){var i=f[d];if(i)o(t,i,d,r)}return t})}var go=wd;var ud=Object.prototype;function hd(o){var t=o&&o.constructor,f=typeof t=="function"&&t.prototype||ud;return o===f}var j=hd;function Ed(o,t){var f=-1,d=Array(o);while(++f<o)d[f]=t(f);return d}var jo=Ed;var Wd="[object Arguments]";function Cd(o){return w(o)&&E(o)==Wd}var Wo=Cd;var eo=Object.prototype,Dd=eo.hasOwnProperty,Sd=eo.propertyIsEnumerable,Rd=Wo(function(){return arguments}())?Wo:function(o){return w(o)&&Dd.call(o,"callee")&&!Sd.call(o,"callee")},F=Rd;var oo={};Eo(oo,{default:()=>M});function Qd(){return!1}var ot=Qd;var dt=typeof oo=="object"&&oo&&!oo.nodeType&&oo,tt=dt&&typeof e=="object"&&e&&!e.nodeType&&e,Kd=tt&&tt.exports===dt,ft=Kd?a.Buffer:void 0,Id=ft?ft.isBuffer:void 0,Ud=Id||ot,M=Ud;var qd="[object Arguments]",Yd="[object Array]",Nd="[object Boolean]",Bd="[object Date]",$d="[object Error]",Jd="[object Function]",Zd="[object Map]",Xd="[object Number]",Ld="[object Object]",zd="[object RegExp]",Hd="[object Set]",Fd="[object String]",Md="[object WeakMap]",Gd="[object ArrayBuffer]",Ad="[object DataView]",Od="[object Float32Array]",Vd="[object Float64Array]",_d="[object Int8Array]",cd="[object Int16Array]",yd="[object Int32Array]",vd="[object Uint8Array]",Td="[object Uint8ClampedArray]",kd="[object Uint16Array]",bd="[object Uint32Array]",n={};n[Od]=n[Vd]=n[_d]=n[cd]=n[yd]=n[vd]=n[Td]=n[kd]=n[bd]=!0;n[qd]=n[Yd]=n[Gd]=n[Nd]=n[Ad]=n[Bd]=n[$d]=n[Jd]=n[Zd]=n[Xd]=n[Ld]=n[zd]=n[Hd]=n[Fd]=n[Md]=!1;function gd(o){return w(o)&&g(o.length)&&!!n[E(o)]}var it=gd;function jd(o){return function(t){return o(t)}}var mt=jd;var fo={};Eo(fo,{default:()=>io});var rt=typeof fo=="object"&&fo&&!fo.nodeType&&fo,G=rt&&typeof to=="object"&&to&&!to.nodeType&&to,ed=G&&G.exports===rt,Co=ed&&v.process,oi=function(){try{var o=G&&G.require&&G.require("util").types;if(o)return o;return Co&&Co.binding&&Co.binding("util")}catch(t){}}(),io=oi;var nt=io&&io.isTypedArray,ti=nt?mt(nt):it,mo=ti;var fi=Object.prototype,di=fi.hasOwnProperty;function ii(o,t){var f=H(o),d=!f&&F(o),m=!f&&!d&&M(o),r=!f&&!d&&!m&&mo(o),p=f||d||m||r,i=p?jo(o.length,String):[],x=i.length;for(var P in o)if((t||di.call(o,P))&&!(p&&(P=="length"||m&&(P=="offset"||P=="parent")||r&&(P=="buffer"||P=="byteLength"||P=="byteOffset")||b(P,x))))i.push(P);return i}var pt=ii;function mi(o,t){return function(f){return o(t(f))}}var xt=mi;function ri(o){var t=[];if(o!=null)for(var f in Object(o))t.push(f);return t}var lt=ri;var ni=Object.prototype,pi=ni.hasOwnProperty;function xi(o){if(!l(o))return lt(o);var t=j(o),f=[];for(var d in o)if(!(d=="constructor"&&(t||!pi.call(o,d))))f.push(d);return f}var st=xi;function li(o){return N(o)?pt(o,!0):st(o)}var ro=li;var si=U(Object,"create"),u=si;function Pi(){this.__data__=u?u(null):{},this.size=0}var Pt=Pi;function ai(o){var t=this.has(o)&&delete this.__data__[o];return this.size-=t?1:0,t}var at=ai;var wi="__lodash_hash_undefined__",ui=Object.prototype,hi=ui.hasOwnProperty;function Ei(o){var t=this.__data__;if(u){var f=t[o];return f===wi?void 0:f}return hi.call(t,o)?t[o]:void 0}var wt=Ei;var Wi=Object.prototype,Ci=Wi.hasOwnProperty;function Di(o){var t=this.__data__;return u?t[o]!==void 0:Ci.call(t,o)}var ut=Di;var Si="__lodash_hash_undefined__";function Ri(o,t){var f=this.__data__;return this.size+=this.has(o)?0:1,f[o]=u&&t===void 0?Si:t,this}var ht=Ri;function B(o){var t=-1,f=o==null?0:o.length;this.clear();while(++t<f){var d=o[t];this.set(d[0],d[1])}}B.prototype.clear=Pt;B.prototype.delete=at;B.prototype.get=wt;B.prototype.has=ut;B.prototype.set=ht;var Do=B;function Qi(){this.__data__=[],this.size=0}var Et=Qi;function Ki(o,t){var f=o.length;while(f--)if(W(o[f][0],t))return f;return-1}var C=Ki;var Ii=Array.prototype,Ui=Ii.splice;function qi(o){var t=this.__data__,f=C(t,o);if(f<0)return!1;var d=t.length-1;if(f==d)t.pop();else Ui.call(t,f,1);return--this.size,!0}var Wt=qi;function Yi(o){var t=this.__data__,f=C(t,o);return f<0?void 0:t[f][1]}var Ct=Yi;function Ni(o){return C(this.__data__,o)>-1}var Dt=Ni;function Bi(o,t){var f=this.__data__,d=C(f,o);if(d<0)++this.size,f.push([o,t]);else f[d][1]=t;return this}var St=Bi;function $(o){var t=-1,f=o==null?0:o.length;this.clear();while(++t<f){var d=o[t];this.set(d[0],d[1])}}$.prototype.clear=Et;$.prototype.delete=Wt;$.prototype.get=Ct;$.prototype.has=Dt;$.prototype.set=St;var D=$;var $i=U(a,"Map"),no=$i;function Ji(){this.size=0,this.__data__={hash:new Do,map:new(no||D),string:new Do}}var Rt=Ji;function Zi(o){var t=typeof o;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?o!=="__proto__":o===null}var Qt=Zi;function Xi(o,t){var f=o.__data__;return Qt(t)?f[typeof t=="string"?"string":"hash"]:f.map}var S=Xi;function Li(o){var t=S(this,o).delete(o);return this.size-=t?1:0,t}var Kt=Li;function zi(o){return S(this,o).get(o)}var It=zi;function Hi(o){return S(this,o).has(o)}var Ut=Hi;function Fi(o,t){var f=S(this,o),d=f.size;return f.set(o,t),this.size+=f.size==d?0:1,this}var qt=Fi;function J(o){var t=-1,f=o==null?0:o.length;this.clear();while(++t<f){var d=o[t];this.set(d[0],d[1])}}J.prototype.clear=Rt;J.prototype.delete=Kt;J.prototype.get=It;J.prototype.has=Ut;J.prototype.set=qt;var Yt=J;var Mi=xt(Object.getPrototypeOf,Object),po=Mi;var Gi="[object Object]",Ai=Function.prototype,Oi=Object.prototype,Nt=Ai.toString,Vi=Oi.hasOwnProperty,_i=Nt.call(Object);function ci(o){if(!w(o)||E(o)!=Gi)return!1;var t=po(o);if(t===null)return!0;var f=Vi.call(t,"constructor")&&t.constructor;return typeof f=="function"&&f instanceof f&&Nt.call(f)==_i}var Bt=ci;function yi(){this.__data__=new D,this.size=0}var $t=yi;function vi(o){var t=this.__data__,f=t.delete(o);return this.size=t.size,f}var Jt=vi;function Ti(o){return this.__data__.get(o)}var Zt=Ti;function ki(o){return this.__data__.has(o)}var Xt=ki;var bi=200;function gi(o,t){var f=this.__data__;if(f instanceof D){var d=f.__data__;if(!no||d.length<bi-1)return d.push([o,t]),this.size=++f.size,this;f=this.__data__=new Yt(d)}return f.set(o,t),this.size=f.size,this}var Lt=gi;function Z(o){var t=this.__data__=new D(o);this.size=t.size}Z.prototype.clear=$t;Z.prototype.delete=Jt;Z.prototype.get=Zt;Z.prototype.has=Xt;Z.prototype.set=Lt;var zt=Z;var lo={};Eo(lo,{default:()=>So});var Gt=typeof lo=="object"&&lo&&!lo.nodeType&&lo,Ht=Gt&&typeof xo=="object"&&xo&&!xo.nodeType&&xo,ji=Ht&&Ht.exports===Gt,Ft=ji?a.Buffer:void 0,Mt=Ft?Ft.allocUnsafe:void 0;function ei(o,t){if(t)return o.slice();var f=o.length,d=Mt?Mt(f):new o.constructor(f);return o.copy(d),d}var So=ei;var om=a.Uint8Array,Ro=om;function tm(o){var t=new o.constructor(o.byteLength);return new Ro(t).set(new Ro(o)),t}var At=tm;function fm(o,t){var f=t?At(o.buffer):o.buffer;return new o.constructor(f,o.byteOffset,o.length)}var Ot=fm;function dm(o){return typeof o.constructor=="function"&&!j(o)?Fo(po(o)):{}}var Vt=dm;function im(o){return function(t,f,d){var m=-1,r=Object(t),p=d(t),i=p.length;while(i--){var x=p[o?i:++m];if(f(r[x],x,r)===!1)break}return t}}var _t=im;var mm=_t(),ct=mm;function rm(o,t,f){if(f!==void 0&&!W(o[t],f)||f===void 0&&!(t in o))Y(o,t,f)}var A=rm;function nm(o){return w(o)&&N(o)}var yt=nm;function pm(o,t){if(t==="constructor"&&typeof o[t]==="function")return;if(t=="__proto__")return;return o[t]}var O=pm;function xm(o){return yo(o,ro(o))}var vt=xm;function lm(o,t,f,d,m,r,p){var i=O(o,f),x=O(t,f),P=p.get(x);if(P){A(o,f,P);return}var s=r?r(i,x,f+"",o,t,p):void 0,L=s===void 0;if(L){var uo=H(x),ho=!uo&&M(x),Ko=!uo&&!ho&&mo(x);if(s=x,uo||ho||Ko)if(H(i))s=i;else if(yt(i))s=Go(i);else if(ho)L=!1,s=So(x,!0);else if(Ko)L=!1,s=Ot(x,!0);else s=[];else if(Bt(x)||F(x)){if(s=i,F(i))s=vt(i);else if(!l(i)||I(i))s=Vt(x)}else L=!1}if(L)p.set(x,s),m(s,x,d,r,p),p.delete(x);A(o,f,s)}var Tt=lm;function kt(o,t,f,d,m){if(o===t)return;ct(t,function(r,p){if(m||(m=new zt),l(r))Tt(o,t,p,f,kt,d,m);else{var i=d?d(O(o,p),r,p+"",o,t,m):void 0;if(i===void 0)i=r;A(o,p,i)}},ro)}var bt=kt;var sm=go(function(o,t,f){bt(o,t,f)}),Qo=sm;class so{get bundleIdentifier(){return this.#o}get displayName(){return this.#f}get playbackQueue(){return this.#d}get playbackState(){return this.#i}get playbackStateTimestamp(){return this.#r}get supportedCommands(){return this.#t}#o;#f;#d=null;#i;#r;#t=[];constructor(o,t){this.#o=o,this.#f=t,this.#i=Pm.PlaybackState_Enum.Unknown,this.#t=[]}isCommandSupported(o){return this.#t.some((t)=>t.command===o)}setPlaybackQueue(o){this.#d=o}setPlaybackState(o,t){this.#i=o,this.#r=t}setSupportedCommands(o){this.#t=o}updateContentItem(o){if(!this.#d)return;let t=this.#d.contentItems.findIndex((f)=>f.identifier===o.identifier);if(t===-1)return;this.#d.contentItems[t]=Qo(o,this.#d.contentItems[t])}}class gt extends am{get#o(){return this.#f.dataStream}get#f(){return this.#d[h]}get clients(){return this.#i}get nowPlayingClient(){return this.#r?this.#i[this.#r]??null:null}get volume(){return this.#t}get volumeAvailable(){return this.#n}get volumeCapabilities(){return this.#p}#d;#i;#r;#t;#n;#p;constructor(o){super();this.#d=o,this.clear(),this.onDeviceInfo=this.onDeviceInfo.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)}async[c](){this.#o.on("deviceInfo",this.onDeviceInfo),this.#o.on("originClientProperties",this.onOriginClientProperties),this.#o.on("playerClientProperties",this.onPlayerClientProperties),this.#o.on("removeClient",this.onRemoveClient),this.#o.on("sendCommandResult",this.onSendCommandResult),this.#o.on("setArtwork",this.onSetArtwork),this.#o.on("setDefaultSupportedCommands",this.onSetDefaultSupportedCommands),this.#o.on("setNowPlayingClient",this.onSetNowPlayingClient),this.#o.on("setNowPlayingPlayer",this.onSetNowPlayingPlayer),this.#o.on("setState",this.onSetState),this.#o.on("updateClient",this.onUpdateClient),this.#o.on("updateContentItem",this.onUpdateContentItem),this.#o.on("updateContentItemArtwork",this.onUpdateContentItemArtwork),this.#o.on("updatePlayer",this.onUpdatePlayer),this.#o.on("updateOutputDevice",this.onUpdateOutputDevice),this.#o.on("volumeControlAvailability",this.onVolumeControlAvailability),this.#o.on("volumeControlCapabilitiesDidChange",this.onVolumeControlCapabilitiesDidChange),this.#o.on("volumeDidChange",this.onVolumeDidChange)}async[y](){let o=this.#o;if(!o)return;o.off("deviceInfo",this.onDeviceInfo),o.off("originClientProperties",this.onOriginClientProperties),o.off("playerClientProperties",this.onPlayerClientProperties),o.off("removeClient",this.onRemoveClient),o.off("sendCommandResult",this.onSendCommandResult),o.off("setArtwork",this.onSetArtwork),o.off("setDefaultSupportedCommands",this.onSetDefaultSupportedCommands),o.off("setNowPlayingClient",this.onSetNowPlayingClient),o.off("setNowPlayingPlayer",this.onSetNowPlayingPlayer),o.off("setState",this.onSetState),o.off("updateClient",this.onUpdateClient),o.off("updateContentItem",this.onUpdateContentItem),o.off("updateContentItemArtwork",this.onUpdateContentItemArtwork),o.off("updatePlayer",this.onUpdatePlayer),o.off("updateOutputDevice",this.onUpdateOutputDevice),o.off("volumeControlAvailability",this.onVolumeControlAvailability),o.off("volumeControlCapabilitiesDidChange",this.onVolumeControlCapabilitiesDidChange),o.off("volumeDidChange",this.onVolumeDidChange)}clear(){this.#i={},this.#r=void 0,this.#t=0,this.#n=!1,this.#p=wm.VolumeCapabilities_Enum.None}async onDeviceInfo(o){this.emit("deviceInfo",o)}async onOriginClientProperties(o){this.emit("originClientProperties",o)}async onPlayerClientProperties(o){this.emit("playerClientProperties",o)}async onRemoveClient(o){if(!(o.client.bundleIdentifier in this.#i))return;delete this.#i[o.client.bundleIdentifier],this.emit("clients",this.#i)}async onSendCommandResult(o){this.emit("sendCommandResult",o)}async onSetArtwork(o){this.emit("setArtwork",o)}async onSetDefaultSupportedCommands(o){this.emit("setDefaultSupportedCommands",o)}async onSetNowPlayingClient(o){this.#r=o.client?.bundleIdentifier??null,this.emit("setNowPlayingClient",o)}async onSetNowPlayingPlayer(o){this.emit("setNowPlayingPlayer",o)}async onSetState(o){let t=this.#x(o.playerPath.client.bundleIdentifier,o.displayName);if(o.playbackState)t.setPlaybackState(o.playbackState,o.playbackStateTimestamp);if(o.supportedCommands)t.setSupportedCommands(o.supportedCommands.supportedCommands);if(o.playbackQueue)t.setPlaybackQueue(o.playbackQueue);this.emit("setState",o)}async onUpdateContentItem(o){let t=this.#x(o.playerPath.client.bundleIdentifier,o.playerPath.client.displayName);if(!t)return;for(let f of o.contentItems)t.updateContentItem(f);this.emit("updateContentItem",o)}async onUpdateContentItemArtwork(o){this.emit("updateContentItemArtwork",o)}async onUpdatePlayer(o){this.emit("updatePlayer",o)}async onUpdateClient(o){this.#x(o.client.bundleIdentifier,o.client.displayName),this.emit("clients",this.#i)}async onUpdateOutputDevice(o){this.emit("updateOutputDevice",o)}async onVolumeControlAvailability(o){this.#n=o.volumeControlAvailable,this.#p=o.volumeCapabilities,this.emit("volumeControlAvailability",o.volumeControlAvailable,o.volumeCapabilities)}async onVolumeControlCapabilitiesDidChange(o){this.#n=o.capabilities.volumeControlAvailable,this.#p=o.capabilities.volumeCapabilities,this.emit("volumeControlCapabilitiesDidChange",o.capabilities.volumeControlAvailable,o.capabilities.volumeCapabilities)}async onVolumeDidChange(o){this.#t=o.volume,this.emit("volumeDidChange",o.volume)}#x(o,t){if(o in this.#i)return this.#i[o];else{let f=new so(o,t);return this.#i[o]=f,this.emit("clients",this.#i),f}}}class X extends um{get[h](){return this.#m}get#o(){return this.#m.dataStream}get#f(){return this.#m.eventStream}get isConnected(){return this.#m?.rtsp?.isConnected??!1}get remote(){return this.#i}get state(){return this.#r}get timingServer(){return this.#l}set timingServer(o){this.#l=o}#d;#i;#r;#t;#n=!1;#p;#x;#m;#l;constructor(o){super();this.#d=o,this.#i=new qo(this),this.#r=new gt(this)}async connect(){if(this.#n=!1,this.#r.clear(),this.#m=new hm(this.#d),this.#m.rtsp.on("close",async()=>this.#a()),this.#m.rtsp.on("error",async(o)=>this.#s(o)),this.#m.rtsp.on("timeout",async()=>this.#w()),await this.#m.connect(),this.#t)this.#x=await this.#m.verify.start(this.#t);else await this.#m.pairing.start(),this.#x=await this.#m.pairing.transient();await this.#h(),this.emit("connected")}async disconnect(){this.#n=!0,clearInterval(this.#p),await this.#u(),await this.#m.disconnect(),this.emit("disconnected",!1)}async disconnectSafely(){try{await this.disconnect()}catch(o){}}async requestPlaybackQueue(o){await this.#o.exchange(this.#o.messages.playbackQueueRequest(0,o))}async sendCommand(o,t){await this.#o.exchange(this.#o.messages.sendCommand(o,t))}async setVolume(o){await this.#o.exchange(this.#o.messages.setVolume(o))}async setCredentials(o){this.#t=o}async#P(){try{await this.#m.feedback()}catch(o){V.error("Feedback error",o)}}async#a(){if(this.#n)return;clearInterval(this.#p),this.emit("disconnected",!0)}async#s(o){V.error("AirPlay error",o),await this.disconnectSafely(),this.emit("disconnected",!0)}async#w(){V.error("AirPlay timeout"),await this.disconnectSafely(),this.emit("disconnected",!0)}async#h(){let o=this.#x;if(await this.#m.rtsp.enableEncryption(o.accessoryToControllerKey,o.controllerToAccessoryKey),await this.#u(),this.#l)await this.#m.setupTimingServer(this.#l);await this.#m.setupEventStream(o.pairingId,o.sharedSecret),await this.#m.setupDataStream(o.sharedSecret),await this.#E(),this.#o.on("error",async(d)=>this.#s(d)),this.#o.on("timeout",async()=>this.#w()),this.#f.on("error",async(d)=>this.#s(d)),this.#f.on("timeout",async()=>this.#w()),this.#p=setInterval(async()=>await this.#P(),Io);let t=this.#d.packet.additionals.find((d)=>("rdata"in d)&&typeof d.rdata==="object"&&("gid"in d.rdata))?.rdata.gid;if(t)await this.#o.exchange(this.#o.messages.configureConnection(t));if(await this.#o.exchange(this.#o.messages.deviceInfo(o.pairingId)),!await Promise.race([new Promise((d)=>{this.#o.on("deviceInfo",async()=>{await this.#o.exchange(this.#o.messages.setConnectionState()),await this.#o.exchange(this.#o.messages.clientUpdatesConfig()),d(!0)})}),async()=>{return await Em(3000),!1}]))await this.#s(Error("Device did not respond in time with its info."));else V.info("Device info received successfully, protocol should be ready.")}async#E(){await this.#r[c]()}async#u(){try{await this.#r[y]()}catch(o){V.error("State unsubscribe error",o)}}}var Po=Symbol("com.basmilius.companion-link:protocol");import{EventEmitter as Wm}from"node:events";import{reporter as _}from"@basmilius/apple-common";import{CompanionLink as Cm,convertAttentionState as jt}from"@basmilius/apple-companion-link";class ao extends Wm{get[Po](){return this.#t}get isConnected(){return this.#t?.socket?.isConnected??!1}#o;#f=!1;#d;#i;#r;#t;constructor(o){super();this.#d=o,this.onSystemStatus=this.onSystemStatus.bind(this),this.onTVSystemStatus=this.onTVSystemStatus.bind(this)}async connect(){if(!this.#o)throw Error("Credentials are required to connect to a Companion Link device.");this.#f=!1,this.#t=new Cm(this.#d),this.#t.socket.on("close",async()=>this.#p()),this.#t.socket.on("error",async(o)=>this.#x(o)),this.#t.socket.on("timeout",async()=>this.#m()),await this.#t.connect(),this.#r=await this.#t.verify.start(this.#o),await this.#l(),this.emit("connected")}async disconnect(){this.#f=!0,clearInterval(this.#i),await this.#a(),await this.#t.disconnect(),this.emit("disconnected",!1)}async disconnectSafely(){try{await this.disconnect()}catch(o){}}async setCredentials(o){this.#o=o}async setDiscoveryResult(o){this.#d=o}async getAttentionState(){return await this.#t.api.getAttentionState()}async getLaunchableApps(){return await this.#t.api.getLaunchableApps()}async getUserAccounts(){return await this.#t.api.getUserAccounts()}async launchApp(o){await this.#t.api.launchApp(o)}async launchUrl(o){await this.#t.api.launchUrl(o)}async mediaControlCommand(o,t){await this.#t.api.mediaControlCommand(o,t)}async pressButton(o,t,f){await this.#t.api.pressButton(o,t,f)}async switchUserAccount(o){await this.#t.api.switchUserAccount(o)}async#n(){try{await this.#t.api._systemInfo(this.#o.pairingId)}catch(o){_.error("Heartbeat error",o)}}async#p(){if(this.#f)return;clearInterval(this.#i),this.emit("disconnected",!0)}async#x(o){_.error("Companion Link error",o);try{await this.disconnect()}catch(t){}this.emit("disconnected",!0)}async#m(){_.error("Companion Link timeout"),await this.disconnectSafely(),this.emit("disconnected",!0)}async#l(){let o=this.#r;await this.#t.socket.enableEncryption(o.accessoryToControllerKey,o.controllerToAccessoryKey),await this.#t.api._systemInfo(this.#o.pairingId),await this.#t.api._touchStart(),await this.#t.api._sessionStart(),await this.#t.api._tvrcSessionStart(),await this.#t.api._unsubscribe("_iMC"),this.#i=setInterval(async()=>await this.#n(),15000),await this.#P()}async#P(){await this.#t.api._subscribe("SystemStatus",this.onSystemStatus),await this.#t.api._subscribe("TVSystemStatus",this.onTVSystemStatus);let o=await this.getAttentionState();this.emit("power",o)}async#a(){await this.#t.api._unsubscribe("SystemStatus",this.onSystemStatus),await this.#t.api._unsubscribe("TVSystemStatus",this.onTVSystemStatus)}async onSystemStatus(o){_.info("System Status",o),this.emit("power",jt(o.state))}async onTVSystemStatus(o){_.info("TV System Status",o),this.emit("power",jt(o.state))}}import{EventEmitter as Dm}from"node:events";import{Proto as R}from"@basmilius/apple-airplay";class et extends Dm{get airplay(){return this.#o}get companionLink(){return this.#f}get bundleIdentifier(){return this.#o.state.nowPlayingClient?.bundleIdentifier??null}get displayName(){return this.#o.state.nowPlayingClient?.displayName??null}get isConnected(){return this.#o.isConnected&&this.#f.isConnected}get isPlaying(){return this.playbackState===R.PlaybackState_Enum.Playing}get playbackQueue(){return this.#o.state.nowPlayingClient?.playbackQueue??null}get playbackState(){return this.#o.state.nowPlayingClient?.playbackState??R.PlaybackState_Enum.Unknown}get playbackStateTimestamp(){return this.#o.state.nowPlayingClient?.playbackStateTimestamp??-1}#o;#f;#d=!1;constructor(o,t){super();this.#o=new X(o),this.#f=new ao(t),this.#o.on("connected",()=>this.#i()),this.#o.on("disconnected",(f)=>this.#r(f)),this.#f.on("connected",()=>this.#i()),this.#f.on("disconnected",(f)=>this.#r(f))}async connect(o){await this.#o.setCredentials(o),await this.#f.setCredentials(o),await this.#o.connect(),await this.#f.connect(),this.#d=!1}async disconnect(){await this.#o.disconnect(),await this.#f.disconnect()}async turnOff(){await this.#o.remote.suspend()}async turnOn(){await this.#o.remote.wake()}async pause(){await this.#o.sendCommand(R.Command.Pause)}async playPause(){await this.#o.sendCommand(R.Command.TogglePlayPause)}async play(){await this.#o.sendCommand(R.Command.Play)}async stop(){await this.#o.sendCommand(R.Command.Stop)}async next(){await this.#o.sendCommand(R.Command.NextInContext)}async previous(){await this.#o.sendCommand(R.Command.PreviousInContext)}async volumeDown(){await this.#o.remote.volumeDown()}async volumeMute(){await this.#o.remote.mute()}async volumeUp(){await this.#o.remote.volumeUp()}async getCommandInfo(o){let t=this.#o.state.nowPlayingClient;if(!t)return null;return t.supportedCommands.find((f)=>f.command===o)??null}async isCommandSupported(o){let t=this.#o.state.nowPlayingClient;if(!t)return!1;return t.isCommandSupported(o)}async#i(){if(!this.#o.isConnected||!this.#f.isConnected)return;this.emit("connected")}async#r(o){if(this.#d)return;this.#d=!0,await this.disconnect(),this.emit("disconnected",o)}}import{EventEmitter as Sm}from"node:events";import{Proto as Q}from"@basmilius/apple-airplay";class wo extends Sm{get airplay(){return this.#o}get bundleIdentifier(){return this.#o.state.nowPlayingClient?.bundleIdentifier??null}get displayName(){return this.#o.state.nowPlayingClient?.displayName??null}get isConnected(){return this.#o.isConnected}get isPlaying(){return this.playbackState===Q.PlaybackState_Enum.Playing}get playbackQueue(){return this.#o.state.nowPlayingClient?.playbackQueue??null}get playbackState(){return this.#o.state.nowPlayingClient?.playbackState??Q.PlaybackState_Enum.Unknown}get playbackStateTimestamp(){return this.#o.state.nowPlayingClient?.playbackStateTimestamp??-1}get volume(){return this.#o.state.volume??0}#o;#f=!1;constructor(o){super();this.#o=new X(o),this.#o.on("connected",()=>this.#d()),this.#o.on("disconnected",(t)=>this.#i(t))}async connect(){await this.#o.connect(),this.#f=!1}async disconnect(){await this.#o.disconnect()}async pause(){await this.#o.sendCommand(Q.Command.Pause)}async playPause(){await this.#o.sendCommand(Q.Command.TogglePlayPause)}async play(){await this.#o.sendCommand(Q.Command.Play)}async stop(){await this.#o.sendCommand(Q.Command.Stop)}async next(){await this.#o.sendCommand(Q.Command.NextInContext)}async previous(){await this.#o.sendCommand(Q.Command.PreviousInContext)}async setVolume(o){await this.#o.setVolume(o)}async getCommandInfo(o){let t=this.#o.state.nowPlayingClient;if(!t)return null;return t.supportedCommands.find((f)=>f.command===o)??null}async isCommandSupported(o){let t=this.#o.state.nowPlayingClient;if(!t)return!1;return t.isCommandSupported(o)}async#d(){this.emit("connected")}async#i(o){if(this.#f)return;this.#f=!0,await this.disconnect(),this.emit("disconnected",o)}}class of extends wo{}class tf extends wo{}export{tf as HomePodMini,of as HomePod,ao as CompanionLinkDevice,Po as COMPANION_LINK,et as AppleTV,X as AirPlayDevice,h as AIRPLAY};
1
+ var xf=Object.defineProperty;var Ro=(o,t)=>{for(var f in t)xf(o,f,{get:t[f],enumerable:!0,configurable:!0,set:(i)=>t[f]=()=>i})};var No=2000,s=Symbol("com.basmilius.airplay:protocol"),v=Symbol("com.basmilius.airplay:subscribe"),T=Symbol("com.basmilius.airplay:unsubscribe");import{EventEmitter as Dr}from"node:events";import{AirPlay as Qr,DataStreamMessage as L}from"@basmilius/apple-airplay";import{reporter as c,waitFor as Kr}from"@basmilius/apple-common";import{DataStreamMessage as b}from"@basmilius/apple-airplay";import{Proto as lf}from"@basmilius/apple-airplay";import{waitFor as Wo}from"@basmilius/apple-common";class $o{get#o(){return this.#f.dataStream}get#f(){return this.#i[s]}#i;constructor(o){this.#i=o}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(){if(this.#i.state.nowPlayingClient?.playbackState===lf.PlaybackState_Enum.Playing)await this.pause();else 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(o,t){await this.pressAndRelease(o,t),await Wo(150),await this.pressAndRelease(o,t)}async longPress(o,t,f=1000){await this.#o.exchange(b.sendHIDEvent(o,t,!0)),await Wo(f),await this.#o.exchange(b.sendHIDEvent(o,t,!1))}async pressAndRelease(o,t){await this.#o.exchange(b.sendHIDEvent(o,t,!0)),await Wo(25),await this.#o.exchange(b.sendHIDEvent(o,t,!1))}}import{EventEmitter as Cr}from"node:events";import{Proto as Rr}from"@basmilius/apple-airplay";import{Proto as Sr}from"@basmilius/apple-airplay";var af=typeof global=="object"&&global&&global.Object===Object&&global,k=af;var Pf=typeof self=="object"&&self&&self.Object===Object&&self,wf=k||Pf||Function("return this")(),w=wf;var sf=w.Symbol,U=sf;var Jo=Object.prototype,uf=Jo.hasOwnProperty,hf=Jo.toString,M=U?U.toStringTag:void 0;function Ef(o){var t=uf.call(o,M),f=o[M];try{o[M]=void 0;var i=!0}catch(m){}var r=hf.call(o);if(i)if(t)o[M]=f;else delete o[M];return r}var Zo=Ef;var Sf=Object.prototype,Cf=Sf.toString;function Rf(o){return Cf.call(o)}var Xo=Rf;var Wf="[object Null]",Df="[object Undefined]",Lo=U?U.toStringTag:void 0;function Qf(o){if(o==null)return o===void 0?Df:Wf;return Lo&&Lo in Object(o)?Zo(o):Xo(o)}var S=Qf;function Kf(o){return o!=null&&typeof o=="object"}var u=Kf;var Uf=Array.isArray,F=Uf;function qf(o){var t=typeof o;return o!=null&&(t=="object"||t=="function")}var l=qf;function If(o){return o}var g=If;var Yf="[object AsyncFunction]",Bf="[object Function]",Nf="[object GeneratorFunction]",$f="[object Proxy]";function Jf(o){if(!l(o))return!1;var t=S(o);return t==Bf||t==Nf||t==Yf||t==$f}var q=Jf;var Zf=w["__core-js_shared__"],e=Zf;var zo=function(){var o=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return o?"Symbol(src)_1."+o:""}();function Xf(o){return!!zo&&zo in o}var Ho=Xf;var Lf=Function.prototype,zf=Lf.toString;function Hf(o){if(o!=null){try{return zf.call(o)}catch(t){}try{return o+""}catch(t){}}return""}var Mo=Hf;var Mf=/[\\^$.*+?()[\]{}|]/g,Ff=/^\[object .+?Constructor\]$/,Gf=Function.prototype,Af=Object.prototype,Vf=Gf.toString,Of=Af.hasOwnProperty,_f=RegExp("^"+Vf.call(Of).replace(Mf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function cf(o){if(!l(o)||Ho(o))return!1;var t=q(o)?_f:Ff;return t.test(Mo(o))}var Fo=cf;function yf(o,t){return o==null?void 0:o[t]}var Go=yf;function vf(o,t){var f=Go(o,t);return Fo(f)?f:void 0}var I=vf;var Ao=Object.create,Tf=function(){function o(){}return function(t){if(!l(t))return{};if(Ao)return Ao(t);o.prototype=t;var f=new o;return o.prototype=void 0,f}}(),Vo=Tf;function bf(o,t,f){switch(f.length){case 0:return o.call(t);case 1:return o.call(t,f[0]);case 2:return o.call(t,f[0],f[1]);case 3:return o.call(t,f[0],f[1],f[2])}return o.apply(t,f)}var Oo=bf;function kf(o,t){var f=-1,i=o.length;t||(t=Array(i));while(++f<i)t[f]=o[f];return t}var _o=kf;var gf=800,ef=16,jf=Date.now;function oi(o){var t=0,f=0;return function(){var i=jf(),r=ef-(i-f);if(f=i,r>0){if(++t>=gf)return arguments[0]}else t=0;return o.apply(void 0,arguments)}}var co=oi;function ti(o){return function(){return o}}var yo=ti;var fi=function(){try{var o=I(Object,"defineProperty");return o({},"",{}),o}catch(t){}}(),Y=fi;var ii=!Y?g:function(o,t){return Y(o,"toString",{configurable:!0,enumerable:!1,value:yo(t),writable:!0})},vo=ii;var di=co(vo),To=di;var ri=9007199254740991,mi=/^(?:0|[1-9]\d*)$/;function ni(o,t){var f=typeof o;return t=t==null?ri:t,!!t&&(f=="number"||f!="symbol"&&mi.test(o))&&(o>-1&&o%1==0&&o<t)}var j=ni;function pi(o,t,f){if(t=="__proto__"&&Y)Y(o,t,{configurable:!0,enumerable:!0,value:f,writable:!0});else o[t]=f}var B=pi;function xi(o,t){return o===t||o!==o&&t!==t}var C=xi;var li=Object.prototype,ai=li.hasOwnProperty;function Pi(o,t,f){var i=o[t];if(!(ai.call(o,t)&&C(i,f))||f===void 0&&!(t in o))B(o,t,f)}var bo=Pi;function wi(o,t,f,i){var r=!f;f||(f={});var m=-1,p=t.length;while(++m<p){var d=t[m],x=i?i(f[d],o[d],d,f,o):void 0;if(x===void 0)x=o[d];if(r)B(f,d,x);else bo(f,d,x)}return f}var ko=wi;var go=Math.max;function si(o,t,f){return t=go(t===void 0?o.length-1:t,0),function(){var i=arguments,r=-1,m=go(i.length-t,0),p=Array(m);while(++r<m)p[r]=i[t+r];r=-1;var d=Array(t+1);while(++r<t)d[r]=i[r];return d[t]=f(p),Oo(o,this,d)}}var eo=si;function ui(o,t){return To(eo(o,t,g),o+"")}var jo=ui;var hi=9007199254740991;function Ei(o){return typeof o=="number"&&o>-1&&o%1==0&&o<=hi}var oo=Ei;function Si(o){return o!=null&&oo(o.length)&&!q(o)}var N=Si;function Ci(o,t,f){if(!l(f))return!1;var i=typeof t;if(i=="number"?N(f)&&j(t,f.length):i=="string"&&(t in f))return C(f[t],o);return!1}var ot=Ci;function Ri(o){return jo(function(t,f){var i=-1,r=f.length,m=r>1?f[r-1]:void 0,p=r>2?f[2]:void 0;if(m=o.length>3&&typeof m=="function"?(r--,m):void 0,p&&ot(f[0],f[1],p))m=r<3?void 0:m,r=1;t=Object(t);while(++i<r){var d=f[i];if(d)o(t,d,i,m)}return t})}var tt=Ri;var Wi=Object.prototype;function Di(o){var t=o&&o.constructor,f=typeof t=="function"&&t.prototype||Wi;return o===f}var to=Di;function Qi(o,t){var f=-1,i=Array(o);while(++f<o)i[f]=t(f);return i}var ft=Qi;var Ki="[object Arguments]";function Ui(o){return u(o)&&S(o)==Ki}var Do=Ui;var it=Object.prototype,qi=it.hasOwnProperty,Ii=it.propertyIsEnumerable,Yi=Do(function(){return arguments}())?Do:function(o){return u(o)&&qi.call(o,"callee")&&!Ii.call(o,"callee")},G=Yi;var io={};Ro(io,{default:()=>A});function Bi(){return!1}var dt=Bi;var nt=typeof io=="object"&&io&&!io.nodeType&&io,rt=nt&&typeof fo=="object"&&fo&&!fo.nodeType&&fo,Ni=rt&&rt.exports===nt,mt=Ni?w.Buffer:void 0,$i=mt?mt.isBuffer:void 0,Ji=$i||dt,A=Ji;var Zi="[object Arguments]",Xi="[object Array]",Li="[object Boolean]",zi="[object Date]",Hi="[object Error]",Mi="[object Function]",Fi="[object Map]",Gi="[object Number]",Ai="[object Object]",Vi="[object RegExp]",Oi="[object Set]",_i="[object String]",ci="[object WeakMap]",yi="[object ArrayBuffer]",vi="[object DataView]",Ti="[object Float32Array]",bi="[object Float64Array]",ki="[object Int8Array]",gi="[object Int16Array]",ei="[object Int32Array]",ji="[object Uint8Array]",od="[object Uint8ClampedArray]",td="[object Uint16Array]",fd="[object Uint32Array]",n={};n[Ti]=n[bi]=n[ki]=n[gi]=n[ei]=n[ji]=n[od]=n[td]=n[fd]=!0;n[Zi]=n[Xi]=n[yi]=n[Li]=n[vi]=n[zi]=n[Hi]=n[Mi]=n[Fi]=n[Gi]=n[Ai]=n[Vi]=n[Oi]=n[_i]=n[ci]=!1;function id(o){return u(o)&&oo(o.length)&&!!n[S(o)]}var pt=id;function dd(o){return function(t){return o(t)}}var xt=dd;var mo={};Ro(mo,{default:()=>no});var lt=typeof mo=="object"&&mo&&!mo.nodeType&&mo,V=lt&&typeof ro=="object"&&ro&&!ro.nodeType&&ro,rd=V&&V.exports===lt,Qo=rd&&k.process,md=function(){try{var o=V&&V.require&&V.require("util").types;if(o)return o;return Qo&&Qo.binding&&Qo.binding("util")}catch(t){}}(),no=md;var at=no&&no.isTypedArray,nd=at?xt(at):pt,po=nd;var pd=Object.prototype,xd=pd.hasOwnProperty;function ld(o,t){var f=F(o),i=!f&&G(o),r=!f&&!i&&A(o),m=!f&&!i&&!r&&po(o),p=f||i||r||m,d=p?ft(o.length,String):[],x=d.length;for(var P in o)if((t||xd.call(o,P))&&!(p&&(P=="length"||r&&(P=="offset"||P=="parent")||m&&(P=="buffer"||P=="byteLength"||P=="byteOffset")||j(P,x))))d.push(P);return d}var Pt=ld;function ad(o,t){return function(f){return o(t(f))}}var wt=ad;function Pd(o){var t=[];if(o!=null)for(var f in Object(o))t.push(f);return t}var st=Pd;var wd=Object.prototype,sd=wd.hasOwnProperty;function ud(o){if(!l(o))return st(o);var t=to(o),f=[];for(var i in o)if(!(i=="constructor"&&(t||!sd.call(o,i))))f.push(i);return f}var ut=ud;function hd(o){return N(o)?Pt(o,!0):ut(o)}var xo=hd;var Ed=I(Object,"create"),E=Ed;function Sd(){this.__data__=E?E(null):{},this.size=0}var ht=Sd;function Cd(o){var t=this.has(o)&&delete this.__data__[o];return this.size-=t?1:0,t}var Et=Cd;var Rd="__lodash_hash_undefined__",Wd=Object.prototype,Dd=Wd.hasOwnProperty;function Qd(o){var t=this.__data__;if(E){var f=t[o];return f===Rd?void 0:f}return Dd.call(t,o)?t[o]:void 0}var St=Qd;var Kd=Object.prototype,Ud=Kd.hasOwnProperty;function qd(o){var t=this.__data__;return E?t[o]!==void 0:Ud.call(t,o)}var Ct=qd;var Id="__lodash_hash_undefined__";function Yd(o,t){var f=this.__data__;return this.size+=this.has(o)?0:1,f[o]=E&&t===void 0?Id:t,this}var Rt=Yd;function $(o){var t=-1,f=o==null?0:o.length;this.clear();while(++t<f){var i=o[t];this.set(i[0],i[1])}}$.prototype.clear=ht;$.prototype.delete=Et;$.prototype.get=St;$.prototype.has=Ct;$.prototype.set=Rt;var Ko=$;function Bd(){this.__data__=[],this.size=0}var Wt=Bd;function Nd(o,t){var f=o.length;while(f--)if(C(o[f][0],t))return f;return-1}var R=Nd;var $d=Array.prototype,Jd=$d.splice;function Zd(o){var t=this.__data__,f=R(t,o);if(f<0)return!1;var i=t.length-1;if(f==i)t.pop();else Jd.call(t,f,1);return--this.size,!0}var Dt=Zd;function Xd(o){var t=this.__data__,f=R(t,o);return f<0?void 0:t[f][1]}var Qt=Xd;function Ld(o){return R(this.__data__,o)>-1}var Kt=Ld;function zd(o,t){var f=this.__data__,i=R(f,o);if(i<0)++this.size,f.push([o,t]);else f[i][1]=t;return this}var Ut=zd;function J(o){var t=-1,f=o==null?0:o.length;this.clear();while(++t<f){var i=o[t];this.set(i[0],i[1])}}J.prototype.clear=Wt;J.prototype.delete=Dt;J.prototype.get=Qt;J.prototype.has=Kt;J.prototype.set=Ut;var W=J;var Hd=I(w,"Map"),lo=Hd;function Md(){this.size=0,this.__data__={hash:new Ko,map:new(lo||W),string:new Ko}}var qt=Md;function Fd(o){var t=typeof o;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?o!=="__proto__":o===null}var It=Fd;function Gd(o,t){var f=o.__data__;return It(t)?f[typeof t=="string"?"string":"hash"]:f.map}var D=Gd;function Ad(o){var t=D(this,o).delete(o);return this.size-=t?1:0,t}var Yt=Ad;function Vd(o){return D(this,o).get(o)}var Bt=Vd;function Od(o){return D(this,o).has(o)}var Nt=Od;function _d(o,t){var f=D(this,o),i=f.size;return f.set(o,t),this.size+=f.size==i?0:1,this}var $t=_d;function Z(o){var t=-1,f=o==null?0:o.length;this.clear();while(++t<f){var i=o[t];this.set(i[0],i[1])}}Z.prototype.clear=qt;Z.prototype.delete=Yt;Z.prototype.get=Bt;Z.prototype.has=Nt;Z.prototype.set=$t;var Jt=Z;var cd=wt(Object.getPrototypeOf,Object),ao=cd;var yd="[object Object]",vd=Function.prototype,Td=Object.prototype,Zt=vd.toString,bd=Td.hasOwnProperty,kd=Zt.call(Object);function gd(o){if(!u(o)||S(o)!=yd)return!1;var t=ao(o);if(t===null)return!0;var f=bd.call(t,"constructor")&&t.constructor;return typeof f=="function"&&f instanceof f&&Zt.call(f)==kd}var Xt=gd;function ed(){this.__data__=new W,this.size=0}var Lt=ed;function jd(o){var t=this.__data__,f=t.delete(o);return this.size=t.size,f}var zt=jd;function or(o){return this.__data__.get(o)}var Ht=or;function tr(o){return this.__data__.has(o)}var Mt=tr;var fr=200;function ir(o,t){var f=this.__data__;if(f instanceof W){var i=f.__data__;if(!lo||i.length<fr-1)return i.push([o,t]),this.size=++f.size,this;f=this.__data__=new Jt(i)}return f.set(o,t),this.size=f.size,this}var Ft=ir;function X(o){var t=this.__data__=new W(o);this.size=t.size}X.prototype.clear=Lt;X.prototype.delete=zt;X.prototype.get=Ht;X.prototype.has=Mt;X.prototype.set=Ft;var Gt=X;var wo={};Ro(wo,{default:()=>Uo});var _t=typeof wo=="object"&&wo&&!wo.nodeType&&wo,At=_t&&typeof Po=="object"&&Po&&!Po.nodeType&&Po,dr=At&&At.exports===_t,Vt=dr?w.Buffer:void 0,Ot=Vt?Vt.allocUnsafe:void 0;function rr(o,t){if(t)return o.slice();var f=o.length,i=Ot?Ot(f):new o.constructor(f);return o.copy(i),i}var Uo=rr;var mr=w.Uint8Array,qo=mr;function nr(o){var t=new o.constructor(o.byteLength);return new qo(t).set(new qo(o)),t}var ct=nr;function pr(o,t){var f=t?ct(o.buffer):o.buffer;return new o.constructor(f,o.byteOffset,o.length)}var yt=pr;function xr(o){return typeof o.constructor=="function"&&!to(o)?Vo(ao(o)):{}}var vt=xr;function lr(o){return function(t,f,i){var r=-1,m=Object(t),p=i(t),d=p.length;while(d--){var x=p[o?d:++r];if(f(m[x],x,m)===!1)break}return t}}var Tt=lr;var ar=Tt(),bt=ar;function Pr(o,t,f){if(f!==void 0&&!C(o[t],f)||f===void 0&&!(t in o))B(o,t,f)}var O=Pr;function wr(o){return u(o)&&N(o)}var kt=wr;function sr(o,t){if(t==="constructor"&&typeof o[t]==="function")return;if(t=="__proto__")return;return o[t]}var _=sr;function ur(o){return ko(o,xo(o))}var gt=ur;function hr(o,t,f,i,r,m,p){var d=_(o,f),x=_(t,f),P=p.get(x);if(P){O(o,f,P);return}var a=m?m(d,x,f+"",o,t,p):void 0,H=a===void 0;if(H){var So=F(x),Co=!So&&A(x),Bo=!So&&!Co&&po(x);if(a=x,So||Co||Bo)if(F(d))a=d;else if(kt(d))a=_o(d);else if(Co)H=!1,a=Uo(x,!0);else if(Bo)H=!1,a=yt(x,!0);else a=[];else if(Xt(x)||G(x)){if(a=d,G(d))a=gt(d);else if(!l(d)||q(d))a=vt(x)}else H=!1}if(H)p.set(x,a),r(a,x,i,m,p),p.delete(x);O(o,f,a)}var et=hr;function jt(o,t,f,i,r){if(o===t)return;bt(t,function(m,p){if(r||(r=new Gt),l(m))et(o,t,p,f,jt,i,r);else{var d=i?i(_(o,p),m,p+"",o,t,r):void 0;if(d===void 0)d=m;O(o,p,d)}},xo)}var of=jt;var Er=tt(function(o,t,f){of(o,t,f)}),Io=Er;class so{get bundleIdentifier(){return this.#o}get displayName(){return this.#f}get playbackQueue(){return this.#i}get playbackState(){return this.#r}get playbackStateTimestamp(){return this.#m}get supportedCommands(){return this.#t}#o;#f;#i=null;#r;#m;#t=[];constructor(o,t){this.#o=o,this.#f=t,this.#r=Sr.PlaybackState_Enum.Unknown,this.#t=[]}isCommandSupported(o){return this.#t.some((t)=>t.command===o)}setPlaybackQueue(o){this.#i=o}setPlaybackState(o,t){this.#r=o,this.#m=t}setSupportedCommands(o){this.#t=o}updateContentItem(o){if(!this.#i)return;let t=this.#i.contentItems.findIndex((f)=>f.identifier===o.identifier);if(t===-1)return;this.#i.contentItems[t]=Io(o,this.#i.contentItems[t])}}class tf extends Cr{get#o(){return this.#f.dataStream}get#f(){return this.#i[s]}get clients(){return this.#r}get nowPlayingClient(){return this.#m?this.#r[this.#m]??null:null}get outputDeviceUID(){return this.#t}get volume(){return this.#x}get volumeAvailable(){return this.#n}get volumeCapabilities(){return this.#d}#i;#r;#m;#t;#x;#n;#d;constructor(o){super();this.#i=o,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)}async[v](){this.#o.on("deviceInfo",this.onDeviceInfo),this.#o.on("deviceInfoUpdate",this.onDeviceInfoUpdate),this.#o.on("originClientProperties",this.onOriginClientProperties),this.#o.on("playerClientProperties",this.onPlayerClientProperties),this.#o.on("removeClient",this.onRemoveClient),this.#o.on("sendCommandResult",this.onSendCommandResult),this.#o.on("setArtwork",this.onSetArtwork),this.#o.on("setDefaultSupportedCommands",this.onSetDefaultSupportedCommands),this.#o.on("setNowPlayingClient",this.onSetNowPlayingClient),this.#o.on("setNowPlayingPlayer",this.onSetNowPlayingPlayer),this.#o.on("setState",this.onSetState),this.#o.on("updateClient",this.onUpdateClient),this.#o.on("updateContentItem",this.onUpdateContentItem),this.#o.on("updateContentItemArtwork",this.onUpdateContentItemArtwork),this.#o.on("updatePlayer",this.onUpdatePlayer),this.#o.on("updateOutputDevice",this.onUpdateOutputDevice),this.#o.on("volumeControlAvailability",this.onVolumeControlAvailability),this.#o.on("volumeControlCapabilitiesDidChange",this.onVolumeControlCapabilitiesDidChange),this.#o.on("volumeDidChange",this.onVolumeDidChange)}async[T](){let o=this.#o;if(!o)return;o.off("deviceInfo",this.onDeviceInfo),o.off("deviceInfoUpdate",this.onDeviceInfoUpdate),o.off("originClientProperties",this.onOriginClientProperties),o.off("playerClientProperties",this.onPlayerClientProperties),o.off("removeClient",this.onRemoveClient),o.off("sendCommandResult",this.onSendCommandResult),o.off("setArtwork",this.onSetArtwork),o.off("setDefaultSupportedCommands",this.onSetDefaultSupportedCommands),o.off("setNowPlayingClient",this.onSetNowPlayingClient),o.off("setNowPlayingPlayer",this.onSetNowPlayingPlayer),o.off("setState",this.onSetState),o.off("updateClient",this.onUpdateClient),o.off("updateContentItem",this.onUpdateContentItem),o.off("updateContentItemArtwork",this.onUpdateContentItemArtwork),o.off("updatePlayer",this.onUpdatePlayer),o.off("updateOutputDevice",this.onUpdateOutputDevice),o.off("volumeControlAvailability",this.onVolumeControlAvailability),o.off("volumeControlCapabilitiesDidChange",this.onVolumeControlCapabilitiesDidChange),o.off("volumeDidChange",this.onVolumeDidChange)}clear(){this.#r={},this.#m=null,this.#t=null,this.#x=0,this.#n=!1,this.#d=Rr.VolumeCapabilities_Enum.None}async onDeviceInfo(o){if(o.clusterID)this.#t=o.clusterID;else if(o.deviceUID)this.#t=o.deviceUID;else if(o.uniqueIdentifier)this.#t=o.uniqueIdentifier;this.emit("deviceInfo",o)}async onDeviceInfoUpdate(o){if(o.clusterID)this.#t=o.clusterID;else if(o.deviceUID)this.#t=o.deviceUID;else if(o.uniqueIdentifier)this.#t=o.uniqueIdentifier;this.emit("deviceInfoUpdate",o)}async onOriginClientProperties(o){this.emit("originClientProperties",o)}async onPlayerClientProperties(o){this.emit("playerClientProperties",o)}async onRemoveClient(o){if(!(o.client.bundleIdentifier in this.#r))return;delete this.#r[o.client.bundleIdentifier],this.emit("clients",this.#r)}async onSendCommandResult(o){this.emit("sendCommandResult",o)}async onSetArtwork(o){this.emit("setArtwork",o)}async onSetDefaultSupportedCommands(o){this.emit("setDefaultSupportedCommands",o)}async onSetNowPlayingClient(o){this.#m=o.client?.bundleIdentifier??null,this.emit("setNowPlayingClient",o)}async onSetNowPlayingPlayer(o){this.emit("setNowPlayingPlayer",o)}async onSetState(o){let t=this.#p(o.playerPath.client.bundleIdentifier,o.displayName);if(o.playbackState)t.setPlaybackState(o.playbackState,o.playbackStateTimestamp);if(o.supportedCommands)t.setSupportedCommands(o.supportedCommands.supportedCommands);if(o.playbackQueue)t.setPlaybackQueue(o.playbackQueue);this.emit("setState",o)}async onUpdateContentItem(o){let t=this.#p(o.playerPath.client.bundleIdentifier,o.playerPath.client.displayName);if(!t)return;for(let f of o.contentItems)t.updateContentItem(f);this.emit("updateContentItem",o)}async onUpdateContentItemArtwork(o){this.emit("updateContentItemArtwork",o)}async onUpdatePlayer(o){this.emit("updatePlayer",o)}async onUpdateClient(o){this.#p(o.client.bundleIdentifier,o.client.displayName),this.emit("clients",this.#r)}async onUpdateOutputDevice(o){this.emit("updateOutputDevice",o)}async onVolumeControlAvailability(o){this.#n=o.volumeControlAvailable,this.#d=o.volumeCapabilities,this.emit("volumeControlAvailability",o.volumeControlAvailable,o.volumeCapabilities)}async onVolumeControlCapabilitiesDidChange(o){this.#n=o.capabilities.volumeControlAvailable,this.#d=o.capabilities.volumeCapabilities,this.emit("volumeControlCapabilitiesDidChange",o.capabilities.volumeControlAvailable,o.capabilities.volumeCapabilities)}async onVolumeDidChange(o){this.#x=o.volume,this.emit("volumeDidChange",o.volume)}#p(o,t){if(o in this.#r)return this.#r[o];else{let f=new so(o,t);return this.#r[o]=f,this.emit("clients",this.#r),f}}}import{DataStreamMessage as Yo,Proto as h}from"@basmilius/apple-airplay";import{reporter as Wr}from"@basmilius/apple-common";var ff=0.05;class df{get#o(){return this.#i[s]}get#f(){return this.#i.state}#i;constructor(o){this.#i=o}async down(){switch(this.#f.volumeCapabilities){case h.VolumeCapabilities_Enum.Absolute:case h.VolumeCapabilities_Enum.Both:let o=Math.max(0,this.#f.volume-ff);await this.set(o);break;case h.VolumeCapabilities_Enum.Relative:await this.#i.remote.volumeDown();break;default:throw Error("Volume control is not available.")}}async up(){switch(this.#f.volumeCapabilities){case h.VolumeCapabilities_Enum.Absolute:case h.VolumeCapabilities_Enum.Both:let o=Math.max(0,this.#f.volume+ff);await this.set(o);break;case h.VolumeCapabilities_Enum.Relative:await this.#i.remote.volumeUp();break;default:throw Error("Volume control is not available.")}}async get(){if(!this.#f.outputDeviceUID)throw Error("No output device active.");let o=await this.#o.dataStream.exchange(Yo.getVolume(this.#f.outputDeviceUID));if(o.type===h.ProtocolMessage_Type.GET_VOLUME_RESULT_MESSAGE)return Yo.getExtension(o,h.getVolumeResultMessage).volume;throw Error("Failed to get volume.")}async set(o){if(!this.#f.outputDeviceUID)throw Error("No output device active.");if(![h.VolumeCapabilities_Enum.Absolute,h.VolumeCapabilities_Enum.Both].includes(this.#f.volumeCapabilities))throw Error("Absolute volume control is not available.");o=Math.min(1,Math.max(0,o)),Wr.info(`Setting volume to ${o} for device ${this.#f.outputDeviceUID}`),await this.#o.dataStream.exchange(Yo.setVolume(this.#f.outputDeviceUID,o))}}class z extends Dr{get[s](){return this.#d}get isConnected(){return this.#d?.rtsp?.isConnected??!1}get remote(){return this.#f}get state(){return this.#i}get volume(){return this.#r}get timingServer(){return this.#p}set timingServer(o){this.#p=o}#o;#f;#i;#r;#m;#t=!1;#x;#n;#d;#p;constructor(o){super();this.#o=o,this.#f=new $o(this),this.#i=new tf(this),this.#r=new df(this)}async connect(){if(this.#t=!1,this.#i.clear(),this.#d=new Qr(this.#o),this.#d.rtsp.on("close",async()=>this.#P()),this.#d.rtsp.on("error",async(o)=>this.#l(o)),this.#d.rtsp.on("timeout",async()=>this.#w()),await this.#d.connect(),this.#m)this.#n=await this.#d.verify.start(this.#m);else await this.#d.pairing.start(),this.#n=await this.#d.pairing.transient();await this.#u(),this.emit("connected")}async disconnect(){this.#t=!0,clearInterval(this.#x),await this.#s(),await this.#d.disconnect(),this.emit("disconnected",!1)}async disconnectSafely(){try{await this.disconnect()}catch(o){}}async requestPlaybackQueue(o){await this.#d.dataStream.exchange(L.playbackQueueRequest(0,o))}async sendCommand(o,t){await this.#d.dataStream.exchange(L.sendCommand(o,t))}async setCredentials(o){this.#m=o}async#a(){try{await this.#d.feedback()}catch(o){c.error("Feedback error",o)}}async#P(){if(this.#t)return;clearInterval(this.#x),this.emit("disconnected",!0)}async#l(o){c.error("AirPlay error",o),await this.disconnectSafely(),this.emit("disconnected",!0)}async#w(){c.error("AirPlay timeout"),await this.disconnectSafely(),this.emit("disconnected",!0)}async#u(){let o=this.#n;if(await this.#d.rtsp.enableEncryption(o.accessoryToControllerKey,o.controllerToAccessoryKey),await this.#s(),this.#p)await this.#d.setupTimingServer(this.#p);await this.#d.setupEventStream(o.pairingId,o.sharedSecret),await this.#d.setupDataStream(o.sharedSecret),await this.#h(),this.#d.dataStream.on("error",async(i)=>this.#l(i)),this.#d.dataStream.on("timeout",async()=>this.#w()),this.#d.eventStream.on("error",async(i)=>this.#l(i)),this.#d.eventStream.on("timeout",async()=>this.#w()),this.#x=setInterval(async()=>await this.#a(),No);let t=this.#o.packet.additionals.find((i)=>("rdata"in i)&&typeof i.rdata==="object"&&("gid"in i.rdata))?.rdata.gid;if(t)await this.#d.dataStream.exchange(L.configureConnection(t));if(await this.#d.dataStream.exchange(L.deviceInfo(o.pairingId)),!await Promise.race([new Promise((i)=>{this.#d.dataStream.on("deviceInfo",async()=>{await this.#d.dataStream.exchange(L.setConnectionState()),await this.#d.dataStream.exchange(L.clientUpdatesConfig()),i(!0)})}),async()=>{return await Kr(3000),!1}]))await this.#l(Error("Device did not respond in time with its info."));else c.info("Device info received successfully, protocol should be ready.")}async#h(){await this.#i[v]()}async#s(){try{await this.#i[T]()}catch(o){c.error("State unsubscribe error",o)}}}var uo=Symbol("com.basmilius.companion-link:protocol");import{EventEmitter as Ur}from"node:events";import{reporter as y}from"@basmilius/apple-common";import{CompanionLink as qr,convertAttentionState as rf}from"@basmilius/apple-companion-link";class ho extends Ur{get[uo](){return this.#t}get isConnected(){return this.#t?.socket?.isConnected??!1}#o;#f=!1;#i;#r;#m;#t;constructor(o){super();this.#i=o,this.onSystemStatus=this.onSystemStatus.bind(this),this.onTVSystemStatus=this.onTVSystemStatus.bind(this)}async connect(){if(!this.#o)throw Error("Credentials are required to connect to a Companion Link device.");this.#f=!1,this.#t=new qr(this.#i),this.#t.socket.on("close",async()=>this.#n()),this.#t.socket.on("error",async(o)=>this.#d(o)),this.#t.socket.on("timeout",async()=>this.#p()),await this.#t.connect(),this.#m=await this.#t.verify.start(this.#o),await this.#a(),this.emit("connected")}async disconnect(){this.#f=!0,clearInterval(this.#r),await this.#l(),await this.#t.disconnect(),this.emit("disconnected",!1)}async disconnectSafely(){try{await this.disconnect()}catch(o){}}async setCredentials(o){this.#o=o}async setDiscoveryResult(o){this.#i=o}async getAttentionState(){return await this.#t.api.getAttentionState()}async getLaunchableApps(){return await this.#t.api.getLaunchableApps()}async getUserAccounts(){return await this.#t.api.getUserAccounts()}async launchApp(o){await this.#t.api.launchApp(o)}async launchUrl(o){await this.#t.api.launchUrl(o)}async mediaControlCommand(o,t){await this.#t.api.mediaControlCommand(o,t)}async pressButton(o,t,f){await this.#t.api.pressButton(o,t,f)}async switchUserAccount(o){await this.#t.api.switchUserAccount(o)}async#x(){try{await this.#t.api._systemInfo(this.#o.pairingId)}catch(o){y.error("Heartbeat error",o)}}async#n(){if(this.#f)return;clearInterval(this.#r),this.emit("disconnected",!0)}async#d(o){y.error("Companion Link error",o);try{await this.disconnect()}catch(t){}this.emit("disconnected",!0)}async#p(){y.error("Companion Link timeout"),await this.disconnectSafely(),this.emit("disconnected",!0)}async#a(){let o=this.#m;await this.#t.socket.enableEncryption(o.accessoryToControllerKey,o.controllerToAccessoryKey),await this.#t.api._systemInfo(this.#o.pairingId),await this.#t.api._touchStart(),await this.#t.api._sessionStart(),await this.#t.api._tvrcSessionStart(),await this.#t.api._unsubscribe("_iMC"),this.#r=setInterval(async()=>await this.#x(),15000),await this.#P()}async#P(){await this.#t.api._subscribe("SystemStatus",this.onSystemStatus),await this.#t.api._subscribe("TVSystemStatus",this.onTVSystemStatus);let o=await this.getAttentionState();this.emit("power",o)}async#l(){await this.#t.api._unsubscribe("SystemStatus",this.onSystemStatus),await this.#t.api._unsubscribe("TVSystemStatus",this.onTVSystemStatus)}async onSystemStatus(o){y.info("System Status",o),this.emit("power",rf(o.state))}async onTVSystemStatus(o){y.info("TV System Status",o),this.emit("power",rf(o.state))}}import{EventEmitter as Ir}from"node:events";import{Proto as Q}from"@basmilius/apple-airplay";class mf extends Ir{get airplay(){return this.#o}get companionLink(){return this.#f}get bundleIdentifier(){return this.#o.state.nowPlayingClient?.bundleIdentifier??null}get displayName(){return this.#o.state.nowPlayingClient?.displayName??null}get isConnected(){return this.#o.isConnected&&this.#f.isConnected}get isPlaying(){return this.playbackState===Q.PlaybackState_Enum.Playing}get playbackQueue(){return this.#o.state.nowPlayingClient?.playbackQueue??null}get playbackState(){return this.#o.state.nowPlayingClient?.playbackState??Q.PlaybackState_Enum.Unknown}get playbackStateTimestamp(){return this.#o.state.nowPlayingClient?.playbackStateTimestamp??-1}#o;#f;#i=!1;constructor(o,t){super();this.#o=new z(o),this.#f=new ho(t),this.#o.on("connected",()=>this.#r()),this.#o.on("disconnected",(f)=>this.#m(f)),this.#f.on("connected",()=>this.#r()),this.#f.on("disconnected",(f)=>this.#m(f))}async connect(o){await this.#o.setCredentials(o),await this.#f.setCredentials(o),await this.#o.connect(),await this.#f.connect(),this.#i=!1}async disconnect(){await this.#o.disconnect(),await this.#f.disconnect()}async turnOff(){await this.#o.remote.suspend()}async turnOn(){await this.#o.remote.wake()}async pause(){await this.#o.sendCommand(Q.Command.Pause)}async playPause(){await this.#o.sendCommand(Q.Command.TogglePlayPause)}async play(){await this.#o.sendCommand(Q.Command.Play)}async stop(){await this.#o.sendCommand(Q.Command.Stop)}async next(){await this.#o.sendCommand(Q.Command.NextInContext)}async previous(){await this.#o.sendCommand(Q.Command.PreviousInContext)}async volumeDown(){await this.#o.remote.volumeDown()}async volumeMute(){await this.#o.remote.mute()}async volumeUp(){await this.#o.remote.volumeUp()}async getCommandInfo(o){let t=this.#o.state.nowPlayingClient;if(!t)return null;return t.supportedCommands.find((f)=>f.command===o)??null}async isCommandSupported(o){let t=this.#o.state.nowPlayingClient;if(!t)return!1;return t.isCommandSupported(o)}async#r(){if(!this.#o.isConnected||!this.#f.isConnected)return;this.emit("connected")}async#m(o){if(this.#i)return;this.#i=!0,await this.disconnect(),this.emit("disconnected",o)}}import{EventEmitter as Yr}from"node:events";import{Proto as K}from"@basmilius/apple-airplay";class Eo extends Yr{get airplay(){return this.#o}get bundleIdentifier(){return this.#o.state.nowPlayingClient?.bundleIdentifier??null}get displayName(){return this.#o.state.nowPlayingClient?.displayName??null}get isConnected(){return this.#o.isConnected}get isPlaying(){return this.playbackState===K.PlaybackState_Enum.Playing}get playbackQueue(){return this.#o.state.nowPlayingClient?.playbackQueue??null}get playbackState(){return this.#o.state.nowPlayingClient?.playbackState??K.PlaybackState_Enum.Unknown}get playbackStateTimestamp(){return this.#o.state.nowPlayingClient?.playbackStateTimestamp??-1}get volume(){return this.#o.state.volume??0}#o;#f=!1;constructor(o){super();this.#o=new z(o),this.#o.on("connected",()=>this.#i()),this.#o.on("disconnected",(t)=>this.#r(t))}async connect(){await this.#o.connect(),this.#f=!1}async disconnect(){await this.#o.disconnect()}async pause(){await this.#o.sendCommand(K.Command.Pause)}async playPause(){await this.#o.sendCommand(K.Command.TogglePlayPause)}async play(){await this.#o.sendCommand(K.Command.Play)}async stop(){await this.#o.sendCommand(K.Command.Stop)}async next(){await this.#o.sendCommand(K.Command.NextInContext)}async previous(){await this.#o.sendCommand(K.Command.PreviousInContext)}async getCommandInfo(o){let t=this.#o.state.nowPlayingClient;if(!t)return null;return t.supportedCommands.find((f)=>f.command===o)??null}async isCommandSupported(o){let t=this.#o.state.nowPlayingClient;if(!t)return!1;return t.isCommandSupported(o)}async#i(){this.emit("connected")}async#r(o){if(this.#f)return;this.#f=!0,await this.disconnect(),this.emit("disconnected",o)}}class nf extends Eo{}class pf extends Eo{}export{pf as HomePodMini,nf as HomePod,ho as CompanionLinkDevice,uo as COMPANION_LINK,mf as AppleTV,z as AirPlayDevice,s as AIRPLAY};
2
2
 
3
- //# debugId=D352F68C735427BD64756E2164756E21
3
+ //# debugId=3DD12D12C3AF3F8164756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/airplay/const.ts", "../src/airplay/device.ts", "../src/airplay/remote.ts", "../src/airplay/state.ts", "../src/airplay/client.ts", "../../../node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/lodash-es/_root.js", "../../../node_modules/lodash-es/_Symbol.js", "../../../node_modules/lodash-es/_getRawTag.js", "../../../node_modules/lodash-es/_objectToString.js", "../../../node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/lodash-es/isObjectLike.js", "../../../node_modules/lodash-es/isArray.js", "../../../node_modules/lodash-es/isObject.js", "../../../node_modules/lodash-es/identity.js", "../../../node_modules/lodash-es/isFunction.js", "../../../node_modules/lodash-es/_coreJsData.js", "../../../node_modules/lodash-es/_isMasked.js", "../../../node_modules/lodash-es/_toSource.js", "../../../node_modules/lodash-es/_baseIsNative.js", "../../../node_modules/lodash-es/_getValue.js", "../../../node_modules/lodash-es/_getNative.js", "../../../node_modules/lodash-es/_baseCreate.js", "../../../node_modules/lodash-es/_apply.js", "../../../node_modules/lodash-es/_copyArray.js", "../../../node_modules/lodash-es/_shortOut.js", "../../../node_modules/lodash-es/constant.js", "../../../node_modules/lodash-es/_defineProperty.js", "../../../node_modules/lodash-es/_baseSetToString.js", "../../../node_modules/lodash-es/_setToString.js", "../../../node_modules/lodash-es/_isIndex.js", "../../../node_modules/lodash-es/_baseAssignValue.js", "../../../node_modules/lodash-es/eq.js", "../../../node_modules/lodash-es/_assignValue.js", "../../../node_modules/lodash-es/_copyObject.js", "../../../node_modules/lodash-es/_overRest.js", "../../../node_modules/lodash-es/_baseRest.js", "../../../node_modules/lodash-es/isLength.js", "../../../node_modules/lodash-es/isArrayLike.js", "../../../node_modules/lodash-es/_isIterateeCall.js", "../../../node_modules/lodash-es/_createAssigner.js", "../../../node_modules/lodash-es/_isPrototype.js", "../../../node_modules/lodash-es/_baseTimes.js", "../../../node_modules/lodash-es/_baseIsArguments.js", "../../../node_modules/lodash-es/isArguments.js", "../../../node_modules/lodash-es/stubFalse.js", "../../../node_modules/lodash-es/isBuffer.js", "../../../node_modules/lodash-es/_baseIsTypedArray.js", "../../../node_modules/lodash-es/_baseUnary.js", "../../../node_modules/lodash-es/_nodeUtil.js", "../../../node_modules/lodash-es/isTypedArray.js", "../../../node_modules/lodash-es/_arrayLikeKeys.js", "../../../node_modules/lodash-es/_overArg.js", "../../../node_modules/lodash-es/_nativeKeysIn.js", "../../../node_modules/lodash-es/_baseKeysIn.js", "../../../node_modules/lodash-es/keysIn.js", "../../../node_modules/lodash-es/_nativeCreate.js", "../../../node_modules/lodash-es/_hashClear.js", "../../../node_modules/lodash-es/_hashDelete.js", "../../../node_modules/lodash-es/_hashGet.js", "../../../node_modules/lodash-es/_hashHas.js", "../../../node_modules/lodash-es/_hashSet.js", "../../../node_modules/lodash-es/_Hash.js", "../../../node_modules/lodash-es/_listCacheClear.js", "../../../node_modules/lodash-es/_assocIndexOf.js", "../../../node_modules/lodash-es/_listCacheDelete.js", "../../../node_modules/lodash-es/_listCacheGet.js", "../../../node_modules/lodash-es/_listCacheHas.js", "../../../node_modules/lodash-es/_listCacheSet.js", "../../../node_modules/lodash-es/_ListCache.js", "../../../node_modules/lodash-es/_Map.js", "../../../node_modules/lodash-es/_mapCacheClear.js", "../../../node_modules/lodash-es/_isKeyable.js", "../../../node_modules/lodash-es/_getMapData.js", "../../../node_modules/lodash-es/_mapCacheDelete.js", "../../../node_modules/lodash-es/_mapCacheGet.js", "../../../node_modules/lodash-es/_mapCacheHas.js", "../../../node_modules/lodash-es/_mapCacheSet.js", "../../../node_modules/lodash-es/_MapCache.js", "../../../node_modules/lodash-es/_getPrototype.js", "../../../node_modules/lodash-es/isPlainObject.js", "../../../node_modules/lodash-es/_stackClear.js", "../../../node_modules/lodash-es/_stackDelete.js", "../../../node_modules/lodash-es/_stackGet.js", "../../../node_modules/lodash-es/_stackHas.js", "../../../node_modules/lodash-es/_stackSet.js", "../../../node_modules/lodash-es/_Stack.js", "../../../node_modules/lodash-es/_cloneBuffer.js", "../../../node_modules/lodash-es/_Uint8Array.js", "../../../node_modules/lodash-es/_cloneArrayBuffer.js", "../../../node_modules/lodash-es/_cloneTypedArray.js", "../../../node_modules/lodash-es/_initCloneObject.js", "../../../node_modules/lodash-es/_createBaseFor.js", "../../../node_modules/lodash-es/_baseFor.js", "../../../node_modules/lodash-es/_assignMergeValue.js", "../../../node_modules/lodash-es/isArrayLikeObject.js", "../../../node_modules/lodash-es/_safeGet.js", "../../../node_modules/lodash-es/toPlainObject.js", "../../../node_modules/lodash-es/_baseMergeDeep.js", "../../../node_modules/lodash-es/_baseMerge.js", "../../../node_modules/lodash-es/merge.js", "../src/companion-link/const.ts", "../src/companion-link/device.ts", "../src/model/apple-tv.ts", "../src/model/homepod-base.ts", "../src/model/homepod.ts", "../src/model/homepod-mini.ts"],
3
+ "sources": ["../src/airplay/const.ts", "../src/airplay/device.ts", "../src/airplay/remote.ts", "../src/airplay/state.ts", "../src/airplay/client.ts", "../../../node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/lodash-es/_root.js", "../../../node_modules/lodash-es/_Symbol.js", "../../../node_modules/lodash-es/_getRawTag.js", "../../../node_modules/lodash-es/_objectToString.js", "../../../node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/lodash-es/isObjectLike.js", "../../../node_modules/lodash-es/isArray.js", "../../../node_modules/lodash-es/isObject.js", "../../../node_modules/lodash-es/identity.js", "../../../node_modules/lodash-es/isFunction.js", "../../../node_modules/lodash-es/_coreJsData.js", "../../../node_modules/lodash-es/_isMasked.js", "../../../node_modules/lodash-es/_toSource.js", "../../../node_modules/lodash-es/_baseIsNative.js", "../../../node_modules/lodash-es/_getValue.js", "../../../node_modules/lodash-es/_getNative.js", "../../../node_modules/lodash-es/_baseCreate.js", "../../../node_modules/lodash-es/_apply.js", "../../../node_modules/lodash-es/_copyArray.js", "../../../node_modules/lodash-es/_shortOut.js", "../../../node_modules/lodash-es/constant.js", "../../../node_modules/lodash-es/_defineProperty.js", "../../../node_modules/lodash-es/_baseSetToString.js", "../../../node_modules/lodash-es/_setToString.js", "../../../node_modules/lodash-es/_isIndex.js", "../../../node_modules/lodash-es/_baseAssignValue.js", "../../../node_modules/lodash-es/eq.js", "../../../node_modules/lodash-es/_assignValue.js", "../../../node_modules/lodash-es/_copyObject.js", "../../../node_modules/lodash-es/_overRest.js", "../../../node_modules/lodash-es/_baseRest.js", "../../../node_modules/lodash-es/isLength.js", "../../../node_modules/lodash-es/isArrayLike.js", "../../../node_modules/lodash-es/_isIterateeCall.js", "../../../node_modules/lodash-es/_createAssigner.js", "../../../node_modules/lodash-es/_isPrototype.js", "../../../node_modules/lodash-es/_baseTimes.js", "../../../node_modules/lodash-es/_baseIsArguments.js", "../../../node_modules/lodash-es/isArguments.js", "../../../node_modules/lodash-es/stubFalse.js", "../../../node_modules/lodash-es/isBuffer.js", "../../../node_modules/lodash-es/_baseIsTypedArray.js", "../../../node_modules/lodash-es/_baseUnary.js", "../../../node_modules/lodash-es/_nodeUtil.js", "../../../node_modules/lodash-es/isTypedArray.js", "../../../node_modules/lodash-es/_arrayLikeKeys.js", "../../../node_modules/lodash-es/_overArg.js", "../../../node_modules/lodash-es/_nativeKeysIn.js", "../../../node_modules/lodash-es/_baseKeysIn.js", "../../../node_modules/lodash-es/keysIn.js", "../../../node_modules/lodash-es/_nativeCreate.js", "../../../node_modules/lodash-es/_hashClear.js", "../../../node_modules/lodash-es/_hashDelete.js", "../../../node_modules/lodash-es/_hashGet.js", "../../../node_modules/lodash-es/_hashHas.js", "../../../node_modules/lodash-es/_hashSet.js", "../../../node_modules/lodash-es/_Hash.js", "../../../node_modules/lodash-es/_listCacheClear.js", "../../../node_modules/lodash-es/_assocIndexOf.js", "../../../node_modules/lodash-es/_listCacheDelete.js", "../../../node_modules/lodash-es/_listCacheGet.js", "../../../node_modules/lodash-es/_listCacheHas.js", "../../../node_modules/lodash-es/_listCacheSet.js", "../../../node_modules/lodash-es/_ListCache.js", "../../../node_modules/lodash-es/_Map.js", "../../../node_modules/lodash-es/_mapCacheClear.js", "../../../node_modules/lodash-es/_isKeyable.js", "../../../node_modules/lodash-es/_getMapData.js", "../../../node_modules/lodash-es/_mapCacheDelete.js", "../../../node_modules/lodash-es/_mapCacheGet.js", "../../../node_modules/lodash-es/_mapCacheHas.js", "../../../node_modules/lodash-es/_mapCacheSet.js", "../../../node_modules/lodash-es/_MapCache.js", "../../../node_modules/lodash-es/_getPrototype.js", "../../../node_modules/lodash-es/isPlainObject.js", "../../../node_modules/lodash-es/_stackClear.js", "../../../node_modules/lodash-es/_stackDelete.js", "../../../node_modules/lodash-es/_stackGet.js", "../../../node_modules/lodash-es/_stackHas.js", "../../../node_modules/lodash-es/_stackSet.js", "../../../node_modules/lodash-es/_Stack.js", "../../../node_modules/lodash-es/_cloneBuffer.js", "../../../node_modules/lodash-es/_Uint8Array.js", "../../../node_modules/lodash-es/_cloneArrayBuffer.js", "../../../node_modules/lodash-es/_cloneTypedArray.js", "../../../node_modules/lodash-es/_initCloneObject.js", "../../../node_modules/lodash-es/_createBaseFor.js", "../../../node_modules/lodash-es/_baseFor.js", "../../../node_modules/lodash-es/_assignMergeValue.js", "../../../node_modules/lodash-es/isArrayLikeObject.js", "../../../node_modules/lodash-es/_safeGet.js", "../../../node_modules/lodash-es/toPlainObject.js", "../../../node_modules/lodash-es/_baseMergeDeep.js", "../../../node_modules/lodash-es/_baseMerge.js", "../../../node_modules/lodash-es/merge.js", "../src/airplay/volume.ts", "../src/companion-link/const.ts", "../src/companion-link/device.ts", "../src/model/apple-tv.ts", "../src/model/homepod-base.ts", "../src/model/homepod.ts", "../src/model/homepod-mini.ts"],
4
4
  "sourcesContent": [
5
5
  "export const FEEDBACK_INTERVAL = 2000;\n\nexport const PROTOCOL = Symbol('com.basmilius.airplay:protocol');\nexport const STATE_SUBSCRIBE_SYMBOL = Symbol('com.basmilius.airplay:subscribe');\nexport const STATE_UNSUBSCRIBE_SYMBOL = Symbol('com.basmilius.airplay:unsubscribe');\n",
6
- "import { EventEmitter } from 'node:events';\nimport type { AirPlayDataStream, AirPlayEventStream } from '@basmilius/apple-airplay';\nimport { AirPlay, Proto } from '@basmilius/apple-airplay';\nimport { type AccessoryCredentials, type AccessoryKeys, type DiscoveryResult, type TimingServer, waitFor } from '@basmilius/apple-common';\nimport { reporter } from '@basmilius/apple-common';\nimport { FEEDBACK_INTERVAL, PROTOCOL, STATE_SUBSCRIBE_SYMBOL, STATE_UNSUBSCRIBE_SYMBOL } from './const';\nimport Remote from './remote';\nimport State from './state';\n\ntype EventMap = {\n connected: [];\n disconnected: [unexpected: boolean];\n};\n\nexport default class extends EventEmitter<EventMap> {\n get [PROTOCOL](): AirPlay {\n return this.#protocol;\n }\n\n get #dataStream(): AirPlayDataStream {\n return this.#protocol.dataStream;\n }\n\n get #eventStream(): AirPlayEventStream {\n return this.#protocol.eventStream;\n }\n\n get isConnected(): boolean {\n return this.#protocol?.rtsp?.isConnected ?? false;\n }\n\n get remote(): Remote {\n return this.#remote;\n }\n\n get state(): State {\n return this.#state;\n }\n\n get timingServer(): TimingServer | undefined {\n return this.#timingServer;\n }\n\n set timingServer(timingServer: TimingServer | undefined) {\n this.#timingServer = timingServer;\n }\n\n readonly #discoveryResult: DiscoveryResult;\n readonly #remote: Remote;\n readonly #state: State;\n #credentials?: AccessoryCredentials;\n #disconnect: boolean = false;\n #feedbackInterval: NodeJS.Timeout;\n #keys: AccessoryKeys;\n #protocol!: AirPlay;\n #timingServer?: TimingServer;\n\n constructor(discoveryResult: DiscoveryResult) {\n super();\n\n this.#discoveryResult = discoveryResult;\n this.#remote = new Remote(this);\n this.#state = new State(this);\n }\n\n async connect(): Promise<void> {\n this.#disconnect = false;\n this.#state.clear();\n\n this.#protocol = new AirPlay(this.#discoveryResult);\n this.#protocol.rtsp.on('close', async () => this.#onClose());\n this.#protocol.rtsp.on('error', async (err: Error) => this.#onError(err));\n this.#protocol.rtsp.on('timeout', async () => this.#onTimeout());\n\n await this.#protocol.connect();\n\n if (this.#credentials) {\n this.#keys = await this.#protocol.verify.start(this.#credentials);\n } else {\n await this.#protocol.pairing.start();\n this.#keys = await this.#protocol.pairing.transient();\n }\n\n await this.#setup();\n\n this.emit('connected');\n }\n\n async disconnect(): Promise<void> {\n this.#disconnect = true;\n\n clearInterval(this.#feedbackInterval);\n\n await this.#unsubscribe();\n await this.#protocol.disconnect();\n\n this.emit('disconnected', false);\n }\n\n async disconnectSafely(): Promise<void> {\n try {\n await this.disconnect();\n } catch (_) {\n }\n }\n\n async requestPlaybackQueue(length: number): Promise<void> {\n await this.#dataStream.exchange(this.#dataStream.messages.playbackQueueRequest(0, length));\n }\n\n async sendCommand(command: Proto.Command, options?: Proto.CommandOptions): Promise<void> {\n await this.#dataStream.exchange(this.#dataStream.messages.sendCommand(command, options));\n }\n\n async setVolume(volume: number): Promise<void> {\n await this.#dataStream.exchange(this.#dataStream.messages.setVolume(volume));\n }\n\n async setCredentials(credentials: AccessoryCredentials): Promise<void> {\n this.#credentials = credentials;\n }\n\n async #feedback(): Promise<void> {\n try {\n await this.#protocol.feedback();\n } catch (err) {\n reporter.error('Feedback error', err);\n }\n }\n\n async #onClose(): Promise<void> {\n if (this.#disconnect) {\n return;\n }\n\n clearInterval(this.#feedbackInterval);\n\n this.emit('disconnected', true);\n }\n\n async #onError(err: Error): Promise<void> {\n reporter.error('AirPlay error', err);\n\n await this.disconnectSafely();\n\n this.emit('disconnected', true);\n }\n\n async #onTimeout(): Promise<void> {\n reporter.error('AirPlay timeout');\n\n await this.disconnectSafely();\n\n this.emit('disconnected', true);\n }\n\n async #setup(): Promise<void> {\n const keys = this.#keys;\n\n await this.#protocol.rtsp.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await this.#unsubscribe();\n\n if (this.#timingServer) {\n await this.#protocol.setupTimingServer(this.#timingServer);\n }\n\n await this.#protocol.setupEventStream(keys.pairingId, keys.sharedSecret);\n await this.#protocol.setupDataStream(keys.sharedSecret);\n await this.#subscribe();\n\n this.#dataStream.on('error', async (err: Error) => this.#onError(err));\n this.#dataStream.on('timeout', async () => this.#onTimeout());\n this.#eventStream.on('error', async (err: Error) => this.#onError(err));\n this.#eventStream.on('timeout', async () => this.#onTimeout());\n\n this.#feedbackInterval = setInterval(async () => await this.#feedback(), FEEDBACK_INTERVAL);\n\n const gid = this.#discoveryResult.packet.additionals.find(a => 'rdata' in a && typeof a['rdata'] === 'object' && 'gid' in a['rdata'])?.['rdata']['gid'] as string;\n\n if (gid) {\n await this.#dataStream.exchange(this.#dataStream.messages.configureConnection(gid));\n }\n\n await this.#dataStream.exchange(this.#dataStream.messages.deviceInfo(keys.pairingId));\n\n const result = await Promise.race([\n new Promise(resolve => {\n this.#dataStream.on('deviceInfo', async () => {\n await this.#dataStream.exchange(this.#dataStream.messages.setConnectionState());\n await this.#dataStream.exchange(this.#dataStream.messages.clientUpdatesConfig());\n resolve(true);\n });\n }),\n async () => {\n await waitFor(3000);\n return false;\n }\n ]);\n\n if (!result) {\n await this.#onError(new Error('Device did not respond in time with its info.'));\n } else {\n reporter.info('Device info received successfully, protocol should be ready.');\n }\n }\n\n async #subscribe(): Promise<void> {\n await this.#state[STATE_SUBSCRIBE_SYMBOL]();\n }\n\n async #unsubscribe(): Promise<void> {\n try {\n await this.#state[STATE_UNSUBSCRIBE_SYMBOL]();\n } catch (err) {\n reporter.error('State unsubscribe error', err);\n }\n }\n}\n",
7
- "import type { AirPlay, AirPlayDataStream } from '@basmilius/apple-airplay';\nimport { Proto } from '@basmilius/apple-airplay';\nimport { waitFor } from '@basmilius/apple-common';\nimport { PROTOCOL } from './const';\nimport type Device from './device';\n\nexport default class {\n get #dataStream(): AirPlayDataStream {\n return this.#protocol.dataStream;\n }\n\n get #protocol(): AirPlay {\n return this.#device[PROTOCOL];\n }\n\n readonly #device: Device;\n\n constructor(device: Device) {\n this.#device = device;\n }\n\n async up(): Promise<void> {\n await this.pressAndRelease(1, 0x8C);\n }\n\n async down(): Promise<void> {\n await this.pressAndRelease(1, 0x8D);\n }\n\n async left(): Promise<void> {\n await this.pressAndRelease(1, 0x8B);\n }\n\n async right(): Promise<void> {\n await this.pressAndRelease(1, 0x8A);\n }\n\n async menu(): Promise<void> {\n await this.pressAndRelease(1, 0x86);\n }\n\n async play(): Promise<void> {\n await this.pressAndRelease(12, 0xB0);\n }\n\n async playPause(): Promise<void> {\n if (this.#device.state.nowPlayingClient?.playbackState === Proto.PlaybackState_Enum.Playing) {\n await this.pause();\n } else {\n await this.play();\n }\n }\n\n async pause(): Promise<void> {\n await this.pressAndRelease(12, 0xB1);\n }\n\n async next(): Promise<void> {\n await this.pressAndRelease(12, 0xB5);\n }\n\n async previous(): Promise<void> {\n await this.pressAndRelease(12, 0xB6);\n }\n\n async suspend(): Promise<void> {\n await this.pressAndRelease(1, 0x82);\n }\n\n async select(): Promise<void> {\n await this.pressAndRelease(1, 0x89);\n }\n\n async wake(): Promise<void> {\n await this.pressAndRelease(1, 0x83);\n }\n\n async home(): Promise<void> {\n await this.pressAndRelease(12, 0x40);\n }\n\n async volumeUp(): Promise<void> {\n await this.pressAndRelease(12, 0xE9);\n }\n\n async volumeDown(): Promise<void> {\n await this.pressAndRelease(12, 0xEA);\n }\n\n async mute(): Promise<void> {\n await this.pressAndRelease(12, 0xE2);\n }\n\n async doublePress(usePage: number, usage: number): Promise<void> {\n await this.pressAndRelease(usePage, usage);\n await waitFor(150);\n await this.pressAndRelease(usePage, usage);\n }\n\n async longPress(usePage: number, usage: number, duration: number = 1000): Promise<void> {\n await this.#dataStream.exchange(this.#dataStream.messages.sendHIDEvent(usePage, usage, true));\n await waitFor(duration);\n await this.#dataStream.exchange(this.#dataStream.messages.sendHIDEvent(usePage, usage, false));\n }\n\n async pressAndRelease(usePage: number, usage: number): Promise<void> {\n await this.#dataStream.exchange(this.#dataStream.messages.sendHIDEvent(usePage, usage, true));\n await this.#dataStream.exchange(this.#dataStream.messages.sendHIDEvent(usePage, usage, false));\n }\n}\n",
8
- "import { EventEmitter } from 'node:events';\nimport { type AirPlay, type AirPlayDataStream, Proto } from '@basmilius/apple-airplay';\nimport { PROTOCOL, STATE_SUBSCRIBE_SYMBOL, STATE_UNSUBSCRIBE_SYMBOL } from './const';\nimport Client from './client';\nimport type Device from './device';\n\ntype EventMap = {\n readonly clients: [Record<string, Client>];\n readonly deviceInfo: [Proto.DeviceInfoMessage];\n readonly originClientProperties: [Proto.OriginClientPropertiesMessage];\n readonly playerClientProperties: [Proto.PlayerClientPropertiesMessage];\n readonly removeClient: [Proto.RemoveClientMessage];\n readonly sendCommandResult: [Proto.SendCommandResultMessage];\n readonly setArtwork: [Proto.SetArtworkMessage];\n readonly setDefaultSupportedCommands: [Proto.SetDefaultSupportedCommandsMessage];\n readonly setNowPlayingClient: [Proto.SetNowPlayingClientMessage];\n readonly setNowPlayingPlayer: [Proto.SetNowPlayingPlayerMessage];\n readonly setState: [Proto.SetStateMessage];\n readonly updateClient: [Proto.UpdateClientMessage];\n readonly updateContentItem: [Proto.UpdateContentItemMessage];\n readonly updateContentItemArtwork: [Proto.UpdateContentItemArtworkMessage];\n readonly updatePlayer: [Proto.UpdatePlayerMessage];\n readonly updateOutputDevice: [Proto.UpdateOutputDeviceMessage];\n readonly volumeControlAvailability: [boolean, Proto.VolumeCapabilities_Enum];\n readonly volumeControlCapabilitiesDidChange: [boolean, Proto.VolumeCapabilities_Enum];\n readonly volumeDidChange: [number];\n};\n\nexport default class extends EventEmitter<EventMap> {\n get #dataStream(): AirPlayDataStream {\n return this.#protocol.dataStream;\n }\n\n get #protocol(): AirPlay {\n return this.#device[PROTOCOL];\n }\n\n get clients(): Record<string, Client> {\n return this.#clients;\n }\n\n get nowPlayingClient(): Client | null {\n return this.#nowPlayingClientBundleIdentifier ? this.#clients[this.#nowPlayingClientBundleIdentifier] ?? null : null;\n }\n\n get volume(): number {\n return this.#volume;\n }\n\n get volumeAvailable(): boolean {\n return this.#volumeAvailable;\n }\n\n get volumeCapabilities(): Proto.VolumeCapabilities_Enum {\n return this.#volumeCapabilities;\n }\n\n readonly #device: Device;\n #clients: Record<string, Client>;\n #nowPlayingClientBundleIdentifier: string | null;\n #volume: number;\n #volumeAvailable: boolean;\n #volumeCapabilities: Proto.VolumeCapabilities_Enum;\n\n constructor(device: Device) {\n super();\n\n this.#device = device;\n this.clear();\n\n this.onDeviceInfo = this.onDeviceInfo.bind(this);\n this.onOriginClientProperties = this.onOriginClientProperties.bind(this);\n this.onPlayerClientProperties = this.onPlayerClientProperties.bind(this);\n this.onRemoveClient = this.onRemoveClient.bind(this);\n this.onSendCommandResult = this.onSendCommandResult.bind(this);\n this.onSetArtwork = this.onSetArtwork.bind(this);\n this.onSetDefaultSupportedCommands = this.onSetDefaultSupportedCommands.bind(this);\n this.onSetNowPlayingClient = this.onSetNowPlayingClient.bind(this);\n this.onSetNowPlayingPlayer = this.onSetNowPlayingPlayer.bind(this);\n this.onSetState = this.onSetState.bind(this);\n this.onUpdateClient = this.onUpdateClient.bind(this);\n this.onUpdateContentItem = this.onUpdateContentItem.bind(this);\n this.onUpdateContentItemArtwork = this.onUpdateContentItemArtwork.bind(this);\n this.onUpdatePlayer = this.onUpdatePlayer.bind(this);\n this.onUpdateOutputDevice = this.onUpdateOutputDevice.bind(this);\n this.onVolumeControlAvailability = this.onVolumeControlAvailability.bind(this);\n this.onVolumeControlCapabilitiesDidChange = this.onVolumeControlCapabilitiesDidChange.bind(this);\n this.onVolumeDidChange = this.onVolumeDidChange.bind(this);\n }\n\n async [STATE_SUBSCRIBE_SYMBOL](): Promise<void> {\n this.#dataStream.on('deviceInfo', this.onDeviceInfo);\n this.#dataStream.on('originClientProperties', this.onOriginClientProperties);\n this.#dataStream.on('playerClientProperties', this.onPlayerClientProperties);\n this.#dataStream.on('removeClient', this.onRemoveClient);\n this.#dataStream.on('sendCommandResult', this.onSendCommandResult);\n this.#dataStream.on('setArtwork', this.onSetArtwork);\n this.#dataStream.on('setDefaultSupportedCommands', this.onSetDefaultSupportedCommands);\n this.#dataStream.on('setNowPlayingClient', this.onSetNowPlayingClient);\n this.#dataStream.on('setNowPlayingPlayer', this.onSetNowPlayingPlayer);\n this.#dataStream.on('setState', this.onSetState);\n this.#dataStream.on('updateClient', this.onUpdateClient);\n this.#dataStream.on('updateContentItem', this.onUpdateContentItem);\n this.#dataStream.on('updateContentItemArtwork', this.onUpdateContentItemArtwork);\n this.#dataStream.on('updatePlayer', this.onUpdatePlayer);\n this.#dataStream.on('updateOutputDevice', this.onUpdateOutputDevice);\n this.#dataStream.on('volumeControlAvailability', this.onVolumeControlAvailability);\n this.#dataStream.on('volumeControlCapabilitiesDidChange', this.onVolumeControlCapabilitiesDidChange);\n this.#dataStream.on('volumeDidChange', this.onVolumeDidChange);\n }\n\n async [STATE_UNSUBSCRIBE_SYMBOL](): Promise<void> {\n const dataStream = this.#dataStream;\n\n if (!dataStream) {\n return;\n }\n\n dataStream.off('deviceInfo', this.onDeviceInfo);\n dataStream.off('originClientProperties', this.onOriginClientProperties);\n dataStream.off('playerClientProperties', this.onPlayerClientProperties);\n dataStream.off('removeClient', this.onRemoveClient);\n dataStream.off('sendCommandResult', this.onSendCommandResult);\n dataStream.off('setArtwork', this.onSetArtwork);\n dataStream.off('setDefaultSupportedCommands', this.onSetDefaultSupportedCommands);\n dataStream.off('setNowPlayingClient', this.onSetNowPlayingClient);\n dataStream.off('setNowPlayingPlayer', this.onSetNowPlayingPlayer);\n dataStream.off('setState', this.onSetState);\n dataStream.off('updateClient', this.onUpdateClient);\n dataStream.off('updateContentItem', this.onUpdateContentItem);\n dataStream.off('updateContentItemArtwork', this.onUpdateContentItemArtwork);\n dataStream.off('updatePlayer', this.onUpdatePlayer);\n dataStream.off('updateOutputDevice', this.onUpdateOutputDevice);\n dataStream.off('volumeControlAvailability', this.onVolumeControlAvailability);\n dataStream.off('volumeControlCapabilitiesDidChange', this.onVolumeControlCapabilitiesDidChange);\n dataStream.off('volumeDidChange', this.onVolumeDidChange);\n }\n\n clear(): void {\n this.#clients = {};\n this.#nowPlayingClientBundleIdentifier = undefined;\n this.#volume = 0;\n this.#volumeAvailable = false;\n this.#volumeCapabilities = Proto.VolumeCapabilities_Enum.None;\n }\n\n async onDeviceInfo(message: Proto.DeviceInfoMessage): Promise<void> {\n this.emit('deviceInfo', message);\n }\n\n async onOriginClientProperties(message: Proto.OriginClientPropertiesMessage): Promise<void> {\n this.emit('originClientProperties', message);\n }\n\n async onPlayerClientProperties(message: Proto.PlayerClientPropertiesMessage): Promise<void> {\n this.emit('playerClientProperties', message);\n }\n\n async onRemoveClient(message: Proto.RemoveClientMessage): Promise<void> {\n if (!(message.client.bundleIdentifier in this.#clients)) {\n return;\n }\n\n delete this.#clients[message.client.bundleIdentifier];\n\n this.emit('clients', this.#clients);\n }\n\n async onSendCommandResult(message: Proto.SendCommandResultMessage): Promise<void> {\n this.emit('sendCommandResult', message);\n }\n\n async onSetArtwork(message: Proto.SetArtworkMessage): Promise<void> {\n this.emit('setArtwork', message);\n }\n\n async onSetDefaultSupportedCommands(message: Proto.SetDefaultSupportedCommandsMessage): Promise<void> {\n this.emit('setDefaultSupportedCommands', message);\n }\n\n async onSetNowPlayingClient(message: Proto.SetNowPlayingClientMessage): Promise<void> {\n this.#nowPlayingClientBundleIdentifier = message.client?.bundleIdentifier ?? null;\n\n this.emit('setNowPlayingClient', message);\n }\n\n async onSetNowPlayingPlayer(message: Proto.SetNowPlayingPlayerMessage): Promise<void> {\n this.emit('setNowPlayingPlayer', message);\n }\n\n async onSetState(message: Proto.SetStateMessage): Promise<void> {\n const client = this.#client(message.playerPath.client.bundleIdentifier, message.displayName);\n\n if (message.playbackState) {\n client.setPlaybackState(message.playbackState, message.playbackStateTimestamp);\n }\n\n if (message.supportedCommands) {\n client.setSupportedCommands(message.supportedCommands.supportedCommands);\n }\n\n if (message.playbackQueue) {\n client.setPlaybackQueue(message.playbackQueue);\n }\n\n this.emit('setState', message);\n }\n\n async onUpdateContentItem(message: Proto.UpdateContentItemMessage): Promise<void> {\n const client = this.#client(message.playerPath.client.bundleIdentifier, message.playerPath.client.displayName);\n\n if (!client) {\n return;\n }\n\n for (const item of message.contentItems) {\n client.updateContentItem(item);\n }\n\n this.emit('updateContentItem', message);\n }\n\n async onUpdateContentItemArtwork(message: Proto.UpdateContentItemArtworkMessage): Promise<void> {\n this.emit('updateContentItemArtwork', message);\n }\n\n async onUpdatePlayer(message: Proto.UpdatePlayerMessage): Promise<void> {\n this.emit('updatePlayer', message);\n }\n\n async onUpdateClient(message: Proto.UpdateClientMessage): Promise<void> {\n this.#client(message.client.bundleIdentifier, message.client.displayName);\n\n this.emit('clients', this.#clients);\n }\n\n async onUpdateOutputDevice(message: Proto.UpdateOutputDeviceMessage): Promise<void> {\n this.emit('updateOutputDevice', message);\n }\n\n async onVolumeControlAvailability(message: Proto.VolumeControlAvailabilityMessage): Promise<void> {\n this.#volumeAvailable = message.volumeControlAvailable;\n this.#volumeCapabilities = message.volumeCapabilities;\n\n this.emit('volumeControlAvailability', message.volumeControlAvailable, message.volumeCapabilities);\n }\n\n async onVolumeControlCapabilitiesDidChange(message: Proto.VolumeControlCapabilitiesDidChangeMessage): Promise<void> {\n this.#volumeAvailable = message.capabilities.volumeControlAvailable;\n this.#volumeCapabilities = message.capabilities.volumeCapabilities;\n\n this.emit('volumeControlCapabilitiesDidChange', message.capabilities.volumeControlAvailable, message.capabilities.volumeCapabilities);\n }\n\n async onVolumeDidChange(message: Proto.VolumeDidChangeMessage): Promise<void> {\n this.#volume = message.volume;\n\n this.emit('volumeDidChange', message.volume);\n }\n\n #client(bundleIdentifier: string, displayName: string): Client {\n if (bundleIdentifier in this.#clients) {\n return this.#clients[bundleIdentifier];\n } else {\n const client = new Client(bundleIdentifier, displayName);\n this.#clients[bundleIdentifier] = client;\n\n this.emit('clients', this.#clients);\n\n return client;\n }\n }\n}\n",
6
+ "import { EventEmitter } from 'node:events';\nimport { AirPlay, DataStreamMessage, Proto } from '@basmilius/apple-airplay';\nimport { type AccessoryCredentials, type AccessoryKeys, type DiscoveryResult, reporter, type TimingServer, waitFor } from '@basmilius/apple-common';\nimport { FEEDBACK_INTERVAL, PROTOCOL, STATE_SUBSCRIBE_SYMBOL, STATE_UNSUBSCRIBE_SYMBOL } from './const';\nimport Remote from './remote';\nimport State from './state';\nimport Volume from './volume';\n\ntype EventMap = {\n connected: [];\n disconnected: [unexpected: boolean];\n};\n\nexport default class extends EventEmitter<EventMap> {\n get [PROTOCOL](): AirPlay {\n return this.#protocol;\n }\n\n get isConnected(): boolean {\n return this.#protocol?.rtsp?.isConnected ?? false;\n }\n\n get remote(): Remote {\n return this.#remote;\n }\n\n get state(): State {\n return this.#state;\n }\n\n get volume(): Volume {\n return this.#volume;\n }\n\n get timingServer(): TimingServer | undefined {\n return this.#timingServer;\n }\n\n set timingServer(timingServer: TimingServer | undefined) {\n this.#timingServer = timingServer;\n }\n\n readonly #discoveryResult: DiscoveryResult;\n readonly #remote: Remote;\n readonly #state: State;\n readonly #volume: Volume;\n #credentials?: AccessoryCredentials;\n #disconnect: boolean = false;\n #feedbackInterval: NodeJS.Timeout;\n #keys: AccessoryKeys;\n #protocol!: AirPlay;\n #timingServer?: TimingServer;\n\n constructor(discoveryResult: DiscoveryResult) {\n super();\n\n this.#discoveryResult = discoveryResult;\n this.#remote = new Remote(this);\n this.#state = new State(this);\n this.#volume = new Volume(this);\n }\n\n async connect(): Promise<void> {\n this.#disconnect = false;\n this.#state.clear();\n\n this.#protocol = new AirPlay(this.#discoveryResult);\n this.#protocol.rtsp.on('close', async () => this.#onClose());\n this.#protocol.rtsp.on('error', async (err: Error) => this.#onError(err));\n this.#protocol.rtsp.on('timeout', async () => this.#onTimeout());\n\n await this.#protocol.connect();\n\n if (this.#credentials) {\n this.#keys = await this.#protocol.verify.start(this.#credentials);\n } else {\n await this.#protocol.pairing.start();\n this.#keys = await this.#protocol.pairing.transient();\n }\n\n await this.#setup();\n\n this.emit('connected');\n }\n\n async disconnect(): Promise<void> {\n this.#disconnect = true;\n\n clearInterval(this.#feedbackInterval);\n\n await this.#unsubscribe();\n await this.#protocol.disconnect();\n\n this.emit('disconnected', false);\n }\n\n async disconnectSafely(): Promise<void> {\n try {\n await this.disconnect();\n } catch (_) {\n }\n }\n\n async requestPlaybackQueue(length: number): Promise<void> {\n await this.#protocol.dataStream.exchange(DataStreamMessage.playbackQueueRequest(0, length));\n }\n\n async sendCommand(command: Proto.Command, options?: Proto.CommandOptions): Promise<void> {\n await this.#protocol.dataStream.exchange(DataStreamMessage.sendCommand(command, options));\n }\n\n async setCredentials(credentials: AccessoryCredentials): Promise<void> {\n this.#credentials = credentials;\n }\n\n async #feedback(): Promise<void> {\n try {\n await this.#protocol.feedback();\n } catch (err) {\n reporter.error('Feedback error', err);\n }\n }\n\n async #onClose(): Promise<void> {\n if (this.#disconnect) {\n return;\n }\n\n clearInterval(this.#feedbackInterval);\n\n this.emit('disconnected', true);\n }\n\n async #onError(err: Error): Promise<void> {\n reporter.error('AirPlay error', err);\n\n await this.disconnectSafely();\n\n this.emit('disconnected', true);\n }\n\n async #onTimeout(): Promise<void> {\n reporter.error('AirPlay timeout');\n\n await this.disconnectSafely();\n\n this.emit('disconnected', true);\n }\n\n async #setup(): Promise<void> {\n const keys = this.#keys;\n\n await this.#protocol.rtsp.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await this.#unsubscribe();\n\n if (this.#timingServer) {\n await this.#protocol.setupTimingServer(this.#timingServer);\n }\n\n await this.#protocol.setupEventStream(keys.pairingId, keys.sharedSecret);\n await this.#protocol.setupDataStream(keys.sharedSecret);\n await this.#subscribe();\n\n this.#protocol.dataStream.on('error', async (err: Error) => this.#onError(err));\n this.#protocol.dataStream.on('timeout', async () => this.#onTimeout());\n this.#protocol.eventStream.on('error', async (err: Error) => this.#onError(err));\n this.#protocol.eventStream.on('timeout', async () => this.#onTimeout());\n\n this.#feedbackInterval = setInterval(async () => await this.#feedback(), FEEDBACK_INTERVAL);\n\n const gid = this.#discoveryResult.packet.additionals.find(a => 'rdata' in a && typeof a['rdata'] === 'object' && 'gid' in a['rdata'])?.['rdata']['gid'] as string;\n\n if (gid) {\n await this.#protocol.dataStream.exchange(DataStreamMessage.configureConnection(gid));\n }\n\n await this.#protocol.dataStream.exchange(DataStreamMessage.deviceInfo(keys.pairingId));\n\n const result = await Promise.race([\n new Promise(resolve => {\n this.#protocol.dataStream.on('deviceInfo', async () => {\n await this.#protocol.dataStream.exchange(DataStreamMessage.setConnectionState());\n await this.#protocol.dataStream.exchange(DataStreamMessage.clientUpdatesConfig());\n resolve(true);\n });\n }),\n async () => {\n await waitFor(3000);\n return false;\n }\n ]);\n\n if (!result) {\n await this.#onError(new Error('Device did not respond in time with its info.'));\n } else {\n reporter.info('Device info received successfully, protocol should be ready.');\n }\n }\n\n async #subscribe(): Promise<void> {\n await this.#state[STATE_SUBSCRIBE_SYMBOL]();\n }\n\n async #unsubscribe(): Promise<void> {\n try {\n await this.#state[STATE_UNSUBSCRIBE_SYMBOL]();\n } catch (err) {\n reporter.error('State unsubscribe error', err);\n }\n }\n}\n",
7
+ "import { type AirPlay, type AirPlayDataStream, DataStreamMessage } from '@basmilius/apple-airplay';\nimport { Proto } from '@basmilius/apple-airplay';\nimport { waitFor } from '@basmilius/apple-common';\nimport { PROTOCOL } from './const';\nimport type Device from './device';\n\nexport default class {\n get #dataStream(): AirPlayDataStream {\n return this.#protocol.dataStream;\n }\n\n get #protocol(): AirPlay {\n return this.#device[PROTOCOL];\n }\n\n readonly #device: Device;\n\n constructor(device: Device) {\n this.#device = device;\n }\n\n async up(): Promise<void> {\n await this.pressAndRelease(1, 0x8C);\n }\n\n async down(): Promise<void> {\n await this.pressAndRelease(1, 0x8D);\n }\n\n async left(): Promise<void> {\n await this.pressAndRelease(1, 0x8B);\n }\n\n async right(): Promise<void> {\n await this.pressAndRelease(1, 0x8A);\n }\n\n async menu(): Promise<void> {\n await this.pressAndRelease(1, 0x86);\n }\n\n async play(): Promise<void> {\n await this.pressAndRelease(12, 0xB0);\n }\n\n async playPause(): Promise<void> {\n if (this.#device.state.nowPlayingClient?.playbackState === Proto.PlaybackState_Enum.Playing) {\n await this.pause();\n } else {\n await this.play();\n }\n }\n\n async pause(): Promise<void> {\n await this.pressAndRelease(12, 0xB1);\n }\n\n async next(): Promise<void> {\n await this.pressAndRelease(12, 0xB5);\n }\n\n async previous(): Promise<void> {\n await this.pressAndRelease(12, 0xB6);\n }\n\n async suspend(): Promise<void> {\n await this.pressAndRelease(1, 0x82);\n }\n\n async select(): Promise<void> {\n await this.pressAndRelease(1, 0x89);\n }\n\n async wake(): Promise<void> {\n await this.pressAndRelease(1, 0x83);\n }\n\n async home(): Promise<void> {\n await this.pressAndRelease(12, 0x40);\n }\n\n async volumeUp(): Promise<void> {\n await this.pressAndRelease(12, 0xE9);\n }\n\n async volumeDown(): Promise<void> {\n await this.pressAndRelease(12, 0xEA);\n }\n\n async mute(): Promise<void> {\n await this.pressAndRelease(12, 0xE2);\n }\n\n async doublePress(usePage: number, usage: number): Promise<void> {\n await this.pressAndRelease(usePage, usage);\n await waitFor(150);\n await this.pressAndRelease(usePage, usage);\n }\n\n async longPress(usePage: number, usage: number, duration: number = 1000): Promise<void> {\n await this.#dataStream.exchange(DataStreamMessage.sendHIDEvent(usePage, usage, true));\n await waitFor(duration);\n await this.#dataStream.exchange(DataStreamMessage.sendHIDEvent(usePage, usage, false));\n }\n\n async pressAndRelease(usePage: number, usage: number): Promise<void> {\n await this.#dataStream.exchange(DataStreamMessage.sendHIDEvent(usePage, usage, true));\n await waitFor(25);\n await this.#dataStream.exchange(DataStreamMessage.sendHIDEvent(usePage, usage, false));\n }\n}\n",
8
+ "import { EventEmitter } from 'node:events';\nimport { type AirPlay, type AirPlayDataStream, Proto } from '@basmilius/apple-airplay';\nimport { PROTOCOL, STATE_SUBSCRIBE_SYMBOL, STATE_UNSUBSCRIBE_SYMBOL } from './const';\nimport Client from './client';\nimport type Device from './device';\n\ntype EventMap = {\n readonly clients: [Record<string, Client>];\n readonly deviceInfo: [Proto.DeviceInfoMessage];\n readonly deviceInfoUpdate: [Proto.DeviceInfoMessage];\n readonly originClientProperties: [Proto.OriginClientPropertiesMessage];\n readonly playerClientProperties: [Proto.PlayerClientPropertiesMessage];\n readonly removeClient: [Proto.RemoveClientMessage];\n readonly sendCommandResult: [Proto.SendCommandResultMessage];\n readonly setArtwork: [Proto.SetArtworkMessage];\n readonly setDefaultSupportedCommands: [Proto.SetDefaultSupportedCommandsMessage];\n readonly setNowPlayingClient: [Proto.SetNowPlayingClientMessage];\n readonly setNowPlayingPlayer: [Proto.SetNowPlayingPlayerMessage];\n readonly setState: [Proto.SetStateMessage];\n readonly updateClient: [Proto.UpdateClientMessage];\n readonly updateContentItem: [Proto.UpdateContentItemMessage];\n readonly updateContentItemArtwork: [Proto.UpdateContentItemArtworkMessage];\n readonly updatePlayer: [Proto.UpdatePlayerMessage];\n readonly updateOutputDevice: [Proto.UpdateOutputDeviceMessage];\n readonly volumeControlAvailability: [boolean, Proto.VolumeCapabilities_Enum];\n readonly volumeControlCapabilitiesDidChange: [boolean, Proto.VolumeCapabilities_Enum];\n readonly volumeDidChange: [number];\n};\n\nexport default class extends EventEmitter<EventMap> {\n get #dataStream(): AirPlayDataStream {\n return this.#protocol.dataStream;\n }\n\n get #protocol(): AirPlay {\n return this.#device[PROTOCOL];\n }\n\n get clients(): Record<string, Client> {\n return this.#clients;\n }\n\n get nowPlayingClient(): Client | null {\n return this.#nowPlayingClientBundleIdentifier ? this.#clients[this.#nowPlayingClientBundleIdentifier] ?? null : null;\n }\n\n get outputDeviceUID(): string | null {\n return this.#outputDeviceUID;\n }\n\n get volume(): number {\n return this.#volume;\n }\n\n get volumeAvailable(): boolean {\n return this.#volumeAvailable;\n }\n\n get volumeCapabilities(): Proto.VolumeCapabilities_Enum {\n return this.#volumeCapabilities;\n }\n\n readonly #device: Device;\n #clients: Record<string, Client>;\n #nowPlayingClientBundleIdentifier: string | null;\n #outputDeviceUID: string | null;\n #volume: number;\n #volumeAvailable: boolean;\n #volumeCapabilities: Proto.VolumeCapabilities_Enum;\n\n constructor(device: Device) {\n super();\n\n this.#device = device;\n this.clear();\n\n this.onDeviceInfo = this.onDeviceInfo.bind(this);\n this.onDeviceInfoUpdate = this.onDeviceInfoUpdate.bind(this);\n this.onOriginClientProperties = this.onOriginClientProperties.bind(this);\n this.onPlayerClientProperties = this.onPlayerClientProperties.bind(this);\n this.onRemoveClient = this.onRemoveClient.bind(this);\n this.onSendCommandResult = this.onSendCommandResult.bind(this);\n this.onSetArtwork = this.onSetArtwork.bind(this);\n this.onSetDefaultSupportedCommands = this.onSetDefaultSupportedCommands.bind(this);\n this.onSetNowPlayingClient = this.onSetNowPlayingClient.bind(this);\n this.onSetNowPlayingPlayer = this.onSetNowPlayingPlayer.bind(this);\n this.onSetState = this.onSetState.bind(this);\n this.onUpdateClient = this.onUpdateClient.bind(this);\n this.onUpdateContentItem = this.onUpdateContentItem.bind(this);\n this.onUpdateContentItemArtwork = this.onUpdateContentItemArtwork.bind(this);\n this.onUpdatePlayer = this.onUpdatePlayer.bind(this);\n this.onUpdateOutputDevice = this.onUpdateOutputDevice.bind(this);\n this.onVolumeControlAvailability = this.onVolumeControlAvailability.bind(this);\n this.onVolumeControlCapabilitiesDidChange = this.onVolumeControlCapabilitiesDidChange.bind(this);\n this.onVolumeDidChange = this.onVolumeDidChange.bind(this);\n }\n\n async [STATE_SUBSCRIBE_SYMBOL](): Promise<void> {\n this.#dataStream.on('deviceInfo', this.onDeviceInfo);\n this.#dataStream.on('deviceInfoUpdate', this.onDeviceInfoUpdate);\n this.#dataStream.on('originClientProperties', this.onOriginClientProperties);\n this.#dataStream.on('playerClientProperties', this.onPlayerClientProperties);\n this.#dataStream.on('removeClient', this.onRemoveClient);\n this.#dataStream.on('sendCommandResult', this.onSendCommandResult);\n this.#dataStream.on('setArtwork', this.onSetArtwork);\n this.#dataStream.on('setDefaultSupportedCommands', this.onSetDefaultSupportedCommands);\n this.#dataStream.on('setNowPlayingClient', this.onSetNowPlayingClient);\n this.#dataStream.on('setNowPlayingPlayer', this.onSetNowPlayingPlayer);\n this.#dataStream.on('setState', this.onSetState);\n this.#dataStream.on('updateClient', this.onUpdateClient);\n this.#dataStream.on('updateContentItem', this.onUpdateContentItem);\n this.#dataStream.on('updateContentItemArtwork', this.onUpdateContentItemArtwork);\n this.#dataStream.on('updatePlayer', this.onUpdatePlayer);\n this.#dataStream.on('updateOutputDevice', this.onUpdateOutputDevice);\n this.#dataStream.on('volumeControlAvailability', this.onVolumeControlAvailability);\n this.#dataStream.on('volumeControlCapabilitiesDidChange', this.onVolumeControlCapabilitiesDidChange);\n this.#dataStream.on('volumeDidChange', this.onVolumeDidChange);\n }\n\n async [STATE_UNSUBSCRIBE_SYMBOL](): Promise<void> {\n const dataStream = this.#dataStream;\n\n if (!dataStream) {\n return;\n }\n\n dataStream.off('deviceInfo', this.onDeviceInfo);\n dataStream.off('deviceInfoUpdate', this.onDeviceInfoUpdate);\n dataStream.off('originClientProperties', this.onOriginClientProperties);\n dataStream.off('playerClientProperties', this.onPlayerClientProperties);\n dataStream.off('removeClient', this.onRemoveClient);\n dataStream.off('sendCommandResult', this.onSendCommandResult);\n dataStream.off('setArtwork', this.onSetArtwork);\n dataStream.off('setDefaultSupportedCommands', this.onSetDefaultSupportedCommands);\n dataStream.off('setNowPlayingClient', this.onSetNowPlayingClient);\n dataStream.off('setNowPlayingPlayer', this.onSetNowPlayingPlayer);\n dataStream.off('setState', this.onSetState);\n dataStream.off('updateClient', this.onUpdateClient);\n dataStream.off('updateContentItem', this.onUpdateContentItem);\n dataStream.off('updateContentItemArtwork', this.onUpdateContentItemArtwork);\n dataStream.off('updatePlayer', this.onUpdatePlayer);\n dataStream.off('updateOutputDevice', this.onUpdateOutputDevice);\n dataStream.off('volumeControlAvailability', this.onVolumeControlAvailability);\n dataStream.off('volumeControlCapabilitiesDidChange', this.onVolumeControlCapabilitiesDidChange);\n dataStream.off('volumeDidChange', this.onVolumeDidChange);\n }\n\n clear(): void {\n this.#clients = {};\n this.#nowPlayingClientBundleIdentifier = null;\n this.#outputDeviceUID = null;\n this.#volume = 0;\n this.#volumeAvailable = false;\n this.#volumeCapabilities = Proto.VolumeCapabilities_Enum.None;\n }\n\n async onDeviceInfo(message: Proto.DeviceInfoMessage): Promise<void> {\n if (message.clusterID) {\n this.#outputDeviceUID = message.clusterID;\n } else if (message.deviceUID) {\n this.#outputDeviceUID = message.deviceUID;\n } else if (message.uniqueIdentifier) {\n this.#outputDeviceUID = message.uniqueIdentifier;\n }\n\n this.emit('deviceInfo', message);\n }\n\n async onDeviceInfoUpdate(message: Proto.DeviceInfoMessage): Promise<void> {\n if (message.clusterID) {\n this.#outputDeviceUID = message.clusterID;\n } else if (message.deviceUID) {\n this.#outputDeviceUID = message.deviceUID;\n } else if (message.uniqueIdentifier) {\n this.#outputDeviceUID = message.uniqueIdentifier;\n }\n\n this.emit('deviceInfoUpdate', message);\n }\n\n async onOriginClientProperties(message: Proto.OriginClientPropertiesMessage): Promise<void> {\n this.emit('originClientProperties', message);\n }\n\n async onPlayerClientProperties(message: Proto.PlayerClientPropertiesMessage): Promise<void> {\n this.emit('playerClientProperties', message);\n }\n\n async onRemoveClient(message: Proto.RemoveClientMessage): Promise<void> {\n if (!(message.client.bundleIdentifier in this.#clients)) {\n return;\n }\n\n delete this.#clients[message.client.bundleIdentifier];\n\n this.emit('clients', this.#clients);\n }\n\n async onSendCommandResult(message: Proto.SendCommandResultMessage): Promise<void> {\n this.emit('sendCommandResult', message);\n }\n\n async onSetArtwork(message: Proto.SetArtworkMessage): Promise<void> {\n this.emit('setArtwork', message);\n }\n\n async onSetDefaultSupportedCommands(message: Proto.SetDefaultSupportedCommandsMessage): Promise<void> {\n this.emit('setDefaultSupportedCommands', message);\n }\n\n async onSetNowPlayingClient(message: Proto.SetNowPlayingClientMessage): Promise<void> {\n this.#nowPlayingClientBundleIdentifier = message.client?.bundleIdentifier ?? null;\n\n this.emit('setNowPlayingClient', message);\n }\n\n async onSetNowPlayingPlayer(message: Proto.SetNowPlayingPlayerMessage): Promise<void> {\n this.emit('setNowPlayingPlayer', message);\n }\n\n async onSetState(message: Proto.SetStateMessage): Promise<void> {\n const client = this.#client(message.playerPath.client.bundleIdentifier, message.displayName);\n\n if (message.playbackState) {\n client.setPlaybackState(message.playbackState, message.playbackStateTimestamp);\n }\n\n if (message.supportedCommands) {\n client.setSupportedCommands(message.supportedCommands.supportedCommands);\n }\n\n if (message.playbackQueue) {\n client.setPlaybackQueue(message.playbackQueue);\n }\n\n this.emit('setState', message);\n }\n\n async onUpdateContentItem(message: Proto.UpdateContentItemMessage): Promise<void> {\n const client = this.#client(message.playerPath.client.bundleIdentifier, message.playerPath.client.displayName);\n\n if (!client) {\n return;\n }\n\n for (const item of message.contentItems) {\n client.updateContentItem(item);\n }\n\n this.emit('updateContentItem', message);\n }\n\n async onUpdateContentItemArtwork(message: Proto.UpdateContentItemArtworkMessage): Promise<void> {\n this.emit('updateContentItemArtwork', message);\n }\n\n async onUpdatePlayer(message: Proto.UpdatePlayerMessage): Promise<void> {\n this.emit('updatePlayer', message);\n }\n\n async onUpdateClient(message: Proto.UpdateClientMessage): Promise<void> {\n this.#client(message.client.bundleIdentifier, message.client.displayName);\n\n this.emit('clients', this.#clients);\n }\n\n async onUpdateOutputDevice(message: Proto.UpdateOutputDeviceMessage): Promise<void> {\n this.emit('updateOutputDevice', message);\n }\n\n async onVolumeControlAvailability(message: Proto.VolumeControlAvailabilityMessage): Promise<void> {\n this.#volumeAvailable = message.volumeControlAvailable;\n this.#volumeCapabilities = message.volumeCapabilities;\n\n this.emit('volumeControlAvailability', message.volumeControlAvailable, message.volumeCapabilities);\n }\n\n async onVolumeControlCapabilitiesDidChange(message: Proto.VolumeControlCapabilitiesDidChangeMessage): Promise<void> {\n this.#volumeAvailable = message.capabilities.volumeControlAvailable;\n this.#volumeCapabilities = message.capabilities.volumeCapabilities;\n\n this.emit('volumeControlCapabilitiesDidChange', message.capabilities.volumeControlAvailable, message.capabilities.volumeCapabilities);\n }\n\n async onVolumeDidChange(message: Proto.VolumeDidChangeMessage): Promise<void> {\n this.#volume = message.volume;\n\n this.emit('volumeDidChange', message.volume);\n }\n\n #client(bundleIdentifier: string, displayName: string): Client {\n if (bundleIdentifier in this.#clients) {\n return this.#clients[bundleIdentifier];\n } else {\n const client = new Client(bundleIdentifier, displayName);\n this.#clients[bundleIdentifier] = client;\n\n this.emit('clients', this.#clients);\n\n return client;\n }\n }\n}\n",
9
9
  "import { Proto } from '@basmilius/apple-airplay';\nimport { merge } from 'lodash-es';\n\nexport default class Client {\n get bundleIdentifier(): string {\n return this.#bundleIdentifier;\n }\n\n get displayName(): string {\n return this.#displayName;\n }\n\n get playbackQueue(): Proto.PlaybackQueue | null {\n return this.#playbackQueue;\n }\n\n get playbackState(): Proto.PlaybackState_Enum {\n return this.#playbackState;\n }\n\n get playbackStateTimestamp(): number {\n return this.#playbackStateTimestamp;\n }\n\n get supportedCommands(): Proto.CommandInfo[] {\n return this.#supportedCommands;\n }\n\n readonly #bundleIdentifier: string;\n readonly #displayName: string;\n #playbackQueue: Proto.PlaybackQueue | null = null;\n #playbackState: Proto.PlaybackState_Enum;\n #playbackStateTimestamp: number;\n #supportedCommands: Proto.CommandInfo[] = [];\n\n constructor(bundleIdentifier: string, displayName: string) {\n this.#bundleIdentifier = bundleIdentifier;\n this.#displayName = displayName;\n this.#playbackState = Proto.PlaybackState_Enum.Unknown;\n this.#supportedCommands = [];\n }\n\n isCommandSupported(command: Proto.Command): boolean {\n return this.#supportedCommands.some(c => c.command === command);\n }\n\n setPlaybackQueue(playbackQueue: Proto.PlaybackQueue): void {\n this.#playbackQueue = playbackQueue;\n }\n\n setPlaybackState(playbackState: Proto.PlaybackState_Enum, playbackStateTimestamp: number): void {\n this.#playbackState = playbackState;\n this.#playbackStateTimestamp = playbackStateTimestamp;\n }\n\n setSupportedCommands(supportedCommands: Proto.CommandInfo[]): void {\n this.#supportedCommands = supportedCommands;\n }\n \n updateContentItem(item: Proto.ContentItem): void {\n if (!this.#playbackQueue) {\n return;\n }\n\n const index = this.#playbackQueue.contentItems.findIndex(i => i.identifier === item.identifier);\n if (index === -1) {\n return;\n }\n\n this.#playbackQueue.contentItems[index] = merge(\n item,\n this.#playbackQueue.contentItems[index]\n );\n }\n}\n",
10
10
  "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n",
11
11
  "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n",
@@ -103,14 +103,15 @@
103
103
  "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n",
104
104
  "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n",
105
105
  "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n",
106
+ "import { AirPlay, DataStreamMessage, Proto } from '@basmilius/apple-airplay';\nimport { reporter } from '@basmilius/apple-common';\nimport { PROTOCOL } from './const';\nimport type Device from './device';\nimport type State from './state';\n\nconst VOLUME_STEP = 0.05; // 5%\n\nexport default class {\n get #airplay(): AirPlay {\n return this.#device[PROTOCOL];\n }\n\n get #state(): State {\n return this.#device.state;\n }\n\n readonly #device: Device;\n\n constructor(device: Device) {\n this.#device = device;\n }\n\n async down(): Promise<void> {\n switch (this.#state.volumeCapabilities) {\n case Proto.VolumeCapabilities_Enum.Absolute:\n case Proto.VolumeCapabilities_Enum.Both:\n const newVolume = Math.max(0, this.#state.volume - VOLUME_STEP);\n await this.set(newVolume);\n break;\n\n case Proto.VolumeCapabilities_Enum.Relative:\n await this.#device.remote.volumeDown();\n break;\n\n default:\n throw new Error('Volume control is not available.');\n }\n }\n\n async up(): Promise<void> {\n switch (this.#state.volumeCapabilities) {\n case Proto.VolumeCapabilities_Enum.Absolute:\n case Proto.VolumeCapabilities_Enum.Both:\n const newVolume = Math.max(0, this.#state.volume + VOLUME_STEP);\n await this.set(newVolume);\n break;\n\n case Proto.VolumeCapabilities_Enum.Relative:\n await this.#device.remote.volumeUp();\n break;\n\n default:\n throw new Error('Volume control is not available.');\n }\n }\n\n async get(): Promise<number> {\n if (!this.#state.outputDeviceUID) {\n throw new Error('No output device active.');\n }\n\n const response = await this.#airplay.dataStream.exchange(DataStreamMessage.getVolume(this.#state.outputDeviceUID));\n\n if (response.type === Proto.ProtocolMessage_Type.GET_VOLUME_RESULT_MESSAGE) {\n const message = DataStreamMessage.getExtension(response, Proto.getVolumeResultMessage);\n\n return message.volume;\n }\n\n throw new Error('Failed to get volume.');\n }\n\n async set(volume: number): Promise<void> {\n if (!this.#state.outputDeviceUID) {\n throw new Error('No output device active.');\n }\n\n if (![Proto.VolumeCapabilities_Enum.Absolute, Proto.VolumeCapabilities_Enum.Both].includes(this.#state.volumeCapabilities)) {\n throw new Error('Absolute volume control is not available.');\n }\n\n volume = Math.min(1, Math.max(0, volume));\n\n reporter.info(`Setting volume to ${volume} for device ${this.#state.outputDeviceUID}`);\n\n await this.#airplay.dataStream.exchange(DataStreamMessage.setVolume(this.#state.outputDeviceUID, volume));\n }\n}\n",
106
107
  "export const PROTOCOL = Symbol('com.basmilius.companion-link:protocol');\n",
107
108
  "import { EventEmitter } from 'node:events';\nimport type { AccessoryCredentials, AccessoryKeys, DiscoveryResult } from '@basmilius/apple-common';\nimport { reporter } from '@basmilius/apple-common';\nimport type { AttentionState, ButtonPressType, HidCommandKey, LaunchableApp, MediaControlCommandKey, UserAccount } from '@basmilius/apple-companion-link';\nimport { CompanionLink, convertAttentionState } from '@basmilius/apple-companion-link';\nimport { PROTOCOL } from './const';\n\ntype EventMap = {\n connected: [];\n disconnected: [unexpected: boolean];\n power: [AttentionState];\n};\n\nexport default class extends EventEmitter<EventMap> {\n get [PROTOCOL](): CompanionLink {\n return this.#protocol;\n }\n\n get isConnected(): boolean {\n return this.#protocol?.socket?.isConnected ?? false;\n }\n\n #credentials?: AccessoryCredentials;\n #disconnect: boolean = false;\n #discoveryResult: DiscoveryResult;\n #heartbeatInterval: NodeJS.Timeout;\n #keys: AccessoryKeys;\n #protocol!: CompanionLink;\n\n constructor(discoveryResult: DiscoveryResult) {\n super();\n\n this.#discoveryResult = discoveryResult;\n\n this.onSystemStatus = this.onSystemStatus.bind(this);\n this.onTVSystemStatus = this.onTVSystemStatus.bind(this);\n }\n\n async connect(): Promise<void> {\n if (!this.#credentials) {\n throw new Error('Credentials are required to connect to a Companion Link device.');\n }\n\n this.#disconnect = false;\n this.#protocol = new CompanionLink(this.#discoveryResult);\n this.#protocol.socket.on('close', async () => this.#onClose());\n this.#protocol.socket.on('error', async (err: Error) => this.#onError(err));\n this.#protocol.socket.on('timeout', async () => this.#onTimeout());\n\n await this.#protocol.connect();\n this.#keys = await this.#protocol.verify.start(this.#credentials);\n\n await this.#setup();\n\n this.emit('connected');\n }\n\n async disconnect(): Promise<void> {\n this.#disconnect = true;\n\n clearInterval(this.#heartbeatInterval);\n\n await this.#unsubscribe();\n await this.#protocol.disconnect();\n\n this.emit('disconnected', false);\n }\n\n async disconnectSafely(): Promise<void> {\n try {\n await this.disconnect();\n } catch (_) {\n }\n }\n\n async setCredentials(credentials: AccessoryCredentials): Promise<void> {\n this.#credentials = credentials;\n }\n\n async setDiscoveryResult(discoveryResult: DiscoveryResult): Promise<void> {\n this.#discoveryResult = discoveryResult;\n }\n\n async getAttentionState(): Promise<AttentionState> {\n return await this.#protocol.api.getAttentionState();\n }\n\n async getLaunchableApps(): Promise<LaunchableApp[]> {\n return await this.#protocol.api.getLaunchableApps();\n }\n\n async getUserAccounts(): Promise<UserAccount[]> {\n return await this.#protocol.api.getUserAccounts();\n }\n\n async launchApp(bundleId: string): Promise<void> {\n await this.#protocol.api.launchApp(bundleId);\n }\n\n async launchUrl(url: string): Promise<void> {\n await this.#protocol.api.launchUrl(url);\n }\n\n async mediaControlCommand(command: MediaControlCommandKey, content?: object): Promise<void> {\n await this.#protocol.api.mediaControlCommand(command, content);\n }\n\n async pressButton(command: HidCommandKey, type?: ButtonPressType, holdDelayMs?: number): Promise<void> {\n await this.#protocol.api.pressButton(command, type, holdDelayMs);\n }\n\n async switchUserAccount(accountId: string): Promise<void> {\n await this.#protocol.api.switchUserAccount(accountId);\n }\n\n async #heartbeat(): Promise<void> {\n try {\n await this.#protocol.api._systemInfo(this.#credentials.pairingId);\n } catch (err) {\n reporter.error('Heartbeat error', err);\n }\n }\n\n async #onClose(): Promise<void> {\n if (this.#disconnect) {\n return;\n }\n\n clearInterval(this.#heartbeatInterval);\n\n this.emit('disconnected', true);\n }\n\n async #onError(err: Error): Promise<void> {\n reporter.error('Companion Link error', err);\n\n try {\n await this.disconnect();\n } catch (_) {\n }\n\n this.emit('disconnected', true);\n }\n\n async #onTimeout(): Promise<void> {\n reporter.error('Companion Link timeout');\n\n await this.disconnectSafely();\n\n this.emit('disconnected', true);\n }\n\n async #setup(): Promise<void> {\n const keys = this.#keys;\n\n await this.#protocol.socket.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await this.#protocol.api._systemInfo(this.#credentials.pairingId);\n await this.#protocol.api._touchStart();\n await this.#protocol.api._sessionStart();\n await this.#protocol.api._tvrcSessionStart();\n await this.#protocol.api._unsubscribe('_iMC');\n\n this.#heartbeatInterval = setInterval(async () => await this.#heartbeat(), 15000);\n\n await this.#subscribe();\n }\n\n async #subscribe(): Promise<void> {\n await this.#protocol.api._subscribe('SystemStatus', this.onSystemStatus);\n await this.#protocol.api._subscribe('TVSystemStatus', this.onTVSystemStatus);\n\n const state = await this.getAttentionState();\n this.emit('power', state);\n }\n\n async #unsubscribe(): Promise<void> {\n await this.#protocol.api._unsubscribe('SystemStatus', this.onSystemStatus);\n await this.#protocol.api._unsubscribe('TVSystemStatus', this.onTVSystemStatus);\n }\n\n async onSystemStatus(data: { readonly state: number; }): Promise<void> {\n reporter.info('System Status', data);\n this.emit('power', convertAttentionState(data.state));\n }\n\n async onTVSystemStatus(data: { readonly state: number; }): Promise<void> {\n reporter.info('TV System Status', data);\n this.emit('power', convertAttentionState(data.state));\n }\n}\n",
108
109
  "import { EventEmitter } from 'node:events';\nimport { Proto } from '@basmilius/apple-airplay';\nimport type { AccessoryCredentials, DiscoveryResult } from '@basmilius/apple-common';\nimport { AirPlayDevice } from '../airplay';\nimport { CompanionLinkDevice } from '../companion-link';\n\ntype EventMap = {\n connected: [];\n disconnected: [unexpected: boolean];\n};\n\nexport default class extends EventEmitter<EventMap> {\n get airplay(): AirPlayDevice {\n return this.#airplay;\n }\n\n get companionLink(): CompanionLinkDevice {\n return this.#companionLink;\n }\n\n get bundleIdentifier(): string | null {\n return this.#airplay.state.nowPlayingClient?.bundleIdentifier ?? null;\n }\n\n get displayName(): string | null {\n return this.#airplay.state.nowPlayingClient?.displayName ?? null;\n }\n\n get isConnected(): boolean {\n return this.#airplay.isConnected && this.#companionLink.isConnected;\n }\n\n get isPlaying(): boolean {\n return this.playbackState === Proto.PlaybackState_Enum.Playing;\n }\n\n get playbackQueue(): Proto.PlaybackQueue | null {\n return this.#airplay.state.nowPlayingClient?.playbackQueue ?? null;\n }\n\n get playbackState(): Proto.PlaybackState_Enum {\n return this.#airplay.state.nowPlayingClient?.playbackState ?? Proto.PlaybackState_Enum.Unknown;\n }\n\n get playbackStateTimestamp(): number {\n return this.#airplay.state.nowPlayingClient?.playbackStateTimestamp ?? -1;\n }\n\n readonly #airplay: AirPlayDevice;\n readonly #companionLink: CompanionLinkDevice;\n #disconnect: boolean = false;\n\n constructor(airplayDiscoveryResult: DiscoveryResult, companionLinkDiscoveryResult: DiscoveryResult) {\n super();\n\n this.#airplay = new AirPlayDevice(airplayDiscoveryResult);\n this.#companionLink = new CompanionLinkDevice(companionLinkDiscoveryResult);\n\n this.#airplay.on('connected', () => this.#onConnected());\n this.#airplay.on('disconnected', unexpected => this.#onDisconnected(unexpected));\n this.#companionLink.on('connected', () => this.#onConnected());\n this.#companionLink.on('disconnected', unexpected => this.#onDisconnected(unexpected));\n }\n\n async connect(credentials: AccessoryCredentials): Promise<void> {\n await this.#airplay.setCredentials(credentials);\n await this.#companionLink.setCredentials(credentials);\n\n await this.#airplay.connect();\n await this.#companionLink.connect();\n\n this.#disconnect = false;\n }\n\n async disconnect(): Promise<void> {\n await this.#airplay.disconnect();\n await this.#companionLink.disconnect();\n }\n\n async turnOff(): Promise<void> {\n await this.#airplay.remote.suspend();\n }\n\n async turnOn(): Promise<void> {\n await this.#airplay.remote.wake();\n }\n\n async pause(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Pause);\n }\n\n async playPause(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.TogglePlayPause);\n }\n\n async play(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Play);\n }\n\n async stop(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Stop);\n }\n\n async next(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.NextInContext);\n }\n\n async previous(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.PreviousInContext);\n }\n\n async volumeDown(): Promise<void> {\n await this.#airplay.remote.volumeDown();\n }\n\n async volumeMute(): Promise<void> {\n await this.#airplay.remote.mute();\n }\n\n async volumeUp(): Promise<void> {\n await this.#airplay.remote.volumeUp();\n }\n\n async getCommandInfo(command: Proto.Command): Promise<Proto.CommandInfo | null> {\n const client = this.#airplay.state.nowPlayingClient;\n\n if (!client) {\n return null;\n }\n\n return client.supportedCommands.find(c => c.command === command) ?? null;\n }\n\n async isCommandSupported(command: Proto.Command): Promise<boolean> {\n const client = this.#airplay.state.nowPlayingClient;\n\n if (!client) {\n return false;\n }\n\n return client.isCommandSupported(command);\n }\n\n async #onConnected(): Promise<void> {\n if (!this.#airplay.isConnected || !this.#companionLink.isConnected) {\n return;\n }\n\n this.emit('connected');\n }\n\n async #onDisconnected(unexpected: boolean): Promise<void> {\n if (this.#disconnect) {\n return;\n }\n\n this.#disconnect = true;\n\n await this.disconnect();\n this.emit('disconnected', unexpected);\n }\n}\n",
109
- "import { EventEmitter } from 'node:events';\nimport { Proto } from '@basmilius/apple-airplay';\nimport type { DiscoveryResult } from '@basmilius/apple-common';\nimport { AirPlayDevice } from '../airplay';\n\ntype EventMap = {\n connected: [];\n disconnected: [unexpected: boolean];\n};\n\nexport default abstract class extends EventEmitter<EventMap> {\n get airplay(): AirPlayDevice {\n return this.#airplay;\n }\n\n get bundleIdentifier(): string | null {\n return this.#airplay.state.nowPlayingClient?.bundleIdentifier ?? null;\n }\n\n get displayName(): string | null {\n return this.#airplay.state.nowPlayingClient?.displayName ?? null;\n }\n\n get isConnected(): boolean {\n return this.#airplay.isConnected;\n }\n\n get isPlaying(): boolean {\n return this.playbackState === Proto.PlaybackState_Enum.Playing;\n }\n\n get playbackQueue(): Proto.PlaybackQueue | null {\n return this.#airplay.state.nowPlayingClient?.playbackQueue ?? null;\n }\n\n get playbackState(): Proto.PlaybackState_Enum {\n return this.#airplay.state.nowPlayingClient?.playbackState ?? Proto.PlaybackState_Enum.Unknown;\n }\n\n get playbackStateTimestamp(): number {\n return this.#airplay.state.nowPlayingClient?.playbackStateTimestamp ?? -1;\n }\n\n get volume(): number {\n return this.#airplay.state.volume ?? 0;\n }\n\n readonly #airplay: AirPlayDevice;\n #disconnect: boolean = false;\n\n constructor(discoveryResult: DiscoveryResult) {\n super();\n\n this.#airplay = new AirPlayDevice(discoveryResult);\n this.#airplay.on('connected', () => this.#onConnected());\n this.#airplay.on('disconnected', unexpected => this.#onDisconnected(unexpected));\n }\n\n async connect(): Promise<void> {\n await this.#airplay.connect();\n this.#disconnect = false;\n }\n\n async disconnect(): Promise<void> {\n await this.#airplay.disconnect();\n }\n\n async pause(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Pause);\n }\n\n async playPause(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.TogglePlayPause);\n }\n\n async play(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Play);\n }\n\n async stop(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Stop);\n }\n\n async next(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.NextInContext);\n }\n\n async previous(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.PreviousInContext);\n }\n\n async setVolume(volume: number): Promise<void> {\n await this.#airplay.setVolume(volume);\n }\n\n async getCommandInfo(command: Proto.Command): Promise<Proto.CommandInfo | null> {\n const client = this.#airplay.state.nowPlayingClient;\n\n if (!client) {\n return null;\n }\n\n return client.supportedCommands.find(c => c.command === command) ?? null;\n }\n\n async isCommandSupported(command: Proto.Command): Promise<boolean> {\n const client = this.#airplay.state.nowPlayingClient;\n\n if (!client) {\n return false;\n }\n\n return client.isCommandSupported(command);\n }\n\n async #onConnected(): Promise<void> {\n this.emit('connected');\n }\n\n async #onDisconnected(unexpected: boolean): Promise<void> {\n if (this.#disconnect) {\n return;\n }\n\n this.#disconnect = true;\n\n await this.disconnect();\n this.emit('disconnected', unexpected);\n }\n}\n",
110
+ "import { EventEmitter } from 'node:events';\nimport { Proto } from '@basmilius/apple-airplay';\nimport type { DiscoveryResult } from '@basmilius/apple-common';\nimport { AirPlayDevice } from '../airplay';\n\ntype EventMap = {\n connected: [];\n disconnected: [unexpected: boolean];\n};\n\nexport default abstract class extends EventEmitter<EventMap> {\n get airplay(): AirPlayDevice {\n return this.#airplay;\n }\n\n get bundleIdentifier(): string | null {\n return this.#airplay.state.nowPlayingClient?.bundleIdentifier ?? null;\n }\n\n get displayName(): string | null {\n return this.#airplay.state.nowPlayingClient?.displayName ?? null;\n }\n\n get isConnected(): boolean {\n return this.#airplay.isConnected;\n }\n\n get isPlaying(): boolean {\n return this.playbackState === Proto.PlaybackState_Enum.Playing;\n }\n\n get playbackQueue(): Proto.PlaybackQueue | null {\n return this.#airplay.state.nowPlayingClient?.playbackQueue ?? null;\n }\n\n get playbackState(): Proto.PlaybackState_Enum {\n return this.#airplay.state.nowPlayingClient?.playbackState ?? Proto.PlaybackState_Enum.Unknown;\n }\n\n get playbackStateTimestamp(): number {\n return this.#airplay.state.nowPlayingClient?.playbackStateTimestamp ?? -1;\n }\n\n get volume(): number {\n return this.#airplay.state.volume ?? 0;\n }\n\n readonly #airplay: AirPlayDevice;\n #disconnect: boolean = false;\n\n constructor(discoveryResult: DiscoveryResult) {\n super();\n\n this.#airplay = new AirPlayDevice(discoveryResult);\n this.#airplay.on('connected', () => this.#onConnected());\n this.#airplay.on('disconnected', unexpected => this.#onDisconnected(unexpected));\n }\n\n async connect(): Promise<void> {\n await this.#airplay.connect();\n this.#disconnect = false;\n }\n\n async disconnect(): Promise<void> {\n await this.#airplay.disconnect();\n }\n\n async pause(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Pause);\n }\n\n async playPause(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.TogglePlayPause);\n }\n\n async play(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Play);\n }\n\n async stop(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.Stop);\n }\n\n async next(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.NextInContext);\n }\n\n async previous(): Promise<void> {\n await this.#airplay.sendCommand(Proto.Command.PreviousInContext);\n }\n\n async getCommandInfo(command: Proto.Command): Promise<Proto.CommandInfo | null> {\n const client = this.#airplay.state.nowPlayingClient;\n\n if (!client) {\n return null;\n }\n\n return client.supportedCommands.find(c => c.command === command) ?? null;\n }\n\n async isCommandSupported(command: Proto.Command): Promise<boolean> {\n const client = this.#airplay.state.nowPlayingClient;\n\n if (!client) {\n return false;\n }\n\n return client.isCommandSupported(command);\n }\n\n async #onConnected(): Promise<void> {\n this.emit('connected');\n }\n\n async #onDisconnected(unexpected: boolean): Promise<void> {\n if (this.#disconnect) {\n return;\n }\n\n this.#disconnect = true;\n\n await this.disconnect();\n this.emit('disconnected', unexpected);\n }\n}\n",
110
111
  "import HomePodBase from './homepod-base';\n\nexport default class extends HomePodBase {}\n",
111
112
  "import HomePodBase from './homepod-base';\n\nexport default class extends HomePodBase {}\n"
112
113
  ],
113
- "mappings": "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",
114
- "debugId": "D352F68C735427BD64756E2164756E21",
114
+ "mappings": "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",
115
+ "debugId": "3DD12D12C3AF3F8164756E2164756E21",
115
116
  "names": []
116
117
  }
@@ -26,7 +26,6 @@ export default abstract class extends EventEmitter<EventMap> {
26
26
  stop(): Promise<void>;
27
27
  next(): Promise<void>;
28
28
  previous(): Promise<void>;
29
- setVolume(volume: number): Promise<void>;
30
29
  getCommandInfo(command: Proto.Command): Promise<Proto.CommandInfo | null>;
31
30
  isCommandSupported(command: Proto.Command): Promise<boolean>;
32
31
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@basmilius/apple-devices",
3
3
  "description": "Exposes various Apple devices to connect with either AirPlay or Companion Link.",
4
- "version": "0.0.74",
4
+ "version": "0.0.75",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": {
@@ -43,9 +43,9 @@
43
43
  }
44
44
  },
45
45
  "dependencies": {
46
- "@basmilius/apple-airplay": "0.0.74",
47
- "@basmilius/apple-common": "0.0.74",
48
- "@basmilius/apple-companion-link": "0.0.74",
46
+ "@basmilius/apple-airplay": "0.0.75",
47
+ "@basmilius/apple-common": "0.0.75",
48
+ "@basmilius/apple-companion-link": "0.0.75",
49
49
  "lodash-es": "^4.17.22"
50
50
  },
51
51
  "devDependencies": {