@arcware-cloud/pixelstreaming-websdk
Version:
WebSDK for easy implementation of pixel streaming with Arcware Cloud Services. Heavily based on the '@epicgames-ps' library.
1,115 lines (1,094 loc) • 3.23 MB
JavaScript
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 7099:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "EventEmitter": () => (/* binding */ EventEmitter)
/* harmony export */ });
// Copyright Epic Games, Inc. All Rights Reserved.
// To match NodeJS' EventEmitter syntax without downstream code changes we need to use `any`.
// This means we need to disable linting `any` checks on this file.
//
/* eslint-disable @typescript-eslint/no-unsafe-argument */
class PixelStreamingEventListener {
constructor(callback) {
this._args = [];
this._callback = callback;
}
handleEvent(_evt) {
this._callback(...this._args);
// Reset storage of args.
this._args = [];
}
setArgs(...args) {
this._args = args;
}
}
/**
* A feature-limited, but _mostly_ drop-in replacement for Node's EventEmitter type that is implemented using EventTarget.
*
* For those unfamiliar with Node's EventEmitter, here is some info from the official docs:
*
* [In NodeJS] all objects that emit events are instances of the `EventEmitter` class. These
* objects expose an `eventEmitter.on()` function that allows one or more
* functions to be attached to named events emitted by the object. Typically,
* event names are camel-cased strings but any valid JavaScript property key
* can be used.
*
* When the `EventEmitter` object emits an event, all of the functions attached
* to that specific event are called _synchronously_. Any values returned by the
* called listeners are _ignored_ and discarded.
*
* The following example shows a simple `EventEmitter` instance with a single
* listener. The `eventEmitter.on()` method is used to register listeners, while
* the `eventEmitter.emit()` method is used to trigger the event.
*
* ```js
* import { EventEmitter } from 'node:events';
*
* class MyEmitter extends EventEmitter {}
*
* const myEmitter = new MyEmitter();
* myEmitter.on('event', () => {
* console.log('an event occurred!');
* });
* myEmitter.emit('event');
* ```
*/
class EventEmitter extends EventTarget {
constructor() {
super();
this._eventListeners = new Map();
}
removeListenerInternal(eventName, listener) {
if (this._eventListeners.has(eventName)) {
const listeners = this._eventListeners.get(eventName);
if (listeners === undefined) {
return this;
}
for (let i = 0; i < listeners.length; ++i) {
const eventPair = listeners[i];
if (eventPair.callback === listener) {
// Remove from event target
super.removeEventListener(eventName, eventPair.eventListenerWrapper);
// Remove from our internal map
listeners.splice(i, 1);
break;
}
}
}
return this;
}
/**
* Alias for `emitter.on(eventName, listener)`.
*/
addListener(eventName, listener) {
return this.on(eventName, listener);
}
/**
* Adds the `listener` function to the end of the listeners array for the event
* named `eventName`.
*
* ```js
* server.on('connection', (stream) => {
* console.log('someone connected!');
* });
* ```
*
* Returns a reference to the `EventEmitter`, so that calls can be chained.
*
* @param eventName - The name of the event.
* @param listener - The callback function
*/
on(eventName, listener) {
var _a;
// Wrap our normal JS function in a event listener interface
// so we can use it with event target.
const eventListenerWrapper = new PixelStreamingEventListener(listener);
super.addEventListener(eventName, eventListenerWrapper);
// Store the event listener/function pair for later removal.
if (!this._eventListeners.has(eventName)) {
this._eventListeners.set(eventName, new Array());
}
(_a = this._eventListeners
.get(eventName)) === null || _a === void 0 ? void 0 : _a.push({ callback: listener, eventListenerWrapper: eventListenerWrapper });
return this;
}
/**
* Adds a **one-time** `listener` function for the event named `eventName`. The
* next time `eventName` is triggered, this listener is removed and then invoked.
*
* ```js
* server.once('connection', (stream) => {
* console.log('Ah, we have our first user!');
* });
* ```
*
* Returns a reference to the `EventEmitter`, so that calls can be chained.
* @param eventName - The name of the event.
* @param listener - The callback function
*/
once(eventName, listener) {
var _a;
// Pass options so this event callback is only called once
const eventListenerOpts = { once: true };
// Wrap our normal JS function in a event listener interface
// so we can use it with event target and remove it from event target when this function completes.
const eventListenerWrapper = new PixelStreamingEventListener((...args) => {
listener(args);
this.removeListenerInternal(eventName, listener);
});
super.addEventListener(eventName, eventListenerWrapper, eventListenerOpts);
// Store the event listener/function pair for later removal.
if (!this._eventListeners.has(eventName)) {
this._eventListeners.set(eventName, new Array());
}
(_a = this._eventListeners
.get(eventName)) === null || _a === void 0 ? void 0 : _a.push({ callback: listener, eventListenerWrapper: eventListenerWrapper });
return this;
}
/**
* Removes the specified `listener` from this EventEmitter.
*
* ```js
* const callback = (stream) => {
* console.log('someone connected!');
* };
* server.on('connection', callback);
* // ...
* server.removeListener('connection', callback);
* ```
* Returns a reference to the `EventEmitter`, so that calls can be chained.
*/
removeListener(eventName, listener) {
this.removeListenerInternal(eventName, listener);
return this;
}
/**
* Alias for `emitter.removeListener()`.
*/
off(eventName, listener) {
return this.removeListener(eventName, listener);
}
/**
* Removes all listeners, or those of the specified `eventName`.
* Returns a reference to the `EventEmitter`, so that calls can be chained.
*/
removeAllListeners(eventName) {
if (this._eventListeners.has(eventName)) {
const listeners = this._eventListeners.get(eventName);
if (listeners === undefined) {
return this;
}
// Remove each event listener from the event target
for (const listenerPair of listeners) {
this.removeEventListener(eventName, listenerPair.eventListenerWrapper);
}
// Remove all event listeners mapped to this event from our internal map
this._eventListeners.delete(eventName);
}
return this;
}
/**
* Synchronously calls each of the listeners registered for the event named `eventName`, in the order they were registered, passing the supplied arguments
* to each.
*
* Returns `true` if the event had listeners, `false` otherwise.
*
* ```js
* import { EventEmitter } from 'node:events';
* const myEmitter = new EventEmitter();
*
* // First listener
* myEmitter.on('event', function firstListener() {
* console.log('Helloooo! first listener');
* });
* // Second listener
* myEmitter.on('event', function secondListener(arg1, arg2) {
* console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
* });
* // Third listener
* myEmitter.on('event', function thirdListener(...args) {
* const parameters = args.join(', ');
* console.log(`event with parameters ${parameters} in third listener`);
* });
*
* console.log(myEmitter.listeners('event'));
*
* myEmitter.emit('event', 1, 2, 3, 4, 5);
*
* // Prints:
* // [
* // [Function: firstListener],
* // [Function: secondListener],
* // [Function: thirdListener]
* // ]
* // Helloooo! first listener
* // event with parameters 1, 2 in second listener
* // event with parameters 1, 2, 3, 4, 5 in third listener
* ```
*/
emit(eventName, ...args) {
if (this._eventListeners.has(eventName)) {
const listeners = this._eventListeners.get(eventName);
if (listeners === undefined) {
return false;
}
// Ensure each of our listeners have the args the callback injected
for (const listenerPair of listeners) {
listenerPair.eventListenerWrapper.setArgs(...args);
}
// Fire off the actual event
super.dispatchEvent(new Event(eventName));
return true;
}
return false;
}
}
//# sourceMappingURL=EventEmitter.js.map
/***/ }),
/***/ 7800:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "LogLevel": () => (/* binding */ LogLevel),
/* harmony export */ "Logger": () => (/* binding */ Logger),
/* harmony export */ "LoggerContext": () => (/* binding */ LoggerContext),
/* harmony export */ "LoggerType": () => (/* binding */ LoggerType),
/* harmony export */ "overrideLogger": () => (/* binding */ overrideLogger)
/* harmony export */ });
// Copyright Epic Games, Inc. All Rights Reserved.
var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["Disabled"] = 0] = "Disabled";
LogLevel[LogLevel["Error"] = 1] = "Error";
LogLevel[LogLevel["Warning"] = 2] = "Warning";
LogLevel[LogLevel["Info"] = 3] = "Info";
LogLevel[LogLevel["Debug"] = 4] = "Debug";
})(LogLevel || (LogLevel = {}));
/**
* The global context for the logger configuration.
* This cannot be stored statically in the Logger class because we sometimes have multiple execution
* contexts, such as stats reporting. Instead we store the logger config context on the window object
* to be shared with any Logger instances.
*/
class LoggerContext {
constructor() {
this.logLevel = LogLevel.Debug;
this.includeStack = true;
}
}
function overrideLogger(logger) {
Logger = logger;
}
/**
* A basic console logger utilized by the Pixel Streaming frontend to allow
* logging to the browser console.
*/
class LoggerType {
/**
* Set the log verbosity level
*/
InitLogging(logLevel, includeStack) {
this.ValidateContext();
this.context.logLevel = logLevel;
this.context.includeStack = includeStack;
}
/**
* Logging output for debugging
* @param message - the message to be logged
*/
Debug(message) {
this.ValidateContext();
if (this.context.logLevel >= LogLevel.Debug) {
this.CommonLog('Debug', message);
}
}
/**
* Basic logging output for standard messages
* @param message - the message to be logged
*/
Info(message) {
this.ValidateContext();
if (this.context.logLevel >= LogLevel.Info) {
this.CommonLog('Info', message);
}
}
/**
* Logging for warnings
* @param message - the message to be logged
*/
Warning(message) {
this.ValidateContext();
if (this.context.logLevel >= LogLevel.Warning) {
this.CommonLog('Warning', message);
}
}
/**
* Error logging
* @param message - the message to be logged
*/
Error(message) {
this.ValidateContext();
if (this.context.logLevel >= LogLevel.Error) {
this.CommonLog('Error', message);
}
}
/**
* The common log function that all other log functions call to.
* @param level - the level of this log message.
* @param stack - an optional stack trace string from where the log message was called.
* @param message - the message to be logged.
*/
CommonLog(level, message) {
let logMessage = `[${level}] - ${message}`;
if (this.context.includeStack) {
logMessage += `\nStack: ${this.GetStackTrace()}`;
}
if (level === 'Error') {
console.error(logMessage);
}
else if (level === 'Warning') {
console.warn(logMessage);
}
else {
console.log(logMessage);
}
}
/**
* Captures the stack and returns it
* @returns the current stack
*/
GetStackTrace() {
const error = new Error();
let formattedStack = 'No Stack Available for this browser';
// format the error
if (error.stack) {
formattedStack = error.stack.toString().replace(/Error/g, '');
}
return formattedStack;
}
/**
* Since there can be multiple execution contexts, (stats reporting and some webxr logging comes from
* different execution contexts we can end up with multiple static Logger instances. Here we try to
* work around it by storing the context on the window object.
*/
ValidateContext() {
if (!this.context) {
if (typeof window == 'undefined' || !window) {
// no window object so we can only store a local context.
this.context = new LoggerContext();
}
else if (!window.loggerContext) {
this.context = new LoggerContext();
window.loggerContext = this.context;
}
else {
this.context = window.loggerContext;
}
}
}
}
let Logger = new LoggerType();
//# sourceMappingURL=Logger.js.map
/***/ }),
/***/ 3665:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "createMessage": () => (/* binding */ createMessage),
/* harmony export */ "validateMessage": () => (/* binding */ validateMessage)
/* harmony export */ });
/* harmony import */ var _Logger_Logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7800);
/* harmony import */ var _message_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2366);
/**
* A helper for creating signalling messages. Takes in optional given parameters and
* includes them in a message object with the 'type' field set properly for the message
* type supplied.
* @param messageType - A message type from MessageRegistry that indicates the type of message to create.
* @param params - An optional object whose fields are added to the newly created message.
* @returns The resulting message object.
*/
function createMessage(messageType, params) {
const message = messageType.create();
message.type = messageType.typeName;
if (params) {
messageType.mergePartial(message, params);
}
return message;
}
/**
* Tests that the supplied message is valid. That is contains all expected fields and
* doesn't contain any unknown fields.
* @param msg - The message object to test.
* @returns The message type from MessageRegistry of the supplied message object if it's valid, or null if invalid.
*/
function validateMessage(msg) {
let valid = true;
if (!msg.type) {
_Logger_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.Error(`Parsed message has no type. Rejected. ${JSON.stringify(msg)}`);
return null;
}
const messageType = _message_registry__WEBPACK_IMPORTED_MODULE_1__.MessageRegistry[msg.type];
if (!messageType) {
_Logger_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.Error(`Message is of an unknown type: "${msg.type}". Rejected.`);
return null;
}
if (messageType.fields) {
for (const field of messageType.fields) {
if (!field.opt) {
if (!Object.prototype.hasOwnProperty.call(msg, field.name)) {
_Logger_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.Error(`Message "${msg.type}"" is missing required field "${field.name}". Rejected.`);
valid = false;
}
}
}
}
for (const fieldName in msg) {
const found = messageType.fields.find((field) => field.name === fieldName);
if (!found) {
_Logger_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.Error(`Message "${msg.type}" contains unknown field "${fieldName}". Rejected.`);
valid = false;
}
}
return valid ? messageType : null;
}
//# sourceMappingURL=message_helpers.js.map
/***/ }),
/***/ 2366:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "MessageRegistry": () => (/* binding */ MessageRegistry)
/* harmony export */ });
/* harmony import */ var _signalling_messages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7610);
/**
* A map of all the supported signalling messages in the Pixel Streaming
* signalling protocol. This allows mapping of signalling message names
* to actual message types.
*/
const MessageRegistry = {
answer: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.answer,
config: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.config,
disconnectPlayer: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.disconnectPlayer,
endpointId: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.endpointId,
endpointIdConfirm: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.endpointIdConfirm,
iceCandidate: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.iceCandidate,
identify: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.identify,
listStreamers: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.listStreamers,
offer: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.offer,
ping: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.ping,
playerConnected: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.playerConnected,
playerCount: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.playerCount,
playerDisconnected: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.playerDisconnected,
pong: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.pong,
stats: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.stats,
streamerDisconnected: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.streamerDisconnected,
streamerList: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.streamerList,
subscribe: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.subscribe,
unsubscribe: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.unsubscribe,
layerPreference: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.layerPreference,
dataChannelRequest: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.dataChannelRequest,
peerDataChannels: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.peerDataChannels,
peerDataChannelsReady: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.peerDataChannelsReady,
streamerDataChannels: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.streamerDataChannels,
startStreaming: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.startStreaming,
stopStreaming: _signalling_messages__WEBPACK_IMPORTED_MODULE_0__.stopStreaming
};
//# sourceMappingURL=message_registry.js.map
/***/ }),
/***/ 7610:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "answer": () => (/* binding */ answer),
/* harmony export */ "base_message": () => (/* binding */ base_message),
/* harmony export */ "config": () => (/* binding */ config),
/* harmony export */ "dataChannelRequest": () => (/* binding */ dataChannelRequest),
/* harmony export */ "disconnectPlayer": () => (/* binding */ disconnectPlayer),
/* harmony export */ "endpointId": () => (/* binding */ endpointId),
/* harmony export */ "endpointIdConfirm": () => (/* binding */ endpointIdConfirm),
/* harmony export */ "iceCandidate": () => (/* binding */ iceCandidate),
/* harmony export */ "iceCandidateData": () => (/* binding */ iceCandidateData),
/* harmony export */ "identify": () => (/* binding */ identify),
/* harmony export */ "layerPreference": () => (/* binding */ layerPreference),
/* harmony export */ "listStreamers": () => (/* binding */ listStreamers),
/* harmony export */ "offer": () => (/* binding */ offer),
/* harmony export */ "peerConnectionOptions": () => (/* binding */ peerConnectionOptions),
/* harmony export */ "peerDataChannels": () => (/* binding */ peerDataChannels),
/* harmony export */ "peerDataChannelsReady": () => (/* binding */ peerDataChannelsReady),
/* harmony export */ "ping": () => (/* binding */ ping),
/* harmony export */ "playerConnected": () => (/* binding */ playerConnected),
/* harmony export */ "playerCount": () => (/* binding */ playerCount),
/* harmony export */ "playerDisconnected": () => (/* binding */ playerDisconnected),
/* harmony export */ "pong": () => (/* binding */ pong),
/* harmony export */ "startStreaming": () => (/* binding */ startStreaming),
/* harmony export */ "stats": () => (/* binding */ stats),
/* harmony export */ "stopStreaming": () => (/* binding */ stopStreaming),
/* harmony export */ "streamerDataChannels": () => (/* binding */ streamerDataChannels),
/* harmony export */ "streamerDisconnected": () => (/* binding */ streamerDisconnected),
/* harmony export */ "streamerIdChanged": () => (/* binding */ streamerIdChanged),
/* harmony export */ "streamerList": () => (/* binding */ streamerList),
/* harmony export */ "subscribe": () => (/* binding */ subscribe),
/* harmony export */ "subscribeFailed": () => (/* binding */ subscribeFailed),
/* harmony export */ "unsubscribe": () => (/* binding */ unsubscribe)
/* harmony export */ });
/* harmony import */ var _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(299);
/* harmony import */ var _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4548);
/* harmony import */ var _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
// @generated message type with reflection information, may provide speed optimized methods
class base_message$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("base_message", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message base_message
*/
const base_message = new base_message$Type();
// @generated message type with reflection information, may provide speed optimized methods
class peerConnectionOptions$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("peerConnectionOptions", []);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message peerConnectionOptions
*/
const peerConnectionOptions = new peerConnectionOptions$Type();
// @generated message type with reflection information, may provide speed optimized methods
class config$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("config", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "peerConnectionOptions", kind: "message", T: () => peerConnectionOptions },
{ no: 3, name: "protocolVersion", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
case /* peerConnectionOptions peerConnectionOptions */ 2:
message.peerConnectionOptions = peerConnectionOptions.internalBinaryRead(reader, reader.uint32(), options, message.peerConnectionOptions);
break;
case /* optional string protocolVersion */ 3:
message.protocolVersion = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
/* peerConnectionOptions peerConnectionOptions = 2; */
if (message.peerConnectionOptions)
peerConnectionOptions.internalBinaryWrite(message.peerConnectionOptions, writer.tag(2, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).fork(), options).join();
/* optional string protocolVersion = 3; */
if (message.protocolVersion !== undefined)
writer.tag(3, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.protocolVersion);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message config
*/
const config = new config$Type();
// @generated message type with reflection information, may provide speed optimized methods
class identify$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("identify", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message identify
*/
const identify = new identify$Type();
// @generated message type with reflection information, may provide speed optimized methods
class endpointId$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("endpointId", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 3, name: "protocolVersion", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
message.id = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
case /* string id */ 2:
message.id = reader.string();
break;
case /* optional string protocolVersion */ 3:
message.protocolVersion = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
/* string id = 2; */
if (message.id !== "")
writer.tag(2, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.id);
/* optional string protocolVersion = 3; */
if (message.protocolVersion !== undefined)
writer.tag(3, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.protocolVersion);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message endpointId
*/
const endpointId = new endpointId$Type();
// @generated message type with reflection information, may provide speed optimized methods
class endpointIdConfirm$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("endpointIdConfirm", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "committedId", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
message.committedId = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
case /* string committedId */ 2:
message.committedId = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
/* string committedId = 2; */
if (message.committedId !== "")
writer.tag(2, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.committedId);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message endpointIdConfirm
*/
const endpointIdConfirm = new endpointIdConfirm$Type();
// @generated message type with reflection information, may provide speed optimized methods
class streamerIdChanged$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("streamerIdChanged", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "newID", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
message.newID = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
case /* string newID */ 2:
message.newID = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
/* string newID = 2; */
if (message.newID !== "")
writer.tag(2, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.newID);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message streamerIdChanged
*/
const streamerIdChanged = new streamerIdChanged$Type();
// @generated message type with reflection information, may provide speed optimized methods
class listStreamers$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("listStreamers", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message listStreamers
*/
const listStreamers = new listStreamers$Type();
// @generated message type with reflection information, may provide speed optimized methods
class streamerList$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("streamerList", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "ids", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
message.ids = [];
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
case /* repeated string ids */ 2:
message.ids.push(reader.string());
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
/* repeated string ids = 2; */
for (let i = 0; i < message.ids.length; i++)
writer.tag(2, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.ids[i]);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message streamerList
*/
const streamerList = new streamerList$Type();
// @generated message type with reflection information, may provide speed optimized methods
class subscribe$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("subscribe", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "streamerId", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
message.streamerId = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
case /* string streamerId */ 2:
message.streamerId = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message, writer, options) {
/* string type = 1; */
if (message.type !== "")
writer.tag(1, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.type);
/* string streamerId = 2; */
if (message.streamerId !== "")
writer.tag(2, _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.WireType.LengthDelimited).string(message.streamerId);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message subscribe
*/
const subscribe = new subscribe$Type();
// @generated message type with reflection information, may provide speed optimized methods
class unsubscribe$Type extends _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_0__.MessageType {
constructor() {
super("unsubscribe", [
{ no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value) {
const message = globalThis.Object.create((this.messagePrototype));
message.type = "";
if (value !== undefined)
(0,_protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_1__.reflectionMergePartial)(this, message, value);
return message;
}
internalBinaryRead(reader, length, options, target) {
let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string type */ 1:
message.type = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? _protobuf_ts_runtime__WEBPACK_IMPORTED_MODULE_2__.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return messag