initial commit
This commit is contained in:
		
							
								
								
									
										15
									
								
								node_modules/inflight/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								node_modules/inflight/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| The ISC License | ||||
|  | ||||
| Copyright (c) Isaac Z. Schlueter | ||||
|  | ||||
| Permission to use, copy, modify, and/or distribute this software for any | ||||
| purpose with or without fee is hereby granted, provided that the above | ||||
| copyright notice and this permission notice appear in all copies. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR | ||||
| IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
							
								
								
									
										37
									
								
								node_modules/inflight/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								node_modules/inflight/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| # inflight | ||||
|  | ||||
| Add callbacks to requests in flight to avoid async duplication | ||||
|  | ||||
| ## USAGE | ||||
|  | ||||
| ```javascript | ||||
| var inflight = require('inflight') | ||||
|  | ||||
| // some request that does some stuff | ||||
| function req(key, callback) { | ||||
|   // key is any random string.  like a url or filename or whatever. | ||||
|   // | ||||
|   // will return either a falsey value, indicating that the | ||||
|   // request for this key is already in flight, or a new callback | ||||
|   // which when called will call all callbacks passed to inflightk | ||||
|   // with the same key | ||||
|   callback = inflight(key, callback) | ||||
|  | ||||
|   // If we got a falsey value back, then there's already a req going | ||||
|   if (!callback) return | ||||
|  | ||||
|   // this is where you'd fetch the url or whatever | ||||
|   // callback is also once()-ified, so it can safely be assigned | ||||
|   // to multiple events etc.  First call wins. | ||||
|   setTimeout(function() { | ||||
|     callback(null, key) | ||||
|   }, 100) | ||||
| } | ||||
|  | ||||
| // only assigns a single setTimeout | ||||
| // when it dings, all cbs get called | ||||
| req('foo', cb1) | ||||
| req('foo', cb2) | ||||
| req('foo', cb3) | ||||
| req('foo', cb4) | ||||
| ``` | ||||
							
								
								
									
										54
									
								
								node_modules/inflight/inflight.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								node_modules/inflight/inflight.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| var wrappy = require('wrappy') | ||||
| var reqs = Object.create(null) | ||||
| var once = require('once') | ||||
|  | ||||
| module.exports = wrappy(inflight) | ||||
|  | ||||
| function inflight (key, cb) { | ||||
|   if (reqs[key]) { | ||||
|     reqs[key].push(cb) | ||||
|     return null | ||||
|   } else { | ||||
|     reqs[key] = [cb] | ||||
|     return makeres(key) | ||||
|   } | ||||
| } | ||||
|  | ||||
| function makeres (key) { | ||||
|   return once(function RES () { | ||||
|     var cbs = reqs[key] | ||||
|     var len = cbs.length | ||||
|     var args = slice(arguments) | ||||
|  | ||||
|     // XXX It's somewhat ambiguous whether a new callback added in this | ||||
|     // pass should be queued for later execution if something in the | ||||
|     // list of callbacks throws, or if it should just be discarded. | ||||
|     // However, it's such an edge case that it hardly matters, and either | ||||
|     // choice is likely as surprising as the other. | ||||
|     // As it happens, we do go ahead and schedule it for later execution. | ||||
|     try { | ||||
|       for (var i = 0; i < len; i++) { | ||||
|         cbs[i].apply(null, args) | ||||
|       } | ||||
|     } finally { | ||||
|       if (cbs.length > len) { | ||||
|         // added more in the interim. | ||||
|         // de-zalgo, just in case, but don't call again. | ||||
|         cbs.splice(0, len) | ||||
|         process.nextTick(function () { | ||||
|           RES.apply(null, args) | ||||
|         }) | ||||
|       } else { | ||||
|         delete reqs[key] | ||||
|       } | ||||
|     } | ||||
|   }) | ||||
| } | ||||
|  | ||||
| function slice (args) { | ||||
|   var length = args.length | ||||
|   var array = [] | ||||
|  | ||||
|   for (var i = 0; i < length; i++) array[i] = args[i] | ||||
|   return array | ||||
| } | ||||
							
								
								
									
										29
									
								
								node_modules/inflight/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/inflight/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| { | ||||
|   "name": "inflight", | ||||
|   "version": "1.0.6", | ||||
|   "description": "Add callbacks to requests in flight to avoid async duplication", | ||||
|   "main": "inflight.js", | ||||
|   "files": [ | ||||
|     "inflight.js" | ||||
|   ], | ||||
|   "dependencies": { | ||||
|     "once": "^1.3.0", | ||||
|     "wrappy": "1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "tap": "^7.1.2" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "test": "tap test.js --100" | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "https://github.com/npm/inflight.git" | ||||
|   }, | ||||
|   "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)", | ||||
|   "bugs": { | ||||
|     "url": "https://github.com/isaacs/inflight/issues" | ||||
|   }, | ||||
|   "homepage": "https://github.com/isaacs/inflight", | ||||
|   "license": "ISC" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user