@koine/api 2.0.0-beta.12 → 2.0.0-beta.120

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.
Files changed (75) hide show
  1. package/ApiError.cjs.d.ts +2 -0
  2. package/ApiError.cjs.default.js +1 -0
  3. package/ApiError.cjs.js +14 -0
  4. package/ApiError.cjs.mjs +2 -0
  5. package/ApiError.d.ts +3 -9
  6. package/ApiError.esm.d.ts +2 -0
  7. package/ApiError.esm.js +9 -0
  8. package/createApi.cjs.d.ts +2 -0
  9. package/createApi.cjs.default.js +1 -0
  10. package/createApi.cjs.js +28 -0
  11. package/createApi.cjs.mjs +2 -0
  12. package/createApi.d.ts +2 -7
  13. package/createApi.esm.d.ts +2 -0
  14. package/createApi.esm.js +23 -0
  15. package/createApiResultFail.cjs.d.ts +2 -0
  16. package/createApiResultFail.cjs.default.js +1 -0
  17. package/createApiResultFail.cjs.js +9 -0
  18. package/createApiResultFail.cjs.mjs +2 -0
  19. package/createApiResultFail.d.ts +3 -1
  20. package/createApiResultFail.esm.d.ts +2 -0
  21. package/createApiResultFail.esm.js +3 -0
  22. package/createApiResultOk.cjs.d.ts +2 -0
  23. package/createApiResultOk.cjs.default.js +1 -0
  24. package/createApiResultOk.cjs.js +8 -0
  25. package/createApiResultOk.cjs.mjs +2 -0
  26. package/createApiResultOk.d.ts +2 -1
  27. package/createApiResultOk.esm.d.ts +2 -0
  28. package/createApiResultOk.esm.js +3 -0
  29. package/createSwrApi.cjs.js +46 -0
  30. package/createSwrApi.esm.js +43 -0
  31. package/index.cjs.d.ts +1 -0
  32. package/index.cjs.default.js +1 -0
  33. package/index.cjs.js +14 -0
  34. package/index.cjs.mjs +2 -0
  35. package/index.d.ts +1 -2
  36. package/index.esm.d.ts +1 -0
  37. package/index.esm.js +5 -0
  38. package/next/nextApiResponse.d.ts +6 -0
  39. package/{nextApiResponse12.d.ts → next/nextApiResponse12.d.ts} +1 -1
  40. package/next.cjs.d.ts +1 -0
  41. package/next.cjs.default.js +1 -0
  42. package/next.cjs.js +12 -0
  43. package/next.cjs.mjs +2 -0
  44. package/next.d.ts +2 -0
  45. package/next.esm.d.ts +1 -0
  46. package/next.esm.js +9 -0
  47. package/package.json +53 -12
  48. package/swr/createSwrApi.d.ts +10 -0
  49. package/swr-mutation/createSwrMutationApi.d.ts +15 -0
  50. package/swr-mutation.cjs.d.ts +1 -0
  51. package/swr-mutation.cjs.default.js +1 -0
  52. package/swr-mutation.cjs.js +20 -0
  53. package/swr-mutation.cjs.mjs +2 -0
  54. package/swr-mutation.d.ts +1 -0
  55. package/swr-mutation.esm.d.ts +1 -0
  56. package/swr-mutation.esm.js +18 -0
  57. package/swr.cjs.d.ts +1 -0
  58. package/swr.cjs.default.js +1 -0
  59. package/swr.cjs.js +10 -0
  60. package/swr.cjs.mjs +2 -0
  61. package/swr.d.ts +1 -0
  62. package/swr.esm.d.ts +1 -0
  63. package/swr.esm.js +4 -0
  64. package/types.d.ts +126 -0
  65. package/typings.d.ts +11 -532
  66. package/ApiError.mjs +0 -14
  67. package/createApi.mjs +0 -128
  68. package/createApiResultFail.mjs +0 -7
  69. package/createApiResultOk.mjs +0 -8
  70. package/createSwrApi.d.ts +0 -34
  71. package/createSwrApi.mjs +0 -82
  72. package/index.mjs +0 -6
  73. package/nextApiResponse.d.ts +0 -5
  74. package/nextApiResponse.mjs +0 -12
  75. package/nextApiResponse12.mjs +0 -13
