rubico 2.8.5 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/_internal/FlatMappingAsyncIterator.js +41 -30
- package/_internal/LinkedList.js +54 -0
- package/_internal/LinkedList.test.js +34 -0
- package/_internal/MappingAsyncIterator.js +65 -15
- package/_internal/SerialMappingAsyncIterator.js +79 -0
- package/_internal/curryArity.js +3 -3
- package/_internal/iteratorFind.js +0 -2
- package/_internal/iteratorForEachSeries.js +1 -1
- package/_internal/objectFlatten.js +4 -1
- package/all.js +33 -59
- package/and.js +1 -1
- package/assign.js +14 -16
- package/compose.js +12 -13
- package/curry.js +1 -1
- package/dist/Transducer.es.js +1 -1
- package/dist/Transducer.es.min.js +1 -1
- package/dist/Transducer.js +1 -1
- package/dist/Transducer.min.js +1 -1
- package/dist/Transducer.mjs +1 -1
- package/dist/__.es.js +1 -1
- package/dist/__.es.min.js +1 -1
- package/dist/__.js +1 -1
- package/dist/__.min.js +1 -1
- package/dist/__.mjs +1 -1
- package/dist/all.es.js +1 -1
- package/dist/all.es.min.js +1 -1
- package/dist/all.js +1 -1
- package/dist/all.min.js +1 -1
- package/dist/all.mjs +1 -1
- package/dist/always.es.js +1 -1
- package/dist/always.es.min.js +1 -1
- package/dist/always.js +1 -1
- package/dist/always.min.js +1 -1
- package/dist/always.mjs +1 -1
- package/dist/and.es.js +1 -1
- package/dist/and.es.min.js +1 -1
- package/dist/and.js +1 -1
- package/dist/and.min.js +1 -1
- package/dist/and.mjs +1 -1
- package/dist/assign.es.js +1 -1
- package/dist/assign.es.min.js +1 -1
- package/dist/assign.js +1 -1
- package/dist/assign.min.js +1 -1
- package/dist/assign.mjs +1 -1
- package/dist/compose.es.js +1 -1
- package/dist/compose.es.min.js +1 -1
- package/dist/compose.js +1 -1
- package/dist/compose.min.js +1 -1
- package/dist/compose.mjs +1 -1
- package/dist/curry.es.js +4 -4
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +4 -4
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +4 -4
- package/dist/eq.es.js +1 -1
- package/dist/eq.es.min.js +1 -1
- package/dist/eq.js +1 -1
- package/dist/eq.min.js +1 -1
- package/dist/eq.mjs +1 -1
- package/dist/every.es.js +1 -1
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +1 -1
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +1 -1
- package/dist/filter.es.js +4 -4
- package/dist/filter.es.min.js +2 -2
- package/dist/filter.js +4 -4
- package/dist/filter.min.js +2 -2
- package/dist/filter.mjs +4 -4
- package/dist/flatMap.es.js +44 -28
- package/dist/flatMap.es.min.js +2 -2
- package/dist/flatMap.js +44 -28
- package/dist/flatMap.min.js +2 -2
- package/dist/flatMap.mjs +44 -28
- package/dist/forEach.es.js +6 -6
- package/dist/forEach.es.min.js +2 -2
- package/dist/forEach.js +6 -6
- package/dist/forEach.min.js +2 -2
- package/dist/forEach.mjs +6 -6
- package/dist/get.es.js +27 -3
- package/dist/get.es.min.js +2 -2
- package/dist/get.js +27 -3
- package/dist/get.min.js +2 -2
- package/dist/get.mjs +27 -3
- package/dist/gt.es.js +1 -1
- package/dist/gt.es.min.js +1 -1
- package/dist/gt.js +1 -1
- package/dist/gt.min.js +1 -1
- package/dist/gt.mjs +1 -1
- package/dist/gte.es.js +1 -1
- package/dist/gte.es.min.js +1 -1
- package/dist/gte.js +1 -1
- package/dist/gte.min.js +1 -1
- package/dist/gte.mjs +1 -1
- package/dist/lt.es.js +1 -1
- package/dist/lt.es.min.js +1 -1
- package/dist/lt.js +1 -1
- package/dist/lt.min.js +1 -1
- package/dist/lt.mjs +1 -1
- package/dist/lte.es.js +1 -1
- package/dist/lte.es.min.js +1 -1
- package/dist/lte.js +1 -1
- package/dist/lte.min.js +1 -1
- package/dist/lte.mjs +1 -1
- package/dist/map.es.js +190 -42
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +190 -42
- package/dist/map.min.js +2 -2
- package/dist/map.mjs +190 -42
- package/dist/not.es.js +1 -1
- package/dist/not.es.min.js +1 -1
- package/dist/not.js +1 -1
- package/dist/not.min.js +1 -1
- package/dist/not.mjs +1 -1
- package/dist/omit.es.js +1 -1
- package/dist/omit.es.min.js +1 -1
- package/dist/omit.js +1 -1
- package/dist/omit.min.js +1 -1
- package/dist/omit.mjs +1 -1
- package/dist/or.es.js +1 -1
- package/dist/or.es.min.js +1 -1
- package/dist/or.js +1 -1
- package/dist/or.min.js +1 -1
- package/dist/or.mjs +1 -1
- package/dist/pick.es.js +1 -1
- package/dist/pick.es.min.js +1 -1
- package/dist/pick.js +1 -1
- package/dist/pick.min.js +1 -1
- package/dist/pick.mjs +1 -1
- package/dist/pipe.es.js +1 -1
- package/dist/pipe.es.min.js +1 -1
- package/dist/pipe.js +1 -1
- package/dist/pipe.min.js +1 -1
- package/dist/pipe.mjs +1 -1
- package/dist/reduce.es.js +1 -1
- package/dist/reduce.es.min.js +1 -1
- package/dist/reduce.js +1 -1
- package/dist/reduce.min.js +1 -1
- package/dist/reduce.mjs +1 -1
- package/dist/rubico.es.js +238 -83
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +238 -83
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +238 -83
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +238 -83
- package/dist/set.es.js +1 -1
- package/dist/set.es.min.js +1 -1
- package/dist/set.js +1 -1
- package/dist/set.min.js +1 -1
- package/dist/set.mjs +1 -1
- package/dist/some.es.js +1 -1
- package/dist/some.es.min.js +1 -1
- package/dist/some.js +1 -1
- package/dist/some.min.js +1 -1
- package/dist/some.mjs +1 -1
- package/dist/switchCase.es.js +1 -1
- package/dist/switchCase.es.min.js +1 -1
- package/dist/switchCase.js +1 -1
- package/dist/switchCase.min.js +1 -1
- package/dist/switchCase.mjs +1 -1
- package/dist/tap.es.js +1 -1
- package/dist/tap.es.min.js +1 -1
- package/dist/tap.js +1 -1
- package/dist/tap.min.js +1 -1
- package/dist/tap.mjs +1 -1
- package/dist/thunkify.es.js +1 -1
- package/dist/thunkify.es.min.js +1 -1
- package/dist/thunkify.js +1 -1
- package/dist/thunkify.min.js +1 -1
- package/dist/thunkify.mjs +1 -1
- package/dist/transform.es.js +1 -1
- package/dist/transform.es.min.js +1 -1
- package/dist/transform.js +1 -1
- package/dist/transform.min.js +1 -1
- package/dist/transform.mjs +1 -1
- package/dist/tryCatch.es.js +1 -1
- package/dist/tryCatch.es.min.js +1 -1
- package/dist/tryCatch.js +1 -1
- package/dist/tryCatch.min.js +1 -1
- package/dist/tryCatch.mjs +1 -1
- package/dist/x/append.es.js +1 -1
- package/dist/x/append.es.min.js +1 -1
- package/dist/x/append.js +1 -1
- package/dist/x/append.min.js +1 -1
- package/dist/x/append.mjs +1 -1
- package/dist/x/callProp.es.js +1 -1
- package/dist/x/callProp.es.min.js +1 -1
- package/dist/x/callProp.js +1 -1
- package/dist/x/callProp.min.js +1 -1
- package/dist/x/callProp.mjs +1 -1
- package/dist/x/defaultsDeep.es.js +1 -1
- package/dist/x/defaultsDeep.es.min.js +1 -1
- package/dist/x/defaultsDeep.js +1 -1
- package/dist/x/defaultsDeep.min.js +1 -1
- package/dist/x/defaultsDeep.mjs +1 -1
- package/dist/x/differenceWith.es.js +1 -1
- package/dist/x/differenceWith.es.min.js +1 -1
- package/dist/x/differenceWith.js +1 -1
- package/dist/x/differenceWith.min.js +1 -1
- package/dist/x/differenceWith.mjs +1 -1
- package/dist/x/filterOut.es.js +4 -4
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +4 -4
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.mjs +4 -4
- package/dist/x/find.es.js +1 -3
- package/dist/x/find.es.min.js +1 -1
- package/dist/x/find.js +1 -3
- package/dist/x/find.min.js +1 -1
- package/dist/x/find.mjs +1 -3
- package/dist/x/findIndex.es.js +1 -1
- package/dist/x/findIndex.es.min.js +1 -1
- package/dist/x/findIndex.js +1 -1
- package/dist/x/findIndex.min.js +1 -1
- package/dist/x/findIndex.mjs +1 -1
- package/dist/x/first.es.js +1 -1
- package/dist/x/first.es.min.js +1 -1
- package/dist/x/first.js +1 -1
- package/dist/x/first.min.js +1 -1
- package/dist/x/first.mjs +1 -1
- package/dist/x/flatten.es.js +44 -28
- package/dist/x/flatten.es.min.js +2 -2
- package/dist/x/flatten.js +44 -28
- package/dist/x/flatten.min.js +2 -2
- package/dist/x/flatten.mjs +44 -28
- package/dist/x/groupBy.es.js +1 -1
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +1 -1
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +1 -1
- package/dist/x/has.es.js +1 -1
- package/dist/x/has.es.min.js +1 -1
- package/dist/x/has.js +1 -1
- package/dist/x/has.min.js +1 -1
- package/dist/x/has.mjs +1 -1
- package/dist/x/identity.es.js +1 -1
- package/dist/x/identity.es.min.js +1 -1
- package/dist/x/identity.js +1 -1
- package/dist/x/identity.min.js +1 -1
- package/dist/x/identity.mjs +1 -1
- package/dist/x/includes.es.js +1 -1
- package/dist/x/includes.es.min.js +1 -1
- package/dist/x/includes.js +1 -1
- package/dist/x/includes.min.js +1 -1
- package/dist/x/includes.mjs +1 -1
- package/dist/x/isDeepEqual.es.js +1 -1
- package/dist/x/isDeepEqual.es.min.js +1 -1
- package/dist/x/isDeepEqual.js +1 -1
- package/dist/x/isDeepEqual.min.js +1 -1
- package/dist/x/isDeepEqual.mjs +1 -1
- package/dist/x/isEmpty.es.js +1 -1
- package/dist/x/isEmpty.es.min.js +1 -1
- package/dist/x/isEmpty.js +1 -1
- package/dist/x/isEmpty.min.js +1 -1
- package/dist/x/isEmpty.mjs +1 -1
- package/dist/x/isEqual.es.js +1 -1
- package/dist/x/isEqual.es.min.js +1 -1
- package/dist/x/isEqual.js +1 -1
- package/dist/x/isEqual.min.js +1 -1
- package/dist/x/isEqual.mjs +1 -1
- package/dist/x/isFunction.es.js +1 -1
- package/dist/x/isFunction.es.min.js +1 -1
- package/dist/x/isFunction.js +1 -1
- package/dist/x/isFunction.min.js +1 -1
- package/dist/x/isFunction.mjs +1 -1
- package/dist/x/isIn.es.js +1 -1
- package/dist/x/isIn.es.min.js +1 -1
- package/dist/x/isIn.js +1 -1
- package/dist/x/isIn.min.js +1 -1
- package/dist/x/isIn.mjs +1 -1
- package/dist/x/isObject.es.js +1 -1
- package/dist/x/isObject.es.min.js +1 -1
- package/dist/x/isObject.js +1 -1
- package/dist/x/isObject.min.js +1 -1
- package/dist/x/isObject.mjs +1 -1
- package/dist/x/isString.es.js +1 -1
- package/dist/x/isString.es.min.js +1 -1
- package/dist/x/isString.js +1 -1
- package/dist/x/isString.min.js +1 -1
- package/dist/x/isString.mjs +1 -1
- package/dist/x/keys.es.js +1 -1
- package/dist/x/keys.es.min.js +1 -1
- package/dist/x/keys.js +1 -1
- package/dist/x/keys.min.js +1 -1
- package/dist/x/keys.mjs +1 -1
- package/dist/x/last.es.js +1 -1
- package/dist/x/last.es.min.js +1 -1
- package/dist/x/last.js +1 -1
- package/dist/x/last.min.js +1 -1
- package/dist/x/last.mjs +1 -1
- package/dist/x/maxBy.es.js +27 -23
- package/dist/x/maxBy.es.min.js +2 -2
- package/dist/x/maxBy.js +27 -23
- package/dist/x/maxBy.min.js +2 -2
- package/dist/x/maxBy.mjs +27 -23
- package/dist/x/noop.es.js +1 -1
- package/dist/x/noop.es.min.js +1 -1
- package/dist/x/noop.js +1 -1
- package/dist/x/noop.min.js +1 -1
- package/dist/x/noop.mjs +1 -1
- package/dist/x/pluck.es.js +194 -44
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +194 -44
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.mjs +194 -44
- package/dist/x/prepend.es.js +1 -1
- package/dist/x/prepend.es.min.js +1 -1
- package/dist/x/prepend.js +1 -1
- package/dist/x/prepend.min.js +1 -1
- package/dist/x/prepend.mjs +1 -1
- package/dist/x/size.es.js +1 -1
- package/dist/x/size.es.min.js +1 -1
- package/dist/x/size.js +1 -1
- package/dist/x/size.min.js +1 -1
- package/dist/x/size.mjs +1 -1
- package/dist/x/trace.es.js +1 -1
- package/dist/x/trace.es.min.js +1 -1
- package/dist/x/trace.js +1 -1
- package/dist/x/trace.min.js +1 -1
- package/dist/x/trace.mjs +1 -1
- package/dist/x/unionWith.es.js +1 -1
- package/dist/x/unionWith.es.min.js +1 -1
- package/dist/x/unionWith.js +1 -1
- package/dist/x/unionWith.min.js +1 -1
- package/dist/x/unionWith.mjs +1 -1
- package/dist/x/uniq.es.js +1 -1
- package/dist/x/uniq.es.min.js +1 -1
- package/dist/x/uniq.js +1 -1
- package/dist/x/uniq.min.js +1 -1
- package/dist/x/uniq.mjs +1 -1
- package/dist/x/unless.es.js +1 -1
- package/dist/x/unless.es.min.js +1 -1
- package/dist/x/unless.js +1 -1
- package/dist/x/unless.min.js +1 -1
- package/dist/x/unless.mjs +1 -1
- package/dist/x/values.es.js +1 -1
- package/dist/x/values.es.min.js +1 -1
- package/dist/x/values.js +1 -1
- package/dist/x/values.min.js +1 -1
- package/dist/x/values.mjs +1 -1
- package/dist/x/when.es.js +1 -1
- package/dist/x/when.es.min.js +1 -1
- package/dist/x/when.js +1 -1
- package/dist/x/when.min.js +1 -1
- package/dist/x/when.mjs +1 -1
- package/eq.js +2 -2
- package/es.js +238 -83
- package/every.js +2 -2
- package/filter.js +4 -4
- package/flatMap.js +61 -54
- package/forEach.js +33 -56
- package/get.js +49 -25
- package/gt.js +2 -2
- package/gte.js +2 -2
- package/index.js +238 -83
- package/lt.js +2 -2
- package/lte.js +2 -2
- package/map.js +115 -151
- package/monad/Mux.js +6 -4
- package/monad/PossiblePromise.js +6 -4
- package/monad/README.md +61 -40
- package/monad/Struct.js +6 -4
- package/not.js +1 -1
- package/omit.js +22 -19
- package/or.js +1 -1
- package/package.json +1 -1
- package/pick.js +14 -11
- package/pipe.js +18 -24
- package/reduce.js +1 -1
- package/set.js +17 -18
- package/some.js +2 -2
- package/switchCase.js +51 -43
- package/tap.js +17 -23
- package/transform.js +1 -1
- package/tryCatch.js +16 -24
- package/x/defaultsDeep.js +1 -1
- package/x/defaultsDeep.test.js +1 -1
- package/_internal/NextIteration.js +0 -12
- package/_internal/generatorFunctionFilter.js +0 -28
- package/_internal/iterationMap.js +0 -27
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Rubico v2.
|
|
2
|
+
* Rubico v2.10.0
|
|
3
3
|
* https://rubico.land/
|
|
4
4
|
*
|
|
5
5
|
* © Richard Yufei Tong, King of Software
|
|
@@ -607,26 +607,167 @@ const MappingIterator = (iterator, mapper) => ({
|
|
|
607
607
|
},
|
|
608
608
|
})
|
|
609
609
|
|
|
610
|
-
const
|
|
610
|
+
const promiseRace = Promise.race.bind(Promise)
|
|
611
611
|
|
|
612
|
-
|
|
612
|
+
class LinkedList {
|
|
613
|
+
constructor() {
|
|
614
|
+
this.first = null
|
|
615
|
+
this.last = null
|
|
616
|
+
this.length = 0
|
|
617
|
+
}
|
|
613
618
|
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
619
|
+
// popFirst() -> firstValue any
|
|
620
|
+
popFirst() {
|
|
621
|
+
const first = this.first
|
|
622
|
+
|
|
623
|
+
if (first == null) {
|
|
624
|
+
return undefined
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
if (first.next) {
|
|
628
|
+
this.first = first.next
|
|
629
|
+
} else {
|
|
630
|
+
this.first = null
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
this.length -= 1
|
|
634
|
+
|
|
635
|
+
return first.value
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// append(value any) -> undefined
|
|
639
|
+
append(value) {
|
|
640
|
+
const node = { value }
|
|
641
|
+
if (this.first == null) {
|
|
642
|
+
this.first = node
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
if (this.last == null) {
|
|
646
|
+
this.last = node
|
|
647
|
+
} else {
|
|
648
|
+
this.last.next = node
|
|
649
|
+
this.last = node
|
|
622
650
|
}
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
? mapped.then(NextIteration)
|
|
626
|
-
: { value: mapped, done: false }
|
|
651
|
+
|
|
652
|
+
this.length += 1
|
|
627
653
|
}
|
|
654
|
+
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
const symbolAsyncIterator = Symbol.asyncIterator
|
|
658
|
+
|
|
659
|
+
const arrayPush = function (array, value) {
|
|
660
|
+
array.push(value)
|
|
661
|
+
return array
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
const sleep = time => new Promise(resolve => {
|
|
665
|
+
setTimeout(resolve, time)
|
|
628
666
|
})
|
|
629
667
|
|
|
668
|
+
const MappingAsyncIterator = (asyncIterator, mapper) => {
|
|
669
|
+
const buffer = new LinkedList()
|
|
670
|
+
|
|
671
|
+
let index = -1
|
|
672
|
+
let consumingAsyncIterator = false
|
|
673
|
+
let isAsyncIteratorDone = false
|
|
674
|
+
|
|
675
|
+
return {
|
|
676
|
+
[symbolAsyncIterator]() {
|
|
677
|
+
return this
|
|
678
|
+
},
|
|
679
|
+
|
|
680
|
+
// _consumeAsyncIterator() -> Promise<>
|
|
681
|
+
async _consumeAsyncIterator() {
|
|
682
|
+
for await (const item of asyncIterator) {
|
|
683
|
+
index += 1
|
|
684
|
+
const mappedItem = mapper(item)
|
|
685
|
+
buffer.append(mappedItem)
|
|
686
|
+
}
|
|
687
|
+
isAsyncIteratorDone = true
|
|
688
|
+
},
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
async next() {
|
|
692
|
+
if (!consumingAsyncIterator) {
|
|
693
|
+
this._consumeAsyncIterator()
|
|
694
|
+
consumingAsyncIterator = true
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
while (!isAsyncIteratorDone) {
|
|
698
|
+
if (buffer.length > 0) {
|
|
699
|
+
let value = buffer.popFirst()
|
|
700
|
+
if (isPromise(value)) {
|
|
701
|
+
value = await value
|
|
702
|
+
}
|
|
703
|
+
return { value, done: false }
|
|
704
|
+
}
|
|
705
|
+
await sleep(10)
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
if (buffer.length > 0) {
|
|
709
|
+
let value = buffer.popFirst()
|
|
710
|
+
if (isPromise(value)) {
|
|
711
|
+
value = await value
|
|
712
|
+
}
|
|
713
|
+
return { value, done: false }
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
return { value: undefined, done: true }
|
|
717
|
+
},
|
|
718
|
+
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
const SerialMappingAsyncIterator = (asyncIterator, mapper) => {
|
|
723
|
+
const buffer = new LinkedList()
|
|
724
|
+
|
|
725
|
+
let index = -1
|
|
726
|
+
let consumingAsyncIterator = false
|
|
727
|
+
let isAsyncIteratorDone = false
|
|
728
|
+
|
|
729
|
+
return {
|
|
730
|
+
[symbolAsyncIterator]() {
|
|
731
|
+
return this
|
|
732
|
+
},
|
|
733
|
+
|
|
734
|
+
// _consumeAsyncIterator() -> Promise<>
|
|
735
|
+
async _consumeAsyncIterator() {
|
|
736
|
+
for await (const item of asyncIterator) {
|
|
737
|
+
index += 1
|
|
738
|
+
let mappedItem = mapper(item)
|
|
739
|
+
if (isPromise(mappedItem)) {
|
|
740
|
+
mappedItem = await mappedItem
|
|
741
|
+
}
|
|
742
|
+
buffer.append(mappedItem)
|
|
743
|
+
}
|
|
744
|
+
isAsyncIteratorDone = true
|
|
745
|
+
},
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
async next() {
|
|
749
|
+
if (!consumingAsyncIterator) {
|
|
750
|
+
this._consumeAsyncIterator()
|
|
751
|
+
consumingAsyncIterator = true
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
while (!isAsyncIteratorDone) {
|
|
755
|
+
if (buffer.length > 0) {
|
|
756
|
+
return { value: buffer.popFirst(), done: false }
|
|
757
|
+
}
|
|
758
|
+
await sleep(10)
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
if (buffer.length > 0) {
|
|
762
|
+
return { value: buffer.popFirst(), done: false }
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
return { value: undefined, done: true }
|
|
766
|
+
},
|
|
767
|
+
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
|
|
630
771
|
const isObject = value => {
|
|
631
772
|
if (value == null) {
|
|
632
773
|
return false
|
|
@@ -872,8 +1013,6 @@ const tapSync = func => function tapping(...args) {
|
|
|
872
1013
|
return args[0]
|
|
873
1014
|
}
|
|
874
1015
|
|
|
875
|
-
const promiseRace = Promise.race.bind(Promise)
|
|
876
|
-
|
|
877
1016
|
const arrayMapPoolAsync = async function (
|
|
878
1017
|
array, f, concurrencyLimit, result, index, promises,
|
|
879
1018
|
) {
|
|
@@ -1079,7 +1218,7 @@ const _curryArity = (arity, func, context, args) => function curried(...curriedA
|
|
|
1079
1218
|
curriedArgsIndex = -1,
|
|
1080
1219
|
numCurriedPlaceholders = 0
|
|
1081
1220
|
|
|
1082
|
-
while (
|
|
1221
|
+
while ((argsIndex += 1) < argsLength) {
|
|
1083
1222
|
const arg = args[argsIndex]
|
|
1084
1223
|
if (arg == __ && (curriedArgsIndex += 1) < curriedArgsLength) {
|
|
1085
1224
|
const curriedArg = curriedArgs[curriedArgsIndex]
|
|
@@ -1103,7 +1242,7 @@ const _curryArity = (arity, func, context, args) => function curried(...curriedA
|
|
|
1103
1242
|
}
|
|
1104
1243
|
}
|
|
1105
1244
|
|
|
1106
|
-
while (
|
|
1245
|
+
while ((curriedArgsIndex += 1) < curriedArgsLength) {
|
|
1107
1246
|
const curriedArg = curriedArgs[curriedArgsIndex]
|
|
1108
1247
|
if (curriedArg == __) {
|
|
1109
1248
|
numCurriedPlaceholders += 1
|
|
@@ -1133,7 +1272,7 @@ const curryArity = function (arity, func, context, args) {
|
|
|
1133
1272
|
return _curryArity(arity, func, context, args)
|
|
1134
1273
|
}
|
|
1135
1274
|
let argsIndex = -1
|
|
1136
|
-
while (
|
|
1275
|
+
while ((argsIndex += 1) < argsLength) {
|
|
1137
1276
|
const arg = args[argsIndex]
|
|
1138
1277
|
if (arg == __) {
|
|
1139
1278
|
return _curryArity(arity, func, context, args)
|
|
@@ -1196,9 +1335,6 @@ const _map = function (value, f) {
|
|
|
1196
1335
|
if (typeof value.then == 'function') {
|
|
1197
1336
|
return value.then(f)
|
|
1198
1337
|
}
|
|
1199
|
-
if (typeof value.map == 'function') {
|
|
1200
|
-
return value.map(f)
|
|
1201
|
-
}
|
|
1202
1338
|
if (typeof value == 'string' || value.constructor == String) {
|
|
1203
1339
|
return stringMap(value, f)
|
|
1204
1340
|
}
|
|
@@ -1214,6 +1350,9 @@ const _map = function (value, f) {
|
|
|
1214
1350
|
if (typeof value[symbolAsyncIterator] == 'function') {
|
|
1215
1351
|
return MappingAsyncIterator(value[symbolAsyncIterator](), f)
|
|
1216
1352
|
}
|
|
1353
|
+
if (typeof value.map == 'function') {
|
|
1354
|
+
return value.map(f)
|
|
1355
|
+
}
|
|
1217
1356
|
if (value.constructor == Object) {
|
|
1218
1357
|
return objectMap(value, f)
|
|
1219
1358
|
}
|
|
@@ -1252,27 +1391,36 @@ map.entries = function mapEntries(arg0, arg1) {
|
|
|
1252
1391
|
: _mapEntries(arg0, arg1)
|
|
1253
1392
|
}
|
|
1254
1393
|
|
|
1255
|
-
const _mapSeries = function (
|
|
1256
|
-
if (isArray(
|
|
1257
|
-
return arrayMapSeries(
|
|
1394
|
+
const _mapSeries = function (functor, f) {
|
|
1395
|
+
if (isArray(functor)) {
|
|
1396
|
+
return arrayMapSeries(functor, f)
|
|
1258
1397
|
}
|
|
1259
|
-
if (
|
|
1260
|
-
throw new TypeError(`invalid
|
|
1398
|
+
if (functor == null) {
|
|
1399
|
+
throw new TypeError(`invalid functor ${functor}`)
|
|
1261
1400
|
}
|
|
1262
1401
|
|
|
1263
|
-
if (typeof
|
|
1264
|
-
return stringMapSeries(
|
|
1402
|
+
if (typeof functor == 'string' || functor.constructor == String) {
|
|
1403
|
+
return stringMapSeries(functor, f)
|
|
1265
1404
|
}
|
|
1266
|
-
if (
|
|
1267
|
-
return setMapSeries(
|
|
1405
|
+
if (functor.constructor == Set) {
|
|
1406
|
+
return setMapSeries(functor, f)
|
|
1268
1407
|
}
|
|
1269
|
-
if (
|
|
1270
|
-
return mapMapSeries(
|
|
1408
|
+
if (functor.constructor == Map) {
|
|
1409
|
+
return mapMapSeries(functor, f)
|
|
1271
1410
|
}
|
|
1272
|
-
if (
|
|
1273
|
-
return
|
|
1411
|
+
if (typeof functor[symbolIterator] == 'function') {
|
|
1412
|
+
return MappingIterator(functor[symbolIterator](), f)
|
|
1274
1413
|
}
|
|
1275
|
-
|
|
1414
|
+
if (typeof functor[symbolAsyncIterator] == 'function') {
|
|
1415
|
+
return SerialMappingAsyncIterator(functor[symbolAsyncIterator](), f)
|
|
1416
|
+
}
|
|
1417
|
+
if (typeof functor.map == 'function') {
|
|
1418
|
+
return functor.map(f)
|
|
1419
|
+
}
|
|
1420
|
+
if (functor.constructor == Object) {
|
|
1421
|
+
return objectMapSeries(functor, f)
|
|
1422
|
+
}
|
|
1423
|
+
throw new TypeError(`invalid functor ${functor}`)
|
|
1276
1424
|
}
|
|
1277
1425
|
|
|
1278
1426
|
map.series = function mapSeries(arg0, arg1) {
|
|
@@ -1489,15 +1637,15 @@ const _filter = function (value, predicate) {
|
|
|
1489
1637
|
if (value.constructor == Map) {
|
|
1490
1638
|
return mapFilter(value, predicate)
|
|
1491
1639
|
}
|
|
1492
|
-
if (typeof value.filter == 'function') {
|
|
1493
|
-
return value.filter(predicate)
|
|
1494
|
-
}
|
|
1495
1640
|
if (typeof value[symbolIterator] == 'function') {
|
|
1496
1641
|
return FilteringIterator(value[symbolIterator](), predicate)
|
|
1497
1642
|
}
|
|
1498
1643
|
if (typeof value[symbolAsyncIterator] == 'function') {
|
|
1499
1644
|
return FilteringAsyncIterator(value[symbolAsyncIterator](), predicate)
|
|
1500
1645
|
}
|
|
1646
|
+
if (typeof value.filter == 'function') {
|
|
1647
|
+
return value.filter(predicate)
|
|
1648
|
+
}
|
|
1501
1649
|
if (value.constructor == Object) {
|
|
1502
1650
|
return objectFilter(value, predicate)
|
|
1503
1651
|
}
|
|
@@ -1944,11 +2092,6 @@ const transform = function (...args) {
|
|
|
1944
2092
|
return _transform(args[0], args[1], args[2])
|
|
1945
2093
|
}
|
|
1946
2094
|
|
|
1947
|
-
const arrayPush = function (array, value) {
|
|
1948
|
-
array.push(value)
|
|
1949
|
-
return array
|
|
1950
|
-
}
|
|
1951
|
-
|
|
1952
2095
|
const FlatMappingIterator = function (iterator, flatMapper) {
|
|
1953
2096
|
let buffer = [],
|
|
1954
2097
|
bufferIndex = 0
|
|
@@ -1983,13 +2126,12 @@ const FlatMappingIterator = function (iterator, flatMapper) {
|
|
|
1983
2126
|
}
|
|
1984
2127
|
}
|
|
1985
2128
|
|
|
1986
|
-
const sleep = time => new Promise(resolve => {
|
|
1987
|
-
setTimeout(resolve, time)
|
|
1988
|
-
})
|
|
1989
|
-
|
|
1990
2129
|
const FlatMappingAsyncIterator = function (asyncIterator, flatMapper) {
|
|
1991
|
-
const buffer = []
|
|
1992
|
-
|
|
2130
|
+
const buffer = []
|
|
2131
|
+
const promises = new Set()
|
|
2132
|
+
|
|
2133
|
+
let consumingAsyncIterator = false
|
|
2134
|
+
let isAsyncIteratorDone = false
|
|
1993
2135
|
|
|
1994
2136
|
return {
|
|
1995
2137
|
isAsyncIteratorDone: false,
|
|
@@ -2000,38 +2142,48 @@ const FlatMappingAsyncIterator = function (asyncIterator, flatMapper) {
|
|
|
2000
2142
|
return '[object FlatMappingAsyncIterator]'
|
|
2001
2143
|
},
|
|
2002
2144
|
|
|
2003
|
-
|
|
2004
|
-
async
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
const promise = bufferLoading.then(() => promises.delete(promise))
|
|
2018
|
-
promises.add(promise)
|
|
2019
|
-
} else {
|
|
2020
|
-
const bufferLoading = genericReduce(monad, arrayPush, buffer)
|
|
2021
|
-
if (isPromise(bufferLoading)) {
|
|
2022
|
-
const promise = bufferLoading.then(() => promises.delete(promise))
|
|
2023
|
-
promises.add(promise)
|
|
2024
|
-
}
|
|
2025
|
-
}
|
|
2145
|
+
// _consumeAsyncIterator() -> Promise<>
|
|
2146
|
+
async _consumeAsyncIterator() {
|
|
2147
|
+
for await (const item of asyncIterator) {
|
|
2148
|
+
const monad = flatMapper(item)
|
|
2149
|
+
if (isPromise(monad)) {
|
|
2150
|
+
const bufferLoading =
|
|
2151
|
+
monad.then(curry3(genericReduce, __, arrayPush, buffer))
|
|
2152
|
+
const promise = bufferLoading.then(() => promises.delete(promise))
|
|
2153
|
+
promises.add(promise)
|
|
2154
|
+
} else {
|
|
2155
|
+
const bufferLoading = genericReduce(monad, arrayPush, buffer)
|
|
2156
|
+
if (isPromise(bufferLoading)) {
|
|
2157
|
+
const promise = bufferLoading.then(() => promises.delete(promise))
|
|
2158
|
+
promises.add(promise)
|
|
2026
2159
|
}
|
|
2027
2160
|
}
|
|
2161
|
+
}
|
|
2162
|
+
isAsyncIteratorDone = true
|
|
2163
|
+
},
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
async next() {
|
|
2167
|
+
if (!consumingAsyncIterator) {
|
|
2168
|
+
this._consumeAsyncIterator()
|
|
2169
|
+
consumingAsyncIterator = true
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
while (!isAsyncIteratorDone || promises.size > 0) {
|
|
2028
2173
|
if (buffer.length > 0) {
|
|
2029
2174
|
return { value: buffer.shift(), done: false }
|
|
2030
2175
|
}
|
|
2031
2176
|
if (promises.size > 0) {
|
|
2032
|
-
await promiseRace(
|
|
2177
|
+
await promiseRace(promises)
|
|
2178
|
+
} else {
|
|
2179
|
+
await sleep(10)
|
|
2033
2180
|
}
|
|
2034
2181
|
}
|
|
2182
|
+
|
|
2183
|
+
if (buffer.length > 0) {
|
|
2184
|
+
return { value: buffer.shift(), done: false }
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2035
2187
|
return { value: undefined, done: true }
|
|
2036
2188
|
},
|
|
2037
2189
|
}
|
|
@@ -2127,9 +2279,12 @@ const objectFlatten = function (object) {
|
|
|
2127
2279
|
|
|
2128
2280
|
for (const key in object) {
|
|
2129
2281
|
const element = object[key]
|
|
2282
|
+
|
|
2130
2283
|
if (element == null) {
|
|
2131
2284
|
continue
|
|
2132
|
-
}
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
if (typeof element[symbolIterator] == 'function') {
|
|
2133
2288
|
for (const monadElement of element) {
|
|
2134
2289
|
objectAssign(result, monadElement)
|
|
2135
2290
|
}
|
|
@@ -2390,7 +2545,7 @@ const _iteratorForEachSeriesAsync = async function (iterator, callback) {
|
|
|
2390
2545
|
|
|
2391
2546
|
const iteratorForEachSeries = function (iterator, callback) {
|
|
2392
2547
|
let iteration = iterator.next()
|
|
2393
|
-
while (!
|
|
2548
|
+
while (!iteration.done) {
|
|
2394
2549
|
const operation = callback(iteration.value)
|
|
2395
2550
|
if (isPromise(operation)) {
|
|
2396
2551
|
return operation
|
|
@@ -2420,16 +2575,16 @@ const _forEach = function (collection, callback) {
|
|
|
2420
2575
|
if (collection == null) {
|
|
2421
2576
|
return collection
|
|
2422
2577
|
}
|
|
2423
|
-
if (typeof collection.forEach == 'function') {
|
|
2424
|
-
collection.forEach(callback)
|
|
2425
|
-
return collection
|
|
2426
|
-
}
|
|
2427
2578
|
if (typeof collection[symbolIterator] == 'function') {
|
|
2428
2579
|
return iteratorForEach(collection[symbolIterator](), callback)
|
|
2429
2580
|
}
|
|
2430
2581
|
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
2431
2582
|
return asyncIteratorForEach(collection[symbolAsyncIterator](), callback)
|
|
2432
2583
|
}
|
|
2584
|
+
if (typeof collection.forEach == 'function') {
|
|
2585
|
+
collection.forEach(callback)
|
|
2586
|
+
return collection
|
|
2587
|
+
}
|
|
2433
2588
|
if (collection.constructor == Object) {
|
|
2434
2589
|
return objectForEach(collection, callback)
|
|
2435
2590
|
}
|
|
@@ -3126,8 +3281,8 @@ const get = function (arg0, arg1, arg2) {
|
|
|
3126
3281
|
if (typeof arg0 == 'string' || typeof arg0 == 'number' || isArray(arg0)) {
|
|
3127
3282
|
return curry3(_get, __, arg0, arg1)
|
|
3128
3283
|
}
|
|
3129
|
-
if (isPromise(arg0)) {
|
|
3130
|
-
return arg0.then(
|
|
3284
|
+
if (isPromise(arg0) || isPromise(arg2)) {
|
|
3285
|
+
return promiseAll([arg0, arg1, arg2]).then(curry2(funcApply, _get, __))
|
|
3131
3286
|
}
|
|
3132
3287
|
return _get(arg0, arg1, arg2)
|
|
3133
3288
|
}
|
package/lt.js
CHANGED
|
@@ -58,7 +58,7 @@ const lessThan = require('./_internal/lessThan')
|
|
|
58
58
|
* asyncIsLessThan3(5).then(console.log) // false
|
|
59
59
|
* ```
|
|
60
60
|
*
|
|
61
|
-
* `lt` supports a lazy
|
|
61
|
+
* `lt` supports a lazy interface for composability.
|
|
62
62
|
*
|
|
63
63
|
* ```javascript [playground]
|
|
64
64
|
* pipe({ value: 1 }, [
|
|
@@ -67,7 +67,7 @@ const lessThan = require('./_internal/lessThan')
|
|
|
67
67
|
* ])
|
|
68
68
|
* ```
|
|
69
69
|
*
|
|
70
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
70
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
71
71
|
*
|
|
72
72
|
* ```javascript [playground]
|
|
73
73
|
* lt(Promise.resolve({ a: 1, b: 2 }), get('a'), get('b')).then(console.log) // true
|
package/lte.js
CHANGED
|
@@ -58,7 +58,7 @@ const lessThanOrEqual = require('./_internal/lessThanOrEqual')
|
|
|
58
58
|
* asyncIsLessThanOrEqualTo3(5).then(console.log) // false
|
|
59
59
|
* ```
|
|
60
60
|
*
|
|
61
|
-
* `lte` supports a lazy
|
|
61
|
+
* `lte` supports a lazy interface for composability.
|
|
62
62
|
*
|
|
63
63
|
* ```javascript [playground]
|
|
64
64
|
* pipe({ value: 1 }, [
|
|
@@ -67,7 +67,7 @@ const lessThanOrEqual = require('./_internal/lessThanOrEqual')
|
|
|
67
67
|
* ])
|
|
68
68
|
* ```
|
|
69
69
|
*
|
|
70
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
70
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
71
71
|
*
|
|
72
72
|
* ```javascript [playground]
|
|
73
73
|
* lte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|