@szegedsw/lib-node
Version:
A little framework published by Szeged Software Zrt. in order to enhance api endpoint security and create reuseable code. Email module, Logging system, and much more. Further improvements are expected.
326 lines • 12 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Env = exports.envPath = void 0;
const child_process_1 = require("child_process");
const fs_1 = __importDefault(require("fs"));
const path_1 = require("path");
const util_1 = require("util");
require("../extensions/extensions");
exports.envPath = (dist = true) => {
switch (process.env.NODE_ENV.trim()) {
case "production":
return `${dist ? "dist/" : ""}.env`;
case "development":
return "src/.env";
default:
return undefined;
}
};
class Env {
constructor() {
// names parameters
Object.defineProperty(this, "envSeparator", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.ENV_SEPARATOR || ",")
});
Object.defineProperty(this, "nodePort", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.NODE_PORT)
});
Object.defineProperty(this, "nodeSsl", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.NODE_SSL)
});
Object.defineProperty(this, "nodeSslKey", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.NODE_SSLKEY)
});
Object.defineProperty(this, "nodeSslCert", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.NODE_SSLCERT)
});
Object.defineProperty(this, "cookieName", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.COOKIE_NAME)
});
Object.defineProperty(this, "cookieSecure", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.COOKIE_SECURE)
});
Object.defineProperty(this, "cookieSecret", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.COOKIE_SECRET)
});
Object.defineProperty(this, "databaseType", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_TYPE)
});
Object.defineProperty(this, "databaseUser", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_USER)
});
Object.defineProperty(this, "databasePassword", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_PASSWORD)
});
Object.defineProperty(this, "databaseAuthSource", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_AUTHSOURCE)
});
Object.defineProperty(this, "databaseHost", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_HOST)
});
Object.defineProperty(this, "databasePort", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_PORT)
});
Object.defineProperty(this, "databaseSid", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_SID)
});
Object.defineProperty(this, "databaseName", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_NAME)
});
Object.defineProperty(this, "databaseOwner", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_OWNER)
});
Object.defineProperty(this, "databaseSsl", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.DATABASE_SSL)
});
Object.defineProperty(this, "databasePoolSize", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_POOL_SIZE)
});
Object.defineProperty(this, "databasePoolMin", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_POOL_MIN)
});
Object.defineProperty(this, "databasePoolMax", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_POOL_MAX)
});
Object.defineProperty(this, "databasePoolIncrement", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_POOL_INCREMENT)
});
Object.defineProperty(this, "databaseIdleTimeout", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_IDLE_TIMEOUT)
});
Object.defineProperty(this, "databaseConnectionTimeout", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_CONNECTION_TIMEOUT)
});
Object.defineProperty(this, "databaseSecret", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DATABASE_SECRET)
});
Object.defineProperty(this, "databaseRownum", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.DATABASE_ROWNUM)
});
Object.defineProperty(this, "emailUser", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.EMAIL_USER)
});
Object.defineProperty(this, "emailPassword", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.EMAIL_PASSWORD)
});
Object.defineProperty(this, "emailHost", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.EMAIL_HOST)
});
Object.defineProperty(this, "emailPort", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.EMAIL_PORT)
});
Object.defineProperty(this, "emailSecure", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.EMAIL_SECURE)
});
Object.defineProperty(this, "emailPoolSize", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.EMAIL_POOL_SIZE)
});
Object.defineProperty(this, "emailLogger", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.EMAIL_LOGGER)
});
Object.defineProperty(this, "emailSubject", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.EMAIL_SUBJECT)
});
Object.defineProperty(this, "emailAdmins", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.EMAIL_ADMINS).split(this.envSeparator())
});
Object.defineProperty(this, "emailEvents", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.EMAIL_EVENTS).split(this.envSeparator())
});
Object.defineProperty(this, "emailRejectUnauthorized", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.EMAIL_REJECT_UNAUTHORIZED || true)
});
Object.defineProperty(this, "sessionTimeout", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.SESSION_TIMEOUT)
});
Object.defineProperty(this, "debugLog", {
enumerable: true,
configurable: true,
writable: true,
value: () => bool(process.env.DEBUG_LOG || 0)
});
Object.defineProperty(this, "auditLogMethods", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.AUDIT_LOG_METHODS).split(this.envSeparator())
});
Object.defineProperty(this, "freeAccessPaths", {
enumerable: true,
configurable: true,
writable: true,
value: () => process.env.FREE_ACCESS_PATHS ? JSON.parse(String(process.env.FREE_ACCESS_PATHS)) : {}
});
Object.defineProperty(this, "publicPaths", {
enumerable: true,
configurable: true,
writable: true,
value: () => (process.env.PUBLIC_PATHS ? String(process.env.PUBLIC_PATHS).split(this.envSeparator()) : [])
});
Object.defineProperty(this, "uploadDirectory", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.UPLOAD_DIRECTORY)
});
Object.defineProperty(this, "downloadDirectory", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.DOWNLOAD_DIRECTORY)
});
Object.defineProperty(this, "pathSeparator", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.PATH_SEPARATOR || path_1.sep)
});
Object.defineProperty(this, "serverVersion", {
enumerable: true,
configurable: true,
writable: true,
value: async () => (await util_1.promisify(child_process_1.exec)("node -p \"require('./package').version\"")).stdout.trim()
});
Object.defineProperty(this, "clientVersion", {
enumerable: true,
configurable: true,
writable: true,
value: () => String(process.env.CLIENT_VERSION)
});
// tslint:disable-next-line: no-magic-numbers
Object.defineProperty(this, "upgradeNoteInterval", {
enumerable: true,
configurable: true,
writable: true,
value: () => Number(process.env.UPGRADE_NOTE_INTERVAL || 60000)
});
}
emailAttachments() {
return (process.env.EMAIL_ATTACHMENTS || "")
.split(",")
.map((attachment) => ({ path: attachment }))
.filter((attachment) => fs_1.default.existsSync(attachment.path));
}
maskPassKeys() {
return process.env.MASK_PASS_KEYS ? String(process.env.MASK_PASS_KEYS).split(this.envSeparator()) : undefined;
}
}
exports.Env = Env;
//# sourceMappingURL=env.js.map