rambda 7.0.2 → 7.1.1

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.
Files changed (201) hide show
  1. package/CHANGELOG.md +28 -2
  2. package/README.md +3703 -3294
  3. package/dist/rambda.js +284 -78
  4. package/dist/rambda.mjs +270 -78
  5. package/dist/rambda.umd.js +1 -1
  6. package/immutable.d.ts +95 -13
  7. package/index.d.ts +95 -13
  8. package/package.json +119 -119
  9. package/src/F.js +1 -1
  10. package/src/T.js +1 -1
  11. package/src/_internals/_isInteger.js +1 -1
  12. package/src/_internals/_keys.js +0 -1
  13. package/src/_internals/_objectIs.js +2 -7
  14. package/src/_internals/baseSlice.js +8 -6
  15. package/src/_internals/cloneList.js +1 -3
  16. package/src/_internals/createPath.js +3 -0
  17. package/src/_internals/isFalsy.js +5 -5
  18. package/src/_internals/isObject.js +2 -2
  19. package/src/_internals/isTruthy.js +5 -5
  20. package/src/_internals/set.js +19 -13
  21. package/src/add.js +1 -1
  22. package/src/adjust.js +6 -4
  23. package/src/all.js +3 -3
  24. package/src/allPass.js +3 -3
  25. package/src/always.js +2 -2
  26. package/src/and.js +1 -1
  27. package/src/any.js +3 -3
  28. package/src/anyPass.js +3 -3
  29. package/src/append.js +2 -2
  30. package/src/apply.js +2 -2
  31. package/src/applySpec.js +59 -33
  32. package/src/assoc.js +7 -3
  33. package/src/assocPath.js +25 -21
  34. package/src/bind.js +3 -3
  35. package/src/both.js +1 -1
  36. package/src/chain.js +2 -2
  37. package/src/clamp.js +6 -6
  38. package/src/clone.js +10 -10
  39. package/src/complement.js +1 -1
  40. package/src/compose.js +5 -14
  41. package/src/concat.js +2 -2
  42. package/src/cond.js +3 -3
  43. package/src/converge.js +11 -11
  44. package/src/count.js +10 -0
  45. package/src/countBy.js +17 -0
  46. package/src/curry.js +2 -2
  47. package/src/curryN.js +81 -61
  48. package/src/defaultTo.js +3 -3
  49. package/src/difference.js +3 -3
  50. package/src/dissoc.js +4 -4
  51. package/src/divide.js +1 -1
  52. package/src/drop.js +1 -1
  53. package/src/dropLast.js +5 -5
  54. package/src/dropLastWhile.js +12 -12
  55. package/src/dropRepeats.js +6 -6
  56. package/src/dropRepeatsWith.js +7 -7
  57. package/src/dropWhile.js +9 -9
  58. package/src/either.js +2 -2
  59. package/src/endsWith.js +6 -5
  60. package/src/eqProps.js +6 -4
  61. package/src/equals.js +64 -65
  62. package/src/evolve.js +21 -23
  63. package/src/filter.js +21 -15
  64. package/src/find.js +4 -4
  65. package/src/findIndex.js +3 -3
  66. package/src/findLast.js +4 -4
  67. package/src/findLastIndex.js +3 -3
  68. package/src/flatten.js +6 -6
  69. package/src/flip.js +15 -11
  70. package/src/forEach.js +12 -10
  71. package/src/fromPairs.js +2 -2
  72. package/src/groupBy.js +6 -6
  73. package/src/groupWith.js +12 -10
  74. package/src/has.js +1 -1
  75. package/src/hasPath.js +3 -3
  76. package/src/head.js +3 -3
  77. package/src/identical.js +2 -2
  78. package/src/identity.js +1 -1
  79. package/src/ifElse.js +5 -3
  80. package/src/includes.js +6 -6
  81. package/src/indexBy.js +11 -11
  82. package/src/indexOf.js +3 -3
  83. package/src/init.js +7 -3
  84. package/src/intersection.js +3 -3
  85. package/src/intersperse.js +5 -5
  86. package/src/is.js +2 -2
  87. package/src/isEmpty.js +5 -5
  88. package/src/isNil.js +1 -1
  89. package/src/isPromise.js +3 -3
  90. package/src/join.js +1 -1
  91. package/src/juxt.js +3 -0
  92. package/src/keys.js +1 -1
  93. package/src/last.js +4 -4
  94. package/src/lastIndexOf.js +3 -3
  95. package/src/length.js +2 -2
  96. package/src/lens.js +3 -3
  97. package/src/lensIndex.js +4 -4
  98. package/src/lensPath.js +4 -4
  99. package/src/lensProp.js +4 -4
  100. package/src/map.js +15 -11
  101. package/src/match.js +1 -1
  102. package/src/mathMod.js +3 -3
  103. package/src/max.js +1 -1
  104. package/src/maxBy.js +4 -2
  105. package/src/maybe.js +4 -2
  106. package/src/mean.js +2 -2
  107. package/src/median.js +10 -12
  108. package/src/merge.js +1 -5
  109. package/src/mergeAll.js +4 -4
  110. package/src/mergeDeepRight.js +8 -8
  111. package/src/mergeLeft.js +3 -3
  112. package/src/mergeRight.js +7 -0
  113. package/src/mergeWith.js +29 -0
  114. package/src/min.js +1 -1
  115. package/src/minBy.js +4 -2
  116. package/src/modulo.js +1 -1
  117. package/src/move.js +8 -6
  118. package/src/multiply.js +1 -1
  119. package/src/negate.js +1 -1
  120. package/src/none.js +4 -4
  121. package/src/not.js +1 -1
  122. package/src/nth.js +6 -6
  123. package/src/objOf.js +3 -5
  124. package/src/of.js +2 -2
  125. package/src/omit.js +8 -8
  126. package/src/on.js +16 -0
  127. package/src/once.js +6 -6
  128. package/src/or.js +1 -1
  129. package/src/over.js +5 -3
  130. package/src/partial.js +3 -3
  131. package/src/partialObject.js +15 -0
  132. package/src/partition.js +18 -16
  133. package/src/path.js +9 -8
  134. package/src/pathEq.js +6 -4
  135. package/src/pathOr.js +6 -4
  136. package/src/paths.js +3 -3
  137. package/src/pick.js +8 -8
  138. package/src/pickAll.js +9 -9
  139. package/src/pipe.js +85 -13
  140. package/src/pluck.js +4 -4
  141. package/src/prepend.js +3 -3
  142. package/src/product.js +2 -2
  143. package/src/prop.js +2 -2
  144. package/src/propEq.js +5 -3
  145. package/src/propIs.js +6 -4
  146. package/src/propOr.js +6 -4
  147. package/src/propSatisfies.js +10 -0
  148. package/src/props.js +6 -6
  149. package/src/range.js +4 -4
  150. package/src/reduce.js +11 -7
  151. package/src/reject.js +2 -2
  152. package/src/repeat.js +2 -2
  153. package/src/replace.js +4 -2
  154. package/src/reverse.js +4 -3
  155. package/src/set.js +9 -5
  156. package/src/slice.js +4 -2
  157. package/src/sort.js +2 -2
  158. package/src/sortBy.js +2 -2
  159. package/src/split.js +1 -1
  160. package/src/splitAt.js +9 -9
  161. package/src/splitEvery.js +6 -8
  162. package/src/splitWhen.js +10 -10
  163. package/src/startsWith.js +6 -5
  164. package/src/subtract.js +1 -1
  165. package/src/sum.js +1 -1
  166. package/src/symmetricDifference.js +7 -9
  167. package/src/tail.js +2 -2
  168. package/src/take.js +5 -3
  169. package/src/takeLast.js +5 -3
  170. package/src/takeLastWhile.js +7 -7
  171. package/src/takeWhile.js +8 -8
  172. package/src/tap.js +1 -1
  173. package/src/test.js +3 -5
  174. package/src/times.js +4 -4
  175. package/src/toLower.js +1 -1
  176. package/src/toPairs.js +1 -1
  177. package/src/toString.js +1 -1
  178. package/src/toUpper.js +1 -1
  179. package/src/transpose.js +3 -4
  180. package/src/trim.js +1 -1
  181. package/src/tryCatch.js +7 -5
  182. package/src/type.js +5 -5
  183. package/src/unapply.js +2 -2
  184. package/src/union.js +3 -3
  185. package/src/uniq.js +3 -3
  186. package/src/uniqWith.js +12 -8
  187. package/src/unless.js +3 -3
  188. package/src/unwind.js +15 -0
  189. package/src/update.js +8 -4
  190. package/src/values.js +2 -2
  191. package/src/view.js +2 -2
  192. package/src/when.js +4 -2
  193. package/src/where.js +5 -5
  194. package/src/whereAny.js +12 -0
  195. package/src/whereEq.js +7 -9
  196. package/src/without.js +4 -4
  197. package/src/xor.js +2 -2
  198. package/src/zip.js +3 -3
  199. package/src/zipObj.js +6 -4
  200. package/src/zipWith.js +6 -6
  201. package/src/isFunction.js +0 -5
