diff options
Diffstat (limited to 'node_modules/wrappy')
| -rw-r--r-- | node_modules/wrappy/LICENSE | 15 | ||||
| -rw-r--r-- | node_modules/wrappy/README.md | 36 | ||||
| -rw-r--r-- | node_modules/wrappy/package.json | 29 | ||||
| -rw-r--r-- | node_modules/wrappy/wrappy.js | 33 | 
4 files changed, 113 insertions, 0 deletions
diff --git a/node_modules/wrappy/LICENSE b/node_modules/wrappy/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +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. diff --git a/node_modules/wrappy/README.md b/node_modules/wrappy/README.md new file mode 100644 index 0000000..98eab25 --- /dev/null +++ b/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { +  var called = false +  return function () { +    if (called) return +    called = true +    return cb.apply(this, arguments) +  } +}) + +function printBoo () { +  console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json new file mode 100644 index 0000000..1307520 --- /dev/null +++ b/node_modules/wrappy/package.json @@ -0,0 +1,29 @@ +{ +  "name": "wrappy", +  "version": "1.0.2", +  "description": "Callback wrapping utility", +  "main": "wrappy.js", +  "files": [ +    "wrappy.js" +  ], +  "directories": { +    "test": "test" +  }, +  "dependencies": {}, +  "devDependencies": { +    "tap": "^2.3.1" +  }, +  "scripts": { +    "test": "tap --coverage test/*.js" +  }, +  "repository": { +    "type": "git", +    "url": "https://github.com/npm/wrappy" +  }, +  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)", +  "license": "ISC", +  "bugs": { +    "url": "https://github.com/npm/wrappy/issues" +  }, +  "homepage": "https://github.com/npm/wrappy" +} diff --git a/node_modules/wrappy/wrappy.js b/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000..bb7e7d6 --- /dev/null +++ b/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { +  if (fn && cb) return wrappy(fn)(cb) + +  if (typeof fn !== 'function') +    throw new TypeError('need wrapper function') + +  Object.keys(fn).forEach(function (k) { +    wrapper[k] = fn[k] +  }) + +  return wrapper + +  function wrapper() { +    var args = new Array(arguments.length) +    for (var i = 0; i < args.length; i++) { +      args[i] = arguments[i] +    } +    var ret = fn.apply(this, args) +    var cb = args[args.length-1] +    if (typeof ret === 'function' && ret !== cb) { +      Object.keys(cb).forEach(function (k) { +        ret[k] = cb[k] +      }) +    } +    return ret +  } +}  | 
