rubico 2.7.2 → 2.7.4
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 +14 -17
- package/Transducer.d.ts +10 -10
- package/Transducer.js +65 -69
- package/__.js +1 -1
- package/_internal/FlatMappingIterator.js +1 -1
- package/_internal/MappingIterator.d.ts +1 -1
- package/_internal/MappingIterator.js +1 -1
- package/_internal/arrayFilter.js +6 -6
- package/_internal/arrayFilterIndexes.js +7 -7
- package/_internal/arrayFilterWithIndex.js +6 -6
- package/_internal/arrayFind.js +7 -7
- package/_internal/arrayFlatten.js +25 -25
- package/_internal/arrayForEach.d.ts +1 -1
- package/_internal/arrayForEach.js +1 -1
- package/_internal/arrayForEachSeries.js +1 -1
- package/_internal/arrayMap.d.ts +2 -2
- package/_internal/arrayMap.js +5 -5
- package/_internal/arrayMapPool.d.ts +1 -1
- package/_internal/arrayMapPool.js +10 -10
- package/_internal/arrayMapRate.js +4 -4
- package/_internal/arrayMapSeries.d.ts +1 -1
- package/_internal/arrayMapSeries.js +8 -8
- package/_internal/arrayMapWithIndex.js +4 -4
- package/_internal/arrayReduce.js +1 -1
- package/_internal/asyncGeneratorFunctionForEach.js +3 -3
- package/_internal/asyncGeneratorFunctionMap.js +3 -3
- package/_internal/asyncIteratorFind.js +3 -3
- package/_internal/asyncIteratorForEach.d.ts +1 -1
- package/_internal/asyncIteratorForEach.js +3 -3
- package/_internal/asyncIteratorForEachSeries.js +3 -3
- package/_internal/asyncIteratorToArray.js +2 -2
- package/_internal/copyDeep.js +12 -12
- package/_internal/funcAll.js +3 -3
- package/_internal/funcAllSeries.js +6 -6
- package/_internal/funcObjectAll.js +4 -4
- package/_internal/functionArrayAll.js +3 -3
- package/_internal/functionArrayAllSeries.js +6 -6
- package/_internal/functionObjectAll.js +4 -4
- package/_internal/generatorFunctionForEach.js +3 -3
- package/_internal/generatorFunctionMap.js +3 -3
- package/_internal/generatorFunctionReduce.js +1 -1
- package/_internal/iteratorEvery.js +2 -2
- package/_internal/iteratorFind.js +7 -7
- package/_internal/iteratorForEach.d.ts +1 -1
- package/_internal/iteratorForEach.js +3 -3
- package/_internal/iteratorForEachSeries.js +1 -1
- package/_internal/iteratorReduce.d.ts +1 -1
- package/_internal/iteratorReduce.js +2 -2
- package/_internal/iteratorSome.js +2 -2
- package/_internal/mapFilter.js +4 -4
- package/_internal/mapMap.d.ts +1 -1
- package/_internal/mapMap.js +6 -6
- package/_internal/mapMapPool.js +10 -10
- package/_internal/mapMapSeries.js +10 -10
- package/_internal/objectFilter.js +6 -6
- package/_internal/objectFlatMap.d.ts +1 -1
- package/_internal/objectFlatMap.js +1 -1
- package/_internal/objectFlatten.js +14 -14
- package/_internal/objectMap.js +3 -3
- package/_internal/objectMapOwn.js +3 -3
- package/_internal/objectMapPool.js +10 -10
- package/_internal/objectMapSeries.js +9 -9
- package/_internal/objectReduce.d.ts +1 -1
- package/_internal/objectReduce.js +2 -2
- package/_internal/reducerAllSync.d.ts +2 -2
- package/_internal/reducerAllSync.js +2 -2
- package/_internal/reducerAnySync.d.ts +1 -1
- package/_internal/reducerAnySync.js +2 -2
- package/_internal/reducerConcat.d.ts +1 -1
- package/_internal/reducerConcat.js +4 -4
- package/_internal/reducerConcatSync.js +2 -2
- package/_internal/reducerEvery.d.ts +2 -2
- package/_internal/reducerEvery.js +4 -4
- package/_internal/reducerFilter.d.ts +2 -2
- package/_internal/reducerFilter.js +5 -5
- package/_internal/reducerFlatten.js +3 -3
- package/_internal/reducerForEach.d.ts +2 -2
- package/_internal/reducerForEach.js +5 -5
- package/_internal/reducerMap.d.ts +1 -1
- package/_internal/reducerMap.js +5 -5
- package/_internal/reducerSome.d.ts +2 -2
- package/_internal/reducerSome.js +4 -4
- package/_internal/reducerTryCatch.d.ts +2 -2
- package/_internal/reducerTryCatch.js +8 -8
- package/_internal/setFilter.d.ts +1 -1
- package/_internal/setFilter.js +5 -5
- package/_internal/setFlatten.js +24 -24
- package/_internal/setMap.d.ts +1 -1
- package/_internal/setMap.js +6 -6
- package/_internal/setMapPool.js +9 -9
- package/_internal/setMapSeries.js +10 -10
- package/_internal/streamFlatExtend.js +25 -25
- package/_internal/streamFlatMap.js +2 -2
- package/all.js +29 -30
- package/and.js +27 -13
- package/assign.js +15 -23
- package/compose.js +7 -5
- package/curry.js +5 -12
- package/dist/Transducer.es.js +24 -24
- package/dist/Transducer.es.min.js +1 -1
- package/dist/Transducer.js +24 -24
- package/dist/Transducer.min.js +1 -1
- package/dist/Transducer.mjs +24 -24
- 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 +14 -14
- package/dist/all.es.min.js +1 -1
- package/dist/all.js +14 -14
- package/dist/all.min.js +1 -1
- package/dist/all.mjs +14 -14
- 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 +5 -5
- package/dist/assign.es.min.js +1 -1
- package/dist/assign.js +5 -5
- package/dist/assign.min.js +1 -1
- package/dist/assign.mjs +5 -5
- 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 +1 -1
- package/dist/curry.es.min.js +1 -1
- package/dist/curry.js +1 -1
- package/dist/curry.min.js +1 -1
- package/dist/curry.mjs +1 -1
- 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 +7 -7
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +7 -7
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +7 -7
- package/dist/filter.es.js +21 -21
- package/dist/filter.es.min.js +1 -1
- package/dist/filter.js +21 -21
- package/dist/filter.min.js +1 -1
- package/dist/filter.mjs +21 -21
- package/dist/flatMap.es.js +82 -82
- package/dist/flatMap.es.min.js +1 -1
- package/dist/flatMap.js +82 -82
- package/dist/flatMap.min.js +1 -1
- package/dist/flatMap.mjs +82 -82
- package/dist/forEach.es.js +7 -7
- package/dist/forEach.es.min.js +1 -1
- package/dist/forEach.js +7 -7
- package/dist/forEach.min.js +1 -1
- package/dist/forEach.mjs +7 -7
- package/dist/get.es.js +1 -1
- package/dist/get.es.min.js +1 -1
- package/dist/get.js +1 -1
- package/dist/get.min.js +1 -1
- package/dist/get.mjs +1 -1
- 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 +83 -83
- package/dist/map.es.min.js +1 -1
- package/dist/map.js +83 -83
- package/dist/map.min.js +1 -1
- package/dist/map.mjs +83 -83
- package/dist/not.es.js +4 -2
- package/dist/not.es.min.js +2 -2
- package/dist/not.js +4 -2
- package/dist/not.min.js +2 -2
- package/dist/not.mjs +4 -2
- package/dist/omit.es.js +13 -13
- package/dist/omit.es.min.js +1 -1
- package/dist/omit.js +13 -13
- package/dist/omit.min.js +1 -1
- package/dist/omit.mjs +13 -13
- 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 +5 -5
- package/dist/reduce.es.min.js +1 -1
- package/dist/reduce.js +5 -5
- package/dist/reduce.min.js +1 -1
- package/dist/reduce.mjs +5 -5
- package/dist/rubico.es.js +218 -216
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +218 -216
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +218 -216
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +218 -216
- 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 +8 -8
- package/dist/some.es.min.js +1 -1
- package/dist/some.js +8 -8
- package/dist/some.min.js +1 -1
- package/dist/some.mjs +8 -8
- 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 +5 -5
- package/dist/transform.es.min.js +1 -1
- package/dist/transform.js +5 -5
- package/dist/transform.min.js +1 -1
- package/dist/transform.mjs +5 -5
- 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 +8 -8
- package/dist/x/append.es.min.js +1 -1
- package/dist/x/append.js +8 -8
- package/dist/x/append.min.js +1 -1
- package/dist/x/append.mjs +8 -8
- 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 +69 -37
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +69 -37
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.mjs +69 -37
- package/dist/x/differenceWith.es.js +14 -14
- package/dist/x/differenceWith.es.min.js +1 -1
- package/dist/x/differenceWith.js +14 -14
- package/dist/x/differenceWith.min.js +1 -1
- package/dist/x/differenceWith.mjs +14 -14
- package/dist/x/filterOut.es.js +24 -22
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +24 -22
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.mjs +24 -22
- package/dist/x/find.es.js +18 -18
- package/dist/x/find.es.min.js +1 -1
- package/dist/x/find.js +18 -18
- package/dist/x/find.min.js +1 -1
- package/dist/x/find.mjs +18 -18
- 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 +82 -82
- package/dist/x/flatten.es.min.js +1 -1
- package/dist/x/flatten.js +82 -82
- package/dist/x/flatten.min.js +1 -1
- package/dist/x/flatten.mjs +82 -82
- package/dist/x/groupBy.es.js +17 -17
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +17 -17
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +17 -17
- 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 +6 -6
- package/dist/x/maxBy.es.min.js +1 -1
- package/dist/x/maxBy.js +6 -6
- package/dist/x/maxBy.min.js +1 -1
- package/dist/x/maxBy.mjs +6 -6
- 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 +83 -83
- package/dist/x/pluck.es.min.js +1 -1
- package/dist/x/pluck.js +83 -83
- package/dist/x/pluck.min.js +1 -1
- package/dist/x/pluck.mjs +83 -83
- package/dist/x/prepend.es.js +8 -8
- package/dist/x/prepend.es.min.js +1 -1
- package/dist/x/prepend.js +8 -8
- package/dist/x/prepend.min.js +1 -1
- package/dist/x/prepend.mjs +8 -8
- 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 +39 -39
- package/dist/x/unionWith.es.min.js +1 -1
- package/dist/x/unionWith.js +39 -39
- package/dist/x/unionWith.min.js +1 -1
- package/dist/x/unionWith.mjs +39 -39
- 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 +32 -10
- package/es.js +218 -216
- package/every.d.ts +1 -1
- package/every.js +5 -3
- package/filter.d.ts +3 -3
- package/filter.js +15 -15
- package/flatMap.d.ts +9 -9
- package/flatMap.js +13 -11
- package/forEach.d.ts +1 -1
- package/forEach.js +19 -15
- package/gt.js +30 -13
- package/gte.js +31 -12
- package/index.js +218 -216
- package/lt.js +28 -9
- package/lte.js +34 -15
- package/map.d.ts +3 -3
- package/map.js +32 -32
- package/monad/Mux.benchmark.js +1 -1
- package/monad/Mux.js +6 -6
- package/monad/Struct.js +2 -2
- package/not.js +23 -8
- package/omit.js +2 -3
- package/or.js +30 -14
- package/package.json +1 -1
- package/pick.js +2 -3
- package/pipe.js +7 -15
- package/reduce.d.ts +7 -7
- package/reduce.js +19 -24
- package/some.d.ts +1 -1
- package/some.js +5 -3
- package/switchCase.d.ts +1 -1
- package/switchCase.js +13 -12
- package/tap.js +20 -4
- package/thunkify.js +2 -0
- package/transform.d.ts +1 -1
- package/transform.js +9 -23
- package/tryCatch.js +41 -8
- package/x/README.md +8 -8
- package/x/append.d.ts +2 -2
- package/x/append.js +8 -8
- package/x/defaultsDeep.js +94 -57
- package/x/defaultsDeep.test.js +24 -1
- package/x/differenceWith.js +13 -13
- package/x/find.d.ts +1 -1
- package/x/find.js +1 -1
- package/x/find.test.js +2 -2
- package/x/findIndex.test.js +1 -1
- package/x/first.d.ts +1 -1
- package/x/first.js +1 -1
- package/x/first.test.js +1 -1
- package/x/groupBy.d.ts +1 -1
- package/x/groupBy.js +13 -13
- package/x/last.d.ts +1 -1
- package/x/last.js +1 -1
- package/x/last.test.js +1 -1
- package/x/maxBy.d.ts +7 -7
- package/x/maxBy.js +13 -13
- package/x/maxBy.test.js +5 -5
- package/x/pluck.test.js +1 -1
- package/x/prepend.d.ts +2 -2
- package/x/prepend.js +8 -8
- package/x/size.d.ts +1 -1
- package/x/size.js +1 -1
- package/x/unionWith.js +11 -11
- package/x/unionWith.test.js +5 -5
package/x/defaultsDeep.js
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
const isArray = require('../_internal/isArray')
|
|
2
|
+
const curry2 = require('../_internal/curry2')
|
|
3
|
+
const __ = require('../_internal/placeholder')
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* @name arrayDefaultsDeepFromArray
|
|
5
7
|
*
|
|
6
8
|
* @synopsis
|
|
7
9
|
* ```coffeescript [specscript]
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* arrayDefaultsDeepFromArray(
|
|
11
|
+
* data Array<Array|Object|any>,
|
|
12
|
+
* defaults Array<Array|Object|any>
|
|
13
|
+
* ) -> Object
|
|
12
14
|
* ```
|
|
13
15
|
*/
|
|
14
|
-
|
|
15
|
-
const defaultArrayLength =
|
|
16
|
-
result =
|
|
16
|
+
function arrayDefaultsDeepFromArray(data, defaults) {
|
|
17
|
+
const defaultArrayLength = defaults.length,
|
|
18
|
+
result = data.slice()
|
|
17
19
|
let index = -1
|
|
18
20
|
while (++index < defaultArrayLength) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
if (isArray(
|
|
22
|
-
result[index] = arrayDefaultsDeepFromArray(
|
|
23
|
-
} else if (
|
|
24
|
-
result[index] =
|
|
25
|
-
} else if (
|
|
26
|
-
result[index] =
|
|
27
|
-
} else if (
|
|
28
|
-
result[index] = objectDefaultsDeepFromObject(
|
|
21
|
+
const element = data[index],
|
|
22
|
+
defaultElement = defaults[index]
|
|
23
|
+
if (isArray(element) && isArray(defaultElement)) {
|
|
24
|
+
result[index] = arrayDefaultsDeepFromArray(element, defaultElement)
|
|
25
|
+
} else if (element == null) {
|
|
26
|
+
result[index] = defaultElement
|
|
27
|
+
} else if (defaultElement == null) {
|
|
28
|
+
result[index] = element
|
|
29
|
+
} else if (element.constructor == Object && defaultElement.constructor == Object) {
|
|
30
|
+
result[index] = objectDefaultsDeepFromObject(element, defaultElement)
|
|
29
31
|
} else {
|
|
30
|
-
result[index] =
|
|
32
|
+
result[index] = element
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
return result
|
|
@@ -38,62 +40,89 @@ const arrayDefaultsDeepFromArray = function (array, defaultArray) {
|
|
|
38
40
|
*
|
|
39
41
|
* @synopsis
|
|
40
42
|
* ```coffeescript [specscript]
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
43
|
+
* objectDefaultsDeepFromObject(
|
|
44
|
+
* data Object<Array|Object|any>,
|
|
45
|
+
* defaults Object<Array|Object|any>
|
|
46
|
+
* ) -> Object
|
|
45
47
|
* ```
|
|
46
48
|
*/
|
|
47
|
-
|
|
48
|
-
const result = { ...
|
|
49
|
-
for (const key in
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
if (isArray(
|
|
53
|
-
result[key] = arrayDefaultsDeepFromArray(
|
|
54
|
-
} else if (
|
|
55
|
-
result[key] =
|
|
56
|
-
} else if (
|
|
57
|
-
result[key] =
|
|
58
|
-
} else if (
|
|
59
|
-
result[key] = objectDefaultsDeepFromObject(
|
|
49
|
+
function objectDefaultsDeepFromObject(data, defaults) {
|
|
50
|
+
const result = { ...data }
|
|
51
|
+
for (const key in defaults) {
|
|
52
|
+
const element = data[key],
|
|
53
|
+
defaultElement = defaults[key]
|
|
54
|
+
if (isArray(element) && isArray(defaultElement)) {
|
|
55
|
+
result[key] = arrayDefaultsDeepFromArray(element, defaultElement)
|
|
56
|
+
} else if (element == null) {
|
|
57
|
+
result[key] = defaultElement
|
|
58
|
+
} else if (defaultElement == null) {
|
|
59
|
+
result[key] = element
|
|
60
|
+
} else if (element.constructor == Object && defaultElement.constructor == Object) {
|
|
61
|
+
result[key] = objectDefaultsDeepFromObject(element, defaultElement)
|
|
60
62
|
} else {
|
|
61
|
-
result[key] =
|
|
63
|
+
result[key] = element
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
66
|
return result
|
|
65
67
|
}
|
|
66
68
|
|
|
69
|
+
/**
|
|
70
|
+
* @name _defaultsDeep
|
|
71
|
+
*
|
|
72
|
+
* @synopsis
|
|
73
|
+
* ```coffeescript [specscript]
|
|
74
|
+
* _defaultsDeep(
|
|
75
|
+
* data Object<Array|Object|any>,
|
|
76
|
+
* defaults (Object|Array)<Array|Object|any>
|
|
77
|
+
* ) -> result Object
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
function _defaultsDeep(data, defaults) {
|
|
81
|
+
if (isArray(data) && isArray(defaults)) {
|
|
82
|
+
return arrayDefaultsDeepFromArray(data, defaults)
|
|
83
|
+
}
|
|
84
|
+
if (data == null || defaults == null) {
|
|
85
|
+
return data
|
|
86
|
+
}
|
|
87
|
+
if (data.constructor == Object && defaults.constructor == Object) {
|
|
88
|
+
return objectDefaultsDeepFromObject(data, defaults)
|
|
89
|
+
}
|
|
90
|
+
return data
|
|
91
|
+
}
|
|
92
|
+
|
|
67
93
|
/**
|
|
68
94
|
* @name defaultsDeep
|
|
69
95
|
*
|
|
70
96
|
* @synopsis
|
|
71
97
|
* ```coffeescript [specscript]
|
|
72
|
-
*
|
|
73
|
-
*
|
|
98
|
+
* data (Object|Array)<Array|Object|any>
|
|
99
|
+
* defaults (Object|Array)<Array|Object|any>
|
|
74
100
|
*
|
|
75
|
-
* defaultsDeep(
|
|
101
|
+
* defaultsDeep(data, defaults) -> result Object
|
|
102
|
+
* defaultsDeep(defaults)(data) -> result Object
|
|
76
103
|
* ```
|
|
77
104
|
*
|
|
78
105
|
* @description
|
|
79
|
-
* Deeply assign default values to an
|
|
106
|
+
* Deeply assign default values to an object or array `data` using an array or object of default values `defaults`. The keys or indices of each element of `defaults` are used to extend `data` where there is no existing value. Both `data` and `defaults` may have nested arrays or objects.
|
|
80
107
|
*
|
|
81
108
|
* ```javascript [playground]
|
|
82
109
|
* import defaultsDeep from 'https://unpkg.com/rubico/dist/x/defaultsDeep.es.js'
|
|
83
110
|
*
|
|
84
|
-
* const
|
|
111
|
+
* const user = {
|
|
112
|
+
* name: 'John',
|
|
113
|
+
* images: [{ url: 'https://placehold.co/600x400' }],
|
|
114
|
+
* }
|
|
115
|
+
*
|
|
116
|
+
* const userWithDefaults = defaultsDeep(user, {
|
|
85
117
|
* name: 'placeholder',
|
|
86
118
|
* images: [
|
|
87
|
-
* { url: 'https://
|
|
88
|
-
* { url: 'https://
|
|
89
|
-
* { url: 'https://
|
|
119
|
+
* { url: 'https://placehold.co/150' },
|
|
120
|
+
* { url: 'https://placehold.co/150' },
|
|
121
|
+
* { url: 'https://placehold.co/150' },
|
|
90
122
|
* ],
|
|
91
123
|
* })
|
|
92
124
|
*
|
|
93
|
-
* console.log(
|
|
94
|
-
* name: 'John',
|
|
95
|
-
* images: [{ url: 'https://via.placeholder.com/150/0000FF/808080%20?Text=Digital.com' }],
|
|
96
|
-
* }))
|
|
125
|
+
* console.log(userWithDefaults)
|
|
97
126
|
* // {
|
|
98
127
|
* // name: 'John',
|
|
99
128
|
* // images: [
|
|
@@ -104,22 +133,30 @@ const objectDefaultsDeepFromObject = function (object, defaultObject) {
|
|
|
104
133
|
* // }
|
|
105
134
|
* ```
|
|
106
135
|
*
|
|
136
|
+
* The `defaults` array or object may be provided to `defaultsDeep` without `data` to create a lazy version of `defaultsDeep` that accepts `data` as a single argument. This "lazy" API can be used for function pipelines and function compositions.
|
|
137
|
+
*
|
|
138
|
+
* ```javascript [playground]
|
|
139
|
+
* pipe({ a: 1 }, [
|
|
140
|
+
* defaultsDeep({ b: 2, c: 3, g: [1, 2, 3] }),
|
|
141
|
+
* console.log, // { a: 1, b: 2, c: 3, g: [1, 2, 3] }
|
|
142
|
+
* ])
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
107
145
|
* See also:
|
|
146
|
+
* * [pipe](/docs/pipe)
|
|
147
|
+
* * [compose](/docs/compose)
|
|
108
148
|
* * [callProp](/docs/callProp)
|
|
109
149
|
* * [differenceWith](/docs/differenceWith)
|
|
110
150
|
*
|
|
111
151
|
*/
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
return
|
|
115
|
-
}
|
|
116
|
-
if (value == null || defaultCollection == null) {
|
|
117
|
-
return value
|
|
152
|
+
function defaultsDeep(...args) {
|
|
153
|
+
if (args.length == 1) {
|
|
154
|
+
return curry2(_defaultsDeep, __, args[0])
|
|
118
155
|
}
|
|
119
|
-
if (
|
|
120
|
-
return
|
|
156
|
+
if (args.length == 2) {
|
|
157
|
+
return _defaultsDeep(...args)
|
|
121
158
|
}
|
|
122
|
-
|
|
159
|
+
throw new TypeError('Invalid number of arguments')
|
|
123
160
|
}
|
|
124
161
|
|
|
125
162
|
module.exports = defaultsDeep
|
package/x/defaultsDeep.test.js
CHANGED
|
@@ -2,6 +2,29 @@ const assert = require('assert')
|
|
|
2
2
|
const defaultsDeep = require('./defaultsDeep')
|
|
3
3
|
|
|
4
4
|
describe('defaultsDeep', () => {
|
|
5
|
+
it('eager API', async () => {
|
|
6
|
+
assert.deepEqual(
|
|
7
|
+
defaultsDeep([3], [1, 2, 3]),
|
|
8
|
+
[3, 2, 3],
|
|
9
|
+
)
|
|
10
|
+
assert.deepEqual(
|
|
11
|
+
defaultsDeep([[]], [[1], 2, 3]),
|
|
12
|
+
[[1], 2, 3],
|
|
13
|
+
)
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('Invalid number of arguments', async () => {
|
|
17
|
+
assert.throws(
|
|
18
|
+
() => defaultsDeep(),
|
|
19
|
+
new TypeError('Invalid number of arguments'),
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
assert.throws(
|
|
23
|
+
() => defaultsDeep(1, 2, 3),
|
|
24
|
+
new TypeError('Invalid number of arguments'),
|
|
25
|
+
)
|
|
26
|
+
})
|
|
27
|
+
|
|
5
28
|
it('default array', async () => {
|
|
6
29
|
assert.deepEqual(
|
|
7
30
|
defaultsDeep([1, 2, 3])([3]),
|
|
@@ -97,7 +120,7 @@ describe('defaultsDeep', () => {
|
|
|
97
120
|
{ obj: { a: '1' } },
|
|
98
121
|
)
|
|
99
122
|
})
|
|
100
|
-
it('nullish default
|
|
123
|
+
it('nullish default element should use current element', async () => {
|
|
101
124
|
assert.deepEqual(
|
|
102
125
|
defaultsDeep([null, 1, 2, 3, 4])([0, 1, 2]),
|
|
103
126
|
[0, 1, 2, 3, 4],
|
package/x/differenceWith.js
CHANGED
|
@@ -32,13 +32,13 @@ const differenceWithArrayAsync = async function (
|
|
|
32
32
|
) {
|
|
33
33
|
const allValuesLength = allValues.length
|
|
34
34
|
while (++index < allValuesLength) {
|
|
35
|
-
const
|
|
36
|
-
let
|
|
37
|
-
if (isPromise(
|
|
38
|
-
|
|
35
|
+
const element = allValues[index]
|
|
36
|
+
let doesElementExistByComparator = arraySome(array, curry2(comparator, element, __))
|
|
37
|
+
if (isPromise(doesElementExistByComparator)) {
|
|
38
|
+
doesElementExistByComparator = await doesElementExistByComparator
|
|
39
39
|
}
|
|
40
|
-
if (!
|
|
41
|
-
result.push(
|
|
40
|
+
if (!doesElementExistByComparator) {
|
|
41
|
+
result.push(element)
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
return result
|
|
@@ -61,14 +61,14 @@ const differenceWithArray = function (comparator, allValues, array) {
|
|
|
61
61
|
result = []
|
|
62
62
|
let index = -1
|
|
63
63
|
while (++index < allValuesLength) {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
if (isPromise(
|
|
67
|
-
return
|
|
68
|
-
curry3(thunkConditional, __, noop, thunkify2(arrayPush, result,
|
|
64
|
+
const element = allValues[index],
|
|
65
|
+
doesElementExistByComparator = arraySome(array, curry2(comparator, element, __))
|
|
66
|
+
if (isPromise(doesElementExistByComparator)) {
|
|
67
|
+
return doesElementExistByComparator.then(funcConcatSync(
|
|
68
|
+
curry3(thunkConditional, __, noop, thunkify2(arrayPush, result, element)),
|
|
69
69
|
thunkify5(differenceWithArrayAsync, comparator, allValues, array, result, index)))
|
|
70
|
-
} else if (!
|
|
71
|
-
result.push(
|
|
70
|
+
} else if (!doesElementExistByComparator) {
|
|
71
|
+
result.push(element)
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
return result
|
package/x/find.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export = find;
|
|
|
15
15
|
* ```
|
|
16
16
|
*
|
|
17
17
|
* @description
|
|
18
|
-
* Get the first
|
|
18
|
+
* Get the first element in a foldable collection that matches a predicate.
|
|
19
19
|
*
|
|
20
20
|
* ```javascript [playground]
|
|
21
21
|
* import find from 'https://unpkg.com/rubico/dist/x/find.es.js'
|
package/x/find.js
CHANGED
|
@@ -22,7 +22,7 @@ const asyncIteratorFind = require('../_internal/asyncIteratorFind')
|
|
|
22
22
|
* ```
|
|
23
23
|
*
|
|
24
24
|
* @description
|
|
25
|
-
* Get the first
|
|
25
|
+
* Get the first element in a foldable collection that matches a predicate.
|
|
26
26
|
*
|
|
27
27
|
* ```javascript [playground]
|
|
28
28
|
* import find from 'https://unpkg.com/rubico/dist/x/find.es.js'
|
package/x/find.test.js
CHANGED
|
@@ -2,7 +2,7 @@ const assert = require('assert')
|
|
|
2
2
|
const find = require('./find')
|
|
3
3
|
|
|
4
4
|
describe('find', () => {
|
|
5
|
-
it('gets the first
|
|
5
|
+
it('gets the first element that passes test', async () => {
|
|
6
6
|
assert.strictEqual(
|
|
7
7
|
find(x => x > 2)([1, 2, 3]),
|
|
8
8
|
3,
|
|
@@ -33,7 +33,7 @@ describe('find', () => {
|
|
|
33
33
|
)
|
|
34
34
|
})
|
|
35
35
|
|
|
36
|
-
it('returns undefined for no
|
|
36
|
+
it('returns undefined for no elements passing', async () => {
|
|
37
37
|
assert.strictEqual(
|
|
38
38
|
find(x => x > 3)([1, 2, 3]),
|
|
39
39
|
undefined,
|
package/x/findIndex.test.js
CHANGED
|
@@ -2,7 +2,7 @@ const assert = require('assert')
|
|
|
2
2
|
const findIndex = require('./findIndex')
|
|
3
3
|
|
|
4
4
|
describe('findIndex', function () {
|
|
5
|
-
it('finds the index in an array of the first
|
|
5
|
+
it('finds the index in an array of the first element matching a predicate function', async function () {
|
|
6
6
|
const startsWithAAA = string => string.startsWith('AAA')
|
|
7
7
|
{
|
|
8
8
|
const foundIndex = findIndex(startsWithAAA)([
|
package/x/first.d.ts
CHANGED
package/x/first.js
CHANGED
package/x/first.test.js
CHANGED
|
@@ -2,7 +2,7 @@ const assert = require('assert')
|
|
|
2
2
|
const first = require('./first')
|
|
3
3
|
|
|
4
4
|
describe('first', () => {
|
|
5
|
-
it('gets the first
|
|
5
|
+
it('gets the first element of an array', async () => {
|
|
6
6
|
assert.strictEqual(first([1, 2, 3]), 1)
|
|
7
7
|
assert.strictEqual(first([]), undefined)
|
|
8
8
|
})
|
package/x/groupBy.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export = groupBy;
|
|
|
35
35
|
* // }
|
|
36
36
|
* ```
|
|
37
37
|
*
|
|
38
|
-
* Additionally, pass a resolver in property position to resolve a value for group membership for each
|
|
38
|
+
* Additionally, pass a resolver in property position to resolve a value for group membership for each element.
|
|
39
39
|
*
|
|
40
40
|
* ```javascript [playground]
|
|
41
41
|
* import groupBy from 'https://unpkg.com/rubico/dist/x/groupBy.es.js'
|
package/x/groupBy.js
CHANGED
|
@@ -4,33 +4,33 @@ const reduce = require('../reduce')
|
|
|
4
4
|
const __ = require('../_internal/placeholder')
|
|
5
5
|
const curry3 = require('../_internal/curry3')
|
|
6
6
|
|
|
7
|
-
// (mapOfArrays Map<any=>Array>, key any,
|
|
7
|
+
// (mapOfArrays Map<any=>Array>, key any, element any) => mapOfArrays
|
|
8
8
|
// TODO: benchmark vs mapOfArrays.has(key)
|
|
9
|
-
const group = function (mapOfArrays, key,
|
|
9
|
+
const group = function (mapOfArrays, key, element) {
|
|
10
10
|
const array = mapOfArrays.get(key)
|
|
11
11
|
if (array == null) {
|
|
12
|
-
mapOfArrays.set(key, [
|
|
12
|
+
mapOfArrays.set(key, [element])
|
|
13
13
|
} else {
|
|
14
|
-
array.push(
|
|
14
|
+
array.push(element)
|
|
15
15
|
}
|
|
16
16
|
return mapOfArrays
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
// property string => (mapOfArrays Map<any=>Array>,
|
|
19
|
+
// property string => (mapOfArrays Map<any=>Array>, element any) => mapOfArrays
|
|
20
20
|
const groupByProperty = property => function groupByPropertyReducer(
|
|
21
|
-
mapOfArrays,
|
|
21
|
+
mapOfArrays, element,
|
|
22
22
|
) {
|
|
23
|
-
return group(mapOfArrays,
|
|
23
|
+
return group(mapOfArrays, element[property], element)
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
// resolver any=>any => (mapOfArrays Map<any=>Array>,
|
|
26
|
+
// resolver any=>any => (mapOfArrays Map<any=>Array>, element any) => mapOfArrays
|
|
27
27
|
const groupByResolver = resolver => function groupByResolverReducer(
|
|
28
|
-
mapOfArrays,
|
|
28
|
+
mapOfArrays, element,
|
|
29
29
|
) {
|
|
30
|
-
const key = resolver(
|
|
30
|
+
const key = resolver(element)
|
|
31
31
|
return isPromise(key)
|
|
32
|
-
? key.then(curry3(group, mapOfArrays, __,
|
|
33
|
-
: group(mapOfArrays, key,
|
|
32
|
+
? key.then(curry3(group, mapOfArrays, __, element))
|
|
33
|
+
: group(mapOfArrays, key, element)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
|
|
@@ -70,7 +70,7 @@ const groupByResolver = resolver => function groupByResolverReducer(
|
|
|
70
70
|
* // }
|
|
71
71
|
* ```
|
|
72
72
|
*
|
|
73
|
-
* Additionally, pass a resolver in property position to resolve a value for group membership for each
|
|
73
|
+
* Additionally, pass a resolver in property position to resolve a value for group membership for each element.
|
|
74
74
|
*
|
|
75
75
|
* ```javascript [playground]
|
|
76
76
|
* import groupBy from 'https://unpkg.com/rubico/dist/x/groupBy.es.js'
|
package/x/last.d.ts
CHANGED
package/x/last.js
CHANGED
package/x/last.test.js
CHANGED
|
@@ -2,7 +2,7 @@ const assert = require('assert')
|
|
|
2
2
|
const last = require('./last')
|
|
3
3
|
|
|
4
4
|
describe('last', () => {
|
|
5
|
-
it('gets the last
|
|
5
|
+
it('gets the last element of an array', async () => {
|
|
6
6
|
assert.strictEqual(last([1, 2, 3]), 3)
|
|
7
7
|
assert.strictEqual(last([]), undefined)
|
|
8
8
|
})
|
package/x/maxBy.d.ts
CHANGED
|
@@ -4,22 +4,22 @@ export = maxBy;
|
|
|
4
4
|
*
|
|
5
5
|
* @synopsis
|
|
6
6
|
* ```coffeescript [specscript]
|
|
7
|
-
* maxBy(array Array, path string) ->
|
|
7
|
+
* maxBy(array Array, path string) -> maxElementByPath any
|
|
8
8
|
*
|
|
9
|
-
* maxBy(path string)(array Array) ->
|
|
9
|
+
* maxBy(path string)(array Array) -> maxElementByPath any
|
|
10
10
|
* ```
|
|
11
11
|
*
|
|
12
12
|
* @description
|
|
13
|
-
* Finds the
|
|
13
|
+
* Finds the element that is the max by a property denoted by path.
|
|
14
14
|
*
|
|
15
15
|
* ```javascript [playground]
|
|
16
16
|
* import maxBy from 'https://unpkg.com/rubico/dist/x/maxBy.es.js'
|
|
17
17
|
*
|
|
18
18
|
* const array = [{ a: 1 }, { a: 2 }, { a: 3 }]
|
|
19
19
|
*
|
|
20
|
-
* const
|
|
20
|
+
* const maxElement = maxBy(array, 'a')
|
|
21
21
|
*
|
|
22
|
-
* console.log(
|
|
22
|
+
* console.log(maxElement) // { a: 3 }
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
25
25
|
* `maxBy` composes in a lazy way.
|
|
@@ -29,13 +29,13 @@ export = maxBy;
|
|
|
29
29
|
*
|
|
30
30
|
* const numbers = [1, 2, 3]
|
|
31
31
|
*
|
|
32
|
-
* const
|
|
32
|
+
* const maxElement = pipe(numbers, [
|
|
33
33
|
* map(number => number ** 2),
|
|
34
34
|
* map(number => ({ a: { b: { c: number } } })),
|
|
35
35
|
* maxBy('a.b.c')
|
|
36
36
|
* ])
|
|
37
37
|
*
|
|
38
|
-
* console.log(
|
|
38
|
+
* console.log(maxElement) // { a: { b: { c: 9 } } }
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
declare function maxBy(...args: any[]): any;
|
package/x/maxBy.js
CHANGED
|
@@ -7,21 +7,21 @@ const curry2 = require('../_internal/curry2')
|
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* ```coffeescript [specscript]
|
|
10
|
-
* _maxBy(array Array, path string) ->
|
|
10
|
+
* _maxBy(array Array, path string) -> maxElementByPath any
|
|
11
11
|
* ```
|
|
12
12
|
*/
|
|
13
13
|
const _maxBy = function (array, path) {
|
|
14
14
|
const length = array.length
|
|
15
15
|
const getter = get(path)
|
|
16
16
|
let index = 0
|
|
17
|
-
let
|
|
17
|
+
let maxElement = array[index]
|
|
18
18
|
while (++index < length) {
|
|
19
|
-
const
|
|
20
|
-
if (getter(
|
|
21
|
-
|
|
19
|
+
const element = array[index]
|
|
20
|
+
if (getter(element) > getter(maxElement)) {
|
|
21
|
+
maxElement = element
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
return
|
|
24
|
+
return maxElement
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -29,22 +29,22 @@ const _maxBy = function (array, path) {
|
|
|
29
29
|
*
|
|
30
30
|
* @synopsis
|
|
31
31
|
* ```coffeescript [specscript]
|
|
32
|
-
* maxBy(array Array, path string) ->
|
|
32
|
+
* maxBy(array Array, path string) -> maxElementByPath any
|
|
33
33
|
*
|
|
34
|
-
* maxBy(path string)(array Array) ->
|
|
34
|
+
* maxBy(path string)(array Array) -> maxElementByPath any
|
|
35
35
|
* ```
|
|
36
36
|
*
|
|
37
37
|
* @description
|
|
38
|
-
* Finds the
|
|
38
|
+
* Finds the element that is the max by a property denoted by path.
|
|
39
39
|
*
|
|
40
40
|
* ```javascript [playground]
|
|
41
41
|
* import maxBy from 'https://unpkg.com/rubico/dist/x/maxBy.es.js'
|
|
42
42
|
*
|
|
43
43
|
* const array = [{ a: 1 }, { a: 2 }, { a: 3 }]
|
|
44
44
|
*
|
|
45
|
-
* const
|
|
45
|
+
* const maxElement = maxBy(array, 'a')
|
|
46
46
|
*
|
|
47
|
-
* console.log(
|
|
47
|
+
* console.log(maxElement) // { a: 3 }
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
50
|
* `maxBy` composes in a lazy way.
|
|
@@ -54,13 +54,13 @@ const _maxBy = function (array, path) {
|
|
|
54
54
|
*
|
|
55
55
|
* const numbers = [1, 2, 3]
|
|
56
56
|
*
|
|
57
|
-
* const
|
|
57
|
+
* const maxElement = pipe(numbers, [
|
|
58
58
|
* map(number => number ** 2),
|
|
59
59
|
* map(number => ({ a: { b: { c: number } } })),
|
|
60
60
|
* maxBy('a.b.c')
|
|
61
61
|
* ])
|
|
62
62
|
*
|
|
63
|
-
* console.log(
|
|
63
|
+
* console.log(maxElement) // { a: { b: { c: 9 } } }
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
66
|
const maxBy = function (...args) {
|
package/x/maxBy.test.js
CHANGED
|
@@ -4,20 +4,20 @@ const pipe = require('../pipe')
|
|
|
4
4
|
const map = require('../map')
|
|
5
5
|
|
|
6
6
|
describe('maxBy', () => {
|
|
7
|
-
it('Finds the
|
|
7
|
+
it('Finds the element that is the max by a property denoted by path', async () => {
|
|
8
8
|
const array = [{ a: 1 }, { a: 2 }, { a: 3 }]
|
|
9
|
-
const
|
|
10
|
-
assert.deepEqual(
|
|
9
|
+
const maxElement = maxBy(array, 'a')
|
|
10
|
+
assert.deepEqual(maxElement, { a: 3 })
|
|
11
11
|
})
|
|
12
12
|
|
|
13
13
|
it('composes in a lazy way', async () => {
|
|
14
14
|
const numbers = [1, 2, 3]
|
|
15
|
-
const
|
|
15
|
+
const maxElement = pipe(numbers, [
|
|
16
16
|
map(number => number ** 2),
|
|
17
17
|
map(number => ({ a: { b: { c: number } } })),
|
|
18
18
|
maxBy('a.b.c'),
|
|
19
19
|
])
|
|
20
|
-
assert.deepEqual(
|
|
20
|
+
assert.deepEqual(maxElement, { a: { b: { c: 9 } } })
|
|
21
21
|
})
|
|
22
22
|
|
|
23
23
|
it('returns undefined for empty array', async () => {
|
package/x/pluck.test.js
CHANGED
|
@@ -4,7 +4,7 @@ const pluck = require('./pluck')
|
|
|
4
4
|
const createAbc = v => ({ a: { b: { c: v } } })
|
|
5
5
|
|
|
6
6
|
describe('pluck', () => {
|
|
7
|
-
it('creates a new collection by getting a path from every
|
|
7
|
+
it('creates a new collection by getting a path from every element of an old collection', async () => {
|
|
8
8
|
const nested = [1, 2, 3].map(createAbc)
|
|
9
9
|
assert.deepEqual(
|
|
10
10
|
pluck('a.b.c')(nested),
|
package/x/prepend.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export = prepend;
|
|
|
5
5
|
* @synopsis
|
|
6
6
|
* ```coffeescript [specscript]
|
|
7
7
|
* prepend(
|
|
8
|
-
*
|
|
8
|
+
* element string|Array,
|
|
9
9
|
* )(value string|Array) -> string|array
|
|
10
10
|
* ```
|
|
11
11
|
*
|
|
@@ -35,4 +35,4 @@ export = prepend;
|
|
|
35
35
|
*
|
|
36
36
|
* @since 1.7.3
|
|
37
37
|
*/
|
|
38
|
-
declare function prepend(
|
|
38
|
+
declare function prepend(element: any): (value: any) => string | any[];
|