tspace-mysql
Version:
Tspace MySQL is a promise-based ORM for Node.js, designed with modern TypeScript and providing type safety for schema databases.
88 lines • 3.39 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadOptionsEnvironment = void 0;
const tools_1 = require("../tools");
const dotenv_1 = __importDefault(require("dotenv"));
const environment = () => {
const NODE_ENV = process.env?.NODE_ENV;
const env = tools_1.Tool.path.join(tools_1.Tool.path.resolve(), '.env');
if (NODE_ENV == null)
return env;
const envWithEnviroment = tools_1.Tool.path.join(tools_1.Tool.path.resolve(), `.env.${NODE_ENV}`);
if (tools_1.Tool.fs.existsSync(envWithEnviroment))
return envWithEnviroment;
return env;
};
dotenv_1.default.config({ path: environment() });
const ENV = process.env;
const rawEnv = {
HOST: ENV.DB_HOST ?? 'localhost',
PORT: ENV.DB_PORT ?? 3306,
USERNAME: ENV.DB_USERNAME ?? ENV.DB_USER,
PASSWORD: ENV.DB_PASSWORD ?? '',
DATABASE: ENV.DB_DATABASE,
CONNECTION_LIMIT: ENV.DB_CONNECTION_LIMIT ?? 151,
QUEUE_LIMIT: ENV.DB_QUEUE_LIMIT ?? 0,
TIMEOUT: ENV.DB_TIMEOUT ?? 1000 * 90,
CHARSET: ENV.DB_CHARSET ?? 'utf8mb4',
CONNECTION_ERROR: ENV.DB_CONNECTION_ERROR ?? false,
CONNECTION_SUCCESS: ENV.DB_CONNECTION_SUCCESS ?? false,
WAIT_FOR_CONNECTIONS: ENV.DB_WAIT_FOR_CONNECTIONS ?? true,
DATE_STRINGS: ENV.DB_DATE_STRINGS ?? false,
KEEP_ALIVE_DELAY: ENV.DB_KEEP_ALIVE_DELAY ?? 0,
ENABLE_KEEP_ALIVE: ENV.DB_ENABLE_KEEP_ALIVE ?? true,
MULTIPLE_STATEMENTS: ENV.DB_MULTIPLE_STATEMENTS ?? false,
CACHE: ENV.DB_CACHE ?? 'memory'
};
const parseEnv = (env) => {
const parsed = {};
for (const [key, value] of Object.entries(env)) {
if (value == null)
continue;
if (value === '') {
parsed[key] = value;
continue;
}
if (!isNaN(Number(value))) {
(parsed)[key] = Number(value);
continue;
}
if (typeof value === 'string' && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
(parsed)[key] = value.toLowerCase() === 'true';
continue;
}
parsed[key] = value;
}
return parsed;
};
const env = parseEnv(rawEnv);
const loadOptionsEnvironment = () => {
const environment = () => {
const NODE_ENV = process.env?.NODE_ENV;
const env = tools_1.Tool.path.join(tools_1.Tool.path.resolve(), '.env');
if (NODE_ENV == null)
return env;
const envWithEnviroment = tools_1.Tool.path.join(tools_1.Tool.path.resolve(), `.env.${NODE_ENV}`);
if (tools_1.Tool.fs.existsSync(envWithEnviroment))
return envWithEnviroment;
return env;
};
dotenv_1.default.config({ path: environment() });
const ENV = process.env;
const rawEnv = {
host: ENV?.DB_HOST || ENV?.TSPACE_HOST,
port: ENV?.DB_PORT || ENV?.TSPACE_PORT || 3306,
username: ENV?.DB_USERNAME || ENV?.TSPACE_USERNAME,
password: ENV?.DB_PASSWORD || ENV?.TSPACE_PASSWORD || '',
database: ENV?.DB_DATABASE || ENV?.TSPACE_DATABASE,
};
//@ts-ignore
const env = parseEnv(rawEnv);
return Object.freeze(env);
};
exports.loadOptionsEnvironment = loadOptionsEnvironment;
exports.default = Object.freeze(env);
//# sourceMappingURL=index.js.map