@better-auth-kit/convex
Version:
Convex Database Adapter for Better-Auth.
4 lines (2 loc) • 5.94 kB
JavaScript
import{v as D}from"convex/values";function W(w,j){let C=A(w);return Y(C,{value:0},j)}function A(w){let j=[],C="",G=!1;for(let O=0;O<w.length;O++){let K=w[O];if(K==='"'&&w[O-1]!=="\\"){if(G)j.push({type:"string",value:C}),C="";G=!G;continue}if(G){C+=K;continue}if(K==="["||K==="]"){if(C){if(!Number.isNaN(Number(C.trim())))j.push({type:"number",value:C.trim()});else j.push({type:"function",value:C.trim()});C=""}j.push({type:"bracket",value:K})}else if(K==="("||K===")"){if(C){if(!Number.isNaN(Number(C.trim())))j.push({type:"number",value:C.trim()});else j.push({type:"function",value:C.trim()});C=""}j.push({type:"parenthesis",value:K})}else if(K===","){if(C){if(!Number.isNaN(Number(C.trim())))j.push({type:"number",value:C.trim()});else j.push({type:"function",value:C.trim()});C=""}j.push({type:"comma",value:","})}else if(K===" "){if(C){if(!Number.isNaN(Number(C.trim())))j.push({type:"number",value:C.trim()});else j.push({type:"function",value:C.trim()});C=""}}else C+=K}if(C)if(!Number.isNaN(Number(C.trim())))j.push({type:"number",value:C.trim()});else j.push({type:"function",value:C.trim()});return j}function T(w,j,C){let G=[];j.value++;while(j.value<w.length&&w[j.value].type!=="bracket"){if(w[j.value].type==="comma"){j.value++;continue}G.push(Y(w,j,C))}if(w[j.value]?.value!=="]")throw new Error("Expected closing bracket for array");return j.value++,G}function Y(w,j,C){if(j.value>=w.length)throw new Error("Unexpected end of input");let G=w[j.value];if(j.value++,G.type==="bracket"&&G.value==="[")return j.value--,T(w,j,C);if(G.type==="function"){if(G.value.startsWith("q.")){let O=G.value.slice(2);if(w[j.value]?.type!=="parenthesis"||w[j.value]?.value!=="(")throw new Error("Expected opening parenthesis");j.value++;let K=[];while(j.value<w.length&&w[j.value].type!=="parenthesis"){if(w[j.value].type==="comma"){j.value++;continue}let V=Y(w,j,C);if(O==="eq"&&K.length===1&&K[0]?.inner?.$field==="_id"&&typeof V==="string")K.push(V);else K.push(V)}if(w[j.value]?.value!==")")throw new Error("Expected closing parenthesis");return j.value++,C[O](...K)}}else if(G.type==="string")return G.value;else if(G.type==="number")return Number(G.value);throw new Error(`Unexpected token: ${JSON.stringify(G)}`)}function L(w){switch(w){case"id":return"_id";case"createdAt":return"_creationTime";default:return w}}var f={eq:(w,j)=>`q.eq(q.field("${L(w)}"), ${JSON.stringify(j)})`,add:(w,j)=>`q.add(q.field("${L(w)}"), ${JSON.stringify(j)})`,sub:(w,j)=>`q.sub(q.field("${L(w)}"), ${JSON.stringify(j)})`,mul:(w,j)=>`q.mul(q.field("${L(w)}"), ${JSON.stringify(j)})`,div:(w,j)=>`q.div(q.field("${L(w)}"), ${JSON.stringify(j)})`,mod:(w,j)=>`q.mod(q.field("${L(w)}"), ${JSON.stringify(j)})`,neg:(w,j)=>`q.neg(q.field("${L(w)}"), ${JSON.stringify(j)})`,gt:(w,j)=>`q.gt(q.field("${L(w)}"), ${JSON.stringify(j)})`,lt:(w,j)=>`q.lt(q.field("${L(w)}"), ${JSON.stringify(j)})`,gte:(w,j)=>`q.gte(q.field("${L(w)}"), ${JSON.stringify(j)})`,lte:(w,j)=>`q.lte(q.field("${L(w)}"), ${JSON.stringify(j)})`,in:(w,j)=>`q.in(q.field("${L(w)}"), ${JSON.stringify(j)})`,ne:(w,j)=>`q.neq(q.field("${L(w)}"), ${JSON.stringify(j)})`,and:(...w)=>`q.and(${w.join(", ")})`,or:(...w)=>`q.or(${w.join(", ")})`};function b(w){return w(f)}function m({action:w,internalQuery:j,internalMutation:C,internal:G},O){let K=w({args:{action:D.string(),value:D.any()},handler:async(J,B)=>{if(B.action==="query")return await J.runQuery(G.betterAuth.query,{query:B.value.query,tableName:B.value.tableName,limit:B.value.limit,offset:B.value.offset,order:B.value.order,single:B.value.single,paginationOpts:B.value.paginationOpts});if(B.action==="insert")try{return{_id:await J.runMutation(G.betterAuth.insert,{tableName:B.value.tableName,values:B.value.values}),...B.value.values}}catch(H){return H}if(B.action==="update")return await J.runMutation(G.betterAuth.update,{tableName:B.value.tableName,query:B.value.query,update:B.value.update});if(B.action==="delete")return await J.runMutation(G.betterAuth.delete_,{tableName:B.value.tableName,query:B.value.query,deleteAll:B.value.deleteAll});if(B.action==="count")return await J.runMutation(G.betterAuth.count,{tableName:B.value.tableName,query:B.value.query})}}),V=j({args:{tableName:D.string(),query:D.optional(D.any()),order:D.optional(D.string()),single:D.optional(D.boolean()),limit:D.optional(D.number()),paginationOpts:D.optional(D.object({numItems:D.optional(D.number()),cursor:D.optional(D.string())}))},handler:async(J,B)=>{let H=J.db.query(B.tableName).order(B.order||"asc");if(B.query)H=H.filter((P)=>{return W(B.query,P)});if(B.paginationOpts)return await H.paginate(B.paginationOpts);if(B.single===!0)return await H.first();if(typeof B.limit==="number")return await H.take(B.limit);return await H.collect()}}),Z=C({args:{tableName:D.string(),values:D.any()},handler:async(J,B)=>{return await J.db.insert(B.tableName,B.values)}}),$=C({args:{tableName:D.string(),query:D.any(),update:D.any()},async handler(J,{tableName:B,update:H,query:P}){let R=await J.db.query(B).filter((X)=>{return W(P,X)}).first();if(!R)return;return await J.db.patch(R._id,H),Object.assign(R,H)}}),z=C({args:{tableName:D.string(),query:D.any(),deleteAll:D.optional(D.boolean())},async handler(J,{tableName:B,query:H,deleteAll:P}){let R=J.db.query(B).filter((U)=>{return W(H,U)});if(!P){let U=await R.first();if(!U)return;await J.db.delete(U._id);return}let X=await R.collect();if(!X)return;X.forEach((U)=>{J.db.delete(U._id)});return}}),I=j({args:{tableName:D.string(),query:D.optional(D.any())},handler:async(J,B)=>{return(await J.db.query(B.tableName).filter((P)=>{return W(B.query,P)}).collect()).length}}),E=j({args:{sessionToken:D.string()},handler:async(J,B)=>{return J.db.query(O?.sessionModelName||"session").filter((H)=>H.eq(H.field("token"),B.sessionToken)).first()}});return{betterAuth:K,query:V,insert:Z,update:$,delete_:z,count:I,getSession:E}}export{b as queryBuilder,m as ConvexHandler};
//# debugId=754965C0DD3C2D1564756E2164756E21