package.dist.index.js Maven / Gradle / Ivy
The newest version!
'use strict';
// src/array.ts
function toArray(v) {
if (!v) return [];
return Array.isArray(v) ? v : [v];
}
var fromLength = (length) => Array.from(Array(length).keys());
var first = (v) => v[0];
var last = (v) => v[v.length - 1];
var isEmpty = (v) => v.length === 0;
var has = (v, t) => v.indexOf(t) !== -1;
var add = (v, ...items) => v.concat(items);
var remove = (v, ...items) => v.filter((t) => !items.includes(t));
var removeAt = (v, i) => v.filter((_, idx) => idx !== i);
var insertAt = (v, i, ...items) => [...v.slice(0, i), ...items, ...v.slice(i)];
var uniq = (v) => Array.from(new Set(v));
var addOrRemove = (v, item) => {
if (has(v, item)) return remove(v, item);
return add(v, item);
};
function clear(v) {
while (v.length > 0) v.pop();
return v;
}
function nextIndex(v, idx, opts = {}) {
const { step = 1, loop = true } = opts;
const next2 = idx + step;
const len = v.length;
const last2 = len - 1;
if (idx === -1) return step > 0 ? 0 : last2;
if (next2 < 0) return loop ? last2 : 0;
if (next2 >= len) return loop ? 0 : idx > len ? len : idx;
return next2;
}
function next(v, idx, opts = {}) {
return v[nextIndex(v, idx, opts)];
}
function prevIndex(v, idx, opts = {}) {
const { step = 1, loop = true } = opts;
return nextIndex(v, idx, { step: -step, loop });
}
function prev(v, index, opts = {}) {
return v[prevIndex(v, index, opts)];
}
var chunk = (v, size) => {
const res = [];
return v.reduce((rows, value, index) => {
if (index % size === 0) rows.push([value]);
else last(rows)?.push(value);
return rows;
}, res);
};
// src/equal.ts
var isArrayLike = (value) => value?.constructor.name === "Array";
var isArrayEqual = (a, b) => {
if (a.length !== b.length) return false;
for (let i = 0; i < a.length; i++) {
if (!isEqual(a[i], b[i])) return false;
}
return true;
};
var isEqual = (a, b) => {
if (Object.is(a, b)) return true;
if (a == null && b != null || a != null && b == null) return false;
if (typeof a?.isEqual === "function" && typeof b?.isEqual === "function") {
return a.isEqual(b);
}
if (typeof a === "function" && typeof b === "function") {
return a.toString() === b.toString();
}
if (isArrayLike(a) && isArrayLike(b)) {
return isArrayEqual(Array.from(a), Array.from(b));
}
if (!(typeof a === "object") || !(typeof b === "object")) return false;
const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));
const length = keys.length;
for (let i = 0; i < length; i++) {
const hasKey = Reflect.has(a, keys[i]);
if (!hasKey) return false;
}
for (let i = 0; i < length; i++) {
const key = keys[i];
if (!isEqual(a[key], b[key])) return false;
}
return true;
};
// src/functions.ts
var runIfFn = (v, ...a) => {
const res = typeof v === "function" ? v(...a) : v;
return res ?? void 0;
};
var cast = (v) => v;
var noop = () => {
};
var callAll = (...fns) => (...a) => {
fns.forEach(function(fn) {
fn?.(...a);
});
};
var uuid = /* @__PURE__ */ (() => {
let id = 0;
return () => {
id++;
return id.toString(36);
};
})();
function match(key, record, ...args) {
if (key in record) {
const fn = record[key];
return typeof fn === "function" ? fn(...args) : fn;
}
const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);
Error.captureStackTrace?.(error, match);
throw error;
}
var tryCatch = (fn, fallback) => {
try {
return fn();
} catch (error) {
if (error instanceof Error) {
Error.captureStackTrace?.(error, tryCatch);
}
return fallback?.();
}
};
// src/guard.ts
var isDev = () => process.env.NODE_ENV !== "production";
var isArray = (v) => Array.isArray(v);
var isBoolean = (v) => v === true || v === false;
var isObjectLike = (v) => v != null && typeof v === "object";
var isObject = (v) => isObjectLike(v) && !isArray(v);
var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
var isString = (v) => typeof v === "string";
var isFunction = (v) => typeof v === "function";
var isNull = (v) => v == null;
var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
var baseGetTag = (v) => Object.prototype.toString.call(v);
var fnToString = Function.prototype.toString;
var objectCtorString = fnToString.call(Object);
var isPlainObject = (v) => {
if (!isObjectLike(v) || baseGetTag(v) != "[object Object]") return false;
const proto = Object.getPrototypeOf(v);
if (proto === null) return true;
const Ctor = hasProp(proto, "constructor") && proto.constructor;
return typeof Ctor == "function" && Ctor instanceof Ctor && fnToString.call(Ctor) == objectCtorString;
};
// src/split-props.ts
function splitProps(props, keys) {
const rest = {};
const result = {};
const keySet = new Set(keys);
for (const key in props) {
if (keySet.has(key)) {
result[key] = props[key];
} else {
rest[key] = props[key];
}
}
return [result, rest];
}
var createSplitProps = (keys) => {
return function split(props) {
return splitProps(props, keys);
};
};
// src/object.ts
function compact(obj) {
if (!isPlainObject2(obj) || obj === void 0) {
return obj;
}
const keys = Reflect.ownKeys(obj).filter((key) => typeof key === "string");
const filtered = {};
for (const key of keys) {
const value = obj[key];
if (value !== void 0) {
filtered[key] = compact(value);
}
}
return filtered;
}
function json(value) {
return JSON.parse(JSON.stringify(value));
}
var isPlainObject2 = (value) => {
return value && typeof value === "object" && value.constructor === Object;
};
function pick(obj, keys) {
const filtered = {};
for (const key of keys) {
const value = obj[key];
if (value !== void 0) {
filtered[key] = value;
}
}
return filtered;
}
function omit(obj, keys) {
return createSplitProps(keys)(obj)[1];
}
// src/warning.ts
function warn(...a) {
const m = a.length === 1 ? a[0] : a[1];
const c = a.length === 2 ? a[0] : true;
if (c && process.env.NODE_ENV !== "production") {
console.warn(m);
}
}
function invariant(...a) {
const m = a.length === 1 ? a[0] : a[1];
const c = a.length === 2 ? a[0] : true;
if (c && process.env.NODE_ENV !== "production") {
throw new Error(m);
}
}
exports.add = add;
exports.addOrRemove = addOrRemove;
exports.callAll = callAll;
exports.cast = cast;
exports.chunk = chunk;
exports.clear = clear;
exports.compact = compact;
exports.createSplitProps = createSplitProps;
exports.first = first;
exports.fromLength = fromLength;
exports.has = has;
exports.hasProp = hasProp;
exports.insertAt = insertAt;
exports.invariant = invariant;
exports.isArray = isArray;
exports.isBoolean = isBoolean;
exports.isDev = isDev;
exports.isEmpty = isEmpty;
exports.isEqual = isEqual;
exports.isFunction = isFunction;
exports.isNull = isNull;
exports.isNumber = isNumber;
exports.isObject = isObject;
exports.isObjectLike = isObjectLike;
exports.isPlainObject = isPlainObject;
exports.isString = isString;
exports.json = json;
exports.last = last;
exports.match = match;
exports.next = next;
exports.nextIndex = nextIndex;
exports.noop = noop;
exports.omit = omit;
exports.pick = pick;
exports.prev = prev;
exports.prevIndex = prevIndex;
exports.remove = remove;
exports.removeAt = removeAt;
exports.runIfFn = runIfFn;
exports.splitProps = splitProps;
exports.toArray = toArray;
exports.tryCatch = tryCatch;
exports.uniq = uniq;
exports.uuid = uuid;
exports.warn = warn;
© 2015 - 2025 Weber Informatics LLC | Privacy Policy