midnight
Version:
Web framework for building modern web applications
91 lines (90 loc) • 2.96 kB
JavaScript
;
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;
};