@koine/api 2.0.0-beta.72 → 2.0.0-beta.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ApiError.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type { Api } from "./types";
2
+ export declare class ApiError<TResponseFail extends Api.ResponseFail = unknown> extends Error {
3
+ constructor(result: Api.ResultFail<TResponseFail>);
4
+ }
5
+ export default ApiError;
package/ApiError.js ADDED
@@ -0,0 +1,8 @@
1
+ export class ApiError extends Error {
2
+ constructor(result) {
3
+ super(`Request failed with ${result.status} ${result.msg}`);
4
+ this.name = "ApiError";
5
+ Object.assign(this, result);
6
+ }
7
+ }
8
+ export default ApiError;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@koine/utils');
4
+
5
+ let o=["get","post","put","patch","delete"];let createApi=(l,a,i)=>{let{headers:s={},request:n={},throwErr:p,timeout:c=1e4,processReq:u,processRes:f,processErr:d}=i||{};return o.reduce((o,i)=>(o[i]=async(o,h)=>{let $,m;let{request:w=n,headers:y=s,timeout:g=c,processReq:b,processRes:E=f,processErr:N=d,throwErr:k=p}=h||{},{params:A,json:C,query:j}=h||{},q=`${a}/${o+"".replace(/^\/*/,"")}`,v={method:i.toUpperCase(),...w,headers:{"content-type":"application/json",...y}};if(u){let e=u(i,q,j,C,A,v);q=e[0],j=e[1],C=e[2],A=e[3],v=e[4];}if(b){let e=b(i,q,j,C,A,v);q=e[0],j=e[1],C=e[2],A=e[3],v=e[4];}if(utils.isFullObject(A))for(let e in A)q=q.replace(`{${e}}`,A[e].toString());let x=Number(g);C&&(v.body=JSON.stringify(C)),x>0&&($=new AbortController,m=setTimeout(()=>$.abort(),x),v.signal=$.signal),j&&(q+=utils.buildUrlQueryString(j));let O=null,R=null,S="";try{O=await fetch(q,v);}catch(e){S=utils.errorToString(e);}if(m&&clearTimeout(m),O)try{R=E?await E(O,h||{}):await O.json();}catch(e){S=utils.errorToString(e);}if(null===R&&(R=N?await N(S,h||{}):{data:null,msg:S,status:100,fail:!0,ok:!1}),k&&R?.fail)throw R;if("development"===process.env.NODE_ENV){let e=`${R?.status}: api[${l}] ${i.toUpperCase()} ${q}`;R?.ok?console.info(`🟢 ${e}`):console.info(`🔴 ${e}`);}return R},o),{})};
6
+
7
+ exports.createApi = createApi;
package/createApi.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { Api } from "./types";
2
+ export declare let createApi: <TEndpoints extends Api.Endpoints>(apiName: string, baseUrl: string, options?: Api.ClientOptions) => Api.Client<TEndpoints>;
3
+ export default createApi;
@@ -0,0 +1,5 @@
1
+ import { isFullObject, buildUrlQueryString, errorToString } from '@koine/utils';
2
+
3
+ let o=["get","post","put","patch","delete"];let createApi=(l,a,i)=>{let{headers:s={},request:n={},throwErr:p,timeout:c=1e4,processReq:u,processRes:f,processErr:d}=i||{};return o.reduce((o,i)=>(o[i]=async(o,h)=>{let $,m;let{request:w=n,headers:y=s,timeout:g=c,processReq:b,processRes:E=f,processErr:N=d,throwErr:k=p}=h||{},{params:A,json:C,query:j}=h||{},q=`${a}/${o+"".replace(/^\/*/,"")}`,v={method:i.toUpperCase(),...w,headers:{"content-type":"application/json",...y}};if(u){let e=u(i,q,j,C,A,v);q=e[0],j=e[1],C=e[2],A=e[3],v=e[4];}if(b){let e=b(i,q,j,C,A,v);q=e[0],j=e[1],C=e[2],A=e[3],v=e[4];}if(isFullObject(A))for(let e in A)q=q.replace(`{${e}}`,A[e].toString());let x=Number(g);C&&(v.body=JSON.stringify(C)),x>0&&($=new AbortController,m=setTimeout(()=>$.abort(),x),v.signal=$.signal),j&&(q+=buildUrlQueryString(j));let O=null,R=null,S="";try{O=await fetch(q,v);}catch(e){S=errorToString(e);}if(m&&clearTimeout(m),O)try{R=E?await E(O,h||{}):await O.json();}catch(e){S=errorToString(e);}if(null===R&&(R=N?await N(S,h||{}):{data:null,msg:S,status:100,fail:!0,ok:!1}),k&&R?.fail)throw R;if("development"===process.env.NODE_ENV){let e=`${R?.status}: api[${l}] ${i.toUpperCase()} ${q}`;R?.ok?console.info(`🟢 ${e}`):console.info(`🔴 ${e}`);}return R},o),{})};
4
+
5
+ export { createApi as c };
package/createApi.js ADDED
@@ -0,0 +1,115 @@
1
+ import { buildUrlQueryString, errorToString, isFullObject, } from "@koine/utils";
2
+ let apiMethods = [
3
+ "get",
4
+ "post",
5
+ "put",
6
+ "patch",
7
+ "delete",
8
+ ];
9
+ export let createApi = (apiName, baseUrl, options) => {
10
+ const { headers: headersBase = {}, request: requestBase = {}, throwErr: throwErrBase, timeout: timeoutBase = 10000, processReq: processReqBase, processRes: processResBase, processErr: processErrBase, } = options || {};
11
+ return apiMethods.reduce((api, method) => {
12
+ api[method] = async (endpoint, options) => {
13
+ const { request = requestBase, headers = headersBase, timeout = timeoutBase, processReq, processRes = processResBase, processErr = processErrBase, throwErr = throwErrBase, } = options || {};
14
+ let { params, json, query } = options || {};
15
+ let url = `${baseUrl}/${endpoint + "".replace(/^\/*/, "")}`;
16
+ let requestInit = {
17
+ method: method.toUpperCase(),
18
+ ...request,
19
+ headers: {
20
+ "content-type": "application/json",
21
+ ...headers,
22
+ },
23
+ };
24
+ if (processReqBase) {
25
+ const transformed = processReqBase(method, url, query, json, params, requestInit);
26
+ url = transformed[0];
27
+ query = transformed[1];
28
+ json = transformed[2];
29
+ params = transformed[3];
30
+ requestInit = transformed[4];
31
+ }
32
+ if (processReq) {
33
+ const transformed = processReq(method, url, query, json, params, requestInit);
34
+ url = transformed[0];
35
+ query = transformed[1];
36
+ json = transformed[2];
37
+ params = transformed[3];
38
+ requestInit = transformed[4];
39
+ }
40
+ if (isFullObject(params)) {
41
+ for (const key in params) {
42
+ url = url.replace(`{${key}}`, params[key].toString());
43
+ }
44
+ }
45
+ const timeoutNumber = Number(timeout);
46
+ let controller;
47
+ let timeoutId;
48
+ if (json) {
49
+ requestInit.body = JSON.stringify(json);
50
+ }
51
+ if (timeoutNumber > 0) {
52
+ controller = new AbortController();
53
+ timeoutId = setTimeout(() => controller.abort(), timeoutNumber);
54
+ requestInit.signal = controller.signal;
55
+ }
56
+ if (query) {
57
+ url += buildUrlQueryString(query);
58
+ }
59
+ let response = null;
60
+ let result = null;
61
+ let msg = "";
62
+ try {
63
+ response = await fetch(url, requestInit);
64
+ }
65
+ catch (e) {
66
+ msg = errorToString(e);
67
+ }
68
+ if (timeoutId) {
69
+ clearTimeout(timeoutId);
70
+ }
71
+ if (response) {
72
+ try {
73
+ if (processRes) {
74
+ result = await processRes(response, options || {});
75
+ }
76
+ else {
77
+ result = await response.json();
78
+ }
79
+ }
80
+ catch (e) {
81
+ msg = errorToString(e);
82
+ }
83
+ }
84
+ if (result === null) {
85
+ if (processErr) {
86
+ result = await processErr(msg, options || {});
87
+ }
88
+ else {
89
+ result = {
90
+ data: null,
91
+ msg,
92
+ status: 100,
93
+ fail: true,
94
+ ok: false,
95
+ };
96
+ }
97
+ }
98
+ if (throwErr && result?.fail) {
99
+ throw result;
100
+ }
101
+ if (process.env["NODE_ENV"] === "development") {
102
+ const logMsg = `${result?.status}: api[${apiName}] ${method.toUpperCase()} ${url}`;
103
+ if (result?.ok) {
104
+ console.info(`🟢 ${logMsg}`);
105
+ }
106
+ else {
107
+ console.info(`🔴 ${logMsg}`);
108
+ }
109
+ }
110
+ return result;
111
+ };
112
+ return api;
113
+ }, {});
114
+ };
115
+ export default createApi;
@@ -0,0 +1,4 @@
1
+ import type { Api } from "./types";
2
+ export declare let createApiResultOk: <T>(data?: T, msg?: string) => Api.ResultOk<T>;
3
+ export declare let createApiResultFail: <T>(data?: T, msg?: string, status?: number) => Api.ResultFail<T>;
4
+ export default createApiResultFail;
@@ -0,0 +1,14 @@
1
+ export let createApiResultOk = (data = {}, msg) => ({
2
+ ok: true,
3
+ fail: false,
4
+ data,
5
+ msg: msg || "",
6
+ status: 200,
7
+ });
8
+ export let createApiResultFail = (data = {}, msg, status) => ({
9
+ fail: true,
10
+ data,
11
+ msg: msg || "",
12
+ status: status || 404,
13
+ });
14
+ export default createApiResultFail;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ let createApiResultFail=(t={},e,a)=>({fail:!0,data:t,msg:e||"",status:a||404});
4
+
5
+ let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});
6
+
7
+ exports.createApiResultFail = createApiResultFail;
8
+ exports.createApiResultOk = createApiResultOk;
@@ -0,0 +1,3 @@
1
+ import type { Api } from "./types";
2
+ export declare let createApiResultOk: <T>(data?: T, msg?: string) => Api.ResultOk<T>;
3
+ export default createApiResultOk;
@@ -0,0 +1,5 @@
1
+ let createApiResultFail=(t={},e,a)=>({fail:!0,data:t,msg:e||"",status:a||404});
2
+
3
+ let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});
4
+
5
+ export { createApiResultOk as a, createApiResultFail as c };
@@ -0,0 +1,8 @@
1
+ export let createApiResultOk = (data = {}, msg) => ({
2
+ ok: true,
3
+ fail: false,
4
+ data,
5
+ msg: msg || "",
6
+ status: 200,
7
+ });
8
+ export default createApiResultOk;
package/index.cjs.js CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var utils = require('@koine/utils');
5
+ var createApi = require('./createApi.cjs.js');
6
+ var createApiResultOk = require('./createApiResultOk.cjs.js');
7
+ require('@koine/utils');
6
8
 
