UNPKG

f2e-server3

Version:

f2e-server 3.0

88 lines (87 loc) 4.15 kB
"use strict"; 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;