added PATCH http method - Fixed middleware callbacks

This commit is contained in:
Camel Aissani 2017-06-14 22:47:59 +02:00
parent 5b45250bf5
commit 4ab3fa2626
8 changed files with 87 additions and 85 deletions

View File

@ -4,7 +4,7 @@
[![Code Climate](https://codeclimate.com/github/camelaissani/frontexpress/badges/gpa.svg)](https://codeclimate.com/github/camelaissani/frontexpress)
[![Coverage Status](https://coveralls.io/repos/github/camelaissani/frontexpress/badge.svg?branch=master)](https://coveralls.io/github/camelaissani/frontexpress?branch=master)
![dependencies](https://img.shields.io/gemnasium/mathiasbynens/he.svg)
![Size Shield](https://img.shields.io/badge/size-2.84kb-brightgreen.svg)
![Size Shield](https://img.shields.io/badge/size-2.86kb-brightgreen.svg)
Frontexpress manages routes in browser like [ExpressJS](http://expressjs.com/) does on Node.

View File

@ -6,9 +6,9 @@ var frontexpress = (function () {
* @private
*/
var HTTP_METHODS = ['GET', 'POST', 'PUT', 'DELETE'];
var HTTP_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
// not supported yet
// HEAD', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH';
// HEAD', 'CONNECT', 'OPTIONS', 'TRACE';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
@ -361,61 +361,66 @@ var Middleware = function () {
* @public
*/
// entered(request) { }
/**
* Invoked by the app before a new ajax request is sent or before the DOM is unloaded.
* See Application#_callMiddlewareExited documentation for details.
*
* Override this method to add your custom behaviour
*
* @param {Object} request
* @public
*/
// exited(request) { }
/**
* Invoked by the app after an ajax request has responded or on DOM ready
* (document.readyState === 'interactive').
* See Application#_callMiddlewareUpdated documentation for details.
*
* Override this method to add your custom behaviour
*
* @param {Object} request
* @param {Object} response
* @public
*/
// updated(request, response) { }
/**
* Invoked by the app when an ajax request has failed.
*
* Override this method to add your custom behaviour
*
* @param {Object} request
* @param {Object} response
* @public
*/
// failed(request, response) { }
/**
* Allow the hand over to the next middleware object or function.
*
* Override this method and return `false` to break execution of
* middleware chain.
*
* @return {Boolean} `true` by default
*
* @public
*/
createClass(Middleware, [{
key: 'entered',
value: function entered(request) {}
/**
* Invoked by the app before a new ajax request is sent or before the DOM is unloaded.
* See Application#_callMiddlewareExited documentation for details.
*
* Override this method to add your custom behaviour
*
* @param {Object} request
* @public
*/
}, {
key: 'exited',
value: function exited(request) {}
/**
* Invoked by the app after an ajax request has responded or on DOM ready
* (document.readyState === 'interactive').
* See Application#_callMiddlewareUpdated documentation for details.
*
* Override this method to add your custom behaviour
*
* @param {Object} request
* @param {Object} response
* @public
*/
}, {
key: 'updated',
value: function updated(request, response) {}
/**
* Invoked by the app when an ajax request has failed.
*
* Override this method to add your custom behaviour
*
* @param {Object} request
* @param {Object} response
* @public
*/
}, {
key: 'failed',
value: function failed(request, response) {}
/**
* Allow the hand over to the next middleware object or function.
*
* Override this method and return `false` to break execution of
* middleware chain.
*
* @return {Boolean} `true` by default
*
* @public
*/
}, {
key: 'next',
value: function next() {
return true;
@ -811,6 +816,7 @@ var Application = function () {
var _currentRoutes = _this._routes(_request.uri, _request.method);
_this._callMiddlewareMethod('exited');
_this._callMiddlewareMethod('entered', _currentRoutes, _request);
_this._callMiddlewareMethod('updated', _currentRoutes, _request, _response);
}
@ -832,15 +838,12 @@ var Application = function () {
_this._callMiddlewareMethod('exited');
};
this._callMiddlewareMethod('entered', currentRoutes, request);
document.onreadystatechange = function () {
// DOM ready state
switch (document.readyState) {
case 'loading':
_this._callMiddlewareMethod('entered', currentRoutes, request);
break;
case 'interactive':
whenPageIsInteractiveFn();
break;
if (document.readyState === 'interactive') {
whenPageIsInteractiveFn();
}
};
@ -1007,9 +1010,9 @@ var Application = function () {
_headersFn = httpMethodTransformer.headers,
_dataFn = httpMethodTransformer.data;
uri = _uriFn ? _uriFn({ uri: uri, headers: headers, data: data }) : uri;
headers = _headersFn ? _headersFn({ uri: uri, headers: headers, data: data }) : headers;
data = _dataFn ? _dataFn({ uri: uri, headers: headers, data: data }) : data;
req.uri = _uriFn ? _uriFn({ uri: uri, headers: headers, data: data }) : uri;
req.headers = _headersFn ? _headersFn({ uri: uri, headers: headers, data: data }) : headers;
req.data = _dataFn ? _dataFn({ uri: uri, headers: headers, data: data }) : data;
}
// calls middleware exited method

2
frontexpress.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -83,6 +83,7 @@ export default class Application {
const {request, response} = event.state;
const currentRoutes = this._routes(request.uri, request.method);
this._callMiddlewareMethod('exited');
this._callMiddlewareMethod('entered', currentRoutes, request);
this._callMiddlewareMethod('updated', currentRoutes, request, response);
}
@ -104,21 +105,19 @@ export default class Application {
this._callMiddlewareMethod('exited');
};
this._callMiddlewareMethod('entered', currentRoutes, request);
document.onreadystatechange = () => {
// DOM ready state
switch (document.readyState) {
case 'loading':
this._callMiddlewareMethod('entered', currentRoutes, request);
break;
case 'interactive':
if (document.readyState === 'interactive') {
whenPageIsInteractiveFn();
break;
}
};
if (['interactive', 'complete'].indexOf(document.readyState) !== -1) {
whenPageIsInteractiveFn();
}
}
@ -253,9 +252,9 @@ export default class Application {
const httpMethodTransformer = this.get(`http ${method} transformer`);
if (httpMethodTransformer) {
const {uri: _uriFn, headers: _headersFn, data: _dataFn } = httpMethodTransformer;
uri = _uriFn ? _uriFn({uri, headers, data}) : uri;
headers = _headersFn ? _headersFn({uri, headers, data}) : headers;
data = _dataFn ? _dataFn({uri, headers, data}) : data;
req.uri = _uriFn ? _uriFn({uri, headers, data}) : uri;
req.headers = _headersFn ? _headersFn({uri, headers, data}) : headers;
req.data = _dataFn ? _dataFn({uri, headers, data}) : data;
}
// calls middleware exited method

View File

@ -3,6 +3,6 @@
* @private
*/
export default ['GET', 'POST', 'PUT', 'DELETE'];
export default ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
// not supported yet
// HEAD', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH';
// HEAD', 'CONNECT', 'OPTIONS', 'TRACE';

View File

@ -27,7 +27,7 @@ export default class Middleware {
* @public
*/
// entered(request) { }
entered(request) { }
/**
@ -40,7 +40,7 @@ export default class Middleware {
* @public
*/
// exited(request) { }
exited(request) { }
/**
@ -55,7 +55,7 @@ export default class Middleware {
* @public
*/
// updated(request, response) { }
updated(request, response) { }
/**
@ -67,7 +67,7 @@ export default class Middleware {
* @param {Object} response
* @public
*/
// failed(request, response) { }
failed(request, response) { }
/**

View File

@ -1,6 +1,6 @@
{
"name": "frontexpress",
"version": "1.0.3",
"version": "1.1.0",
"description": "Frontexpress manages routes in browser like ExpressJS on Node",
"main": "dist/frontexpress.js",
"jsnext:main": "lib/frontexpress.js",