rambda 6.8.3 → 7.0.2

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 (188) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +4157 -4921
  3. package/dist/rambda.esm.js +336 -209
  4. package/dist/rambda.js +340 -209
  5. package/dist/rambda.mjs +336 -209
  6. package/dist/rambda.umd.js +1 -1
  7. package/immutable.d.ts +203 -284
  8. package/index.d.ts +194 -275
  9. package/package.json +119 -95
  10. package/src/F.js +1 -1
  11. package/src/T.js +1 -1
  12. package/src/_internals/_isInteger.js +1 -1
  13. package/src/_internals/_objectIs.js +2 -2
  14. package/src/_internals/baseSlice.js +6 -8
  15. package/src/_internals/cloneList.js +3 -0
  16. package/src/_internals/isFalsy.js +5 -5
  17. package/src/_internals/isObject.js +5 -0
  18. package/src/_internals/isTruthy.js +5 -5
  19. package/src/_internals/set.js +35 -0
  20. package/src/add.js +1 -1
  21. package/src/adjust.js +5 -6
  22. package/src/all.js +3 -3
  23. package/src/allPass.js +4 -4
  24. package/src/always.js +1 -1
  25. package/src/and.js +1 -1
  26. package/src/any.js +3 -3
  27. package/src/anyPass.js +4 -4
  28. package/src/append.js +4 -2
  29. package/src/apply.js +7 -0
  30. package/src/applySpec.js +33 -59
  31. package/src/assoc.js +3 -7
  32. package/src/assocPath.js +22 -25
  33. package/src/bind.js +9 -0
  34. package/src/both.js +1 -1
  35. package/src/chain.js +2 -2
  36. package/src/clamp.js +6 -6
  37. package/src/clone.js +10 -10
  38. package/src/complement.js +1 -1
  39. package/src/compose.js +6 -6
  40. package/src/concat.js +2 -2
  41. package/src/cond.js +3 -3
  42. package/src/converge.js +11 -11
  43. package/src/curry.js +2 -2
  44. package/src/curryN.js +61 -81
  45. package/src/defaultTo.js +5 -8
  46. package/src/difference.js +3 -3
  47. package/src/dissoc.js +4 -4
  48. package/src/divide.js +1 -1
  49. package/src/drop.js +1 -1
  50. package/src/dropLast.js +5 -5
  51. package/src/dropLastWhile.js +12 -12
  52. package/src/dropRepeats.js +6 -6
  53. package/src/dropRepeatsWith.js +7 -7
  54. package/src/dropWhile.js +9 -9
  55. package/src/either.js +2 -2
  56. package/src/endsWith.js +20 -3
  57. package/src/eqProps.js +5 -10
  58. package/src/equals.js +119 -38
  59. package/src/evolve.js +23 -21
  60. package/src/filter.js +18 -18
  61. package/src/find.js +4 -4
  62. package/src/findIndex.js +3 -3
  63. package/src/findLast.js +4 -4
  64. package/src/findLastIndex.js +3 -3
  65. package/src/flatten.js +6 -6
  66. package/src/flip.js +11 -15
  67. package/src/forEach.js +10 -12
  68. package/src/fromPairs.js +2 -2
  69. package/src/groupBy.js +6 -6
  70. package/src/groupWith.js +11 -12
  71. package/src/hasPath.js +5 -5
  72. package/src/head.js +3 -3
  73. package/src/identical.js +1 -1
  74. package/src/identity.js +2 -2
  75. package/src/ifElse.js +3 -5
  76. package/src/includes.js +11 -22
  77. package/src/indexBy.js +11 -11
  78. package/src/indexOf.js +5 -12
  79. package/src/init.js +2 -4
  80. package/src/intersection.js +3 -3
  81. package/src/intersperse.js +5 -5
  82. package/src/is.js +2 -2
  83. package/src/isEmpty.js +5 -5
  84. package/src/isFunction.js +3 -3
  85. package/src/isNil.js +1 -1
  86. package/src/isPromise.js +3 -3
  87. package/src/join.js +1 -1
  88. package/src/keys.js +1 -1
  89. package/src/last.js +4 -4
  90. package/src/lastIndexOf.js +5 -11
  91. package/src/length.js +6 -5
  92. package/src/lens.js +3 -3
  93. package/src/lensIndex.js +4 -4
  94. package/src/lensProp.js +4 -4
  95. package/src/map.js +17 -18
  96. package/src/match.js +1 -1
  97. package/src/mathMod.js +2 -2
  98. package/src/max.js +1 -1
  99. package/src/maxBy.js +2 -4
  100. package/src/maybe.js +2 -4
  101. package/src/mean.js +2 -2
  102. package/src/median.js +12 -10
  103. package/src/merge.js +2 -4
  104. package/src/mergeAll.js +3 -3
  105. package/src/mergeDeepRight.js +8 -8
  106. package/src/mergeLeft.js +2 -2
  107. package/src/min.js +1 -1
  108. package/src/minBy.js +2 -4
  109. package/src/modulo.js +1 -1
  110. package/src/move.js +7 -8
  111. package/src/multiply.js +1 -1
  112. package/src/negate.js +1 -1
  113. package/src/none.js +3 -3
  114. package/src/not.js +1 -1
  115. package/src/nth.js +4 -4
  116. package/src/objOf.js +3 -3
  117. package/src/of.js +2 -2
  118. package/src/omit.js +5 -5
  119. package/src/once.js +6 -6
  120. package/src/or.js +1 -1
  121. package/src/over.js +3 -5
  122. package/src/partial.js +3 -3
  123. package/src/partition.js +17 -15
  124. package/src/path.js +6 -6
  125. package/src/pathEq.js +4 -6
  126. package/src/pathOr.js +5 -7
  127. package/src/paths.js +3 -3
  128. package/src/pick.js +5 -5
  129. package/src/pickAll.js +6 -6
  130. package/src/pipe.js +3 -3
  131. package/src/pluck.js +4 -4
  132. package/src/prepend.js +3 -3
  133. package/src/product.js +2 -2
  134. package/src/prop.js +2 -2
  135. package/src/propEq.js +3 -5
  136. package/src/propIs.js +4 -6
  137. package/src/propOr.js +4 -6
  138. package/src/props.js +6 -6
  139. package/src/range.js +4 -4
  140. package/src/reduce.js +7 -11
  141. package/src/reject.js +2 -2
  142. package/src/repeat.js +2 -2
  143. package/src/replace.js +2 -4
  144. package/src/reverse.js +3 -4
  145. package/src/set.js +5 -9
  146. package/src/slice.js +2 -4
  147. package/src/sort.js +4 -4
  148. package/src/sortBy.js +4 -2
  149. package/src/split.js +1 -1
  150. package/src/splitAt.js +9 -9
  151. package/src/splitEvery.js +8 -6
  152. package/src/splitWhen.js +10 -10
  153. package/src/startsWith.js +20 -3
  154. package/src/subtract.js +1 -1
  155. package/src/sum.js +1 -1
  156. package/src/symmetricDifference.js +9 -7
  157. package/src/tail.js +2 -2
  158. package/src/take.js +2 -4
  159. package/src/takeLast.js +2 -4
  160. package/src/takeLastWhile.js +7 -7
  161. package/src/takeWhile.js +8 -8
  162. package/src/tap.js +1 -1
  163. package/src/test.js +5 -3
  164. package/src/times.js +4 -4
  165. package/src/toLower.js +1 -1
  166. package/src/toPairs.js +1 -1
  167. package/src/toString.js +1 -1
  168. package/src/toUpper.js +1 -1
  169. package/src/transpose.js +4 -3
  170. package/src/trim.js +1 -1
  171. package/src/tryCatch.js +5 -5
  172. package/src/type.js +7 -29
  173. package/src/unapply.js +5 -0
  174. package/src/union.js +4 -3
  175. package/src/uniq.js +7 -10
  176. package/src/uniqWith.js +18 -7
  177. package/src/unless.js +3 -3
  178. package/src/update.js +6 -8
  179. package/src/values.js +2 -2
  180. package/src/view.js +2 -2
  181. package/src/when.js +2 -4
  182. package/src/where.js +5 -5
  183. package/src/whereEq.js +9 -7
  184. package/src/without.js +5 -5
  185. package/src/xor.js +2 -2
  186. package/src/zip.js +3 -3
  187. package/src/zipObj.js +4 -6
  188. package/src/zipWith.js +6 -7
