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) [![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) [![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) ![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. Frontexpress manages routes in browser like [ExpressJS](http://expressjs.com/) does on Node.

View File

@ -6,9 +6,9 @@ var frontexpress = (function () {
* @private * @private
*/ */
var HTTP_METHODS = ['GET', 'POST', 'PUT', 'DELETE']; var HTTP_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
// not supported yet // not supported yet
// HEAD', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'; // HEAD', 'CONNECT', 'OPTIONS', 'TRACE';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj; return typeof obj;
@ -361,61 +361,66 @@ var Middleware = function () {
* @public * @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, [{ 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', key: 'next',
value: function next() { value: function next() {
return true; return true;
@ -811,6 +816,7 @@ var Application = function () {
var _currentRoutes = _this._routes(_request.uri, _request.method); var _currentRoutes = _this._routes(_request.uri, _request.method);
_this._callMiddlewareMethod('exited');
_this._callMiddlewareMethod('entered', _currentRoutes, _request); _this._callMiddlewareMethod('entered', _currentRoutes, _request);
_this._callMiddlewareMethod('updated', _currentRoutes, _request, _response); _this._callMiddlewareMethod('updated', _currentRoutes, _request, _response);
} }
@ -832,15 +838,12 @@ var Application = function () {
_this._callMiddlewareMethod('exited'); _this._callMiddlewareMethod('exited');
}; };
this._callMiddlewareMethod('entered', currentRoutes, request);
document.onreadystatechange = function () { document.onreadystatechange = function () {
// DOM ready state // DOM ready state
switch (document.readyState) { if (document.readyState === 'interactive') {
case 'loading': whenPageIsInteractiveFn();
_this._callMiddlewareMethod('entered', currentRoutes, request);
break;
case 'interactive':
whenPageIsInteractiveFn();
break;
} }
}; };
@ -1007,9 +1010,9 @@ var Application = function () {
_headersFn = httpMethodTransformer.headers, _headersFn = httpMethodTransformer.headers,
_dataFn = httpMethodTransformer.data; _dataFn = httpMethodTransformer.data;
uri = _uriFn ? _uriFn({ uri: uri, headers: headers, data: data }) : uri; req.uri = _uriFn ? _uriFn({ uri: uri, headers: headers, data: data }) : uri;
headers = _headersFn ? _headersFn({ uri: uri, headers: headers, data: data }) : headers; req.headers = _headersFn ? _headersFn({ uri: uri, headers: headers, data: data }) : headers;
data = _dataFn ? _dataFn({ uri: uri, headers: headers, data: data }) : data; req.data = _dataFn ? _dataFn({ uri: uri, headers: headers, data: data }) : data;
} }
// calls middleware exited method // 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 {request, response} = event.state;
const currentRoutes = this._routes(request.uri, request.method); const currentRoutes = this._routes(request.uri, request.method);
this._callMiddlewareMethod('exited');
this._callMiddlewareMethod('entered', currentRoutes, request); this._callMiddlewareMethod('entered', currentRoutes, request);
this._callMiddlewareMethod('updated', currentRoutes, request, response); this._callMiddlewareMethod('updated', currentRoutes, request, response);
} }
@ -104,21 +105,19 @@ export default class Application {
this._callMiddlewareMethod('exited'); this._callMiddlewareMethod('exited');
}; };
this._callMiddlewareMethod('entered', currentRoutes, request);
document.onreadystatechange = () => { document.onreadystatechange = () => {
// DOM ready state // DOM ready state
switch (document.readyState) { if (document.readyState === 'interactive') {
case 'loading':
this._callMiddlewareMethod('entered', currentRoutes, request);
break;
case 'interactive':
whenPageIsInteractiveFn(); whenPageIsInteractiveFn();
break;
} }
}; };
if (['interactive', 'complete'].indexOf(document.readyState) !== -1) { if (['interactive', 'complete'].indexOf(document.readyState) !== -1) {
whenPageIsInteractiveFn(); whenPageIsInteractiveFn();
} }
} }
@ -253,9 +252,9 @@ export default class Application {
const httpMethodTransformer = this.get(`http ${method} transformer`); const httpMethodTransformer = this.get(`http ${method} transformer`);
if (httpMethodTransformer) { if (httpMethodTransformer) {
const {uri: _uriFn, headers: _headersFn, data: _dataFn } = httpMethodTransformer; const {uri: _uriFn, headers: _headersFn, data: _dataFn } = httpMethodTransformer;
uri = _uriFn ? _uriFn({uri, headers, data}) : uri; req.uri = _uriFn ? _uriFn({uri, headers, data}) : uri;
headers = _headersFn ? _headersFn({uri, headers, data}) : headers; req.headers = _headersFn ? _headersFn({uri, headers, data}) : headers;
data = _dataFn ? _dataFn({uri, headers, data}) : data; req.data = _dataFn ? _dataFn({uri, headers, data}) : data;
} }
// calls middleware exited method // calls middleware exited method

View File

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

View File

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

View File

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