f2e-server3
Version:
f2e-server 3.0
88 lines (87 loc) • 4.15 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 __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createServer = exports.createBuilder = void 0;
const server_engine_1 = __importDefault(require("./server-engine"));
const config_1 = require("./utils/config");
const logger_1 = __importDefault(require("./utils/logger"));
const memory_tree_1 = __importDefault(require("./memory-tree"));
const node_process_1 = require("node:process");
const server_1 = require("./server");
const misc_1 = require("./utils/misc");
__exportStar(require("./interface"), exports);
__exportStar(require("./utils"), exports);
__exportStar(require("./routes"), exports);
__exportStar(require("./memory-tree/interface"), exports);
__exportStar(require("./middlewares/interface"), exports);
__exportStar(require("./middlewares/auth"), exports);
__exportStar(require("./middlewares/routes"), exports);
const { App, SSLApp } = server_engine_1.default;
const createBuilder = async (options) => {
const beginTime = Date.now();
const conf = (0, config_1.getConfigResult)(options);
const { root, watch, namehash, dest } = conf;
const events = await (0, config_1.getConfigEvents)(options);
const { onMemoryInit, onMemoryLoad, buildFilter, watchFilter, outputFilter, onGet, onSet, buildWatcher } = events;
const memoryTree = (0, memory_tree_1.default)({
root, dest: dest, watch, namehash,
buildFilter, watchFilter, outputFilter, onGet, onSet, buildWatcher
});
try {
await onMemoryInit(memoryTree.store);
await memoryTree.input("");
await onMemoryLoad(memoryTree.store);
await memoryTree.output("");
logger_1.default.info(`Build success in ${Date.now() - beginTime}ms`);
}
catch (e) {
logger_1.default.error(e);
(0, node_process_1.exit)(1);
}
return { conf, events, memoryTree };
};
exports.createBuilder = createBuilder;
const createServer = async (options) => {
const startTime = Date.now();
const conf = (0, config_1.getConfigResult)(options);
const { root, watch, dest, mode, namehash, port, host, ssl, onServerCreate } = conf;
if (mode === 'build') {
return (0, exports.createBuilder)(options);
}
const events = await (0, config_1.getConfigEvents)(options);
const { onMemoryLoad, onMemoryInit, buildFilter, watchFilter, outputFilter, onGet, onSet, buildWatcher } = events;
const memoryTree = (0, memory_tree_1.default)(mode === 'dev' ? {
root, watch, namehash, dest,
buildFilter, watchFilter, outputFilter, onGet, onSet, buildWatcher
} : { root, buildFilter }); // prod模式下,仅加载 buildFilter
await onMemoryInit(memoryTree.store);
await memoryTree.input("");
await onMemoryLoad(memoryTree.store);
logger_1.default.debug('server init: ' + (Date.now() - startTime) + 'ms');
watch && memoryTree.watch();
const app = ssl ? SSLApp(ssl) : App();
app.listen(host, port, function () {
logger_1.default.debug(`Server start on ${conf.ssl ? 'https' : 'http'}://${host === '0.0.0.0' ? misc_1.ServerIP : host}:${conf.port}`);
onServerCreate(app, conf);
})
.any('/*', (0, server_1.server_all)(conf, events, memoryTree));
return { app, conf, events, memoryTree };
};
exports.createServer = createServer;
exports.default = exports.createServer;