@pankod/refine-supabase
Version:
refine Supabase data provider. refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.
2 lines • 4.46 kB
JavaScript
var g=Object.defineProperty,h=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var f=(e,r,s)=>r in e?g(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s,S=(e,r)=>{for(var s in r||(r={}))L.call(r,s)&&f(e,s,r[s]);if(y)for(var s of y(r))O.call(r,s)&&f(e,s,r[s]);return e},P=(e,r)=>h(e,R(r));import{createClient as N}from"@supabase/supabase-js";var p={INSERT:"created",UPDATE:"updated",DELETE:"deleted","*":"*"},T={created:"INSERT",updated:"UPDATE",deleted:"DELETE","*":"*"},$=e=>{switch(e){case"ne":return"neq";case"nin":return"not.in";case"contains":return"ilike";case"ncontains":return"not.ilike";case"containss":return"like";case"ncontainss":return"not.like";case"null":return"is";case"nnull":return"not.is";case"between":case"nbetween":throw Error(`Operator ${e} is not supported`);default:return e}},k=(e,r)=>{switch(e.operator){case"eq":return r.eq(e.field,e.value);case"ne":return r.neq(e.field,e.value);case"in":return r.in(e.field,e.value);case"gt":return r.gt(e.field,e.value);case"gte":return r.gte(e.field,e.value);case"lt":return r.lt(e.field,e.value);case"lte":return r.lte(e.field,e.value);case"contains":return r.ilike(e.field,`%${e.value}%`);case"containss":return r.like(e.field,`%${e.value}%`);case"null":return r.is(e.field,null);case"or":let s=e.value.map(n=>`${n.field}.${n.operator}.${n.value}`).join(",");return r.or(s);default:return r.filter(e.field,$(e.operator),e.value)}},t=e=>{let r=P(S({},e),{message:e.message,statusCode:parseInt(e.code)});return Promise.reject(r)},I=e=>({getList:async({resource:r,pagination:s,filters:n,sort:c,metaData:u})=>{var w;let o=(s==null?void 0:s.current)||1,i=(s==null?void 0:s.pageSize)||10,d=e.from(r).select((w=u==null?void 0:u.select)!=null?w:"*",{count:"exact"}).range((o-1)*i,o*i-1);c==null||c.map(v=>{d.order(v.field,{ascending:v.order==="asc"})}),n==null||n.map(v=>{k(v,d)});let{data:l,count:b,error:E}=await d;return E?t(E):{data:l||[],total:b||0}},getMany:async({resource:r,ids:s,metaData:n})=>{var o,i;let{data:c,error:u}=await e.from(r).select((o=n==null?void 0:n.select)!=null?o:"*").in((i=n==null?void 0:n.id)!=null?i:"id",s);return u?t(u):{data:c||[]}},create:async({resource:r,variables:s})=>{let{data:n,error:c}=await e.from(r).insert(s);return c?t(c):{data:(n||[])[0]}},createMany:async({resource:r,variables:s})=>{let{data:n,error:c}=await e.from(r).insert(s);return c?t(c):{data:n}},update:async({resource:r,id:s,variables:n,metaData:c})=>{let u=e.from(r).update(n);c!=null&&c.id?u.eq(c==null?void 0:c.id,s):u.match({id:s});let{data:o,error:i}=await u;return i?t(i):{data:(o||[])[0]}},updateMany:async({resource:r,ids:s,variables:n,metaData:c})=>({data:await Promise.all(s.map(async o=>{let i=e.from(r).update(n);c!=null&&c.id?i.eq(c==null?void 0:c.id,o):i.match({id:o});let{data:d,error:l}=await i;return l?t(l):(d||[])[0]}))}),getOne:async({resource:r,id:s,metaData:n})=>{var i;let c=e.from(r).select((i=n==null?void 0:n.select)!=null?i:"*");n!=null&&n.id?c.eq(n==null?void 0:n.id,s):c.match({id:s});let{data:u,error:o}=await c;return o?t(o):{data:(u||[])[0]}},deleteOne:async({resource:r,id:s,metaData:n})=>{let c=e.from(r).delete();n!=null&&n.id?c.eq(n==null?void 0:n.id,s):c.match({id:s});let{data:u,error:o}=await c;return o?t(o):{data:(u||[])[0]}},deleteMany:async({resource:r,ids:s,metaData:n})=>({data:await Promise.all(s.map(async u=>{let o=e.from(r).delete();n!=null&&n.id?o.eq(n==null?void 0:n.id,u):o.match({id:u});let{data:i,error:d}=await o;return d?t(d):(i||[])[0]}))}),getApiUrl:()=>{throw Error("Not implemented on refine-supabase data provider.")},custom:()=>{throw Error("Not implemented on refine-supabase data provider.")}}),U=e=>({subscribe:({channel:r,types:s,params:n,callback:c})=>{let u=r.replace("resources/",""),o=d=>{var l;(s.includes("*")||s.includes(p[d.eventType]))&&(p[d.eventType]!=="created"&&(n==null?void 0:n.ids)!==void 0&&((l=d.new)==null?void 0:l.id)!==void 0?n.ids.map(String).includes(d.new.id.toString())&&c({channel:r,type:p[d.eventType],date:new Date(d.commit_timestamp),payload:d.new}):c({channel:r,type:p[d.eventType],date:new Date(d.commit_timestamp),payload:d.new}))},i=e.from(u).on(T[s[0]],o);return s.slice(1).map(d=>i.on(T[d],o)),i.subscribe()},unsubscribe:async r=>{e.removeSubscription(r)}});export{N as createClient,I as dataProvider,U as liveProvider};
//# sourceMappingURL=index.js.map