hume 0.3.2 → 0.4.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.
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,9 +31,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
34
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
35
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
36
+ var m = o[Symbol.asyncIterator], i;
37
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
38
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
39
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
40
+ };
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
11
44
  Object.defineProperty(exports, "__esModule", { value: true });
12
45
  exports.StreamSocket = void 0;
13
- const promises_1 = require("fs/promises");
46
+ const ws_1 = __importDefault(require("ws"));
47
+ const uuid_1 = require("uuid");
48
+ const HumeStreamingClient_1 = require("./HumeStreamingClient");
49
+ const base64Encode_1 = require("./base64Encode");
50
+ const serializers = __importStar(require("../serialization"));
51
+ const errors = __importStar(require("../errors"));
52
+ const fs = __importStar(require("fs"));
14
53
  class StreamSocket {
15
54
  constructor({ websocket, config, streamWindowMs }) {
16
55
  this.websocket = websocket;
@@ -18,33 +57,62 @@ class StreamSocket {
18
57
  this.streamWindowMs = streamWindowMs;
19
58
  }
20
59
  /**
21
- * Send a file on the `StreamSocket`
60
+ * Send file on the `StreamSocket`
22
61
  *
23
- * @param filepath Path to media file to send on socket connection
24
- * @param config List of model configurations.
25
- * If set these configurations will overwrite any configurations
26
- * set when initializing the `StreamSocket`
62
+ * @param file A fs.ReadStream | File | Blob
63
+ * @param config This method is intended for use with a `LanguageConfig`.
64
+ * When the socket is configured for other modalities this method will fail.
27
65
  */
28
- sendFile({ filepath, config, }) {
66
+ sendFile({ file, config, }) {
67
+ var file_1, file_1_1;
68
+ var e_1, _a;
29
69
  return __awaiter(this, void 0, void 0, function* () {
30
- this.sendBuffer({
31
- buffer: yield (0, promises_1.readFile)(filepath),
32
- config,
33
- });
34
- });
35
- }
36
- /**
37
- * Send raw bytes on the `StreamSocket`
38
- *
39
- * @param buffer Raw bytes of media to send on socket connection
40
- * @param config List of model configurations.
41
- * If set these configurations will overwrite any configurations
42
- * set when initializing the `StreamSocket`
43
- */
44
- sendBuffer({ buffer, config, }) {
45
- this.sendText({
46
- text: buffer.toString("base64"),
47
- config,
70
+ if (config != null) {
71
+ this.config = config;
72
+ }
73
+ let contents = "";
74
+ if (file instanceof fs.ReadStream) {
75
+ const chunks = [];
76
+ try {
77
+ for (file_1 = __asyncValues(file); file_1_1 = yield file_1.next(), !file_1_1.done;) {
78
+ const chunk = file_1_1.value;
79
+ chunks.push(Buffer.from(chunk));
80
+ }
81
+ }
82
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
83
+ finally {
84
+ try {
85
+ if (file_1_1 && !file_1_1.done && (_a = file_1.return)) yield _a.call(file_1);
86
+ }
87
+ finally { if (e_1) throw e_1.error; }
88
+ }
89
+ contents = Buffer.concat(chunks).toString("base64");
90
+ }
91
+ else if (file instanceof Blob) {
92
+ const toBase64 = (file) => new Promise((res, err) => {
93
+ const reader = new FileReader();
94
+ reader.readAsDataURL(file);
95
+ reader.onload = () => res(reader.result);
96
+ });
97
+ contents = yield toBase64(file);
98
+ }
99
+ else {
100
+ throw new errors.HumeError({ message: `file must be one of ReadStream or Blob.` });
101
+ }
102
+ const request = {
103
+ payloadId: (0, uuid_1.v4)(),
104
+ data: contents,
105
+ models: this.config,
106
+ rawText: false,
107
+ };
108
+ if (this.streamWindowMs != null) {
109
+ request.streamWindowMs = this.streamWindowMs;
110
+ }
111
+ const response = yield this.send(request);
112
+ if (response == null) {
113
+ throw new errors.HumeError({ message: `Received no response after sending file: ${file}` });
114
+ }
115
+ return response;
48
116
  });
49
117
  }
50
118
  /**
@@ -54,16 +122,26 @@ class StreamSocket {
54
122
  * @param config This method is intended for use with a `LanguageConfig`.
55
123
  * When the socket is configured for other modalities this method will fail.
56
124
  */
57
- sendText({ text, config, }) {
58
- if (config != null) {
59
- this.config = config;
60
- }
61
- this.websocket.send(JSON.stringify({
62
- data: text,
63
- raw_text: true,
64
- models: this.config,
65
- stream_window_ms: this.streamWindowMs,
66
- }));
125
+ sendText({ text, config }) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ if (config != null) {
128
+ this.config = config;
129
+ }
130
+ const request = {
131
+ payloadId: (0, uuid_1.v4)(),
132
+ data: text,
133
+ rawText: true,
134
+ models: this.config,
135
+ };
136
+ if (this.streamWindowMs != null) {
137
+ request.streamWindowMs = this.streamWindowMs;
138
+ }
139
+ const response = yield this.send(request);
140
+ if (response == null) {
141
+ throw new errors.HumeError({ message: `Received no response after sending text: ${text}` });
142
+ }
143
+ return response;
144
+ });
67
145
  }
68
146
  /**
69
147
  * Send facemesh landmarks on the `StreamSocket`
@@ -76,10 +154,12 @@ class StreamSocket {
76
154
  * If set these configurations will overwrite existing configurations
77
155
  */
78
156
  sendFacemesh({ landmarks, config, }) {
79
- const stringifiedLandmarks = JSON.stringify(landmarks);
80
- this.sendText({
81
- text: Buffer.from(stringifiedLandmarks).toString("base64"),
82
- config,
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ const response = this.sendText({
159
+ text: (0, base64Encode_1.base64Encode)(JSON.stringify(landmarks)),
160
+ config,
161
+ });
162
+ return response;
83
163
  });
84
164
  }
85
165
  /**
@@ -90,9 +170,11 @@ class StreamSocket {
90
170
  * streaming connection without leaking context across media samples.
91
171
  */
92
172
  reset() {
93
- this.websocket.send(JSON.stringify({
94
- reset_stream: true,
95
- }));
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ yield this.send({
175
+ resetStream: true,
176
+ });
177
+ });
96
178
  }
