UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

53 lines (52 loc) 1.32 kB
const objectIds = /* @__PURE__ */ new WeakMap(); let nextObjectId = 1; function getObjectId(obj) { if (objectIds.has(obj)) { return objectIds.get(obj); } const id = nextObjectId++; objectIds.set(obj, id); return id; } const ascComparator = (a, b) => { if (a == null && b == null) return 0; if (a == null) return -1; if (b == null) return 1; if (typeof a === `string` && typeof b === `string`) { return a.localeCompare(b); } if (Array.isArray(a) && Array.isArray(b)) { for (let i = 0; i < Math.min(a.length, b.length); i++) { const result = ascComparator(a[i], b[i]); if (result !== 0) { return result; } } return a.length - b.length; } if (a instanceof Date && b instanceof Date) { return a.getTime() - b.getTime(); } const aIsObject = typeof a === `object`; const bIsObject = typeof b === `object`; if (aIsObject || bIsObject) { if (aIsObject && bIsObject) { const aId = getObjectId(a); const bId = getObjectId(b); return aId - bId; } if (aIsObject) return 1; if (bIsObject) return -1; } if (a < b) return -1; if (a > b) return 1; return 0; }; const descComparator = (a, b) => { return ascComparator(b, a); }; export { ascComparator, descComparator }; //# sourceMappingURL=comparison.js.map