@koine/api 2.0.0-beta.112 → 2.0.0-beta.114
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.cjs.js +1 -1
- package/ApiError.esm.d.ts +2 -0
- package/createApi.cjs.js +5 -4
- package/createApi.esm.d.ts +2 -0
- package/createApi.esm.js +4 -3
- package/createApiResultFail.cjs.js +1 -1
- package/createApiResultFail.esm.d.ts +2 -0
- package/createApiResultOk.cjs.js +1 -1
- package/createApiResultOk.esm.d.ts +2 -0
- package/createSwrApi.cjs.js +1 -5
- package/index.cjs.js +0 -2
- package/index.esm.d.ts +1 -0
- package/next.cjs.js +0 -2
- package/next.esm.d.ts +1 -0
- package/package.json +2 -2
- package/swr-mutation.cjs.js +1 -7
- package/swr-mutation.esm.d.ts +1 -0
- package/swr.cjs.js +0 -2
- package/swr.esm.d.ts +1 -0
- package/types.d.ts +2 -2
package/ApiError.cjs.js
CHANGED
|
@@ -11,4 +11,4 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
11
11
|
*/class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
|
|
12
12
|
|
|
13
13
|
exports.ApiError = ApiError;
|
|
14
|
-
exports
|
|
14
|
+
exports.default = ApiError;
|
package/createApi.cjs.js
CHANGED
|
@@ -10,18 +10,19 @@ let o=["get","post","put","patch","delete"];/**
|
|
|
10
10
|
* @param apiName Short name to use in debug logs
|
|
11
11
|
* @param baseUrl Either relativ eor absolute, it must end without trailing slash
|
|
12
12
|
*/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)=>(// @ts-expect-error FIXME: type
|
|
13
|
-
o[i]=async(o,h)=>{let $,m;let{request:w=n,headers:y=s,timeout:
|
|
13
|
+
o[i]=async(o,h)=>{let $,m;let{request:w=n,headers:y=s,timeout:b=c,processReq:g,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(g){let e=g(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)// TODO: not the greatest assertion...
|
|
14
|
+
q=q.replace(`{${e}}`,A[e]);let x=Number(b);C&&(v.body=JSON.stringify(C)),x>0&&(// TODO: combine multiple abort signals
|
|
14
15
|
// @see https://dev.to/rashidshamloo/adding-timeout-and-multiple-abort-signals-to-fetch-typescriptreact-33bb
|
|
15
16
|
$=new AbortController,m=setTimeout(()=>$.abort(),x),v.signal=$.signal),j&&// FIXME: ts-expect-error this assertion is not the best, but nevermind for now
|
|
16
|
-
(q+=utils.buildUrlQueryString(j));let O=null,R=null,
|
|
17
|
+
(q+=utils.buildUrlQueryString(j));let O=null,R=null,T="";try{O=await fetch(q,v);}catch(e){T=utils.errorToString(e);}if(m&&clearTimeout(m),O)try{R=E?await E(O,h||{}):await O.json();}catch(e){T=utils.errorToString(e);}if(null===R&&(R=N?await N(T,h||{}):// this error should only happen on network errors or wrong API urls
|
|
17
18
|
// there is no specific HTTP error for this, we can consider these
|
|
18
19
|
// two statuses though:
|
|
19
20
|
// - [100 Continue](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100)
|
|
20
21
|
// - [501 Not Implemented](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501)
|
|
21
|
-
{data:null,msg:
|
|
22
|
+
{data:null,msg:T,status:100,fail:!0,ok:!1}),k&&R?.fail)// throw new ApiError<Failed>(result);
|
|
22
23
|
// I prefer to throw an object literal despite what eslint says
|
|
23
24
|
// eslint-disable-next-line no-throw-literal
|
|
24
25
|
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),{})};
|
|
25
26
|
|
|
26
27
|
exports.createApi = createApi;
|
|
27
|
-
exports
|
|
28
|
+
exports.default = createApi;
|
package/createApi.esm.js
CHANGED
|
@@ -6,15 +6,16 @@ let o=["get","post","put","patch","delete"];/**
|
|
|
6
6
|
* @param apiName Short name to use in debug logs
|
|
7
7
|
* @param baseUrl Either relativ eor absolute, it must end without trailing slash
|
|
8
8
|
*/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)=>(// @ts-expect-error FIXME: type
|
|
9
|
-
o[i]=async(o,h)=>{let $,m;let{request:w=n,headers:y=s,timeout:
|
|
9
|
+
o[i]=async(o,h)=>{let $,m;let{request:w=n,headers:y=s,timeout:b=c,processReq:g,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(g){let e=g(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)// TODO: not the greatest assertion...
|
|
10
|
+
q=q.replace(`{${e}}`,A[e]);let x=Number(b);C&&(v.body=JSON.stringify(C)),x>0&&(// TODO: combine multiple abort signals
|
|
10
11
|
// @see https://dev.to/rashidshamloo/adding-timeout-and-multiple-abort-signals-to-fetch-typescriptreact-33bb
|
|
11
12
|
$=new AbortController,m=setTimeout(()=>$.abort(),x),v.signal=$.signal),j&&// FIXME: ts-expect-error this assertion is not the best, but nevermind for now
|
|
12
|
-
(q+=buildUrlQueryString(j));let O=null,R=null,
|
|
13
|
+
(q+=buildUrlQueryString(j));let O=null,R=null,T="";try{O=await fetch(q,v);}catch(e){T=errorToString(e);}if(m&&clearTimeout(m),O)try{R=E?await E(O,h||{}):await O.json();}catch(e){T=errorToString(e);}if(null===R&&(R=N?await N(T,h||{}):// this error should only happen on network errors or wrong API urls
|
|
13
14
|
// there is no specific HTTP error for this, we can consider these
|
|
14
15
|
// two statuses though:
|
|
15
16
|
// - [100 Continue](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100)
|
|
16
17
|
// - [501 Not Implemented](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501)
|
|
17
|
-
{data:null,msg:
|
|
18
|
+
{data:null,msg:T,status:100,fail:!0,ok:!1}),k&&R?.fail)// throw new ApiError<Failed>(result);
|
|
18
19
|
// I prefer to throw an object literal despite what eslint says
|
|
19
20
|
// eslint-disable-next-line no-throw-literal
|
|
20
21
|
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),{})};
|
package/createApiResultOk.cjs.js
CHANGED
|
@@ -5,4 +5,4 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});
|
|
6
6
|
|
|
7
7
|
exports.createApiResultOk = createApiResultOk;
|
|
8
|
-
exports
|
|
8
|
+
exports.default = createApiResultOk;
|
package/createSwrApi.cjs.js
CHANGED
|
@@ -4,10 +4,6 @@ var e = require('swr');
|
|
|
4
4
|
var utils = require('@koine/utils');
|
|
5
5
|
var createApi = require('./createApi.cjs.js');
|
|
6
6
|
|
|
7
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
-
|
|
9
|
-
var e__default = /*#__PURE__*/_interopDefaultLegacy(e);
|
|
10
|
-
|
|
11
7
|
/**
|
|
12
8
|
* Conditional fetching as option
|
|
13
9
|
*
|
|
@@ -42,7 +38,7 @@ var e__default = /*#__PURE__*/_interopDefaultLegacy(e);
|
|
|
42
38
|
// }
|
|
43
39
|
let a=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};// <Data = any, Error = any>(key: Key, config: SWRConfigurationExtended<Data, Error, Fetcher<Data>> | undefined): SWRResponse<Data, Error>;
|
|
44
40
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
45
|
-
return
|
|
41
|
+
return e(p?.when===!1||utils.isFunction(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};/**
|
|
46
42
|
* It creates an api client extended with auto-generated SWR wrapper hooks
|
|
47
43
|
*/let createSwrApi=(...e)=>{let r=createApi.createApi(...e);return r.use=createUseApi(r),r};
|
|
48
44
|
|
package/index.cjs.js
CHANGED
package/index.esm.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./index";
|
package/next.cjs.js
CHANGED
package/next.esm.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./next";
|
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.
|
|
5
|
+
"@koine/utils": "2.0.0-beta.114"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"next": "^14.0.4",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
},
|
|
62
62
|
"module": "./index.esm.js",
|
|
63
63
|
"main": "./index.cjs.js",
|
|
64
|
-
"version": "2.0.0-beta.
|
|
64
|
+
"version": "2.0.0-beta.114"
|
|
65
65
|
}
|
package/swr-mutation.cjs.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var r = require('swr/mutation');
|
|
6
4
|
var createApi = require('./createApi.cjs.js');
|
|
7
5
|
var createSwrApi = require('./createSwrApi.cjs.js');
|
|
8
6
|
require('@koine/utils');
|
|
9
7
|
require('swr');
|
|
10
8
|
|
|
11
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
-
|
|
13
|
-
var r__default = /*#__PURE__*/_interopDefaultLegacy(r);
|
|
14
|
-
|
|
15
9
|
let a=(t,e)=>(a,o,i)=>// config.fetcher = sender;
|
|
16
10
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
17
|
-
|
|
11
|
+
r(// @ts-expect-error FIXME: I can't get it...
|
|
18
12
|
o?[a,o]:a,async(// if the first argument is an array the second one are the base options
|
|
19
13
|
// defined when calling the usePost/Put/etc. hook, these will be overriden
|
|
20
14
|
// by the _options just here below
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./swr-mutation";
|
package/swr.cjs.js
CHANGED
package/swr.esm.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./swr";
|
package/types.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
type _Response = Response;
|
|
2
|
-
type ExtractEndpointParams<T extends string> = string extends T ? Record<string, string> : T extends `${infer _Start}{${infer Param}}${infer Rest}` ? {
|
|
2
|
+
type ExtractEndpointParams<T extends string> = string | number extends T ? Record<string, string> : T extends `${infer _Start}{${infer Param}}${infer Rest}` ? {
|
|
3
3
|
[k in Param | keyof ExtractEndpointParams<Rest>]: string | number;
|
|
4
4
|
} : T extends `${infer _Start}{${infer Param}}` ? {
|
|
5
5
|
[k in Param]: string | number;
|
|
6
|
-
} :
|
|
6
|
+
} : {};
|
|
7
7
|
export declare namespace Api {
|
|
8
8
|
export type ClientOptions = {
|
|
9
9
|
headers?: RequestInit["headers"];
|