@xlink-network/xlink-sdk
Version:
104 lines (103 loc) • 2.33 kB
JavaScript
// src/utils/arrayHelpers.ts
function hasAny(ary) {
return ary.length > 0;
}
function hasLength(input, length) {
return input.length === length;
}
function first(ary) {
return ary[0];
}
function last(ary) {
return ary[ary.length - 1];
}
var _concat = [].concat;
function concat(...inputArrays) {
return _concat.apply([], inputArrays);
}
var _reduce = [].reduce;
function reduce(fn, initialValue, inputArray) {
return _reduce.call(inputArray, fn, initialValue);
}
function range(start, end) {
return Array.from({ length: end - start }, (_, i) => i + start);
}
function reverse(ary) {
const newAry = [...ary];
newAry.reverse();
return newAry;
}
function uniq(ary, iteratee = (item) => item) {
const seen = /* @__PURE__ */ new Set();
return ary.filter((item) => {
const key = iteratee(item);
if (seen.has(key)) {
return false;
}
seen.add(key);
return true;
});
}
function oneOf(...coll) {
return (input) => coll.includes(input);
}
function sortBy(iteratee, ary) {
const _iteratee = Array.isArray(iteratee) ? iteratee : [iteratee];
return ary.map((value, index, ary2) => ({
value,
index,
criteria: _iteratee.map((f) => f(value, index, ary2))
})).sort((left, right) => compareMultiple(left, right)).map((v) => v.value);
}
function compareMultiple(obj, oth) {
const objCriteria = obj.criteria;
const othCriteria = oth.criteria;
const length = objCriteria.length;
let index = -1;
while (++index < length) {
const objCri = objCriteria[index];
const othCri = othCriteria[index];
let result = 0;
if (typeof objCri === typeof othCri) {
result = Number(objCri - othCri);
} else {
result = Number(objCri) - Number(othCri);
}
if (result) return result;
}
return obj.index - oth.index;
}
var mapFind = (fn, input) => {
for (const item of input) {
const result = fn(item);
if (result != null) {
return result;
}
}
return void 0;
};
var mapFindP = async (fn, input) => {
for (const item of input) {
const result = await fn(item);
if (result != null) {
return result;
}
}
return void 0;
};
export {
hasAny,
hasLength,
first,
last,
concat,
reduce,
range,
reverse,
uniq,
oneOf,
sortBy,
mapFind,
mapFindP
};
//# sourceMappingURL=chunk-PRLWYSC3.mjs.map