7
- class ApiError extends Error{constructor(e){super(`Request failed with ${e.status} ${e.msg}`),this.name="ApiError",Object.assign(this,e);}}let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});let createApiResultFail=(e={},t,r)=>({fail:!0,data:e,msg:t||"",status:r||404});let s=["get","post","put","patch","delete"];let createApi=(o,a,l)=>{let{headers:i={},request:n={},throwErr:p,timeout:c=1e4,processReq:u,processRes:f,processErr:h}=l||{};return s.reduce((s,l)=>(s[l]=async(s,m)=>{let $,d;let{request:g=n,headers:w=i,timeout:E=c,processReq:y,processRes:A=f,processErr:b=h,throwErr:k=p}=m||{},{params:x,json:R,query:N}=m||{},O=`${a}/${s+"".replace(/^\/*/,"")}`,j={method:l.toUpperCase(),...g,headers:{"content-type":"application/json",...w}};if(u){let e=u(l,O,N,R,x,j);O=e[0],N=e[1],R=e[2],x=e[3],j=e[4];}if(y){let e=y(l,O,N,R,x,j);O=e[0],N=e[1],R=e[2],x=e[3],j=e[4];}if(utils.isFullObject(x))for(let e in x)O=O.replace(`{${e}}`,x[e].toString());let q=Number(E);R&&(j.body=JSON.stringify(R)),q>0&&($=new AbortController,d=setTimeout(()=>$.abort(),q),j.signal=$.signal),N&&(O+=utils.buildUrlQueryString(N));let C=null,v=null,S="";try{C=await fetch(O,j);}catch(e){S=utils.errorToString(e);}if(d&&clearTimeout(d),C)try{v=A?await A(C,m||{}):await C.json();}catch(e){S=utils.errorToString(e);}if(null===v&&(v=b?await b(S,m||{}):{data:null,msg:S,status:100,fail:!0,ok:!1}),k&&v?.fail)throw v;if("development"===process.env.NODE_ENV){let e=`${v?.status}: api[${o}] ${l.toUpperCase()} ${O}`;v?.ok?console.info(`🟢 ${e}`):console.info(`🔴 ${e}`);}return v},s),{})};
9
+ class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
8
10
 
