fairmont
Advanced tools
Comparing version 1.0.0-beta-18 to 1.0.0-beta-19
@@ -7,8 +7,16 @@ // Generated by CoffeeScript 1.9.3 | ||
include(module.exports, require("./iterator")); | ||
include(module.exports, require("fairmont-core")); | ||
include(module.exports, require("./reducer")); | ||
include(module.exports, require("fairmont-helpers")); | ||
include(module.exports, require("./reactive")); | ||
include(module.exports, require("fairmont-multimethods")); | ||
include(module.exports, require("fairmont-reactive")); | ||
include(module.exports, require("fairmont-crypto")); | ||
include(module.exports, require("fairmont-process")); | ||
include(module.exports, require("fairmont-filesystem")); | ||
}).call(this); |
1097
lib/iterator.js
// Generated by CoffeeScript 1.9.3 | ||
(function() { | ||
var Method, async, asyncIterator, binary, compact, compose, curry, either, events, filter, has, identity, isAsyncIterable, isAsyncIterator, isAsyncIteratorFunction, isDefined, isFunction, isGenerator, isIterable, isIterator, isIteratorFunction, isPromise, isSource, iterator, iteratorFunction, lines, map, negate, partition, project, property, query, ref, ref1, reject, repeat, select, split, stream, take, takeN, where, | ||
var assert, describe, ref, | ||
slice = [].slice; | ||
ref = require("fairmont-core"), identity = ref.identity, curry = ref.curry, compose = ref.compose, binary = ref.binary, negate = ref.negate; | ||
ref = require("./helpers"), assert = ref.assert, describe = ref.describe; | ||
either = curry(function(f, g) { | ||
return function() { | ||
return (f.apply(null, arguments)) || (g.apply(null, arguments)); | ||
describe("Iterator functions", function(context) { | ||
var $, Method, _flatten, add, all, any, assoc, async, asyncIterator, average, binary, cat, collect, compact, compose, curry, delimit, each, either, events, filter, first, flatten, fold, foldr, has, identity, isAsyncIterable, isAsyncIterator, isAsyncIteratorFunction, isDefined, isFunction, isGenerator, isIterable, isIterator, isIteratorFunction, isPromise, isSource, iterator, iteratorFunction, join, lines, map, negate, partition, project, promise, property, query, reduce, reduceRight, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, reject, repeat, resolve, second, select, split, stream, sum, take, takeN, ternary, unzip, where, zip; | ||
isIterable = function(x) { | ||
return (x != null ? x[Symbol.iterator] : void 0) != null; | ||
}; | ||
}); | ||
Method = require("fairmont-multimethods").Method; | ||
ref1 = require("fairmont-helpers"), property = ref1.property, query = ref1.query, has = ref1.has, isFunction = ref1.isFunction, isGenerator = ref1.isGenerator, isDefined = ref1.isDefined, isPromise = ref1.isPromise, async = ref1.async; | ||
isIterable = function(x) { | ||
return ((x != null ? x[Symbol.iterator] : void 0) != null) || ((x != null) && isGenerator(x)); | ||
}; | ||
isAsyncIterable = function(x) { | ||
return (x != null ? x[Symbol.asyncIterator] : void 0) != null; | ||
}; | ||
isIterator = function(x) { | ||
return ((x != null ? x.next : void 0) != null) && isIterable(x); | ||
}; | ||
isAsyncIterator = function(x) { | ||
return ((x != null ? x.next : void 0) != null) && isAsyncIterable(x); | ||
}; | ||
iterator = Method.create(); | ||
Method.define(iterator, isFunction, function(f) { | ||
f.next = f; | ||
f[Symbol.iterator] = function() { | ||
return this["this"]; | ||
context.test("isIterable", function() { | ||
return assert(isIterable([1, 2, 3])); | ||
}); | ||
isAsyncIterable = function(x) { | ||
return (x != null ? x[Symbol.asyncIterator] : void 0) != null; | ||
}; | ||
return f; | ||
}); | ||
Method.define(iterator, isIterable, function(i) { | ||
return i[Symbol.iterator](); | ||
}); | ||
Method.define(iterator, isAsyncIterable, function(i) { | ||
return i[Symbol.asyncIterator](); | ||
}); | ||
Method.define(iterator, isGenerator, function(g) { | ||
return g(); | ||
}); | ||
asyncIterator = Method.create(); | ||
Method.define(asyncIterator, isFunction, function(f) { | ||
f.next = f; | ||
f[Symbol.asyncIterator] = function() { | ||
return this["this"]; | ||
isIterator = function(x) { | ||
return ((x != null ? x.next : void 0) != null) && isIterable(x); | ||
}; | ||
return f; | ||
}); | ||
isIteratorFunction = function(f) { | ||
return (isFunction(f)) && (isIterator(f)); | ||
}; | ||
isAsyncIteratorFunction = function(f) { | ||
return (isFunction(f)) && (isAsyncIterator(f)); | ||
}; | ||
iteratorFunction = Method.create(); | ||
Method.define(iteratorFunction, either(isIterable, isAsyncIterable), function(x) { | ||
return iteratorFunction(iterator(x)); | ||
}); | ||
Method.define(iteratorFunction, either(isIterator, isAsyncIterator), function(i) { | ||
return iterator((function() { | ||
return i.next(); | ||
})); | ||
}); | ||
Method.define(iteratorFunction, isFunction, function(f) { | ||
return iterator(f); | ||
}); | ||
Method.define(iteratorFunction, either(isIteratorFunction, isAsyncIteratorFunction), identity); | ||
repeat = function(x) { | ||
return iterator(function() { | ||
return { | ||
done: false, | ||
value: x | ||
isAsyncIterator = function(x) { | ||
return ((x != null ? x.next : void 0) != null) && isAsyncIterable(x); | ||
}; | ||
Method = require("./multimethods").Method; | ||
iterator = Method.create(); | ||
isFunction = require("./type").isFunction; | ||
Method.define(iterator, isFunction, function(f) { | ||
f.next = f; | ||
f[Symbol.iterator] = function() { | ||
return this["this"]; | ||
}; | ||
return f; | ||
}); | ||
}; | ||
map = Method.create(); | ||
Method.define(map, Function, isDefined, function(f, x) { | ||
return map(f, iteratorFunction(x)); | ||
}); | ||
Method.define(map, Function, isPromise, async(function*(f, p) { | ||
return map(f, (yield p)); | ||
})); | ||
Method.define(map, Function, isIteratorFunction, function(f, i) { | ||
return iterator(function() { | ||
var done, ref2, value; | ||
ref2 = i(), done = ref2.done, value = ref2.value; | ||
if (done) { | ||
isGenerator = require("./type").isGenerator; | ||
async = require("./generator").async; | ||
Method.define(iterator, isGenerator, function(g) { | ||
var f; | ||
f = async(g); | ||
f.next = f; | ||
f[Symbol.asyncIterator] = function() { | ||
return this["this"]; | ||
}; | ||
return f; | ||
}); | ||
Method.define(iterator, isIterable, function(i) { | ||
return i[Symbol.iterator](); | ||
}); | ||
Method.define(iterator, isAsyncIterable, function(i) { | ||
return i[Symbol.asyncIterator](); | ||
}); | ||
asyncIterator = Method.create(); | ||
Method.define(asyncIterator, isFunction, function(f) { | ||
f.next = f; | ||
f[Symbol.asyncIterator] = function() { | ||
return this["this"]; | ||
}; | ||
return f; | ||
}); | ||
Method.define(iterator, isGenerator, function(g) { | ||
var f; | ||
f = async(g); | ||
f.next = f; | ||
f[Symbol.asyncIterator] = function() { | ||
return this["this"]; | ||
}; | ||
return f; | ||
}); | ||
Method = require("./multimethods").Method; | ||
iteratorFunction = Method.create(); | ||
isFunction = require("./type").isFunction; | ||
isIteratorFunction = function(f) { | ||
return (isFunction(f)) && (isIterator(f)); | ||
}; | ||
isAsyncIteratorFunction = function(f) { | ||
return (isFunction(f)) && (isAsyncIterator(f)); | ||
}; | ||
either = require("./logical").either; | ||
Method.define(iteratorFunction, either(isIterable, isAsyncIterable), function(x) { | ||
return iteratorFunction(iterator(x)); | ||
}); | ||
Method.define(iteratorFunction, either(isIterator, isAsyncIterator), function(i) { | ||
return iterator((function() { | ||
return i.next(); | ||
})); | ||
}); | ||
either = require("./logical").either; | ||
ref1 = require("./type"), isFunction = ref1.isFunction, isGenerator = ref1.isGenerator; | ||
Method.define(iteratorFunction, either(isFunction, isGenerator), function(f) { | ||
return iterator(f); | ||
}); | ||
either = require("./logical").either; | ||
identity = require("./core").identity; | ||
Method.define(iteratorFunction, either(isIteratorFunction, isAsyncIteratorFunction), identity); | ||
context.test("iteratorFunction", function() { | ||
return assert(isIteratorFunction(iteratorFunction([1, 2, 3, 4, 5]))); | ||
}); | ||
repeat = function(x) { | ||
return iterator(function() { | ||
return { | ||
done: done | ||
done: false, | ||
value: x | ||
}; | ||
} else { | ||
return { | ||
done: done, | ||
value: f(value) | ||
}; | ||
} | ||
}); | ||
}; | ||
$ = (function() { | ||
return true; | ||
}); | ||
}); | ||
Method.define(map, Function, isAsyncIteratorFunction, function(f, i) { | ||
return asyncIterator(async(function*() { | ||
var done, ref2, value; | ||
ref2 = (yield i()), done = ref2.done, value = ref2.value; | ||
if (!done) { | ||
value = f(value); | ||
if (isPromise(value)) { | ||
value = (yield value); | ||
} | ||
} | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
})); | ||
}); | ||
map = curry(binary(map)); | ||
select = Method.create(); | ||
Method.define(select, Function, isDefined, function(f, x) { | ||
return select(f, iteratorFunction(x)); | ||
}); | ||
Method.define(select, Function, isIteratorFunction, function(f, i) { | ||
return iterator(function() { | ||
var done, ref2, value; | ||
Method = require("./multimethods").Method; | ||
collect = Method.create(); | ||
Method.define(collect, $, function(x) { | ||
return collect(iteratorFunction(x)); | ||
}); | ||
Method.define(collect, isIteratorFunction, function(i) { | ||
var done, ref2, results, value; | ||
results = []; | ||
while (true) { | ||
ref2 = i(), done = ref2.done, value = ref2.value; | ||
if (done || (f(value))) { | ||
if (done) { | ||
break; | ||
} | ||
results.push(value); | ||
} | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
return results; | ||
}); | ||
}); | ||
Method.define(select, Function, isAsyncIteratorFunction, function(f, i) { | ||
return asyncIterator(async(function*() { | ||
var done, ref2, value; | ||
async = require("./generator").async; | ||
Method.define(collect, isAsyncIteratorFunction, async(function*(i) { | ||
var done, ref2, results, value; | ||
results = []; | ||
while (true) { | ||
ref2 = (yield i()), done = ref2.done, value = ref2.value; | ||
if (done || (f(value))) { | ||
if (done) { | ||
break; | ||
} | ||
results.push(value); | ||
} | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
return results; | ||
})); | ||
}); | ||
select = filter = curry(binary(select)); | ||
reject = curry(function(f, i) { | ||
return select(negate(f), i); | ||
}); | ||
project = curry(function(p, i) { | ||
return map(property(p), i); | ||
}); | ||
compact = select(isDefined); | ||
partition = Method.create(); | ||
Method.define(partition, Number, isDefined, function(n, x) { | ||
return partition(n, iteratorFunction(x)); | ||
}); | ||
Method.define(partition, Number, isIteratorFunction, function(n, i) { | ||
return iterator(function() { | ||
var batch, done, ref2, value; | ||
batch = []; | ||
while (true) { | ||
context.test("collect", function() { | ||
var first; | ||
first = require("./array").first; | ||
return assert((first(collect([1, 2, 3, 4, 5]))) === 1); | ||
}); | ||
map = Method.create(); | ||
Method.define(map, Function, $, function(f, x) { | ||
return map(f, iteratorFunction(x)); | ||
}); | ||
isPromise = require("./type").isPromise; | ||
Method.define(map, Function, isPromise, async(function*(f, p) { | ||
return map(f, (yield p)); | ||
})); | ||
Method.define(map, Function, isIteratorFunction, function(f, i) { | ||
return iterator(function() { | ||
var done, ref2, value; | ||
ref2 = i(), done = ref2.done, value = ref2.value; | ||
if (done) { | ||
break; | ||
return { | ||
done: done | ||
}; | ||
} else { | ||
return { | ||
done: done, | ||
value: f(value) | ||
}; | ||
} | ||
batch.push(value); | ||
if (batch.length === n) { | ||
break; | ||
}); | ||
}); | ||
Method.define(map, Function, isAsyncIteratorFunction, function(f, i) { | ||
return iterator(function*() { | ||
var done, ref2, value; | ||
ref2 = (yield i()), done = ref2.done, value = ref2.value; | ||
if (!done) { | ||
value = f(value); | ||
if (isPromise(value)) { | ||
value = (yield value); | ||
} | ||
} | ||
} | ||
if (done) { | ||
return { | ||
done: done | ||
done: done, | ||
value: value | ||
}; | ||
} else { | ||
return { | ||
value: batch, | ||
done: done | ||
}; | ||
} | ||
}); | ||
}); | ||
}); | ||
Method.define(partition, Number, isAsyncIteratorFunction, function(n, i) { | ||
return asyncIterator(async(function*() { | ||
var batch, done, ref2, value; | ||
batch = []; | ||
ref2 = require("./core"), curry = ref2.curry, binary = ref2.binary; | ||
map = curry(binary(map)); | ||
context.test("map", function() { | ||
var i; | ||
i = map(Math.sqrt, [1, 4, 9]); | ||
assert(i().value === 1); | ||
assert(i().value === 2); | ||
assert(i().value === 3); | ||
return assert(i().done); | ||
}); | ||
ref3 = require("./core"), curry = ref3.curry, compose = ref3.compose, binary = ref3.binary; | ||
each = curry(binary(compose(collect, map))); | ||
context.test("each", function() { | ||
var last; | ||
last = require("./array").last; | ||
return assert((last(each((function(x) { | ||
return x + 1; | ||
}), [1, 2, 3, 4, 5]))) === 6); | ||
}); | ||
ref4 = require("./core"), curry = ref4.curry, ternary = ref4.ternary; | ||
fold = Method.create(); | ||
Method.define(fold, $, Function, $, function(x, f, y) { | ||
return fold(x, f, iteratorFunction(y)); | ||
}); | ||
Method.define(fold, $, Function, isIteratorFunction, function(x, f, i) { | ||
var done, ref5, value; | ||
while (true) { | ||
ref2 = (yield i()), done = ref2.done, value = ref2.value; | ||
ref5 = i(), done = ref5.done, value = ref5.value; | ||
if (done) { | ||
break; | ||
} | ||
batch.push(value); | ||
if (batch.length === n) { | ||
x = f(x, value); | ||
} | ||
return x; | ||
}); | ||
Method.define(fold, $, Function, isAsyncIteratorFunction, async(function*(x, f, i) { | ||
var done, ref5, value; | ||
while (true) { | ||
ref5 = (yield i()), done = ref5.done, value = ref5.value; | ||
if (done) { | ||
break; | ||
} | ||
x = f(x, value); | ||
} | ||
if (done) { | ||
return x; | ||
})); | ||
reduce = fold = curry(ternary(fold)); | ||
add = require("./numeric").add; | ||
context.test("fold/reduce", function() { | ||
var sum; | ||
sum = fold(0, add); | ||
return assert((sum([1, 2, 3, 4, 5])) === 15); | ||
}); | ||
ref5 = require("./core"), curry = ref5.curry, ternary = ref5.ternary; | ||
foldr = Method.create(); | ||
Method.define(foldr, $, Function, $, function(x, f, y) { | ||
return foldr(x, f, iteratorFunction(y)); | ||
}); | ||
Method.define(foldr, $, Function, isIteratorFunction, function(x, f, i) { | ||
return (collect(i)).reduceRight(f, x); | ||
}); | ||
Method.define(foldr, $, Function, isAsyncIteratorFunction, async(function*(x, f, i) { | ||
return ((yield collect(i))).reduceRight(f, x); | ||
})); | ||
reduceRight = foldr = curry(ternary(foldr)); | ||
add = require("./numeric").add; | ||
context.test("foldr/reduceRight", function() { | ||
return assert((foldr("", add, "panama")) === "amanap"); | ||
}); | ||
select = Method.create(); | ||
Method.define(select, Function, $, function(f, x) { | ||
return select(f, iteratorFunction(x)); | ||
}); | ||
Method.define(select, Function, isIteratorFunction, function(f, i) { | ||
return iterator(function() { | ||
var done, ref6, value; | ||
while (true) { | ||
ref6 = i(), done = ref6.done, value = ref6.value; | ||
if (done || (f(value))) { | ||
break; | ||
} | ||
} | ||
return { | ||
done: done | ||
done: done, | ||
value: value | ||
}; | ||
} else { | ||
}); | ||
}); | ||
Method.define(select, Function, isAsyncIteratorFunction, function(f, i) { | ||
return iterator(function*() { | ||
var done, ref6, value; | ||
while (true) { | ||
ref6 = (yield i()), done = ref6.done, value = ref6.value; | ||
if (done || (f(value))) { | ||
break; | ||
} | ||
} | ||
return { | ||
value: batch, | ||
done: done | ||
done: done, | ||
value: value | ||
}; | ||
}); | ||
}); | ||
ref6 = require("./core"), binary = ref6.binary, curry = ref6.curry; | ||
select = filter = curry(binary(select)); | ||
context.test("select", function() { | ||
var i, odd; | ||
odd = require("./numeric").odd; | ||
i = select(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9]); | ||
assert(i().value === 1); | ||
return assert(i().value === 3); | ||
}); | ||
negate = require("./logical").negate; | ||
reject = curry(function(f, i) { | ||
return select(negate(f), i); | ||
}); | ||
context.test("reject", function() { | ||
var i, odd; | ||
odd = require("./numeric").odd; | ||
i = reject(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9]); | ||
assert(i().value === 2); | ||
return assert(i().value === 4); | ||
}); | ||
any = Method.create(); | ||
Method.define(any, Function, $, function(f, x) { | ||
return any(f, iteratorFunction(x)); | ||
}); | ||
Method.define(any, Function, isIteratorFunction, function(f, i) { | ||
var done, ref7, value; | ||
while (true) { | ||
ref7 = i(), done = ref7.done, value = ref7.value; | ||
if (done || (f(value))) { | ||
break; | ||
} | ||
} | ||
return !done; | ||
}); | ||
Method.define(any, Function, isAsyncIteratorFunction, async(function*(f, i) { | ||
var done, ref7, value; | ||
while (true) { | ||
ref7 = (yield i()), done = ref7.done, value = ref7.value; | ||
if (done || (f(value))) { | ||
break; | ||
} | ||
} | ||
return !done; | ||
})); | ||
}); | ||
take = Method.create(); | ||
Method.define(take, Function, isDefined, function(f, x) { | ||
return take(f, iteratorFunction(x)); | ||
}); | ||
Method.define(take, Function, isIteratorFunction, function(f, i) { | ||
return iterator(function() { | ||
var done, ref2, value; | ||
if (!done) { | ||
ref2 = i(), done = ref2.done, value = ref2.value; | ||
if (!done && (f(value))) { | ||
ref7 = require("./core"), curry = ref7.curry, binary = ref7.binary; | ||
any = curry(binary(any)); | ||
context.test("any", function() { | ||
var odd; | ||
odd = require("./numeric").odd; | ||
assert(any(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9])); | ||
return assert(!(any(odd, [2, 4, 6]))); | ||
}); | ||
all = Method.create(); | ||
Method.define(all, Function, $, function(f, x) { | ||
return all(f, iteratorFunction(x)); | ||
}); | ||
Method.define(all, Function, isIteratorFunction, function(f, i) { | ||
return !any(negate(f), i); | ||
}); | ||
Method.define(all, Function, isAsyncIteratorFunction, async(function*(f, i) { | ||
return !((yield any(negate(f), i))); | ||
})); | ||
all = curry(binary(all)); | ||
context.test("all", function() { | ||
var odd; | ||
odd = require("./numeric").odd; | ||
assert(!(all(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9]))); | ||
return assert(all(odd, [1, 3, 5])); | ||
}); | ||
zip = Method.create(); | ||
Method.define(zip, Function, $, $, function(f, x, y) { | ||
return zip(f, iteratorFunction(x), iteratorFunction(y)); | ||
}); | ||
Method.define(zip, Function, isIteratorFunction, isIteratorFunction, function(f, i, j) { | ||
return iterator(function() { | ||
var x, y; | ||
x = i(); | ||
y = j(); | ||
if (!x.done && !y.done) { | ||
return { | ||
value: value, | ||
value: f(x.value, y.value), | ||
done: false | ||
@@ -278,43 +375,267 @@ }; | ||
} | ||
}); | ||
}); | ||
context.test("zip", function() { | ||
var i, pair; | ||
pair = function(x, y) { | ||
return [x, y]; | ||
}; | ||
i = zip(pair, [1, 2, 3], [4, 5, 6]); | ||
assert(i().value[0] === 1); | ||
assert(i().value[1] === 5); | ||
assert(i().value[0] === 3); | ||
return assert(i().done); | ||
}); | ||
unzip = function(f, i) { | ||
return fold([[], []], f, i); | ||
}; | ||
context.test("unzip", function() { | ||
var pair, unpair; | ||
pair = function(x, y) { | ||
return [x, y]; | ||
}; | ||
unpair = function(arg, arg1) { | ||
var a, ax, b, bx; | ||
ax = arg[0], bx = arg[1]; | ||
a = arg1[0], b = arg1[1]; | ||
ax.push(a); | ||
bx.push(b); | ||
return [ax, bx]; | ||
}; | ||
return assert((unzip(unpair, zip(pair, "panama", "canary")))[0][0] === "p"); | ||
}); | ||
ref8 = require("./array"), first = ref8.first, second = ref8.second; | ||
assoc = Method.create(); | ||
Method.define(assoc, $, function(x) { | ||
return assoc(iteratorFunction(x)); | ||
}); | ||
Method.define(assoc, isIteratorFunction, function(i) { | ||
var done, ref9, result, value; | ||
result = {}; | ||
while (true) { | ||
ref9 = i(), done = ref9.done, value = ref9.value; | ||
if (done) { | ||
break; | ||
} | ||
result[first(value)] = second(value); | ||
} | ||
return result; | ||
}); | ||
}); | ||
take = curry(binary(take)); | ||
takeN = (function() { | ||
var f; | ||
f = function(n, i) { | ||
if (i == null) { | ||
i = 0; | ||
Method.define(assoc, isAsyncIteratorFunction, function*(i) { | ||
var done, ref9, result, value; | ||
result = {}; | ||
while (true) { | ||
ref9 = (yield i()), done = ref9.done, value = ref9.value; | ||
if (done) { | ||
break; | ||
} | ||
result[first(value)] = second(value); | ||
} | ||
return function() { | ||
return i++ < n; | ||
return result; | ||
}); | ||
context.test("assoc", function() { | ||
return assert((assoc([["foo", 1], ["bar", 2]])).foo === 1); | ||
}); | ||
property = require("./object").property; | ||
curry = require("./core").curry; | ||
project = curry(function(p, i) { | ||
return map(property(p), i); | ||
}); | ||
context.test("project", function() { | ||
var i, w; | ||
w = require("./string").w; | ||
i = project("length", w("one two three")); | ||
return assert(i().value === 3); | ||
}); | ||
_flatten = function(ax, a) { | ||
if (isIterable(a)) { | ||
return ax.concat(flatten(a)); | ||
} else { | ||
ax.push(a); | ||
return ax; | ||
} | ||
}; | ||
flatten = fold([], _flatten); | ||
context.test("flatten", function() { | ||
return assert((flatten([1, [2, 3], 4, [5, [6, 7]]]))[1] === 2); | ||
}); | ||
isDefined = require("./type").isDefined; | ||
compact = select(isDefined); | ||
context.test("compact", function() { | ||
var i; | ||
i = compact([1, null, null, 2]); | ||
assert(i().value === 1); | ||
return assert(i().value === 2); | ||
}); | ||
partition = Method.create(); | ||
Method.define(partition, Number, $, function(n, x) { | ||
return partition(n, iteratorFunction(x)); | ||
}); | ||
Method.define(partition, Number, isIteratorFunction, function(n, i) { | ||
return iterator(function() { | ||
var batch, done, ref9, value; | ||
batch = []; | ||
while (true) { | ||
ref9 = i(), done = ref9.done, value = ref9.value; | ||
if (done) { | ||
break; | ||
} | ||
batch.push(value); | ||
if (batch.length === n) { | ||
break; | ||
} | ||
} | ||
if (done) { | ||
return { | ||
done: done | ||
}; | ||
} else { | ||
return { | ||
value: batch, | ||
done: done | ||
}; | ||
} | ||
}); | ||
}); | ||
Method.define(partition, Number, isAsyncIteratorFunction, function(n, i) { | ||
return iterator(function*() { | ||
var batch, done, ref9, value; | ||
batch = []; | ||
while (true) { | ||
ref9 = (yield i()), done = ref9.done, value = ref9.value; | ||
if (done) { | ||
break; | ||
} | ||
batch.push(value); | ||
if (batch.length === n) { | ||
break; | ||
} | ||
} | ||
if (done) { | ||
return { | ||
done: done | ||
}; | ||
} else { | ||
return { | ||
value: batch, | ||
done: done | ||
}; | ||
} | ||
}); | ||
}); | ||
context.test("partition", function() { | ||
var i; | ||
i = partition(2, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); | ||
assert(i().value[0] === 0); | ||
return assert(i().value[0] === 2); | ||
}); | ||
add = require("./numeric").add; | ||
sum = fold(0, add); | ||
context.test("sum", function() { | ||
return assert((sum([1, 2, 3, 4, 5])) === 15); | ||
}); | ||
average = function(i) { | ||
var f, j; | ||
j = 0; | ||
f = function(r, n) { | ||
return r += (n - r) / ++j; | ||
}; | ||
return fold(0, f, i); | ||
}; | ||
return function(n, i) { | ||
return take(f(n), i); | ||
}; | ||
})(); | ||
where = curry(function(example, i) { | ||
return select(query(example), i); | ||
}); | ||
events = Method.create(); | ||
isSource = compose(isFunction, property("on")); | ||
Method.define(events, String, isSource, function(name, source) { | ||
return events({ | ||
name: name, | ||
end: "end", | ||
error: "error" | ||
}, source); | ||
}); | ||
Method.define(events, Object, isSource, (function(reject) { | ||
var promise, ref2, resolve; | ||
ref2 = require("when"), promise = ref2.promise, reject = ref2.reject, resolve = ref2.resolve; | ||
return function(map, source) { | ||
context.test("average", function() { | ||
assert((average([1, 2, 3, 4, 5])) === 3); | ||
return assert((average([-5, -4, -3, -2, -1])) === -3); | ||
}); | ||
take = Method.create(); | ||
Method.define(take, Function, $, function(f, x) { | ||
return take(f, iteratorFunction(x)); | ||
}); | ||
Method.define(take, Function, isIteratorFunction, function(f, i) { | ||
return iterator(function() { | ||
var done, ref9, value; | ||
if (!done) { | ||
ref9 = i(), done = ref9.done, value = ref9.value; | ||
if (!done && (f(value))) { | ||
return { | ||
value: value, | ||
done: false | ||
}; | ||
} else { | ||
return { | ||
done: true | ||
}; | ||
} | ||
} | ||
}); | ||
}); | ||
take = curry(binary(take)); | ||
context.test("take"); | ||
takeN = (function() { | ||
var f; | ||
f = function(n, i) { | ||
if (i == null) { | ||
i = 0; | ||
} | ||
return function() { | ||
return i++ < n; | ||
}; | ||
}; | ||
return function(n, i) { | ||
return take(f(n), i); | ||
}; | ||
})(); | ||
context.test("takeN", function() { | ||
var i; | ||
i = takeN(3, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); | ||
assert(i().value === 0); | ||
assert(i().value === 1); | ||
assert(i().value === 2); | ||
return assert(i().done); | ||
}); | ||
cat = require("./array").cat; | ||
join = fold("", add); | ||
context.test("join", function() { | ||
var w; | ||
w = require("./string").w; | ||
return assert((join(w("one two three"))) === "onetwothree"); | ||
}); | ||
delimit = curry(function(d, i) { | ||
var f; | ||
f = function(r, s) { | ||
if (r === "") { | ||
return r += s; | ||
} else { | ||
return r += d + s; | ||
} | ||
}; | ||
return fold("", f, i); | ||
}); | ||
context.test("delimit", function() { | ||
var w; | ||
w = require("./string").w; | ||
return assert((delimit(", ", w("one two three"))) === "one, two, three"); | ||
}); | ||
query = require("./object").query; | ||
where = curry(function(example, i) { | ||
return select(query(example), i); | ||
}); | ||
context.test("where", function() { | ||
var pair; | ||
pair = function(x, y) { | ||
return [x, y]; | ||
}; | ||
return assert((collect(where(["a", 1], zip(pair, repeat("a"), [1, 2, 3, 1, 2, 3])))).length === 2); | ||
}); | ||
ref9 = require("when"), promise = ref9.promise, reject = ref9.reject, resolve = ref9.resolve; | ||
has = require("./object").has; | ||
events = Method.create(); | ||
isSource = compose(isFunction, property("on")); | ||
Method.define(events, String, isSource, function(name, source) { | ||
return events({ | ||
name: name, | ||
end: "end", | ||
error: "error" | ||
}, source); | ||
}); | ||
Method.define(events, Object, isSource, function(map, source) { | ||
var dequeue, done, end, enqueue, error, name, pending, resolved; | ||
@@ -362,6 +683,3 @@ name = map.name, end = map.end, error = map.error; | ||
source.on(end, function(error) { | ||
done = true; | ||
return enqueue(resolve({ | ||
done: done | ||
})); | ||
return done = true; | ||
}); | ||
@@ -372,121 +690,160 @@ source.on(error, function(error) { | ||
return asyncIterator(dequeue); | ||
}; | ||
})(reject)); | ||
events = curry(binary(events)); | ||
stream = events("data"); | ||
split = Method.create(); | ||
Method.define(split, Function, isDefined, function(f, x) { | ||
return split(f, iteratorFunction(x)); | ||
}); | ||
Method.define(split, Function, isIteratorFunction, function(f, i) { | ||
var lines, remainder; | ||
lines = []; | ||
remainder = ""; | ||
return iterator(function() { | ||
var done, first, j, last, ref2, ref3, value; | ||
if (lines.length > 0) { | ||
return { | ||
value: lines.shift(), | ||
done: false | ||
}; | ||
} else { | ||
ref2 = i(), value = ref2.value, done = ref2.done; | ||
if (!done) { | ||
ref3 = f(value), first = ref3[0], lines = 3 <= ref3.length ? slice.call(ref3, 1, j = ref3.length - 1) : (j = 1, []), last = ref3[j++]; | ||
first = remainder + first; | ||
remainder = last; | ||
}); | ||
events = curry(binary(events)); | ||
context.test("events", function*() { | ||
var createReadStream, i; | ||
createReadStream = require("fs").createReadStream; | ||
i = events("data", createReadStream("test/lines.txt")); | ||
assert(((yield i())).value.toString() === "one\ntwo\nthree\n"); | ||
return console.log((yield i())); | ||
}); | ||
stream = events("data"); | ||
context.test("stream", function*() { | ||
var createReadStream, i; | ||
createReadStream = require("fs").createReadStream; | ||
i = stream(createReadStream("test/lines.txt")); | ||
assert(((yield i())).value === "one\ntwo\nthree\n"); | ||
return assert(((yield i())).done); | ||
}); | ||
split = Method.create(); | ||
Method.define(split, Function, $, function(f, x) { | ||
return split(f, iteratorFunction(x)); | ||
}); | ||
Method.define(split, Function, isIteratorFunction, function(f, i) { | ||
var lines, remainder; | ||
lines = []; | ||
remainder = ""; | ||
return iterator(function() { | ||
var done, k, last, ref10, ref11, value; | ||
if (lines.length > 0) { | ||
return { | ||
value: first, | ||
done: done | ||
}; | ||
} else if (remainder !== "") { | ||
value = remainder; | ||
remainder = ""; | ||
return { | ||
value: value, | ||
value: lines.shift(), | ||
done: false | ||
}; | ||
} else { | ||
return { | ||
done: done | ||
}; | ||
ref10 = i(), value = ref10.value, done = ref10.done; | ||
if (!done) { | ||
ref11 = f(value), first = ref11[0], lines = 3 <= ref11.length ? slice.call(ref11, 1, k = ref11.length - 1) : (k = 1, []), last = ref11[k++]; | ||
first = remainder + first; | ||
remainder = last; | ||
return { | ||
value: first, | ||
done: done | ||
}; | ||
} else if (remainder !== "") { | ||
value = remainder; | ||
remainder = ""; | ||
return { | ||
value: value, | ||
done: false | ||
}; | ||
} else { | ||
return { | ||
done: done | ||
}; | ||
} | ||
} | ||
} | ||
}); | ||
}); | ||
}); | ||
Method.define(split, Function, isAsyncIteratorFunction, function(f, i) { | ||
var lines, remainder; | ||
lines = []; | ||
remainder = ""; | ||
return asyncIterator(async(function*() { | ||
var done, first, j, last, ref2, ref3, value; | ||
if (lines.length > 0) { | ||
return { | ||
value: lines.shift(), | ||
done: false | ||
}; | ||
} else { | ||
ref2 = (yield i()), value = ref2.value, done = ref2.done; | ||
if (!done) { | ||
ref3 = f(value), first = ref3[0], lines = 3 <= ref3.length ? slice.call(ref3, 1, j = ref3.length - 1) : (j = 1, []), last = ref3[j++]; | ||
first = remainder + first; | ||
remainder = last; | ||
Method.define(split, Function, isAsyncIteratorFunction, function(f, i) { | ||
var lines, remainder; | ||
lines = []; | ||
remainder = ""; | ||
return iterator(function*() { | ||
var done, k, last, ref10, ref11, value; | ||
if (lines.length > 0) { | ||
return { | ||
value: first, | ||
done: done | ||
}; | ||
} else if (remainder !== "") { | ||
value = remainder; | ||
remainder = ""; | ||
return { | ||
value: value, | ||
value: lines.shift(), | ||
done: false | ||
}; | ||
} else { | ||
return { | ||
done: done | ||
}; | ||
ref10 = (yield i()), value = ref10.value, done = ref10.done; | ||
if (!done) { | ||
ref11 = f(value), first = ref11[0], lines = 3 <= ref11.length ? slice.call(ref11, 1, k = ref11.length - 1) : (k = 1, []), last = ref11[k++]; | ||
first = remainder + first; | ||
remainder = last; | ||
return { | ||
value: first, | ||
done: done | ||
}; | ||
} else if (remainder !== "") { | ||
value = remainder; | ||
remainder = ""; | ||
return { | ||
value: value, | ||
done: false | ||
}; | ||
} else { | ||
return { | ||
done: done | ||
}; | ||
} | ||
} | ||
} | ||
})); | ||
}); | ||
}); | ||
split = curry(binary(split)); | ||
context.test("split", function() { | ||
var i; | ||
i = split((function(x) { | ||
return x.split("\n"); | ||
}), ["one\ntwo\n", "three\nfour"]); | ||
assert(i().value === "one"); | ||
assert(i().value === "two"); | ||
assert(i().value === "three"); | ||
assert(i().value === "four"); | ||
return assert(i().done); | ||
}); | ||
lines = split(function(s) { | ||
return s.toString().split("\n"); | ||
}); | ||
context.test("lines", function*() { | ||
var createReadStream, i; | ||
createReadStream = require("fs").createReadStream; | ||
i = lines(stream(createReadStream("test/lines.txt"))); | ||
assert(((yield i())).value === "one"); | ||
assert(((yield i())).value === "two"); | ||
assert(((yield i())).value === "three"); | ||
return assert(((yield i())).done); | ||
}); | ||
return module.exports = { | ||
isIterable: isIterable, | ||
isAsyncIterable: isAsyncIterable, | ||
iterator: iterator, | ||
isIterator: isIterator, | ||
isAsyncIterator: isAsyncIterator, | ||
iteratorFunction: iteratorFunction, | ||
isIteratorFunction: isIteratorFunction, | ||
isAsyncIteratorFunction: isAsyncIteratorFunction, | ||
collect: collect, | ||
map: map, | ||
each: each, | ||
fold: fold, | ||
reduce: reduce, | ||
foldr: foldr, | ||
reduceRight: reduceRight, | ||
select: select, | ||
reject: reject, | ||
filter: filter, | ||
any: any, | ||
all: all, | ||
zip: zip, | ||
assoc: assoc, | ||
project: project, | ||
flatten: flatten, | ||
compact: compact, | ||
partition: partition, | ||
sum: sum, | ||
average: average, | ||
join: join, | ||
delimit: delimit, | ||
where: where, | ||
take: take, | ||
takeN: takeN, | ||
events: events, | ||
stream: stream, | ||
lines: lines, | ||
split: split | ||
}; | ||
}); | ||
split = curry(binary(split)); | ||
lines = split(function(s) { | ||
return s.toString().split("\n"); | ||
}); | ||
module.exports = { | ||
isIterable: isIterable, | ||
isAsyncIterable: isAsyncIterable, | ||
iterator: iterator, | ||
isIterator: isIterator, | ||
isAsyncIterator: isAsyncIterator, | ||
isIteratorFunction: isIteratorFunction, | ||
isAsyncIteratorFunction: isAsyncIteratorFunction, | ||
iteratorFunction: iteratorFunction, | ||
repeat: repeat, | ||
map: map, | ||
select: select, | ||
reject: reject, | ||
filter: filter, | ||
project: project, | ||
compact: compact, | ||
partition: partition, | ||
where: where, | ||
take: take, | ||
takeN: takeN, | ||
events: events, | ||
stream: stream, | ||
lines: lines, | ||
split: split | ||
}; | ||
}).call(this); |
// Generated by CoffeeScript 1.9.3 | ||
(function() { | ||
var async, curry, flow, iterator, pump, reduce, start, tee, throttle, | ||
var assert, describe, ref, | ||
slice = [].slice; | ||
curry = require("fairmont-core").curry; | ||
ref = require("./helpers"), assert = ref.assert, describe = ref.describe; | ||
async = require("fairmont-helpers").async; | ||
iterator = require("./iterator").iterator; | ||
reduce = require("./reducer").reduce; | ||
flow = function(arg) { | ||
var fx, i; | ||
i = arg[0], fx = 2 <= arg.length ? slice.call(arg, 1) : []; | ||
return reduce(i, (function(i, f) { | ||
return f(i); | ||
}), fx); | ||
}; | ||
start = async(function*(i) { | ||
var done, ref, results, value; | ||
results = []; | ||
while (true) { | ||
ref = (yield i()), done = ref.done, value = ref.value; | ||
if (done) { | ||
break; | ||
} else { | ||
results.push(void 0); | ||
} | ||
} | ||
return results; | ||
}); | ||
pump = curry(function(s, i) { | ||
return iterator(function*() { | ||
var done, ref, value; | ||
ref = (yield i()), done = ref.done, value = ref.value; | ||
if (!done) { | ||
return { | ||
value: s.write(value), | ||
done: false | ||
}; | ||
} else { | ||
s.end(); | ||
return { | ||
done: done | ||
}; | ||
} | ||
describe("Reactive programming functions", function(context) { | ||
var FS, async, curry, flow, iterator, pump, reduce, start, tee, throttle; | ||
FS = require("fs"); | ||
reduce = require("./iterator").reduce; | ||
flow = function(arg) { | ||
var fx, i; | ||
i = arg[0], fx = 2 <= arg.length ? slice.call(arg, 1) : []; | ||
return reduce(i, (function(i, f) { | ||
return f(i); | ||
}), fx); | ||
}; | ||
context.test("flow", function*() { | ||
var events, i, lines, ref1; | ||
ref1 = require("./iterator"), events = ref1.events, lines = ref1.lines; | ||
i = flow([events("data", FS.createReadStream("./test/lines.txt")), lines]); | ||
assert(((yield i())).value === "one"); | ||
assert(((yield i())).value === "two"); | ||
assert(((yield i())).value === "three"); | ||
return assert((yield i().done)); | ||
}); | ||
}); | ||
tee = curry(function(f, i) { | ||
return iterator(function*() { | ||
var done, ref, value; | ||
ref = (yield i()), done = ref.done, value = ref.value; | ||
if (!done) { | ||
f(value); | ||
} | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
}); | ||
}); | ||
throttle = curry(function(ms, i) { | ||
var last; | ||
last = 0; | ||
return iterator(function*() { | ||
var done, now, ref, value; | ||
async = require("./generator").async; | ||
start = async(function*(i) { | ||
var done, ref1, results, value; | ||
results = []; | ||
while (true) { | ||
ref = (yield i()), done = ref.done, value = ref.value; | ||
ref1 = (yield i()), done = ref1.done, value = ref1.value; | ||
if (done) { | ||
break; | ||
} else { | ||
results.push(void 0); | ||
} | ||
now = Date.now(); | ||
if (now - last >= ms) { | ||
break; | ||
} | ||
} | ||
last = now; | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
return results; | ||
}); | ||
curry = require("./core").curry; | ||
iterator = require("./iterator").iterator; | ||
pump = curry(function(s, i) { | ||
return iterator(function*() { | ||
var done, ref1, value; | ||
ref1 = (yield i()), done = ref1.done, value = ref1.value; | ||
if (!done) { | ||
return { | ||
value: s.write(value), | ||
done: false | ||
}; | ||
} else { | ||
s.end(); | ||
return { | ||
done: done | ||
}; | ||
} | ||
}); | ||
}); | ||
curry = require("./core").curry; | ||
iterator = require("./iterator").iterator; | ||
tee = curry(function(f, i) { | ||
return iterator(function*() { | ||
var done, ref1, value; | ||
ref1 = (yield i()), done = ref1.done, value = ref1.value; | ||
if (!done) { | ||
f(value); | ||
} | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
}); | ||
}); | ||
throttle = curry(function(ms, i) { | ||
var last; | ||
last = 0; | ||
return iterator(function*() { | ||
var done, now, ref1, value; | ||
while (true) { | ||
ref1 = (yield i()), done = ref1.done, value = ref1.value; | ||
if (done) { | ||
break; | ||
} | ||
now = Date.now(); | ||
if (now - last >= ms) { | ||
break; | ||
} | ||
} | ||
last = now; | ||
return { | ||
done: done, | ||
value: value | ||
}; | ||
}); | ||
}); | ||
return module.exports = { | ||
flow: flow, | ||
start: start, | ||
pump: pump, | ||
tee: tee, | ||
throttle: throttle | ||
}; | ||
}); | ||
module.exports = { | ||
flow: flow, | ||
start: start, | ||
pump: pump, | ||
tee: tee, | ||
throttle: throttle | ||
}; | ||
}).call(this); |
{ | ||
"name": "fairmont", | ||
"version": "1.0.0-beta-18", | ||
"description": "Functional reactive programming in JavaScript and CoffeeScript.", | ||
"version": "1.0.0-beta-19", | ||
"description": "Functional reactive programming for JavaScript and CoffeeScript.", | ||
"files": [ | ||
@@ -22,3 +22,7 @@ "src/", | ||
}, | ||
"keywords": [], | ||
"keywords": [ | ||
"coffee", | ||
"coffeescript", | ||
"utility" | ||
], | ||
"authors": [ | ||
@@ -36,5 +40,8 @@ "Dan Yoder" | ||
"fairmont-multimethods": "^1.0.0-beta-18", | ||
"when": "^3.7.3" | ||
"fairmont-reactive": "^1.0.0-beta-18", | ||
"fairmont-crypto": "^1.0.0-beta-18", | ||
"fairmont-process": "^1.0.0-beta-18", | ||
"fairmont-filesystem": "^1.0.0-beta-18" | ||
}, | ||
"engine": "node >= 0.12.x" | ||
} |
Sorry, the diff of this file is not supported yet
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
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
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
82000
19
2629
7
7
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedfairmont-crypto@1.0.0-beta-19(transitive)
+ Addedfairmont-filesystem@1.1.3(transitive)
+ Addedfairmont-helpers@1.1.2(transitive)
+ Addedfairmont-process@1.1.1(transitive)
+ Addedfairmont-reactive@1.1.2(transitive)
+ Addedminimatch@2.0.10(transitive)
- Removedwhen@^3.7.3
- Removedwhen@3.7.8(transitive)