package/package.json CHANGED
@@ -1,97 +1,121 @@
1
1
  {
2
- "name": "rambda",
3
- "version": "6.8.3",
4
- "scripts": {
5
- "populatedocs": "cd ../rambda-scripts && yarn populate:docs",
6
- "populatereadme": "cd ../rambda-scripts && yarn populate:readme",
7
- "out": "yarn populatedocs && yarn populatereadme && yarn immutable && yarn build",
8
- "x": "cd ../rambda-scripts&&yarn populate:docs:rambdax&&cd ../rambda-scripts&&yarn populate:readme:rambdax",
9
- "github": "cd ../rambda-scripts&&yarn github",
10
- "immutable": "cd ../rambda-scripts&&yarn immutable",
11
- "usedby": "cd ../rambda-scripts&&yarn usedby",
12
- "lint": "cd ../rambda-scripts&&yarn lint",
13
- "build": "yarn build:main&&yarn build:web",
14
- "build:web": "cross-env NODE_ENV=build rollup -c files/rollup.web.config.js",
15
- "build:main": "cross-env NODE_ENV=build rollup -c files/rollup.config.js",
16
- "docs": "docsify init ./docs",
17
- "new": "cd ../rambda-scripts&&yarn new",
18
- "test": "jest source -u --bail=false",
19
- "cover:spec": "jest source --coverage --no-cache -w 1",
20
- "cover": "yarn typings&&yarn cover:spec",
21
- "benchmark": "cd ../rambda-scripts&&yarn benchmarks",
22
- "benchmarkx": "cd ../rambda-scripts&&yarn benchmarksx",
23
- "typings": "dtslint --localTs ./node_modules/typescript/lib --expectOnly ./source",
24
- "fix": "mkdir $HOME/.dts/perf -p"
25
- },
26
- "dependencies": {},
27
- "typings": "./index.d.ts",
28
- "devDependencies": {
29
- "@babel/core": "7.12.13",
30
- "@babel/plugin-proposal-object-rest-spread": "7.12.13",
31
- "@babel/preset-env": "7.12.13",
32
- "@rollup/plugin-babel": "5.2.3",
33
- "@rollup/plugin-commonjs": "17.1.0",
34
- "@rollup/plugin-json": "4.1.0",
35
- "@rollup/plugin-node-resolve": "11.1.1",
36
- "@rollup/plugin-replace": "2.3.4",
37
- "@types/jest": "26.0.20",
38
- "@types/ramda": "0.27.38",
39
- "combinate": "1.1.2",
40
- "cross-env": "7.0.3",
41
- "dtslint": "4.0.7",
42
- "helpers-fn": "1.6.0",
43
- "is-ci": "2.0.0",
44
- "jest": "26.6.3",
45
- "jest-extended": "0.11.5",
46
- "lodash": "4.17.20",
47
- "rambdax": "7.2.0",
48
- "ramda": "0.27.1",
49
- "rollup": "2.38.5",
50
- "rollup-plugin-cleanup": "3.2.1",
51
- "rollup-plugin-sourcemaps": "0.6.3",
52
- "rollup-plugin-uglify": "6.0.4",
53
- "typescript": "4.1.5"
54
- },
55
- "jest": {
56
- "testEnvironment": "node",
57
- "testRegex": ".*\\.spec\\.js$",
58
- "setupFilesAfterEnv": [
59
- "jest-extended"
60
- ],
61
- "collectCoverageFrom": [
62
- "source/*.js",
63
- "!_internals",
64
- "!benchmarks"
65
- ]
66
- },
67
- "files": [
68
- "dist",
69
- "src",
70
- "CHANGELOG.md",
71
- "index.d.ts",
72
- "immutable.d.ts",
73
- "immutable.js"
74
- ],
75
- "repository": {
76
- "type": "git",
77
- "url": "git+https://github.com/selfrefactor/rambda.git"
78
- },
79
- "license": "MIT",
80
- "author": "self_refactor",
81
- "description": "Lightweight and faster alternative to Ramda with included TS definitions",
82
- "module": "./dist/rambda.esm.js",
83
- "main": "./dist/rambda",
84
- "umd": "./dist/rambda.umd.js",
85
- "sideEffects": false,
86
- "keywords": [
87
- "ramda",
88
- "fp",
89
- "functional",
90
- "utility",
91
- "lodash"
92
- ],
93
- "bugs": {
94
- "url": "https://github.com/selfrefactor/rambda/issues"
95
- },
96
- "homepage": "https://github.com/selfrefactor/rambda#readme"
2
+ "name": "rambda",
3
+ "version": "7.0.2",
4
+ "scripts": {
5
+ "populatedocs": "cd ../rambda-scripts && yarn populate:docs",
6
+ "populatedocs:x": "cd ../rambda-scripts && yarn populate:docs:rambdax",
7
+ "populatereadme": "cd ../rambda-scripts && yarn populate:readme",
8
+ "populatereadme:x": "cd ../rambda-scripts && yarn populate:readme:rambdax",
9
+ "out": "yarn populatedocs && yarn populatereadme && yarn immutable && yarn build",
10
+ "x": "yarn populatedocs:x && yarn populatereadme:x && yarn immutable:x",
11
+ "github": "cd ../rambda-scripts && yarn github",
12
+ "fix-docsify": "cd ../rambda-scripts && yarn fix-docsify:rambda",
13
+ "immutable": "cd ../rambda-scripts && yarn immutable:rambda",
14
+ "immutable:x": "cd ../rambda-scripts && yarn immutable:rambdax",
15
+ "usedby": "cd ../rambda-scripts && yarn usedby",
16
+ "lint": "cd ../rambda-scripts && yarn lint",
17
+ "build": "yarn build:main && yarn build:web",
18
+ "build:web": "cross-env NODE_ENV=build rollup -c files/rollup.web.config.js",
19
+ "build:main": "cross-env NODE_ENV=build rollup -c files/rollup.config.js",
20
+ "docs": "npx docsify-cli init ./docs && yarn fix-docsify",
21
+ "new": "cd ../rambda-scripts && yarn new",
22
+ "test": "jest source -u --bail=false",
23
+ "test:dev": "jest source --watch",
24
+ "cover:spec": "jest source --coverage --no-cache -w 1",
25
+ "cover": "yarn typings && yarn cover:spec",
26
+ "build:step": "yarn populatedocs && yarn populatereadme && yarn build:main",
27
+ "benchmark:check:apply": "cd ../rambda-scripts && yarn check-benchmark",
28
+ "benchmark:check": "yarn build:step && METHOD=compose yarn benchmark:check:apply",
29
+ "benchmark:single": "cd ../rambda-scripts && METHOD=pipe RAMBDA_RUN_ALL=ON RAMBDA_RUN_INDEXES=ON yarn benchmark",
30
+ "benchmark:all": "yarn build:step && cd ../rambda-scripts && yarn benchmark:all",
31
+ "benchmark": "yarn build:step && yarn benchmark:single",
32
+ "typings": "dtslint --localTs ./node_modules/typescript/lib --expectOnly ./source",
33
+ "fix": "mkdir $HOME/.dts/perf -p"
34
+ },
35
+ "dependencies": {},
36
+ "devDependencies": {
37
+ "@babel/core": "7.16.0",
38
+ "@babel/plugin-proposal-object-rest-spread": "7.16.0",
39
+ "@babel/preset-env": "7.16.4",
40
+ "@rollup/plugin-babel": "5.3.0",
41
+ "@rollup/plugin-commonjs": "21.0.1",
42
+ "@rollup/plugin-json": "4.1.0",
43
+ "@rollup/plugin-node-resolve": "13.0.6",
44
+ "@rollup/plugin-replace": "3.0.0",
45
+ "@types/jest": "27.0.3",
46
+ "@types/ramda": "0.27.58",
47
+ "combinate": "1.1.7",
48
+ "cross-env": "7.0.3",
49
+ "dtslint": "4.2.1",
50
+ "helpers-fn": "1.6.0",
51
+ "is-ci": "3.0.1",
52
+ "jest": "27.4.3",
53
+ "jest-extended": "0.11.5",
54
+ "lodash": "4.17.21",
55
+ "rambdax": "7.4.1",
56
+ "ramda": "0.27.1",
57
+ "rollup": "2.60.2",
58
+ "rollup-plugin-cleanup": "3.2.1",
59
+ "rollup-plugin-sourcemaps": "0.6.3",
60
+ "rollup-plugin-uglify": "6.0.4",
61
+ "typescript": "4.5.2"
62
+ },
63
+ "depFn": [
64
+ "jest-extended"
65
+ ],
66
+ "jest": {
67
+ "testEnvironment": "node",
68
+ "testRegex": ".*\\.spec\\.js$",
69
+ "setupFilesAfterEnv": [
70
+ "jest-extended"
71
+ ],
72
+ "collectCoverageFrom": [
73
+ "source/*.js",
74
+ "!_internals",
75
+ "!benchmarks"
76
+ ]
77
+ },
78
+ "files": [
79
+ "dist",
80
+ "src",
81
+ "README.md",
82
+ "CHANGELOG.md",
83
+ "index.d.ts",
84
+ "immutable.d.ts",
85
+ "immutable.js"
86
+ ],
87
+ "repository": {
88
+ "type": "git",
89
+ "url": "git+https://github.com/selfrefactor/rambda.git"
90
+ },
91
+ "license": "MIT",
92
+ "author": "self_refactor",
93
+ "description": "Lightweight and faster alternative to Ramda with included TS definitions",
94
+ "sideEffects": false,
95
+ "main": "./dist/rambda.js",
96
+ "umd": "./dist/rambda.umd.js",
97
+ "module": "./dist/rambda.mjs",
98
+ "types": "./index.d.ts",
99
+ "exports": {
100
+ ".": {
101
+ "import": "./dist/rambda.mjs",
102
+ "require": "./dist/rambda.js",
103
+ "default": "./dist/rambda.js",
104
+ "types": "./index.d.ts"
105
+ },
106
+ "./immutable": {
107
+ "import": "./immutable.js",
108
+ "require": "./immutable.js",
109
+ "default": "./immutable.js",
110
+ "types": "./immutable.d.ts"
111
+ }
112
+ },
113
+ "keywords": [
114
+ "ramda",
115
+ "fp",
116
+ "functional",
117
+ "utility",
118
+ "lodash"
119
+ ],
120
+ "homepage": "https://github.com/selfrefactor/rambda#readme"
97
121
  }
