3.0.0 • Published 6 years ago

jsite-server v3.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
6 years ago

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

NameType (default)Description
requestBoolean (true)Handle the "request" event
indexBoolean (true)Allow index.json files
directoryArray (see "Directory Files")Directory files, in order of priority
outputFunction (see "Request Output") / falseFunction for request output
errorFunction (none)Handler for status codes
beforeAnyHandler 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"
        });
    });
}
3.0.0

6 years ago

2.3.3

6 years ago

2.3.2

6 years ago

2.3.1

6 years ago

2.3.0

6 years ago

2.2.1

6 years ago

2.2.0

6 years ago

2.1.7

6 years ago

2.1.6

6 years ago

2.1.5

7 years ago

2.1.4

7 years ago

2.1.3

7 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.16

7 years ago

2.0.15

7 years ago

2.0.14

7 years ago

2.0.13

7 years ago

2.0.12

7 years ago

2.0.11

7 years ago

2.0.10

7 years ago

2.0.9

7 years ago

2.0.8

7 years ago

2.0.7

7 years ago

2.0.6

7 years ago

2.0.5

7 years ago

2.0.4

7 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago