on-finished
Advanced tools
+5
-0
@@ -0,1 +1,6 @@ | ||
| 2.1.1 / 2014-10-22 | ||
| ================== | ||
| * Fix handling of pipelined requests | ||
| 2.1.0 / 2014-08-16 | ||
@@ -2,0 +7,0 @@ ================== |
+73
-9
@@ -53,3 +53,3 @@ /*! | ||
| /** | ||
| * Determine is message is already finished. | ||
| * Determine if message is already finished. | ||
| * | ||
@@ -66,3 +66,3 @@ * @param {object} msg | ||
| // OutgoingMessage | ||
| return Boolean(!socket || msg.finished || !socket.writable) | ||
| return Boolean(msg.finished || (socket && !socket.writable)) | ||
| } | ||
@@ -80,2 +80,52 @@ | ||
| /** | ||
| * Attach a finished listener to the message. | ||
| * | ||
| * @param {object} msg | ||
| * @param {function} callback | ||
| * @private | ||
| */ | ||
| function attachFinishedListener(msg, callback) { | ||
| var eeMsg | ||
| var eeSocket | ||
| var finished = false | ||
| function onFinish(error) { | ||
| eeMsg.cancel() | ||
| eeSocket.cancel() | ||
| finished = true | ||
| callback(error) | ||
| } | ||
| // finished on first message event | ||
| eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish) | ||
| function onSocket(socket) { | ||
| // remove listener | ||
| msg.removeListener('socket', onSocket) | ||
| if (finished) return | ||
| if (eeMsg !== eeSocket) return | ||
| // finished on first socket event | ||
| eeSocket = first([[socket, 'error', 'close']], onFinish) | ||
| } | ||
| if (msg.socket) { | ||
| // socket already assigned | ||
| onSocket(msg.socket) | ||
| return | ||
| } | ||
| // wait for socket to be assigned | ||
| msg.on('socket', onSocket) | ||
| if (msg.socket === undefined) { | ||
| // node.js 0.8 patch | ||
| patchAssignSocket(msg, onSocket) | ||
| } | ||
| } | ||
| /** | ||
| * Attach the listener to the message. | ||
@@ -90,3 +140,2 @@ * | ||
| var attached = msg.__onFinished | ||
| var socket = msg.socket | ||
@@ -96,8 +145,3 @@ // create a private single listener with queue | ||
| attached = msg.__onFinished = createListener(msg) | ||
| // finished on first event | ||
| first([ | ||
| [socket, 'error', 'close'], | ||
| [msg, 'end', 'finish'], | ||
| ], attached) | ||
| attachFinishedListener(msg, attached) | ||
| } | ||
@@ -133,1 +177,21 @@ | ||
| } | ||
| /** | ||
| * Patch ServerResponse.prototype.assignSocket for node.js 0.8. | ||
| * | ||
| * @param {ServerResponse} res | ||
| * @param {function} callback | ||
| * @private | ||
| */ | ||
| function patchAssignSocket(res, callback) { | ||
| var assignSocket = res.assignSocket | ||
| if (typeof assignSocket !== 'function') return | ||
| // res.on('socket', callback) is broken in 0.8 | ||
| res.assignSocket = function _assignSocket(socket) { | ||
| assignSocket.call(this, socket) | ||
| callback(socket) | ||
| } | ||
| } |
+6
-6
| { | ||
| "name": "on-finished", | ||
| "description": "Execute a callback when a request closes, finishes, or errors", | ||
| "version": "2.1.0", | ||
| "version": "2.1.1", | ||
| "contributors": [ | ||
@@ -12,10 +12,10 @@ "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||
| "dependencies": { | ||
| "ee-first": "1.0.5" | ||
| "ee-first": "1.1.0" | ||
| }, | ||
| "devDependencies": { | ||
| "istanbul": "0.3.0", | ||
| "mocha": "~1.21.4" | ||
| "istanbul": "0.3.2", | ||
| "mocha": "~2.0.0" | ||
| }, | ||
| "engine": { | ||
| "node": ">= 0.8.0" | ||
| "engines": { | ||
| "node": ">= 0.8" | ||
| }, | ||
@@ -22,0 +22,0 @@ "files": [ |
+17
-5
| # on-finished | ||
| [](https://www.npmjs.org/package/on-finished) | ||
| [](http://nodejs.org/download/) | ||
| [](https://travis-ci.org/jshttp/on-finished) | ||
| [](https://coveralls.io/r/jshttp/on-finished) | ||
| [![NPM Version][npm-image]][npm-url] | ||
| [![NPM Downloads][downloads-image]][downloads-url] | ||
| [![Node.js Version][node-version-image]][node-version-url] | ||
| [![Build Status][travis-image]][travis-url] | ||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||
@@ -77,3 +78,3 @@ Execute a callback when a request closes, finishes, or errors. | ||
| var http = require('http') | ||
| var onFinished = require('finished') | ||
| var onFinished = require('on-finished') | ||
@@ -92,1 +93,12 @@ http.createServer(function onRequest(req, res) { | ||
| [MIT](LICENSE) | ||
| [npm-image]: https://img.shields.io/npm/v/on-finished.svg?style=flat | ||
| [npm-url]: https://npmjs.org/package/on-finished | ||
| [node-version-image]: https://img.shields.io/node/v/on-finished.svg?style=flat | ||
| [node-version-url]: http://nodejs.org/download/ | ||
| [travis-image]: https://img.shields.io/travis/jshttp/on-finished.svg?style=flat | ||
| [travis-url]: https://travis-ci.org/jshttp/on-finished | ||
| [coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished.svg?style=flat | ||
| [coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master | ||
| [downloads-image]: https://img.shields.io/npm/dm/on-finished.svg?style=flat | ||
| [downloads-url]: https://npmjs.org/package/on-finished |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
9824
22.49%151
49.5%103
13.19%2
100%+ Added
- Removed
Updated