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.05 kB
"use strict";var e=require("@tanstack/react-query");function t(t){return function(r){return e.useMutation(Object.assign({mutationFn:t},r))}}function r(t){const{queryKey:r,expectsParams:n,serviceFn:u}=t;return function(t,s){const c=(null==r?void 0:r(t))||(null==s?void 0:s.queryKey)||[];return e.useQuery(Object.assign(Object.assign({queryFn:()=>u(t)},n?s:t),{queryKey:c}))}}exports.createQueriesFromService=function e(n,u){const s={},c="string"==typeof u?[u]:u;return Object.keys(n).forEach((u=>{const o=n[u];if("function"==typeof o){const e=o.length;if(e>1)throw new Error(`Service function "${u}" should accept at most one parameter.`);s[u]=function(e,n,u,s){return e?{useQuery:r({expectsParams:!0,serviceFn:u,queryKey:e=>[...s,n,e]}),useMutation:t(u),queryKey:e=>[...s,n,e]}:{useQuery:r({expectsParams:!1,serviceFn:u,queryKey:()=>[...s,n]}),useMutation:t(u),queryKey:()=>[...s,n]}}(e>0,u,o,c)}else"object"==typeof o&&null!==o&&(s[u]=e(o,[...c,u]))})),s},exports.createUseMutation=t,exports.createUseQuery=r; //# sourceMappingURL=bundle.js.map