http-proxy-middleware
Advanced tools
Comparing version 0.19.1 to 0.20.0-beta.0
# Changelog | ||
## next | ||
- chore: drop node 6 (BREAKING CHANGE) | ||
- chore: update to micromatch@4 ([BREAKING CHANGE](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md#400---2019-03-20)) | ||
- chore: update dev dependencies | ||
- refactor: migrate to typescript ([#328](https://github.com/chimurai/http-proxy-middleware/pull/328)) | ||
- feat(middleware): Promise / async support ([#328](https://github.com/chimurai/http-proxy-middleware/pull/328/files#diff-7890bfeb41abb0fc0ef2670749c84077R50)) | ||
- refactor: remove legacy options `proxyHost` and `proxyTable` (BREAKING CHANGE) | ||
## [v0.19.1](https://github.com/chimurai/http-proxy-middleware/releases/tag/v0.19.1) | ||
@@ -4,0 +13,0 @@ |
{ | ||
"name": "http-proxy-middleware", | ||
"version": "0.19.1", | ||
"version": "0.20.0-beta.0", | ||
"description": "The one-liner node.js proxy middleware for connect, express and browser-sync", | ||
"main": "index.js", | ||
"main": "dist/index.js", | ||
"files": [ | ||
"index.js", | ||
"lib" | ||
"dist" | ||
], | ||
"scripts": { | ||
"clean": "rm -rf coverage", | ||
"lint": "prettier \"**/*.{js,md}\" --list-different", | ||
"lint:fix": "prettier \"**/*.{js,md}\" --write", | ||
"test": "npm run lint && mocha --recursive --colors --reporter spec", | ||
"cover": "npm run clean && istanbul cover ./node_modules/mocha/bin/_mocha -- --recursive", | ||
"coveralls": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- --recursive --reporter spec && istanbul-coveralls && npm run clean" | ||
"lint": "yarn lint:prettier && yarn lint:tslint", | ||
"lint:prettier": "prettier --check \"**/*.{js,ts,md}\"", | ||
"lint:tslint": "yarn tslint -c tslint.json '{lib,test}/**/*.ts'", | ||
"lint:fix": "prettier --write \"**/*.{js,ts,md}\"", | ||
"build": "tsc", | ||
"pretest": "yarn build", | ||
"test": "jest --runInBand", | ||
"precover": "yarn clean && npm run build", | ||
"cover": "jest --runInBand --coverage", | ||
"precoveralls": "yarn clean && npm run build", | ||
"coveralls": "jest --runInBand --coverage --coverageReporters=text-lcov | coveralls", | ||
"postcoveralls": "yarn clean" | ||
}, | ||
@@ -46,30 +52,35 @@ "repository": { | ||
"@commitlint/config-conventional": "^7.1.2", | ||
"@types/express": "^4.16.1", | ||
"@types/http-proxy": "^1.17.0", | ||
"@types/is-glob": "^4.0.0", | ||
"@types/jest": "^24.0.11", | ||
"@types/lodash": "^4.14.123", | ||
"@types/micromatch": "^3.1.0", | ||
"@types/node": "^12.0.4", | ||
"browser-sync": "^2.26.3", | ||
"chai": "^4.2.0", | ||
"connect": "^3.6.6", | ||
"coveralls": "^3.0.2", | ||
"coveralls": "^3.0.3", | ||
"express": "^4.16.4", | ||
"husky": "^1.2.0", | ||
"istanbul": "^0.4.5", | ||
"istanbul-coveralls": "^1.0.3", | ||
"mocha": "^5.2.0", | ||
"mocha-lcov-reporter": "1.3.0", | ||
"opn": "^5.4.0", | ||
"precise-commits": "^1.0.2", | ||
"husky": "^2.3.0", | ||
"jest": "^24.5.0", | ||
"open": "^6.3.0", | ||
"prettier": "^1.15.2", | ||
"ws": "^6.1.2" | ||
"ts-jest": "^24.0.0", | ||
"tslint": "^5.14.0", | ||
"tslint-config-prettier": "^1.18.0", | ||
"typescript": "^3.4.1", | ||
"ws": "^7.0.0" | ||
}, | ||
"dependencies": { | ||
"http-proxy": "^1.17.0", | ||
"is-glob": "^4.0.0", | ||
"is-glob": "^4.0.1", | ||
"lodash": "^4.17.11", | ||
"micromatch": "^3.1.10" | ||
"micromatch": "^4.0.2" | ||
}, | ||
"engines": { | ||
"node": ">=4.0.0" | ||
"node": ">=8.0.0" | ||
}, | ||
"husky": { | ||
"hooks": { | ||
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS", | ||
"pre-commit": "precise-commits" | ||
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS" | ||
} | ||
@@ -76,0 +87,0 @@ }, |
109
README.md
@@ -6,3 +6,3 @@ # http-proxy-middleware | ||
[![dependency Status](https://img.shields.io/david/chimurai/http-proxy-middleware.svg?style=flat-square)](https://david-dm.org/chimurai/http-proxy-middleware#info=dependencies) | ||
[![dependency Status](https://snyk.io/test/npm/http-proxy-middleware/badge.svg)](https://snyk.io/test/npm/http-proxy-middleware) | ||
[![dependency Status](https://snyk.io/test/npm/http-proxy-middleware/badge.svg?style=flat-square)](https://snyk.io/test/npm/http-proxy-middleware) | ||
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) | ||
@@ -19,9 +19,12 @@ | ||
```javascript | ||
var express = require('express') | ||
var proxy = require('http-proxy-middleware') | ||
var express = require('express'); | ||
var proxy = require('http-proxy-middleware'); | ||
var app = express() | ||
var app = express(); | ||
app.use('/api', proxy({ target: 'http://www.example.org', changeOrigin: true })) | ||
app.listen(3000) | ||
app.use( | ||
'/api', | ||
proxy({ target: 'http://www.example.org', changeOrigin: true }) | ||
); | ||
app.listen(3000); | ||
@@ -73,5 +76,5 @@ // http://localhost:3000/api/foo/bar -> http://www.example.org/api/foo/bar | ||
```javascript | ||
var proxy = require('http-proxy-middleware') | ||
var proxy = require('http-proxy-middleware'); | ||
var apiProxy = proxy('/api', { target: 'http://www.example.org' }) | ||
var apiProxy = proxy('/api', { target: 'http://www.example.org' }); | ||
// \____/ \_____________________________/ | ||
@@ -94,3 +97,3 @@ // | | | ||
// shorthand syntax for the example above: | ||
var apiProxy = proxy('http://www.example.org/api') | ||
var apiProxy = proxy('http://www.example.org/api'); | ||
``` | ||
@@ -106,4 +109,4 @@ | ||
// include dependencies | ||
var express = require('express') | ||
var proxy = require('http-proxy-middleware') | ||
var express = require('express'); | ||
var proxy = require('http-proxy-middleware'); | ||
@@ -124,11 +127,11 @@ // proxy middleware options | ||
} | ||
} | ||
}; | ||
// create the proxy (without context) | ||
var exampleProxy = proxy(options) | ||
var exampleProxy = proxy(options); | ||
// mount `exampleProxy` in web server | ||
var app = express() | ||
app.use('/api', exampleProxy) | ||
app.listen(3000) | ||
var app = express(); | ||
app.use('/api', exampleProxy); | ||
app.listen(3000); | ||
``` | ||
@@ -181,6 +184,6 @@ | ||
var filter = function(pathname, req) { | ||
return pathname.match('^/api') && req.method === 'GET' | ||
} | ||
return pathname.match('^/api') && req.method === 'GET'; | ||
}; | ||
var apiProxy = proxy(filter, { target: 'http://www.example.org' }) | ||
var apiProxy = proxy(filter, { target: 'http://www.example.org' }); | ||
``` | ||
@@ -234,3 +237,3 @@ | ||
// replace the default console log provider. | ||
return require('winston') | ||
return require('winston'); | ||
} | ||
@@ -242,3 +245,3 @@ ``` | ||
function logProvider(provider) { | ||
var logger = new (require('winston')).Logger() | ||
var logger = new (require('winston')).Logger(); | ||
@@ -251,10 +254,7 @@ var myCustomProvider = { | ||
error: logger.error | ||
} | ||
return myCustomProvider | ||
}; | ||
return myCustomProvider; | ||
} | ||
``` | ||
- (DEPRECATED) **option.proxyHost**: Use `option.changeOrigin = true` instead. | ||
- (DEPRECATED) **option.proxyTable**: Use `option.router` instead. | ||
### http-proxy events | ||
@@ -270,6 +270,6 @@ | ||
'Content-Type': 'text/plain' | ||
}) | ||
}); | ||
res.end( | ||
'Something went wrong. And we are reporting a custom error message.' | ||
) | ||
); | ||
} | ||
@@ -282,4 +282,4 @@ ``` | ||
function onProxyRes(proxyRes, req, res) { | ||
proxyRes.headers['x-added'] = 'foobar' // add new header to response | ||
delete proxyRes.headers['x-removed'] // remove header from response | ||
proxyRes.headers['x-added'] = 'foobar'; // add new header to response | ||
delete proxyRes.headers['x-removed']; // remove header from response | ||
} | ||
@@ -293,3 +293,3 @@ ``` | ||
// add custom header to request | ||
proxyReq.setHeader('x-added', 'foobar') | ||
proxyReq.setHeader('x-added', 'foobar'); | ||
// or log the req | ||
@@ -304,3 +304,3 @@ } | ||
// add custom header | ||
proxyReq.setHeader('X-Special-Proxy-Header', 'foobar') | ||
proxyReq.setHeader('X-Special-Proxy-Header', 'foobar'); | ||
} | ||
@@ -314,3 +314,3 @@ ``` | ||
// listen for messages coming FROM the target here | ||
proxySocket.on('data', hybiParseAndLogMessage) | ||
proxySocket.on('data', hybiParseAndLogMessage); | ||
} | ||
@@ -323,3 +323,3 @@ ``` | ||
// view disconnected websocket connections | ||
console.log('Client disconnected') | ||
console.log('Client disconnected'); | ||
} | ||
@@ -402,9 +402,9 @@ ``` | ||
```javascript | ||
proxy('http://www.example.org:8000/api') | ||
proxy('http://www.example.org:8000/api'); | ||
// proxy('/api', {target: 'http://www.example.org:8000'}); | ||
proxy('http://www.example.org:8000/api/books/*/**.json') | ||
proxy('http://www.example.org:8000/api/books/*/**.json'); | ||
// proxy('/api/books/*/**.json', {target: 'http://www.example.org:8000'}); | ||
proxy('http://www.example.org:8000/api', { changeOrigin: true }) | ||
proxy('http://www.example.org:8000/api', { changeOrigin: true }); | ||
// proxy('/api', {target: 'http://www.example.org:8000', changeOrigin: true}); | ||
@@ -419,3 +419,6 @@ ``` | ||
```javascript | ||
app.use('/api', proxy({ target: 'http://www.example.org', changeOrigin: true })) | ||
app.use( | ||
'/api', | ||
proxy({ target: 'http://www.example.org', changeOrigin: true }) | ||
); | ||
``` | ||
@@ -432,9 +435,9 @@ | ||
// verbose api | ||
proxy('/', { target: 'http://echo.websocket.org', ws: true }) | ||
proxy('/', { target: 'http://echo.websocket.org', ws: true }); | ||
// shorthand | ||
proxy('http://echo.websocket.org', { ws: true }) | ||
proxy('http://echo.websocket.org', { ws: true }); | ||
// shorter shorthand | ||
proxy('ws://echo.websocket.org') | ||
proxy('ws://echo.websocket.org'); | ||
``` | ||
@@ -447,9 +450,9 @@ | ||
```javascript | ||
var wsProxy = proxy('ws://echo.websocket.org', { changeOrigin: true }) | ||
var wsProxy = proxy('ws://echo.websocket.org', { changeOrigin: true }); | ||
var app = express() | ||
app.use(wsProxy) | ||
var app = express(); | ||
app.use(wsProxy); | ||
var server = app.listen(3000) | ||
server.on('upgrade', wsProxy.upgrade) // <-- subscribe to http 'upgrade' | ||
var server = app.listen(3000); | ||
server.on('upgrade', wsProxy.upgrade); // <-- subscribe to http 'upgrade' | ||
``` | ||
@@ -491,12 +494,16 @@ | ||
# install dependencies | ||
$ npm install | ||
$ yarn | ||
# linting | ||
$ npm run lint | ||
$ yarn lint | ||
$ yarn lint:fix | ||
# building (compile typescript to js) | ||
$ yarn build | ||
# unit tests | ||
$ npm test | ||
$ yarn test | ||
# code coverage | ||
$ npm run cover | ||
$ yarn cover | ||
``` | ||
@@ -512,2 +519,2 @@ | ||
Copyright (c) 2015-2018 Steven Chim | ||
Copyright (c) 2015-2019 Steven Chim |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
51162
499
22
634
2
+ Addedbraces@3.0.2(transitive)
+ Addedfill-range@7.0.1(transitive)
+ Addedis-number@7.0.0(transitive)
+ Addedmicromatch@4.0.5(transitive)
+ Addedpicomatch@2.3.1(transitive)
+ Addedto-regex-range@5.0.1(transitive)
- Removedarr-diff@4.0.0(transitive)
- Removedarr-flatten@1.1.0(transitive)
- Removedarr-union@3.1.0(transitive)
- Removedarray-unique@0.3.2(transitive)
- Removedassign-symbols@1.0.0(transitive)
- Removedatob@2.1.2(transitive)
- Removedbase@0.11.2(transitive)
- Removedbraces@2.3.2(transitive)
- Removedcache-base@1.0.1(transitive)
- Removedclass-utils@0.3.6(transitive)
- Removedcollection-visit@1.0.0(transitive)
- Removedcomponent-emitter@1.3.1(transitive)
- Removedcopy-descriptor@0.1.1(transitive)
- Removeddebug@2.6.9(transitive)
- Removeddecode-uri-component@0.2.2(transitive)
- Removeddefine-property@0.2.51.0.02.0.2(transitive)
- Removedexpand-brackets@2.1.4(transitive)
- Removedextend-shallow@2.0.13.0.2(transitive)
- Removedextglob@2.0.4(transitive)
- Removedfill-range@4.0.0(transitive)
- Removedfor-in@1.0.2(transitive)
- Removedfragment-cache@0.2.1(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-value@2.0.6(transitive)
- Removedhas-value@0.3.11.0.0(transitive)
- Removedhas-values@0.1.41.0.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedis-accessor-descriptor@1.0.1(transitive)
- Removedis-buffer@1.1.6(transitive)
- Removedis-data-descriptor@1.0.1(transitive)
- Removedis-descriptor@0.1.71.0.3(transitive)
- Removedis-extendable@0.1.11.0.1(transitive)
- Removedis-number@3.0.0(transitive)
- Removedis-plain-object@2.0.4(transitive)
- Removedis-windows@1.0.2(transitive)
- Removedisarray@1.0.0(transitive)
- Removedisobject@2.1.03.0.1(transitive)
- Removedkind-of@3.2.24.0.06.0.3(transitive)
- Removedmap-cache@0.2.2(transitive)
- Removedmap-visit@1.0.0(transitive)
- Removedmicromatch@3.1.10(transitive)
- Removedmixin-deep@1.3.2(transitive)
- Removedms@2.0.0(transitive)
- Removednanomatch@1.2.13(transitive)
- Removedobject-copy@0.1.0(transitive)
- Removedobject-visit@1.0.1(transitive)
- Removedobject.pick@1.3.0(transitive)
- Removedpascalcase@0.1.1(transitive)
- Removedposix-character-classes@0.1.1(transitive)
- Removedregex-not@1.0.2(transitive)
- Removedrepeat-element@1.1.4(transitive)
- Removedrepeat-string@1.6.1(transitive)
- Removedresolve-url@0.2.1(transitive)
- Removedret@0.1.15(transitive)
- Removedsafe-regex@1.1.0(transitive)
- Removedset-value@2.0.1(transitive)
- Removedsnapdragon@0.8.2(transitive)
- Removedsnapdragon-node@2.1.1(transitive)
- Removedsnapdragon-util@3.0.1(transitive)
- Removedsource-map@0.5.7(transitive)
- Removedsource-map-resolve@0.5.3(transitive)
- Removedsource-map-url@0.4.1(transitive)
- Removedsplit-string@3.1.0(transitive)
- Removedstatic-extend@0.1.2(transitive)
- Removedto-object-path@0.3.0(transitive)
- Removedto-regex@3.0.2(transitive)
- Removedto-regex-range@2.1.1(transitive)
- Removedunion-value@1.0.1(transitive)
- Removedunset-value@1.0.0(transitive)
- Removedurix@0.1.0(transitive)
- Removeduse@3.1.1(transitive)
Updatedis-glob@^4.0.1
Updatedmicromatch@^4.0.2