UNPKG

locadot

Version:

Secure your local development environment with HTTPS and custom domains like dev.localhost.

44 lines (43 loc) 1.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSSL = createSSL; const appdata_path_1 = __importDefault(require("appdata-path")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const CERT_PATH = (0, appdata_path_1.default)("locadot"); const mkcert_1 = require("mkcert"); const logger_1 = __importDefault(require("./logger")); async function createSSL(domain) { logger_1.default.info(`🔐 Preparing SSL cert for ${domain}`); const KEY_FILE = path_1.default.join(CERT_PATH, domain + ".key"); const CERT_FILE = path_1.default.join(CERT_PATH, domain + ".pem"); if (fs_1.default.existsSync(KEY_FILE) && fs_1.default.existsSync(CERT_FILE)) { logger_1.default.info(`🔄 Using existing certificate for ${domain}`); const key = fs_1.default.readFileSync(KEY_FILE, "utf-8"); const cert = fs_1.default.readFileSync(CERT_FILE, "utf-8"); return { key, cert }; } // Otherwise, generate a new one logger_1.default.info(`🔐 Generating SSL cert for ${domain}`); const ca = await (0, mkcert_1.createCA)({ organization: "Locadot", countryCode: "IN", state: "DevState", locality: "DevTown", validity: 365, }); const cert = await (0, mkcert_1.createCert)({ domains: [domain], ca: ca, validity: 365, organization: "Locadot", }); if (!fs_1.default.existsSync(CERT_PATH)) fs_1.default.mkdirSync(CERT_PATH, { recursive: true }); fs_1.default.writeFileSync(KEY_FILE, cert.key); fs_1.default.writeFileSync(CERT_FILE, cert.cert); return { key: cert.key, cert: cert.cert }; }