@@ -0,0 +1,2 @@
1
+ export * from "./ApiError";
2
+ export { default } from "./ApiError";
@@ -0,0 +1 @@
1
+ exports._default = require('./ApiError.cjs.js').default;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Custom `ApiError` class extending `Error` to throw in failed response.
7
+ *
8
+ * @see https://eslint.org/docs/rules/no-throw-literal
9
+ * @see https://github.com/sindresorhus/ky/blob/main/source/errors/HTTPError.ts
10
+ *
11
+ */class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
12
+
13
+ exports.ApiError = ApiError;
14
+ exports.default = ApiError;
@@ -0,0 +1,2 @@
1
+ export * from './ApiError.cjs.js';
2
+ export { _default as default } from './ApiError.cjs.default.js';
package/ApiError.d.ts CHANGED
@@ -1,11 +1,5 @@
1
- /**
2
- * Custom `ApiError` class extending `Error` to throw in failed response.
3
- *
4
- * @see https://eslint.org/docs/rules/no-throw-literal
5
- * @see https://github.com/sindresorhus/ky/blob/main/source/errors/HTTPError.ts
6
- *
7
- */
8
- export declare class ApiError<TResponseFail extends Koine.Api.ResponseFail = unknown> extends Error {
9
- constructor(result: Koine.Api.ResultFail<TResponseFail>);
1
+ import type { Api } from "./types";
2
+ export declare class ApiError<TResponseFail extends Api.ResponseFail = unknown> extends Error {
3
+ constructor(result: Api.ResultFail<TResponseFail>);
10
4
  }
11
5
  export default ApiError;
@@ -0,0 +1,2 @@
1
+ export * from "./ApiError";
2
+ export { default } from "./ApiError";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Custom `ApiError` class extending `Error` to throw in failed response.
3
+ *
4
+ * @see https://eslint.org/docs/rules/no-throw-literal
5
+ * @see https://github.com/sindresorhus/ky/blob/main/source/errors/HTTPError.ts
6
+ *
7
+ */class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
8
+
9
+ export { ApiError, ApiError as default };
@@ -0,0 +1,2 @@
1
+ export * from "./createApi";
2
+ export { default } from "./createApi";
@@ -0,0 +1 @@
1
+ exports._default = require('./createApi.cjs.js').default;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ let o=["get","post","put","patch","delete"];/**
8
+ * Create api client
9
+ *
10
+ * @param apiName Short name to use in debug logs
11
+ * @param baseUrl Either relativ eor absolute, it must end without trailing slash
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: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
15
+ // @see https://dev.to/rashidshamloo/adding-timeout-and-multiple-abort-signals-to-fetch-typescriptreact-33bb
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
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
18
+ // there is no specific HTTP error for this, we can consider these
19
+ // two statuses though:
20
+ // - [100 Continue](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100)
21
+ // - [501 Not Implemented](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501)
22
+ {data:null,msg:T,status:100,fail:!0,ok:!1}),k&&R?.fail)// throw new ApiError<Failed>(result);
23
+ // I prefer to throw an object literal despite what eslint says
24
+ // eslint-disable-next-line no-throw-literal
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),{})};
26
+
27
+ exports.createApi = createApi;
28
+ exports.default = createApi;
@@ -0,0 +1,2 @@
1
+ export * from './createApi.cjs.js';
2
+ export { _default as default } from './createApi.cjs.default.js';
package/createApi.d.ts CHANGED
@@ -1,8 +1,3 @@
1
- /**
2
- * Create api client
3
- *
4
- * @param apiName Short name to use in debug logs
5
- * @param baseUrl Either relativ eor absolute, it must end without trailing slash
6
- */
7
- export declare const createApi: <TEndpoints extends Koine.Api.Endpoints>(apiName: string, baseUrl: string, options?: Koine.Api.ClientOptions) => Koine.Api.Client<TEndpoints>;
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>;
8
3
  export default createApi;
@@ -0,0 +1,2 @@
1
+ export * from "./createApi";
2
+ export { default } from "./createApi";
@@ -0,0 +1,23 @@
1
+ import { isFullObject, buildUrlQueryString, errorToString } from '@koine/utils';
2
+
3
+ let o=["get","post","put","patch","delete"];/**
4
+ * Create api client
5
+ *
6
+ * @param apiName Short name to use in debug logs
7
+ * @param baseUrl Either relativ eor absolute, it must end without trailing slash
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: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
11
+ // @see https://dev.to/rashidshamloo/adding-timeout-and-multiple-abort-signals-to-fetch-typescriptreact-33bb
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
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
14
+ // there is no specific HTTP error for this, we can consider these
15
+ // two statuses though:
16
+ // - [100 Continue](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100)
17
+ // - [501 Not Implemented](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501)
18
+ {data:null,msg:T,status:100,fail:!0,ok:!1}),k&&R?.fail)// throw new ApiError<Failed>(result);
19
+ // I prefer to throw an object literal despite what eslint says
20
+ // eslint-disable-next-line no-throw-literal
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),{})};
22
+
23
+ export { createApi, createApi as default };
@@ -0,0 +1,2 @@
1
+ export * from "./createApiResultFail";
2
+ export { default } from "./createApiResultFail";
@@ -0,0 +1 @@
1
+ exports._default = require('./createApiResultFail.cjs.js').default;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ let createApiResultOk=(t={},e)=>({ok:!0,fail:!1,data:t,msg:e||"",status:200});let createApiResultFail=(t={},e,a)=>({fail:!0,data:t,msg:e||"",status:a||404});
6
+
7
+ exports.createApiResultFail = createApiResultFail;
8
+ exports.createApiResultOk = createApiResultOk;
9
+ exports.default = createApiResultFail;
@@ -0,0 +1,2 @@
1
+ export * from './createApiResultFail.cjs.js';
2
+ export { _default as default } from './createApiResultFail.cjs.default.js';
@@ -1,2 +1,4 @@
1
- export declare const createApiResultFail: <T>(data?: T, msg?: string, status?: number) => Koine.Api.ResultFail<T>;
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>;
2
4
  export default createApiResultFail;
@@ -0,0 +1,2 @@
1
+ export * from "./createApiResultFail";
2
+ export { default } from "./createApiResultFail";
@@ -0,0 +1,3 @@
1
+ let createApiResultOk=(t={},e)=>({ok:!0,fail:!1,data:t,msg:e||"",status:200});let createApiResultFail=(t={},e,a)=>({fail:!0,data:t,msg:e||"",status:a||404});
2
+
3
+ export { createApiResultFail, createApiResultOk, createApiResultFail as default };
@@ -0,0 +1,2 @@
1
+ export * from "./createApiResultOk";
2
+ export { default } from "./createApiResultOk";
@@ -0,0 +1 @@
1
+ exports._default = require('./createApiResultOk.cjs.js').default;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});
6
+
7
+ exports.createApiResultOk = createApiResultOk;
8
+ exports.default = createApiResultOk;
@@ -0,0 +1,2 @@
1
+ export * from './createApiResultOk.cjs.js';
2
+ export { _default as default } from './createApiResultOk.cjs.default.js';
@@ -1,2 +1,3 @@
1
- export declare const createApiResultOk: <T>(data?: T, msg?: string) => Koine.Api.ResultOk<T>;
1
+ import type { Api } from "./types";
2
+ export declare let createApiResultOk: <T>(data?: T, msg?: string) => Api.ResultOk<T>;
2
3
  export default createApiResultOk;
@@ -0,0 +1,2 @@
1
+ export * from "./createApiResultOk";
2
+ export { default } from "./createApiResultOk";
@@ -0,0 +1,3 @@
1
+ let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});
2
+
3
+ export { createApiResultOk, createApiResultOk as default };
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ var e = require('swr');
4
+ var utils = require('@koine/utils');
5
+ var createApi = require('./createApi.cjs.js');
6
+
7
+ /**
8
+ * Conditional fetching as option
9
+ *
10
+ * Moving this to an option allows us to keep the endpoints typed dictionary,
11
+ * e.g. we can write:
12
+ *
13
+ * ```js
14
+ * const { data, mutate } = myApi.use("User/{id}",
15
+ * { params: { id: aVariableMaybeContainingAnId || "" }, },
16
+ * { when: !!aVariableMaybeContainingAnId }
17
+ * );
18
+ *
19
+ * // we still have typed `data`, `mutate`
20
+ * ```
21
+ * @see https://swr.vercel.app/docs/conditional-fetching
22
+ *//**
23
+ * @private
24
+ */let createUseApi=t=>(i,o,p)=>{// const fetcher = async (_endpoint: TEndpoint) => {
25
+ // try {
26
+ // const { ok, data } = await api.get(_endpoint, {
27
+ // ...(options || {}),
28
+ // throwErr: true,
29
+ // });
30
+ // if (ok) {
31
+ // return data;
32
+ // }
33
+ // throw new Error() as unknown as Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>;
34
+ // } catch(e) {
35
+ // throw new Error() as unknown as Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>;;
36
+ // }
37
+ // };
38
+ // }
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>;
40
+ // eslint-disable-next-line react-hooks/rules-of-hooks
41
+ return e(p?.when===!1||utils.isFunction(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};/**
42
+ * It creates an api client extended with auto-generated SWR wrapper hooks
43
+ */let createSwrApi=(...e)=>{let r=createApi.createApi(...e);return r.use=createUseApi(r),r};
44
+
45
+ exports.createSwrApi = createSwrApi;
46
+ exports.createUseApi = createUseApi;
@@ -0,0 +1,43 @@
1
+ import e from 'swr';
2
+ import { isFunction } from '@koine/utils';
3
+ import { createApi } from './createApi.esm.js';
4
+
5
+ /**
6
+ * Conditional fetching as option
7
+ *
8
+ * Moving this to an option allows us to keep the endpoints typed dictionary,
9
+ * e.g. we can write:
10
+ *
11
+ * ```js
12
+ * const { data, mutate } = myApi.use("User/{id}",
13
+ * { params: { id: aVariableMaybeContainingAnId || "" }, },
14
+ * { when: !!aVariableMaybeContainingAnId }
15
+ * );
16
+ *
17
+ * // we still have typed `data`, `mutate`
18
+ * ```
19
+ * @see https://swr.vercel.app/docs/conditional-fetching
20
+ *//**
21
+ * @private
22
+ */let createUseApi=t=>(i,o,p)=>{// const fetcher = async (_endpoint: TEndpoint) => {
23
+ // try {
24
+ // const { ok, data } = await api.get(_endpoint, {
25
+ // ...(options || {}),
26
+ // throwErr: true,
27
+ // });
28
+ // if (ok) {
29
+ // return data;
30
+ // }
31
+ // throw new Error() as unknown as Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>;
32
+ // } catch(e) {
33
+ // throw new Error() as unknown as Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>;;
34
+ // }
35
+ // };
36
+ // }
37
+ 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>;
38
+ // eslint-disable-next-line react-hooks/rules-of-hooks
39
+ return e(p?.when===!1||isFunction(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};/**
40
+ * It creates an api client extended with auto-generated SWR wrapper hooks
41
+ */let createSwrApi=(...e)=>{let r=createApi(...e);return r.use=createUseApi(r),r};
42
+
43
+ export { createUseApi as a, createSwrApi as c };
package/index.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./index";
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;
package/index.cjs.js ADDED
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var ApiError = require('./ApiError.cjs.js');
4
+ var createApi = require('./createApi.cjs.js');
5
+ var createApiResultFail = require('./createApiResultFail.cjs.js');
6
+ var createApiResultOk = require('./createApiResultOk.cjs.js');
7
+ require('@koine/utils');
8
+
9
+
10
+
11
+ exports.ApiError = ApiError.ApiError;
12
+ exports.createApi = createApi.createApi;
13
+ exports.createApiResultFail = createApiResultFail.createApiResultFail;
14
+ exports.createApiResultOk = createApiResultOk.createApiResultOk;
package/index.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './index.cjs.js';
2
+ export { _default as default } from './index.cjs.default.js';
package/index.d.ts CHANGED
@@ -2,5 +2,4 @@ export { ApiError } from "./ApiError";
2
2
  export { createApi } from "./createApi";
3
3
  export { createApiResultFail } from "./createApiResultFail";
4
4
  export { createApiResultOk } from "./createApiResultOk";
5
- export { createSwrApi } from "./createSwrApi";
6
- export { nextApiResponse12 } from "./nextApiResponse12";
5
+ export type { Api } from "./types";
package/index.esm.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./index";
package/index.esm.js ADDED
@@ -0,0 +1,5 @@
1
+ export { ApiError } from './ApiError.esm.js';
2
+ export { createApi } from './createApi.esm.js';
3
+ export { createApiResultFail } from './createApiResultFail.esm.js';
4
+ export { createApiResultOk } from './createApiResultOk.esm.js';
5
+ import '@koine/utils';
@@ -0,0 +1,6 @@
1
+ import { NextResponse } from "next/server";
2
+ export declare let nextApiResponse: {
3
+ ok<T>(data: T, msg?: string): NextResponse<import("..").Api.ResultOk<T>>;
4
+ fail<T_1>(data: T_1, msg?: string, status?: number): NextResponse<import("..").Api.ResultFail<T_1>>;
5
+ };
6
+ export default nextApiResponse;
@@ -1,5 +1,5 @@
1
1
  import type { NextApiResponse } from "next";
2
- export declare const nextApiResponse12: (nextRes: NextApiResponse) => {
2
+ export declare let nextApiResponse12: (nextRes: NextApiResponse) => {
3
3
  ok<T>(data: T, msg?: string): void;
4
4
  fail<T_1>(data: T_1, msg?: string, status?: number): void;
5
5
  };
package/next.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./next";
@@ -0,0 +1 @@
1
+ exports._default = require('./next.cjs.js').default;
package/next.cjs.js ADDED
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var server = require('next/server');
4
+ var createApiResultFail = require('./createApiResultFail.cjs.js');
5
+ var createApiResultOk = require('./createApiResultOk.cjs.js');
6
+
7
+ let nextApiResponse={ok:(t,r)=>server.NextResponse.json(createApiResultOk.createApiResultOk(t,r)),fail:(o,r,p)=>server.NextResponse.json(createApiResultFail.createApiResultFail(o,r,p))};
8
+
9
+ let nextApiResponse12=s=>({ok(e,o){s.status(200).json(createApiResultOk.createApiResultOk(e,o));},fail(t,o,p){s.status(p||404).json(createApiResultFail.createApiResultFail(t,o,p));}});
10
+
11
+ exports.nextApiResponse = nextApiResponse;
12
+ exports.nextApiResponse12 = nextApiResponse12;
package/next.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './next.cjs.js';
2
+ export { _default as default } from './next.cjs.default.js';
package/next.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { nextApiResponse } from "./next/nextApiResponse";
2
+ export { nextApiResponse12 } from "./next/nextApiResponse12";
package/next.esm.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./next";
package/next.esm.js ADDED
@@ -0,0 +1,9 @@
1
+ import { NextResponse } from 'next/server';
2
+ import { createApiResultFail } from './createApiResultFail.esm.js';
3
+ import { createApiResultOk } from './createApiResultOk.esm.js';
4
+
5
+ let nextApiResponse={ok:(t,r)=>NextResponse.json(createApiResultOk(t,r)),fail:(o,r,p)=>NextResponse.json(createApiResultFail(o,r,p))};
6
+
7
+ let nextApiResponse12=s=>({ok(e,o){s.status(200).json(createApiResultOk(e,o));},fail(t,o,p){s.status(p||404).json(createApiResultFail(t,o,p));}});
8
+
9
+ export { nextApiResponse, nextApiResponse12 };
package/package.json CHANGED
@@ -1,6 +1,13 @@
1
1
  {
2
2
  "name": "@koine/api",
3
3
  "sideEffects": false,
4
+ "dependencies": {
5
+ "@koine/utils": "2.0.0-beta.120"
6
+ },
7
+ "peerDependencies": {
8
+ "next": "^14.0.4",
9
+ "swr": "^2.2.4"
10
+ },
4
11
  "peerDependenciesMeta": {
5
12
  "next": {
6
13
  "optional": true
@@ -9,16 +16,50 @@
9
16
  "optional": true
10
17
  }
11
18
  },
12
- "dependencies": {
13
- "@koine/utils": "2.0.0-beta.12"
14
- },
15
- "module": "./index.mjs",
16
- "main": "./index.js",
17
- "types": "./index.d.ts",
18
- "peerDependencies": {
19
- "next": "^13.4.12",
20
- "swr": "^2.2.0",
21
- "type-fest": "^4.1.0"
19
+ "exports": {
20
+ "./package.json": "./package.json",
21
+ ".": {
22
+ "module": "./index.esm.js",
23
+ "import": "./index.cjs.mjs",
24
+ "default": "./index.cjs.js"
25
+ },
26
+ "./ApiError": {
27
+ "module": "./ApiError.esm.js",
28
+ "import": "./ApiError.cjs.mjs",
29
+ "default": "./ApiError.cjs.js"
30
+ },
31
+ "./createApi": {
32
+ "module": "./createApi.esm.js",
33
+ "import": "./createApi.cjs.mjs",
34
+ "default": "./createApi.cjs.js"
35
+ },
36
+ "./createApiResultFail": {
37
+ "module": "./createApiResultFail.esm.js",
38
+ "import": "./createApiResultFail.cjs.mjs",
39
+ "default": "./createApiResultFail.cjs.js"
40
+ },
41
+ "./createApiResultOk": {
42
+ "module": "./createApiResultOk.esm.js",
43
+ "import": "./createApiResultOk.cjs.mjs",
44
+ "default": "./createApiResultOk.cjs.js"
45
+ },
46
+ "./next": {
47
+ "module": "./next.esm.js",
48
+ "import": "./next.cjs.mjs",
49
+ "default": "./next.cjs.js"
50
+ },
51
+ "./swr": {
52
+ "module": "./swr.esm.js",
53
+ "import": "./swr.cjs.mjs",
54
+ "default": "./swr.cjs.js"
55
+ },
56
+ "./swr-mutation": {
57
+ "module": "./swr-mutation.esm.js",
58
+ "import": "./swr-mutation.cjs.mjs",
59
+ "default": "./swr-mutation.cjs.js"
60
+ }
22
61
  },
23
- "version": "2.0.0-beta.12"
24
- }
62
+ "module": "./index.esm.js",
63
+ "main": "./index.cjs.js",
64
+ "version": "2.0.0-beta.120"
65
+ }
@@ -0,0 +1,10 @@
1
+ import { type BareFetcher, type SWRConfiguration, type SWRResponse } from "swr";
2
+ import type { Api } from "../types";
3
+ type SWRConfigurationExtended<Data = any, Error = any, Fn extends BareFetcher<any> = BareFetcher<any>> = SWRConfiguration<Data, Error, Fn> & {
4
+ when?: boolean | (() => boolean);
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">, config?: SWRConfigurationExtended<Api.EndpointResponseOk<TEndpoints, TEndpoint, "get">, Api.EndpointResponseFail<TEndpoints, TEndpoint, "get">>) => SWRResponse<Api.GetDataType<TEndpoints, TEndpoint, "get", "ok">, Api.GetDataType<TEndpoints, TEndpoint, "get", "fail">, any>;
7
+ export declare let createSwrApi: <TEndpoints extends Api.Endpoints>(apiName: string, baseUrl: string, options?: Api.ClientOptions | undefined) => Api.Client<TEndpoints> & {
8
+ use: ReturnType<typeof createUseApi<TEndpoints>>;
9
+ };
10
+ export default createSwrApi;
@@ -0,0 +1,15 @@
1
+ import { type SWRMutationConfiguration, type SWRMutationResponse } from "swr/mutation";
2
+ import { createUseApi } from "../swr/createSwrApi";
3
+ import type { Api } from "../types";
4
+ type MutationRequestMethod = Exclude<Api.RequestMethod, "get">;
5
+ type MutationHookName = Exclude<keyof Api.HooksMapsByName, "use">;
6
+ type KoineApiMethodHookSWR<THookName extends MutationHookName, TEndpoints extends Api.Endpoints> = <TEndpoint extends Api.EndpointUrl<TEndpoints>, TMethod extends MutationRequestMethod = Api.HooksMapsByName[THookName]>(endpoint: TEndpoint, options?: Api.EndpointOptions<TEndpoints, TEndpoint, TMethod>, config?: SWRMutationConfiguration<Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>, TEndpoint, Api.EndpointOptions<TEndpoints, TEndpoint, TMethod>>) => SWRMutationResponse<Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>, TEndpoint, Api.EndpointOptions<TEndpoints, TEndpoint, TMethod>>;
7
+ export declare let createSwrMutationApi: <TEndpoints extends Api.Endpoints>(apiName: string, baseUrl: string, options?: Api.ClientOptions | undefined) => Api.Client<TEndpoints> & {
8
+ usePost: KoineApiMethodHookSWR<"usePost", TEndpoints>;
9
+ usePut: KoineApiMethodHookSWR<"usePut", TEndpoints>;
10
+ usePatch: KoineApiMethodHookSWR<"usePatch", TEndpoints>;
11
+ useDelete: KoineApiMethodHookSWR<"useDelete", TEndpoints>;
12
+ } & {
13
+ use: ReturnType<typeof createUseApi<TEndpoints>>;
14
+ };
15
+ export default createSwrMutationApi;
@@ -0,0 +1 @@
1
+ export * from "./swr-mutation";
@@ -0,0 +1 @@
1
+ exports._default = require('./swr-mutation.cjs.js').default;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var r = require('swr/mutation');
4
+ var createApi = require('./createApi.cjs.js');
5
+ var createSwrApi = require('./createSwrApi.cjs.js');
6
+ require('@koine/utils');
7
+ require('swr');
8
+
9
+ let a=(t,e)=>(a,o,i)=>// config.fetcher = sender;
10
+ // eslint-disable-next-line react-hooks/rules-of-hooks
11
+ r(// @ts-expect-error FIXME: I can't get it...
12
+ o?[a,o]:a,async(// if the first argument is an array the second one are the base options
13
+ // defined when calling the usePost/Put/etc. hook, these will be overriden
14
+ // by the _options just here below
15
+ r,// these are the options arriving when calling `trigger({ json, query, etc... })
16
+ 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);/**
17
+ * It creates an api client extended with auto-generated SWR wrapper hooks
18
+ */let createSwrMutationApi=(...r)=>{let o=createApi.createApi(...r);return o.use=createSwrApi.createUseApi(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r);}),o};
19
+
20
+ exports.createSwrMutationApi = createSwrMutationApi;
@@ -0,0 +1,2 @@
1
+ export * from './swr-mutation.cjs.js';
2
+ export { _default as default } from './swr-mutation.cjs.default.js';
@@ -0,0 +1 @@
1
+ export { createSwrMutationApi } from "./swr-mutation/createSwrMutationApi";
@@ -0,0 +1 @@
1
+ export * from "./swr-mutation";
@@ -0,0 +1,18 @@
1
+ import r from 'swr/mutation';
2
+ import { createApi } from './createApi.esm.js';
3
+ import { a as createUseApi } from './createSwrApi.esm.js';
4
+ import '@koine/utils';
5
+ import 'swr';
6
+
7
+ let a=(t,e)=>(a,o,i)=>// config.fetcher = sender;
8
+ // eslint-disable-next-line react-hooks/rules-of-hooks
9
+ r(// @ts-expect-error FIXME: I can't get it...
10
+ o?[a,o]:a,async(// if the first argument is an array the second one are the base options
11
+ // defined when calling the usePost/Put/etc. hook, these will be overriden
12
+ // by the _options just here below
13
+ r,// these are the options arriving when calling `trigger({ json, query, etc... })
14
+ 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);/**
15
+ * It creates an api client extended with auto-generated SWR wrapper hooks
16
+ */let createSwrMutationApi=(...r)=>{let o=createApi(...r);return o.use=createUseApi(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r);}),o};
17
+
18
+ export { createSwrMutationApi };
package/swr.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./swr";
@@ -0,0 +1 @@
1
+ exports._default = require('./swr.cjs.js').default;
package/swr.cjs.js ADDED
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var createSwrApi = require('./createSwrApi.cjs.js');
4
+ require('swr');
5
+ require('@koine/utils');
6
+ require('./createApi.cjs.js');
7
+
8
+
9
+
10
+ exports.createSwrApi = createSwrApi.createSwrApi;
package/swr.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './swr.cjs.js';
2
+ export { _default as default } from './swr.cjs.default.js';
package/swr.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { createSwrApi } from "./swr/createSwrApi";
package/swr.esm.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./swr";
package/swr.esm.js ADDED
@@ -0,0 +1,4 @@
1
+ export { c as createSwrApi } from './createSwrApi.esm.js';
2
+ import 'swr';
3
+ import '@koine/utils';
4
+ import './createApi.esm.js';