@geheimgang188/fmod-service-api
Version:
FMOD service API
34 lines • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseMarkerMessage = parseMarkerMessage;
/**
* Parse a marker message from the fmod-service pub/sub socket.
* Format: `marker:event:/Path/To/Event;MarkerName;t=1777581122145`
* The marker name may contain semicolons; the timestamp is always the last `;t=<digits>` segment.
*/
function parseMarkerMessage(message) {
const prefix = 'marker:';
if (!message.startsWith(prefix)) {
return undefined;
}
const body = message.substring(prefix.length);
// Timestamp is always at the end: ;t=<digits>
const timestampMatch = body.match(/;t=(\d+)$/);
if (!timestampMatch) {
return undefined;
}
const timestamp = parseInt(timestampMatch[1], 10);
const beforeTimestamp = body.substring(0, timestampMatch.index);
// The event path starts with "event:/" and ends at the first semicolon
const firstSemicolon = beforeTimestamp.indexOf(';');
if (firstSemicolon === -1) {
return undefined;
}
const event = beforeTimestamp.substring(0, firstSemicolon);
const marker = beforeTimestamp.substring(firstSemicolon + 1);
if (!event.startsWith('event:/') || marker.length === 0) {
return undefined;
}
return { event, marker, timestamp };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL21hcmtlci1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0EsZ0RBK0JDO0FBcENEOzs7O0dBSUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBRSxPQUFlO0lBQy9DLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUN6QixJQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBRSxNQUFNLENBQUUsRUFBRyxDQUFDO1FBQ2xDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUUsQ0FBQztJQUVoRCw4Q0FBOEM7SUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBRSxXQUFXLENBQUUsQ0FBQztJQUNqRCxJQUFLLENBQUMsY0FBYyxFQUFHLENBQUM7UUFDcEIsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQUM7SUFDcEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUFDLEVBQUUsY0FBYyxDQUFDLEtBQU0sQ0FBRSxDQUFDO0lBRW5FLHVFQUF1RTtJQUN2RSxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFFLEdBQUcsQ0FBRSxDQUFDO0lBQ3RELElBQUssY0FBYyxLQUFLLENBQUMsQ0FBQyxFQUFHLENBQUM7UUFDMUIsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBRSxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUUsY0FBYyxHQUFHLENBQUMsQ0FBRSxDQUFDO0lBRS9ELElBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFFLFNBQVMsQ0FBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHLENBQUM7UUFDMUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3hDLENBQUMifQ==