function notNullish(v) { return v != null; } function assertTypes(value, name, types) { const receivedType = typeof value; const pass = types.includes(receivedType); if (!pass) throw new TypeError(`${name} value must be ${types.join(" or ")}, received "${receivedType}"`); } function isPrimitive(value) { return value === null || typeof value !== "function" && typeof value !== "object"; } function slash(path) { return path.replace(/\\/g, "/"); } function parseRegexp(input) { const m = input.match(/(\/?)(.+)\1([a-z]*)/i); if (!m) return /$^/; if (m[3] && !/^(?!.*?(.).*?\1)[gmixXsuUAJ]+$/.test(m[3])) return RegExp(input); return new RegExp(m[2], m[3]); } function toArray(array) { if (array === null || array === void 0) array = []; if (Array.isArray(array)) return array; return [array]; } function isObject(item) { return item != null && typeof item === "object" && !Array.isArray(item); } function isFinalObj(obj) { return obj === Object.prototype || obj === Function.prototype || obj === RegExp.prototype; } function getType(value) { return Object.prototype.toString.apply(value).slice(8, -1); } function collectOwnProperties(obj, collector) { const collect = typeof collector === "function" ? collector : (key) => collector.add(key); Object.getOwnPropertyNames(obj).forEach(collect); Object.getOwnPropertySymbols(obj).forEach(collect); } function getOwnProperties(obj) { const ownProps = /* @__PURE__ */ new Set(); if (isFinalObj(obj)) return []; collectOwnProperties(obj, ownProps); return Array.from(ownProps); } const defaultCloneOptions = { forceWritable: false }; function deepClone(val, options = defaultCloneOptions) { const seen = /* @__PURE__ */ new WeakMap(); return clone(val, seen, options); } function clone(val, seen, options = defaultCloneOptions) { let k, out; if (seen.has(val)) return seen.get(val); if (Array.isArray(val)) { out = Array(k = val.length); seen.set(val, out); while (k--) out[k] = clone(val[k], seen); return out; } if (Object.prototype.toString.call(val) === "[object Object]") { out = Object.create(Object.getPrototypeOf(val)); seen.set(val, out); const props = getOwnProperties(val); for (const k2 of props) { const descriptor = Object.getOwnPropertyDescriptor(val, k2); if (!descriptor) continue; const cloned = clone(val[k2], seen); if ("get" in descriptor) { Object.defineProperty(out, k2, { ...descriptor, get() { return cloned; } }); } else { Object.defineProperty(out, k2, { ...descriptor, writable: options.forceWritable ? true : descriptor.writable, value: cloned }); } } return out; } return val; } function noop() { } function objectAttr(source, path, defaultValue = void 0) { const paths = path.replace(/\[(\d+)\]/g, ".$1").split("."); let result = source; for (const p of paths) { result = Object(result)[p]; if (result === void 0) return defaultValue; } return result; } function createDefer() { let resolve = null; let reject = null; const p = new Promise((_resolve, _reject) => { resolve = _resolve; reject = _reject; }); p.resolve = resolve; p.reject = reject; return p; } function getCallLastIndex(code) { let charIndex = -1; let inString = null; let startedBracers = 0; let endedBracers = 0; let beforeChar = null; while (charIndex <= code.length) { beforeChar = code[charIndex]; charIndex++; const char = code[charIndex]; const isCharString = char === '"' || char === "'" || char === "`"; if (isCharString && beforeChar !== "\\") { if (inString === char) inString = null; else if (!inString) inString = char; } if (!inString) { if (char === "(") startedBracers++; if (char === ")") endedBracers++; } if (startedBracers && endedBracers && startedBracers === endedBracers) return charIndex; } return null; } export { assertTypes, clone, createDefer, deepClone, getCallLastIndex, getOwnProperties, getType, isObject, isPrimitive, noop, notNullish, objectAttr, parseRegexp, slash, toArray };