UNPKG

uyem

Version:
200 lines 7.71 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // @ts-check /****************************************************************************************** * Repository: https://github.com/kolserdav/werift-sfu-react.git * File name: index.ts * Author: Sergey Kolmiller * Email: <uyem.ru@gmail.com> * License: MIT * License text: See in LICENSE file * Copyright: kolserdav, All rights reserved (c) * Create Date: Wed Aug 24 2022 14:14:09 GMT+0700 (Krasnoyarsk Standard Time) ******************************************************************************************/ /* eslint-disable no-case-declarations */ const child_process_1 = require("child_process"); const path_1 = __importDefault(require("path")); const lib_1 = require("./utils/lib"); // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore // eslint-disable-next-line import/no-relative-packages const package_1 = require("../../../package"); const constants_1 = require("./utils/constants"); (0, lib_1.log)('info', `${package_1.name}@${package_1.version} started`, '...', true); process.chdir(path_1.default.resolve(__dirname, '../../..')); const processArgs = process.argv; const DEFAULT_PARAMS = { port: '3001', cors: '', db: 'mysql://user:password@127.0.0.1:3306/uyem_db', cloud: '/tmp', }; const ARGS = { help: 'This document', port: 'Server websocket port', log: 'Level of logs 0 - all | 1 - info | 2 - warn | 3 - error', cors: 'Allowed origins', db: `Database url ${DEFAULT_PARAMS.db}`, version: 'Show installed version', migrate: 'Run only migrate script', cloud: 'Video recording and image storage path', }; const argv = { ...DEFAULT_PARAMS }; processArgs.forEach((item, index) => { if (/^-{1,2}\w+/.test(item)) { argv[item.replace(/-/g, '')] = process.argv[index + 1]; } }); const args = Object.keys(argv); const migrate = async () => { (0, lib_1.log)('info', 'Running "npm run migrate" command...', '', true); return new Promise((resolve) => { const res = (0, child_process_1.exec)('npm run migrate', { env: process.env, cwd: path_1.default.resolve(__dirname, '../../..'), }, (error) => { if (error) { (0, lib_1.log)('error', 'Failed "npm run migrate" command', error); resolve(error.code || 0); } }); res.stdout?.on('data', (d) => { (0, lib_1.log)('info', d.toString(), '', true); }); res.stderr?.on('data', (d) => { (0, lib_1.log)('warn', d.toString(), '', true); }); res.on('exit', (e) => { resolve(e); }); }); }; const REQUIRED = []; const defKeys = Object.keys(ARGS); const skipedReq = []; for (let i = 0; REQUIRED[i]; i++) { const rArg = REQUIRED[i]; if (args.indexOf(rArg) === -1) { skipedReq.push(rArg); } } if (skipedReq.length) { (0, lib_1.log)('warn', 'Missing required parameter(s):', REQUIRED.join(', '), true); // eslint-disable-next-line no-console console.log('\n'); process.exit(1); } let port = 3000; let cors = ''; let code = 0; let logLevel; let db = ''; let cloud = ''; let skipMigrate = false; (async () => { for (let n = 0; args[n]; n++) { const arg = args[n]; switch (arg) { case 'help': (0, lib_1.log)('info', `$ uyem --[option] [value]`, '>', true); (0, lib_1.log)('info', 'Options:', ARGS, true); code = 0; skipMigrate = true; break; case 'log': // eslint-disable-next-line @typescript-eslint/no-explicit-any logLevel = parseInt(argv.log, 10); if (Number.isNaN(logLevel)) { (0, lib_1.log)('warn', 'Argument "log" is not a number', argv.log, true); code = 1; } break; case 'port': port = parseInt(argv.port || DEFAULT_PARAMS.port, 10); if (Number.isNaN(port)) { (0, lib_1.log)('warn', 'Required number type of "port", received:', port, true); code = 1; break; } break; case 'cloud': cloud = argv.cloud || DEFAULT_PARAMS.cloud; break; case 'cors': (0, lib_1.log)('info', 'Set up Simple-CORS defence:', argv.cors); cors = argv.cors || DEFAULT_PARAMS.cors; break; case 'db': db = argv.db || DEFAULT_PARAMS.db; process.env.DATABASE_URL = db || constants_1.DATABASE_URL; if (db === DEFAULT_PARAMS.db && !skipMigrate) { (0, lib_1.log)('warn', 'Parameter "db" not specified, using default:', DEFAULT_PARAMS.db, true); } else if (!skipMigrate) { (0, lib_1.log)('info', 'Using database url:', (0, lib_1.cleanDbUrl)(db), true); } break; case 'migrate': (0, lib_1.log)('info', 'Start migrate only script...', '', true); break; default: (0, lib_1.log)('warn', 'Unknown argument:', arg); for (let i = 0; defKeys[i]; i++) { if (new RegExp(arg).test(defKeys[i])) { (0, lib_1.log)('info', 'Maybe need: ', defKeys[i], true); break; } } (0, lib_1.log)('info', 'Try run:', '--help'); code = 1; } } if (code !== 0) { (0, lib_1.log)('warn', 'Script end with code:', code, true); } else { if (!skipMigrate) { code = (await migrate()) || 0; if (process.argv.indexOf('--migrate') !== -1) { (0, lib_1.log)(code ? 'warn' : 'info', 'Migrate exit with code', code, true); return; } } if (code !== 0) { (0, lib_1.log)('warn', 'Script end with code:', code, true); } else if (!skipMigrate) { // eslint-disable-next-line global-require Promise.resolve().then(() => __importStar(require('./main'))).then(({ createServer }) => { createServer({ port, cors, logLevel, cloudPath: cloud, db }); }); } } })(); //# sourceMappingURL=index.js.map