@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
63 lines (62 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.allElementsAreEqual = exports.uniqueStrings = exports.filterUniqueItemWithCondition = exports.sortedDaysOfWeek = exports.filterUniqueItems = exports.filterAsync = void 0;
function mapAsync(array, callbackfn) {
return Promise.all(array.map(callbackfn));
}
async function filterAsync(array, callbackfn) {
const filterMap = await mapAsync(array, callbackfn);
return array.filter((value, index) => filterMap[index]);
}
exports.filterAsync = filterAsync;
function filterUniqueItems(arr) {
return [...new Set(arr)];
}
exports.filterUniqueItems = filterUniqueItems;
const sortedDaysOfWeek = (daysOfWeek) => daysOfWeek.sort((a, b) => {
const dayOrder = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
return dayOrder.indexOf(a) - dayOrder.indexOf(b);
});
exports.sortedDaysOfWeek = sortedDaysOfWeek;
function filterUniqueItemWithCondition(array, uniqueField, priorityCondition) {
const uniqueMap = new Map();
array.forEach((item) => {
const fieldValue = item[uniqueField];
const existingItem = uniqueMap.get(fieldValue);
if (!existingItem) {
uniqueMap.set(fieldValue, item);
}
else if (existingItem[priorityCondition.field] !== priorityCondition.value && item[priorityCondition.field] === priorityCondition.value) {
uniqueMap.set(fieldValue, item);
}
});
return Array.from(uniqueMap.values());
}
exports.filterUniqueItemWithCondition = filterUniqueItemWithCondition;
/**
* Create array of unique strings based on a given array of strings.
* @example
* const array = ["1", "2", "1"];
* console.log(uniqueStrings(array)); // Should log `["1", "2"]`
* @param array - Input array
* @returns {string[]}
*/
function uniqueStrings(array) {
return [...new Set(array)];
}
exports.uniqueStrings = uniqueStrings;
/**
* Check whether all elements in a single array are the same.
*
* @example
* const array1 = ["1", "1", "1"];
* const array2 = ["1", "2", "1"];
* console.log(allElementsAreEqual(array1)); // Should log `true`
* console.log(allElementsAreEqual(array2)); // Should log `false`
* @param array - Input array
* @returns {boolean}
*/
function allElementsAreEqual(array) {
return array.every((element) => element === array[0]);
}
exports.allElementsAreEqual = allElementsAreEqual;