mirror of
https://gitlab.silvrtree.co.uk/martind2000/frontexpress.git
synced 2025-02-10 23:09:16 +00:00
added PATCH http method - Fixed middleware callbacks
This commit is contained in:
parent
5b45250bf5
commit
4ab3fa2626
@ -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.
|
||||
|
||||
|
135
frontexpress.js
135
frontexpress.js
@ -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
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
@ -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
|
||||
|
@ -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';
|
||||
|
@ -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) { }
|
||||
|
||||
|
||||
/**
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user