UNPKG

@earthling/react-query-factory

Version:

Create API client for your React app with just one line of code, using React Query!

3 lines (2 loc) 1.03 kB
import{useMutation as e,useQuery as t}from"@tanstack/react-query";function n(t){return function(n){return e(Object.assign({mutationFn:t},n))}}function r(e){const{queryKey:n,expectsParams:r,serviceFn:u}=e;return function(e,o){const c=(null==n?void 0:n(e))||(null==o?void 0:o.queryKey)||[];return t(Object.assign(Object.assign({queryFn:()=>u(e)},r?o:e),{queryKey:c}))}}function u(e,t){const o={},c="string"==typeof t?[t]:t;return Object.keys(e).forEach((t=>{const s=e[t];if("function"==typeof s){const e=s.length;if(e>1)throw new Error(`Service function "${t}" should accept at most one parameter.`);o[t]=function(e,t,u,o){return e?{useQuery:r({expectsParams:!0,serviceFn:u,queryKey:e=>[...o,t,e]}),useMutation:n(u),queryKey:e=>[...o,t,e]}:{useQuery:r({expectsParams:!1,serviceFn:u,queryKey:()=>[...o,t]}),useMutation:n(u),queryKey:()=>[...o,t]}}(e>0,t,s,c)}else"object"==typeof s&&null!==s&&(o[t]=u(s,[...c,t]))})),o}export{u as createQueriesFromService,n as createUseMutation,r as createUseQuery}; //# sourceMappingURL=bundle.js.map