|
@@ -1,8 +1,24 @@
|
|
"use strict";
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
-exports.BigNumOps = exports.chainPromises = void 0;
|
|
|
|
|
|
+exports.Arr = exports.BigNumOps = exports.chainPromises = void 0;
|
|
const chainPromises = (lazyPromises, reducer = (lp1, lp2) => (p) => lp1(p).then(lp2), initialValue) => lazyPromises.reduce(reducer, p => Promise.resolve(p))(initialValue);
|
|
const chainPromises = (lazyPromises, reducer = (lp1, lp2) => (p) => lp1(p).then(lp2), initialValue) => lazyPromises.reduce(reducer, p => Promise.resolve(p))(initialValue);
|
|
exports.chainPromises = chainPromises;
|
|
exports.chainPromises = chainPromises;
|
|
|
|
+const shuffleArray = (arr) => {
|
|
|
|
+ const res = arr.slice(0);
|
|
|
|
+ for (let i = arr.length - 1; i > 0; i--) {
|
|
|
|
+ const j = Math.floor(Math.random() * (i + 1));
|
|
|
|
+ [res[i], res[j]] = [res[j], res[i]];
|
|
|
|
+ }
|
|
|
|
+ return res;
|
|
|
|
+};
|
|
|
|
+const chunkArray = (arr, size) => {
|
|
|
|
+ const noOfChunks = Math.ceil(size && arr.length / size);
|
|
|
|
+ const res = Array(noOfChunks);
|
|
|
|
+ for (let [i, j] = [0, 0]; i < noOfChunks; i++) {
|
|
|
|
+ res[i] = arr.slice(j, j += size);
|
|
|
|
+ }
|
|
|
|
+ return res;
|
|
|
|
+};
|
|
const splitBigNumAt = (num, at) => num.replace(RegExp(String.raw `^([+-]?)(\d+)(\d{${at}})$`), '$1$2,$1$3')
|
|
const splitBigNumAt = (num, at) => num.replace(RegExp(String.raw `^([+-]?)(\d+)(\d{${at}})$`), '$1$2,$1$3')
|
|
.replace(/^([^,]*)$/, '0,$1').split(',')
|
|
.replace(/^([^,]*)$/, '0,$1').split(',')
|
|
.map(Number);
|
|
.map(Number);
|
|
@@ -49,3 +65,4 @@ exports.BigNumOps = {
|
|
lShift: bigNumLShift,
|
|
lShift: bigNumLShift,
|
|
parse: parseBigNum,
|
|
parse: parseBigNum,
|
|
};
|
|
};
|
|
|
|
+exports.Arr = { chunk: chunkArray, shuffle: shuffleArray };
|