@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.mjs
CHANGED
|
@@ -23799,6 +23799,126 @@ var log = {
|
|
|
23799
23799
|
error: (message, ...args) => logger.error(message, ...args)
|
|
23800
23800
|
};
|
|
23801
23801
|
|
|
23802
|
+
// src/sesame-wire-protocol.ts
|
|
23803
|
+
var FrameType = sesame.v1.wire.FrameType;
|
|
23804
|
+
var DataType = sesame.v1.wire.DataType;
|
|
23805
|
+
var FrameHeader = sesame.v1.wire.FrameHeader;
|
|
23806
|
+
var MediaCodecData = sesame.v1.wire.MediaCodecData;
|
|
23807
|
+
var CodecType = sesame.v1.common.CodecType;
|
|
23808
|
+
function parseDataFrame(frame) {
|
|
23809
|
+
if (!frame.valid || !frame.header || !frame.payload) return null;
|
|
23810
|
+
if (frame.header.type !== sesame.v1.wire.FrameType.FRAME_TYPE_DATA) return null;
|
|
23811
|
+
const d = frame.header.data;
|
|
23812
|
+
if (!d) return null;
|
|
23813
|
+
const trackName = d.trackName ?? "";
|
|
23814
|
+
const payload = frame.payload;
|
|
23815
|
+
try {
|
|
23816
|
+
switch (d.dataType) {
|
|
23817
|
+
case sesame.v1.wire.DataType.DATA_TYPE_JSON: {
|
|
23818
|
+
const text = new TextDecoder().decode(payload);
|
|
23819
|
+
return { dataType: "json", trackName, json: JSON.parse(text) };
|
|
23820
|
+
}
|
|
23821
|
+
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_STATUS:
|
|
23822
|
+
return {
|
|
23823
|
+
dataType: "transport-status",
|
|
23824
|
+
trackName,
|
|
23825
|
+
event: sesame.v1.status.TransportEvent.decode(payload)
|
|
23826
|
+
};
|
|
23827
|
+
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_STATE:
|
|
23828
|
+
return {
|
|
23829
|
+
dataType: "audio-state",
|
|
23830
|
+
trackName,
|
|
23831
|
+
status: sesame.v1.audio.AudioMixerStatus.decode(payload)
|
|
23832
|
+
};
|
|
23833
|
+
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL:
|
|
23834
|
+
return {
|
|
23835
|
+
dataType: "transport-control",
|
|
23836
|
+
trackName,
|
|
23837
|
+
request: sesame.v1.sources.TransportControlRequest.decode(payload)
|
|
23838
|
+
};
|
|
23839
|
+
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL:
|
|
23840
|
+
return {
|
|
23841
|
+
dataType: "audio-control",
|
|
23842
|
+
trackName,
|
|
23843
|
+
request: sesame.v1.audio.AudioControlRequest.decode(payload)
|
|
23844
|
+
};
|
|
23845
|
+
case sesame.v1.wire.DataType.DATA_TYPE_BINARY:
|
|
23846
|
+
return { dataType: "binary", trackName, data: payload };
|
|
23847
|
+
default:
|
|
23848
|
+
return null;
|
|
23849
|
+
}
|
|
23850
|
+
} catch {
|
|
23851
|
+
return null;
|
|
23852
|
+
}
|
|
23853
|
+
}
|
|
23854
|
+
function buildAudioControlFrame(trackName, request) {
|
|
23855
|
+
const payload = sesame.v1.audio.AudioControlRequest.encode(request).finish();
|
|
23856
|
+
return WireProtocol.serialize(
|
|
23857
|
+
{
|
|
23858
|
+
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
23859
|
+
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL, trackName }
|
|
23860
|
+
},
|
|
23861
|
+
payload
|
|
23862
|
+
);
|
|
23863
|
+
}
|
|
23864
|
+
function buildTransportControlFrame(trackName, request) {
|
|
23865
|
+
const payload = sesame.v1.sources.TransportControlRequest.encode(request).finish();
|
|
23866
|
+
return WireProtocol.serialize(
|
|
23867
|
+
{
|
|
23868
|
+
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
23869
|
+
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL, trackName }
|
|
23870
|
+
},
|
|
23871
|
+
payload
|
|
23872
|
+
);
|
|
23873
|
+
}
|
|
23874
|
+
function buildBinaryDataFrame(trackName, payload) {
|
|
23875
|
+
return WireProtocol.serialize(
|
|
23876
|
+
{
|
|
23877
|
+
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
23878
|
+
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_BINARY, trackName }
|
|
23879
|
+
},
|
|
23880
|
+
payload
|
|
23881
|
+
);
|
|
23882
|
+
}
|
|
23883
|
+
var PREFIX_SIZE = 4;
|
|
23884
|
+
var WireProtocol = class {
|
|
23885
|
+
/**
|
|
23886
|
+
* Serialize a wire frame: 4-byte LE header_size + protobuf FrameHeader + payload.
|
|
23887
|
+
*/
|
|
23888
|
+
static serialize(header, payload) {
|
|
23889
|
+
const headerBytes = sesame.v1.wire.FrameHeader.encode(header).finish();
|
|
23890
|
+
const headerSize = headerBytes.length;
|
|
23891
|
+
const payloadSize = payload ? payload.length : 0;
|
|
23892
|
+
const total = PREFIX_SIZE + headerSize + payloadSize;
|
|
23893
|
+
const buffer = new Uint8Array(total);
|
|
23894
|
+
const view = new DataView(buffer.buffer);
|
|
23895
|
+
view.setUint32(0, headerSize, true);
|
|
23896
|
+
buffer.set(headerBytes, PREFIX_SIZE);
|
|
23897
|
+
if (payload && payloadSize > 0) {
|
|
23898
|
+
buffer.set(payload, PREFIX_SIZE + headerSize);
|
|
23899
|
+
}
|
|
23900
|
+
return buffer;
|
|
23901
|
+
}
|
|
23902
|
+
/**
|
|
23903
|
+
* Parse an incoming wire frame.
|
|
23904
|
+
*/
|
|
23905
|
+
static parse(data) {
|
|
23906
|
+
const result = { valid: false, header: null, payload: null };
|
|
23907
|
+
if (!data || data.length < PREFIX_SIZE) return result;
|
|
23908
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
23909
|
+
const headerSize = view.getUint32(0, true);
|
|
23910
|
+
if (data.length < PREFIX_SIZE + headerSize) return result;
|
|
23911
|
+
try {
|
|
23912
|
+
const headerBytes = data.subarray(PREFIX_SIZE, PREFIX_SIZE + headerSize);
|
|
23913
|
+
result.header = sesame.v1.wire.FrameHeader.decode(headerBytes);
|
|
23914
|
+
result.payload = data.subarray(PREFIX_SIZE + headerSize);
|
|
23915
|
+
result.valid = true;
|
|
23916
|
+
} catch {
|
|
23917
|
+
}
|
|
23918
|
+
return result;
|
|
23919
|
+
}
|
|
23920
|
+
};
|
|
23921
|
+
|
|
23802
23922
|
// src/rpc-client.ts
|
|
23803
23923
|
var RPCClient = class extends EventEmitter {
|
|
23804
23924
|
/**
|
|
@@ -23862,7 +23982,9 @@ var RPCClient = class extends EventEmitter {
|
|
|
23862
23982
|
throw new Error("No socket");
|
|
23863
23983
|
}
|
|
23864
23984
|
const data = sesame.v1.rpc.Message.encode(message).finish();
|
|
23865
|
-
|
|
23985
|
+
const header = { type: sesame.v1.wire.FrameType.FRAME_TYPE_RPC };
|
|
23986
|
+
const frame = WireProtocol.serialize(header, data);
|
|
23987
|
+
await this.connection.send(frame);
|
|
23866
23988
|
};
|
|
23867
23989
|
this.errorHandler = (error) => {
|
|
23868
23990
|
if (this.listenerCount("error") > 0) {
|
|
@@ -23971,128 +24093,6 @@ var RPCClient = class extends EventEmitter {
|
|
|
23971
24093
|
|
|
23972
24094
|
// src/sesame-connection.ts
|
|
23973
24095
|
import { EventEmitter as EventEmitter2 } from "events";
|
|
23974
|
-
|
|
23975
|
-
// src/sesame-wire-protocol.ts
|
|
23976
|
-
var FrameType = sesame.v1.wire.FrameType;
|
|
23977
|
-
var DataType = sesame.v1.wire.DataType;
|
|
23978
|
-
var FrameHeader = sesame.v1.wire.FrameHeader;
|
|
23979
|
-
var MediaCodecData = sesame.v1.wire.MediaCodecData;
|
|
23980
|
-
var CodecType = sesame.v1.common.CodecType;
|
|
23981
|
-
function parseDataFrame(frame) {
|
|
23982
|
-
if (!frame.valid || !frame.header || !frame.payload) return null;
|
|
23983
|
-
if (frame.header.type !== sesame.v1.wire.FrameType.FRAME_TYPE_DATA) return null;
|
|
23984
|
-
const d = frame.header.data;
|
|
23985
|
-
if (!d) return null;
|
|
23986
|
-
const trackName = d.trackName ?? "";
|
|
23987
|
-
const payload = frame.payload;
|
|
23988
|
-
try {
|
|
23989
|
-
switch (d.dataType) {
|
|
23990
|
-
case sesame.v1.wire.DataType.DATA_TYPE_JSON: {
|
|
23991
|
-
const text = new TextDecoder().decode(payload);
|
|
23992
|
-
return { dataType: "json", trackName, json: JSON.parse(text) };
|
|
23993
|
-
}
|
|
23994
|
-
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_STATUS:
|
|
23995
|
-
return {
|
|
23996
|
-
dataType: "transport-status",
|
|
23997
|
-
trackName,
|
|
23998
|
-
event: sesame.v1.status.TransportEvent.decode(payload)
|
|
23999
|
-
};
|
|
24000
|
-
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_STATE:
|
|
24001
|
-
return {
|
|
24002
|
-
dataType: "audio-state",
|
|
24003
|
-
trackName,
|
|
24004
|
-
status: sesame.v1.audio.AudioMixerStatus.decode(payload)
|
|
24005
|
-
};
|
|
24006
|
-
case sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL:
|
|
24007
|
-
return {
|
|
24008
|
-
dataType: "transport-control",
|
|
24009
|
-
trackName,
|
|
24010
|
-
request: sesame.v1.sources.TransportControlRequest.decode(payload)
|
|
24011
|
-
};
|
|
24012
|
-
case sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL:
|
|
24013
|
-
return {
|
|
24014
|
-
dataType: "audio-control",
|
|
24015
|
-
trackName,
|
|
24016
|
-
request: sesame.v1.audio.AudioControlRequest.decode(payload)
|
|
24017
|
-
};
|
|
24018
|
-
case sesame.v1.wire.DataType.DATA_TYPE_BINARY:
|
|
24019
|
-
return { dataType: "binary", trackName, data: payload };
|
|
24020
|
-
default:
|
|
24021
|
-
return null;
|
|
24022
|
-
}
|
|
24023
|
-
} catch {
|
|
24024
|
-
return null;
|
|
24025
|
-
}
|
|
24026
|
-
}
|
|
24027
|
-
function buildAudioControlFrame(trackName, request) {
|
|
24028
|
-
const payload = sesame.v1.audio.AudioControlRequest.encode(request).finish();
|
|
24029
|
-
return WireProtocol.serialize(
|
|
24030
|
-
{
|
|
24031
|
-
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24032
|
-
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_AUDIO_CONTROL, trackName }
|
|
24033
|
-
},
|
|
24034
|
-
payload
|
|
24035
|
-
);
|
|
24036
|
-
}
|
|
24037
|
-
function buildTransportControlFrame(trackName, request) {
|
|
24038
|
-
const payload = sesame.v1.sources.TransportControlRequest.encode(request).finish();
|
|
24039
|
-
return WireProtocol.serialize(
|
|
24040
|
-
{
|
|
24041
|
-
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24042
|
-
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_TRANSPORT_CONTROL, trackName }
|
|
24043
|
-
},
|
|
24044
|
-
payload
|
|
24045
|
-
);
|
|
24046
|
-
}
|
|
24047
|
-
function buildBinaryDataFrame(trackName, payload) {
|
|
24048
|
-
return WireProtocol.serialize(
|
|
24049
|
-
{
|
|
24050
|
-
type: sesame.v1.wire.FrameType.FRAME_TYPE_DATA,
|
|
24051
|
-
data: { dataType: sesame.v1.wire.DataType.DATA_TYPE_BINARY, trackName }
|
|
24052
|
-
},
|
|
24053
|
-
payload
|
|
24054
|
-
);
|
|
24055
|
-
}
|
|
24056
|
-
var PREFIX_SIZE = 4;
|
|
24057
|
-
var WireProtocol = class {
|
|
24058
|
-
/**
|
|
24059
|
-
* Serialize a wire frame: 4-byte LE header_size + protobuf FrameHeader + payload.
|
|
24060
|
-
*/
|
|
24061
|
-
static serialize(header, payload) {
|
|
24062
|
-
const headerBytes = sesame.v1.wire.FrameHeader.encode(header).finish();
|
|
24063
|
-
const headerSize = headerBytes.length;
|
|
24064
|
-
const payloadSize = payload ? payload.length : 0;
|
|
24065
|
-
const total = PREFIX_SIZE + headerSize + payloadSize;
|
|
24066
|
-
const buffer = new Uint8Array(total);
|
|
24067
|
-
const view = new DataView(buffer.buffer);
|
|
24068
|
-
view.setUint32(0, headerSize, true);
|
|
24069
|
-
buffer.set(headerBytes, PREFIX_SIZE);
|
|
24070
|
-
if (payload && payloadSize > 0) {
|
|
24071
|
-
buffer.set(payload, PREFIX_SIZE + headerSize);
|
|
24072
|
-
}
|
|
24073
|
-
return buffer;
|
|
24074
|
-
}
|
|
24075
|
-
/**
|
|
24076
|
-
* Parse an incoming wire frame.
|
|
24077
|
-
*/
|
|
24078
|
-
static parse(data) {
|
|
24079
|
-
const result = { valid: false, header: null, payload: null };
|
|
24080
|
-
if (!data || data.length < PREFIX_SIZE) return result;
|
|
24081
|
-
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
24082
|
-
const headerSize = view.getUint32(0, true);
|
|
24083
|
-
if (data.length < PREFIX_SIZE + headerSize) return result;
|
|
24084
|
-
try {
|
|
24085
|
-
const headerBytes = data.subarray(PREFIX_SIZE, PREFIX_SIZE + headerSize);
|
|
24086
|
-
result.header = sesame.v1.wire.FrameHeader.decode(headerBytes);
|
|
24087
|
-
result.payload = data.subarray(PREFIX_SIZE + headerSize);
|
|
24088
|
-
result.valid = true;
|
|
24089
|
-
} catch {
|
|
24090
|
-
}
|
|
24091
|
-
return result;
|
|
24092
|
-
}
|
|
24093
|
-
};
|
|
24094
|
-
|
|
24095
|
-
// src/sesame-connection.ts
|
|
24096
24096
|
var ConnectionState = /* @__PURE__ */ ((ConnectionState2) => {
|
|
24097
24097
|
ConnectionState2["Disconnected"] = "disconnected";
|
|
24098
24098
|
ConnectionState2["Connecting"] = "connecting";
|
|
@@ -24172,9 +24172,7 @@ var SesameConnection = class extends EventEmitter2 {
|
|
|
24172
24172
|
}
|
|
24173
24173
|
async send(data) {
|
|
24174
24174
|
if (!this.isConnected()) throw new Error("Not connected");
|
|
24175
|
-
|
|
24176
|
-
const frame = WireProtocol.serialize(header, data);
|
|
24177
|
-
this.socket.send(frame);
|
|
24175
|
+
this.socket.send(data);
|
|
24178
24176
|
return Promise.resolve();
|
|
24179
24177
|
}
|
|
24180
24178
|
async connect() {
|
|
@@ -24519,6 +24517,9 @@ var SesameClient = class extends EventEmitter3 {
|
|
|
24519
24517
|
await this.rpc.service.executeCommandList(cl.getCommandListMsg());
|
|
24520
24518
|
}
|
|
24521
24519
|
}
|
|
24520
|
+
async publishMetadata(nodeId, metadataId, payload, dataType = DataType.DATA_TYPE_JSON) {
|
|
24521
|
+
await this.rpc.service.publishMetadata({ nodeId, metadataId, payload, dataType });
|
|
24522
|
+
}
|
|
24522
24523
|
disconnect() {
|
|
24523
24524
|
this.conn.disconnect();
|
|
24524
24525
|
}
|