Galerie und tage
This commit is contained in:
43
node_modules/wrap-fn/History.md
generated
vendored
Normal file
43
node_modules/wrap-fn/History.md
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
0.1.5 / 2016-02-13
|
||||
==================
|
||||
|
||||
* fix note
|
||||
* deprecation note.
|
||||
|
||||
0.1.4 / 2015-01-21
|
||||
==================
|
||||
|
||||
* slim down the package
|
||||
* Use `files` property in package.json
|
||||
* Rename component dependency `visionmedia/co` to `tj/co`
|
||||
|
||||
0.1.3 / 2015-01-16
|
||||
==================
|
||||
|
||||
* fix return bug
|
||||
|
||||
0.1.2 / 2015-01-16
|
||||
==================
|
||||
|
||||
* catch uncaught synchronous errors in async functions
|
||||
|
||||
0.1.1 / 2014-09-24
|
||||
==================
|
||||
|
||||
* Add "scripts" field in `component.json`
|
||||
|
||||
0.1.0 / 2014-09-17
|
||||
==================
|
||||
|
||||
* Promises, synchronous errors and tests
|
||||
|
||||
0.0.2 / 2014-08-31
|
||||
==================
|
||||
|
||||
* use return value on sync functions
|
||||
|
||||
0.0.1 / 2010-01-03
|
||||
==================
|
||||
|
||||
* Initial release
|
||||
79
node_modules/wrap-fn/Readme.md
generated
vendored
Normal file
79
node_modules/wrap-fn/Readme.md
generated
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
**Deprecated in favor of: [wrapped](https://github.com/matthewmueller/wrapped).**
|
||||
|
||||
# wrap-fn
|
||||
|
||||
Low-level wrapper to support sync, async, promises, and generator functions.
|
||||
|
||||
## Installation
|
||||
|
||||
Node:
|
||||
|
||||
```bash
|
||||
$ npm install wrap-fn
|
||||
```
|
||||
|
||||
Duo:
|
||||
|
||||
```js
|
||||
var wrap = require('matthewmueller/wrap-fn');
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
function *fn(a, b) {
|
||||
yield wait(100);
|
||||
// ...
|
||||
}
|
||||
|
||||
function next(err) {
|
||||
// Called after
|
||||
}
|
||||
|
||||
wrap(fn, next)('a', 'b')
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### `wrap(fn, [done])([args, ...])`
|
||||
|
||||
Wrap `fn` to support sync, async, promises and generator functions. Call `done` when finished.
|
||||
|
||||
`wrap` returns a function which you can pass arguments to or set the context.
|
||||
|
||||
```js
|
||||
wrap(fn).call(user, a, b, c, d);
|
||||
```
|
||||
|
||||
## Test
|
||||
|
||||
```js
|
||||
npm install
|
||||
make test
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2014 Matthew Mueller <mattmuelle@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
125
node_modules/wrap-fn/index.js
generated
vendored
Normal file
125
node_modules/wrap-fn/index.js
generated
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* Module Dependencies
|
||||
*/
|
||||
|
||||
var noop = function(){};
|
||||
var co = require('co');
|
||||
|
||||
/**
|
||||
* Export `wrap-fn`
|
||||
*/
|
||||
|
||||
module.exports = wrap;
|
||||
|
||||
/**
|
||||
* Wrap a function to support
|
||||
* sync, async, and gen functions.
|
||||
*
|
||||
* @param {Function} fn
|
||||
* @param {Function} done
|
||||
* @return {Function}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function wrap(fn, done) {
|
||||
done = once(done || noop);
|
||||
|
||||
return function() {
|
||||
// prevents arguments leakage
|
||||
// see https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#3-managing-arguments
|
||||
var i = arguments.length;
|
||||
var args = new Array(i);
|
||||
while (i--) args[i] = arguments[i];
|
||||
|
||||
var ctx = this;
|
||||
|
||||
// done
|
||||
if (!fn) {
|
||||
return done.apply(ctx, [null].concat(args));
|
||||
}
|
||||
|
||||
// async
|
||||
if (fn.length > args.length) {
|
||||
// NOTE: this only handles uncaught synchronous errors
|
||||
try {
|
||||
return fn.apply(ctx, args.concat(done));
|
||||
} catch (e) {
|
||||
return done(e);
|
||||
}
|
||||
}
|
||||
|
||||
// generator
|
||||
if (generator(fn)) {
|
||||
return co(fn).apply(ctx, args.concat(done));
|
||||
}
|
||||
|
||||
// sync
|
||||
return sync(fn, done).apply(ctx, args);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrap a synchronous function execution.
|
||||
*
|
||||
* @param {Function} fn
|
||||
* @param {Function} done
|
||||
* @return {Function}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function sync(fn, done) {
|
||||
return function () {
|
||||
var ret;
|
||||
|
||||
try {
|
||||
ret = fn.apply(this, arguments);
|
||||
} catch (err) {
|
||||
return done(err);
|
||||
}
|
||||
|
||||
if (promise(ret)) {
|
||||
ret.then(function (value) { done(null, value); }, done);
|
||||
} else {
|
||||
ret instanceof Error ? done(ret) : done(null, ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is `value` a generator?
|
||||
*
|
||||
* @param {Mixed} value
|
||||
* @return {Boolean}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function generator(value) {
|
||||
return value
|
||||
&& value.constructor
|
||||
&& 'GeneratorFunction' == value.constructor.name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Is `value` a promise?
|
||||
*
|
||||
* @param {Mixed} value
|
||||
* @return {Boolean}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function promise(value) {
|
||||
return value && 'function' == typeof value.then;
|
||||
}
|
||||
|
||||
/**
|
||||
* Once
|
||||
*/
|
||||
|
||||
function once(fn) {
|
||||
return function() {
|
||||
var ret = fn.apply(this, arguments);
|
||||
fn = noop;
|
||||
return ret;
|
||||
};
|
||||
}
|
||||
30
node_modules/wrap-fn/package.json
generated
vendored
Normal file
30
node_modules/wrap-fn/package.json
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "wrap-fn",
|
||||
"version": "0.1.5",
|
||||
"license": "MIT",
|
||||
"description": "support sync, async, and generator functions",
|
||||
"scripts": {
|
||||
"test": "make test"
|
||||
},
|
||||
"keywords": [
|
||||
"browser",
|
||||
"wrap",
|
||||
"generator"
|
||||
],
|
||||
"author": "Matthew Mueller <mattmuelle@gmail.com>",
|
||||
"repository": "MatthewMueller/wrap-fn",
|
||||
"dependencies": {
|
||||
"co": "3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"duo": "^0.8.2",
|
||||
"duo-test": "^0.3.2",
|
||||
"generator-support": "0.0.1",
|
||||
"gnode": "0.0.8",
|
||||
"mocha": "*",
|
||||
"should": "*"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user