UNPKG

midnight

Version:

Web framework for building modern web applications

91 lines (90 loc) 2.96 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var path = require("path"); var request = require("./lib/request.js"); var response = require("./lib/response.js"); var loggerMiddleware = require("./lib/middleware/logger"); var queryMiddleware = require("./lib/middleware/query"); var VERSION = "0.2.1"; /** * @typedef {import("midnight").Request} Request * @typedef {import("midnight").Response} Response * @typedef {import("midnight").Next} Next * @typedef {import("midnight").Middleware} Middleware * @typedef {import("midnight").Route} Route * @typedef {import("midnight").Plugin} Plugin * @typedef {import("midnight").Logger} Logger * @typedef {import("midnight").App} App * @typedef {import("midnight").Config} Config */ /** * @type {() => import("midnight").App} */ module.exports = function () { /** @type {import("midnight").App} */ var app = { stack: [], routes: [], plugins: [], cache: {}, config: {}, globals: { title: "Midnight ".concat(VERSION), }, log: require("./lib/log.js")(2), // Configuration configure: function (object) { return require("./lib/config.js")(this, object); }, // Start the server start: function (config) { return require("./lib/server.js")(this, config); }, // Router route: function (pattern, handler) { return require("./lib/route.js")(this, pattern, handler); }, // Utils utils: require("./lib/utils.js"), // Middleware use: function (fn) { return require("./lib/middleware.js").use(this, fn); }, // Plugins plugin: function (plugin, options) { return require("./lib/plugin.js").attach(this, plugin, options); }, }; // Built-in middleware to extend request and response objects app.use(function (req, res, next) { // Extend request app.utils.merge(req, __assign({ app: app, originalUrl: req.url }, request)); // Extend response app.utils.merge(res, __assign({ app: app }, response)); next(); }); // Request logger middleware app.use(loggerMiddleware); // Query parameter middleware app.use(queryMiddleware); // Default configuration app.configure({ host: "127.0.0.1", port: 8080, views: "/views", root: path.dirname(require.main.filename), // Application root path env: "development", // Development mode version: VERSION, }); return app; };