11
+ exports.createApi = createApi.createApi;
12
+ exports.createApiResultFail = createApiResultOk.createApiResultFail;
13
+ exports.createApiResultOk = createApiResultOk.createApiResultOk;
9
14
  exports.ApiError = ApiError;
10
- exports.createApi = createApi;
11
- exports.createApiResultFail = createApiResultFail;
12
- exports.createApiResultOk = createApiResultOk;
package/index.d.ts CHANGED
@@ -1,8 +1,5 @@
1
- import type { Api } from "./types";
2
- export declare class ApiError<TResponseFail extends Api.ResponseFail = unknown> extends Error {
3
- constructor(result: Api.ResultFail<TResponseFail>);
4
- }
5
- export declare let createApiResultOk: <T>(data?: T, msg?: string) => Api.ResultOk<T>;
6
- export declare let createApiResultFail: <T>(data?: T, msg?: string, status?: number) => Api.ResultFail<T>;
7
- export declare let createApi: <TEndpoints extends Api.Endpoints>(apiName: string, baseUrl: string, options?: Api.ClientOptions) => Api.Client<TEndpoints>;
1
+ export { ApiError } from "./ApiError";
2
+ export { createApi } from "./createApi";
3
+ export { createApiResultFail } from "./createApiResultFail";
4
+ export { createApiResultOk } from "./createApiResultOk";
8
5
  export type { Api } from "./types";
package/index.esm.js CHANGED
@@ -1,5 +1,7 @@
1
- import { isFullObject, buildUrlQueryString, errorToString } from '@koine/utils';
1
+ export { c as createApi } from './createApi.esm.js';
2
+ export { c as createApiResultFail, a as createApiResultOk } from './createApiResultOk.esm.js';
3
+ import '@koine/utils';
2
4
 
3
- class ApiError extends Error{constructor(e){super(`Request failed with ${e.status} ${e.msg}`),this.name="ApiError",Object.assign(this,e);}}let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});let createApiResultFail=(e={},t,r)=>({fail:!0,data:e,msg:t||"",status:r||404});let s=["get","post","put","patch","delete"];let createApi=(o,a,l)=>{let{headers:i={},request:n={},throwErr:p,timeout:c=1e4,processReq:u,processRes:f,processErr:h}=l||{};return s.reduce((s,l)=>(s[l]=async(s,m)=>{let $,d;let{request:g=n,headers:w=i,timeout:E=c,processReq:y,processRes:A=f,processErr:b=h,throwErr:k=p}=m||{},{params:x,json:R,query:N}=m||{},O=`${a}/${s+"".replace(/^\/*/,"")}`,j={method:l.toUpperCase(),...g,headers:{"content-type":"application/json",...w}};if(u){let e=u(l,O,N,R,x,j);O=e[0],N=e[1],R=e[2],x=e[3],j=e[4];}if(y){let e=y(l,O,N,R,x,j);O=e[0],N=e[1],R=e[2],x=e[3],j=e[4];}if(isFullObject(x))for(let e in x)O=O.replace(`{${e}}`,x[e].toString());let q=Number(E);R&&(j.body=JSON.stringify(R)),q>0&&($=new AbortController,d=setTimeout(()=>$.abort(),q),j.signal=$.signal),N&&(O+=buildUrlQueryString(N));let C=null,v=null,S="";try{C=await fetch(O,j);}catch(e){S=errorToString(e);}if(d&&clearTimeout(d),C)try{v=A?await A(C,m||{}):await C.json();}catch(e){S=errorToString(e);}if(null===v&&(v=b?await b(S,m||{}):{data:null,msg:S,status:100,fail:!0,ok:!1}),k&&v?.fail)throw v;if("development"===process.env.NODE_ENV){let e=`${v?.status}: api[${o}] ${l.toUpperCase()} ${O}`;v?.ok?console.info(`🟢 ${e}`):console.info(`🔴 ${e}`);}return v},s),{})};
5
+ class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
4
6
 
5
- export { ApiError, createApi, createApiResultFail, createApiResultOk };
7
+ export { ApiError };
package/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { ApiError } from "./ApiError";
2
+ export { createApi } from "./createApi";
3
+ export { createApiResultFail } from "./createApiResultFail";
4
+ export { createApiResultOk } from "./createApiResultOk";
package/next.cjs.js CHANGED
@@ -3,10 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var server = require('next/server');
6
- var index = require('./index.cjs.js');
7
- require('@koine/utils');
6
+ var createApiResultOk = require('./createApiResultOk.cjs.js');
8
7
 
9
- let nextApiResponse={ok:(o,t)=>server.NextResponse.json(index.createApiResultOk(o,t)),fail:(s,t,n)=>server.NextResponse.json(index.createApiResultFail(s,t,n))};let nextApiResponse12=e=>({ok(o,t){e.status(200).json(index.createApiResultOk(o,t));},fail(s,t,n){e.status(n||404).json(index.createApiResultFail(s,t,n));}});
8
+ let nextApiResponse={ok:(t,s)=>server.NextResponse.json(createApiResultOk.createApiResultOk(t,s)),fail:(o,s,r)=>server.NextResponse.json(createApiResultOk.createApiResultFail(o,s,r))};let nextApiResponse12=e=>({ok(t,s){e.status(200).json(createApiResultOk.createApiResultOk(t,s));},fail(o,s,r){e.status(r||404).json(createApiResultOk.createApiResultFail(o,s,r));}});
10
9
 
11
10
  exports.nextApiResponse = nextApiResponse;
12
11
  exports.nextApiResponse12 = nextApiResponse12;
package/next.esm.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { NextResponse } from 'next/server';
2
- import { createApiResultOk, createApiResultFail } from './index.esm.js';
3
- import '@koine/utils';
2
+ import { a as createApiResultOk, c as createApiResultFail } from './createApiResultOk.esm.js';
4
3
 
5
- let nextApiResponse={ok:(o,t)=>NextResponse.json(createApiResultOk(o,t)),fail:(s,t,n)=>NextResponse.json(createApiResultFail(s,t,n))};let nextApiResponse12=e=>({ok(o,t){e.status(200).json(createApiResultOk(o,t));},fail(s,t,n){e.status(n||404).json(createApiResultFail(s,t,n));}});
4
+ let nextApiResponse={ok:(t,s)=>NextResponse.json(createApiResultOk(t,s)),fail:(o,s,r)=>NextResponse.json(createApiResultFail(o,s,r))};let nextApiResponse12=e=>({ok(t,s){e.status(200).json(createApiResultOk(t,s));},fail(o,s,r){e.status(r||404).json(createApiResultFail(o,s,r));}});
6
5
 
7
6
  export { nextApiResponse, nextApiResponse12 };
