alphatheta-connect 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +166 -0
- package/lib/artwork/index.d.ts +9 -0
- package/lib/artwork/parsers/aiff.d.ts +2 -0
- package/lib/artwork/parsers/flac.d.ts +2 -0
- package/lib/artwork/parsers/id3.d.ts +2 -0
- package/lib/artwork/parsers/index.d.ts +5 -0
- package/lib/artwork/parsers/mp4.d.ts +2 -0
- package/lib/artwork/parsers/utils.d.ts +3 -0
- package/lib/artwork/reader.d.ts +15 -0
- package/lib/artwork/types.d.ts +44 -0
- package/lib/cli/index.d.ts +1 -0
- package/lib/cli.js +11431 -0
- package/lib/cli.js.map +1 -0
- package/lib/constants.d.ts +40 -0
- package/lib/control/index.d.ts +20 -0
- package/lib/db/getArtworkFromFile.d.ts +13 -0
- package/lib/db/getArtworkThumbnail.d.ts +29 -0
- package/lib/db/getFile.d.ts +29 -0
- package/lib/db/getMetadata.d.ts +28 -0
- package/lib/db/getPlaylist.d.ts +26 -0
- package/lib/db/getWaveforms.d.ts +29 -0
- package/lib/db/index.d.ts +70 -0
- package/lib/db/utils.d.ts +7 -0
- package/lib/devices/index.d.ts +66 -0
- package/lib/devices/utils.d.ts +5 -0
- package/lib/entities.d.ts +122 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +13381 -0
- package/lib/index.js.map +1 -0
- package/lib/localdb/database-adapter.d.ts +49 -0
- package/lib/localdb/index.d.ts +104 -0
- package/lib/localdb/onelibrary-schema.d.ts +250 -0
- package/lib/localdb/onelibrary.d.ts +185 -0
- package/lib/localdb/orm.d.ts +60 -0
- package/lib/localdb/rekordbox.d.ts +112 -0
- package/lib/localdb/schema.d.ts +1 -0
- package/lib/localdb/utils.d.ts +5 -0
- package/lib/mixstatus/index.d.ts +109 -0
- package/lib/mixstatus/utils.d.ts +9 -0
- package/lib/network.d.ts +201 -0
- package/lib/nfs/index.d.ts +63 -0
- package/lib/nfs/programs.d.ts +61 -0
- package/lib/nfs/rpc.d.ts +60 -0
- package/lib/nfs/utils.d.ts +4 -0
- package/lib/nfs/xdr.d.ts +17 -0
- package/lib/passive/alphatheta.d.ts +94 -0
- package/lib/passive/devices.d.ts +64 -0
- package/lib/passive/index.d.ts +169 -0
- package/lib/passive/localdb.d.ts +122 -0
- package/lib/passive/pcap-adapter.d.ts +77 -0
- package/lib/passive/position.d.ts +32 -0
- package/lib/passive/remotedb.d.ts +49 -0
- package/lib/passive/status.d.ts +41 -0
- package/lib/remotedb/constants.d.ts +8 -0
- package/lib/remotedb/fields.d.ts +169 -0
- package/lib/remotedb/index.d.ts +160 -0
- package/lib/remotedb/message/index.d.ts +39 -0
- package/lib/remotedb/message/item.d.ts +530 -0
- package/lib/remotedb/message/response.d.ts +18 -0
- package/lib/remotedb/message/types.d.ts +227 -0
- package/lib/remotedb/queries.d.ts +99 -0
- package/lib/remotedb/utils.d.ts +23 -0
- package/lib/status/index.d.ts +39 -0
- package/lib/status/media.d.ts +22 -0
- package/lib/status/position.d.ts +29 -0
- package/lib/status/types.d.ts +170 -0
- package/lib/status/utils.d.ts +19 -0
- package/lib/types.d.ts +457 -0
- package/lib/types.js +274 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/converters.d.ts +17 -0
- package/lib/utils/index.d.ts +28 -0
- package/lib/utils/telemetry.d.ts +82 -0
- package/lib/utils/udp.d.ts +20 -0
- package/lib/virtualcdj/index.d.ts +33 -0
- package/package.json +93 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { PromiseReadable } from 'promise-readable';
|
|
2
|
+
/**
|
|
3
|
+
* Field type is a leading byte that indicates what the field is.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum FieldType {
|
|
6
|
+
UInt8 = 15,
|
|
7
|
+
UInt16 = 16,
|
|
8
|
+
UInt32 = 17,
|
|
9
|
+
Binary = 20,
|
|
10
|
+
String = 38
|
|
11
|
+
}
|
|
12
|
+
export declare abstract class BaseField {
|
|
13
|
+
['constructor']: typeof BaseField;
|
|
14
|
+
/**
|
|
15
|
+
* The raw field data
|
|
16
|
+
*/
|
|
17
|
+
data: Buffer;
|
|
18
|
+
/**
|
|
19
|
+
* Corce the field into a buffer. This differs from reading the data
|
|
20
|
+
* property in that it will include the field type header.
|
|
21
|
+
*/
|
|
22
|
+
abstract buffer: Buffer;
|
|
23
|
+
/**
|
|
24
|
+
* Declares the type of field this class represents
|
|
25
|
+
*/
|
|
26
|
+
static type: FieldType;
|
|
27
|
+
/**
|
|
28
|
+
* The number of bytes to read for this field. If the field is not a fixed size,
|
|
29
|
+
* set this to a function which will receive the UInt32 value just after
|
|
30
|
+
* reading the field type, returning the next number of bytes to read.
|
|
31
|
+
*/
|
|
32
|
+
static bytesToRead: number | ((reportedLength: number) => number);
|
|
33
|
+
}
|
|
34
|
+
export type NumberField<T extends number = number> = BaseField & {
|
|
35
|
+
/**
|
|
36
|
+
* The fields number value
|
|
37
|
+
*/
|
|
38
|
+
value: T;
|
|
39
|
+
};
|
|
40
|
+
export type StringField<T extends string = string> = BaseField & {
|
|
41
|
+
/**
|
|
42
|
+
* The fields decoded string value
|
|
43
|
+
*/
|
|
44
|
+
value: T;
|
|
45
|
+
};
|
|
46
|
+
export type BinaryField = BaseField & {
|
|
47
|
+
/**
|
|
48
|
+
* The binary value encapsulated in the field
|
|
49
|
+
*/
|
|
50
|
+
value: Buffer;
|
|
51
|
+
};
|
|
52
|
+
export type Field = NumberField | StringField | BinaryField;
|
|
53
|
+
type NumberFieldType = FieldType.UInt32 | FieldType.UInt16 | FieldType.UInt8;
|
|
54
|
+
/**
|
|
55
|
+
* Field representing a UInt8
|
|
56
|
+
*/
|
|
57
|
+
export declare const UInt8: {
|
|
58
|
+
new (value: number | Buffer): {
|
|
59
|
+
value: number;
|
|
60
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
61
|
+
constructor: typeof BaseField;
|
|
62
|
+
/**
|
|
63
|
+
* The raw field data
|
|
64
|
+
*/
|
|
65
|
+
data: Buffer;
|
|
66
|
+
};
|
|
67
|
+
type: NumberFieldType;
|
|
68
|
+
bytesToRead: 1 | 4 | 2;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Field representing a UInt16
|
|
72
|
+
*/
|
|
73
|
+
export declare const UInt16: {
|
|
74
|
+
new (value: number | Buffer): {
|
|
75
|
+
value: number;
|
|
76
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
77
|
+
constructor: typeof BaseField;
|
|
78
|
+
/**
|
|
79
|
+
* The raw field data
|
|
80
|
+
*/
|
|
81
|
+
data: Buffer;
|
|
82
|
+
};
|
|
83
|
+
type: NumberFieldType;
|
|
84
|
+
bytesToRead: 1 | 4 | 2;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Field representing a UInt32
|
|
88
|
+
*/
|
|
89
|
+
export declare const UInt32: {
|
|
90
|
+
new (value: number | Buffer): {
|
|
91
|
+
value: number;
|
|
92
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
93
|
+
constructor: typeof BaseField;
|
|
94
|
+
/**
|
|
95
|
+
* The raw field data
|
|
96
|
+
*/
|
|
97
|
+
data: Buffer;
|
|
98
|
+
};
|
|
99
|
+
type: NumberFieldType;
|
|
100
|
+
bytesToRead: 1 | 4 | 2;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Field representing a null-terminated big endian UTF-16 string
|
|
104
|
+
*/
|
|
105
|
+
export declare class String extends BaseField implements StringField {
|
|
106
|
+
static type: FieldType.String;
|
|
107
|
+
static bytesToRead: (length: number) => number;
|
|
108
|
+
value: string;
|
|
109
|
+
constructor(value: Buffer | string);
|
|
110
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Field representing binary data
|
|
114
|
+
*/
|
|
115
|
+
export declare class Binary extends BaseField implements BinaryField {
|
|
116
|
+
static type: FieldType.Binary;
|
|
117
|
+
static bytesToRead: (bytes: number) => number;
|
|
118
|
+
value: Buffer;
|
|
119
|
+
constructor(value: Buffer);
|
|
120
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
121
|
+
}
|
|
122
|
+
declare const fieldMap: {
|
|
123
|
+
readonly 15: {
|
|
124
|
+
new (value: number | Buffer): {
|
|
125
|
+
value: number;
|
|
126
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
127
|
+
constructor: typeof BaseField;
|
|
128
|
+
/**
|
|
129
|
+
* The raw field data
|
|
130
|
+
*/
|
|
131
|
+
data: Buffer;
|
|
132
|
+
};
|
|
133
|
+
type: NumberFieldType;
|
|
134
|
+
bytesToRead: 1 | 4 | 2;
|
|
135
|
+
};
|
|
136
|
+
readonly 16: {
|
|
137
|
+
new (value: number | Buffer): {
|
|
138
|
+
value: number;
|
|
139
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
140
|
+
constructor: typeof BaseField;
|
|
141
|
+
/**
|
|
142
|
+
* The raw field data
|
|
143
|
+
*/
|
|
144
|
+
data: Buffer;
|
|
145
|
+
};
|
|
146
|
+
type: NumberFieldType;
|
|
147
|
+
bytesToRead: 1 | 4 | 2;
|
|
148
|
+
};
|
|
149
|
+
readonly 17: {
|
|
150
|
+
new (value: number | Buffer): {
|
|
151
|
+
value: number;
|
|
152
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
153
|
+
constructor: typeof BaseField;
|
|
154
|
+
/**
|
|
155
|
+
* The raw field data
|
|
156
|
+
*/
|
|
157
|
+
data: Buffer;
|
|
158
|
+
};
|
|
159
|
+
type: NumberFieldType;
|
|
160
|
+
bytesToRead: 1 | 4 | 2;
|
|
161
|
+
};
|
|
162
|
+
readonly 20: typeof Binary;
|
|
163
|
+
readonly 38: typeof String;
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Read a single field from a socket stream.
|
|
167
|
+
*/
|
|
168
|
+
export declare function readField<T extends FieldType, F extends InstanceType<(typeof fieldMap)[T]>>(stream: PromiseReadable<any>, expect: T): Promise<F>;
|
|
169
|
+
export {};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Mutex } from 'async-mutex';
|
|
2
|
+
import PromiseSocket from 'promise-socket';
|
|
3
|
+
import { Socket } from 'net';
|
|
4
|
+
import DeviceManager from "../devices";
|
|
5
|
+
import { Device, DeviceID, MediaSlot, TrackType } from "../types";
|
|
6
|
+
import { TelemetrySpan as Span } from "../utils/telemetry";
|
|
7
|
+
import { Response } from './message/types';
|
|
8
|
+
import { Message } from './message';
|
|
9
|
+
import { HandlerArgs, HandlerReturn, queryHandlers } from './queries';
|
|
10
|
+
type Await<T> = T extends PromiseLike<infer U> ? U : T;
|
|
11
|
+
/**
|
|
12
|
+
* Menu target specifies where a menu should be "rendered" This differs based
|
|
13
|
+
* on the request being made.
|
|
14
|
+
*/
|
|
15
|
+
export declare enum MenuTarget {
|
|
16
|
+
Main = 1
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Used to specify where to lookup data when making queries
|
|
20
|
+
*/
|
|
21
|
+
export interface QueryDescriptor {
|
|
22
|
+
menuTarget: MenuTarget;
|
|
23
|
+
trackSlot: MediaSlot;
|
|
24
|
+
trackType: TrackType;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Used internally when making queries.
|
|
28
|
+
*/
|
|
29
|
+
export type LookupDescriptor = QueryDescriptor & {
|
|
30
|
+
targetDevice: Device;
|
|
31
|
+
hostDevice: Device;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Used to specify the query type that is being made
|
|
35
|
+
*/
|
|
36
|
+
export type Query = keyof typeof queryHandlers;
|
|
37
|
+
export declare const Query: {
|
|
38
|
+
readonly [x: number]: string;
|
|
39
|
+
readonly GetMetadata: import("./message/types").DataRequest.GetMetadata;
|
|
40
|
+
readonly GetArtwork: import("./message/types").DataRequest.GetArtwork;
|
|
41
|
+
readonly GetWaveformPreview: import("./message/types").DataRequest.GetWaveformPreview;
|
|
42
|
+
readonly GetTrackInfo: import("./message/types").DataRequest.GetTrackInfo;
|
|
43
|
+
readonly GetGenericMetadata: import("./message/types").DataRequest.GetGenericMetadata;
|
|
44
|
+
readonly GetCueAndLoops: import("./message/types").DataRequest.GetCueAndLoops;
|
|
45
|
+
readonly GetBeatGrid: import("./message/types").DataRequest.GetBeatGrid;
|
|
46
|
+
readonly GetWaveformDetailed: import("./message/types").DataRequest.GetWaveformDetailed;
|
|
47
|
+
readonly GetAdvCueAndLoops: import("./message/types").DataRequest.GetAdvCueAndLoops;
|
|
48
|
+
readonly GetWaveformHD: import("./message/types").DataRequest.GetWaveformHD;
|
|
49
|
+
readonly MenuRoot: import("./message/types").MenuRequest.MenuRoot;
|
|
50
|
+
readonly MenuGenre: import("./message/types").MenuRequest.MenuGenre;
|
|
51
|
+
readonly MenuArtist: import("./message/types").MenuRequest.MenuArtist;
|
|
52
|
+
readonly MenuAlbum: import("./message/types").MenuRequest.MenuAlbum;
|
|
53
|
+
readonly MenuTrack: import("./message/types").MenuRequest.MenuTrack;
|
|
54
|
+
readonly MenuBPM: import("./message/types").MenuRequest.MenuBPM;
|
|
55
|
+
readonly MenuRating: import("./message/types").MenuRequest.MenuRating;
|
|
56
|
+
readonly MenuYear: import("./message/types").MenuRequest.MenuYear;
|
|
57
|
+
readonly MenuLabel: import("./message/types").MenuRequest.MenuLabel;
|
|
58
|
+
readonly MenuColor: import("./message/types").MenuRequest.MenuColor;
|
|
59
|
+
readonly MenuTime: import("./message/types").MenuRequest.MenuTime;
|
|
60
|
+
readonly MenuBitrate: import("./message/types").MenuRequest.MenuBitrate;
|
|
61
|
+
readonly MenuHistory: import("./message/types").MenuRequest.MenuHistory;
|
|
62
|
+
readonly MenuFilename: import("./message/types").MenuRequest.MenuFilename;
|
|
63
|
+
readonly MenuKey: import("./message/types").MenuRequest.MenuKey;
|
|
64
|
+
readonly MenuOriginalArtist: import("./message/types").MenuRequest.MenuOriginalArtist;
|
|
65
|
+
readonly MenuRemixer: import("./message/types").MenuRequest.MenuRemixer;
|
|
66
|
+
readonly MenuPlaylist: import("./message/types").MenuRequest.MenuPlaylist;
|
|
67
|
+
readonly MenuArtistsOfGenre: import("./message/types").MenuRequest.MenuArtistsOfGenre;
|
|
68
|
+
readonly MenuAlbumsOfArtist: import("./message/types").MenuRequest.MenuAlbumsOfArtist;
|
|
69
|
+
readonly MenuTracksOfAlbum: import("./message/types").MenuRequest.MenuTracksOfAlbum;
|
|
70
|
+
readonly MenuTracksOfRating: import("./message/types").MenuRequest.MenuTracksOfRating;
|
|
71
|
+
readonly MenuYearsOfDecade: import("./message/types").MenuRequest.MenuYearsOfDecade;
|
|
72
|
+
readonly MenuArtistsOfLabel: import("./message/types").MenuRequest.MenuArtistsOfLabel;
|
|
73
|
+
readonly MenuTracksOfColor: import("./message/types").MenuRequest.MenuTracksOfColor;
|
|
74
|
+
readonly MenuTracksOfTime: import("./message/types").MenuRequest.MenuTracksOfTime;
|
|
75
|
+
readonly MenuTracksOfHistory: import("./message/types").MenuRequest.MenuTracksOfHistory;
|
|
76
|
+
readonly MenuDistancesOfKey: import("./message/types").MenuRequest.MenuDistancesOfKey;
|
|
77
|
+
readonly MenuAlbumsOfOriginalArtist: import("./message/types").MenuRequest.MenuAlbumsOfOriginalArtist;
|
|
78
|
+
readonly MenuAlbumsOfRemixer: import("./message/types").MenuRequest.MenuAlbumsOfRemixer;
|
|
79
|
+
readonly MenuAlbumsOfGenreAndArtist: import("./message/types").MenuRequest.MenuAlbumsOfGenreAndArtist;
|
|
80
|
+
readonly MenuTracksOfArtistAndAlbum: import("./message/types").MenuRequest.MenuTracksOfArtistAndAlbum;
|
|
81
|
+
readonly MenuTracksOfBPMPercentRange: import("./message/types").MenuRequest.MenuTracksOfBPMPercentRange;
|
|
82
|
+
readonly MenuTracksOfDecadeAndYear: import("./message/types").MenuRequest.MenuTracksOfDecadeAndYear;
|
|
83
|
+
readonly MenuAlbumsOfLabelAndArtist: import("./message/types").MenuRequest.MenuAlbumsOfLabelAndArtist;
|
|
84
|
+
readonly MenuTracksNearKey: import("./message/types").MenuRequest.MenuTracksNearKey;
|
|
85
|
+
readonly MenuTracksOfOriginalArtistAndAlbum: import("./message/types").MenuRequest.MenuTracksOfOriginalArtistAndAlbum;
|
|
86
|
+
readonly MenuTracksOfRemixerAndAlbum: import("./message/types").MenuRequest.MenuTracksOfRemixerAndAlbum;
|
|
87
|
+
readonly MenuTracksOfGenreArtistAndAlbum: import("./message/types").MenuRequest.MenuTracksOfGenreArtistAndAlbum;
|
|
88
|
+
readonly MenuTracksOfLabelArtistAndAlbum: import("./message/types").MenuRequest.MenuTracksOfLabelArtistAndAlbum;
|
|
89
|
+
readonly MenuSearch: import("./message/types").MenuRequest.MenuSearch;
|
|
90
|
+
readonly MenuFolder: import("./message/types").MenuRequest.MenuFolder;
|
|
91
|
+
readonly Introduce: import("./message/types").ControlRequest.Introduce;
|
|
92
|
+
readonly Disconnect: import("./message/types").ControlRequest.Disconnect;
|
|
93
|
+
readonly RenderMenu: import("./message/types").ControlRequest.RenderMenu;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Returns a string representation of a remote query
|
|
97
|
+
*/
|
|
98
|
+
export declare function getQueryName(query: Query): string;
|
|
99
|
+
/**
|
|
100
|
+
* Options used to make a remotedb query
|
|
101
|
+
*/
|
|
102
|
+
interface QueryOpts<T extends Query> {
|
|
103
|
+
queryDescriptor: QueryDescriptor;
|
|
104
|
+
/**
|
|
105
|
+
* The query type to make
|
|
106
|
+
*/
|
|
107
|
+
query: T;
|
|
108
|
+
/**
|
|
109
|
+
* Arguments to pass to the query. These are query specific
|
|
110
|
+
*/
|
|
111
|
+
args: HandlerArgs<T>;
|
|
112
|
+
/**
|
|
113
|
+
* The sentry span to associate the query with
|
|
114
|
+
*/
|
|
115
|
+
span?: Span;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Manages a connection to a single device
|
|
119
|
+
*/
|
|
120
|
+
export declare class Connection {
|
|
121
|
+
#private;
|
|
122
|
+
device: Device;
|
|
123
|
+
constructor(device: Device, socket: PromiseSocket<Socket>);
|
|
124
|
+
writeMessage(message: Message, span: Span): Promise<void>;
|
|
125
|
+
readMessage<T extends Response>(expect: T, span: Span): Promise<Message<T>>;
|
|
126
|
+
close(): void;
|
|
127
|
+
}
|
|
128
|
+
export declare class QueryInterface {
|
|
129
|
+
#private;
|
|
130
|
+
constructor(conn: Connection, lock: Mutex, hostDevice: Device);
|
|
131
|
+
/**
|
|
132
|
+
* Make a query to the remote database connection.
|
|
133
|
+
*/
|
|
134
|
+
query<T extends Query>(opts: QueryOpts<T>): Promise<Await<HandlerReturn<T>>>;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Service that maintains remote database connections with devices on the network.
|
|
138
|
+
*/
|
|
139
|
+
export default class RemoteDatabase {
|
|
140
|
+
#private;
|
|
141
|
+
constructor(deviceManager: DeviceManager, hostDevice: Device);
|
|
142
|
+
/**
|
|
143
|
+
* Open a connection to the specified device for querying
|
|
144
|
+
*/
|
|
145
|
+
connectToDevice: (device: Device) => Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Disconnect from the specified device
|
|
148
|
+
*/
|
|
149
|
+
disconnectFromDevice: (device: Device) => Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Gets the remote database query interface for the given device.
|
|
152
|
+
*
|
|
153
|
+
* If we have not already established a connection with the specified device,
|
|
154
|
+
* we will attempt to first connect.
|
|
155
|
+
*
|
|
156
|
+
* @returns null if the device does not export a remote database service
|
|
157
|
+
*/
|
|
158
|
+
get(deviceId: DeviceID): Promise<QueryInterface | null>;
|
|
159
|
+
}
|
|
160
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TelemetrySpan as Span } from "../../utils/telemetry";
|
|
2
|
+
import { PromiseReadable } from 'promise-readable';
|
|
3
|
+
import { Field } from "../fields";
|
|
4
|
+
import { responseTransform } from "./response";
|
|
5
|
+
import { MessageType, Response } from "./types";
|
|
6
|
+
interface Options<T extends MessageType> {
|
|
7
|
+
transactionId?: number;
|
|
8
|
+
type: T;
|
|
9
|
+
args: Field[];
|
|
10
|
+
}
|
|
11
|
+
type ResponseType<T> = T extends Response ? T : never;
|
|
12
|
+
type Data<T> = ReturnType<(typeof responseTransform)[ResponseType<T>]>;
|
|
13
|
+
/**
|
|
14
|
+
* Representation of a set of fields sequenced into a known message format.
|
|
15
|
+
*/
|
|
16
|
+
export declare class Message<T extends MessageType = MessageType> {
|
|
17
|
+
/**
|
|
18
|
+
* Read a single mesasge via a readable stream
|
|
19
|
+
*/
|
|
20
|
+
static fromStream<T extends Response>(stream: PromiseReadable<any>, expect: T, span: Span): Promise<Message<T>>;
|
|
21
|
+
/**
|
|
22
|
+
* The transaction ID is used to associate responses to their requests.
|
|
23
|
+
*/
|
|
24
|
+
transactionId?: number;
|
|
25
|
+
readonly type: T;
|
|
26
|
+
readonly args: Field[];
|
|
27
|
+
constructor({ transactionId, type, args }: Options<T>);
|
|
28
|
+
/**
|
|
29
|
+
* The byte serialization of the message
|
|
30
|
+
*/
|
|
31
|
+
get buffer(): Buffer<ArrayBuffer>;
|
|
32
|
+
/**
|
|
33
|
+
* The JS representation of the message.
|
|
34
|
+
*
|
|
35
|
+
* Currently only supports representing response messages.
|
|
36
|
+
*/
|
|
37
|
+
get data(): Data<T>;
|
|
38
|
+
}
|
|
39
|
+
export {};
|