{"version":3,"sources":["jsdelivr-header.js","/npm/hello-webrtc-server@0.0.1/dist/hello-webrtc-server.js"],"names":[],"mappings":"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","file":"/npm/hello-webrtc-server@0.0.1/dist/hello-webrtc-server.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/hello-webrtc-server@0.0.1/dist/hello-webrtc-server.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ws = require('ws');\n\nvar _ws2 = _interopRequireDefault(_ws);\n\nvar _level = require('level');\n\nvar _level2 = _interopRequireDefault(_level);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _queryString = require('query-string');\n\nvar _queryString2 = _interopRequireDefault(_queryString);\n\nvar _helloEvents = require('hello-events');\n\nvar _helloEvents2 = _interopRequireDefault(_helloEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar HelloWebRTCServer = function (_HelloEvents) {\n  _inherits(HelloWebRTCServer, _HelloEvents);\n\n  function HelloWebRTCServer(options, callback) {\n    _classCallCheck(this, HelloWebRTCServer);\n\n    var _this = _possibleConstructorReturn(this, (HelloWebRTCServer.__proto__ || Object.getPrototypeOf(HelloWebRTCServer)).call(this));\n\n    _this.server = new _ws2.default.Server(Object.assign({ port: 8686 }, options), callback);\n    _this.db = (0, _level2.default)(options.db ? options.db : __dirname + '/hello-webrtc.db');\n\n    _this.connections = [];\n\n    _this.server.on('connection', function (socket, request) {\n      function disconnect() {\n        _this.connections = _this.connections.filter(function (item) {\n          if (item.user === currentUser && item.socket.readyState === 1) {\n            item.socket.dispatch(item.signature, 'offline', null);\n            item.socket.close();\n            return false;\n          } else if (item.from === currentUser && item.socket.readyState === 1) {\n            item.socket.dispatch(item.signature, 'break', null);\n            item.socket.close();\n            return false;\n          } else if (item.to === currentUser && item.socket.readyState === 1) {\n            item.socket.dispatch(item.signature, 'break', null);\n            item.socket.close();\n            return false;\n          }\n          return true;\n        });\n      }\n\n      var urlobjs, query, params, token, currentUser, disconnect;\n      return Promise.resolve().then(function () {\n        urlobjs = _url2.default.parse(request.url);\n        query = urlobjs.query;\n        params = _queryString2.default.parse(query);\n        token = params.token;\n\n\n        if (!token) {\n          throw new Error('[HelloWebRTC Signaling Server:] token not exists.');\n        }\n\n        return _this.get('token:' + token + '.user');\n      }).then(function (_resp) {\n        currentUser = _resp;\n\n\n        if (!currentUser) {\n          return Promise.resolve().then(function () {\n            return _this.getUser(token);\n          }).then(function (_resp) {\n            currentUser = _resp;\n            return _this.set('token:' + token + '.user', currentUser);\n          });\n        }\n      }).then(function () {\n        disconnect = disconnect;\n        socket.dispatch = function (signature, type, data) {\n          if (socket.readyState > 1) {\n            disconnect();\n            return;\n          }\n          var message = JSON.stringify({ signature: signature, type: type, data: data });\n          socket.send(message);\n        };\n        socket.subscribe = function (event, callback) {\n          socket.on('message', function (message) {\n            var _JSON$parse = JSON.parse(message),\n                type = _JSON$parse.type,\n                data = _JSON$parse.data,\n                signature = _JSON$parse.signature;\n\n            _this.debug(JSON.stringify({ user: currentUser, signature: signature, type: type, data: data }, null, 4));\n            if (event === type) {\n              callback(signature, data);\n            }\n          });\n        };\n\n        socket.subscribe('online', function (signature) {\n          var info;\n\n          disconnect();\n          info = {\n            user: currentUser,\n            socket: socket,\n            signature: signature\n          };\n\n          _this.connections.push(info);\n          _this.trigger('online', info);\n        });\n        socket.subscribe('request', function (signature, _ref) {\n          var user = _ref.user,\n              room = _ref.room;\n\n          var node2 = _this.connections.find(function (item) {\n            return item.user === user;\n          });\n          if (!node2) {\n            var message = 'Not allowed when send request to ' + user + '.';\n            socket.dispatch(signature, 'error', { message: message });\n            _this.debug(message);\n            return;\n          }\n          node2.socket.dispatch(node2.signature, 'request', { user: currentUser, room: room });\n        });\n        socket.subscribe('response', function (signature, _ref2) {\n          var user = _ref2.user,\n              room = _ref2.room;\n\n          var node2 = _this.connections.find(function (item) {\n            return item.user === user;\n          });\n          if (!node2) {\n            var message = 'Not allowed when send response to ' + user + '.';\n            socket.dispatch(signature, 'error', { message: message });\n            _this.debug(message);\n            return;\n          }\n          node2.socket.dispatch(node2.signature, 'response', { user: currentUser, room: room });\n        });\n\n        socket.subscribe('create', function (signature, _ref3) {\n          var user, room, peer, info;\n          user = _ref3.user;\n          room = _ref3.room;\n          peer = _this.connections.find(function (item) {\n            return item.from === currentUser && item.to === user && item.room === room;\n          });\n\n          if (peer) {\n            peer.socket.dispatch(peer.signature, 'break', null);\n            _this.connections = _this.connections.filter(function (item) {\n              return item !== node;\n            });\n          }\n          info = {\n            from: currentUser,\n            to: user,\n            room: room,\n            signature: signature,\n            socket: socket\n          };\n\n          _this.connections.push(info);\n          _this.trigger('break', info);\n        });\n        socket.subscribe('icecandidate', function (signature, candidate) {\n          var peer, message;\n          peer = _this.connections.find(function (item) {\n            return item.signature === signature;\n          });\n\n          if (!peer) {\n            message = 'Not allowed when send icecandidate to ' + user + '.';\n\n            socket.dispatch(signature, 'error', { message: message });\n            _this.debug(message);\n          } else {\n            peer.socket.dispatch(peer.signature, 'icecandidate', candidate);\n          }\n        });\n        socket.subscribe('offer', function (signature, description) {\n          var peer, message;\n          peer = _this.connections.find(function (item) {\n            return item.signature === signature;\n          });\n\n          if (!peer) {\n            message = 'Not allowed when send offer to ' + user + '.';\n\n            socket.dispatch(signature, 'error', { message: message });\n            _this.debug(message);\n          } else {\n            peer.socket.dispatch(peer.signature, 'offer', description);\n          }\n        });\n        socket.subscribe('answer', function (signature, description) {\n          var peer, message;\n          peer = _this.connections.find(function (item) {\n            return item.signature === signature;\n          });\n\n          if (!peer) {\n            message = 'Not allowed when send answer to ' + user + '.';\n\n            socket.dispatch(signature, 'error', { message: message });\n            _this.debug(message);\n          } else {\n            peer.socket.dispatch(peer.signature, 'answer', description);\n          }\n        });\n      });\n    });\n    _this.server.on('error', function (e) {\n      _this.debug(e);\n    });\n    return _this;\n  }\n\n  _createClass(HelloWebRTCServer, [{\n    key: 'debug',\n    value: function debug() {\n      var _console;\n\n      var time = new Date();\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      (_console = console).log.apply(_console, ['[' + (time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds()) + ' HelloWebRTC:]'].concat(args));\n    }\n  }, {\n    key: 'set',\n    value: function set(key, value) {\n      var expires,\n          data,\n          input,\n          _this10 = this,\n          _arguments9 = arguments;\n\n      return Promise.resolve().then(function () {\n        expires = _arguments9.length > 2 && _arguments9[2] !== undefined ? _arguments9[2] : 0;\n        data = {\n          time: Date.now(),\n          expires: expires,\n          data: value\n        };\n        input = JSON.stringify(data);\n        return _this10.db.put(key, input);\n      }).then(function () {});\n    }\n  }, {\n    key: 'get',\n    value: function get(key) {\n      var data,\n          output,\n          _this11 = this;\n\n      return Promise.resolve().then(function () {\n        return Promise.resolve().then(function () {\n          return _this11.db.get(key);\n        }).then(function (_resp) {\n          data = _resp;\n\n          if (!data) {\n            return;\n          }\n          output = JSON.parse(data);\n          return _this11.remove(key);\n        }).then(function () {\n          if (output.expires && Date.now() > output.time + output.expires) {\n            return null;\n          }\n          return output.data;\n        }).catch(function (e) {\n          return;\n        });\n      }).then(function () {});\n    }\n  }, {\n    key: 'remove',\n    value: function remove(key) {\n      var _this12 = this;\n\n      return Promise.resolve().then(function () {\n        return _this12.db.del(key);\n      }).then(function () {});\n    }\n  }, {\n    key: 'getUser',\n    value: function getUser(token) {\n      return Promise.resolve(token);\n    }\n  }]);\n\n  return HelloWebRTCServer;\n}(_helloEvents2.default);\n\nmodule.exports = HelloWebRTCServer;\n"]}