transduce-async
Advanced tools
+2
-1
| { | ||
| "node":true, | ||
| "strict":true | ||
| "strict":true, | ||
| "asi":true | ||
| } |
+4
-11
| { | ||
| "name": "transduce-async", | ||
| "version": "0.1.1", | ||
| "version": "0.2.0", | ||
| "description": "Async transducers with Promises, defer, delay", | ||
@@ -32,16 +32,9 @@ "main": "transduce-async.js", | ||
| "any-promise": "~0.1.0", | ||
| "transduce-util": "~0.1.0", | ||
| "transformer-protocol": "~0.1.0", | ||
| "iterator-protocol": "~0.1.0", | ||
| "transduce-impl-toarray": "~0.1.0", | ||
| "transduce-reduced": "~0.1.0", | ||
| "transduce-compose": "~0.1.0" | ||
| "transduce": "~0.4.1" | ||
| }, | ||
| "devDependencies": { | ||
| "tape": "~3.0.0", | ||
| "any-transduce": "~0.2.0", | ||
| "transduce": "~0.2.0", | ||
| "tape": "~3.0.3", | ||
| "any-transduce": "~0.4.0", | ||
| "transducers-js": "~0.4.135", | ||
| "transducers.js": "~0.2.3", | ||
| "transduce-push": "~0.1.0", | ||
| "promise": "~6.0.1", | ||
@@ -48,0 +41,0 @@ "rsvp": "~3.0.16", |
+118
-110
@@ -1,10 +0,9 @@ | ||
| "use strict"; | ||
| var comp = require('transduce-compose'), | ||
| Prom = require('any-promise'), | ||
| ip = require('iterator-protocol'), | ||
| xfp = require('transformer-protocol'), | ||
| red = require('transduce-reduced'), | ||
| transduceToArray = require('transduce-impl-toarray'), | ||
| transformer = xfp.transformer, | ||
| undef; | ||
| 'use strict' | ||
| var Prom = require('any-promise'), | ||
| comp = require('transduce/util/compose'), | ||
| arrayPush = require('transduce/util/arrayPush'), | ||
| isReduced = require('transduce/util/isReduced'), | ||
| unreduced = require('transduce/util/unreduced'), | ||
| transformer = require('transduce/transformer/transformer'), | ||
| iterator = require('transduce/iterator/iterator') | ||
@@ -15,6 +14,6 @@ var impl = module.exports = { | ||
| reduce: reduce, | ||
| toArray: toArray, | ||
| defer: defer, | ||
| delay: delay | ||
| }; | ||
| impl.toArray = transduceToArray(impl); | ||
| } | ||
@@ -25,16 +24,25 @@ function compose(/*args*/){ | ||
| len = fromArgs.length, | ||
| i = 0; | ||
| i = 0 | ||
| for(; i < len; i++){ | ||
| toArgs.push(fromArgs[i]); | ||
| toArgs.push(defer()); | ||
| toArgs.push(fromArgs[i]) | ||
| toArgs.push(defer()) | ||
| } | ||
| return comp.apply(null, toArgs); | ||
| return comp.apply(null, toArgs) | ||
| } | ||
| function toArray(xf, coll){ | ||
| var init = [], | ||
| push = arrayPush | ||
| if(coll === void 0){ | ||
| return reduce(push, init, xf) | ||
| } | ||
| return transduce(xf, push, init, coll) | ||
| } | ||
| var _transduce = spread(__transduce), | ||
| _reduce = spread(__reduce); | ||
| _reduce = spread(__reduce) | ||
| function spread(fn, ctx){ | ||
| return function(arr){ | ||
| return fn.apply(ctx, arr); | ||
| }; | ||
| return fn.apply(ctx, arr) | ||
| } | ||
| } | ||
@@ -45,98 +53,98 @@ | ||
| .all([xf, f, init, coll]) | ||
| .then(_transduce); | ||
| .then(_transduce) | ||
| } | ||
| function __transduce(xf, f, init, coll){ | ||
| f = transformer(f); | ||
| xf = xf(f); | ||
| return reduce(xf, init, coll); | ||
| f = transformer(f) | ||
| xf = xf(f) | ||
| return reduce(xf, init, coll) | ||
| } | ||
| function reduce(xf, init, coll){ | ||
| if(coll === undef){ | ||
| coll = init; | ||
| init = xf.init(); | ||
| if(coll === void 0){ | ||
| coll = init | ||
| init = xf.init() | ||
| } | ||
| return Prom | ||
| .all([xf, init, coll]) | ||
| .then(_reduce); | ||
| .then(_reduce) | ||
| } | ||
| function __reduce(xf, init, coll){ | ||
| xf = transformer(xf); | ||
| var reduce = new Reduce(ip.iterator(coll), init, xf); | ||
| return reduce.iterate(); | ||
| xf = transformer(xf) | ||
| var reduce = new Reduce(iterator(coll), init, xf) | ||
| return reduce.iterate() | ||
| } | ||
| function Reduce(iter, init, xf){ | ||
| var self = this; | ||
| self.xf = xf; | ||
| self.iter = iter; | ||
| self.value = init; | ||
| self._step = spread(self.__step, self); | ||
| self._loop = spread(self.__loop, self); | ||
| var self = this | ||
| self.xf = xf | ||
| self.iter = iter | ||
| self.value = init | ||
| self._step = spread(self.__step, self) | ||
| self._loop = spread(self.__loop, self) | ||
| } | ||
| Reduce.prototype.iterate = function(){ | ||
| var self = this; | ||
| var self = this | ||
| return Prom | ||
| .all([self.next()]) | ||
| .then(self._step); | ||
| }; | ||
| .then(self._step) | ||
| } | ||
| Reduce.prototype.next = function(){ | ||
| var self = this; | ||
| var self = this | ||
| return new Prom(function(resolve, reject){ | ||
| try { | ||
| var item = self.iter.next(); | ||
| var item = self.iter.next() | ||
| if(!item.done){ | ||
| item = Prom | ||
| .all([item.value]) | ||
| .then(_iteratorValue); | ||
| .then(_iteratorValue) | ||
| } | ||
| resolve(item); | ||
| resolve(item) | ||
| } catch(e){ | ||
| reject(e); | ||
| reject(e) | ||
| } | ||
| }); | ||
| }; | ||
| }) | ||
| } | ||
| Reduce.prototype.__step = function(item){ | ||
| var self = this; | ||
| var self = this | ||
| return new Prom(function(resolve, reject){ | ||
| try { | ||
| var result; | ||
| var result | ||
| if(item.done){ | ||
| result = self.xf.result(self.value); | ||
| result = self.xf.result(self.value) | ||
| } else { | ||
| result = Prom | ||
| .all([self.xf.step(self.value, item.value)]) | ||
| .then(self._loop); | ||
| .then(self._loop) | ||
| } | ||
| resolve(result); | ||
| resolve(result) | ||
| } catch(e){ | ||
| reject(e); | ||
| reject(e) | ||
| } | ||
| }); | ||
| }; | ||
| }) | ||
| } | ||
| Reduce.prototype.__loop = function(value){ | ||
| var self = this; | ||
| self.value = value; | ||
| var self = this | ||
| self.value = value | ||
| return new Prom(function(resolve, reject){ | ||
| try { | ||
| var result; | ||
| if(red.isReduced(value)){ | ||
| result = self.xf.result(red.unreduced(value)); | ||
| var result | ||
| if(isReduced(value)){ | ||
| result = self.xf.result(unreduced(value)) | ||
| } else { | ||
| result = self.iterate(); | ||
| result = self.iterate() | ||
| } | ||
| resolve(result); | ||
| resolve(result) | ||
| } catch(e){ | ||
| reject(e); | ||
| reject(e) | ||
| } | ||
| }); | ||
| }; | ||
| }) | ||
| } | ||
| function _iteratorValue(item){ | ||
| return {done: false, value: item[0]}; | ||
| return {done: false, value: item[0]} | ||
| } | ||
| function defer() { | ||
| return delay(); | ||
| return delay() | ||
| } | ||
@@ -146,12 +154,12 @@ | ||
| return function(xf){ | ||
| return new Delay(wait, xf); | ||
| }; | ||
| return new Delay(wait, xf) | ||
| } | ||
| } | ||
| function Delay(wait, xf) { | ||
| var self = this, | ||
| task = new DelayTask(wait, xf); | ||
| self.xf = xf; | ||
| self.task = task; | ||
| self._step = spread(task.step, task); | ||
| self._result = spread(task.result, task); | ||
| task = new DelayTask(wait, xf) | ||
| self.xf = xf | ||
| self.task = task | ||
| self._step = spread(task.step, task) | ||
| self._result = spread(task.result, task) | ||
| } | ||
@@ -161,15 +169,15 @@ | ||
| var self = this, | ||
| task = self.task; | ||
| task = self.task | ||
| if(task.resolved){ | ||
| return task.resolved; | ||
| return task.resolved | ||
| } | ||
| return Prom | ||
| .resolve(self.xf.init()); | ||
| }; | ||
| .resolve(self.xf.init()) | ||
| } | ||
| Delay.prototype.step = function(value, input) { | ||
| var self = this, | ||
| task = self.task; | ||
| task = self.task | ||
| if(task.resolved){ | ||
| return task.resolved; | ||
| return task.resolved | ||
| } | ||
@@ -179,9 +187,9 @@ | ||
| .all([value, input]) | ||
| .then(self._step); | ||
| }; | ||
| .then(self._step) | ||
| } | ||
| Delay.prototype.result = function(value){ | ||
| var self = this, | ||
| task = self.task; | ||
| task = self.task | ||
| if(task.resolved){ | ||
| return task.resolved; | ||
| return task.resolved | ||
| } | ||
@@ -191,57 +199,57 @@ | ||
| .all([value]) | ||
| .then(self._result); | ||
| }; | ||
| .then(self._result) | ||
| } | ||
| function DelayTask(wait, xf){ | ||
| this.wait = wait; | ||
| this.xf = xf; | ||
| this.q = []; | ||
| this.wait = wait | ||
| this.xf = xf | ||
| this.q = [] | ||
| } | ||
| DelayTask.prototype.call = function(){ | ||
| var next = this.q[0]; | ||
| var next = this.q[0] | ||
| if(next && !next.processing){ | ||
| next.processing = true; | ||
| next.processing = true | ||
| var wait = next.wait; | ||
| var wait = next.wait | ||
| if(wait > 0){ | ||
| setTimeout(next.fn, wait); | ||
| setTimeout(next.fn, wait) | ||
| } else { | ||
| next.fn(); | ||
| next.fn() | ||
| } | ||
| } | ||
| }; | ||
| } | ||
| DelayTask.prototype.step = function(value, input){ | ||
| var task = this; | ||
| var task = this | ||
| return new Prom(function(resolve, reject){ | ||
| task.q.push({fn: step, wait: task.wait}); | ||
| task.call(); | ||
| task.q.push({fn: step, wait: task.wait}) | ||
| task.call() | ||
| function step(){ | ||
| try { | ||
| resolve(task.xf.step(value, input)); | ||
| task.q.shift(); | ||
| resolve(task.xf.step(value, input)) | ||
| task.q.shift() | ||
| if(task.q.length > 0){ | ||
| task.call(); | ||
| task.call() | ||
| } | ||
| } catch(e){ | ||
| reject(e); | ||
| reject(e) | ||
| } | ||
| } | ||
| }); | ||
| }; | ||
| }) | ||
| } | ||
| DelayTask.prototype.result = function(value){ | ||
| var task = this; | ||
| var task = this | ||
| task.resolved = new Prom(function(resolve, reject){ | ||
| task.q.push({fn: result}); | ||
| task.call(); | ||
| task.q.push({fn: result}) | ||
| task.call() | ||
| function result(){ | ||
| try { | ||
| task.q = []; | ||
| resolve(task.xf.result(value)); | ||
| task.q = [] | ||
| resolve(task.xf.result(value)) | ||
| } catch(e){ | ||
| reject(e); | ||
| reject(e) | ||
| } | ||
| } | ||
| }); | ||
| return task.resolved; | ||
| }) | ||
| return task.resolved | ||
| }; |
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
2
-71.43%9
-18.18%230
3.14%9746
-1.34%1
Infinity%+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed