UNPKG

http-micro

Version:

Micro-framework on top of node's http module

76 lines (75 loc) 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const http = require("http"); const https = require("https"); const utils = require("./utils"); const context_1 = require("./context"); const server_utils_1 = require("./server-utils"); class Application { constructor(_contextFactory, _errorHandler = utils.defaultErrorHandler, _fallbackHandler = utils.defaultFallbackNotFoundHandler) { this._contextFactory = _contextFactory; this._errorHandler = _errorHandler; this._fallbackHandler = _fallbackHandler; this.middlewares = []; } createServer(secureOpts) { let isHttps = secureOpts ? true : false; const server = isHttps ? https.createServer(secureOpts, this.createHandler()) : http.createServer(this.createHandler()); return server_utils_1.attachServerExtensions(server); } createHandler() { const fn = utils.compose(...this.middlewares); return (req, res) => { let errorHandler = this._errorHandler || utils.defaultErrorHandler; let fallbackHandler = this._fallbackHandler || utils.defaultFallbackNotFoundHandler; let context = null; try { context = this._contextFactory(this, req, res); fn(context, () => fallbackHandler(context, null)) .catch((err) => errorHandler(err, req, res, context)); } catch (err) { errorHandler(err, req, res, context); } }; } use(...middleware) { if (!this.middlewares) this.middlewares = []; utils.addMiddlewares(middleware, this.middlewares); return this; } setErrorHandler(handler) { this._errorHandler = handler; } setFallbackHandler(handler) { this._fallbackHandler = handler; } getItem(key) { if (this.items) { return this.items.get(key); } return null; } setItem(key, value) { if (!this.items) { this.items = new Map(); } this.items.set(key, value); } hasItem(key) { if (this.items) { return this.items.has(key); } return false; } } exports.Application = Application; class App extends Application { constructor() { super(context_1.contextFactory); } } exports.App = App;