UNPKG

fraci

Version:

Fractional indexing that's robust, performant, and secure, with first-class support for Drizzle ORM and Prisma ORM.

156 lines (150 loc) 3.83 kB
"use strict"; var A = Object.defineProperty; var O = Object.getOwnPropertyDescriptor; var q = Object.getOwnPropertyNames; var w = Object.prototype.hasOwnProperty; var L = (i, r) => { for (var e in r) A(i, e, { get: r[e], enumerable: !0 }); }, h = (i, r, e, o) => { if (r && typeof r == "object" || typeof r == "function") for (let n of q(r)) !w.call(i, n) && n !== e && A(i, n, { get: () => r[n], enumerable: !(o = O(r, n)) || o.enumerable }); return i; }; var R = (i) => h(A({}, "__esModule", { value: !0 }), i); // src/drizzle.ts var v = {}; L(v, { defineDrizzleFraci: () => Q, drizzleFraci: () => N, drizzleFraciSync: () => T }); module.exports = R(v); // src/drizzle/runtime-sync.ts var F = require("drizzle-orm"); // src/drizzle/common.ts var l = require("drizzle-orm"); function s(i, r) { return r != null ? (0, l.eq)(i, r) : r === null ? ( // Use `isNull` if value is `null` (0, l.isNull)(i) ) : ( // SECURITY: Always return `FALSE` if value is `undefined`, meaning it's missing l.sql`FALSE` ); } var C = [ [ l.asc, l.gte, (i, r) => [i, r] ], [ l.desc, l.lte, (i, r) => [r, i] ] ]; // src/drizzle/runtime-sync.ts function G(i, { group: r, cursor: e, column: o, table: n }, g, p, y) { let [D, m, d] = C[Number(y)], z = { v: F.sql`${o}` }, t = Object.entries(r).map( ([a, c]) => s(c, g[a]) ); if (!p) { let a = i.select(z).from(n).where((0, F.and)(...t)).limit(1).orderBy(D(o)).all(); return d(null, a[0]?.v ?? null); } let I = (0, F.and)( ...t, ...Object.entries(e).map( ([a, c]) => s(c, p[a]) // Use equity to safely handle null/undefined ) ), x = i.select(z).from(n).where(I).limit(1), u = i.select(z).from(n).where( (0, F.and)( ...t, // Stay within the same group m(o, x) // Use gte/lte based on direction ) ).limit(2).orderBy(D(o)).all(); return u.length < 1 ? void 0 : d(u[0].v, u[1]?.v ?? null); } function b(i, r, e, o) { return G(i, r, e, o, !1); } function S(i, r, e, o) { return G(i, r, e, o, !0); } function T(i, r) { return { ...r.fraci, indicesForAfter: (e, o) => b(i, r, e, o), indicesForBefore: (e, o) => S(i, r, e, o), indicesForFirst: (e) => b(i, r, e, null), indicesForLast: (e) => S(i, r, e, null) }; } // src/drizzle/runtime.ts var f = require("drizzle-orm"); async function P(i, { group: r, cursor: e, column: o, table: n }, g, p, y) { let [D, m, d] = C[Number(y)], z = { v: f.sql`${o}` }, t = Object.entries(r).map( ([a, c]) => s(c, g[a]) ); if (!p) { let a = await i.select(z).from(n).where((0, f.and)(...t)).limit(1).orderBy(D(o)); return d(null, a[0]?.v ?? null); } let I = (0, f.and)( ...t, ...Object.entries(e).map( ([a, c]) => s(c, p[a]) // Use equity to safely handle null/undefined ) ), x = i.select(z).from(n).where(I).limit(1), u = await i.select(z).from(n).where( (0, f.and)( ...t, // Stay within the same group m(o, x) // Use gte/lte based on direction ) ).limit(2).orderBy(D(o)); return u.length < 1 ? void 0 : d(u[0].v, u[1]?.v ?? null); } function j(i, r, e, o) { return P(i, r, e, o, !1); } function B(i, r, e, o) { return P(i, r, e, o, !0); } function N(i, r) { return { ...r.fraci, indicesForAfter: (e, o) => j(i, r, e, o), indicesForBefore: (e, o) => B(i, r, e, o), indicesForFirst: (e) => j(i, r, e, null), indicesForLast: (e) => B(i, r, e, null) }; } // src/drizzle/schema.ts function Q(i, r, e, o, n) { return { fraci: i, table: r, column: e, group: o, cursor: n }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { defineDrizzleFraci, drizzleFraci, drizzleFraciSync }); //# sourceMappingURL=drizzle.cjs.map