97
179
  /**
98
180
  *
@@ -100,9 +182,11 @@ class StreamSocket {
100
182
  *
101
183
  */
102
184
  getJobDetails() {
103
- this.websocket.send(JSON.stringify({
104
- job_details: true,
105
- }));
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ yield this.send({
187
+ jobDetails: true,
188
+ });
189
+ });
106
190
  }
107
191
  /**
108
192
  * Closes the underlying socket.
@@ -110,5 +194,48 @@ class StreamSocket {
110
194
  close() {
111
195
  this.websocket.close();
112
196
  }
197
+ send(payload) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ yield this.tillSocketOpen();
200
+ const jsonPayload = yield serializers.ModelsInput.jsonOrThrow(payload, {
201
+ unrecognizedObjectKeys: "strip",
202
+ });
203
+ this.websocket.send(JSON.stringify(jsonPayload));
204
+ const response = yield new Promise((resolve, reject) => {
205
+ this.websocket.addEventListener("message", (event) => {
206
+ const response = (0, HumeStreamingClient_1.parse)(event.data);
207
+ resolve(response);
208
+ });
209
+ });
210
+ if (response != null && isError(response)) {
211
+ throw new errors.HumeError({ message: `CODE ${response.code}: ${response.error}` });
212
+ }
213
+ if (response != null && isWarning(response)) {
214
+ throw new errors.HumeError({ message: `CODE ${response.code}: ${response.warning}` });
215
+ }
216
+ return response;
217
+ });
218
+ }
219
+ tillSocketOpen() {
220
+ return __awaiter(this, void 0, void 0, function* () {
221
+ if (this.websocket.readyState === ws_1.default.OPEN) {
222
+ return this.websocket;
223
+ }
224
+ return new Promise((resolve, reject) => {
225
+ this.websocket.addEventListener("open", () => {
226
+ resolve(this.websocket);
227
+ });
228
+ this.websocket.addEventListener("error", (event) => {
229
+ reject(event);
230
+ });
231
+ });
232
+ });
233
+ }
113
234
  }
114
235
  exports.StreamSocket = StreamSocket;
236
+ function isError(response) {
237
+ return response.error != null;
238
+ }
239
+ function isWarning(response) {
240
+ return response.warning != null;
241
+ }
@@ -0,0 +1 @@
1
+ export declare function base64Encode(str: string): string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.base64Encode = void 0;
4
+ function base64Encode(str) {
5
+ if (typeof Buffer === "function") {
6
+ // Node.js environment
7
+ return Buffer.from(str).toString("base64");
8
+ }
9
+ else if (typeof btoa === "function") {
10
+ // Browser environment
11
+ return btoa(str);
12
+ }
13
+ else {
14
+ throw new Error("Base64 encoding not supported in this environment.");
15
+ }
16
+ }
17
+ exports.base64Encode = base64Encode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hume",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "private": false,
5
5
  "repository": "https://github.com/HumeAI/hume-typescript-sdk",
6
6
  "main": "./index.js",
@@ -17,7 +17,8 @@
17
17
  "qs": "6.11.2",
18
18
  "ws": "^8.14.2",
19
19
  "@types/ws": "^8.5.9",
20
- "uuid": "9.0.1"
20
+ "uuid": "9.0.1",
21
+ "@types/uuid": "9.0.7"
21
22
  },
22
23
  "devDependencies": {
23
24
  "@types/url-join": "4.0.1",
@@ -1,23 +1,28 @@
1
1
  import * as Hume from "../api";
2
- import * as core from "../core";
3
2
  import { StreamSocket } from "./StreamSocket";
3
+ import WebSocket from "ws";
4
4
  export declare namespace HumeStreamingClient {
5
5
  interface Options {
6
- apiKey: core.Supplier<string>;
6
+ apiKey: string;
7
7
  openTimeoutInSeconds?: number;
8
8
  }
9
9
  interface ConnectArgs {
10
10
  config: Hume.ModelConfig;
11
11
  streamWindowMs?: number;
12
- onOpen?: () => void;
12
+ onOpen?: (event: WebSocket.Event) => void;
13
13
  onMessage?: (message: Hume.ModelResponse) => void;
14
14
  onWarning?: (error: Hume.ModelsWarning) => void;
15
15
  onError?: (error: Hume.ModelsError) => void;
16
- onClose?: () => void;
16
+ onClose?: (event: WebSocket.Event) => void;
17
17
  }
18
18
  }
19
19
  export declare class HumeStreamingClient {
20
20
  protected readonly _options: HumeStreamingClient.Options;
21
21
  constructor(_options: HumeStreamingClient.Options);
22
- connect(args: HumeStreamingClient.ConnectArgs): Promise<StreamSocket>;
22
+ connect(args: HumeStreamingClient.ConnectArgs): StreamSocket;
23
23
  }
24
+ export declare function parse(data: WebSocket.Data, args?: {
25
+ onMessage?: (message: Hume.ModelResponse) => void;
26
+ onWarning?: (error: Hume.ModelsWarning) => void;
27
+ onError?: (error: Hume.ModelsError) => void;
28
+ }): Promise<Hume.ModelResponse | Hume.ModelsWarning | Hume.ModelsError | undefined>;
@@ -35,8 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.HumeStreamingClient = void 0;
39
- const core = __importStar(require("../core"));
38
+ exports.parse = exports.HumeStreamingClient = void 0;
40
39
  const serializers = __importStar(require("../serialization"));
41
40
  const StreamSocket_1 = require("./StreamSocket");
42
41
  const ws_1 = __importDefault(require("ws"));
@@ -45,81 +44,76 @@ class HumeStreamingClient {
45
44
  this._options = _options;
46
45
  }
47
46
  connect(args) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- const websocket = new ws_1.default(`wss://api.hume.ai/v0/stream/models`, {
50
- headers: {
51
- "X-Hume-Api-Key": yield core.Supplier.get(this._options.apiKey),
52
- },
53
- timeout: this._options.openTimeoutInSeconds,
54
- });
55
- websocket.addEventListener("open", () => {
56
- var _a;
57
- (_a = args.onOpen) === null || _a === void 0 ? void 0 : _a.call(args);
58
- });
59
- websocket.addEventListener("error", (e) => {
60
- var _a;
61
- (_a = args.onError) === null || _a === void 0 ? void 0 : _a.call(args, {
62
- code: e.type,
63
- error: e.message,
64
- });
65
- });
66
- websocket.addEventListener("message", ({ data }) => __awaiter(this, void 0, void 0, function* () {
67
- var _a, _b, _c;
68
- const body = JSON.parse(data);
69
- const parsedResponse = yield serializers.ModelResponse.parse(body, {
70
- unrecognizedObjectKeys: "passthrough",
71
- allowUnrecognizedUnionMembers: true,
72
- allowUnrecognizedEnumValues: true,
73
- breadcrumbsPrefix: ["response"],
74
- });
75
- if (parsedResponse.ok) {
76
- (_a = args.onMessage) === null || _a === void 0 ? void 0 : _a.call(args, parsedResponse.value);
77
- return;
78
- }
79
- const parsedWarning = yield serializers.ModelsWarning.parse(body, {
80
- unrecognizedObjectKeys: "passthrough",
81
- allowUnrecognizedUnionMembers: true,
82
- allowUnrecognizedEnumValues: true,
83
- breadcrumbsPrefix: ["response"],
84
- });
85
- if (parsedWarning.ok) {
86
- (_b = args.onWarning) === null || _b === void 0 ? void 0 : _b.call(args, parsedWarning.value);
87
- return;
88
- }
89
- const parsedError = yield serializers.ModelsError.parse(body, {
90
- unrecognizedObjectKeys: "passthrough",
91
- allowUnrecognizedUnionMembers: true,
92
- allowUnrecognizedEnumValues: true,
93
- breadcrumbsPrefix: ["response"],
94
- });
95
- if (parsedError.ok) {
96
- (_c = args.onError) === null || _c === void 0 ? void 0 : _c.call(args, parsedError.value);
97
- return;
98
- }
99
- }));
100
- websocket.addEventListener("close", () => {
101
- var _a;
102
- (_a = args.onClose) === null || _a === void 0 ? void 0 : _a.call(args);
47
+ const websocket = new ws_1.default(`wss://api.hume.ai/v0/stream/models`, {
48
+ headers: {
49
+ "X-Hume-Api-Key": this._options.apiKey,
50
+ },
51
+ timeout: this._options.openTimeoutInSeconds,
52
+ });
53
+ websocket.addEventListener("open", (event) => {
54
+ var _a;
55
+ (_a = args.onOpen) === null || _a === void 0 ? void 0 : _a.call(args, event);
56
+ });
57
+ websocket.addEventListener("error", (e) => {
58
+ var _a;
59
+ (_a = args.onError) === null || _a === void 0 ? void 0 : _a.call(args, {
60
+ code: e.type,
61
+ error: e.message,
103
62
  });
104
- return new Promise((resolve) => {
105
- if (websocket && websocket.readyState !== websocket.OPEN) {
106
- websocket.addEventListener("open", () => {
107
- resolve(new StreamSocket_1.StreamSocket({
108
- websocket,
109
- streamWindowMs: args.streamWindowMs,
110
- config: args.config,
111
- }));
112
- });
113
- }
114
- else {
115
- resolve(new StreamSocket_1.StreamSocket({
116
- websocket,
117
- streamWindowMs: args.streamWindowMs,
118
- config: args.config,
119
- }));
120
- }
63
+ });
64
+ websocket.addEventListener("message", ({ data }) => __awaiter(this, void 0, void 0, function* () {
65
+ parse(data, {
66
+ onMessage: args.onMessage,
67
+ onWarning: args.onWarning,
68
+ onError: args.onError,
121
69
  });
70
+ }));
71
+ websocket.addEventListener("close", (event) => {
72
+ var _a;
73
+ (_a = args.onClose) === null || _a === void 0 ? void 0 : _a.call(args, event);
74
+ });
75
+ return new StreamSocket_1.StreamSocket({
76
+ websocket,
77
+ streamWindowMs: args.streamWindowMs,
78
+ config: args.config,
122
79
  });
123
80
  }
124
81
  }
125
82
  exports.HumeStreamingClient = HumeStreamingClient;
83
+ function parse(data, args = {}) {
84
+ var _a, _b, _c;
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ const message = JSON.parse(data);
87
+ const parsedResponse = yield serializers.ModelResponse.parse(message, {
88
+ unrecognizedObjectKeys: "passthrough",
89
+ allowUnrecognizedUnionMembers: true,
90
+ allowUnrecognizedEnumValues: true,
91
+ breadcrumbsPrefix: ["response"],
92
+ });
93
+ if (parsedResponse.ok) {
94
+ (_a = args.onMessage) === null || _a === void 0 ? void 0 : _a.call(args, parsedResponse.value);
95
+ return parsedResponse.value;
96
+ }
97
+ const parsedWarning = yield serializers.ModelsWarning.parse(message, {
98
+ unrecognizedObjectKeys: "passthrough",
99
+ allowUnrecognizedUnionMembers: true,
100
+ allowUnrecognizedEnumValues: true,
101
+ breadcrumbsPrefix: ["response"],
102
+ });
103
+ if (parsedWarning.ok) {
104
+ (_b = args.onWarning) === null || _b === void 0 ? void 0 : _b.call(args, parsedWarning.value);
105
+ return parsedWarning.value;
106
+ }
107
+ const parsedError = yield serializers.ModelsError.parse(message, {
108
+ unrecognizedObjectKeys: "passthrough",
109
+ allowUnrecognizedUnionMembers: true,
110
+ allowUnrecognizedEnumValues: true,
111
+ breadcrumbsPrefix: ["response"],
112
+ });
113
+ if (parsedError.ok) {
114
+ (_c = args.onError) === null || _c === void 0 ? void 0 : _c.call(args, parsedError.value);
115
+ return parsedError.value;
116
+ }
117
+ });
118
+ }
119
+ exports.parse = parse;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import WebSocket from "ws";
3
3
  import * as Hume from "../api";
4
+ import * as fs from "fs";
4
5
  export declare namespace StreamSocket {
5
6
  interface Args {
6
7
  websocket: WebSocket;
@@ -14,29 +15,16 @@ export declare class StreamSocket {
14
15
  private config;
15
16
  constructor({ websocket, config, streamWindowMs }: StreamSocket.Args);
16
17
  /**
17
- * Send a file on the `StreamSocket`
18
+ * Send file on the `StreamSocket`
18
19
  *
19
- * @param filepath Path to media file to send on socket connection
20
- * @param config List of model configurations.
21
- * If set these configurations will overwrite any configurations
22
- * set when initializing the `StreamSocket`
23
- */
24
- sendFile({ filepath, config, }: {
25
- filepath: string;
26
- config?: Hume.ModelConfig;
27
- }): Promise<void>;
28
- /**
29
- * Send raw bytes on the `StreamSocket`
30
- *
31
- * @param buffer Raw bytes of media to send on socket connection
32
- * @param config List of model configurations.
33
- * If set these configurations will overwrite any configurations
34
- * set when initializing the `StreamSocket`
20
+ * @param file A fs.ReadStream | File | Blob
21
+ * @param config This method is intended for use with a `LanguageConfig`.
22
+ * When the socket is configured for other modalities this method will fail.
35
23
  */