package/next.js ADDED
@@ -0,0 +1,19 @@
1
+ import { NextResponse } from "next/server";
2
+ import { createApiResultFail } from "./createApiResultFail";
3
+ import { createApiResultOk } from "./createApiResultOk";
4
+ export let nextApiResponse = {
5
+ ok(data, msg) {
6
+ return NextResponse.json(createApiResultOk(data, msg));
7
+ },
8
+ fail(data, msg, status) {
9
+ return NextResponse.json(createApiResultFail(data, msg, status));
10
+ },
11
+ };
12
+ export let nextApiResponse12 = (nextRes) => ({
13
+ ok(data, msg) {
14
+ nextRes.status(200).json(createApiResultOk(data, msg));
15
+ },
16
+ fail(data, msg, status) {
17
+ nextRes.status(status || 404).json(createApiResultFail(data, msg, status));
18
+ },
19
+ });
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@koine/api",
3
3
  "sideEffects": false,
4
4
  "dependencies": {
5
- "@koine/utils": "2.0.0-beta.72"
5
+ "@koine/utils": "2.0.0-beta.73"
6
6
  },
7
7
  "peerDependencies": {
8
8
  "next": "^14.0.4",
@@ -28,18 +28,18 @@
28
28
  "import": "./next.cjs.mjs",
29
29
  "default": "./next.cjs.js"
30
30
  },
31
- "./swr-mutation": {
32
- "module": "./swr-mutation.esm.js",
33
- "import": "./swr-mutation.cjs.mjs",
34
- "default": "./swr-mutation.cjs.js"
35
- },
36
31
  "./swr": {
37
32
  "module": "./swr.esm.js",
38
33
  "import": "./swr.cjs.mjs",
39
34
  "default": "./swr.cjs.js"
35
+ },
36
+ "./swr-mutation": {
37
+ "module": "./swr-mutation.esm.js",
38
+ "import": "./swr-mutation.cjs.mjs",
39
+ "default": "./swr-mutation.cjs.js"
40
40
  }
41
41
  },
42
42
  "module": "./index.esm.js",
43
43
  "main": "./index.cjs.js",
44
- "version": "2.0.0-beta.72"
44
+ "version": "2.0.0-beta.73"
45
45
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var r = require('swr/mutation');
6
- var index = require('./index.cjs.js');
6
+ var createApi = require('./createApi.cjs.js');
7
7
  var swr = require('./swr.cjs.js');
8
8
  require('@koine/utils');
9
9
  require('swr');
@@ -12,6 +12,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
12
12
 
13
13
  var r__default = /*#__PURE__*/_interopDefaultLegacy(r);
14
14
 
15
- let a=(t,e)=>(a,o,i)=>r__default["default"](o?[a,o]:a,async(r,a)=>{let o=Array.isArray(r)?r[0]:r,i=Array.isArray(r)?r[1]:{},{ok:p,data:s}=await t[e](o,{...i,...a.arg||{},throwErr:!0});return s},i);let createSwrMutationApi=(...r)=>{let o=index.createApi(...r);return o.use=swr.createUseApi(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r);}),o};
15
+ let a=(t,e)=>(a,o,i)=>r__default["default"](o?[a,o]:a,async(r,a)=>{let o=Array.isArray(r)?r[0]:r,i=Array.isArray(r)?r[1]:{},{ok:p,data:s}=await t[e](o,{...i,...a.arg||{},throwErr:!0});return s},i);let createSwrMutationApi=(...r)=>{let o=createApi.createApi(...r);return o.use=swr.createUseApi(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r);}),o};
16
16
 
17
17
  exports.createSwrMutationApi = createSwrMutationApi;