package/src/test.js CHANGED
@@ -1,10 +1,8 @@
1
- export function test(pattern, str) {
1
+ export function test(pattern, str){
2
2
  if (arguments.length === 1) return _str => test(pattern, _str)
3
3
 
4
- if (typeof pattern === 'string') {
5
- throw new TypeError(
6
- `‘test’ requires a value of type RegExp as its first argument; received "${pattern}"`
7
- )
4
+ if (typeof pattern === 'string'){
5
+ throw new TypeError(`‘test’ requires a value of type RegExp as its first argument; received "${ pattern }"`)
8
6
  }
9
7
 
10
8
  return str.search(pattern) !== -1
package/src/times.js CHANGED
@@ -1,9 +1,9 @@
1
- import {map} from './map'
2
- import {range} from './range'
1
+ import { map } from './map.js'
2
+ import { range } from './range.js'
3
3
 
4
- export function times(fn, howMany) {
4
+ export function times(fn, howMany){
5
5
  if (arguments.length === 1) return _howMany => times(fn, _howMany)
6
- if (!Number.isInteger(howMany) || howMany < 0) {
6
+ if (!Number.isInteger(howMany) || howMany < 0){
7
7
  throw new RangeError('n must be an integer')
8
8
  }
9
9
 
package/src/toLower.js CHANGED
@@ -1,3 +1,3 @@
1
- export function toLower(str) {
1
+ export function toLower(str){
2
2
  return str.toLowerCase()
3
3
  }
package/src/toPairs.js CHANGED
@@ -1,3 +1,3 @@
1
- export function toPairs(obj) {
1
+ export function toPairs(obj){
2
2
  return Object.entries(obj)
3
3
  }
package/src/toString.js CHANGED
@@ -1,3 +1,3 @@
1
- export function toString(x) {
1
+ export function toString(x){
2
2
  return x.toString()
3
3
  }
package/src/toUpper.js CHANGED
@@ -1,3 +1,3 @@
1
- export function toUpper(str) {
1
+ export function toUpper(str){
2
2
  return str.toUpperCase()
3
3
  }
package/src/transpose.js CHANGED
@@ -1,10 +1,9 @@
1
- import {_isArray} from './_internals/_isArray'
1
+ import { _isArray } from './_internals/_isArray.js'
2
2
 
3
- export function transpose(array) {
3
+ export function transpose(array){
4
4
  return array.reduce((acc, el) => {
5
5
  el.forEach((nestedEl, i) =>
6
- _isArray(acc[i]) ? acc[i].push(nestedEl) : acc.push([nestedEl])
7
- )
6
+ _isArray(acc[ i ]) ? acc[ i ].push(nestedEl) : acc.push([ nestedEl ]))
8
7
 
9
8
  return acc
10
9
  }, [])
package/src/trim.js CHANGED
@@ -1,3 +1,3 @@
1
- export function trim(str) {
1
+ export function trim(str){
2
2
  return str.trim()
3
3
  }
package/src/tryCatch.js CHANGED
@@ -1,15 +1,17 @@
1
- import {isFunction} from './isFunction'
1
+ import { type } from './type.js'
2
2
 
3
- export function tryCatch(fn, fallback) {
4
- if (!isFunction(fn)) {
5
- throw new Error(`R.tryCatch | fn '${fn}'`)
3
+ const isFunction = x => [ 'Promise', 'Function' ].includes(type(x))
4
+
5
+ export function tryCatch(fn, fallback){
6
+ if (!isFunction(fn)){
7
+ throw new Error(`R.tryCatch | fn '${ fn }'`)
6
8
  }
7
9
  const passFallback = isFunction(fallback)
8
10
 
9
11
  return (...inputs) => {
10
12
  try {
11
13
  return fn(...inputs)
12
- } catch (e) {
14
+ } catch (e){
13
15
  return passFallback ? fallback(e, ...inputs) : fallback
14
16
  }
15
17
  }
package/src/type.js CHANGED
@@ -1,12 +1,12 @@
1
- export function type(input) {
2
- if (input === null) {
1
+ export function type(input){
2
+ if (input === null){
3
3
  return 'Null'
4
- } else if (input === undefined) {
4
+ } else if (input === undefined){
5
5
  return 'Undefined'
6
- } else if (Number.isNaN(input)) {
6
+ } else if (Number.isNaN(input)){
7
7
  return 'NaN'
8
8
  }
9
9
  const typeResult = Object.prototype.toString.call(input).slice(8, -1)
10
10
 
11
- return typeResult === 'AsyncFunction' ? 'Async' : typeResult
11
+ return typeResult === 'AsyncFunction' ? 'Promise' : typeResult
12
12
  }
package/src/unapply.js CHANGED
@@ -1,5 +1,5 @@
1
- export function unapply(fn) {
2
- return function (...args) {
1
+ export function unapply(fn){
2
+ return function (...args){
3
3
  return fn.call(this, args)
4
4
  }
5
5
  }
package/src/union.js CHANGED
@@ -1,7 +1,7 @@
1
- import {includes} from './includes'
2
- import {cloneList} from './_internals/cloneList'
1
+ import { cloneList } from './_internals/cloneList.js'
2
+ import { includes } from './includes.js'
3
3
 
4
- export function union(x, y) {
4
+ export function union(x, y){
5
5
  if (arguments.length === 1) return _y => union(x, _y)
6
6
 
7
7
  const toReturn = cloneList(x)
package/src/uniq.js CHANGED
@@ -1,10 +1,10 @@
1
- import {_Set} from './_internals/set'
1
+ import { _Set } from './_internals/set.js'
2
2
 
3
- export function uniq(list) {
3
+ export function uniq(list){
4
4
  const set = new _Set()
5
5
  const willReturn = []
6
6
  list.forEach(item => {
7
- if (set.checkUniqueness(item)) {
7
+ if (set.checkUniqueness(item)){
8
8
  willReturn.push(item)
9
9
  }
10
10
  })
package/src/uniqWith.js CHANGED
@@ -1,11 +1,13 @@
1
- function includesWith(predicate, target, list) {
1
+ function includesWith(
2
+ predicate, target, list
3
+ ){
2
4
  let willReturn = false
3
5
  let index = -1
4
6
 
5
- while (++index < list.length && !willReturn) {
6
- const value = list[index]
7
+ while (++index < list.length && !willReturn){
8
+ const value = list[ index ]
7
9
 
8
- if (predicate(target, value)) {
10
+ if (predicate(target, value)){
9
11
  willReturn = true
10
12
  }
11
13
  }
@@ -13,16 +15,18 @@ function includesWith(predicate, target, list) {
13
15
  return willReturn
14
16
  }
15
17
 
16
- export function uniqWith(predicate, list) {
18
+ export function uniqWith(predicate, list){
17
19
  if (arguments.length === 1) return _list => uniqWith(predicate, _list)
18
20
 
19
21
  let index = -1
20
22
  const willReturn = []
21
23
 
22
- while (++index < list.length) {
23
- const value = list[index]
24
+ while (++index < list.length){
25
+ const value = list[ index ]
24
26
 
25
- if (!includesWith(predicate, value, willReturn)) {
27
+ if (!includesWith(
28
+ predicate, value, willReturn
29
+ )){
26
30
  willReturn.push(value)
27
31
  }
28
32
  }
package/src/unless.js CHANGED
@@ -1,7 +1,7 @@
1
- export function unless(predicate, whenFalse) {
2
- if (arguments.length === 1) {
1
+ export function unless(predicate, whenFalse){
2
+ if (arguments.length === 1){
3
3
  return _whenFalse => unless(predicate, _whenFalse)
4
4
  }
5
5
 
6
- return input => (predicate(input) ? input : whenFalse(input))
6
+ return input => predicate(input) ? input : whenFalse(input)
7
7
  }
package/src/unwind.js ADDED
@@ -0,0 +1,15 @@
1
+ import { _isArray } from './_internals/_isArray.js'
2
+ import { mapArray } from './map.js'
3
+
4
+ export function unwind(property, obj){
5
+ if (arguments.length === 1){
6
+ return _obj => unwind(property, _obj)
7
+ }
8
+
9
+ if (!_isArray(obj[ property ])) return [ obj ]
10
+
11
+ return mapArray(x => ({
12
+ ...obj,
13
+ [ property ] : x,
14
+ }), obj[ property ])
15
+ }
package/src/update.js CHANGED
@@ -1,11 +1,15 @@
1
- import {curry} from './curry'
2
- import {cloneList} from './_internals/cloneList'
1
+ import { cloneList } from './_internals/cloneList.js'
2
+ import { curry } from './curry.js'
3
3
 
4
- function updateFn(index, newValue, list) {
4
+ function updateFn(
5
+ index, newValue, list
6
+ ){
5
7
  const clone = cloneList(list)
6
8
  if (index === -1) return clone.fill(newValue, index)
7
9
 
8
- return clone.fill(newValue, index, index + 1)
10
+ return clone.fill(
11
+ newValue, index, index + 1
12
+ )
9
13
  }
10
14
 
11
15
  export const update = curry(updateFn)
package/src/values.js CHANGED
@@ -1,6 +1,6 @@
1
- import {type} from './type'
1
+ import { type } from './type.js'
2
2
 
3
- export function values(obj) {
3
+ export function values(obj){
4
4
  if (type(obj) !== 'Object') return []
5
5
 
6
6
  return Object.values(obj)
package/src/view.js CHANGED
@@ -1,9 +1,9 @@
1
1
  const Const = x => ({
2
2
  x,
3
- map: fn => Const(x),
3
+ map : fn => Const(x),
4
4
  })
5
5
 
6
- export function view(lens, target) {
6
+ export function view(lens, target){
7
7
  if (arguments.length === 1) return _target => view(lens, _target)
8
8
 
9
9
  return lens(Const)(target).x
package/src/when.js CHANGED
@@ -1,6 +1,8 @@
1
- import {curry} from './curry'
1
+ import { curry } from './curry.js'
2
2
 
3
- function whenFn(predicate, whenTrueFn, input) {
3
+ function whenFn(
4
+ predicate, whenTrueFn, input
5
+ ){
4
6
  if (!predicate(input)) return input
5
7
 
6
8
  return whenTrueFn(input)
package/src/where.js CHANGED
@@ -1,11 +1,11 @@
1
- export function where(conditions, input) {
2
- if (input === undefined) {
1
+ export function where(conditions, input){
2
+ if (input === undefined){
3
3
  return _input => where(conditions, _input)
4
4
  }
5
5
  let flag = true
6
- for (const prop in conditions) {
7
- const result = conditions[prop](input[prop])
8
- if (flag && result === false) {
6
+ for (const prop in conditions){
7
+ const result = conditions[ prop ](input[ prop ])
8
+ if (flag && result === false){
9
9
  flag = false
10
10
  }
11
11
  }
@@ -0,0 +1,12 @@
1
+ export function whereAny(conditions, input){
2
+ if (input === undefined){
3
+ return _input => whereAny(conditions, _input)
4
+ }
5
+ for (const prop in conditions){
6
+ if (conditions[ prop ](input[ prop ])){
7
+ return true
8
+ }
9
+ }
10
+
11
+ return false
12
+ }
package/src/whereEq.js CHANGED
@@ -1,16 +1,14 @@
1
- import {equals} from './equals'
2
- import {filter} from './filter'
1
+ import { equals } from './equals.js'
2
+ import { filter } from './filter.js'
3
3
 
4
- export function whereEq(condition, input) {
5
- if (arguments.length === 1) {
4
+ export function whereEq(condition, input){
5
+ if (arguments.length === 1){
6
6
  return _input => whereEq(condition, _input)
7
7
  }
8
8
 
9
- const result = filter(
10
- (conditionValue, conditionProp) =>
11
- equals(conditionValue, input[conditionProp]),
12
- condition
13
- )
9
+ const result = filter((conditionValue, conditionProp) =>
10
+ equals(conditionValue, input[ conditionProp ]),
11
+ condition)
14
12
 
15
13
  return Object.keys(result).length === Object.keys(condition).length
16
14
  }
package/src/without.js CHANGED
@@ -1,8 +1,8 @@
1
- import {reduce} from './reduce'
2
- import {_indexOf} from './equals'
1
+ import { _indexOf } from './equals.js'
2
+ import { reduce } from './reduce.js'
3
3
 
4
- export function without(matchAgainst, source) {
5
- if (source === undefined) {
4
+ export function without(matchAgainst, source){
5
+ if (source === undefined){
6
6
  return _source => without(matchAgainst, _source)
7
7
  }
8
8
 
package/src/xor.js CHANGED
@@ -1,5 +1,5 @@
1
- export function xor(a, b) {
1
+ export function xor(a, b){
2
2
  if (arguments.length === 1) return _b => xor(a, _b)
3
3
 
4
- return (Boolean(a) && !b) || (Boolean(b) && !a)
4
+ return Boolean(a) && !b || Boolean(b) && !a
5
5
  }
package/src/zip.js CHANGED
@@ -1,11 +1,11 @@
1
- export function zip(left, right) {
1
+ export function zip(left, right){
2
2
  if (arguments.length === 1) return _right => zip(left, _right)
3
3
 
4
4
  const result = []
5
5
  const length = Math.min(left.length, right.length)
6
6
 
7
- for (let i = 0; i < length; i++) {
8
- result[i] = [left[i], right[i]]
7
+ for (let i = 0; i < length; i++){
8
+ result[ i ] = [ left[ i ], right[ i ] ]
9
9
  }
10
10
 
11
11
  return result
package/src/zipObj.js CHANGED
@@ -1,10 +1,12 @@
1
- import {take} from './take'
1
+ import { take } from './take.js'
2
2
 
3
- export function zipObj(keys, values) {
3
+ export function zipObj(keys, values){
4
4
  if (arguments.length === 1) return yHolder => zipObj(keys, yHolder)
5
5
 
6
- return take(values.length, keys).reduce((prev, xInstance, i) => {
7
- prev[xInstance] = values[i]
6
+ return take(values.length, keys).reduce((
7
+ prev, xInstance, i
8
+ ) => {
9
+ prev[ xInstance ] = values[ i ]
8
10
 
9
11
  return prev
10
12
  }, {})
package/src/zipWith.js CHANGED
@@ -1,10 +1,10 @@
1
- import {curry} from './curry'
2
- import {take} from './take'
1
+ import { curry } from './curry.js'
2
+ import { take } from './take.js'
3
3
 
4
- function zipWithFn(fn, x, y) {
5
- return take(x.length > y.length ? y.length : x.length, x).map(
6
- (xInstance, i) => fn(xInstance, y[i])
7
- )
4
+ function zipWithFn(
5
+ fn, x, y
6
+ ){
7
+ return take(x.length > y.length ? y.length : x.length, x).map((xInstance, i) => fn(xInstance, y[ i ]))
8
8
  }
9
9
 
10
10
  export const zipWith = curry(zipWithFn)
package/src/isFunction.js DELETED
@@ -1,5 +0,0 @@
1
- import {type} from './type'
2
-
3
- export function isFunction(fn) {
4
- return ['Async', 'Function'].includes(type(fn))
5
- }