@basmilius/apple-airplay 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ import { EncryptionAwareConnection, type EventMap } from "@basmilius/apple-common";
2
+ type DefaultEventMap = {
3
+ close: [];
4
+ connect: [];
5
+ error: [Error];
6
+ timeout: [];
7
+ };
8
+ export default class BaseStream<TEventMap extends EventMap = {}> extends EncryptionAwareConnection<DefaultEventMap & TEventMap> {
9
+ #private;
10
+ decrypt(data: Buffer): Buffer | false;
11
+ encrypt(data: Buffer): Buffer;
12
+ }
@@ -1,10 +1,11 @@
1
- import Stream from "./stream";
2
- export default class AirPlayRTSP extends Stream<{}> {
1
+ import { type Context } from "@basmilius/apple-common";
2
+ import BaseStream from "./baseStream";
3
+ export default class ControlStream extends BaseStream {
3
4
  #private;
4
- get activeRemote(): string;
5
+ get activeRemoteId(): string;
5
6
  get dacpId(): string;
6
7
  get sessionId(): string;
7
- constructor(address: string, port: number);
8
+ constructor(context: Context, address: string, port: number);
8
9
  get(path: string, headers?: HeadersInit, timeout?: number): Promise<Response>;
9
10
  post(path: string, body?: Buffer | string | null, headers?: HeadersInit, timeout?: number): Promise<Response>;
10
11
  record(path: string, headers?: HeadersInit, timeout?: number): Promise<Response>;
@@ -1,5 +1,7 @@
1
+ import { type Context } from "@basmilius/apple-common";
2
+ import { type DescExtension } from "@bufbuild/protobuf";
1
3
  import * as Proto from "./proto";
2
- import Stream from "./stream";
4
+ import BaseStream from "./baseStream";
3
5
  type EventMap = {
4
6
  readonly deviceInfo: [Proto.DeviceInfoMessage];
5
7
  readonly deviceInfoUpdate: [Proto.DeviceInfoMessage];
@@ -21,11 +23,11 @@ type EventMap = {
21
23
  readonly volumeControlCapabilitiesDidChange: [Proto.VolumeControlCapabilitiesDidChangeMessage];
22
24
  readonly volumeDidChange: [Proto.VolumeDidChangeMessage];
23
25
  };
24
- export default class AirPlayDataStream extends Stream<EventMap> {
26
+ export default class DataStream extends BaseStream<EventMap> {
25
27
  #private;
26
- constructor(address: string, port: number);
27
- exchange(message: Proto.ProtocolMessage): Promise<Proto.ProtocolMessage>;
28
+ constructor(context: Context, address: string, port: number);
29
+ exchange(message: Proto.ProtocolMessage | [Proto.ProtocolMessage, DescExtension]): Promise<Proto.ProtocolMessage>;
28
30
  reply(seqno: bigint): Promise<void>;
29
- send(message: Proto.ProtocolMessage): Promise<void>;
30
- setup(sharedSecret: Buffer, seed: bigint): Promise<void>;
31
+ send(message: Proto.ProtocolMessage | [Proto.ProtocolMessage, DescExtension]): Promise<void>;
32
+ setup(sharedSecret: Buffer, seed: bigint): void;
31
33
  }
@@ -1,20 +1,20 @@
1
1
  import { DescExtension, type Extendee, type ExtensionValueShape } from "@bufbuild/protobuf";
2
2
  import * as Proto from "./proto";
3
3
  export declare function protocol(type: Proto.ProtocolMessage_Type, errorCode?: Proto.ErrorCode_Enum): Proto.ProtocolMessage;
4
- export declare function clientUpdatesConfig(artworkUpdates?: boolean, nowPlayingUpdates?: boolean, volumeUpdates?: boolean, keyboardUpdates?: boolean, outputDeviceUpdates?: boolean, systemEndpointUpdates?: boolean): Proto.ProtocolMessage;
5
- export declare function configureConnection(groupId: string): Proto.ProtocolMessage;
6
- export declare function deviceInfo(pairingId: Buffer): Proto.ProtocolMessage;
7
- export declare function getState(): Proto.ProtocolMessage;
8
- export declare function getVolume(outputDeviceUID: string): Proto.ProtocolMessage;
9
- export declare function getVolumeMuted(outputDeviceUID: string): Proto.ProtocolMessage;
10
- export declare function notification(notification: string): Proto.ProtocolMessage;
11
- export declare function playbackQueueRequest(location: number, length: number, includeMetadata?: boolean, includeLanguageOptions?: boolean): Proto.ProtocolMessage;
12
- export declare function sendButtonEvent(usagePage: number, usage: number, buttonDown: boolean): Proto.ProtocolMessage;
13
- export declare function sendCommand(command: Proto.Command, options?: Proto.CommandOptions): Proto.ProtocolMessage;
14
- export declare function sendHIDEvent(usePage: number, usage: number, down: boolean): Proto.ProtocolMessage;
15
- export declare function setConnectionState(state?: Proto.SetConnectionStateMessage_ConnectionState): Proto.ProtocolMessage;
16
- export declare function setReadyState(): Proto.ProtocolMessage;
17
- export declare function setVolume(outputDeviceUID: string, volume: number): Proto.ProtocolMessage;
18
- export declare function setVolumeMuted(outputDeviceUID: string, isMuted: boolean): Proto.ProtocolMessage;
19
- export declare function wakeDevice(): Proto.ProtocolMessage;
4
+ export declare function clientUpdatesConfig(artworkUpdates?: boolean, nowPlayingUpdates?: boolean, volumeUpdates?: boolean, keyboardUpdates?: boolean, outputDeviceUpdates?: boolean, systemEndpointUpdates?: boolean): [Proto.ProtocolMessage, DescExtension];
5
+ export declare function configureConnection(groupId: string): [Proto.ProtocolMessage, DescExtension];
6
+ export declare function deviceInfo(pairingId: Buffer): [Proto.ProtocolMessage, DescExtension];
7
+ export declare function getState(): [Proto.ProtocolMessage, DescExtension];
8
+ export declare function getVolume(outputDeviceUID: string): [Proto.ProtocolMessage, DescExtension];
9
+ export declare function getVolumeMuted(outputDeviceUID: string): [Proto.ProtocolMessage, DescExtension];
10
+ export declare function notification(notification: string): [Proto.ProtocolMessage, DescExtension];
11
+ export declare function playbackQueueRequest(location: number, length: number, includeMetadata?: boolean, includeLanguageOptions?: boolean): [Proto.ProtocolMessage, DescExtension];
12
+ export declare function sendButtonEvent(usagePage: number, usage: number, buttonDown: boolean): [Proto.ProtocolMessage, DescExtension];
13
+ export declare function sendCommand(command: Proto.Command, options?: Proto.CommandOptions): [Proto.ProtocolMessage, DescExtension];
14
+ export declare function sendHIDEvent(usePage: number, usage: number, down: boolean): [Proto.ProtocolMessage, DescExtension];
15
+ export declare function setConnectionState(state?: Proto.SetConnectionStateMessage_ConnectionState): [Proto.ProtocolMessage, DescExtension];
16
+ export declare function setReadyState(): [Proto.ProtocolMessage, DescExtension];
17
+ export declare function setVolume(outputDeviceUID: string, volume: number): [Proto.ProtocolMessage, DescExtension];
18
+ export declare function setVolumeMuted(outputDeviceUID: string, isMuted: boolean): [Proto.ProtocolMessage, DescExtension];
19
+ export declare function wakeDevice(): [Proto.ProtocolMessage, DescExtension];
20
20
  export declare function getExtension<Desc extends DescExtension>(message: Extendee<Desc>, extension: Desc): ExtensionValueShape<Desc>;
@@ -1,7 +1,8 @@
1
- import Stream from "./stream";
2
- export default class AirPlayEventStream extends Stream<never> {
1
+ import { type Context } from "@basmilius/apple-common";
2
+ import BaseStream from "./baseStream";
3
+ export default class EventStream extends BaseStream {
3
4
  #private;
4
- constructor(address: string, port: number);
5
+ constructor(context: Context, address: string, port: number);
5
6
  respond(response: Response): Promise<void>;
6
- setup(sharedSecret: Buffer): Promise<void>;
7
+ setup(sharedSecret: Buffer): void;
7
8
  }
package/dist/index.d.ts CHANGED
@@ -1,9 +1,8 @@
1
- export type { default as AirPlayDataStream } from "./dataStream";
2
- export type { default as AirPlayEventStream } from "./eventStream";
3
- export type { default as AirPlayPairing } from "./pairing";
4
- export type { default as AirPlayRTSP } from "./rtsp";
5
- export type { default as AirPlayStream } from "./stream";
6
- export type { default as AirPlayVerify } from "./verify";
1
+ export { default as BaseStream } from "./baseStream";
2
+ export { default as ControlStream } from "./controlStream";
3
+ export { default as DataStream } from "./dataStream";
4
+ export { default as EventStream } from "./eventStream";
5
+ export { default as Protocol } from "./protocol";
6
+ export { Pairing, Verify } from "./pairing";
7
7
  export * as DataStreamMessage from "./dataStreamMessages";
8
8
  export * as Proto from "./proto";
9
- export { default as AirPlay } from "./protocol";