@stinkycomputing/sesame-api-client 1.5.0-alpha.4 → 1.5.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.browser.mjs +127 -126
- package/dist/index.browser.mjs.map +3 -3
- package/dist/index.cjs +127 -126
- package/dist/index.cjs.map +3 -3
- package/dist/index.mjs +127 -126
- package/dist/index.mjs.map +3 -3
- package/dist/rpc-client.d.ts.map +1 -1
- package/dist/sesame-api-client.d.ts +1 -0
- package/dist/sesame-api-client.d.ts.map +1 -1
- package/dist/sesame-connection.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.browser.mjs
CHANGED
|
@@ -24194,6 +24194,126 @@ var log = {
|
|
|
24194
24194
|
error: (message, ...args) => logger.error(message, ...args)
|
|
24195
24195
|
};
|
|
24196
24196
|
|
|
24197
|
+
// src/sesame-wire-protocol.ts
|
|
24198
|
+
var FrameType = sesame.v1.wire.FrameType;
|
|
24199
|
+
var DataType = sesame.v1.wire.DataType;
|
|
24200
|
+
var FrameHeader = sesame.v1.wire.FrameHeader;
|
|
24201
|
+
var MediaCodecData = sesame.v1.wire.MediaCodecData;
|
|
24202
|
+
var CodecType = sesame.v1.common.CodecType;
|
|
24203
|
+
function parseDataFrame(frame) {
|
|
24204
|
+
if (!frame.valid || !frame.header || !frame.payload) return null;
|
|
24205
|
+
if (frame.header.type !== sesame.v1.wire.FrameType.FRAME_TYPE_DATA) return null;
|
|
24206
|
+
const d = frame.header.data;
|
|
24207
|
+
if (!d) return null;
|
|
24208
|
+
const trackName = d.trackName ?? "";
|
|
24209
|
+
const payload = frame.payload;
|
|
24210
|
+
try {
|
|
24211
|
+
switch (d.dataType) {
|
|
24212
|
+
case sesame.v1.wire.DataType.DATA_TYPE_JSON: {
|
|
24213
|
+
const text = new TextDecoder().decode(payload);
|
|
24214
|
+
return { dataType: "json", trackName, json: JSON.parse(text) };
|
|
24215
|
+
}
|
|
24216
|
+
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_STATUS:
|
|
24217
|
+
return {
|
|
24218
|
+
dataType: "transport-status",
|
|
24219
|
+
trackName,
|
|
24220
|
+
event: sesame.v1.status.TransportEvent.decode(payload)
|
|
24221
|
+
};
|
|
24222
|
+
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_STATE:
|
|
24223
|
+
return {
|
|
24224
|
+
dataType: "audio-state",
|
|
24225
|
+
trackName,
|
|
24226
|
+
status: sesame.v1.audio.AudioMixerStatus.decode(payload)
|
|
24227
|
+
};
|
|
24228
|
+
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL:
|
|
24229
|
+
return {
|
|
24230
|
+
dataType: "transport-control",
|
|
24231
|
+
trackName,
|
|
24232
|
+
request: sesame.v1.sources.TransportControlRequest.decode(payload)
|
|
24233
|
+
};
|
|
24234
|
+
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL:
|
|
24235
|
+
return {
|
|
24236
|
+
dataType: "audio-control",
|
|
24237
|
+
trackName,
|
|
24238
|
+
request: sesame.v1.audio.AudioControlRequest.decode(payload)
|
|
24239
|
+
};
|
|
24240
|
+
case sesame.v1.wire.DataType.DATA_TYPE_BINARY:
|
|
24241
|
+
return { dataType: "binary", trackName, data: payload };
|
|
24242
|
+
default:
|
|
24243
|
+
return null;
|
|
24244
|
+
}
|
|
24245
|
+
} catch {
|
|
24246
|
+
return null;
|
|
24247
|
+
}
|
|
24248
|
+
}
|
|
24249
|
+
function buildAudioControlFrame(trackName, request) {
|
|
24250
|
+
const payload = sesame.v1.audio.AudioControlRequest.encode(request).finish();
|
|
24251
|
+
return WireProtocol.serialize(
|
|
24252
|
+
{
|
|
24253
|
+
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24254
|
+
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL, trackName }
|
|
24255
|
+
},
|
|
24256
|
+
payload
|
|
24257
|
+
);
|
|
24258
|
+
}
|
|
24259
|
+
function buildTransportControlFrame(trackName, request) {
|
|
24260
|
+
const payload = sesame.v1.sources.TransportControlRequest.encode(request).finish();
|
|
24261
|
+
return WireProtocol.serialize(
|
|
24262
|
+
{
|
|
24263
|
+
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24264
|
+
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL, trackName }
|
|
24265
|
+
},
|
|
24266
|
+
payload
|
|
24267
|
+
);
|
|
24268
|
+
}
|
|
24269
|
+
function buildBinaryDataFrame(trackName, payload) {
|
|
24270
|
+
return WireProtocol.serialize(
|
|
24271
|
+
{
|
|
24272
|
+
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24273
|
+
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_BINARY, trackName }
|
|
24274
|
+
},
|
|
24275
|
+
payload
|
|
24276
|
+
);
|
|
24277
|
+
}
|
|
24278
|
+
var PREFIX_SIZE = 4;
|
|
24279
|
+
var WireProtocol = class {
|
|
24280
|
+
/**
|
|
24281
|
+
* Serialize a wire frame: 4-byte LE header_size + protobuf FrameHeader + payload.
|
|
24282
|
+
*/
|
|
24283
|
+
static serialize(header, payload) {
|
|
24284
|
+
const headerBytes = sesame.v1.wire.FrameHeader.encode(header).finish();
|
|
24285
|
+
const headerSize = headerBytes.length;
|
|
24286
|
+
const payloadSize = payload ? payload.length : 0;
|
|
24287
|
+
const total = PREFIX_SIZE + headerSize + payloadSize;
|
|
24288
|
+
const buffer = new Uint8Array(total);
|
|
24289
|
+
const view = new DataView(buffer.buffer);
|
|
24290
|
+
view.setUint32(0, headerSize, true);
|
|
24291
|
+
buffer.set(headerBytes, PREFIX_SIZE);
|
|
24292
|
+
if (payload && payloadSize > 0) {
|
|
24293
|
+
buffer.set(payload, PREFIX_SIZE + headerSize);
|
|
24294
|
+
}
|
|
24295
|
+
return buffer;
|
|
24296
|
+
}
|
|
24297
|
+
/**
|
|
24298
|
+
* Parse an incoming wire frame.
|
|
24299
|
+
*/
|
|
24300
|
+
static parse(data) {
|
|
24301
|
+
const result = { valid: false, header: null, payload: null };
|
|
24302
|
+
if (!data || data.length < PREFIX_SIZE) return result;
|
|
24303
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
24304
|
+
const headerSize = view.getUint32(0, true);
|
|
24305
|
+
if (data.length < PREFIX_SIZE + headerSize) return result;
|
|
24306
|
+
try {
|
|
24307
|
+
const headerBytes = data.subarray(PREFIX_SIZE, PREFIX_SIZE + headerSize);
|
|
24308
|
+
result.header = sesame.v1.wire.FrameHeader.decode(headerBytes);
|
|
24309
|
+
result.payload = data.subarray(PREFIX_SIZE + headerSize);
|
|
24310
|
+
result.valid = true;
|
|
24311
|
+
} catch {
|
|
24312
|
+
}
|
|
24313
|
+
return result;
|
|
24314
|
+
}
|
|
24315
|
+
};
|
|
24316
|
+
|
|
24197
24317
|
// src/rpc-client.ts
|
|
24198
24318
|
var RPCClient = class extends import_events.EventEmitter {
|
|
24199
24319
|
/**
|
|
@@ -24257,7 +24377,9 @@ var RPCClient = class extends import_events.EventEmitter {
|
|
|
24257
24377
|
throw new Error("No socket");
|
|
24258
24378
|
}
|
|
24259
24379
|
const data = sesame.v1.rpc.Message.encode(message).finish();
|
|
24260
|
-
|
|
24380
|
+
const header = { type: sesame.v1.wire.FrameType.FRAME_TYPE_RPC };
|
|
24381
|
+
const frame = WireProtocol.serialize(header, data);
|
|
24382
|
+
await this.connection.send(frame);
|
|
24261
24383
|
};
|
|
24262
24384
|
this.errorHandler = (error) => {
|
|
24263
24385
|
if (this.listenerCount("error") > 0) {
|
|
@@ -24366,128 +24488,6 @@ var RPCClient = class extends import_events.EventEmitter {
|
|
|
24366
24488
|
|
|
24367
24489
|
// src/sesame-connection.ts
|
|
24368
24490
|
var import_events2 = __toESM(require_events());
|
|
24369
|
-
|
|
24370
|
-
// src/sesame-wire-protocol.ts
|
|
24371
|
-
var FrameType = sesame.v1.wire.FrameType;
|
|
24372
|
-
var DataType = sesame.v1.wire.DataType;
|
|
24373
|
-
var FrameHeader = sesame.v1.wire.FrameHeader;
|
|
24374
|
-
var MediaCodecData = sesame.v1.wire.MediaCodecData;
|
|
24375
|
-
var CodecType = sesame.v1.common.CodecType;
|
|
24376
|
-
function parseDataFrame(frame) {
|
|
24377
|
-
if (!frame.valid || !frame.header || !frame.payload) return null;
|
|
24378
|
-
if (frame.header.type !== sesame.v1.wire.FrameType.FRAME_TYPE_DATA) return null;
|
|
24379
|
-
const d = frame.header.data;
|
|
24380
|
-
if (!d) return null;
|
|
24381
|
-
const trackName = d.trackName ?? "";
|
|
24382
|
-
const payload = frame.payload;
|
|
24383
|
-
try {
|
|
24384
|
-
switch (d.dataType) {
|
|
24385
|
-
case sesame.v1.wire.DataType.DATA_TYPE_JSON: {
|
|
24386
|
-
const text = new TextDecoder().decode(payload);
|
|
24387
|
-
return { dataType: "json", trackName, json: JSON.parse(text) };
|
|
24388
|
-
}
|
|
24389
|
-
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_STATUS:
|
|
24390
|
-
return {
|
|
24391
|
-
dataType: "transport-status",
|
|
24392
|
-
trackName,
|
|
24393
|
-
event: sesame.v1.status.TransportEvent.decode(payload)
|
|
24394
|
-
};
|
|
24395
|
-
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_STATE:
|
|
24396
|
-
return {
|
|
24397
|
-
dataType: "audio-state",
|
|
24398
|
-
trackName,
|
|
24399
|
-
status: sesame.v1.audio.AudioMixerStatus.decode(payload)
|
|
24400
|
-
};
|
|
24401
|
-
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL:
|
|
24402
|
-
return {
|
|
24403
|
-
dataType: "transport-control",
|
|
24404
|
-
trackName,
|
|
24405
|
-
request: sesame.v1.sources.TransportControlRequest.decode(payload)
|
|
24406
|
-
};
|
|
24407
|
-
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL:
|
|
24408
|
-
return {
|
|
24409
|
-
dataType: "audio-control",
|
|
24410
|
-
trackName,
|
|
24411
|
-
request: sesame.v1.audio.AudioControlRequest.decode(payload)
|
|
24412
|
-
};
|
|
24413
|
-
case sesame.v1.wire.DataType.DATA_TYPE_BINARY:
|
|
24414
|
-
return { dataType: "binary", trackName, data: payload };
|
|
24415
|
-
default:
|
|
24416
|
-
return null;
|
|
24417
|
-
}
|
|
24418
|
-
} catch {
|
|
24419
|
-
return null;
|
|
24420
|
-
}
|
|
24421
|
-
}
|
|
24422
|
-
function buildAudioControlFrame(trackName, request) {
|
|
24423
|
-
const payload = sesame.v1.audio.AudioControlRequest.encode(request).finish();
|
|
24424
|
-
return WireProtocol.serialize(
|
|
24425
|
-
{
|
|
24426
|
-
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24427
|
-
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL, trackName }
|
|
24428
|
-
},
|
|
24429
|
-
payload
|
|
24430
|
-
);
|
|
24431
|
-
}
|
|
24432
|
-
function buildTransportControlFrame(trackName, request) {
|
|
24433
|
-
const payload = sesame.v1.sources.TransportControlRequest.encode(request).finish();
|
|
24434
|
-
return WireProtocol.serialize(
|
|
24435
|
-
{
|
|
24436
|
-
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24437
|
-
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL, trackName }
|
|
24438
|
-
},
|
|
24439
|
-
payload
|
|
24440
|
-
);
|
|
24441
|
-
}
|
|
24442
|
-
function buildBinaryDataFrame(trackName, payload) {
|
|
24443
|
-
return WireProtocol.serialize(
|
|
24444
|
-
{
|
|
24445
|
-
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24446
|
-
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_BINARY, trackName }
|
|
24447
|
-
},
|
|
24448
|
-
payload
|
|
24449
|
-
);
|
|
24450
|
-
}
|
|
24451
|
-
var PREFIX_SIZE = 4;
|
|
24452
|
-
var WireProtocol = class {
|
|
24453
|
-
/**
|
|
24454
|
-
* Serialize a wire frame: 4-byte LE header_size + protobuf FrameHeader + payload.
|
|
24455
|
-
*/
|
|
24456
|
-
static serialize(header, payload) {
|
|
24457
|
-
const headerBytes = sesame.v1.wire.FrameHeader.encode(header).finish();
|
|
24458
|
-
const headerSize = headerBytes.length;
|
|
24459
|
-
const payloadSize = payload ? payload.length : 0;
|
|
24460
|
-
const total = PREFIX_SIZE + headerSize + payloadSize;
|
|
24461
|
-
const buffer = new Uint8Array(total);
|
|
24462
|
-
const view = new DataView(buffer.buffer);
|
|
24463
|
-
view.setUint32(0, headerSize, true);
|
|
24464
|
-
buffer.set(headerBytes, PREFIX_SIZE);
|
|
24465
|
-
if (payload && payloadSize > 0) {
|
|
24466
|
-
buffer.set(payload, PREFIX_SIZE + headerSize);
|
|
24467
|
-
}
|
|
24468
|
-
return buffer;
|
|
24469
|
-
}
|
|
24470
|
-
/**
|
|
24471
|
-
* Parse an incoming wire frame.
|
|
24472
|
-
*/
|
|
24473
|
-
static parse(data) {
|
|
24474
|
-
const result = { valid: false, header: null, payload: null };
|
|
24475
|
-
if (!data || data.length < PREFIX_SIZE) return result;
|
|
24476
|
-
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
24477
|
-
const headerSize = view.getUint32(0, true);
|
|
24478
|
-
if (data.length < PREFIX_SIZE + headerSize) return result;
|
|
24479
|
-
try {
|
|
24480
|
-
const headerBytes = data.subarray(PREFIX_SIZE, PREFIX_SIZE + headerSize);
|
|
24481
|
-
result.header = sesame.v1.wire.FrameHeader.decode(headerBytes);
|
|
24482
|
-
result.payload = data.subarray(PREFIX_SIZE + headerSize);
|
|
24483
|
-
result.valid = true;
|
|
24484
|
-
} catch {
|
|
24485
|
-
}
|
|
24486
|
-
return result;
|
|
24487
|
-
}
|
|
24488
|
-
};
|
|
24489
|
-
|
|
24490
|
-
// src/sesame-connection.ts
|
|
24491
24491
|
var ConnectionState = /* @__PURE__ */ ((ConnectionState2) => {
|
|
24492
24492
|
ConnectionState2["Disconnected"] = "disconnected";
|
|
24493
24493
|
ConnectionState2["Connecting"] = "connecting";
|
|
@@ -24567,9 +24567,7 @@ var SesameConnection = class extends import_events2.EventEmitter {
|
|
|
24567
24567
|
}
|
|
24568
24568
|
async send(data) {
|
|
24569
24569
|
if (!this.isConnected()) throw new Error("Not connected");
|
|
24570
|
-
|
|
24571
|
-
const frame = WireProtocol.serialize(header, data);
|
|
24572
|
-
this.socket.send(frame);
|
|
24570
|
+
this.socket.send(data);
|
|
24573
24571
|
return Promise.resolve();
|
|
24574
24572
|
}
|
|
24575
24573
|
async connect() {
|
|
@@ -24914,6 +24912,9 @@ var SesameClient = class extends import_events3.EventEmitter {
|
|
|
24914
24912
|
await this.rpc.service.executeCommandList(cl.getCommandListMsg());
|
|
24915
24913
|
}
|
|
24916
24914
|
}
|
|
24915
|
+
async publishMetadata(nodeId, metadataId, payload, dataType = DataType.DATA_TYPE_JSON) {
|
|
24916
|
+
await this.rpc.service.publishMetadata({ nodeId, metadataId, payload, dataType });
|
|
24917
|
+
}
|
|
24917
24918
|
disconnect() {
|
|
24918
24919
|
this.conn.disconnect();
|
|
24919
24920
|
}
|