@zodios/solid
Version:
Solid hooks for zodios
11 lines (6 loc) • 3.52 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var solidQuery = require('@tanstack/solid-query');
function A(y,t){let e={...y};for(let i of t)delete e[i];return e}function h(y,t){let e={};if(y)for(let i of t)e[i]=y[i];return e}function l(y){return y.charAt(0).toUpperCase()+y.slice(1)}var f=class{constructor(t,e){this.apiName=t;this.zodios=e;this.injectAliasEndpoints();}injectAliasEndpoints(){this.zodios.api.forEach(t=>{t.alias&&(["post","put","patch","delete"].includes(t.method)?t.method==="post"&&t.immutable?this[`create${l(t.alias)}`]=(e,i,o)=>this.createImmutableQuery(t.path,e,i,o):this[`create${l(t.alias)}`]=(e,i)=>this.createMutation(t.method,t.path,e,i):this[`create${l(t.alias)}`]=(e,i)=>this.createQuery(t.path,e,i));});}getEndpointByPath(t,e){return this.zodios.api.find(i=>i.method===t&&i.path===e)}getEndpointByAlias(t){return this.zodios.api.find(e=>e.alias===t)}getKeyByPath(t,e,i){let o=this.getEndpointByPath(t,e);if(!o)throw new Error(`No endpoint found for path '${t} ${e}'`);if(i){let s=h(i,["params","queries"]);return [{api:this.apiName,path:o.path},s]}return [{api:this.apiName,path:o.path}]}getKeyByAlias(t,e){let i=this.getEndpointByAlias(t);if(!i)throw new Error(`No endpoint found for alias '${t}'`);if(e){let o=h(e,["params","queries"]);return [{api:this.apiName,path:i.path},o]}return [{api:this.apiName,path:i.path}]}createQuery(t,...[e,i]){let o=h(e,["params","queries"]),s=[{api:this.apiName,path:t},o],n=async()=>this.zodios.get(t,e),d=solidQuery.useQueryClient(),u=()=>d.invalidateQueries(s),r=solidQuery.createQuery(()=>s,n,i);return r.key=s,r.invalidate=u,r}createImmutableQuery(t,e,...[i,o]){let s=h(i,["params","queries"]),n=[{api:this.apiName,path:t},s,e],d=()=>this.zodios.post(t,e,i),u=solidQuery.useQueryClient(),r=()=>u.invalidateQueries(n),a=solidQuery.createQuery(()=>n,d,o);return a.key=n,a.invalidate=r,a}createInfiniteQuery(t,...[e,i]){let o=h(e,["params","queries"]);o.params&&i&&(o.params=A(o.params,i.getPageParamList())),o.queries&&i&&(o.queries=A(o.queries,i.getPageParamList()));let s=[{api:this.apiName,path:t},o],n=({pageParam:a=void 0})=>this.zodios.get(t,{...e,queries:{...e==null?void 0:e.queries,...a==null?void 0:a.queries},params:{...e==null?void 0:e.params,...a==null?void 0:a.params}}),d=solidQuery.useQueryClient(),u=()=>d.invalidateQueries(s),r=solidQuery.createInfiniteQuery(()=>s,n,i);return r.key=s,r.invalidate=u,r}createImmutableInfiniteQuery(t,e,...[i,o]){let s=h(i,["params","queries"]);s.params&&o&&(s.params=A(s.params,o.getPageParamList())),s.queries&&o&&(s.queries=A(s.queries,o.getPageParamList()));let n;e&&o&&(n=A(e,o.getPageParamList()));let d=[{api:this.apiName,path:t},s,n],u=({pageParam:p=void 0})=>this.zodios.post(t,{...e,...p==null?void 0:p.body},{...i,queries:{...i==null?void 0:i.queries,...p==null?void 0:p.queries},params:{...i==null?void 0:i.params,...p==null?void 0:p.params}}),r=solidQuery.useQueryClient(),a=()=>r.invalidateQueries(d),m=solidQuery.createInfiniteQuery(()=>d,u,o);return m.key=d,m.invalidate=a,m}createMutation(t,e,...[i,o]){return solidQuery.createMutation(n=>this.zodios.request({...i,method:t,url:e,data:n}),o)}createGet(t,...e){return this.createQuery(t,...e)}createPost(t,...e){return this.createMutation("post",t,...e)}createPut(t,...e){return this.createMutation("put",t,...e)}createPatch(t,...e){return this.createMutation("patch",t,...e)}createDelete(t,...e){return this.createMutation("delete",t,...e)}},M=f;
exports.ZodiosHooks = M;
exports.ZodiosHooksClass = f;