36
- sendBuffer({ buffer, config, }: {
37
- buffer: Buffer;
24
+ sendFile({ file, config, }: {
25
+ file: fs.ReadStream | Blob;
38
26
  config?: Hume.ModelConfig;
39
- }): void;
27
+ }): Promise<Hume.ModelResponse>;
40
28
  /**
41
29
  * Send text on the `StreamSocket`
42
30
  *
@@ -44,10 +32,10 @@ export declare class StreamSocket {
44
32
  * @param config This method is intended for use with a `LanguageConfig`.
45
33
  * When the socket is configured for other modalities this method will fail.
46
34
  */
47
- sendText({ text, config, }: {
35
+ sendText({ text, config }: {
48
36
  text: string;
49
37
  config?: Hume.ModelConfig;
50
- }): void;
38
+ }): Promise<Hume.ModelResponse>;
51
39
  /**
52
40
  * Send facemesh landmarks on the `StreamSocket`
53
41
  *
@@ -61,7 +49,7 @@ export declare class StreamSocket {
61
49
  sendFacemesh({ landmarks, config, }: {
62
50
  landmarks: number[][][];
63
51
  config?: Hume.ModelConfig;
64
- }): void;
52
+ }): Promise<Hume.ModelResponse>;
65
53
  /**
66
54
  *
67
55
  * Reset the streaming sliding window.
@@ -69,15 +57,17 @@ export declare class StreamSocket {
69
57
  * Call this method when some media has been fully processed and you want to continue using the same
70
58
  * streaming connection without leaking context across media samples.
71
59
  */
72
- reset(): void;
60
+ reset(): Promise<void>;
73
61
  /**
74
62
  *
75
63
  * Get details associated with the current streaming connection.
76
64
  *
77
65
  */
78
- getJobDetails(): void;
66
+ getJobDetails(): Promise<void>;
79
67
  /**
80
68
  * Closes the underlying socket.
81
69
  */
82
70
  close(): void;
71
+ private send;
72
+ private tillSocketOpen;
83
73
  }