package/swr-mutation.d.ts CHANGED
@@ -10,8 +10,10 @@ export declare let createSwrMutationApi: <TEndpoints extends Api.Endpoints>(apiN
10
10
  usePatch: KoineApiMethodHookSWR<"usePatch", TEndpoints>;
11
11
  useDelete: KoineApiMethodHookSWR<"useDelete", TEndpoints>;
12
12
  } & {
13
- use: <TEndpoint extends Extract<keyof TEndpoints, string>>(endpoint: TEndpoint, options?: Api.EndpointOptions<TEndpoints, TEndpoint, "get"> | undefined, config?: (Partial<import("swr/_internal").PublicConfiguration<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">, import("swr/_internal").BareFetcher<any>>> & {
13
+ use: <TEndpoint extends Extract<keyof TEndpoints, string>>(endpoint: TEndpoint, options?: Api.EndpointOptions<TEndpoints, TEndpoint, "get"> | undefined, config?: (Partial<import("swr/dist/_internal").PublicConfiguration<Api.GetDataType<TEndpoints, TEndpoint, "get", "ok">, Api.GetDataType<TEndpoints, TEndpoint, "get", "fail">, import("swr/dist/_internal").BareFetcher<any>>> & Partial<import("swr/dist/_internal").ProviderConfiguration> & {
14
+ provider?: ((cache: Readonly<import("swr/dist/_internal").Cache<any>>) => import("swr/dist/_internal").Cache<any>) | undefined;
15
+ } & {
14
16
  when?: boolean | (() => boolean) | undefined;
15
- }) | undefined) => import("swr/_internal").SWRResponse<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">, any>;
17
+ }) | undefined) => import("swr/dist/_internal").SWRResponse<Api.GetDataType<TEndpoints, TEndpoint, "get", "ok">, Api.GetDataType<TEndpoints, TEndpoint, "get", "fail">, any>;
16
18
  };
17
19
  export {};
@@ -1,5 +1,5 @@
1
1
  import r from 'swr/mutation';
2
- import { createApi } from './index.esm.js';
2
+ import { c as createApi } from './createApi.esm.js';
3
3
  import { createUseApi } from './swr.esm.js';
4
4
  import '@koine/utils';
5
5
  import 'swr';
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import useSWRMutation, {} from "swr/mutation";
3
+ import { createApi } from "./createApi";
4
+ import { createUseApi } from "./swr";
5
+ let createUseMutationApi = (api, method) => (endpoint, options, config) => {
6
+ const sender = async (_endpoint, _options) => {
7
+ const endpoint = Array.isArray(_endpoint) ? _endpoint[0] : _endpoint;
8
+ const options = Array.isArray(_endpoint) ? _endpoint[1] : {};
9
+ const { ok, data } = await api[method](endpoint, {
10
+ ...options,
11
+ ...(_options.arg || {}),
12
+ throwErr: true,
13
+ });
14
+ return ok ? data : data;
15
+ };
16
+ return useSWRMutation(options ? [endpoint, options] : endpoint, sender, config);
17
+ };
18
+ export let createSwrMutationApi = (...args) => {
19
+ const api = createApi(...args);
20
+ api.use = createUseApi(api);
21
+ ["post", "put", "patch", "delete"].forEach((method) => {
22
+ const hookName = `use${method.charAt(0).toUpperCase() + method.slice(1)}`;
23
+ api[hookName] = createUseMutationApi(api, method);
24
+ });
25
+ return api;
26
+ };
package/swr.cjs.js CHANGED
@@ -4,13 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var e = require('swr');
6
6
  var utils = require('@koine/utils');
7
- var index = require('./index.cjs.js');
7
+ var createApi = require('./createApi.cjs.js');
8
8
 
9
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
10
 
11
11
  var e__default = /*#__PURE__*/_interopDefaultLegacy(e);
12
12
 
13
- let createUseApi=t=>(i,n,o)=>{let l=async()=>{let{data:e}=await t.get(i,{...n||{},throwErr:!0});return e};return e__default["default"](o?.when===!1||utils.isFunction(o?.when)&&o?.when()===!1?null:n?[i,n]:[i],l,o)};let createSwrApi=(...e)=>{let r=index.createApi(...e);return r.use=createUseApi(r),r};
13
+ let createUseApi=t=>(i,o,n)=>{let p=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};return e__default["default"](n?.when===!1||utils.isFunction(n?.when)&&n?.when()===!1?null:o?[i,o]:[i],p,n)};let createSwrApi=(...e)=>{let r=createApi.createApi(...e);return r.use=createUseApi(r),r};
14
14
 
