Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
150 lines
3.6 KiB
Plaintext
150 lines
3.6 KiB
Plaintext
// src/common/functions.ts
|
|
var capitalize = (s) => {
|
|
return s ? s.charAt(0).toUpperCase() + s.slice(1).toLowerCase() : "";
|
|
};
|
|
function callAllHandlers(...fns) {
|
|
return function func(event) {
|
|
fns.some((fn) => {
|
|
fn == null ? void 0 : fn(event);
|
|
return event == null ? void 0 : event.defaultPrevented;
|
|
});
|
|
};
|
|
}
|
|
function callAll(...fns) {
|
|
return function mergedFn(arg) {
|
|
fns.forEach((fn) => {
|
|
fn == null ? void 0 : fn(arg);
|
|
});
|
|
};
|
|
}
|
|
function extractProperty(key, defaultValue, ...objs) {
|
|
let result = defaultValue;
|
|
for (const obj of objs) {
|
|
if (obj && key in obj && !!obj[key]) {
|
|
result = obj[key];
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
function getUniqueID(prefix) {
|
|
return `${prefix}-${Math.floor(Math.random() * 1e6)}`;
|
|
}
|
|
function removeEvents(input) {
|
|
for (const key in input) {
|
|
if (key.startsWith("on")) {
|
|
delete input[key];
|
|
}
|
|
}
|
|
return input;
|
|
}
|
|
function objectToDeps(obj) {
|
|
if (!obj || typeof obj !== "object") {
|
|
return "";
|
|
}
|
|
try {
|
|
return JSON.stringify(obj);
|
|
} catch {
|
|
return "";
|
|
}
|
|
}
|
|
function debounce(func, waitMilliseconds = 0) {
|
|
let timeout;
|
|
return function(...args) {
|
|
const later = () => {
|
|
timeout = void 0;
|
|
func.apply(this, args);
|
|
};
|
|
if (timeout !== void 0) {
|
|
clearTimeout(timeout);
|
|
}
|
|
timeout = setTimeout(later, waitMilliseconds);
|
|
};
|
|
}
|
|
function uniqBy(arr, iteratee) {
|
|
if (typeof iteratee === "string") {
|
|
iteratee = (item) => item[iteratee];
|
|
}
|
|
return arr.filter((x, i, self) => i === self.findIndex((y) => iteratee(x) === iteratee(y)));
|
|
}
|
|
var omit = (obj, keys) => {
|
|
const res = Object.assign({}, obj);
|
|
keys.forEach((key) => {
|
|
delete res[key];
|
|
});
|
|
return res;
|
|
};
|
|
var kebabCase = (s) => {
|
|
return s.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
|
|
};
|
|
var mapKeys = (obj, iteratee) => {
|
|
return Object.fromEntries(
|
|
Object.entries(obj).map(([key, value]) => [iteratee(value, key), value])
|
|
);
|
|
};
|
|
var get = (object, path, defaultValue) => {
|
|
const keys = Array.isArray(path) ? path : path.replace(/\[(\d+)\]/g, ".$1").split(".");
|
|
let res = object;
|
|
for (const key of keys) {
|
|
res = res == null ? void 0 : res[key];
|
|
if (res === void 0) {
|
|
return defaultValue;
|
|
}
|
|
}
|
|
return res;
|
|
};
|
|
var intersectionBy = (...args) => {
|
|
if (args.length < 2) {
|
|
throw new Error("intersectionBy requires at least two arrays and an iteratee");
|
|
}
|
|
const iteratee = args[args.length - 1];
|
|
const arrays = args.slice(0, -1);
|
|
if (arrays.length === 0) {
|
|
return [];
|
|
}
|
|
const getIterateeValue = (item) => {
|
|
if (typeof iteratee === "function") {
|
|
return iteratee(item);
|
|
} else if (typeof iteratee === "string") {
|
|
return item[iteratee];
|
|
} else {
|
|
throw new Error("Iteratee must be a function or a string key of the array elements");
|
|
}
|
|
};
|
|
const [first, ...rest] = arrays;
|
|
const transformedFirst = first.map((item) => getIterateeValue(item));
|
|
const transformedSets = rest.map(
|
|
(array) => new Set(array.map((item) => getIterateeValue(item)))
|
|
);
|
|
const res = [];
|
|
const seen = /* @__PURE__ */ new Set();
|
|
for (let i = 0; i < first.length; i++) {
|
|
const item = first[i];
|
|
const transformed = transformedFirst[i];
|
|
if (seen.has(transformed)) {
|
|
continue;
|
|
}
|
|
const existsInAll = transformedSets.every((set) => set.has(transformed));
|
|
if (existsInAll) {
|
|
res.push(item);
|
|
seen.add(transformed);
|
|
}
|
|
}
|
|
return res;
|
|
};
|
|
export {
|
|
callAll,
|
|
callAllHandlers,
|
|
capitalize,
|
|
debounce,
|
|
extractProperty,
|
|
get,
|
|
getUniqueID,
|
|
intersectionBy,
|
|
kebabCase,
|
|
mapKeys,
|
|
objectToDeps,
|
|
omit,
|
|
removeEvents,
|
|
uniqBy
|
|
};
|