UNPKG

f2e-server3

Version:

f2e-server 3.0

134 lines (133 loc) 4.52 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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NativeTemplatedApp = void 0; const request_1 = require("./request"); const response_1 = require("./response"); const http = __importStar(require("node:http")); const https = __importStar(require("node:https")); const misc_1 = require("../../utils/misc"); const node_fs_1 = require("node:fs"); class NativeTemplatedApp { listeners = []; server; constructor(options) { const listeners = this.listeners; const callback = async (request, response) => { const req = new request_1.NativeRequest(request); const resp = new response_1.NativeResponse(request, response); const location = new URL(request.url || '/', 'http://localhost'); for (let i = listeners.length - 1; i >= 0; i--) { const { glob, handler } = listeners[i]; if ((0, misc_1.minimatch)(location.pathname, glob)) { await handler(resp, req); } } }; this.server = options ? https.createServer({ passphrase: options.passphrase + '', key: (0, node_fs_1.readFileSync)(options.key_file_name + ''), cert: (0, node_fs_1.readFileSync)(options.cert_file_name + ''), }, callback) : http.createServer(callback); } listen(port, options, cb) { let host = '0.0.0.0'; if (typeof port === 'string') { host = port; port = options; } this.server.listen(Number(port), host, function () { if (typeof cb === 'function') cb(); }); return this; } listen_unix(cb, path) { throw new Error('Method not implemented.'); } get(pattern, handler) { return this.any(pattern, handler); } post(pattern, handler) { return this.any(pattern, handler); } options(pattern, handler) { return this.any(pattern, handler); } del(pattern, handler) { return this.any(pattern, handler); } patch(pattern, handler) { return this.any(pattern, handler); } put(pattern, handler) { return this.any(pattern, handler); } head(pattern, handler) { return this.any(pattern, handler); } connect(pattern, handler) { throw new Error('Method not implemented.'); } trace(pattern, handler) { throw new Error('Method not implemented.'); } any(pattern, handler) { this.listeners.push({ glob: pattern.toString(), handler, }); return this; } ws(pattern, behavior) { throw new Error('Method not implemented.'); } publish(topic, message, isBinary, compress) { throw new Error('Method not implemented.'); } numSubscribers(topic) { throw new Error('Method not implemented.'); } addServerName(hostname, options) { throw new Error('Method not implemented.'); } domain(domain) { throw new Error('Method not implemented.'); } removeServerName(hostname) { throw new Error('Method not implemented.'); } missingServerName(cb) { throw new Error('Method not implemented.'); } filter(cb) { throw new Error('Method not implemented.'); } close() { this.server?.close(); return this; } } exports.NativeTemplatedApp = NativeTemplatedApp;