package/src/F.js CHANGED
@@ -1,3 +1,3 @@
1
- export function F(){
1
+ export function F() {
2
2
  return false
3
3
  }
package/src/T.js CHANGED
@@ -1,3 +1,3 @@
1
- export function T(){
1
+ export function T() {
2
2
  return true
3
3
  }
@@ -1,4 +1,4 @@
1
- export function _isInteger(n){
1
+ export function _isInteger(n) {
2
2
  return n << 0 === n
3
3
  }
4
4
 
@@ -1,7 +1,7 @@
1
1
  // @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
2
- export function _objectIs(a, b){
2
+ export function _objectIs(a, b) {
3
3
  // SameValue algorithm
4
- if (a === b){
4
+ if (a === b) {
5
5
  // Steps 1-5, 7-10
6
6
  // Steps 6.b-6.e: +0 != -0
7
7
  return a !== 0 || 1 / a === 1 / b
@@ -1,20 +1,18 @@
1
- export default function baseSlice(
2
- array, start, end
3
- ){
1
+ export default function baseSlice(array, start, end) {
4
2
  let index = -1
5
- let { length } = array
3
+ let {length} = array
6
4
 
7
5
  end = end > length ? length : end
8
- if (end < 0){
6
+ if (end < 0) {
9
7
  end += length
10
8
  }
11
- length = start > end ? 0 : end - start >>> 0
9
+ length = start > end ? 0 : (end - start) >>> 0
12
10
  start >>>= 0
13
11
 
14
12
  const result = Array(length)
15
13
 
16
- while (++index < length){
17
- result[ index ] = array[ index + start ]
14
+ while (++index < length) {
15
+ result[index] = array[index + start]
18
16
  }
19
17
 
20
18
  return result
@@ -0,0 +1,3 @@
1
+ export const cloneList = list => {
2
+ return Array.prototype.slice.call(list)
3
+ }
@@ -1,11 +1,11 @@
1
- import { type } from '../type'
2
- import { _isArray } from './_isArray'
1
+ import {type} from '../type'
2
+ import {_isArray} from './_isArray'
3
3
 
4
- export function isFalsy(x){
5
- if (_isArray(x)){
4
+ export function isFalsy(x) {
5
+ if (_isArray(x)) {
6
6
  return x.length === 0
7
7
  }
8
- if (type(x) === 'Object'){
8
+ if (type(x) === 'Object') {
9
9
  return Object.keys(x).length === 0
10
10
  }
11
11
 
@@ -0,0 +1,5 @@
1
+ import {type} from '../type'
2
+
3
+ export function _isObject(input) {
4
+ return type(input) === 'Object'
5
+ }
@@ -1,11 +1,11 @@
1
- import { type } from '../type'
2
- import { _isArray } from './_isArray'
1
+ import {type} from '../type'
2
+ import {_isArray} from './_isArray'
3
3
 
4
- export function isTruthy(x){
5
- if (_isArray(x)){
4
+ export function isTruthy(x) {
5
+ if (_isArray(x)) {
6
6
  return x.length > 0
7
7
  }
8
- if (type(x) === 'Object'){
8
+ if (type(x) === 'Object') {
9
9
  return Object.keys(x).length > 0
10
10
  }
11
11
 
@@ -0,0 +1,35 @@
1
+ import {type as typeMethod} from '../type'
2
+ import {_indexOf} from '../equals'
3
+
4
+ export class _Set {
5
+ constructor() {
6
+ this.set = new Set()
7
+ this.items = {}
8
+ }
9
+ checkUniqueness(item) {
10
+ const type = typeMethod(item)
11
+ if (['Null', 'Undefined', 'NaN'].includes(type)) {
12
+ if (type in this.items) {
13
+ return false
14
+ }
15
+ this.items[type] = true
16
+ return true
17
+ }
18
+ if (!['Object', 'Array'].includes(type)) {
19
+ const prevSize = this.set.size
20
+ this.set.add(item)
21
+ return this.set.size !== prevSize
22
+ }
23
+
24
+ if (!(type in this.items)) {
25
+ this.items[type] = [item]
26
+ return true
27
+ }
28
+
29
+ if (_indexOf(item, this.items[type]) === -1) {
30
+ this.items[type].push(item)
31
+ return true
32
+ }
33
+ return false
34
+ }
35
+ }
package/src/add.js CHANGED
@@ -1,4 +1,4 @@
1
- export function add(a, b){
1
+ export function add(a, b) {
2
2
  if (arguments.length === 1) return _b => add(a, _b)
3
3
 
4
4
  return Number(a) + Number(b)
package/src/adjust.js CHANGED
@@ -1,13 +1,12 @@
1
- import { curry } from './curry'
1
+ import {curry} from './curry'
2
+ import {cloneList} from './_internals/cloneList'
2
3
 
3
- function adjustFn(
4
- index, replaceFn, list
5
- ){
4
+ function adjustFn(index, replaceFn, list) {
6
5
  const actualIndex = index < 0 ? list.length + index : index
7
6
  if (index >= list.length || actualIndex < 0) return list
8
7
 
9
- const clone = list.slice()
10
- clone[ actualIndex ] = replaceFn(clone[ actualIndex ])
8
+ const clone = cloneList(list)
9
+ clone[actualIndex] = replaceFn(clone[actualIndex])
11
10
 
12
11
  return clone
13
12
  }
package/src/all.js CHANGED
@@ -1,8 +1,8 @@
1
- export function all(predicate, list){
1
+ export function all(predicate, list) {
2
2
  if (arguments.length === 1) return _list => all(predicate, _list)
3
3
 
4
- for (let i = 0; i < list.length; i++){
5
- if (!predicate(list[ i ])) return false
4
+ for (let i = 0; i < list.length; i++) {
5
+ if (!predicate(list[i])) return false
6
6
  }
7
7
 
8
8
  return true
package/src/allPass.js CHANGED
@@ -1,8 +1,8 @@
1
- export function allPass(predicates){
2
- return input => {
1
+ export function allPass(predicates) {
2
+ return (...input) => {
3
3
  let counter = 0
4
- while (counter < predicates.length){
5
- if (!predicates[ counter ](input)){
4
+ while (counter < predicates.length) {
5
+ if (!predicates[counter](...input)) {
6
6
  return false
7
7
  }
8
8
  counter++
package/src/always.js CHANGED
@@ -1,3 +1,3 @@
1
- export function always(x){
1
+ export function always(x) {
2
2
  return () => x
3
3
  }
package/src/and.js CHANGED
@@ -1,4 +1,4 @@
1
- export function and(a, b){
1
+ export function and(a, b) {
2
2
  if (arguments.length === 1) return _b => and(a, _b)
3
3
 
4
4
  return a && b
package/src/any.js CHANGED
@@ -1,9 +1,9 @@
1
- export function any(predicate, list){
1
+ export function any(predicate, list) {
2
2
  if (arguments.length === 1) return _list => any(predicate, _list)
3
3
 
4
4
  let counter = 0
5
- while (counter < list.length){
6
- if (predicate(list[ counter ], counter)){
5
+ while (counter < list.length) {
6
+ if (predicate(list[counter], counter)) {
7
7
  return true
8
8
  }
9
9
  counter++
package/src/anyPass.js CHANGED
@@ -1,8 +1,8 @@
1
- export function anyPass(predicates){
2
- return input => {
1
+ export function anyPass(predicates) {
2
+ return (...input) => {
3
3
  let counter = 0
4
- while (counter < predicates.length){
5
- if (predicates[ counter ](input)){
4
+ while (counter < predicates.length) {
5
+ if (predicates[counter](...input)) {
6
6
  return true
7
7
  }
8
8
  counter++
package/src/append.js CHANGED
@@ -1,9 +1,11 @@
1
- export function append(x, input){
1
+ import {cloneList} from './_internals/cloneList'
2
+
3
+ export function append(x, input) {
2
4
  if (arguments.length === 1) return _input => append(x, _input)
3
5
 
4
6
  if (typeof input === 'string') return input.split('').concat(x)
5
7
 
6
- const clone = input.slice()
8
+ const clone = cloneList(input)
7
9
  clone.push(x)
8
10
 
9
11
  return clone
package/src/apply.js ADDED
@@ -0,0 +1,7 @@
1
+ export function apply(fn, args) {
2
+ if (arguments.length === 1) {
3
+ return _args => apply(fn, _args)
4
+ }
5
+
6
+ return fn.apply(this, args)
7
+ }
package/src/applySpec.js CHANGED
@@ -1,93 +1,71 @@
1
- import { _isArray } from './_internals/_isArray'
1
+ import {_isArray} from './_internals/_isArray'
2
2
 
3
3
  // recursively traverse the given spec object to find the highest arity function
4
- function __findHighestArity(spec, max = 0){
5
- for (const key in spec){
4
+ function __findHighestArity(spec, max = 0) {
5
+ for (const key in spec) {
6
6
  if (spec.hasOwnProperty(key) === false || key === 'constructor') continue
7
7
 
8
- if (typeof spec[ key ] === 'object'){
9
- max = Math.max(max, __findHighestArity(spec[ key ]))
8
+ if (typeof spec[key] === 'object') {
9
+ max = Math.max(max, __findHighestArity(spec[key]))
10
10
  }
11
11
 
12
- if (typeof spec[ key ] === 'function'){
13
- max = Math.max(max, spec[ key ].length)
12
+ if (typeof spec[key] === 'function') {
13
+ max = Math.max(max, spec[key].length)
14
14
  }
15
15
  }
16
16
 
17
17
  return max
18
18
  }
19
19
 
20
- function __filterUndefined(){
20
+ function __filterUndefined() {
21
21
  const defined = []
22
22
  let i = 0
23
23
  const l = arguments.length
24
- while (i < l){
25
- if (typeof arguments[ i ] === 'undefined') break
26
- defined[ i ] = arguments[ i ]
24
+ while (i < l) {
25
+ if (typeof arguments[i] === 'undefined') break
26
+ defined[i] = arguments[i]
27
27
  i++
28
28
  }
29
29
 
30
30
  return defined
31
31
  }
32
32
 
33
- function __applySpecWithArity(
34
- spec, arity, cache
35
- ){
33
+ function __applySpecWithArity(spec, arity, cache) {
36
34
  const remaining = arity - cache.length
37
35
 
38
36
  if (remaining === 1)
39
37
  return x =>
40
- __applySpecWithArity(
41
- spec, arity, __filterUndefined(...cache, x)
42
- )
38
+ __applySpecWithArity(spec, arity, __filterUndefined(...cache, x))
43
39
  if (remaining === 2)
44
40
  return (x, y) =>
45
- __applySpecWithArity(
46
- spec, arity, __filterUndefined(
47
- ...cache, x, y
48
- )
49
- )
41
+ __applySpecWithArity(spec, arity, __filterUndefined(...cache, x, y))
50
42
  if (remaining === 3)
51
- return (
52
- x, y, z
53
- ) =>
54
- __applySpecWithArity(
55
- spec, arity, __filterUndefined(
56
- ...cache, x, y, z
57
- )
58
- )
43
+ return (x, y, z) =>
44
+ __applySpecWithArity(spec, arity, __filterUndefined(...cache, x, y, z))
59
45
  if (remaining === 4)
60
- return (
61
- x, y, z, a
62
- ) =>
46
+ return (x, y, z, a) =>
63
47
  __applySpecWithArity(
64
48
  spec,
65
49
  arity,
66
- __filterUndefined(
67
- ...cache, x, y, z, a
68
- )
50
+ __filterUndefined(...cache, x, y, z, a)
69
51
  )
70
52
  if (remaining > 4)
71
53
  return (...args) =>
72
- __applySpecWithArity(
73
- spec, arity, __filterUndefined(...cache, ...args)
74
- )
54
+ __applySpecWithArity(spec, arity, __filterUndefined(...cache, ...args))
75
55
 
76
56
  // handle spec as Array
77
- if (_isArray(spec)){
57
+ if (_isArray(spec)) {
78
58
  const ret = []
79
59
  let i = 0
80
60
  const l = spec.length
81
- for (; i < l; i++){
61
+ for (; i < l; i++) {
82
62
  // handle recursive spec inside array
83
- if (typeof spec[ i ] === 'object' || _isArray(spec[ i ])){
84
- ret[ i ] = __applySpecWithArity(
85
- spec[ i ], arity, cache
86
- )
63
+ if (typeof spec[i] === 'object' || _isArray(spec[i])) {
64
+ ret[i] = __applySpecWithArity(spec[i], arity, cache)
87
65
  }
88
66
  // apply spec to the key
89
- if (typeof spec[ i ] === 'function'){
90
- ret[ i ] = spec[ i ](...cache)
67
+ if (typeof spec[i] === 'function') {
68
+ ret[i] = spec[i](...cache)
91
69
  }
92
70
  }
93
71
 
@@ -97,36 +75,32 @@ function __applySpecWithArity(
97
75
  // handle spec as Object
98
76
  const ret = {}
99
77
  // apply callbacks to each property in the spec object
100
- for (const key in spec){
78
+ for (const key in spec) {
101
79
  if (spec.hasOwnProperty(key) === false || key === 'constructor') continue
102
80
 
103
81
  // apply the spec recursively
104
- if (typeof spec[ key ] === 'object'){
105
- ret[ key ] = __applySpecWithArity(
106
- spec[ key ], arity, cache
107
- )
82
+ if (typeof spec[key] === 'object') {
83
+ ret[key] = __applySpecWithArity(spec[key], arity, cache)
108
84
  continue
109
85
  }
110
86
 
111
87
  // apply spec to the key
112
- if (typeof spec[ key ] === 'function'){
113
- ret[ key ] = spec[ key ](...cache)
88
+ if (typeof spec[key] === 'function') {
89
+ ret[key] = spec[key](...cache)
114
90
  }
115
91
  }
116
92
 
117
93
  return ret
118
94
  }
119
95
 
120
- export function applySpec(spec, ...args){
96
+ export function applySpec(spec, ...args) {
121
97
  // get the highest arity spec function, cache the result and pass to __applySpecWithArity
122
98
  const arity = __findHighestArity(spec)
123
99
 
124
- if (arity === 0){
100
+ if (arity === 0) {
125
101
  return () => ({})
126
102
  }
127
- const toReturn = __applySpecWithArity(
128
- spec, arity, args
129
- )
103
+ const toReturn = __applySpecWithArity(spec, arity, args)
130
104
 
131
105
  return toReturn
132
106
  }