382 lines
11 KiB
JavaScript
382 lines
11 KiB
JavaScript
// modules are defined as an array
|
|
// [ module function, map of requires ]
|
|
//
|
|
// map of requires is short require name -> numeric require
|
|
//
|
|
// anything defined in a previous bundle is accessed via the
|
|
// orig method which is the require for previous bundles
|
|
|
|
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
|
|
/* eslint-disable no-undef */
|
|
var globalObject =
|
|
typeof globalThis !== 'undefined'
|
|
? globalThis
|
|
: typeof self !== 'undefined'
|
|
? self
|
|
: typeof window !== 'undefined'
|
|
? window
|
|
: typeof global !== 'undefined'
|
|
? global
|
|
: {};
|
|
/* eslint-enable no-undef */
|
|
|
|
// Save the require from previous bundle to this closure if any
|
|
var previousRequire =
|
|
typeof globalObject[parcelRequireName] === 'function' &&
|
|
globalObject[parcelRequireName];
|
|
|
|
var cache = previousRequire.cache || {};
|
|
// Do not use `require` to prevent Webpack from trying to bundle this call
|
|
var nodeRequire =
|
|
typeof module !== 'undefined' &&
|
|
typeof module.require === 'function' &&
|
|
module.require.bind(module);
|
|
|
|
function newRequire(name, jumped) {
|
|
if (!cache[name]) {
|
|
if (!modules[name]) {
|
|
// if we cannot find the module within our internal map or
|
|
// cache jump to the current global require ie. the last bundle
|
|
// that was added to the page.
|
|
var currentRequire =
|
|
typeof globalObject[parcelRequireName] === 'function' &&
|
|
globalObject[parcelRequireName];
|
|
if (!jumped && currentRequire) {
|
|
return currentRequire(name, true);
|
|
}
|
|
|
|
// If there are other bundles on this page the require from the
|
|
// previous one is saved to 'previousRequire'. Repeat this as
|
|
// many times as there are bundles until the module is found or
|
|
// we exhaust the require chain.
|
|
if (previousRequire) {
|
|
return previousRequire(name, true);
|
|
}
|
|
|
|
// Try the node require function if it exists.
|
|
if (nodeRequire && typeof name === 'string') {
|
|
return nodeRequire(name);
|
|
}
|
|
|
|
var err = new Error("Cannot find module '" + name + "'");
|
|
err.code = 'MODULE_NOT_FOUND';
|
|
throw err;
|
|
}
|
|
|
|
localRequire.resolve = resolve;
|
|
localRequire.cache = {};
|
|
|
|
var module = (cache[name] = new newRequire.Module(name));
|
|
|
|
modules[name][0].call(
|
|
module.exports,
|
|
localRequire,
|
|
module,
|
|
module.exports,
|
|
this
|
|
);
|
|
}
|
|
|
|
return cache[name].exports;
|
|
|
|
function localRequire(x) {
|
|
var res = localRequire.resolve(x);
|
|
return res === false ? {} : newRequire(res);
|
|
}
|
|
|
|
function resolve(x) {
|
|
var id = modules[name][1][x];
|
|
return id != null ? id : x;
|
|
}
|
|
}
|
|
|
|
function Module(moduleName) {
|
|
this.id = moduleName;
|
|
this.bundle = newRequire;
|
|
this.exports = {};
|
|
}
|
|
|
|
newRequire.isParcelRequire = true;
|
|
newRequire.Module = Module;
|
|
newRequire.modules = modules;
|
|
newRequire.cache = cache;
|
|
newRequire.parent = previousRequire;
|
|
newRequire.register = function (id, exports) {
|
|
modules[id] = [
|
|
function (require, module) {
|
|
module.exports = exports;
|
|
},
|
|
{},
|
|
];
|
|
};
|
|
|
|
Object.defineProperty(newRequire, 'root', {
|
|
get: function () {
|
|
return globalObject[parcelRequireName];
|
|
},
|
|
});
|
|
|
|
globalObject[parcelRequireName] = newRequire;
|
|
|
|
for (var i = 0; i < entry.length; i++) {
|
|
newRequire(entry[i]);
|
|
}
|
|
|
|
if (mainEntry) {
|
|
// Expose entry point to Node, AMD or browser globals
|
|
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
|
|
var mainExports = newRequire(mainEntry);
|
|
|
|
// CommonJS
|
|
if (typeof exports === 'object' && typeof module !== 'undefined') {
|
|
module.exports = mainExports;
|
|
|
|
// RequireJS
|
|
} else if (typeof define === 'function' && define.amd) {
|
|
define(function () {
|
|
return mainExports;
|
|
});
|
|
|
|
// <script>
|
|
} else if (globalName) {
|
|
this[globalName] = mainExports;
|
|
}
|
|
}
|
|
})({"6snCa":[function(require,module,exports) {
|
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
|
parcelHelpers.defineInteropFlag(exports);
|
|
var _connection = require("./Connection");
|
|
var _eventPool = require("./EventPool");
|
|
var _eventPoolDefault = parcelHelpers.interopDefault(_eventPool);
|
|
var _room = require("./Room");
|
|
var _roomDefault = parcelHelpers.interopDefault(_room);
|
|
var _wstsprotocol = require("./WSTSProtocol");
|
|
var _wstsprotocolDefault = parcelHelpers.interopDefault(_wstsprotocol);
|
|
class WSTS {
|
|
rooms = new Map();
|
|
constructor(options){
|
|
this.server = new (0, _connection.Connection)(options);
|
|
this.server.connect();
|
|
this.WSTSProtocol = new (0, _wstsprotocolDefault.default)(this);
|
|
this.EventPooling = new (0, _eventPoolDefault.default)(this);
|
|
}
|
|
room(options) {
|
|
let room = new (0, _roomDefault.default)(this);
|
|
room.setRoomOptions(options);
|
|
return room;
|
|
}
|
|
}
|
|
exports.default = WSTS;
|
|
|
|
},{"./Connection":"dzYK1","@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE","./WSTSProtocol":"3kvWC","./EventPool":"37Faq","./Room":"7qlv2"}],"dzYK1":[function(require,module,exports) {
|
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
|
parcelHelpers.defineInteropFlag(exports);
|
|
parcelHelpers.export(exports, "Connection", ()=>Connection);
|
|
class Connection {
|
|
autoPair = false;
|
|
connected = false;
|
|
constructor(options){
|
|
this.endpoint = new URL(options.endpoint);
|
|
this.autoPair = options.autoPair || false;
|
|
}
|
|
connect() {
|
|
this.ws = new WebSocket(this.endpoint.href);
|
|
this.addWSEvents();
|
|
}
|
|
disconnect() {
|
|
this.ws.close();
|
|
}
|
|
addWSEvents() {
|
|
this.ws.addEventListener("open", ()=>this.eventOpen());
|
|
this.ws.addEventListener("close", ()=>this.eventClose());
|
|
this.ws.addEventListener("error", ()=>this.eventError());
|
|
this.ws.addEventListener("message", ({ data })=>this.eventMessage(data));
|
|
}
|
|
eventOpen() {
|
|
this.connected = true;
|
|
for (const callback of this.activeConnectionEvent)callback(void 0);
|
|
}
|
|
eventClose() {
|
|
this.connected = false;
|
|
}
|
|
eventError() {
|
|
this.connected = false;
|
|
}
|
|
recaivePackEvent = [];
|
|
onRecaivePack(func) {
|
|
this.recaivePackEvent.push(func);
|
|
}
|
|
activeConnectionEvent = [];
|
|
onActive(func) {
|
|
if (this.connected) func();
|
|
else this.activeConnectionEvent.push(func);
|
|
}
|
|
eventMessage(data) {
|
|
if (typeof data == "string") for (const callback of this.recaivePackEvent)callback(JSON.parse(data));
|
|
}
|
|
tranferToServer(data) {
|
|
if (this.connected) this.ws.send(JSON.stringify(data));
|
|
}
|
|
}
|
|
|
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"i1YYE":[function(require,module,exports) {
|
|
exports.interopDefault = function(a) {
|
|
return a && a.__esModule ? a : {
|
|
default: a
|
|
};
|
|
};
|
|
exports.defineInteropFlag = function(a) {
|
|
Object.defineProperty(a, "__esModule", {
|
|
value: true
|
|
});
|
|
};
|
|
exports.exportAll = function(source, dest) {
|
|
Object.keys(source).forEach(function(key) {
|
|
if (key === "default" || key === "__esModule" || dest.hasOwnProperty(key)) return;
|
|
Object.defineProperty(dest, key, {
|
|
enumerable: true,
|
|
get: function() {
|
|
return source[key];
|
|
}
|
|
});
|
|
});
|
|
return dest;
|
|
};
|
|
exports.export = function(dest, destName, get) {
|
|
Object.defineProperty(dest, destName, {
|
|
enumerable: true,
|
|
get: get
|
|
});
|
|
};
|
|
|
|
},{}],"3kvWC":[function(require,module,exports) {
|
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
|
parcelHelpers.defineInteropFlag(exports);
|
|
class WSTSProtocol {
|
|
constructor(wsts){
|
|
this.wsts = wsts;
|
|
this.addListener();
|
|
}
|
|
addListener() {
|
|
this.wsts.server?.onRecaivePack((pack)=>{
|
|
this.PackAnalyze(pack);
|
|
});
|
|
}
|
|
SendRaw(pack) {
|
|
this.wsts.server.tranferToServer(pack);
|
|
}
|
|
SendOnly(pack) {
|
|
this.wsts.server.tranferToServer([
|
|
pack,
|
|
"R"
|
|
]);
|
|
}
|
|
SendRequest(pack, id) {
|
|
this.wsts.server.tranferToServer([
|
|
pack,
|
|
id,
|
|
"R"
|
|
]);
|
|
}
|
|
StartStream(pack, id) {
|
|
this.wsts.server.tranferToServer([
|
|
pack,
|
|
id,
|
|
"S"
|
|
]);
|
|
}
|
|
PackAnalyze(data) {
|
|
let [payload, id, action] = JSON.parse(data);
|
|
if (typeof id === "number") {
|
|
let callback = this.wsts.EventPooling.events.get(id);
|
|
if (callback) {
|
|
callback[0](payload, action);
|
|
switch(action){
|
|
case "E":
|
|
this.wsts.EventPooling.events.delete(id);
|
|
break;
|
|
case "S":
|
|
default:
|
|
break;
|
|
}
|
|
} else console.warn("Missing event sended from server");
|
|
} else {
|
|
let signals = this.wsts.EventPooling.signals.get(id);
|
|
if (signals) for (const callback1 of signals)callback1(payload);
|
|
else console.warn("Missing event sended from server");
|
|
}
|
|
}
|
|
}
|
|
exports.default = WSTSProtocol;
|
|
|
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"37Faq":[function(require,module,exports) {
|
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
|
parcelHelpers.defineInteropFlag(exports);
|
|
class EventPool {
|
|
events = new Map();
|
|
signals = new Map();
|
|
count = 0;
|
|
constructor(wsts){
|
|
this.wsts = wsts;
|
|
}
|
|
request(msg) {
|
|
return new Promise((ok, rej)=>{
|
|
let id = ++this.count;
|
|
this.wsts.WSTSProtocol.SendRequest(msg, id);
|
|
this.events.set(id, [
|
|
(data)=>{
|
|
ok(data);
|
|
},
|
|
(data)=>{
|
|
rej(data);
|
|
}
|
|
]);
|
|
});
|
|
}
|
|
stream(msg, callback) {
|
|
let id = ++this.count;
|
|
this.wsts.WSTSProtocol.StartStream(msg, id);
|
|
this.events.set(id, [
|
|
(data)=>{
|
|
callback(data);
|
|
},
|
|
()=>{}
|
|
]);
|
|
}
|
|
signal(event, callback) {
|
|
let T = this.signals.get(event);
|
|
if (!T) this.signals.set(event, [
|
|
callback
|
|
]);
|
|
else T.push(callback);
|
|
}
|
|
}
|
|
exports.default = EventPool;
|
|
|
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"7qlv2":[function(require,module,exports) {
|
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
|
parcelHelpers.defineInteropFlag(exports);
|
|
class Room {
|
|
events = {};
|
|
constructor(wsts){
|
|
this.wsts = wsts;
|
|
}
|
|
setRoomOptions(options) {
|
|
this.options = options;
|
|
}
|
|
emit(eventName, ...args) {
|
|
if (this.events[eventName]) for (const callback of this.events[eventName])callback(...args);
|
|
}
|
|
on(eventName, callback) {
|
|
if (this.events[eventName]) this.events[eventName].push(callback);
|
|
else this.events[eventName] = [
|
|
callback
|
|
];
|
|
}
|
|
}
|
|
exports.default = Room;
|
|
|
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}]},["6snCa"], "6snCa", "parcelRequiref9d4")
|
|
|
|
//# sourceMappingURL=index.js.map
|