15
15
  exports.createSwrApi = createSwrApi;
16
16
  exports.createUseApi = createUseApi;
package/swr.d.ts CHANGED
@@ -3,8 +3,7 @@ import type { Api } from "./types";
3
3
  type SWRConfigurationExtended<Data = any, Error = any, Fn extends BareFetcher<any> = BareFetcher<any>> = SWRConfiguration<Data, Error, Fn> & {
4
4
  when?: boolean | (() => boolean);
5
5
  };
6
- export declare let createUseApi: <TEndpoints extends Api.Endpoints>(api: Api.Client<TEndpoints>) => <TEndpoint extends Extract<keyof TEndpoints, string>>(endpoint: TEndpoint, options?: Api.EndpointOptions<TEndpoints, TEndpoint, "get"> | undefined, config?: SWRConfigurationExtended<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">, BareFetcher<any>> | undefined) => SWRResponse<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">, any>;
7
6
  export declare let createSwrApi: <TEndpoints extends Api.Endpoints>(apiName: string, baseUrl: string, options?: Api.ClientOptions | undefined) => Api.Client<TEndpoints> & {
8
- use: <TEndpoint extends Extract<keyof TEndpoints, string>>(endpoint: TEndpoint, options?: Api.EndpointOptions<TEndpoints, TEndpoint, "get"> | undefined, config?: SWRConfigurationExtended<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">, BareFetcher<any>> | undefined) => SWRResponse<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">, any>;
7
+ use: <TEndpoint extends Extract<keyof TEndpoints, string>>(endpoint: TEndpoint, options?: Api.EndpointOptions<TEndpoints, TEndpoint, "get"> | undefined, config?: SWRConfigurationExtended<Api.GetDataType<TEndpoints, TEndpoint, "get", "ok">, Api.GetDataType<TEndpoints, TEndpoint, "get", "fail">, BareFetcher<any>> | undefined) => SWRResponse<Api.GetDataType<TEndpoints, TEndpoint, "get", "ok">, Api.GetDataType<TEndpoints, TEndpoint, "get", "fail">, any>;
9
8
  };
10
9
  export {};
package/swr.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import e from 'swr';
2
2
  import { isFunction } from '@koine/utils';
3
- import { createApi } from './index.esm.js';
3
+ import { c as createApi } from './createApi.esm.js';
4
4
 
5
- let createUseApi=t=>(i,n,o)=>{let l=async()=>{let{data:e}=await t.get(i,{...n||{},throwErr:!0});return e};return e(o?.when===!1||isFunction(o?.when)&&o?.when()===!1?null:n?[i,n]:[i],l,o)};let createSwrApi=(...e)=>{let r=createApi(...e);return r.use=createUseApi(r),r};
5
+ let createUseApi=t=>(i,o,n)=>{let p=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};return e(n?.when===!1||isFunction(n?.when)&&n?.when()===!1?null:o?[i,o]:[i],p,n)};let createSwrApi=(...e)=>{let r=createApi(...e);return r.use=createUseApi(r),r};
6
6
 
7
7
  export { createSwrApi, createUseApi };
package/swr.js ADDED
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import useSWR, {} from "swr";
3
+ import { isFunction } from "@koine/utils";
4
+ import { createApi } from "./createApi";
5
+ export let createUseApi = (api) => (endpoint, options, config) => {
6
+ const fetcher = async () => {
7
+ const { data } = await api.get(endpoint, {
8
+ ...(options || {}),
9
+ throwErr: true,
10
+ });
11
+ return data;
12
+ };
13
+ const shouldNotFetch = config?.when === false ||
14
+ (isFunction(config?.when) && config?.when() === false);
15
+ return useSWR(shouldNotFetch ? null : options ? [endpoint, options] : [endpoint], fetcher, config);
16
+ };
17
+ export let createSwrApi = (...args) => {
18
+ const api = createApi(...args);
19
+ api.use = createUseApi(api);
20
+ return api;
21
+ };
package/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};