diff --git a/server/dist/app.js b/server/dist/app.js index 51ffc75..4b10e4e 100644 --- a/server/dist/app.js +++ b/server/dist/app.js @@ -1111,6 +1111,16 @@ eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission /***/ }), +/***/ "./node_modules/cors/lib/index.js": +/*!****************************************!*\ + !*** ./node_modules/cors/lib/index.js ***! + \****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("(function () {\n\n 'use strict';\n\n var assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\n var vary = __webpack_require__(/*! vary */ \"./node_modules/vary/index.js\");\n\n var defaults = {\n origin: '*',\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n preflightContinue: false,\n optionsSuccessStatus: 204\n };\n\n function isString(s) {\n return typeof s === 'string' || s instanceof String;\n }\n\n function isOriginAllowed(origin, allowedOrigin) {\n if (Array.isArray(allowedOrigin)) {\n for (var i = 0; i < allowedOrigin.length; ++i) {\n if (isOriginAllowed(origin, allowedOrigin[i])) {\n return true;\n }\n }\n return false;\n } else if (isString(allowedOrigin)) {\n return origin === allowedOrigin;\n } else if (allowedOrigin instanceof RegExp) {\n return allowedOrigin.test(origin);\n } else {\n return !!allowedOrigin;\n }\n }\n\n function configureOrigin(options, req) {\n var requestOrigin = req.headers.origin,\n headers = [],\n isAllowed;\n\n if (!options.origin || options.origin === '*') {\n // allow any origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: '*'\n }]);\n } else if (isString(options.origin)) {\n // fixed origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: options.origin\n }]);\n headers.push([{\n key: 'Vary',\n value: 'Origin'\n }]);\n } else {\n isAllowed = isOriginAllowed(requestOrigin, options.origin);\n // reflect origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: isAllowed ? requestOrigin : false\n }]);\n headers.push([{\n key: 'Vary',\n value: 'Origin'\n }]);\n }\n\n return headers;\n }\n\n function configureMethods(options) {\n var methods = options.methods;\n if (methods.join) {\n methods = options.methods.join(','); // .methods is an array, so turn it into a string\n }\n return {\n key: 'Access-Control-Allow-Methods',\n value: methods\n };\n }\n\n function configureCredentials(options) {\n if (options.credentials === true) {\n return {\n key: 'Access-Control-Allow-Credentials',\n value: 'true'\n };\n }\n return null;\n }\n\n function configureAllowedHeaders(options, req) {\n var allowedHeaders = options.allowedHeaders || options.headers;\n var headers = [];\n\n if (!allowedHeaders) {\n allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers\n headers.push([{\n key: 'Vary',\n value: 'Access-Control-Request-Headers'\n }]);\n } else if (allowedHeaders.join) {\n allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string\n }\n if (allowedHeaders && allowedHeaders.length) {\n headers.push([{\n key: 'Access-Control-Allow-Headers',\n value: allowedHeaders\n }]);\n }\n\n return headers;\n }\n\n function configureExposedHeaders(options) {\n var headers = options.exposedHeaders;\n if (!headers) {\n return null;\n } else if (headers.join) {\n headers = headers.join(','); // .headers is an array, so turn it into a string\n }\n if (headers && headers.length) {\n return {\n key: 'Access-Control-Expose-Headers',\n value: headers\n };\n }\n return null;\n }\n\n function configureMaxAge(options) {\n var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()\n if (maxAge && maxAge.length) {\n return {\n key: 'Access-Control-Max-Age',\n value: maxAge\n };\n }\n return null;\n }\n\n function applyHeaders(headers, res) {\n for (var i = 0, n = headers.length; i < n; i++) {\n var header = headers[i];\n if (header) {\n if (Array.isArray(header)) {\n applyHeaders(header, res);\n } else if (header.key === 'Vary' && header.value) {\n vary(res, header.value);\n } else if (header.value) {\n res.setHeader(header.key, header.value);\n }\n }\n }\n }\n\n function cors(options, req, res, next) {\n var headers = [],\n method = req.method && req.method.toUpperCase && req.method.toUpperCase();\n\n if (method === 'OPTIONS') {\n // preflight\n headers.push(configureOrigin(options, req));\n headers.push(configureCredentials(options, req));\n headers.push(configureMethods(options, req));\n headers.push(configureAllowedHeaders(options, req));\n headers.push(configureMaxAge(options, req));\n headers.push(configureExposedHeaders(options, req));\n applyHeaders(headers, res);\n\n if (options.preflightContinue) {\n next();\n } else {\n // Safari (and potentially other browsers) need content-length 0,\n // for 204 or they just hang waiting for a body\n res.statusCode = options.optionsSuccessStatus;\n res.setHeader('Content-Length', '0');\n res.end();\n }\n } else {\n // actual response\n headers.push(configureOrigin(options, req));\n headers.push(configureCredentials(options, req));\n headers.push(configureExposedHeaders(options, req));\n applyHeaders(headers, res);\n next();\n }\n }\n\n function middlewareWrapper(o) {\n // if options are static (either via defaults or custom options passed in), wrap in a function\n var optionsCallback = null;\n if (typeof o === 'function') {\n optionsCallback = o;\n } else {\n optionsCallback = function (req, cb) {\n cb(null, o);\n };\n }\n\n return function corsMiddleware(req, res, next) {\n optionsCallback(req, function (err, options) {\n if (err) {\n next(err);\n } else {\n var corsOptions = assign({}, defaults, options);\n var originCallback = null;\n if (corsOptions.origin && typeof corsOptions.origin === 'function') {\n originCallback = corsOptions.origin;\n } else if (corsOptions.origin) {\n originCallback = function (origin, cb) {\n cb(null, corsOptions.origin);\n };\n }\n\n if (originCallback) {\n originCallback(req.headers.origin, function (err2, origin) {\n if (err2 || !origin) {\n next(err2);\n } else {\n corsOptions.origin = origin;\n cors(corsOptions, req, res, next);\n }\n });\n } else {\n next();\n }\n }\n });\n };\n }\n\n // can pass either an options hash, an options delegate, or nothing\n module.exports = middlewareWrapper;\n\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9EZWVtaXhTZXJ2ZXIvLi9ub2RlX21vZHVsZXMvY29ycy9saWIvaW5kZXguanM/ZTZkMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQSxlQUFlLG1CQUFPLENBQUMsNERBQWU7QUFDdEMsYUFBYSxtQkFBTyxDQUFDLDBDQUFNOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsMEJBQTBCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUU7QUFDckU7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29ycy9saWIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuXG4gICd1c2Ugc3RyaWN0JztcblxuICB2YXIgYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuICB2YXIgdmFyeSA9IHJlcXVpcmUoJ3ZhcnknKTtcblxuICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgb3JpZ2luOiAnKicsXG4gICAgbWV0aG9kczogJ0dFVCxIRUFELFBVVCxQQVRDSCxQT1NULERFTEVURScsXG4gICAgcHJlZmxpZ2h0Q29udGludWU6IGZhbHNlLFxuICAgIG9wdGlvbnNTdWNjZXNzU3RhdHVzOiAyMDRcbiAgfTtcblxuICBmdW5jdGlvbiBpc1N0cmluZyhzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBzID09PSAnc3RyaW5nJyB8fCBzIGluc3RhbmNlb2YgU3RyaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNPcmlnaW5BbGxvd2VkKG9yaWdpbiwgYWxsb3dlZE9yaWdpbikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFsbG93ZWRPcmlnaW4pKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbG93ZWRPcmlnaW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKGlzT3JpZ2luQWxsb3dlZChvcmlnaW4sIGFsbG93ZWRPcmlnaW5baV0pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGFsbG93ZWRPcmlnaW4pKSB7XG4gICAgICByZXR1cm4gb3JpZ2luID09PSBhbGxvd2VkT3JpZ2luO1xuICAgIH0gZWxzZSBpZiAoYWxsb3dlZE9yaWdpbiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIGFsbG93ZWRPcmlnaW4udGVzdChvcmlnaW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gISFhbGxvd2VkT3JpZ2luO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbmZpZ3VyZU9yaWdpbihvcHRpb25zLCByZXEpIHtcbiAgICB2YXIgcmVxdWVzdE9yaWdpbiA9IHJlcS5oZWFkZXJzLm9yaWdpbixcbiAgICAgIGhlYWRlcnMgPSBbXSxcbiAgICAgIGlzQWxsb3dlZDtcblxuICAgIGlmICghb3B0aW9ucy5vcmlnaW4gfHwgb3B0aW9ucy5vcmlnaW4gPT09ICcqJykge1xuICAgICAgLy8gYWxsb3cgYW55IG9yaWdpblxuICAgICAgaGVhZGVycy5wdXNoKFt7XG4gICAgICAgIGtleTogJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsXG4gICAgICAgIHZhbHVlOiAnKidcbiAgICAgIH1dKTtcbiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKG9wdGlvbnMub3JpZ2luKSkge1xuICAgICAgLy8gZml4ZWQgb3JpZ2luXG4gICAgICBoZWFkZXJzLnB1c2goW3tcbiAgICAgICAga2V5OiAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJyxcbiAgICAgICAgdmFsdWU6IG9wdGlvbnMub3JpZ2luXG4gICAgICB9XSk7XG4gICAgICBoZWFkZXJzLnB1c2goW3tcbiAgICAgICAga2V5OiAnVmFyeScsXG4gICAgICAgIHZhbHVlOiAnT3JpZ2luJ1xuICAgICAgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc0FsbG93ZWQgPSBpc09yaWdpbkFsbG93ZWQocmVxdWVzdE9yaWdpbiwgb3B0aW9ucy5vcmlnaW4pO1xuICAgICAgLy8gcmVmbGVjdCBvcmlnaW5cbiAgICAgIGhlYWRlcnMucHVzaChbe1xuICAgICAgICBrZXk6ICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLFxuICAgICAgICB2YWx1ZTogaXNBbGxvd2VkID8gcmVxdWVzdE9yaWdpbiA6IGZhbHNlXG4gICAgICB9XSk7XG4gICAgICBoZWFkZXJzLnB1c2goW3tcbiAgICAgICAga2V5OiAnVmFyeScsXG4gICAgICAgIHZhbHVlOiAnT3JpZ2luJ1xuICAgICAgfV0pO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgZnVuY3Rpb24gY29uZmlndXJlTWV0aG9kcyhvcHRpb25zKSB7XG4gICAgdmFyIG1ldGhvZHMgPSBvcHRpb25zLm1ldGhvZHM7XG4gICAgaWYgKG1ldGhvZHMuam9pbikge1xuICAgICAgbWV0aG9kcyA9IG9wdGlvbnMubWV0aG9kcy5qb2luKCcsJyk7IC8vIC5tZXRob2RzIGlzIGFuIGFycmF5LCBzbyB0dXJuIGl0IGludG8gYSBzdHJpbmdcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLFxuICAgICAgdmFsdWU6IG1ldGhvZHNcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gY29uZmlndXJlQ3JlZGVudGlhbHMob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmNyZWRlbnRpYWxzID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6ICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscycsXG4gICAgICAgIHZhbHVlOiAndHJ1ZSdcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gY29uZmlndXJlQWxsb3dlZEhlYWRlcnMob3B0aW9ucywgcmVxKSB7XG4gICAgdmFyIGFsbG93ZWRIZWFkZXJzID0gb3B0aW9ucy5hbGxvd2VkSGVhZGVycyB8fCBvcHRpb25zLmhlYWRlcnM7XG4gICAgdmFyIGhlYWRlcnMgPSBbXTtcblxuICAgIGlmICghYWxsb3dlZEhlYWRlcnMpIHtcbiAgICAgIGFsbG93ZWRIZWFkZXJzID0gcmVxLmhlYWRlcnNbJ2FjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycyddOyAvLyAuaGVhZGVycyB3YXNuJ3Qgc3BlY2lmaWVkLCBzbyByZWZsZWN0IHRoZSByZXF1ZXN0IGhlYWRlcnNcbiAgICAgIGhlYWRlcnMucHVzaChbe1xuICAgICAgICBrZXk6ICdWYXJ5JyxcbiAgICAgICAgdmFsdWU6ICdBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMnXG4gICAgICB9XSk7XG4gICAgfSBlbHNlIGlmIChhbGxvd2VkSGVhZGVycy5qb2luKSB7XG4gICAgICBhbGxvd2VkSGVhZGVycyA9IGFsbG93ZWRIZWFkZXJzLmpvaW4oJywnKTsgLy8gLmhlYWRlcnMgaXMgYW4gYXJyYXksIHNvIHR1cm4gaXQgaW50byBhIHN0cmluZ1xuICAgIH1cbiAgICBpZiAoYWxsb3dlZEhlYWRlcnMgJiYgYWxsb3dlZEhlYWRlcnMubGVuZ3RoKSB7XG4gICAgICBoZWFkZXJzLnB1c2goW3tcbiAgICAgICAga2V5OiAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsXG4gICAgICAgIHZhbHVlOiBhbGxvd2VkSGVhZGVyc1xuICAgICAgfV0pO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgZnVuY3Rpb24gY29uZmlndXJlRXhwb3NlZEhlYWRlcnMob3B0aW9ucykge1xuICAgIHZhciBoZWFkZXJzID0gb3B0aW9ucy5leHBvc2VkSGVhZGVycztcbiAgICBpZiAoIWhlYWRlcnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoaGVhZGVycy5qb2luKSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5qb2luKCcsJyk7IC8vIC5oZWFkZXJzIGlzIGFuIGFycmF5LCBzbyB0dXJuIGl0IGludG8gYSBzdHJpbmdcbiAgICB9XG4gICAgaWYgKGhlYWRlcnMgJiYgaGVhZGVycy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogJ0FjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzJyxcbiAgICAgICAgdmFsdWU6IGhlYWRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gY29uZmlndXJlTWF4QWdlKG9wdGlvbnMpIHtcbiAgICB2YXIgbWF4QWdlID0gKHR5cGVvZiBvcHRpb25zLm1heEFnZSA9PT0gJ251bWJlcicgfHwgb3B0aW9ucy5tYXhBZ2UpICYmIG9wdGlvbnMubWF4QWdlLnRvU3RyaW5nKClcbiAgICBpZiAobWF4QWdlICYmIG1heEFnZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogJ0FjY2Vzcy1Db250cm9sLU1heC1BZ2UnLFxuICAgICAgICB2YWx1ZTogbWF4QWdlXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5SGVhZGVycyhoZWFkZXJzLCByZXMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGhlYWRlcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICB2YXIgaGVhZGVyID0gaGVhZGVyc1tpXTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVyKSkge1xuICAgICAgICAgIGFwcGx5SGVhZGVycyhoZWFkZXIsIHJlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyLmtleSA9PT0gJ1ZhcnknICYmIGhlYWRlci52YWx1ZSkge1xuICAgICAgICAgIHZhcnkocmVzLCBoZWFkZXIudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhlYWRlci52YWx1ZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoaGVhZGVyLmtleSwgaGVhZGVyLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcnMob3B0aW9ucywgcmVxLCByZXMsIG5leHQpIHtcbiAgICB2YXIgaGVhZGVycyA9IFtdLFxuICAgICAgbWV0aG9kID0gcmVxLm1ldGhvZCAmJiByZXEubWV0aG9kLnRvVXBwZXJDYXNlICYmIHJlcS5tZXRob2QudG9VcHBlckNhc2UoKTtcblxuICAgIGlmIChtZXRob2QgPT09ICdPUFRJT05TJykge1xuICAgICAgLy8gcHJlZmxpZ2h0XG4gICAgICBoZWFkZXJzLnB1c2goY29uZmlndXJlT3JpZ2luKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgaGVhZGVycy5wdXNoKGNvbmZpZ3VyZUNyZWRlbnRpYWxzKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgaGVhZGVycy5wdXNoKGNvbmZpZ3VyZU1ldGhvZHMob3B0aW9ucywgcmVxKSk7XG4gICAgICBoZWFkZXJzLnB1c2goY29uZmlndXJlQWxsb3dlZEhlYWRlcnMob3B0aW9ucywgcmVxKSk7XG4gICAgICBoZWFkZXJzLnB1c2goY29uZmlndXJlTWF4QWdlKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgaGVhZGVycy5wdXNoKGNvbmZpZ3VyZUV4cG9zZWRIZWFkZXJzKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgYXBwbHlIZWFkZXJzKGhlYWRlcnMsIHJlcyk7XG5cbiAgICAgIGlmIChvcHRpb25zLnByZWZsaWdodENvbnRpbnVlKSB7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNhZmFyaSAoYW5kIHBvdGVudGlhbGx5IG90aGVyIGJyb3dzZXJzKSBuZWVkIGNvbnRlbnQtbGVuZ3RoIDAsXG4gICAgICAgIC8vICAgZm9yIDIwNCBvciB0aGV5IGp1c3QgaGFuZyB3YWl0aW5nIGZvciBhIGJvZHlcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSBvcHRpb25zLm9wdGlvbnNTdWNjZXNzU3RhdHVzO1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICcwJyk7XG4gICAgICAgIHJlcy5lbmQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYWN0dWFsIHJlc3BvbnNlXG4gICAgICBoZWFkZXJzLnB1c2goY29uZmlndXJlT3JpZ2luKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgaGVhZGVycy5wdXNoKGNvbmZpZ3VyZUNyZWRlbnRpYWxzKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgaGVhZGVycy5wdXNoKGNvbmZpZ3VyZUV4cG9zZWRIZWFkZXJzKG9wdGlvbnMsIHJlcSkpO1xuICAgICAgYXBwbHlIZWFkZXJzKGhlYWRlcnMsIHJlcyk7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWlkZGxld2FyZVdyYXBwZXIobykge1xuICAgIC8vIGlmIG9wdGlvbnMgYXJlIHN0YXRpYyAoZWl0aGVyIHZpYSBkZWZhdWx0cyBvciBjdXN0b20gb3B0aW9ucyBwYXNzZWQgaW4pLCB3cmFwIGluIGEgZnVuY3Rpb25cbiAgICB2YXIgb3B0aW9uc0NhbGxiYWNrID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIG8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9wdGlvbnNDYWxsYmFjayA9IG87XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnNDYWxsYmFjayA9IGZ1bmN0aW9uIChyZXEsIGNiKSB7XG4gICAgICAgIGNiKG51bGwsIG8pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY29yc01pZGRsZXdhcmUocmVxLCByZXMsIG5leHQpIHtcbiAgICAgIG9wdGlvbnNDYWxsYmFjayhyZXEsIGZ1bmN0aW9uIChlcnIsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIG5leHQoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgY29yc09wdGlvbnMgPSBhc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgICAgICAgICB2YXIgb3JpZ2luQ2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgIGlmIChjb3JzT3B0aW9ucy5vcmlnaW4gJiYgdHlwZW9mIGNvcnNPcHRpb25zLm9yaWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb3JpZ2luQ2FsbGJhY2sgPSBjb3JzT3B0aW9ucy5vcmlnaW47XG4gICAgICAgICAgfSBlbHNlIGlmIChjb3JzT3B0aW9ucy5vcmlnaW4pIHtcbiAgICAgICAgICAgIG9yaWdpbkNhbGxiYWNrID0gZnVuY3Rpb24gKG9yaWdpbiwgY2IpIHtcbiAgICAgICAgICAgICAgY2IobnVsbCwgY29yc09wdGlvbnMub3JpZ2luKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG9yaWdpbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBvcmlnaW5DYWxsYmFjayhyZXEuaGVhZGVycy5vcmlnaW4sIGZ1bmN0aW9uIChlcnIyLCBvcmlnaW4pIHtcbiAgICAgICAgICAgICAgaWYgKGVycjIgfHwgIW9yaWdpbikge1xuICAgICAgICAgICAgICAgIG5leHQoZXJyMik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29yc09wdGlvbnMub3JpZ2luID0gb3JpZ2luO1xuICAgICAgICAgICAgICAgIGNvcnMoY29yc09wdGlvbnMsIHJlcSwgcmVzLCBuZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICAvLyBjYW4gcGFzcyBlaXRoZXIgYW4gb3B0aW9ucyBoYXNoLCBhbiBvcHRpb25zIGRlbGVnYXRlLCBvciBub3RoaW5nXG4gIG1vZHVsZS5leHBvcnRzID0gbWlkZGxld2FyZVdyYXBwZXI7XG5cbn0oKSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/cors/lib/index.js\n"); + +/***/ }), + /***/ "./node_modules/debug/node_modules/ms/index.js": /*!*****************************************************!*\ !*** ./node_modules/debug/node_modules/ms/index.js ***! @@ -3619,6 +3629,17 @@ eval("var crypto = __webpack_require__(/*! crypto */ \"crypto\")\n\nfunction sha /***/ }), +/***/ "./node_modules/object-assign/index.js": +/*!*********************************************!*\ + !*** ./node_modules/object-assign/index.js ***! + \*********************************************/ +/***/ ((module) => { + +"use strict"; +eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9EZWVtaXhTZXJ2ZXIvLi9ub2RlX21vZHVsZXMvb2JqZWN0LWFzc2lnbi9pbmRleC5qcz8zMjBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixzQkFBc0I7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLG9CQUFvQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/object-assign/index.js\n"); + +/***/ }), + /***/ "./node_modules/on-finished/index.js": /*!*******************************************!*\ !*** ./node_modules/on-finished/index.js ***! @@ -9492,7 +9513,7 @@ eval("// generated by genversion\nmodule.exports = '4.0.0'\n//# sourceURL=[modul /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; -eval("\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nvar _a, _b;\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.wss = exports.getSettings = void 0;\r\nconst http_1 = __importDefault(__webpack_require__(/*! http */ \"http\"));\r\nconst express_1 = __importDefault(__webpack_require__(/*! express */ \"./node_modules/express/index.js\"));\r\nconst ws_1 = __webpack_require__(/*! ws */ \"./node_modules/ws/index.js\");\r\nconst yargs_1 = __importDefault(__webpack_require__(/*! yargs */ \"./node_modules/yargs/index.cjs\"));\r\nconst debug_1 = __importDefault(__webpack_require__(/*! debug */ \"./node_modules/debug/src/index.js\"));\r\nconst helpers_1 = __webpack_require__(/*! yargs/helpers */ \"./node_modules/yargs/helpers/index.js\");\r\nconst middlewares_1 = __webpack_require__(/*! ./middlewares */ \"./src/middlewares.ts\");\r\nconst routes_1 = __importDefault(__webpack_require__(/*! ./routes */ \"./src/routes/index.ts\"));\r\nconst port_1 = __webpack_require__(/*! ./helpers/port */ \"./src/helpers/port.ts\");\r\nconst server_callbacks_1 = __webpack_require__(/*! ./helpers/server-callbacks */ \"./src/helpers/server-callbacks.ts\");\r\nconst register_1 = __webpack_require__(/*! ./routes/api/register */ \"./src/routes/api/register.ts\");\r\nconst websocket_1 = __webpack_require__(/*! ./websocket */ \"./src/websocket/index.ts\");\r\nconst errors_1 = __webpack_require__(/*! ./helpers/errors */ \"./src/helpers/errors.ts\");\r\nvar main_1 = __webpack_require__(/*! ./main */ \"./src/main.ts\");\r\nObject.defineProperty(exports, \"getSettings\", ({ enumerable: true, get: function () { return main_1.getSettings; } }));\r\n// TODO: Remove type assertion while keeping correct types\r\nconst argv = yargs_1.default(helpers_1.hideBin(process.argv)).options({\r\n port: { type: 'string', default: '6595' },\r\n host: { type: 'string', default: '127.0.0.1' }\r\n}).argv;\r\nconst DEEMIX_SERVER_PORT = port_1.normalizePort((_a = process.env.DEEMIX_SERVER_PORT) !== null && _a !== void 0 ? _a : argv.port);\r\nconst DEEMIX_HOST = (_b = process.env.DEEMIX_HOST) !== null && _b !== void 0 ? _b : argv.host;\r\nconst debug = debug_1.default('deemix-gui:server');\r\nexports.wss = new ws_1.Server({ noServer: true });\r\nconst app = express_1.default();\r\nconst server = http_1.default.createServer(app);\r\n/* === Middlewares === */\r\nmiddlewares_1.registerMiddlewares(app);\r\n/* === Routes === */\r\napp.use('/', routes_1.default);\r\n/* === APIs === */\r\nregister_1.registerApis(app);\r\n/* === Config === */\r\napp.set('port', DEEMIX_SERVER_PORT);\r\n/* === Server port === */\r\nif (true) {\r\n server.listen({ port: DEEMIX_SERVER_PORT, host: DEEMIX_HOST });\r\n}\r\nwebsocket_1.registerWebsocket(exports.wss);\r\n/* === Server callbacks === */\r\napp.on('mount', a => {\r\n console.log(a);\r\n});\r\nserver.on('connect', () => {\r\n errors_1.consoleInfo('Server connected');\r\n});\r\nserver.on('upgrade', (request, socket, head) => {\r\n exports.wss.handleUpgrade(request, socket, head, socket => {\r\n exports.wss.emit('connection', socket, request);\r\n });\r\n});\r\nserver.on('error', server_callbacks_1.getErrorCb(DEEMIX_SERVER_PORT));\r\nserver.on('listening', server_callbacks_1.getListeningCb(server, debug));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9EZWVtaXhTZXJ2ZXIvLi9zcmMvYXBwLnRzPzA2NmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLHdFQUF1QjtBQUN2Qix5R0FBOEM7QUFDOUMseUVBQXVDO0FBQ3ZDLG9HQUF5QjtBQUN6Qix1R0FBNkI7QUFDN0Isb0dBQXVDO0FBRXZDLHVGQUFtRDtBQUVuRCwrRkFBa0M7QUFFbEMsa0ZBQThDO0FBQzlDLHNIQUF1RTtBQUN2RSxvR0FBb0Q7QUFDcEQsdUZBQStDO0FBRS9DLHdGQUE4QztBQUU5QyxnRUFBb0M7QUFBM0IsK0dBQVc7QUFFcEIsMERBQTBEO0FBQzFELE1BQU0sSUFBSSxHQUFHLGVBQUssQ0FBQyxpQkFBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNqRCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDekMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0NBQzlDLENBQUMsQ0FBQyxJQUFpQjtBQUVwQixNQUFNLGtCQUFrQixHQUFHLG9CQUFhLENBQUMsYUFBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQztBQUNyRixNQUFNLFdBQVcsR0FBRyxhQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsbUNBQUksSUFBSSxDQUFDLElBQUk7QUFFeEQsTUFBTSxLQUFLLEdBQUcsZUFBUyxDQUFDLG1CQUFtQixDQUFDO0FBQy9CLFdBQUcsR0FBRyxJQUFJLFdBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNuRCxNQUFNLEdBQUcsR0FBZ0IsaUJBQU8sRUFBRTtBQUNsQyxNQUFNLE1BQU0sR0FBRyxjQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztBQUVyQyx5QkFBeUI7QUFDekIsaUNBQW1CLENBQUMsR0FBRyxDQUFDO0FBRXhCLG9CQUFvQjtBQUNwQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxnQkFBVyxDQUFDO0FBRXpCLGtCQUFrQjtBQUNsQix1QkFBWSxDQUFDLEdBQUcsQ0FBQztBQUVqQixvQkFBb0I7QUFDcEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7QUFFbkMseUJBQXlCO0FBQ3pCLElBQUksSUFBK0IsRUFBRTtJQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztDQUM5RDtBQUVELDZCQUFpQixDQUFDLFdBQUcsQ0FBQztBQUV0Qiw4QkFBOEI7QUFDOUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDekIsb0JBQVcsQ0FBQyxrQkFBa0IsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDOUMsV0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtRQUNqRCxXQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQ3hDLENBQUMsQ0FBQztBQUNILENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLDZCQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNsRCxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxpQ0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyIsImZpbGUiOiIuL3NyYy9hcHAudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaHR0cCBmcm9tICdodHRwJ1xuaW1wb3J0IGV4cHJlc3MsIHsgQXBwbGljYXRpb24gfSBmcm9tICdleHByZXNzJ1xuaW1wb3J0IHsgU2VydmVyIGFzIFdzU2VydmVyIH0gZnJvbSAnd3MnXG5pbXBvcnQgeWFyZ3MgZnJvbSAneWFyZ3MnXG5pbXBvcnQgaW5pdERlYnVnIGZyb20gJ2RlYnVnJ1xuaW1wb3J0IHsgaGlkZUJpbiB9IGZyb20gJ3lhcmdzL2hlbHBlcnMnXG5cbmltcG9ydCB7IHJlZ2lzdGVyTWlkZGxld2FyZXMgfSBmcm9tICcuL21pZGRsZXdhcmVzJ1xuXG5pbXBvcnQgaW5kZXhSb3V0ZXIgZnJvbSAnLi9yb3V0ZXMnXG5cbmltcG9ydCB7IG5vcm1hbGl6ZVBvcnQgfSBmcm9tICcuL2hlbHBlcnMvcG9ydCdcbmltcG9ydCB7IGdldEVycm9yQ2IsIGdldExpc3RlbmluZ0NiIH0gZnJvbSAnLi9oZWxwZXJzL3NlcnZlci1jYWxsYmFja3MnXG5pbXBvcnQgeyByZWdpc3RlckFwaXMgfSBmcm9tICcuL3JvdXRlcy9hcGkvcmVnaXN0ZXInXG5pbXBvcnQgeyByZWdpc3RlcldlYnNvY2tldCB9IGZyb20gJy4vd2Vic29ja2V0J1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudHMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgY29uc29sZUluZm8gfSBmcm9tICcuL2hlbHBlcnMvZXJyb3JzJ1xuXG5leHBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gJy4vbWFpbidcblxuLy8gVE9ETzogUmVtb3ZlIHR5cGUgYXNzZXJ0aW9uIHdoaWxlIGtlZXBpbmcgY29ycmVjdCB0eXBlc1xuY29uc3QgYXJndiA9IHlhcmdzKGhpZGVCaW4ocHJvY2Vzcy5hcmd2KSkub3B0aW9ucyh7XG5cdHBvcnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICc2NTk1JyB9LFxuXHRob3N0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnMTI3LjAuMC4xJyB9XG59KS5hcmd2IGFzIEFyZ3VtZW50c1xuXG5jb25zdCBERUVNSVhfU0VSVkVSX1BPUlQgPSBub3JtYWxpemVQb3J0KHByb2Nlc3MuZW52LkRFRU1JWF9TRVJWRVJfUE9SVCA/PyBhcmd2LnBvcnQpXG5jb25zdCBERUVNSVhfSE9TVCA9IHByb2Nlc3MuZW52LkRFRU1JWF9IT1NUID8/IGFyZ3YuaG9zdFxuXG5jb25zdCBkZWJ1ZyA9IGluaXREZWJ1ZygnZGVlbWl4LWd1aTpzZXJ2ZXInKVxuZXhwb3J0IGNvbnN0IHdzcyA9IG5ldyBXc1NlcnZlcih7IG5vU2VydmVyOiB0cnVlIH0pXG5jb25zdCBhcHA6IEFwcGxpY2F0aW9uID0gZXhwcmVzcygpXG5jb25zdCBzZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhcHApXG5cbi8qID09PSBNaWRkbGV3YXJlcyA9PT0gKi9cbnJlZ2lzdGVyTWlkZGxld2FyZXMoYXBwKVxuXG4vKiA9PT0gUm91dGVzID09PSAqL1xuYXBwLnVzZSgnLycsIGluZGV4Um91dGVyKVxuXG4vKiA9PT0gQVBJcyA9PT0gKi9cbnJlZ2lzdGVyQXBpcyhhcHApXG5cbi8qID09PSBDb25maWcgPT09ICovXG5hcHAuc2V0KCdwb3J0JywgREVFTUlYX1NFUlZFUl9QT1JUKVxuXG4vKiA9PT0gU2VydmVyIHBvcnQgPT09ICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0Jykge1xuXHRzZXJ2ZXIubGlzdGVuKHsgcG9ydDogREVFTUlYX1NFUlZFUl9QT1JULCBob3N0OiBERUVNSVhfSE9TVCB9KVxufVxuXG5yZWdpc3RlcldlYnNvY2tldCh3c3MpXG5cbi8qID09PSBTZXJ2ZXIgY2FsbGJhY2tzID09PSAqL1xuYXBwLm9uKCdtb3VudCcsIGEgPT4ge1xuXHRjb25zb2xlLmxvZyhhKVxufSlcbnNlcnZlci5vbignY29ubmVjdCcsICgpID0+IHtcblx0Y29uc29sZUluZm8oJ1NlcnZlciBjb25uZWN0ZWQnKVxufSlcbnNlcnZlci5vbigndXBncmFkZScsIChyZXF1ZXN0LCBzb2NrZXQsIGhlYWQpID0+IHtcblx0d3NzLmhhbmRsZVVwZ3JhZGUocmVxdWVzdCwgc29ja2V0LCBoZWFkLCBzb2NrZXQgPT4ge1xuXHRcdHdzcy5lbWl0KCdjb25uZWN0aW9uJywgc29ja2V0LCByZXF1ZXN0KVxuXHR9KVxufSlcbnNlcnZlci5vbignZXJyb3InLCBnZXRFcnJvckNiKERFRU1JWF9TRVJWRVJfUE9SVCkpXG5zZXJ2ZXIub24oJ2xpc3RlbmluZycsIGdldExpc3RlbmluZ0NiKHNlcnZlciwgZGVidWcpKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/app.ts\n"); +eval("\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nvar _a, _b;\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.app = exports.wss = exports.getSettings = void 0;\r\nconst http_1 = __importDefault(__webpack_require__(/*! http */ \"http\"));\r\nconst express_1 = __importDefault(__webpack_require__(/*! express */ \"./node_modules/express/index.js\"));\r\nconst ws_1 = __webpack_require__(/*! ws */ \"./node_modules/ws/index.js\");\r\nconst yargs_1 = __importDefault(__webpack_require__(/*! yargs */ \"./node_modules/yargs/index.cjs\"));\r\nconst debug_1 = __importDefault(__webpack_require__(/*! debug */ \"./node_modules/debug/src/index.js\"));\r\nconst helpers_1 = __webpack_require__(/*! yargs/helpers */ \"./node_modules/yargs/helpers/index.js\");\r\nconst middlewares_1 = __webpack_require__(/*! ./middlewares */ \"./src/middlewares.ts\");\r\nconst routes_1 = __importDefault(__webpack_require__(/*! ./routes */ \"./src/routes/index.ts\"));\r\nconst port_1 = __webpack_require__(/*! ./helpers/port */ \"./src/helpers/port.ts\");\r\nconst server_callbacks_1 = __webpack_require__(/*! ./helpers/server-callbacks */ \"./src/helpers/server-callbacks.ts\");\r\nconst register_1 = __webpack_require__(/*! ./routes/api/register */ \"./src/routes/api/register.ts\");\r\nconst websocket_1 = __webpack_require__(/*! ./websocket */ \"./src/websocket/index.ts\");\r\nconst errors_1 = __webpack_require__(/*! ./helpers/errors */ \"./src/helpers/errors.ts\");\r\nvar main_1 = __webpack_require__(/*! ./main */ \"./src/main.ts\");\r\nObject.defineProperty(exports, \"getSettings\", ({ enumerable: true, get: function () { return main_1.getSettings; } }));\r\n// TODO: Remove type assertion while keeping correct types\r\nconst argv = yargs_1.default(helpers_1.hideBin(process.argv)).options({\r\n port: { type: 'string', default: '6595' },\r\n host: { type: 'string', default: '127.0.0.1' }\r\n}).argv;\r\nconst DEEMIX_SERVER_PORT = port_1.normalizePort((_a = process.env.DEEMIX_SERVER_PORT) !== null && _a !== void 0 ? _a : argv.port);\r\nconst DEEMIX_HOST = (_b = process.env.DEEMIX_HOST) !== null && _b !== void 0 ? _b : argv.host;\r\nconst debug = debug_1.default('deemix-gui:server');\r\nexports.wss = new ws_1.Server({ noServer: true });\r\nexports.app = express_1.default();\r\nconst server = http_1.default.createServer(exports.app);\r\n/* === Middlewares === */\r\nmiddlewares_1.registerMiddlewares(exports.app);\r\n/* === Routes === */\r\nexports.app.use('/', routes_1.default);\r\n/* === APIs === */\r\nregister_1.registerApis(exports.app);\r\n/* === Config === */\r\nexports.app.set('port', DEEMIX_SERVER_PORT);\r\n/* === Server port === */\r\nif (true) {\r\n server.listen({ port: DEEMIX_SERVER_PORT, host: DEEMIX_HOST });\r\n}\r\nwebsocket_1.registerWebsocket(exports.wss);\r\n/* === Server callbacks === */\r\nexports.app.on('mount', a => {\r\n console.log(a);\r\n});\r\nserver.on('connect', () => {\r\n errors_1.consoleInfo('Server connected');\r\n});\r\nserver.on('upgrade', (request, socket, head) => {\r\n exports.wss.handleUpgrade(request, socket, head, socket => {\r\n exports.wss.emit('connection', socket, request);\r\n });\r\n});\r\nserver.on('error', server_callbacks_1.getErrorCb(DEEMIX_SERVER_PORT));\r\nserver.on('listening', server_callbacks_1.getListeningCb(server, debug));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9EZWVtaXhTZXJ2ZXIvLi9zcmMvYXBwLnRzPzA2NmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLHdFQUF1QjtBQUN2Qix5R0FBOEM7QUFDOUMseUVBQXVDO0FBQ3ZDLG9HQUF5QjtBQUN6Qix1R0FBNkI7QUFDN0Isb0dBQXVDO0FBRXZDLHVGQUFtRDtBQUVuRCwrRkFBa0M7QUFFbEMsa0ZBQThDO0FBQzlDLHNIQUF1RTtBQUN2RSxvR0FBb0Q7QUFDcEQsdUZBQStDO0FBRS9DLHdGQUE4QztBQUU5QyxnRUFBb0M7QUFBM0IsK0dBQVc7QUFFcEIsMERBQTBEO0FBQzFELE1BQU0sSUFBSSxHQUFHLGVBQUssQ0FBQyxpQkFBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNqRCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDekMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0NBQzlDLENBQUMsQ0FBQyxJQUFpQjtBQUVwQixNQUFNLGtCQUFrQixHQUFHLG9CQUFhLENBQUMsYUFBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQztBQUNyRixNQUFNLFdBQVcsR0FBRyxhQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsbUNBQUksSUFBSSxDQUFDLElBQUk7QUFFeEQsTUFBTSxLQUFLLEdBQUcsZUFBUyxDQUFDLG1CQUFtQixDQUFDO0FBQy9CLFdBQUcsR0FBRyxJQUFJLFdBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN0QyxXQUFHLEdBQWdCLGlCQUFPLEVBQUU7QUFDekMsTUFBTSxNQUFNLEdBQUcsY0FBSSxDQUFDLFlBQVksQ0FBQyxXQUFHLENBQUM7QUFFckMseUJBQXlCO0FBQ3pCLGlDQUFtQixDQUFDLFdBQUcsQ0FBQztBQUV4QixvQkFBb0I7QUFDcEIsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZ0JBQVcsQ0FBQztBQUV6QixrQkFBa0I7QUFDbEIsdUJBQVksQ0FBQyxXQUFHLENBQUM7QUFFakIsb0JBQW9CO0FBQ3BCLFdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDO0FBRW5DLHlCQUF5QjtBQUN6QixJQUFJLElBQStCLEVBQUU7SUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7Q0FDOUQ7QUFFRCw2QkFBaUIsQ0FBQyxXQUFHLENBQUM7QUFFdEIsOEJBQThCO0FBQzlCLFdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLG9CQUFXLENBQUMsa0JBQWtCLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO0lBQzlDLFdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDakQsV0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztJQUN4QyxDQUFDLENBQUM7QUFDSCxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSw2QkFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDbEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMiLCJmaWxlIjoiLi9zcmMvYXBwLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCdcbmltcG9ydCBleHByZXNzLCB7IEFwcGxpY2F0aW9uIH0gZnJvbSAnZXhwcmVzcydcbmltcG9ydCB7IFNlcnZlciBhcyBXc1NlcnZlciB9IGZyb20gJ3dzJ1xuaW1wb3J0IHlhcmdzIGZyb20gJ3lhcmdzJ1xuaW1wb3J0IGluaXREZWJ1ZyBmcm9tICdkZWJ1ZydcbmltcG9ydCB7IGhpZGVCaW4gfSBmcm9tICd5YXJncy9oZWxwZXJzJ1xuXG5pbXBvcnQgeyByZWdpc3Rlck1pZGRsZXdhcmVzIH0gZnJvbSAnLi9taWRkbGV3YXJlcydcblxuaW1wb3J0IGluZGV4Um91dGVyIGZyb20gJy4vcm91dGVzJ1xuXG5pbXBvcnQgeyBub3JtYWxpemVQb3J0IH0gZnJvbSAnLi9oZWxwZXJzL3BvcnQnXG5pbXBvcnQgeyBnZXRFcnJvckNiLCBnZXRMaXN0ZW5pbmdDYiB9IGZyb20gJy4vaGVscGVycy9zZXJ2ZXItY2FsbGJhY2tzJ1xuaW1wb3J0IHsgcmVnaXN0ZXJBcGlzIH0gZnJvbSAnLi9yb3V0ZXMvYXBpL3JlZ2lzdGVyJ1xuaW1wb3J0IHsgcmVnaXN0ZXJXZWJzb2NrZXQgfSBmcm9tICcuL3dlYnNvY2tldCdcbmltcG9ydCB0eXBlIHsgQXJndW1lbnRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IGNvbnNvbGVJbmZvIH0gZnJvbSAnLi9oZWxwZXJzL2Vycm9ycydcblxuZXhwb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tICcuL21haW4nXG5cbi8vIFRPRE86IFJlbW92ZSB0eXBlIGFzc2VydGlvbiB3aGlsZSBrZWVwaW5nIGNvcnJlY3QgdHlwZXNcbmNvbnN0IGFyZ3YgPSB5YXJncyhoaWRlQmluKHByb2Nlc3MuYXJndikpLm9wdGlvbnMoe1xuXHRwb3J0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnNjU5NScgfSxcblx0aG9zdDogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJzEyNy4wLjAuMScgfVxufSkuYXJndiBhcyBBcmd1bWVudHNcblxuY29uc3QgREVFTUlYX1NFUlZFUl9QT1JUID0gbm9ybWFsaXplUG9ydChwcm9jZXNzLmVudi5ERUVNSVhfU0VSVkVSX1BPUlQgPz8gYXJndi5wb3J0KVxuY29uc3QgREVFTUlYX0hPU1QgPSBwcm9jZXNzLmVudi5ERUVNSVhfSE9TVCA/PyBhcmd2Lmhvc3RcblxuY29uc3QgZGVidWcgPSBpbml0RGVidWcoJ2RlZW1peC1ndWk6c2VydmVyJylcbmV4cG9ydCBjb25zdCB3c3MgPSBuZXcgV3NTZXJ2ZXIoeyBub1NlcnZlcjogdHJ1ZSB9KVxuZXhwb3J0IGNvbnN0IGFwcDogQXBwbGljYXRpb24gPSBleHByZXNzKClcbmNvbnN0IHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGFwcClcblxuLyogPT09IE1pZGRsZXdhcmVzID09PSAqL1xucmVnaXN0ZXJNaWRkbGV3YXJlcyhhcHApXG5cbi8qID09PSBSb3V0ZXMgPT09ICovXG5hcHAudXNlKCcvJywgaW5kZXhSb3V0ZXIpXG5cbi8qID09PSBBUElzID09PSAqL1xucmVnaXN0ZXJBcGlzKGFwcClcblxuLyogPT09IENvbmZpZyA9PT0gKi9cbmFwcC5zZXQoJ3BvcnQnLCBERUVNSVhfU0VSVkVSX1BPUlQpXG5cbi8qID09PSBTZXJ2ZXIgcG9ydCA9PT0gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG5cdHNlcnZlci5saXN0ZW4oeyBwb3J0OiBERUVNSVhfU0VSVkVSX1BPUlQsIGhvc3Q6IERFRU1JWF9IT1NUIH0pXG59XG5cbnJlZ2lzdGVyV2Vic29ja2V0KHdzcylcblxuLyogPT09IFNlcnZlciBjYWxsYmFja3MgPT09ICovXG5hcHAub24oJ21vdW50JywgYSA9PiB7XG5cdGNvbnNvbGUubG9nKGEpXG59KVxuc2VydmVyLm9uKCdjb25uZWN0JywgKCkgPT4ge1xuXHRjb25zb2xlSW5mbygnU2VydmVyIGNvbm5lY3RlZCcpXG59KVxuc2VydmVyLm9uKCd1cGdyYWRlJywgKHJlcXVlc3QsIHNvY2tldCwgaGVhZCkgPT4ge1xuXHR3c3MuaGFuZGxlVXBncmFkZShyZXF1ZXN0LCBzb2NrZXQsIGhlYWQsIHNvY2tldCA9PiB7XG5cdFx0d3NzLmVtaXQoJ2Nvbm5lY3Rpb24nLCBzb2NrZXQsIHJlcXVlc3QpXG5cdH0pXG59KVxuc2VydmVyLm9uKCdlcnJvcicsIGdldEVycm9yQ2IoREVFTUlYX1NFUlZFUl9QT1JUKSlcbnNlcnZlci5vbignbGlzdGVuaW5nJywgZ2V0TGlzdGVuaW5nQ2Ioc2VydmVyLCBkZWJ1ZykpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/app.ts\n"); /***/ }), @@ -9569,7 +9590,7 @@ eval("\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _argume /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; -eval("\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.registerMiddlewares = void 0;\r\nconst express_1 = __importDefault(__webpack_require__(/*! express */ \"./node_modules/express/index.js\"));\r\nconst morgan_1 = __importDefault(__webpack_require__(/*! morgan */ \"./node_modules/morgan/index.js\"));\r\nconst cookie_parser_1 = __importDefault(__webpack_require__(/*! cookie-parser */ \"./node_modules/cookie-parser/index.js\"));\r\nconst express_session_1 = __importDefault(__webpack_require__(/*! express-session */ \"./node_modules/express-session/index.js\"));\r\nconst paths_1 = __webpack_require__(/*! ./helpers/paths */ \"./src/helpers/paths.ts\");\r\nconst MemoryStore = __webpack_require__(/*! memorystore */ \"./node_modules/memorystore/index.js\")(express_session_1.default);\r\nfunction registerMiddlewares(app) {\r\n if (true) {\r\n app.use(morgan_1.default('dev'));\r\n }\r\n app.use(express_1.default.json());\r\n app.use(express_1.default.urlencoded({ extended: false }));\r\n app.use(cookie_parser_1.default());\r\n app.use(express_session_1.default({\r\n store: new MemoryStore({\r\n checkPeriod: 86400000 // prune expired entries every 24h\r\n }),\r\n secret: 'U2hoLCBpdHMgYSBzZWNyZXQh',\r\n resave: true,\r\n saveUninitialized: true\r\n }));\r\n app.use(express_1.default.static(paths_1.WEBUI_DIR));\r\n}\r\nexports.registerMiddlewares = registerMiddlewares;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9EZWVtaXhTZXJ2ZXIvLi9zcmMvbWlkZGxld2FyZXMudHM/MzIzMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx5R0FBNkI7QUFDN0Isc0dBQTJCO0FBQzNCLDJIQUF3QztBQUN4QyxpSUFBcUM7QUFFckMscUZBQTJDO0FBRTNDLE1BQU0sV0FBVyxHQUFHLG1CQUFPLENBQUMsd0RBQWEsQ0FBQyxDQUFDLHlCQUFPLENBQUM7QUFRbkQsU0FBZ0IsbUJBQW1CLENBQUMsR0FBZ0I7SUFDbkQsSUFBSSxJQUErQixFQUFFO1FBQ3BDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0QjtJQUVELEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyx1QkFBWSxFQUFFLENBQUM7SUFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FDTix5QkFBTyxDQUFDO1FBQ1AsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDO1lBQ3RCLFdBQVcsRUFBRSxRQUFRLENBQUMsa0NBQWtDO1NBQ3hELENBQUM7UUFDRixNQUFNLEVBQUUsMEJBQTBCO1FBQ2xDLE1BQU0sRUFBRSxJQUFJO1FBQ1osaUJBQWlCLEVBQUUsSUFBSTtLQUN2QixDQUFDLENBQ0Y7SUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBbkJELGtEQW1CQyIsImZpbGUiOiIuL3NyYy9taWRkbGV3YXJlcy50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXBwbGljYXRpb24gfSBmcm9tICdleHByZXNzJ1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcydcbmltcG9ydCBsb2dnZXIgZnJvbSAnbW9yZ2FuJ1xuaW1wb3J0IGNvb2tpZVBhcnNlciBmcm9tICdjb29raWUtcGFyc2VyJ1xuaW1wb3J0IHNlc3Npb24gZnJvbSAnZXhwcmVzcy1zZXNzaW9uJ1xuXG5pbXBvcnQgeyBXRUJVSV9ESVIgfSBmcm9tICcuL2hlbHBlcnMvcGF0aHMnXG5cbmNvbnN0IE1lbW9yeVN0b3JlID0gcmVxdWlyZSgnbWVtb3J5c3RvcmUnKShzZXNzaW9uKVxuXG5kZWNsYXJlIG1vZHVsZSAnZXhwcmVzcy1zZXNzaW9uJyB7XG5cdGV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkRhdGEge1xuXHRcdGR6OiBhbnlcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNaWRkbGV3YXJlcyhhcHA6IEFwcGxpY2F0aW9uKSB7XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG5cdFx0YXBwLnVzZShsb2dnZXIoJ2RldicpKVxuXHR9XG5cblx0YXBwLnVzZShleHByZXNzLmpzb24oKSlcblx0YXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpXG5cdGFwcC51c2UoY29va2llUGFyc2VyKCkpXG5cdGFwcC51c2UoXG5cdFx0c2Vzc2lvbih7XG5cdFx0XHRzdG9yZTogbmV3IE1lbW9yeVN0b3JlKHtcblx0XHRcdFx0Y2hlY2tQZXJpb2Q6IDg2NDAwMDAwIC8vIHBydW5lIGV4cGlyZWQgZW50cmllcyBldmVyeSAyNGhcblx0XHRcdH0pLFxuXHRcdFx0c2VjcmV0OiAnVTJob0xDQnBkSE1nWVNCelpXTnlaWFFoJyxcblx0XHRcdHJlc2F2ZTogdHJ1ZSxcblx0XHRcdHNhdmVVbmluaXRpYWxpemVkOiB0cnVlXG5cdFx0fSlcblx0KVxuXHRhcHAudXNlKGV4cHJlc3Muc3RhdGljKFdFQlVJX0RJUikpXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/middlewares.ts\n"); +eval("\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.registerMiddlewares = void 0;\r\nconst express_1 = __importDefault(__webpack_require__(/*! express */ \"./node_modules/express/index.js\"));\r\nconst morgan_1 = __importDefault(__webpack_require__(/*! morgan */ \"./node_modules/morgan/index.js\"));\r\nconst cookie_parser_1 = __importDefault(__webpack_require__(/*! cookie-parser */ \"./node_modules/cookie-parser/index.js\"));\r\nconst express_session_1 = __importDefault(__webpack_require__(/*! express-session */ \"./node_modules/express-session/index.js\"));\r\nconst cors_1 = __importDefault(__webpack_require__(/*! cors */ \"./node_modules/cors/lib/index.js\"));\r\nconst paths_1 = __webpack_require__(/*! ./helpers/paths */ \"./src/helpers/paths.ts\");\r\nconst MemoryStore = __webpack_require__(/*! memorystore */ \"./node_modules/memorystore/index.js\")(express_session_1.default);\r\nfunction registerMiddlewares(app) {\r\n if (true) {\r\n app.use(morgan_1.default('dev'));\r\n }\r\n app.use(express_1.default.json());\r\n app.use(express_1.default.urlencoded({ extended: false }));\r\n app.use(cookie_parser_1.default());\r\n app.use(express_session_1.default({\r\n store: new MemoryStore({\r\n checkPeriod: 86400000 // prune expired entries every 24h\r\n }),\r\n secret: 'U2hoLCBpdHMgYSBzZWNyZXQh',\r\n resave: true,\r\n saveUninitialized: true\r\n }));\r\n if (false) {}\r\n else {\r\n app.use(cors_1.default({\r\n credentials: true,\r\n origin: 'http://localhost:3000'\r\n }));\r\n }\r\n}\r\nexports.registerMiddlewares = registerMiddlewares;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9EZWVtaXhTZXJ2ZXIvLi9zcmMvbWlkZGxld2FyZXMudHM/MzIzMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx5R0FBNkI7QUFDN0Isc0dBQTJCO0FBQzNCLDJIQUF3QztBQUN4QyxpSUFBcUM7QUFDckMsb0dBQXVCO0FBRXZCLHFGQUEyQztBQUUzQyxNQUFNLFdBQVcsR0FBRyxtQkFBTyxDQUFDLHdEQUFhLENBQUMsQ0FBQyx5QkFBTyxDQUFDO0FBUW5ELFNBQWdCLG1CQUFtQixDQUFDLEdBQWdCO0lBQ25ELElBQUksSUFBK0IsRUFBRTtRQUNwQyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7SUFFRCxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELEdBQUcsQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxDQUFDO0lBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQ04seUJBQU8sQ0FBQztRQUNQLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQztZQUN0QixXQUFXLEVBQUUsUUFBUSxDQUFDLGtDQUFrQztTQUN4RCxDQUFDO1FBQ0YsTUFBTSxFQUFFLDBCQUEwQjtRQUNsQyxNQUFNLEVBQUUsSUFBSTtRQUNaLGlCQUFpQixFQUFFLElBQUk7S0FDdkIsQ0FBQyxDQUNGO0lBRUQsSUFBSSxLQUFxQyxFQUFFLEVBRTFDO1NBQU07UUFDTixHQUFHLENBQUMsR0FBRyxDQUNOLGNBQUksQ0FBQztZQUNKLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE1BQU0sRUFBRSx1QkFBdUI7U0FDL0IsQ0FBQyxDQUNGO0tBQ0Q7QUFDRixDQUFDO0FBN0JELGtEQTZCQyIsImZpbGUiOiIuL3NyYy9taWRkbGV3YXJlcy50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXBwbGljYXRpb24gfSBmcm9tICdleHByZXNzJ1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcydcbmltcG9ydCBsb2dnZXIgZnJvbSAnbW9yZ2FuJ1xuaW1wb3J0IGNvb2tpZVBhcnNlciBmcm9tICdjb29raWUtcGFyc2VyJ1xuaW1wb3J0IHNlc3Npb24gZnJvbSAnZXhwcmVzcy1zZXNzaW9uJ1xuaW1wb3J0IGNvcnMgZnJvbSAnY29ycydcblxuaW1wb3J0IHsgV0VCVUlfRElSIH0gZnJvbSAnLi9oZWxwZXJzL3BhdGhzJ1xuXG5jb25zdCBNZW1vcnlTdG9yZSA9IHJlcXVpcmUoJ21lbW9yeXN0b3JlJykoc2Vzc2lvbilcblxuZGVjbGFyZSBtb2R1bGUgJ2V4cHJlc3Mtc2Vzc2lvbicge1xuXHRleHBvcnQgaW50ZXJmYWNlIFNlc3Npb25EYXRhIHtcblx0XHRkejogYW55XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTWlkZGxld2FyZXMoYXBwOiBBcHBsaWNhdGlvbikge1xuXHRpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0Jykge1xuXHRcdGFwcC51c2UobG9nZ2VyKCdkZXYnKSlcblx0fVxuXG5cdGFwcC51c2UoZXhwcmVzcy5qc29uKCkpXG5cdGFwcC51c2UoZXhwcmVzcy51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IGZhbHNlIH0pKVxuXHRhcHAudXNlKGNvb2tpZVBhcnNlcigpKVxuXHRhcHAudXNlKFxuXHRcdHNlc3Npb24oe1xuXHRcdFx0c3RvcmU6IG5ldyBNZW1vcnlTdG9yZSh7XG5cdFx0XHRcdGNoZWNrUGVyaW9kOiA4NjQwMDAwMCAvLyBwcnVuZSBleHBpcmVkIGVudHJpZXMgZXZlcnkgMjRoXG5cdFx0XHR9KSxcblx0XHRcdHNlY3JldDogJ1UyaG9MQ0JwZEhNZ1lTQnpaV055WlhRaCcsXG5cdFx0XHRyZXNhdmU6IHRydWUsXG5cdFx0XHRzYXZlVW5pbml0aWFsaXplZDogdHJ1ZVxuXHRcdH0pXG5cdClcblxuXHRpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuXHRcdGFwcC51c2UoZXhwcmVzcy5zdGF0aWMoV0VCVUlfRElSKSlcblx0fSBlbHNlIHtcblx0XHRhcHAudXNlKFxuXHRcdFx0Y29ycyh7XG5cdFx0XHRcdGNyZWRlbnRpYWxzOiB0cnVlLFxuXHRcdFx0XHRvcmlnaW46ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnXG5cdFx0XHR9KVxuXHRcdClcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/middlewares.ts\n"); /***/ }), diff --git a/server/package.json b/server/package.json index 9975df2..147d30a 100644 --- a/server/package.json +++ b/server/package.json @@ -25,6 +25,7 @@ "dependencies": { "bufferutil": "4.0.3", "cookie-parser": "1.4.5", + "cors": "2.8.5", "debug": "2.6.9", "deemix": "3.0.3", "deezer-js": "^1.0.0", @@ -42,6 +43,7 @@ "devDependencies": { "@nuxtjs/eslint-config": "6.0.0", "@types/cookie-parser": "1.4.2", + "@types/cors": "2.8.12", "@types/debug": "4.1.5", "@types/express": "4.17.11", "@types/express-session": "^1.17.3", diff --git a/server/src/app.ts b/server/src/app.ts index 3743b85..be9d5f1 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -29,7 +29,7 @@ const DEEMIX_HOST = process.env.DEEMIX_HOST ?? argv.host const debug = initDebug('deemix-gui:server') export const wss = new WsServer({ noServer: true }) -const app: Application = express() +export const app: Application = express() const server = http.createServer(app) /* === Middlewares === */ diff --git a/webui-new/src/app.js b/webui-new/src/app.js index f624059..a10211c 100644 --- a/webui-new/src/app.js +++ b/webui-new/src/app.js @@ -35,7 +35,7 @@ async function startApp() { render: h => h(App) }).$mount('#app') - const connectResponse = await (await fetch(`${SERVER_ENDPOINT}/connect`)).json() + const connectResponse = await (await fetch(`${SERVER_ENDPOINT}/connect`, { credentials: 'include' })).json() if (!connectResponse.deezerAvailable) document.getElementById('deezer_not_available').classList.remove('hide') store.dispatch('setAppInfo', connectResponse.update).catch(console.error) diff --git a/webui-new/src/utils/api.js b/webui-new/src/utils/api.js index fa45c13..a72840a 100644 --- a/webui-new/src/utils/api.js +++ b/webui-new/src/utils/api.js @@ -2,6 +2,10 @@ export const SERVER_ENDPOINT = 'http://localhost:6595' export const SERVER_HOST = 'localhost:6595' +const commonOptions = { + credentials: 'include' +} + export function fetchData(key, data = {}, method = 'GET') { const url = new URL(`${SERVER_ENDPOINT}/api/${key}`) @@ -9,7 +13,7 @@ export function fetchData(key, data = {}, method = 'GET') { url.searchParams.append(key, data[key]) }) - return fetch(url.href, { method }) + return fetch(url.href, { ...commonOptions, method }) .then(response => response.json()) .catch(error => { console.error('There has been a problem with your fetch operation:', error) @@ -33,6 +37,7 @@ export const postToServer = (endpoint, data) => { const url = new URL(`${SERVER_ENDPOINT}/api/${endpoint}`) return fetch(url, { + ...commonOptions, body: JSON.stringify(data), headers: { 'Content-Type': 'application/json'