icore v0.1.38
Iсore
Icore
is a framework a high-level to build strict web application. Allows the developer to focus on the final handler.
Features
This module for Node.js® implemented by following the ECMAScript® 2018 Language Specification Standard
- strict interface
- not immutable context
- routing implements a binary tree
- all asynchronous functions on promises
- error handling
Install
To use iсore
in your project, run:
npm i icore
Table of Contents
- Event: 'error'
- constructor: new Route(options)
- route.route(options)
- route.find(paths[, index])
- route.method
- route.handler
- route.finish
- route.childs
- constructor: new Inquiry(req, cookie)
- inq.read(options)
- inq.pipe(stream[, options])
- inq.queries
- inq.method
- inq.headers
- inq.context
class Application
constructor: new Application(options)
options
[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)host
[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) To start the development server using a different defaulthostname
orIP address
. This will start a TCP server listening for connections on the provided host. Default:'localhost'
.port
[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) TCP port of remote server. Is required parameter.timeout
[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) The number of milliseconds of inactivity before a socket is presumed to have timed out. A value of0
will disable the timeout behavior on incoming connections. Default:12e4
(2 minutes).maxHeadersCount
[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Limits maximum incoming headers count. If set to0
, no limit will be applied. Default:2e3
.
For example:
const icore = require('icore');
const app = new icore.Application({
port: 3000
});
app.listenHttp(router)
router
<Router> Is instance class Route this module.- returns: [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) Following successful listen, the Promise is resolved with an value with a
undefined
.
Starts the HTTP server listening for connections. These arguments are documented on nodejs.org.
index.js
const icore = require('icore');
const router = require('./router');
const app = new icore.Application({
port: 3000
});
app.listenHttp(router);
Start script in terminal:
$ node index.js
Server started on http://localhost:3000
app.close()
- returns: [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) Following successful listen, the Promise is resolved with an value with a
undefined
.
Stops the server from accepting new connections.
app.server
In this variable, an instance of the server will be assigned after a successful listen installation.
app.context
This empty [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object). You may add additional properties to inq.context by editing app.context
.
app.context.db = db();
class Route
The router is made up of instances class Route
.
Routing will be done:
Method | URL |
---|---|
GET | http://example.com |
GET | http://example.com/catalog |
GET | http://example.com/logs_0 |
GET | http://example.com/logs_1 |
POST | http://example.com/catalog/books |
Extends the Node.js events module.
Event: 'error'
The 'error'
event is emitted if throw an exception. The listener callback is passed a single Error
argument when called.
The server is not closed when the 'error'
event is emitted.
constructor: new Route(options)
When defining a route in icore
you need one basic element - the handler
.
options
[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)handler
[AsyncFunction](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) takes an instance of a class Inquiry as context. The handler option must return a object, a promise, or throw an error.path
[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) The path option must be a string, though it can contain regular expression. Default:''
.method
[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) The property of the method can be any valid HTTP method in lower case letters. Default:'get'
.finish
[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) If set totrue
, the find returns the current route. Default:false
.
Simple example use Route class:
const homepage = new Route({
async handler(inq) {
return {
status: 200,
header: {
'Content-Type': 'text/html; charset=utf-8'
},
body: 'Hello World!'
};
}
});
route.route(options)
Uses the same interface as the class constructor.
const catalog = homepage.route({
method: 'catalog',
async handler(inq) {
return {};
}
});
route.find(paths, index)
This method is intended for class Application use.
paths
[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) The result of the transform of the URL.index
[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Is cursor for next call find. Default:0
.- returns: Returns
null
if the route is not found.
route.method
- [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) The property of the method can be any valid HTTP method in lower case letters. Default:
'get'
.
route.handler
- [AsyncFunction](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) takes an instance of a class Inquiry as context. The handler option must return a object, a promise, or throw an error.
route.finish
- [Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) If set to
true
, the find returns the current route. Default:false
.
route.childs
- [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Nested route list.
class Inquiry
A class Application context encapsulates node's request and response objects into a single object which provides many helpful methods for writing web applications and APIs.
constructor: new Inquiry(req, cookie)
The constructor will be auto called whenever a new request
is established.
req
[http.IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage) Node's request object.cookie
[coookie.entries](https://www.npmjs.com/package/cookie-httponly#cookieentries) The values of the incoming cookie.
inq.read(options)
options
[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)maxSize
[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Limits the amount of memory all fields together (except files) can allocate in bytes. If this value is exceeded, an 'error' event is emitted. Default:Infinity
.
- returns: [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) Following successful listen, the Promise is resolved with an value with a
string
type.
To start reading the body of the incoming message.
async handler(inq) {
const data = await inq.read();
}
inq.pipe(stream, options)
stream
[stream.Writable](https://nodejs.org/api/stream.html#stream_class_stream_writable)options
[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)maxSize
[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Limits the amount of memory all fields together (except files) can allocate in bytes. If this value is exceeded, an 'error' event is emitted. Default:Infinity
.
To start reading the body of an incoming message as a stream
async handler(inq) {
inq.pipe(writeStream);
}
inq.queries
- [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Get raw query string void of
?
.
inq.method
- [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) The property of the method can be any valid HTTP method in lower case letters. Default:
'get'
.
inq.headers
- [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Response header object.
inq.context
5 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago