UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

215 lines (214 loc) 9.02 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 }); exports.IsSuperAccount = exports.superAccounts = exports.IsCanary = exports.IsProd = exports.IsStag = exports.IsTestCI = exports.IsTest = exports.IsDev = exports.Config = exports.EnvName = exports.isServerMode = exports.isDevMode = void 0; const cli_table_1 = __importDefault(require("cli-table")); const object_1 = __importStar(require("diginext-utils/dist/object")); const trimNull_1 = __importDefault(require("diginext-utils/dist/string/trimNull")); const dotenv_1 = __importDefault(require("dotenv")); const fs_1 = __importDefault(require("fs")); const lodash_1 = __importDefault(require("lodash")); const path_1 = __importDefault(require("path")); const const_1 = require("./config/const"); let appEnv = {}; let isNoEnvFile = false; const isTestEnv = (0, trimNull_1.default)(process.env.NODE_ENV) === "test" || (0, trimNull_1.default)(process.env.NODE_ENV) === "test_ci"; const envFilePath = isTestEnv ? path_1.default.resolve(const_1.CLI_DIR, `.env.test`) : path_1.default.resolve(const_1.CLI_DIR, `.env.dev`); if (fs_1.default.existsSync(envFilePath)) { dotenv_1.default.config({ path: envFilePath }); appEnv = dotenv_1.default.config({ path: envFilePath }).parsed; } else if (fs_1.default.existsSync(path_1.default.resolve(const_1.CLI_DIR, ".env"))) { dotenv_1.default.config({ path: path_1.default.resolve(const_1.CLI_DIR, ".env") }); appEnv = dotenv_1.default.config({ path: path_1.default.resolve(const_1.CLI_DIR, ".env") }).parsed; } else { // logWarn(`[SERVER] No ENV file detected.`); isNoEnvFile = true; } // dev mode? exports.isDevMode = (0, object_1.toBool)(process.env.DEV_MODE); exports.isServerMode = (0, trimNull_1.default)(process.env.CLI_MODE) === "server"; appEnv.CLI_MODE = (0, trimNull_1.default)(process.env.CLI_MODE); const table = new cli_table_1.default(); if ((0, trimNull_1.default)(process.env.CLI_MODE) === "server") { // console.log(chalk.yellow(`------ process.env ------`)); Object.entries(process.env).forEach(([key, val]) => { if (isNoEnvFile) { const value = lodash_1.default.truncate(val.toString(), { length: 60, separator: " " }); if (key.indexOf("npm_") === -1) table.push([key, value]); } else { if (Object.keys(appEnv).includes(key)) { const value = lodash_1.default.truncate(val.toString(), { length: 60, separator: " " }); table.push([key, value]); } } }); if (isTestEnv) console.log(table.toString()); } var EnvName; (function (EnvName) { EnvName["DEVELOPMENT"] = "development"; EnvName["TEST"] = "test"; EnvName["TEST_CI"] = "test_ci"; EnvName["STAGING"] = "staging"; EnvName["CANARY"] = "canary"; EnvName["PRODUCTION"] = "production"; })(EnvName = exports.EnvName || (exports.EnvName = {})); // Plugins function toInt(obj, valueDefault) { return typeof obj !== "undefined" ? object_1.default.toInt(obj) : valueDefault; } // Main config class Config { static get ENV() { var _a; return (_a = EnvName[this.grab("NODE_ENV", "development").toUpperCase()]) !== null && _a !== void 0 ? _a : EnvName.DEVELOPMENT; } static get NODE_ENV() { return this.ENV; } static get BASE_PATH() { return (0, trimNull_1.default)(process.env.BASE_PATH) || ""; } static get LOCATION() { return (0, trimNull_1.default)(process.env.LOCATION) || "unknown"; } static getBasePath(extendedPath = "") { const { BASE_PATH } = this; return (BASE_PATH === "" ? BASE_PATH : `/${BASE_PATH}`) + extendedPath; } static get BASE_URL() { return (0, trimNull_1.default)(process.env.BASE_URL) || `http://localhost:${process.env.PORT}`; } static get PORT() { return (0, trimNull_1.default)(process.env.PORT) || 4000; } static get DB_URI() { return (0, trimNull_1.default)(process.env.DB_URI) || (0, trimNull_1.default)(process.env.MONGODB_URI); } static get DB_NAME() { return (0, trimNull_1.default)(process.env.DB_NAME) || "diginext"; } static get CLI_MODE() { return (0, trimNull_1.default)(process.env.CLI_MODE) || "client"; } static get SERVER_TYPE() { return (process.env.SERVER_TYPE || "default"); } static get DEFAULT_DX_SERVER_URL() { return "https://app.dxup.dev"; } static get DX_SITE_URL() { return (0, trimNull_1.default)(process.env.DX_SITE_URL) ? (0, trimNull_1.default)(process.env.DX_SITE_URL) : "https://dxup.dev"; } static get DX_SITE_BACKUP_URL() { return (0, trimNull_1.default)(process.env.DX_SITE_BACKUP_URL) ? (0, trimNull_1.default)(process.env.DX_SITE_BACKUP_URL) : "https://diginext.site"; } static get DX_API_BASE_URL() { // return "http://localhost:4000"; return (0, trimNull_1.default)(process.env.DX_API_BASE_URL) || "https://api.dxup.dev"; } static get DX_API_BASE_PATH() { return "/api/v1/admin"; } static get DX_API_URL() { return `${this.DX_API_BASE_URL}${this.DX_API_BASE_PATH}`; } static get BUILDER() { return (0, trimNull_1.default)(process.env.BUILDER) || "podman"; } /** * Share resource credentials to workspaces? * - If TRUE -> Everyone can read the cloud resource's credentials (such as secrets, service accounts, api access token,...) * - If FALSE -> Only the server can read cloud resource's credentials, others (CLI & API) won't, even Workspace Administrators or Moderators. * @default false */ static get SHARE_RESOURCE_CREDENTIAL() { return typeof (0, trimNull_1.default)(process.env.SHARE_RESOURCE_CREDENTIAL) === "undefined" ? false : (0, trimNull_1.default)(process.env.SHARE_RESOURCE_CREDENTIAL) === "true" || process.env.SHARE_RESOURCE_CREDENTIAL === "TRUE" || process.env.SHARE_RESOURCE_CREDENTIAL === "1"; } static get DISABLE_INPECT_MEMORY() { return (0, object_1.toBool)(process.env.DISABLE_INPECT_MEMORY); } static get SECONDS_INPECT_MEMORY() { return toInt(process.env.SECONDS_INPECT_MEMORY, 30); } static get REDIS_HOST() { return (0, trimNull_1.default)(process.env.REDIS_HOST) || ""; } static get REDIS_PORT() { return toInt(process.env.REDIS_PORT, 0); } static get REDIS_PASSWORD() { return (0, trimNull_1.default)(process.env.REDIS_PASSWORD) || ""; } static get CORS_WHITELIST() { return (0, trimNull_1.default)(process.env.CORS_WHITELIST) ? (0, trimNull_1.default)(process.env.CORS_WHITELIST).split(";") : ["localhost", "192.168", "127.0", "digitop.vn"]; } } exports.Config = Config; Config.grab = (key, defaultValue = "") => process.env[key] ? (0, trimNull_1.default)(process.env[key]) : appEnv[key] ? (0, trimNull_1.default)(appEnv[key]) : defaultValue; // Extensions const IsDev = function () { return Config.ENV === EnvName.DEVELOPMENT; }; exports.IsDev = IsDev; const IsTest = function () { return Config.ENV === EnvName.TEST; }; exports.IsTest = IsTest; const IsTestCI = function () { return Config.ENV === EnvName.TEST_CI; }; exports.IsTestCI = IsTestCI; const IsStag = function () { return Config.ENV === EnvName.STAGING; }; exports.IsStag = IsStag; const IsProd = function () { return Config.ENV === EnvName.PRODUCTION; }; exports.IsProd = IsProd; const IsCanary = function () { return Config.ENV === EnvName.CANARY; }; exports.IsCanary = IsCanary; exports.superAccounts = ["topgroup", "digitop"]; const IsSuperAccount = function (slug) { return exports.superAccounts.includes(slug); }; exports.IsSuperAccount = IsSuperAccount;