UNPKG

chkutils

Version:

package for type checking and various utilities

151 lines (150 loc) 5.13 kB
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 };