chkutils
Version:
package for type checking and various utilities
151 lines (150 loc) • 5.13 kB
JavaScript
const S = (e) => e === !0, d = (e) => e === !1, w = (e) => typeof e == "function", _ = (e) => e != null, T = (e) => _(e) && // Проверяем, что значение определено (не `undefined` и не `null`)
typeof e.then == "function" && // Проверяем наличие метода `then`
typeof e.catch == "function", Z = (e) => e == null, z = (e) => e !== null && typeof e == "object", $ = Array.isArray, b = (e) => g.toTypeString(e) === "[object Date]", D = (e) => g.toTypeString(e) === "[object Map]", E = (e) => g.toTypeString(e) === "[object Set]", I = (e) => typeof e == "symbol", L = (e) => e === null, R = (e) => Array.isArray(e) ? e.length === 0 : !1, j = (e) => typeof e != "object" || e === null || Array.isArray(e) ? !1 : Object.keys(e).length === 0, U = {
isDef: _,
isPromise: T,
isTrue: S,
isFalse: d,
isArray: $,
isUnDef: Z,
isObject: z,
isFunction: w,
isDate: b,
isMap: D,
isSet: E,
isSymbol: I,
isNull: L,
isEmptyArray: R,
isEmptyObject: j
}, a = (e, r = /* @__PURE__ */ new WeakMap()) => {
if (e === null || typeof e != "object")
return e;
if (r.has(e))
return r.get(e);
if (Array.isArray(e)) {
const t = [];
return r.set(e, t), t.push(...e.map((s) => a(s, r))), t;
}
if (e instanceof Date)
return new Date(e);
if (e instanceof RegExp)
return new RegExp(e.source, e.flags);
if (e instanceof Promise)
return e;
if (e instanceof Map) {
const t = /* @__PURE__ */ new Map();
return r.set(e, t), e.forEach((s, c) => {
t.set(c, a(s, r));
}), t;
}
if (e instanceof Set) {
const t = /* @__PURE__ */ new Set();
return r.set(e, t), e.forEach((s) => {
t.add(a(s, r));
}), t;
}
const n = {};
r.set(e, n);
for (const t in e)
e.hasOwnProperty(t) && (n[t] = a(e[t], r));
return n;
}, V = {
cloneDeep: a
}, M = (e, r = { text: "Нет данных" }) => e ?? r, h = Object.prototype.toString, P = (e) => h.call(e), g = {
returnDefaultField: M,
toTypeString: P
}, x = (e, r, n = !1) => {
let t = null;
return (...s) => {
const c = () => {
t = null, n || e(...s);
}, i = n && !t;
t && clearTimeout(t), t = setTimeout(c, r), i && e(...s);
};
}, F = (e, r) => {
let n = null;
return {
/**
* Запускает периодический опрос.
* Если опрос уже запущен, ничего не делает.
*/
start: () => {
n || (n = setInterval(() => e(), r));
},
/**
* Останавливает периодический опрос.
* Если опрос не запущен, ничего не делает.
*/
stop: () => {
n && (clearInterval(n), n = null);
}
};
}, W = {
debounce: x,
polling: F
};
class N {
}
const q = {
Checks: N
}, y = {
recursive: !1,
recursiveInArray: !1,
keepTypesOnRecursion: []
}, m = (e = y) => (e.recursive == null ? e = y : e.recursiveInArray == null && (e.recursiveInArray = !1), e), l = (e) => e != null && typeof e == "object" && !Array.isArray(e), p = (e) => e != null && Array.isArray(e), A = (e, r) => (r || []).some((n) => e instanceof n);
function k(e = "") {
return e ? String(e).replace(/^[^A-Za-z0-9]*|[^A-Za-z0-9]*$/g, "").replace(/([a-z])([A-Z])/g, (r, n, t) => n + "_" + t.toLowerCase()).replace(/([A-Z]+)([A-Z][a-z])/g, (r, n, t) => n.toLowerCase() + "_" + t.toLowerCase()).replace(/([a-zA-Z])(\d)/g, (r, n, t) => n.toLowerCase() + "_" + t).replace(/(\d)([a-zA-Z])/g, (r, n, t) => n + "_" + t.toLowerCase()).replace(/[^A-Za-z0-9]+|_+/g, "_").toLowerCase() : "";
}
function f(e, r = y) {
if (!l(e)) return null;
r = m(r);
const n = {};
return Object.keys(e).forEach((t) => {
let s = e[t];
const c = k(t);
r.recursive && (l(s) ? A(s, r.keepTypesOnRecursion) || (s = f(s, r)) : r.recursiveInArray && p(s) && (s = [...s].map((i) => {
let o = i;
return l(i) ? A(o, r.keepTypesOnRecursion) || (o = f(i, r)) : p(i) && (o = f(
{
key: i
},
r
).key), o;
}))), n[c] = s;
}), n;
}
function C(e = "") {
return e ? String(e).replace(/^[^A-Za-z0-9]*|[^A-Za-z0-9]*$/g, "").replace(/[^A-Za-z0-9]+/g, "$").replace(/([a-z])([A-Z])/g, (r, n, t) => `${n}$${t}`).replace(/([A-Z]+)([A-Z][a-z])/g, (r, n, t) => `${n}$${t}`).replace(/(\d)([A-Za-z])/g, (r, n, t) => `${n}$${t}`).toLowerCase().replace(/(\$)(\w)/g, (r, n, t) => t.toUpperCase()) : "";
}
function u(e, r = y) {
if (!l(e)) return null;
r = m(r);
const n = {};
return Object.keys(e).forEach((t) => {
let s = e[t];
const c = C(t);
r.recursive && (l(s) ? A(s, r.keepTypesOnRecursion) || (s = u(s, r)) : r.recursiveInArray && p(s) && (s = [...s].map((i) => {
let o = i;
return l(i) ? A(o, r.keepTypesOnRecursion) || (o = u(i, r)) : p(i) && (o = u(
{
key: i
},
r
).key), o;
}))), n[c] = s;
}), n;
}
const B = {
toSnakeCaseCollection: f,
toSnakeCasePrimitive: k,
toCamelCasePrimitive: C,
toCamelCaseCollection: u
};
export {
q as _c,
U as _ch,
g as _h,
W as _m,
B as _p,
V as _t
};