UNPKG

qcobjects-cli

Version:

qcobjects cli command line tool

8 lines (7 loc) 29.5 kB
{ "version": 3, "sources": ["../../src/defaultsettings.ts"], "sourcesContent": ["/**\n * QCObjects CLI 2.5\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n */\n/*eslint no-unused-vars: \"off\"*/\n/*eslint no-redeclare: \"off\"*/\n/*eslint no-empty: \"off\"*/\n/*eslint strict: \"off\"*/\n/*eslint no-mixed-operators: \"off\"*/\n/*eslint no-undef: \"off\"*/\n\"use strict\";\nimport \"qcobjects\";\nimport {readFileSync} from \"node:fs\";\nimport path from \"node:path\";\nimport fs from \"node:fs\";\nimport { CONFIG, global, logger, _Crypt, findPackageNodePath, Export, _DataStringify } from \"qcobjects\";\n\nexport const __get_version__ = () => {\n\n const absolutePath = path.resolve(__dirname, \"./\");\n const package_config_path = path.resolve(process.cwd(), \"package.json\");\n const qcobjects_pkg_config_path = `${findPackageNodePath(\"qcobjects/package.json\")}/qcobjects/package.json`;\n const qcobjects_sdk_pkg_config_path = `${findPackageNodePath(\"qcobjects-sdk/package.json\")}/qcobjects-sdk/package.json`;\n\n const readVersionFile = (filePath:string) => {\n try {\n return fs.readFileSync(filePath).toString();\n } catch (error:any) {\n logger.debug(`Error reading file at ${filePath}:`, error.message);\n return JSON.stringify({ version: \"0.0.0\" });\n }\n };\n\n\n const package_config_text = readVersionFile(package_config_path);\n const qcobjects_pkg_config_text = readVersionFile(qcobjects_pkg_config_path);\n const qcobjects_sdk_pkg_config_text = readVersionFile(qcobjects_sdk_pkg_config_path);\n const package_config = JSON.parse(package_config_text);\n const qcobjects_pkg_config = JSON.parse(qcobjects_pkg_config_text);\n const qcobjects_sdk_pkg_config = JSON.parse(qcobjects_sdk_pkg_config_text);\n\n return {\n \"qcobjects\": qcobjects_pkg_config.version,\n \"sdk\": qcobjects_sdk_pkg_config.version,\n \"cli\": package_config.version\n };\n};\n\nexport const __get_version_string__ = () => {\n const version = __get_version__();\n return \"QCObjects: v\" + version.qcobjects + \", SDK: v\" + version.sdk + \", CLI: v\" + version.cli;\n};\n\nexport const getProjectPath = () => {\n return CONFIG.get(\"projectPath\", `${process.cwd()}/`);\n};\n\nExport(__get_version__);\nExport(__get_version_string__);\nExport(getProjectPath);\n\n\nconst __load_default_settings__ = () => {\n CONFIG.set(\"domain\", \"$ENV(DOMAIN)\");\n CONFIG.set(\"certificate_provider\", \"$ENV(CERTIFICATE_PROVIDER)\");\n CONFIG.set(\"devmode\", \"$ENV(DEVMODE)\");\n CONFIG.set(\"autodiscover\", true);\n CONFIG.set(\"autodiscover_commands\", true);\n CONFIG.set(\"autodiscover_handlers\", true);\n CONFIG.set(\"documentRoot\", \"$config(projectPath)public/\");\n CONFIG.set(\"documentRootFileIndex\", \"index.html\");\n CONFIG.set(\"cacheControl\", \"max-age=31536000\");\n CONFIG.set(\"relativeImportPath\", \"js/packages/\");\n CONFIG.set(\"serverPortHTTP\", \"8080\");\n CONFIG.set(\"serverPortHTTPS\", \"8443\");\n CONFIG.set(\"useLocalSDK\", true);\n CONFIG.set(\"useLegacyHTTP\", false);\n CONFIG.set(\"private-key-pem\", \"$config(domain)-privkey.pem\");\n CONFIG.set(\"private-cert-pem\", \"$config(domain)-cert.pem\");\n CONFIG.set(\"enableShellCommands\", true);\n CONFIG.set(\"OPENAI_API_KEY\", \"$ENV(OPENAI_API_KEY)\");\n\n // Set backend configuration\n const backend = {\n db_engine: {\n name: \"$ENV(ENGINE_NAME)\",\n databaseName: \"$ENV(DATABASE_NAME)\"\n },\n auth: {\n enabled: true,\n defaultUser: \"$ENV(DEFAULT_USER)\",\n defaultPasswd: \"$ENV(DEFAULT_PASSWORD)\",\n microsoftapikey: \"$ENV(MICROSOFT_API_KEY)\",\n googleapikey: \"$ENV(GOOGLE_API_KEY)\"\n },\n routes: [\n ]\n };\n CONFIG.set(\"backend\", backend);\n\n // Set package configuration\n const packageConfig = {\n source: {\n backend: \"backend\",\n frontend: \"src\"\n },\n build: \"build\",\n dist: \"dist\"\n };\n CONFIG.set(\"package\", packageConfig);\n\n CONFIG.set(\"useConfigService\", false); // this is only true useful for client web side\n CONFIG.set(\"projectPath\", `${process.cwd()}/`);\n CONFIG.set(\"allowHTTP1\", true);\n CONFIG.set(\"useTemplate\", false);\n CONFIG.set(\"useLegacyHTTP\", false);\n\n const setDevMode = (devmode: string) => {\n if (typeof devmode !== \"undefined\") {\n switch (true) {\n case devmode == \"debug\":\n logger.debugEnabled = true;\n logger.warnEnabled = true;\n logger.infoEnabled = true;\n break;\n case devmode == \"warn\":\n logger.debugEnabled = false;\n logger.warnEnabled = true;\n logger.infoEnabled = true;\n break;\n case devmode == \"info\":\n logger.debugEnabled = false;\n logger.warnEnabled = false;\n logger.infoEnabled = true;\n break;\n\n default:\n logger.debugEnabled = false;\n logger.warnEnabled = false;\n logger.infoEnabled = false;\n break;\n }\n } else {\n logger.debugEnabled = false;\n logger.warnEnabled = false;\n logger.infoEnabled = false;\n }\n\n };\n\n try {\n\n const loadConfig = () => {\n const configPath = path.resolve(CONFIG.get(\"projectPath\"),\"config.json\");\n const configText = readFileSync(configPath).toString();\n const configJson = JSON.parse(configText);\n return configJson;\n };\n\n var _config = loadConfig();\n logger.debug(\"Loading settings from your config.json\");\n\n const _secretKey = (Object.hasOwn(_config, \"domain\")) ? (_config[\"domain\"]) : (\"_secret_\");\n\n if (Object.hasOwn(_config, \"__encoded__\")) {\n _config = JSON.parse(_Crypt.decrypt(_config.__encoded__, _secretKey));\n }\n for (var k in _config) {\n CONFIG.set(k, _config[k]);\n }\n\n setDevMode(CONFIG.get(\"devmode\", \"\"));\n\n if (typeof CONFIG.get(\"backend\") !== \"undefined\") {\n global.set(\"backendAvailable\", true);\n }\n\n if (typeof CONFIG.get(\"basePath\") !== \"undefined\") {\n logger.debug(`Changing the current directory: ${process.cwd()}`);\n try {\n process.chdir(CONFIG.get(\"basePath\"));\n logger.debug(`New directory: ${process.cwd()}`);\n } catch (err: any) {\n logger.warn(`It was impossible to change the current chdir: ${err}`);\n }\n }\n\n } catch (e:any) {\n logger.debug(e);\n logger.debug(\"Something went wrong trying to load config.json file in your project\");\n }\n\n (async function () {\n const projectPath = getProjectPath();\n const loadDefaultRoutes = async () => {\n return await new Promise<void>((resolve, reject) => {\n const sdkPath = path.resolve(findPackageNodePath(\"qcobjects-sdk\"), \"qcobjects-sdk\");\n const qcobjectsPath = path.resolve(findPackageNodePath(\"qcobjects\"), \"qcobjects\");\n let backend = CONFIG.get(\"backend\");\n if (typeof backend === \"undefined\") {\n backend = {};\n }\n if (typeof backend.routes === \"undefined\") {\n backend.routes = [];\n }\n backend.routes = backend.routes.concat([{\n \"name\": \"QCObjects.js\",\n \"description\": \"Redirection of QCObjects.js\",\n \"path\": \"^/QCObjects.js$\",\n \"microservice\": \"com.qcobjects.backend.microservice.static\",\n \"redirect_to\": path.resolve(qcobjectsPath, \"src\", \"QCObjects.js\"),\n \"responseHeaders\": {},\n \"cors\": {\n \"allow_origins\": \"*\"\n }\n },\n {\n \"name\": \"QCObjects-SDK.js\",\n \"description\": \"Redirection of QCObjects SDK\",\n \"path\": \"^/js/packages/QCObjects-SDK.js$\",\n \"microservice\": \"com.qcobjects.backend.microservice.static\",\n \"redirect_to\": path.resolve(sdkPath, \"src/QCObjects-SDK.js\"),\n \"responseHeaders\": {},\n \"cors\": {\n \"allow_origins\": \"*\"\n }\n },\n {\n \"name\": \"QCObjects-SDK Components\",\n \"description\": \"Redirection of QCObjects SDK\",\n \"path\": \"^/qcobjects-sdk/(.*)$\",\n \"microservice\": \"com.qcobjects.backend.microservice.static\",\n \"redirect_to\": path.resolve(sdkPath, \"$1\"),\n \"responseHeaders\": {},\n \"cors\": {\n \"allow_origins\": \"*\"\n }\n }\n\n ]);\n CONFIG.set(\"backend\", backend);\n resolve();\n });\n };\n await loadDefaultRoutes();\n })()\n .then(() => logger.info(\"Default routes loaded\"))\n .catch((e: any) => { logger.warn(`An error ocurred loading default settings: ${e}`); });\n\n (function () {\n /* Auto Discover dependencies (lib, handlers, commands) */\n const projectPath = CONFIG.get(\"projectPath\", `${process.cwd()}/`);\n logger.debug(`CONFIG.projectPath is set to ${projectPath}`);\n const findPath = (p: string) => {\n const packagePath = path.resolve(findPackageNodePath(p), p);\n return packagePath;\n };\n\n const getPackageJSON = (p: string) => {\n let _json;\n try {\n const packagePath = findPath(p);\n if (typeof packagePath !== \"undefined\") {\n _json = JSON.parse(fs.readFileSync(path.resolve(`${packagePath}`, \"./package.json\")).toString());\n } else {\n _json = {};\n }\n } catch (e: any) {\n logger.debug(`It was impossible to get the package.json from ${p}: ${e}`);\n _json = {};\n }\n return _json;\n };\n\n const hasKeyword = (() => {\n let keywords: { [key: string]: string[] } = {};\n return (p: string, keyword: string) => {\n if (typeof keywords === \"undefined\") {\n keywords = {};\n }\n try {\n console.log(\"getting keywords for: \", p);\n if (typeof keywords[p] === \"undefined\") {\n keywords[p] = getPackageJSON(p).keywords;\n }\n } catch (e) {\n throw Error(`Something went wrong when trying to get the keywords of ${p}`);\n }\n return typeof keywords[p] !== \"undefined\" && keywords[p].includes(keyword);\n };\n })();\n\n const setBackendValue = (name: string, value: any) => {\n const backend = CONFIG.get(\"backend\", {});\n if (typeof value !== \"undefined\") {\n backend[name] = value;\n }\n CONFIG.set(\"backend\", backend);\n };\n\n const dependencies = (() => {\n let deps: string[] = [];\n return () => {\n if (typeof deps === \"undefined\") {\n deps = Object.keys(JSON.parse(fs.readFileSync(path.resolve(`${projectPath}`, \"./package.json\")).toString()).dependencies);\n setBackendValue(\"dependencies\", deps);\n }\n return deps;\n };\n })();\n\n const devDependencies = (() => {\n let deps: string[] = [];\n return () => {\n if (typeof deps === \"undefined\") {\n deps = Object.keys(JSON.parse(fs.readFileSync(path.resolve(`${projectPath}`, \"./package.json\")).toString()).devDependencies);\n setBackendValue(\"devDependencies\", deps);\n }\n return deps;\n };\n })();\n\n const loadLibs = () => {\n let _ret_;\n if (CONFIG.get(\"autodiscover\", false) || CONFIG.get(\"autodiscover_libs\", false)) {\n const libs = dependencies().filter((p) => hasKeyword(p, \"qcobjects-lib\"));\n setBackendValue(\"libs\", libs);\n if (libs.length > 0) {\n logger.debug(`Plugin Libs found: ${libs.join(\",\")}`);\n _ret_ = Promise.all(libs.map(async (p) => { \n return await import(findPath(p)); \n })).then(() => logger.info(\"Libs loaded\"));\n } else {\n logger.debug(\"No Plugin Libs found.\");\n _ret_ = Promise.resolve();\n }\n } else {\n logger.debug(\"To load libs, set autodiscover_libs to true in your config.json\");\n _ret_ = Promise.resolve();\n }\n return _ret_;\n };\n const loadHandlers = () => {\n let _ret_;\n if (CONFIG.get(\"autodiscover\", false) || CONFIG.get(\"autodiscover_handlers\", false)) {\n const handlers = dependencies().filter((p) => hasKeyword(p, \"qcobjects-handler\"));\n setBackendValue(\"handlers\", handlers);\n if (handlers.length > 0) {\n logger.debug(`Plugin Handlers found: ${handlers.join(\",\")}`);\n _ret_ = Promise.all(handlers.map(async (p) => { \n return await import(findPath(p)); \n })).then(() => logger.info(\"Handlers loaded\"));\n } else {\n logger.debug(\"No Plugin Handlers found.\");\n _ret_ = Promise.resolve();\n }\n } else {\n logger.debug(\"To load handlers, set autodiscover_handlers to true in your config.json\");\n _ret_ = Promise.resolve();\n }\n return _ret_;\n };\n const loadCommands = () => {\n let _ret_;\n logger.debug(`Looking for custom commands as dependencies in: ${projectPath}/package.json`);\n if (CONFIG.get(\"autodiscover\", false) || CONFIG.get(\"autodiscover_commands\", false)) {\n const commands = dependencies().filter((p) => hasKeyword(p, \"qcobjects-command\"));\n setBackendValue(\"commands\", commands);\n if (commands.length > 0) {\n logger.debug(`Plugin Commands found: ${commands.join(\",\")}`);\n _ret_ = Promise.all(\n commands.map(async (p) => { \n try {\n return await import(findPath(p));\n } catch (error: any) {\n logger.error(`Failed to load command ${p}: ${error}`);\n throw error;\n }\n })\n ).then(() => logger.info(\"Commands loaded\"))\n .catch(error => {\n logger.error(\"Failed to load commands:\", error);\n throw error;\n });\n } else {\n logger.debug(\"No Plugin Commands found.\");\n _ret_ = Promise.resolve();\n }\n } else {\n logger.debug(\"To load commands, set autodiscover_commands to true in your config.json\");\n _ret_ = Promise.resolve();\n }\n return _ret_;\n };\n const loadDevCommands = () => {\n let _ret_;\n logger.debug(`Looking for custom commands as dev dependencies in: ${projectPath}/package.json`);\n if (CONFIG.get(\"autodiscover\", false) || CONFIG.get(\"autodiscover_commands\", false)) {\n const commands = devDependencies().filter((p) => hasKeyword(p, \"qcobjects-command\"));\n setBackendValue(\"devCommands\", commands);\n if (commands.length > 0) {\n logger.debug(`Dev Plugin Commands found: ${commands.join(\",\")}`);\n _ret_ = Promise.all(commands.map(async (p) => { \n return await import(findPath(p)); \n })).then(() => logger.info(\"Commands loaded\"));\n } else {\n logger.debug(\"No Plugin Commands found in dev dependencies.\");\n _ret_ = Promise.resolve();\n }\n } else {\n logger.debug(\"To load commands, set autodiscover_commands to true in your config.json\");\n _ret_ = Promise.resolve();\n }\n return _ret_;\n };\n\n if (CONFIG.get(\"autodiscover\", false) ||\n CONFIG.get(\"autodiscover_libs\", false) ||\n CONFIG.get(\"autodiscover_handlers\", false) ||\n CONFIG.get(\"autodiscover_commands\", false)\n ) {\n logger.info(\"Auto discover is enabled\");\n } else if (!CONFIG.get(\"autodiscover\", false)) {\n logger.info(\"Auto discover is disabled\");\n logger.debug(\"To load all dependencies, set autodiscover to true in your config.json\");\n } else {\n logger.info(\"Auto discover is disabled\");\n }\n\n try {\n logger.debug(\"Loading Libs...\");\n loadLibs().catch((e: any) => {\n logger.warn(`An error ocurred loading libs: ${e}`);\n });\n } catch (e: any) {\n throw Error(`Something went wrong trying to load libs: ${e.message}`);\n }\n try {\n logger.debug(\"Loading Handlers...\");\n loadHandlers().catch((e: any) => {\n logger.warn(`An error ocurred loading handlers: ${e}`);\n });\n } catch (e: any) {\n throw Error(`Something went wrong trying to load handler: ${e.message}`);\n }\n try {\n logger.debug(\"Loading Commands...\");\n loadCommands().catch((e: any) => {\n logger.warn(`An error ocurred loading commands: ${e}`);\n });\n } catch (e: any) {\n throw Error(`Something went wrong trying to load commands: ${e.message}`);\n }\n try {\n logger.debug(\"Loading Dev Commands...\");\n loadDevCommands().catch((e: any) => {\n logger.warn(`An error ocurred loading dev commands: ${e}`);\n });\n } catch (e: any) {\n throw Error(`Something went wrong trying to load Dev commands: ${e.message}`);\n }\n\n try {\n const commands = CONFIG.get(\"backend\", { commands: [] }).commands || [];\n const devCommands = CONFIG.get(\"backend\", { devCommands: [] }).devCommands || [];\n setBackendValue(\"plugins\", commands.concat(devCommands));\n } catch (e: any) {\n throw Error(`Something went wrong trying to load plugins list: ${e.message}`);\n }\n\n logger.info(\"Dependencies loaded\");\n\n process.once(\"SIGTERM\", () => {\n console.log(\"\\x1b[33m%s\\x1b[0m\", \"Bye bye!\");\n process.exit();\n });\n })();\n};\n\n(global as any).__load_default_settings__ = __load_default_settings__;\n(global as any).__load_default_settings__();\n\nconst cleanCache = () => {\n Object.keys(require.cache).forEach((key) => { delete require.cache[key]; });\n};\n\nconst __reset_settings__ = () => {\n cleanCache();\n (global as any).__load_default_settings__();\n};\n\n(global as any).__reset_settings__ = __reset_settings__;\n\n"], "mappings": "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", "names": ["backend"] }