@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
215 lines (214 loc) • 9.02 kB
JavaScript
;
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;