jsite-server

3.0.0 • Public • Published

JSite Server

Installation

npm

npm install jsite-server

Usage

const JSiteServer = require("jsite-server");
 
/**
 * Initiate Server
 */
let Server1 = new JSiteServer();
 
// Specify options, no callback
let Server2 = new JSiteServer({
    request: false
});
 
// Default options, with callback
let Server3 = new JSiteServer(function (error) {
    console.log(error ? error : "Started.");
});
 
// Specify options, with callback
let Server4 = new JSiteServer({
    request: false
}, function (error) {
    console.log(error ? error : "Started.")
});
 
/**
 * Start Listening
 */
Server1.listen();
 
// Specify port
Server2.listen(8080);
 
// Specify port, with delay
Server3.listen(80, 2000);

Events

From http.Server

New

  • complete: Emitted each time the request output is finished (see "output")

Documentation

Options

Name Type (default) Description
request Boolean (true) Handle the "request" event
index Boolean (true) Allow index.json files
directory Array (see "Directory Files") Directory files, in order of priority
output Function (see "Request Output") / false Function for request output
error Function (none) Handler for status codes
before Any Handler for pre-serving

Directory Files (default)

["index.js", "index.html", "index.json"]

"index.json" will only be used when in "index" mode.

Request Output (default)

Output is called within an Array.map(), the following variables are available:

  • Argument 1 (p in default) - URL (or file) path, with trailing slash.
  • Argument 2 (p_i in default) - Item index within the Array being mapped.
  • request - http.IncomingMessage for the current request.
  • info - Object with "headers" (Array), "data" (Readable / String), "status" (Number) properties.

Default output function:

function(p, p_i) {
    if (p_i === 0) p += ` (${new Date().toISOString()})`;
    if (p_i === request.url.prev.length - 1) p += ` [${info.status}]`;
    return "\t" + p.replace(/\\/g, "/");
}

Error Handler (example)

Handler used for HTTP status code pages, defaults to just code and description.

Example status code handler:

function(status) {
    return new Promise((resolve, reject) => {
        let file = path.join(__dirname, "public", status + ".html");
        return fs.stat(file, e => {
            if (e) return reject(status);
            return resolve({
                data: fs.createReadStream(file),
                status
            });
        });
    });
}

"Before" Handler (example)

You can process/provide information to the request using the "before" handler. This could be used for logging, or adding global variables to each request handler. You can provide this is any data type, functions will be executed (including Promises).

The returned value of the "before" handler will be stored into request.extra.

Example before handler:

function(request) {
    return new Promise((resolve, reject) => {
        return resolve({
            foo: "bar"
        });
    });
}

Readme

Keywords

none

Package Sidebar

Install

npm i jsite-server

Weekly Downloads

0

Version

3.0.0

License

MIT

Unpacked Size

136 kB

Total Files

65

Last publish

Collaborators

  • lukesrw