webserv
Version:
a quick, flexible, fully typed development server
59 lines • 2.84 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "https", "./startServer", "../log", "pem"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const https_1 = require("https");
const startServer_1 = require("./startServer");
const log_1 = require("../log");
const pem_1 = require("pem");
function createHttpsServer(config) {
return () => __awaiter(this, void 0, void 0, function* () {
const httpsOptions = config.httpsOptions || {};
if (!httpsOptions.key || !httpsOptions.cert) {
const { certificate, clientKey } = yield buildCert();
httpsOptions.key = clientKey;
httpsOptions.cert = certificate;
}
const server = https_1.createServer(httpsOptions, config.onRequest);
config.timeout && server.setTimeout(config.timeout);
return server;
});
}
exports.createHttpsServer = createHttpsServer;
function startHttpsServer(config) {
return startServer_1.startServer(Object.assign(Object.assign({}, config), { createServer: createHttpsServer(config) }));
}
exports.startHttpsServer = startHttpsServer;
function buildCert(pemOptions = { days: 7, selfSigned: true }) {
return __awaiter(this, void 0, void 0, function* () {
log_1.log.info('Creating self-signed cert');
return new Promise((resolve, reject) => {
pem_1.createCertificate(pemOptions, (err, keys) => {
if (err) {
reject(err);
}
else {
resolve(keys);
}
});
});
});
}
});
//# sourceMappingURL=createHttpsServer.js.map