mirror of
https://github.com/abrendan/MicDropMessages.git
synced 2025-08-25 22:12:02 +02:00
Initial commit
This commit is contained in:
89
node_modules/server/server.js
generated
vendored
Normal file
89
node_modules/server/server.js
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
// server for Node.js (https://serverjs.io/)
|
||||
// A simple and powerful server for Node.js.
|
||||
|
||||
// Internal modules
|
||||
const config = require('./src/config');
|
||||
const router = require('./router');
|
||||
const reply = require('./reply');
|
||||
const join = require('./src/join/index.js');
|
||||
const modern = require('./src/modern');
|
||||
|
||||
// Create a context per-request
|
||||
const context = (self, req, res) => Object.assign(req, self, { req, res });
|
||||
|
||||
// Get the functions from the plugins for a special point
|
||||
const hook = (ctx, name) => ctx.plugins.map(p => p[name]).filter(p => p);
|
||||
|
||||
|
||||
|
||||
// Main function
|
||||
const Server = async (...middle) => {
|
||||
|
||||
// Initialize the global context
|
||||
const ctx = {};
|
||||
|
||||
// First parameter can be:
|
||||
// - options: Number || Object (cannot be ID'd)
|
||||
// - middleware: undefined || null || Boolean || Function || Array
|
||||
const opts = (
|
||||
typeof middle[0] === 'undefined' ||
|
||||
typeof middle[0] === 'boolean' ||
|
||||
typeof middle[0] === 'string' ||
|
||||
middle[0] === null ||
|
||||
middle[0] instanceof Function ||
|
||||
middle[0] instanceof Array
|
||||
) ? {} : middle.shift();
|
||||
|
||||
// Set the options for the context of Server.js
|
||||
ctx.options = await config(opts, module.exports.plugins);
|
||||
|
||||
// Only enabled plugins through the config
|
||||
ctx.plugins = module.exports.plugins.filter(p => ctx.options[p.name]);
|
||||
|
||||
ctx.utils = { modern: modern };
|
||||
ctx.modern = modern;
|
||||
|
||||
// All the init beforehand
|
||||
for (let init of hook(ctx, 'init')) {
|
||||
await init(ctx);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// PLUGIN middleware
|
||||
ctx.middle = join(hook(ctx, 'before'), middle, hook(ctx, 'after'));
|
||||
|
||||
// Main thing here
|
||||
ctx.app.use((req, res) => ctx.middle(context(ctx, req, res)));
|
||||
|
||||
|
||||
|
||||
// Different listening methods
|
||||
await Promise.all(hook(ctx, 'listen').map(listen => listen(ctx)));
|
||||
|
||||
// After launching it (already proxified)
|
||||
for (let launch of hook(ctx, 'launch')) {
|
||||
await launch(ctx);
|
||||
}
|
||||
|
||||
return ctx;
|
||||
};
|
||||
|
||||
module.exports = Server;
|
||||
module.exports.router = router;
|
||||
module.exports.reply = reply;
|
||||
module.exports.utils = {
|
||||
modern: modern
|
||||
};
|
||||
module.exports.plugins = [
|
||||
require('./plugins/log'),
|
||||
require('./plugins/express'),
|
||||
require('./plugins/parser'),
|
||||
require('./plugins/static'),
|
||||
require('./plugins/socket'),
|
||||
require('./plugins/session'),
|
||||
require('./plugins/security'),
|
||||
require('./plugins/favicon'),
|
||||
require('./plugins/compress'),
|
||||
require('./plugins/final')
|
||||
];
|
Reference in New Issue
Block a user