@vinicunca/perkakas 0.3.1 → 0.3.5
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/dist/commonjs/array/all-pass.js +2 -2
- package/dist/commonjs/array/any-pass.js +2 -2
- package/dist/commonjs/array/chunk.js +3 -3
- package/dist/commonjs/array/concat.js +2 -2
- package/dist/commonjs/array/count-by.js +8 -6
- package/dist/commonjs/array/difference-with.js +5 -15
- package/dist/commonjs/array/difference.js +5 -15
- package/dist/commonjs/array/drop-first-by.js +1 -1
- package/dist/commonjs/array/drop-last-while.js +2 -2
- package/dist/commonjs/array/drop-last.js +3 -3
- package/dist/commonjs/array/drop-while.js +2 -2
- package/dist/commonjs/array/drop.js +5 -12
- package/dist/commonjs/array/filter.js +3 -16
- package/dist/commonjs/array/find-index.js +12 -25
- package/dist/commonjs/array/find-last-index.js +3 -3
- package/dist/commonjs/array/find-last.js +3 -3
- package/dist/commonjs/array/find.js +10 -22
- package/dist/commonjs/array/first.js +4 -10
- package/dist/commonjs/array/flat-map-to-obj.js +10 -9
- package/dist/commonjs/array/flat-map.js +5 -15
- package/dist/commonjs/array/flatten-deep.js +9 -19
- package/dist/commonjs/array/flatten.js +5 -17
- package/dist/commonjs/array/for-each.js +18 -22
- package/dist/commonjs/array/group-by.js +5 -5
- package/dist/commonjs/array/index-by.js +20 -7
- package/dist/commonjs/array/index.js +4 -0
- package/dist/commonjs/array/intersection-with.js +5 -15
- package/dist/commonjs/array/intersection.js +6 -16
- package/dist/commonjs/array/last.js +2 -2
- package/dist/commonjs/array/length.js +2 -2
- package/dist/commonjs/array/map-to-obj.js +8 -7
- package/dist/commonjs/array/map.js +11 -15
- package/dist/commonjs/array/max-by.js +6 -6
- package/dist/commonjs/array/mean-by.js +6 -6
- package/dist/commonjs/array/merge-all.js +5 -1
- package/dist/commonjs/array/min-by.js +6 -6
- package/dist/commonjs/array/only.js +3 -6
- package/dist/commonjs/array/partition.js +5 -5
- package/dist/commonjs/array/range.js +2 -2
- package/dist/commonjs/array/rank-by.js +1 -1
- package/dist/commonjs/array/reduce.js +3 -3
- package/dist/commonjs/array/reject.js +9 -22
- package/dist/commonjs/array/reverse.js +2 -2
- package/dist/commonjs/array/sample.js +1 -1
- package/dist/commonjs/array/shuffle.js +3 -3
- package/dist/commonjs/array/sort-by.js +5 -43
- package/dist/commonjs/array/sort.js +3 -3
- package/dist/commonjs/array/sorted-index-by.js +19 -0
- package/dist/commonjs/array/sorted-index-with.js +15 -0
- package/dist/commonjs/array/sorted-index.js +12 -0
- package/dist/commonjs/array/sorted-last-index-by.js +19 -0
- package/dist/commonjs/array/sorted-last-index.js +12 -0
- package/dist/commonjs/array/splice.js +3 -3
- package/dist/commonjs/array/split-at.js +3 -3
- package/dist/commonjs/array/split-when.js +6 -6
- package/dist/commonjs/array/sum-by.js +6 -6
- package/dist/commonjs/array/swap-indices.js +7 -7
- package/dist/commonjs/array/take-first-by.js +1 -1
- package/dist/commonjs/array/take-while.js +2 -2
- package/dist/commonjs/array/take.js +8 -21
- package/dist/commonjs/array/uniq-by.js +4 -11
- package/dist/commonjs/array/uniq-with.js +8 -18
- package/dist/commonjs/array/uniq.js +4 -11
- package/dist/commonjs/array/zip-obj.js +2 -2
- package/dist/commonjs/array/zip-with.js +4 -4
- package/dist/commonjs/array/zip.js +2 -2
- package/dist/commonjs/function/create-pipe.js +1 -1
- package/dist/commonjs/function/index.js +1 -0
- package/dist/commonjs/function/pipe.js +18 -24
- package/dist/commonjs/function/purry.js +8 -9
- package/dist/commonjs/function/times.js +18 -0
- package/dist/commonjs/guard/is-defined.js +1 -1
- package/dist/commonjs/guard/is-empty.js +4 -4
- package/dist/commonjs/guard/is-nil.js +1 -1
- package/dist/commonjs/guard/is-not.js +1 -3
- package/dist/commonjs/number/add.js +2 -2
- package/dist/commonjs/number/clamp.js +6 -6
- package/dist/commonjs/number/divide.js +2 -2
- package/dist/commonjs/number/multiply.js +2 -2
- package/dist/commonjs/number/subtract.js +2 -2
- package/dist/commonjs/object/add-prop.js +2 -2
- package/dist/commonjs/object/clone.js +5 -5
- package/dist/commonjs/object/equals.js +48 -52
- package/dist/commonjs/object/for-each-obj.js +9 -9
- package/dist/commonjs/object/from-pairs.js +6 -2
- package/dist/commonjs/object/invert.js +5 -3
- package/dist/commonjs/object/keys.js +3 -2
- package/dist/commonjs/object/map-keys.js +2 -2
- package/dist/commonjs/object/map-values.js +2 -2
- package/dist/commonjs/object/merge-deep.js +2 -2
- package/dist/commonjs/object/merge.js +2 -2
- package/dist/commonjs/object/omit-by.js +7 -6
- package/dist/commonjs/object/omit.js +2 -2
- package/dist/commonjs/object/path-or.js +6 -6
- package/dist/commonjs/object/pick-by.js +9 -8
- package/dist/commonjs/object/pick.js +7 -9
- package/dist/commonjs/object/set-path.js +14 -15
- package/dist/commonjs/object/set.js +2 -2
- package/dist/commonjs/object/swap-props.js +2 -2
- package/dist/commonjs/string/random-string.js +11 -5
- package/dist/commonjs/string/string-to-path.js +5 -5
- package/dist/commonjs/utils/binary-search-cutoff-index.js +19 -0
- package/dist/commonjs/utils/heap.js +1 -1
- package/dist/commonjs/utils/purry-order-rules.js +1 -1
- package/dist/commonjs/utils/quick-select.js +2 -2
- package/dist/commonjs/utils/reduce-lazy.js +9 -6
- package/dist/commonjs/utils/to-single.js +1 -2
- package/dist/es/array/all-pass.js +2 -2
- package/dist/es/array/any-pass.js +2 -2
- package/dist/es/array/chunk.js +3 -3
- package/dist/es/array/concat.js +2 -2
- package/dist/es/array/count-by.js +8 -6
- package/dist/es/array/difference-with.js +5 -15
- package/dist/es/array/difference.js +5 -15
- package/dist/es/array/drop-first-by.js +1 -1
- package/dist/es/array/drop-last-while.js +2 -2
- package/dist/es/array/drop-last.js +3 -3
- package/dist/es/array/drop-while.js +2 -2
- package/dist/es/array/drop.js +5 -12
- package/dist/es/array/filter.js +3 -16
- package/dist/es/array/find-index.js +12 -25
- package/dist/es/array/find-last-index.js +3 -3
- package/dist/es/array/find-last.js +3 -3
- package/dist/es/array/find.js +10 -22
- package/dist/es/array/first.js +4 -10
- package/dist/es/array/flat-map-to-obj.js +10 -9
- package/dist/es/array/flat-map.js +5 -15
- package/dist/es/array/flatten-deep.js +9 -19
- package/dist/es/array/flatten.js +5 -17
- package/dist/es/array/for-each.js +18 -22
- package/dist/es/array/group-by.js +5 -5
- package/dist/es/array/index-by.js +20 -7
- package/dist/es/array/index.js +4 -0
- package/dist/es/array/intersection-with.js +5 -15
- package/dist/es/array/intersection.js +6 -16
- package/dist/es/array/last.js +2 -2
- package/dist/es/array/length.js +2 -2
- package/dist/es/array/map-to-obj.js +8 -7
- package/dist/es/array/map.js +11 -15
- package/dist/es/array/max-by.js +6 -6
- package/dist/es/array/mean-by.js +6 -6
- package/dist/es/array/merge-all.js +5 -1
- package/dist/es/array/min-by.js +6 -6
- package/dist/es/array/only.js +3 -6
- package/dist/es/array/partition.js +5 -5
- package/dist/es/array/range.js +2 -2
- package/dist/es/array/rank-by.js +1 -1
- package/dist/es/array/reduce.js +3 -3
- package/dist/es/array/reject.js +9 -22
- package/dist/es/array/reverse.js +2 -2
- package/dist/es/array/sample.js +1 -1
- package/dist/es/array/shuffle.js +3 -3
- package/dist/es/array/sort-by.js +5 -43
- package/dist/es/array/sort.js +3 -3
- package/dist/es/array/sorted-index-by.js +15 -0
- package/dist/es/array/sorted-index-with.js +11 -0
- package/dist/es/array/sorted-index.js +8 -0
- package/dist/es/array/sorted-last-index-by.js +15 -0
- package/dist/es/array/sorted-last-index.js +8 -0
- package/dist/es/array/splice.js +3 -3
- package/dist/es/array/split-at.js +3 -3
- package/dist/es/array/split-when.js +6 -6
- package/dist/es/array/sum-by.js +6 -6
- package/dist/es/array/swap-indices.js +7 -7
- package/dist/es/array/take-first-by.js +1 -1
- package/dist/es/array/take-while.js +2 -2
- package/dist/es/array/take.js +8 -21
- package/dist/es/array/uniq-by.js +4 -11
- package/dist/es/array/uniq-with.js +8 -18
- package/dist/es/array/uniq.js +4 -11
- package/dist/es/array/zip-obj.js +2 -2
- package/dist/es/array/zip-with.js +4 -4
- package/dist/es/array/zip.js +2 -2
- package/dist/es/function/index.js +1 -0
- package/dist/es/function/pipe.js +18 -24
- package/dist/es/function/purry.js +8 -9
- package/dist/es/function/times.js +14 -0
- package/dist/es/guard/is-defined.js +1 -1
- package/dist/es/guard/is-empty.js +4 -4
- package/dist/es/guard/is-nil.js +1 -1
- package/dist/es/guard/is-not.js +1 -3
- package/dist/es/number/add.js +2 -2
- package/dist/es/number/clamp.js +6 -6
- package/dist/es/number/divide.js +2 -2
- package/dist/es/number/multiply.js +2 -2
- package/dist/es/number/subtract.js +2 -2
- package/dist/es/object/add-prop.js +2 -2
- package/dist/es/object/clone.js +5 -5
- package/dist/es/object/equals.js +48 -52
- package/dist/es/object/for-each-obj.js +9 -9
- package/dist/es/object/from-pairs.js +5 -1
- package/dist/es/object/invert.js +5 -3
- package/dist/es/object/keys.js +3 -2
- package/dist/es/object/map-keys.js +2 -2
- package/dist/es/object/map-values.js +2 -2
- package/dist/es/object/merge-deep.js +2 -2
- package/dist/es/object/merge.js +2 -2
- package/dist/es/object/omit-by.js +7 -6
- package/dist/es/object/omit.js +2 -2
- package/dist/es/object/path-or.js +6 -6
- package/dist/es/object/pick-by.js +9 -8
- package/dist/es/object/pick.js +7 -9
- package/dist/es/object/set-path.js +12 -13
- package/dist/es/object/set.js +2 -2
- package/dist/es/object/swap-props.js +2 -2
- package/dist/es/string/random-string.js +11 -5
- package/dist/es/string/string-to-path.js +5 -5
- package/dist/es/utils/binary-search-cutoff-index.js +15 -0
- package/dist/es/utils/heap.js +1 -1
- package/dist/es/utils/purry-order-rules.js +1 -1
- package/dist/es/utils/quick-select.js +2 -2
- package/dist/es/utils/reduce-lazy.js +9 -6
- package/dist/es/utils/to-single.js +1 -2
- package/dist/metadata.json +7915 -4373
- package/dist/types/array/count-by.d.ts.map +1 -1
- package/dist/types/array/difference-with.d.ts +2 -2
- package/dist/types/array/difference-with.d.ts.map +1 -1
- package/dist/types/array/difference.d.ts +2 -2
- package/dist/types/array/difference.d.ts.map +1 -1
- package/dist/types/array/drop.d.ts +2 -2
- package/dist/types/array/drop.d.ts.map +1 -1
- package/dist/types/array/filter.d.ts +5 -5
- package/dist/types/array/filter.d.ts.map +1 -1
- package/dist/types/array/find-index.d.ts +5 -20
- package/dist/types/array/find-index.d.ts.map +1 -1
- package/dist/types/array/find.d.ts +5 -12
- package/dist/types/array/find.d.ts.map +1 -1
- package/dist/types/array/first.d.ts +2 -5
- package/dist/types/array/first.d.ts.map +1 -1
- package/dist/types/array/flat-map-to-obj.d.ts +4 -4
- package/dist/types/array/flat-map-to-obj.d.ts.map +1 -1
- package/dist/types/array/flat-map.d.ts +2 -11
- package/dist/types/array/flat-map.d.ts.map +1 -1
- package/dist/types/array/flatten-deep.d.ts +15 -5
- package/dist/types/array/flatten-deep.d.ts.map +1 -1
- package/dist/types/array/flatten.d.ts +17 -2
- package/dist/types/array/flatten.d.ts.map +1 -1
- package/dist/types/array/for-each.d.ts +3 -3
- package/dist/types/array/for-each.d.ts.map +1 -1
- package/dist/types/array/group-by.d.ts.map +1 -1
- package/dist/types/array/index-by.d.ts +25 -6
- package/dist/types/array/index-by.d.ts.map +1 -1
- package/dist/types/array/index.d.ts +4 -0
- package/dist/types/array/index.d.ts.map +1 -1
- package/dist/types/array/intersection-with.d.ts +2 -2
- package/dist/types/array/intersection-with.d.ts.map +1 -1
- package/dist/types/array/intersection.d.ts +2 -2
- package/dist/types/array/intersection.d.ts.map +1 -1
- package/dist/types/array/last.d.ts +13 -4
- package/dist/types/array/last.d.ts.map +1 -1
- package/dist/types/array/map.d.ts +3 -3
- package/dist/types/array/map.d.ts.map +1 -1
- package/dist/types/array/max-by.d.ts.map +1 -1
- package/dist/types/array/mean-by.d.ts.map +1 -1
- package/dist/types/array/merge-all.d.ts +1 -1
- package/dist/types/array/merge-all.d.ts.map +1 -1
- package/dist/types/array/min-by.d.ts.map +1 -1
- package/dist/types/array/reduce.d.ts +2 -2
- package/dist/types/array/reduce.d.ts.map +1 -1
- package/dist/types/array/reject.d.ts +3 -3
- package/dist/types/array/reject.d.ts.map +1 -1
- package/dist/types/array/sort-by.d.ts +33 -33
- package/dist/types/array/sort-by.d.ts.map +1 -1
- package/dist/types/array/sort.d.ts.map +1 -1
- package/dist/types/array/sorted-index-by.d.ts +63 -0
- package/dist/types/array/sorted-index-by.d.ts.map +1 -0
- package/dist/types/array/sorted-index-with.d.ts +65 -0
- package/dist/types/array/sorted-index-with.d.ts.map +1 -0
- package/dist/types/array/sorted-index.d.ts +47 -0
- package/dist/types/array/sorted-index.d.ts.map +1 -0
- package/dist/types/array/sorted-last-index-by.d.ts +63 -0
- package/dist/types/array/sorted-last-index-by.d.ts.map +1 -0
- package/dist/types/array/sorted-last-index.d.ts +47 -0
- package/dist/types/array/sorted-last-index.d.ts.map +1 -0
- package/dist/types/array/sum-by.d.ts.map +1 -1
- package/dist/types/array/take.d.ts +2 -2
- package/dist/types/array/take.d.ts.map +1 -1
- package/dist/types/array/uniq-with.d.ts +3 -3
- package/dist/types/array/uniq-with.d.ts.map +1 -1
- package/dist/types/array/uniq.d.ts +15 -4
- package/dist/types/array/uniq.d.ts.map +1 -1
- package/dist/types/array/zip-obj.d.ts +2 -2
- package/dist/types/array/zip-obj.d.ts.map +1 -1
- package/dist/types/array/zip.d.ts.map +1 -1
- package/dist/types/function/conditional.d.ts.map +1 -1
- package/dist/types/function/index.d.ts +1 -0
- package/dist/types/function/index.d.ts.map +1 -1
- package/dist/types/function/noop.d.ts.map +1 -1
- package/dist/types/function/pipe.d.ts +21 -0
- package/dist/types/function/pipe.d.ts.map +1 -1
- package/dist/types/function/purry.d.ts +21 -6
- package/dist/types/function/purry.d.ts.map +1 -1
- package/dist/types/function/times.d.ts +29 -0
- package/dist/types/function/times.d.ts.map +1 -0
- package/dist/types/guard/is-empty.d.ts +15 -4
- package/dist/types/guard/is-empty.d.ts.map +1 -1
- package/dist/types/guard/is-not.d.ts +1 -1
- package/dist/types/guard/is-not.d.ts.map +1 -1
- package/dist/types/guard/is-object.d.ts +1 -1
- package/dist/types/guard/is-object.d.ts.map +1 -1
- package/dist/types/number/clamp.d.ts +7 -8
- package/dist/types/number/clamp.d.ts.map +1 -1
- package/dist/types/object/add-prop.d.ts +2 -2
- package/dist/types/object/add-prop.d.ts.map +1 -1
- package/dist/types/object/equals.d.ts +2 -2
- package/dist/types/object/equals.d.ts.map +1 -1
- package/dist/types/object/for-each-obj.d.ts +6 -6
- package/dist/types/object/for-each-obj.d.ts.map +1 -1
- package/dist/types/object/from-pairs.d.ts +9 -0
- package/dist/types/object/from-pairs.d.ts.map +1 -1
- package/dist/types/object/keys.d.ts +8 -4
- package/dist/types/object/keys.d.ts.map +1 -1
- package/dist/types/object/pick.d.ts +9 -9
- package/dist/types/object/pick.d.ts.map +1 -1
- package/dist/types/object/prop.d.ts.map +1 -1
- package/dist/types/object/set-path.d.ts +1 -1
- package/dist/types/object/set-path.d.ts.map +1 -1
- package/dist/types/object/to-pairs.d.ts +1 -1
- package/dist/types/object/to-pairs.d.ts.map +1 -1
- package/dist/types/string/random-string.d.ts +6 -2
- package/dist/types/string/random-string.d.ts.map +1 -1
- package/dist/types/string/string-to-path.d.ts.map +1 -1
- package/dist/types/type/type.d.ts.map +1 -1
- package/dist/types/utils/binary-search-cutoff-index.d.ts +2 -0
- package/dist/types/utils/binary-search-cutoff-index.d.ts.map +1 -0
- package/dist/types/utils/narrow.d.ts +1 -1
- package/dist/types/utils/narrow.d.ts.map +1 -1
- package/dist/types/utils/purry-on.d.ts +1 -1
- package/dist/types/utils/purry-on.d.ts.map +1 -1
- package/dist/types/utils/reduce-lazy.d.ts +2 -21
- package/dist/types/utils/reduce-lazy.d.ts.map +1 -1
- package/dist/types/utils/swap-in-place.d.ts.map +1 -1
- package/dist/types/utils/to-single.d.ts +4 -2
- package/dist/types/utils/to-single.d.ts.map +1 -1
- package/dist/types/utils/types.d.ts +2 -2
- package/dist/types/utils/types.d.ts.map +1 -1
- package/dist/types/utils/with-precision.d.ts.map +1 -1
- package/package.json +2 -4
package/dist/es/number/clamp.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function clamp(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(clamp_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
if (
|
|
7
|
-
return
|
|
5
|
+
function clamp_(value, { max, min }) {
|
|
6
|
+
if (min !== undefined && value < min) {
|
|
7
|
+
return min;
|
|
8
8
|
}
|
|
9
|
-
if (
|
|
10
|
-
return
|
|
9
|
+
if (max !== undefined && value > max) {
|
|
10
|
+
return max;
|
|
11
11
|
}
|
|
12
12
|
return value;
|
|
13
13
|
}
|
package/dist/es/number/divide.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function multiply(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(multiply_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function multiply_(value, multiplicand) {
|
|
6
6
|
return value * multiplicand;
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function subtract(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(subtract_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function subtract_(value, subtrahend) {
|
|
6
6
|
return value - subtrahend;
|
|
7
7
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function addProp(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(addProp_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function addProp_(obj, prop, value) {
|
|
6
6
|
return {
|
|
7
7
|
...obj,
|
|
8
8
|
[prop]: value,
|
package/dist/es/object/clone.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type } from '../type';
|
|
2
|
-
function
|
|
2
|
+
function cloneRegExp_(pattern) {
|
|
3
3
|
return new RegExp(pattern.source, (pattern.global ? 'g' : '')
|
|
4
4
|
+ (pattern.ignoreCase ? 'i' : '')
|
|
5
5
|
+ (pattern.multiline ? 'm' : '')
|
|
6
6
|
+ (pattern.sticky ? 'y' : '')
|
|
7
7
|
+ (pattern.unicode ? 'u' : ''));
|
|
8
8
|
}
|
|
9
|
-
function
|
|
9
|
+
function clone_(value, refFrom, refTo, deep) {
|
|
10
10
|
function copy(copiedValue) {
|
|
11
11
|
const len = refFrom.length;
|
|
12
12
|
let idx = 0;
|
|
@@ -20,7 +20,7 @@ function _clone(value, refFrom, refTo, deep) {
|
|
|
20
20
|
refTo[idx + 1] = copiedValue;
|
|
21
21
|
for (const key in value) {
|
|
22
22
|
copiedValue[key] = deep
|
|
23
|
-
?
|
|
23
|
+
? clone_(value[key], refFrom, refTo, true)
|
|
24
24
|
: value[key];
|
|
25
25
|
}
|
|
26
26
|
return copiedValue;
|
|
@@ -33,7 +33,7 @@ function _clone(value, refFrom, refTo, deep) {
|
|
|
33
33
|
case 'Date':
|
|
34
34
|
return new Date(value.valueOf());
|
|
35
35
|
case 'RegExp':
|
|
36
|
-
return
|
|
36
|
+
return cloneRegExp_(value);
|
|
37
37
|
default:
|
|
38
38
|
return value;
|
|
39
39
|
}
|
|
@@ -41,5 +41,5 @@ function _clone(value, refFrom, refTo, deep) {
|
|
|
41
41
|
export function clone(value) {
|
|
42
42
|
return value != null && typeof value.clone === 'function'
|
|
43
43
|
? value.clone()
|
|
44
|
-
:
|
|
44
|
+
: clone_(value, [], [], true);
|
|
45
45
|
}
|
package/dist/es/object/equals.js
CHANGED
|
@@ -1,67 +1,63 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
|
-
const isArray = Array.isArray;
|
|
3
|
-
const keyList = Object.keys;
|
|
4
2
|
export function equals(...args) {
|
|
5
|
-
return purry(
|
|
3
|
+
return purry(equals_, args);
|
|
6
4
|
}
|
|
7
|
-
function
|
|
5
|
+
function equals_(a, b) {
|
|
8
6
|
if (a === b) {
|
|
9
7
|
return true;
|
|
10
8
|
}
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
if (arrA !== arrB) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
const dateA = a instanceof Date;
|
|
33
|
-
const dateB = b instanceof Date;
|
|
34
|
-
if (dateA !== dateB) {
|
|
9
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
|
10
|
+
return Number.isNaN(a) && Number.isNaN(b);
|
|
11
|
+
}
|
|
12
|
+
if (typeof a !== 'object' || typeof b !== 'object') {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (a === null || b === null) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const isArrayA = Array.isArray(a);
|
|
19
|
+
const isArrayB = Array.isArray(b);
|
|
20
|
+
if (isArrayA && isArrayB) {
|
|
21
|
+
if (a.length !== b.length) {
|
|
35
22
|
return false;
|
|
36
23
|
}
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
for (let i = 0; i < a.length; i++) {
|
|
25
|
+
if (!equals_(a[i], b[i])) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
39
28
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
if (isArrayA !== isArrayB) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const isDateA = a instanceof Date;
|
|
35
|
+
const isDateB = b instanceof Date;
|
|
36
|
+
if (isDateA && isDateB) {
|
|
37
|
+
return a.getTime() === b.getTime();
|
|
38
|
+
}
|
|
39
|
+
if (isDateA !== isDateB) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const isRegExpA = a instanceof RegExp;
|
|
43
|
+
const isRegExpB = b instanceof RegExp;
|
|
44
|
+
if (isRegExpA && isRegExpB) {
|
|
45
|
+
return a.toString() === b.toString();
|
|
46
|
+
}
|
|
47
|
+
if (isRegExpA !== isRegExpB) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const keys = Object.keys(a);
|
|
51
|
+
if (keys.length !== Object.keys(b).length) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
for (const key of keys) {
|
|
55
|
+
if (!Object.prototype.hasOwnProperty.call(b, key)) {
|
|
43
56
|
return false;
|
|
44
57
|
}
|
|
45
|
-
if (
|
|
46
|
-
return a.toString() === b.toString();
|
|
47
|
-
}
|
|
48
|
-
const keys = keyList(a);
|
|
49
|
-
length = keys.length;
|
|
50
|
-
if (length !== keyList(b).length) {
|
|
58
|
+
if (!equals_(a[key], b[key])) {
|
|
51
59
|
return false;
|
|
52
60
|
}
|
|
53
|
-
for (i = length; i-- !== 0;) {
|
|
54
|
-
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
for (i = length; i-- !== 0;) {
|
|
59
|
-
key = keys[i];
|
|
60
|
-
if (!equals(a[key], b[key])) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
65
61
|
}
|
|
66
|
-
return
|
|
62
|
+
return true;
|
|
67
63
|
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function forEachObj(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(forEachObj_(false), args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
return (
|
|
7
|
-
for (const key in
|
|
8
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
9
|
-
const val =
|
|
5
|
+
function forEachObj_(indexed) {
|
|
6
|
+
return (data, fn) => {
|
|
7
|
+
for (const key in data) {
|
|
8
|
+
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
9
|
+
const { [key]: val } = data;
|
|
10
10
|
if (indexed) {
|
|
11
|
-
fn(val, key,
|
|
11
|
+
fn(val, key, data);
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
14
14
|
fn(val);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
return
|
|
18
|
+
return data;
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
(function (forEachObj) {
|
|
22
22
|
function indexed(...args) {
|
|
23
|
-
return purry(
|
|
23
|
+
return purry(forEachObj_(true), args);
|
|
24
24
|
}
|
|
25
25
|
forEachObj.indexed = indexed;
|
|
26
26
|
})(forEachObj || (forEachObj = {}));
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { purry } from '../function/purry';
|
|
2
|
+
export function fromPairs(...args) {
|
|
3
|
+
return purry(fromPairsImplementation, args);
|
|
4
|
+
}
|
|
5
|
+
function fromPairsImplementation(entries) {
|
|
2
6
|
const out = {};
|
|
3
7
|
for (const [key, value] of entries) {
|
|
4
8
|
out[key] = value;
|
package/dist/es/object/invert.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function invert(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(invert_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function invert_(object) {
|
|
6
6
|
const result = {};
|
|
7
7
|
for (const key in object) {
|
|
8
|
-
|
|
8
|
+
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
9
|
+
result[object[key]] = key;
|
|
10
|
+
}
|
|
9
11
|
}
|
|
10
12
|
return result;
|
|
11
13
|
}
|
package/dist/es/object/keys.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
import { toPairs } from './to-pairs';
|
|
3
3
|
export function mapKeys(...args) {
|
|
4
|
-
return purry(
|
|
4
|
+
return purry(mapKeys_, args);
|
|
5
5
|
}
|
|
6
|
-
function
|
|
6
|
+
function mapKeys_(data, fn) {
|
|
7
7
|
const out = {};
|
|
8
8
|
for (const [key, value] of toPairs.strict(data)) {
|
|
9
9
|
out[fn(key, value)] = value;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
import { toPairs } from './to-pairs';
|
|
3
3
|
export function mapValues(...args) {
|
|
4
|
-
return purry(
|
|
4
|
+
return purry(mapValues_, args);
|
|
5
5
|
}
|
|
6
|
-
function
|
|
6
|
+
function mapValues_(data, fn) {
|
|
7
7
|
const out = {};
|
|
8
8
|
for (const [key, value] of toPairs.strict(data)) {
|
|
9
9
|
out[key] = fn(value, key);
|
|
@@ -8,11 +8,11 @@ function mergeDeepImplementation(destination, source) {
|
|
|
8
8
|
if (!(key in destination)) {
|
|
9
9
|
continue;
|
|
10
10
|
}
|
|
11
|
-
const destinationValue = destination
|
|
11
|
+
const { [key]: destinationValue } = destination;
|
|
12
12
|
if (!isRecord(destinationValue)) {
|
|
13
13
|
continue;
|
|
14
14
|
}
|
|
15
|
-
const sourceValue = source
|
|
15
|
+
const { [key]: sourceValue } = source;
|
|
16
16
|
if (!isRecord(sourceValue)) {
|
|
17
17
|
continue;
|
|
18
18
|
}
|
package/dist/es/object/merge.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
import { keys } from './keys';
|
|
3
3
|
export function omitBy(...args) {
|
|
4
|
-
return purry(
|
|
4
|
+
return purry(omitBy_, args);
|
|
5
5
|
}
|
|
6
|
-
function
|
|
6
|
+
function omitBy_(object, fn) {
|
|
7
7
|
if (object === undefined || object === null) {
|
|
8
8
|
return object;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
const out = {};
|
|
11
|
+
for (const key of keys.strict(object)) {
|
|
11
12
|
if (!fn(object[key], key)) {
|
|
12
|
-
|
|
13
|
+
out[key] = object[key];
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
}
|
|
16
|
+
return out;
|
|
16
17
|
}
|
package/dist/es/object/omit.js
CHANGED
|
@@ -2,9 +2,9 @@ import { hasAtLeast } from '../array/has-at-least';
|
|
|
2
2
|
import { purry } from '../function/purry';
|
|
3
3
|
import { fromPairs } from './from-pairs';
|
|
4
4
|
export function omit(...args) {
|
|
5
|
-
return purry(
|
|
5
|
+
return purry(omit_, args);
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function omit_(data, propNames) {
|
|
8
8
|
if (!hasAtLeast(propNames, 1)) {
|
|
9
9
|
return { ...data };
|
|
10
10
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function pathOr(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(pathOr_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
let current =
|
|
5
|
+
function pathOr_(data, path, defaultValue) {
|
|
6
|
+
let current = data;
|
|
7
7
|
for (const prop of path) {
|
|
8
|
-
if (current
|
|
9
|
-
|
|
8
|
+
if (current === null || current === undefined) {
|
|
9
|
+
break;
|
|
10
10
|
}
|
|
11
11
|
current = current[prop];
|
|
12
12
|
}
|
|
13
|
-
return current;
|
|
13
|
+
return current ?? defaultValue;
|
|
14
14
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
import { keys } from './keys';
|
|
3
3
|
export function pickBy(...args) {
|
|
4
|
-
return purry(
|
|
4
|
+
return purry(pickBy_, args);
|
|
5
5
|
}
|
|
6
|
-
function
|
|
7
|
-
if (
|
|
6
|
+
function pickBy_(data, fn) {
|
|
7
|
+
if (data === null || data === undefined) {
|
|
8
8
|
return {};
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const out = {};
|
|
11
|
+
for (const key of keys.strict(data)) {
|
|
12
|
+
if (fn(data[key], key)) {
|
|
13
|
+
out[key] = data[key];
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
}
|
|
16
|
+
return out;
|
|
16
17
|
}
|
package/dist/es/object/pick.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function pick(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(pick_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
return names.reduce((acc, name) => {
|
|
5
|
+
function pick_(object, names) {
|
|
6
|
+
const out = {};
|
|
7
|
+
for (const name of names) {
|
|
10
8
|
if (name in object) {
|
|
11
|
-
|
|
9
|
+
out[name] = object[name];
|
|
12
10
|
}
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
}
|
|
12
|
+
return out;
|
|
15
13
|
}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function setPath(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(setPath_, args);
|
|
4
4
|
}
|
|
5
|
-
export function
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export function setPath_(data, path, value) {
|
|
6
|
+
const [current, ...rest] = path;
|
|
7
|
+
if (current === undefined) {
|
|
8
|
+
return value;
|
|
8
9
|
}
|
|
9
|
-
if (Array.isArray(
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return item;
|
|
15
|
-
});
|
|
10
|
+
if (Array.isArray(data)) {
|
|
11
|
+
return data.map((item, index) => index === current ? setPath_(item, rest, value) : item);
|
|
12
|
+
}
|
|
13
|
+
if (data === null || data === undefined) {
|
|
14
|
+
throw new Error('Path doesn\'t exist in object!');
|
|
16
15
|
}
|
|
17
16
|
return {
|
|
18
|
-
...
|
|
19
|
-
[
|
|
17
|
+
...data,
|
|
18
|
+
[current]: setPath_(data[current], rest, value),
|
|
20
19
|
};
|
|
21
20
|
}
|
package/dist/es/object/set.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { purry } from '../function/purry';
|
|
2
2
|
export function swapProps(...args) {
|
|
3
|
-
return purry(
|
|
3
|
+
return purry(swapProps_, args);
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function swapProps_(obj, key1, key2) {
|
|
6
6
|
const { [key1]: value1, [key2]: value2 } = obj;
|
|
7
7
|
return {
|
|
8
8
|
...obj,
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return
|
|
1
|
+
import { purry } from '../function/purry';
|
|
2
|
+
import { times } from '../function/times';
|
|
3
|
+
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
4
|
+
export function randomString(...args) {
|
|
5
|
+
return purry(randomStringImplementation, args);
|
|
6
|
+
}
|
|
7
|
+
function randomStringImplementation(length) {
|
|
8
|
+
return times(length, randomChar).join('');
|
|
9
|
+
}
|
|
10
|
+
function randomChar() {
|
|
11
|
+
return ALPHABET[Math.floor(Math.random() * ALPHABET.length)];
|
|
6
12
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export function stringToPath(path) {
|
|
2
|
-
return
|
|
2
|
+
return stringToPath_(path);
|
|
3
3
|
}
|
|
4
|
-
function
|
|
4
|
+
function stringToPath_(path) {
|
|
5
5
|
if (path.length === 0) {
|
|
6
6
|
return [];
|
|
7
7
|
}
|
|
8
|
-
const match =
|
|
9
|
-
if (match) {
|
|
8
|
+
const match = /^\[(.+?)\](.*)$/u.exec(path) ?? /^\.?([^.[\]]+)(.*)$/u.exec(path);
|
|
9
|
+
if (match !== null) {
|
|
10
10
|
const [, key, rest] = match;
|
|
11
|
-
return [key, ...
|
|
11
|
+
return [key, ...stringToPath_(rest)];
|
|
12
12
|
}
|
|
13
13
|
return [path];
|
|
14
14
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function binarySearchCutoffIndex(array, predicate) {
|
|
2
|
+
let lowIndex = 0;
|
|
3
|
+
let highIndex = array.length;
|
|
4
|
+
while (lowIndex < highIndex) {
|
|
5
|
+
const pivotIndex = (lowIndex + highIndex) >>> 1;
|
|
6
|
+
const pivot = array[pivotIndex];
|
|
7
|
+
if (predicate(pivot, pivotIndex)) {
|
|
8
|
+
lowIndex = pivotIndex + 1;
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
highIndex = pivotIndex;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return highIndex;
|
|
15
|
+
}
|
package/dist/es/utils/heap.js
CHANGED
|
@@ -28,7 +28,7 @@ export function purryOrderRulesWithArgument(func, inputArgs) {
|
|
|
28
28
|
function orderRuleComparer(primaryRule, secondaryRule, ...otherRules) {
|
|
29
29
|
const projector = typeof primaryRule === 'function' ? primaryRule : primaryRule[0];
|
|
30
30
|
const direction = typeof primaryRule === 'function' ? 'asc' : primaryRule[1];
|
|
31
|
-
const comparator = COMPARATORS
|
|
31
|
+
const { [direction]: comparator } = COMPARATORS;
|
|
32
32
|
const nextComparer = secondaryRule === undefined
|
|
33
33
|
? undefined
|
|
34
34
|
: orderRuleComparer(secondaryRule, ...otherRules);
|
|
@@ -2,7 +2,7 @@ import { swapInPlace } from './swap-in-place';
|
|
|
2
2
|
export function quickSelect(data, index, compareFn) {
|
|
3
3
|
return index < 0 || index >= data.length
|
|
4
4
|
? undefined
|
|
5
|
-
: quickSelectImplementation(
|
|
5
|
+
: quickSelectImplementation(data.slice(), 0, data.length - 1, index, compareFn);
|
|
6
6
|
}
|
|
7
7
|
function quickSelectImplementation(data, left, right, index, compareFn) {
|
|
8
8
|
if (left === right) {
|
|
@@ -19,7 +19,7 @@ function partition(data, left, right, compareFn) {
|
|
|
19
19
|
for (let j = left; j < right; j++) {
|
|
20
20
|
if (compareFn(data[j], pivot) < 0) {
|
|
21
21
|
swapInPlace(data, i, j);
|
|
22
|
-
i
|
|
22
|
+
i += 1;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
swapInPlace(data, i, right);
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
export function reduceLazy(array, lazy,
|
|
2
|
-
const
|
|
1
|
+
export function reduceLazy(array, lazy, isIndexed = false) {
|
|
2
|
+
const out = [];
|
|
3
3
|
for (let index = 0; index < array.length; index++) {
|
|
4
4
|
const item = array[index];
|
|
5
|
-
const result =
|
|
5
|
+
const result = isIndexed ? lazy(item, index, array) : lazy(item);
|
|
6
6
|
if (result.hasMany === true) {
|
|
7
|
-
|
|
7
|
+
out.push(...result.next);
|
|
8
8
|
}
|
|
9
9
|
else if (result.hasNext) {
|
|
10
|
-
|
|
10
|
+
out.push(result.next);
|
|
11
|
+
}
|
|
12
|
+
if (result.done) {
|
|
13
|
+
break;
|
|
11
14
|
}
|
|
12
15
|
}
|
|
13
|
-
return
|
|
16
|
+
return out;
|
|
14
17
|
}
|