@koine/api 2.0.0-beta.75 → 2.0.0-beta.77
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.js +1 -8
- package/cjs/ApiError.d.ts +5 -0
- package/cjs/ApiError.js +1 -0
- package/cjs/createApi.d.ts +3 -0
- package/cjs/createApi.js +1 -0
- package/cjs/createApiResultFail.d.ts +4 -0
- package/cjs/createApiResultFail.js +1 -0
- package/cjs/createApiResultOk.d.ts +3 -0
- package/cjs/createApiResultOk.js +1 -0
- package/cjs/index.d.ts +5 -0
- package/cjs/index.js +1 -0
- package/cjs/next/nextApiResponse.d.ts +6 -0
- package/cjs/next/nextApiResponse.js +1 -0
- package/cjs/next/nextApiResponse12.d.ts +6 -0
- package/cjs/next/nextApiResponse12.js +1 -0
- package/cjs/next.d.ts +2 -0
- package/cjs/next.js +1 -0
- package/cjs/package.json +22 -0
- package/cjs/swr/createSwrApi.d.ts +9 -0
- package/cjs/swr/createSwrApi.js +1 -0
- package/cjs/swr-mutation/createSwrMutationApi.d.ts +19 -0
- package/cjs/swr-mutation/createSwrMutationApi.js +1 -0
- package/cjs/swr-mutation.d.ts +1 -0
- package/cjs/swr-mutation.js +1 -0
- package/cjs/swr.d.ts +1 -0
- package/cjs/swr.js +1 -0
- package/cjs/types.d.ts +126 -0
- package/cjs/types.js +1 -0
- package/createApi.js +1 -115
- package/createApiResultFail.js +1 -14
- package/createApiResultOk.js +1 -8
- package/index.js +1 -4
- package/next/nextApiResponse.js +1 -12
- package/next/nextApiResponse12.js +1 -11
- package/next.js +1 -2
- package/package.json +23 -72
- package/swr/createSwrApi.js +1 -22
- package/swr-mutation/createSwrMutationApi.js +1 -27
- package/swr-mutation.js +1 -1
- package/swr.js +1 -1
- package/types.js +1 -1
- package/README.md +0 -1
- package/createApi.cjs.js +0 -7
- package/createApi.esm.js +0 -5
- package/createApiResultOk.cjs.js +0 -8
- package/createApiResultOk.esm.js +0 -5
- package/createSwrApi.cjs.js +0 -14
- package/createSwrApi.esm.js +0 -7
- package/index.cjs.d.ts +0 -1
- package/index.cjs.default.js +0 -1
- package/index.cjs.js +0 -14
- package/index.cjs.mjs +0 -2
- package/index.esm.js +0 -7
- package/next.cjs.d.ts +0 -1
- package/next.cjs.default.js +0 -1
- package/next.cjs.js +0 -13
- package/next.cjs.mjs +0 -2
- package/next.esm.js +0 -8
- package/swr-mutation.cjs.d.ts +0 -1
- package/swr-mutation.cjs.default.js +0 -1
- package/swr-mutation.cjs.js +0 -17
- package/swr-mutation.cjs.mjs +0 -2
- package/swr-mutation.esm.js +0 -9
- package/swr.cjs.d.ts +0 -1
- package/swr.cjs.default.js +0 -1
- package/swr.cjs.js +0 -12
- package/swr.cjs.mjs +0 -2
- package/swr.esm.js +0 -4
- package/typings.d.ts +0 -13
package/ApiError.js
CHANGED
|
@@ -1,8 +1 @@
|
|
|
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;
|
|
1
|
+
export class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r)}}export default ApiError;
|
package/cjs/ApiError.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r)}}export default ApiError;
|
package/cjs/createApi.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{buildUrlQueryString as e,errorToString as t,isFullObject as r}from"@koine/utils";let o=["get","post","put","patch","delete"];export 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(r(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+=e(j));let O=null,R=null,S="";try{O=await fetch(q,v)}catch(e){S=t(e)}if(m&&clearTimeout(m),O)try{R=E?await E(O,h||{}):await O.json()}catch(e){S=t(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),{})};export default createApi;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export let createApiResultOk=(t={},e)=>({ok:!0,fail:!1,data:t,msg:e||"",status:200});export let createApiResultFail=(t={},e,a)=>({fail:!0,data:t,msg:e||"",status:a||404});export default createApiResultFail;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});export default createApiResultOk;
|
package/cjs/index.d.ts
ADDED
package/cjs/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{ApiError}from"./ApiError";export{createApi}from"./createApi";export{createApiResultFail}from"./createApiResultFail";export{createApiResultOk}from"./createApiResultOk";
|
|
@@ -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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{NextResponse as e}from"next/server";import{createApiResultFail as t}from"../createApiResultFail";import{createApiResultOk as o}from"../createApiResultOk";export let nextApiResponse={ok:(t,r)=>e.json(o(t,r)),fail:(o,r,p)=>e.json(t(o,r,p))};export default nextApiResponse;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createApiResultFail as e}from"../createApiResultFail";import{createApiResultOk as t}from"../createApiResultOk";export let nextApiResponse12=s=>({ok(e,o){s.status(200).json(t(e,o))},fail(t,o,p){s.status(p||404).json(e(t,o,p))}});export default nextApiResponse12;
|
package/cjs/next.d.ts
ADDED
package/cjs/next.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{nextApiResponse}from"./next/nextApiResponse";export{nextApiResponse12}from"./next/nextApiResponse12";
|
package/cjs/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@koine/api",
|
|
3
|
+
"sideEffects": false,
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"@koine/utils": "*"
|
|
6
|
+
},
|
|
7
|
+
"peerDependencies": {
|
|
8
|
+
"next": "^14.0.4",
|
|
9
|
+
"swr": "^2.2.4"
|
|
10
|
+
},
|
|
11
|
+
"peerDependenciesMeta": {
|
|
12
|
+
"next": {
|
|
13
|
+
"optional": true
|
|
14
|
+
},
|
|
15
|
+
"swr": {
|
|
16
|
+
"optional": true
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"module": "./index.js",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"main": "./index.js"
|
|
22
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
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 createSwrApi: <TEndpoints extends Api.Endpoints>(apiName: string, baseUrl: string, options?: Api.ClientOptions | undefined) => Api.Client<TEndpoints> & {
|
|
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>;
|
|
8
|
+
};
|
|
9
|
+
export default createSwrApi;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"swr";import{isFunction as r}from"@koine/utils";import{createApi as t}from"../createApi";export let createUseApi=t=>(i,o,p)=>{let a=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};return e(p?.when===!1||r(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};export let createSwrApi=(...e)=>{let r=t(...e);return r.use=createUseApi(r),r};export default createSwrApi;
|
|
@@ -0,0 +1,19 @@
|
|
|
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: <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
|
+
} & {
|
|
16
|
+
when?: boolean | (() => boolean) | undefined;
|
|
17
|
+
}) | undefined) => import("swr/dist/_internal").SWRResponse<Api.GetDataType<TEndpoints, TEndpoint, "get", "ok">, Api.GetDataType<TEndpoints, TEndpoint, "get", "fail">, any>;
|
|
18
|
+
};
|
|
19
|
+
export default createSwrMutationApi;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import r from"swr/mutation";import{createApi as t}from"../createApi";import{createUseApi as e}from"../swr/createSwrApi";let a=(t,e)=>(a,o,i)=>r(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);export let createSwrMutationApi=(...r)=>{let o=t(...r);return o.use=e(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r)}),o};export default createSwrMutationApi;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createSwrMutationApi } from "./swr-mutation/createSwrMutationApi";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{createSwrMutationApi}from"./swr-mutation/createSwrMutationApi";
|
package/cjs/swr.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createSwrApi } from "./swr/createSwrApi";
|
package/cjs/swr.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{createSwrApi}from"./swr/createSwrApi";
|
package/cjs/types.d.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
type _Response = Response;
|
|
2
|
+
type ExtractEndpointParams<T extends string> = string extends T ? Record<string, string> : T extends `${infer _Start}{${infer Param}}${infer Rest}` ? {
|
|
3
|
+
[k in Param | keyof ExtractEndpointParams<Rest>]: string | number;
|
|
4
|
+
} : T extends `${infer _Start}{${infer Param}}` ? {
|
|
5
|
+
[k in Param]: string | number;
|
|
6
|
+
} : never;
|
|
7
|
+
export declare namespace Api {
|
|
8
|
+
export type ClientOptions = {
|
|
9
|
+
headers?: RequestInit["headers"];
|
|
10
|
+
request?: Omit<RequestInit, "body" | "headers" | "method">;
|
|
11
|
+
throwErr?: boolean;
|
|
12
|
+
timeout?: number | false | null;
|
|
13
|
+
processReq?: RequestProcessor;
|
|
14
|
+
processRes?: ResponseProcessorRes;
|
|
15
|
+
processErr?: ResponseProcessorErr;
|
|
16
|
+
};
|
|
17
|
+
type ClientMethod<TMethod extends RequestMethod, TEndpoints extends Endpoints> = <TEndpoint extends EndpointUrl<TEndpoints>, TOptions extends EndpointOptions<TEndpoints, TEndpoint, TMethod>, TOk extends ResponseOk = EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, TFail extends ResponseFail = EndpointResponseFail<TEndpoints, TEndpoint, TMethod>>(endpoint: TEndpoint, options?: TOptions) => Promise<EndpointResult<TEndpoints, TEndpoint, TMethod>>;
|
|
18
|
+
export type Client<TEndpoints extends Endpoints> = {
|
|
19
|
+
[TMethod in RequestMethod]: ClientMethod<TMethod, TEndpoints>;
|
|
20
|
+
};
|
|
21
|
+
export type GetDataType<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod, TDataType extends keyof DataTypes<Uppercase<TMethod>>> = TEndpoints[TEndpoint][Uppercase<TMethod>] extends DataTypes<Uppercase<TMethod>> ? TEndpoints[TEndpoint][Uppercase<TMethod>][TDataType] : never;
|
|
22
|
+
export type EndpointOptions<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod> = RequestOptions<TEndpoints, TEndpoint, TMethod, GetDataType<TEndpoints, TEndpoint, TMethod, "json">, GetDataType<TEndpoints, TEndpoint, TMethod, "query">>;
|
|
23
|
+
export type EndpointResponseOk<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod> = GetDataType<TEndpoints, TEndpoint, TMethod, "ok">;
|
|
24
|
+
export type EndpointResponseFail<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod> = GetDataType<TEndpoints, TEndpoint, TMethod, "fail">;
|
|
25
|
+
type EndpointResult<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod> = Result<EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, EndpointResponseFail<TEndpoints, TEndpoint, TMethod>>;
|
|
26
|
+
export type Endpoints = Record<string, Endpoint>;
|
|
27
|
+
type Endpoint = {
|
|
28
|
+
[TMethod in Uppercase<RequestMethod>]?: DataTypes<TMethod>;
|
|
29
|
+
};
|
|
30
|
+
export type EndpointUrl<TEndpoints extends Endpoints> = Extract<keyof TEndpoints, string>;
|
|
31
|
+
type DataTypes<TMethod extends Uppercase<RequestMethod>> = {
|
|
32
|
+
json?: RequestJson;
|
|
33
|
+
query?: RequestQuery;
|
|
34
|
+
ok?: null | unknown;
|
|
35
|
+
fail?: null | unknown;
|
|
36
|
+
};
|
|
37
|
+
export type RequestMethod = "get" | "post" | "put" | "patch" | "delete";
|
|
38
|
+
type RequestJson = unknown;
|
|
39
|
+
type RequestQuery = unknown;
|
|
40
|
+
type RequestParams = unknown;
|
|
41
|
+
type RequestOptions<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod, TJson extends RequestJson, TQuery extends RequestQuery> = Omit<ClientOptions, "processReq"> & {
|
|
42
|
+
processReq?: EndpointRequestProcessor<TEndpoints, TEndpoint, TMethod>;
|
|
43
|
+
params?: ExtractEndpointParams<TEndpoint>;
|
|
44
|
+
query?: TQuery;
|
|
45
|
+
json?: TJson;
|
|
46
|
+
};
|
|
47
|
+
export type ResponseOk = unknown;
|
|
48
|
+
export type ResponseFail = unknown;
|
|
49
|
+
export type ResultOk<TResponse extends ResponseOk = ResponseOk> = {
|
|
50
|
+
status: _Response["status"];
|
|
51
|
+
msg: _Response["statusText"];
|
|
52
|
+
ok: true;
|
|
53
|
+
fail?: false;
|
|
54
|
+
data: TResponse;
|
|
55
|
+
};
|
|
56
|
+
export type ResultFail<TResponse extends ResponseFail = ResponseFail> = {
|
|
57
|
+
status: _Response["status"];
|
|
58
|
+
msg: Error["message"] | _Response["statusText"];
|
|
59
|
+
ok?: false;
|
|
60
|
+
fail: true;
|
|
61
|
+
data: TResponse;
|
|
62
|
+
};
|
|
63
|
+
export type Result<TResponseOk extends ResponseOk, TResponseFail extends ResponseFail> = {
|
|
64
|
+
status: _Response["status"];
|
|
65
|
+
msg: _Response["statusText"];
|
|
66
|
+
ok: true;
|
|
67
|
+
fail?: false;
|
|
68
|
+
data: TResponseOk;
|
|
69
|
+
} | {
|
|
70
|
+
status: _Response["status"];
|
|
71
|
+
msg: Error["message"] | _Response["statusText"];
|
|
72
|
+
ok?: false;
|
|
73
|
+
fail: true;
|
|
74
|
+
data: TResponseFail;
|
|
75
|
+
};
|
|
76
|
+
export type RequestProcessor = (method: RequestMethod, url: string, query: any, json: any, params: any, requestInit: RequestInit) => [
|
|
77
|
+
string,
|
|
78
|
+
RequestQuery,
|
|
79
|
+
RequestJson,
|
|
80
|
+
RequestParams,
|
|
81
|
+
RequestInit
|
|
82
|
+
];
|
|
83
|
+
export type EndpointRequestProcessor<TEndpoints extends Endpoints, TEndpoint extends EndpointUrl<TEndpoints>, TMethod extends RequestMethod> = (method: TMethod, url: string, query: EndpointOptions<TEndpoints, TEndpoint, TMethod>["query"], json: EndpointOptions<TEndpoints, TEndpoint, TMethod>["json"], params: EndpointOptions<TEndpoints, TEndpoint, TMethod>["params"], requestInit: RequestInit) => [
|
|
84
|
+
string,
|
|
85
|
+
EndpointOptions<TEndpoints, TEndpoint, TMethod>["query"],
|
|
86
|
+
EndpointOptions<TEndpoints, TEndpoint, TMethod>["json"],
|
|
87
|
+
EndpointOptions<TEndpoints, TEndpoint, TMethod>["params"],
|
|
88
|
+
RequestInit
|
|
89
|
+
];
|
|
90
|
+
type ResponseProcessorRes = <TResponseOk extends ResponseOk = ResponseOk, TResponseFail extends ResponseFail = ResponseFail>(response: _Response, options: any) => Promise<Result<TResponseOk, TResponseFail>>;
|
|
91
|
+
type ResponseProcessorErr = <TResponseOk extends ResponseOk = ResponseOk, TResponseFail extends ResponseFail = ResponseFail>(msg: string, options: any) => Promise<Result<TResponseOk, TResponseFail>>;
|
|
92
|
+
type HooksMaps = {
|
|
93
|
+
[TMethod in RequestMethod]: `use${TMethod extends "get" ? "" : Capitalize<TMethod>}`;
|
|
94
|
+
};
|
|
95
|
+
export type HooksMapsByName = {
|
|
96
|
+
[K in keyof HooksMaps as HooksMaps[K]]: K;
|
|
97
|
+
};
|
|
98
|
+
export {};
|
|
99
|
+
}
|
|
100
|
+
export declare namespace Api.Generate {
|
|
101
|
+
type ResultShortcuts<TEndpoints extends Endpoints> = {
|
|
102
|
+
[TMethod in RequestMethod]: {
|
|
103
|
+
[TEndpoint in Extract<keyof TEndpoints, string>]: {
|
|
104
|
+
ok: GetDataType<TEndpoints, TEndpoint, TMethod, "ok">;
|
|
105
|
+
fail: GetDataType<TEndpoints, TEndpoint, TMethod, "fail">;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
type ResponseShortcuts<TEndpoints extends Endpoints> = {
|
|
110
|
+
[TMethod in RequestMethod]: {
|
|
111
|
+
[TEndpoint in Extract<keyof TEndpoints, string>]: GetDataType<TEndpoints, TEndpoint, TMethod, "ok">;
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
type RequestShortcuts<TEndpoints extends Endpoints> = {
|
|
115
|
+
[TMethod in RequestMethod]: {
|
|
116
|
+
[TEndpoint in Extract<keyof TEndpoints, string>]: TMethod extends "get" ? GetDataType<TEndpoints, TEndpoint, TMethod, "query"> : GetDataType<TEndpoints, TEndpoint, TMethod, "json">;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
type GetShortcuts<TEndpoints extends Endpoints> = {
|
|
120
|
+
[TEndpoint in Extract<keyof TEndpoints, string>]: GetDataType<TEndpoints, TEndpoint, "get", "ok">;
|
|
121
|
+
};
|
|
122
|
+
type PostShortcuts<TEndpoints extends Endpoints> = {
|
|
123
|
+
[TEndpoint in Extract<keyof TEndpoints, string>]: GetDataType<TEndpoints, TEndpoint, "post", "ok">;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export {};
|
package/cjs/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
package/createApi.js
CHANGED
|
@@ -1,115 +1 @@
|
|
|
1
|
-
import
|
|
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;
|
|
1
|
+
import{buildUrlQueryString as e,errorToString as t,isFullObject as r}from"@koine/utils";let o=["get","post","put","patch","delete"];export 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(r(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+=e(j));let O=null,R=null,S="";try{O=await fetch(q,v)}catch(e){S=t(e)}if(m&&clearTimeout(m),O)try{R=E?await E(O,h||{}):await O.json()}catch(e){S=t(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),{})};export default createApi;
|
package/createApiResultFail.js
CHANGED
|
@@ -1,14 +1 @@
|
|
|
1
|
-
export let createApiResultOk
|
|
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;
|
|
1
|
+
export let createApiResultOk=(t={},e)=>({ok:!0,fail:!1,data:t,msg:e||"",status:200});export let createApiResultFail=(t={},e,a)=>({fail:!0,data:t,msg:e||"",status:a||404});export default createApiResultFail;
|
package/createApiResultOk.js
CHANGED
|
@@ -1,8 +1 @@
|
|
|
1
|
-
export let createApiResultOk
|
|
2
|
-
ok: true,
|
|
3
|
-
fail: false,
|
|
4
|
-
data,
|
|
5
|
-
msg: msg || "",
|
|
6
|
-
status: 200,
|
|
7
|
-
});
|
|
8
|
-
export default createApiResultOk;
|
|
1
|
+
export let createApiResultOk=(e={},t)=>({ok:!0,fail:!1,data:e,msg:t||"",status:200});export default createApiResultOk;
|
package/index.js
CHANGED
|
@@ -1,4 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { createApi } from "./createApi";
|
|
3
|
-
export { createApiResultFail } from "./createApiResultFail";
|
|
4
|
-
export { createApiResultOk } from "./createApiResultOk";
|
|
1
|
+
export{ApiError}from"./ApiError";export{createApi}from"./createApi";export{createApiResultFail}from"./createApiResultFail";export{createApiResultOk}from"./createApiResultOk";
|
package/next/nextApiResponse.js
CHANGED
|
@@ -1,12 +1 @@
|
|
|
1
|
-
import
|
|
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 default nextApiResponse;
|
|
1
|
+
import{NextResponse as e}from"next/server";import{createApiResultFail as t}from"../createApiResultFail";import{createApiResultOk as o}from"../createApiResultOk";export let nextApiResponse={ok:(t,r)=>e.json(o(t,r)),fail:(o,r,p)=>e.json(t(o,r,p))};export default nextApiResponse;
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { createApiResultOk } from "../createApiResultOk";
|
|
3
|
-
export let nextApiResponse12 = (nextRes) => ({
|
|
4
|
-
ok(data, msg) {
|
|
5
|
-
nextRes.status(200).json(createApiResultOk(data, msg));
|
|
6
|
-
},
|
|
7
|
-
fail(data, msg, status) {
|
|
8
|
-
nextRes.status(status || 404).json(createApiResultFail(data, msg, status));
|
|
9
|
-
},
|
|
10
|
-
});
|
|
11
|
-
export default nextApiResponse12;
|
|
1
|
+
import{createApiResultFail as e}from"../createApiResultFail";import{createApiResultOk as t}from"../createApiResultOk";export let nextApiResponse12=s=>({ok(e,o){s.status(200).json(t(e,o))},fail(t,o,p){s.status(p||404).json(e(t,o,p))}});export default nextApiResponse12;
|
package/next.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { nextApiResponse12 } from "./next/nextApiResponse12";
|
|
1
|
+
export{nextApiResponse}from"./next/nextApiResponse";export{nextApiResponse12}from"./next/nextApiResponse12";
|
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.77"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"next": "^14.0.4",
|
|
@@ -16,111 +16,62 @@
|
|
|
16
16
|
"optional": true
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
|
+
"module": "./index.js",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"main": "./cjs/index.js",
|
|
19
22
|
"exports": {
|
|
20
23
|
".": {
|
|
21
|
-
"
|
|
22
|
-
"import": "./index.
|
|
23
|
-
"default": "./index.cjs.js"
|
|
24
|
+
"require": "./cjs/index.js",
|
|
25
|
+
"import": "./index.js"
|
|
24
26
|
},
|
|
25
27
|
"./ApiError": {
|
|
28
|
+
"require": "./cjs/ApiError.js",
|
|
26
29
|
"import": "./ApiError.js"
|
|
27
30
|
},
|
|
28
|
-
"./createApi.cjs": {
|
|
29
|
-
"import": "./createApi.cjs.js"
|
|
30
|
-
},
|
|
31
|
-
"./createApi.esm": {
|
|
32
|
-
"import": "./createApi.esm.js"
|
|
33
|
-
},
|
|
34
31
|
"./createApi": {
|
|
32
|
+
"require": "./cjs/createApi.js",
|
|
35
33
|
"import": "./createApi.js"
|
|
36
34
|
},
|
|
37
35
|
"./createApiResultFail": {
|
|
36
|
+
"require": "./cjs/createApiResultFail.js",
|
|
38
37
|
"import": "./createApiResultFail.js"
|
|
39
38
|
},
|
|
40
|
-
"./createApiResultOk.cjs": {
|
|
41
|
-
"import": "./createApiResultOk.cjs.js"
|
|
42
|
-
},
|
|
43
|
-
"./createApiResultOk.esm": {
|
|
44
|
-
"import": "./createApiResultOk.esm.js"
|
|
45
|
-
},
|
|
46
39
|
"./createApiResultOk": {
|
|
40
|
+
"require": "./cjs/createApiResultOk.js",
|
|
47
41
|
"import": "./createApiResultOk.js"
|
|
48
42
|
},
|
|
49
|
-
"./createSwrApi.cjs": {
|
|
50
|
-
"import": "./createSwrApi.cjs.js"
|
|
51
|
-
},
|
|
52
|
-
"./createSwrApi.esm": {
|
|
53
|
-
"import": "./createSwrApi.esm.js"
|
|
54
|
-
},
|
|
55
|
-
"./index.cjs.default": {
|
|
56
|
-
"import": "./index.cjs.default.js"
|
|
57
|
-
},
|
|
58
|
-
"./index.cjs": {
|
|
59
|
-
"import": "./index.cjs.js"
|
|
60
|
-
},
|
|
61
|
-
"./index.esm": {
|
|
62
|
-
"import": "./index.esm.js"
|
|
63
|
-
},
|
|
64
|
-
"./next.cjs.default": {
|
|
65
|
-
"import": "./next.cjs.default.js"
|
|
66
|
-
},
|
|
67
|
-
"./next.cjs": {
|
|
68
|
-
"import": "./next.cjs.js"
|
|
69
|
-
},
|
|
70
|
-
"./next.esm": {
|
|
71
|
-
"import": "./next.esm.js"
|
|
72
|
-
},
|
|
73
43
|
"./next": {
|
|
74
|
-
"
|
|
75
|
-
"import": "./next.
|
|
76
|
-
"default": "./next.cjs.js"
|
|
44
|
+
"require": "./cjs/next.js",
|
|
45
|
+
"import": "./next.js"
|
|
77
46
|
},
|
|
78
47
|
"./next/nextApiResponse": {
|
|
48
|
+
"require": "./cjs/next/nextApiResponse.js",
|
|
79
49
|
"import": "./next/nextApiResponse.js"
|
|
80
50
|
},
|
|
81
51
|
"./next/nextApiResponse12": {
|
|
52
|
+
"require": "./cjs/next/nextApiResponse12.js",
|
|
82
53
|
"import": "./next/nextApiResponse12.js"
|
|
83
54
|
},
|
|
84
|
-
"./swr-mutation.cjs.default": {
|
|
85
|
-
"import": "./swr-mutation.cjs.default.js"
|
|
86
|
-
},
|
|
87
|
-
"./swr-mutation.cjs": {
|
|
88
|
-
"import": "./swr-mutation.cjs.js"
|
|
89
|
-
},
|
|
90
|
-
"./swr-mutation.esm": {
|
|
91
|
-
"import": "./swr-mutation.esm.js"
|
|
92
|
-
},
|
|
93
55
|
"./swr-mutation": {
|
|
94
|
-
"
|
|
95
|
-
"import": "./swr-mutation.
|
|
96
|
-
"default": "./swr-mutation.cjs.js"
|
|
56
|
+
"require": "./cjs/swr-mutation.js",
|
|
57
|
+
"import": "./swr-mutation.js"
|
|
97
58
|
},
|
|
98
59
|
"./swr-mutation/createSwrMutationApi": {
|
|
60
|
+
"require": "./cjs/swr-mutation/createSwrMutationApi.js",
|
|
99
61
|
"import": "./swr-mutation/createSwrMutationApi.js"
|
|
100
62
|
},
|
|
101
|
-
"./swr.cjs.default": {
|
|
102
|
-
"import": "./swr.cjs.default.js"
|
|
103
|
-
},
|
|
104
|
-
"./swr.cjs": {
|
|
105
|
-
"import": "./swr.cjs.js"
|
|
106
|
-
},
|
|
107
|
-
"./swr.esm": {
|
|
108
|
-
"import": "./swr.esm.js"
|
|
109
|
-
},
|
|
110
63
|
"./swr": {
|
|
111
|
-
"
|
|
112
|
-
"import": "./swr.
|
|
113
|
-
"default": "./swr.cjs.js"
|
|
64
|
+
"require": "./cjs/swr.js",
|
|
65
|
+
"import": "./swr.js"
|
|
114
66
|
},
|
|
115
67
|
"./swr/createSwrApi": {
|
|
68
|
+
"require": "./cjs/swr/createSwrApi.js",
|
|
116
69
|
"import": "./swr/createSwrApi.js"
|
|
117
70
|
},
|
|
118
71
|
"./types": {
|
|
72
|
+
"require": "./cjs/types.js",
|
|
119
73
|
"import": "./types.js"
|
|
120
|
-
}
|
|
121
|
-
"./package.json": "./package.json"
|
|
74
|
+
}
|
|
122
75
|
},
|
|
123
|
-
"
|
|
124
|
-
"main": "./index.cjs.js",
|
|
125
|
-
"version": "2.0.0-beta.75"
|
|
76
|
+
"version": "2.0.0-beta.77"
|
|
126
77
|
}
|
package/swr/createSwrApi.js
CHANGED
|
@@ -1,22 +1 @@
|
|
|
1
|
-
"
|
|
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
|
-
};
|
|
22
|
-
export default createSwrApi;
|
|
1
|
+
import e from"swr";import{isFunction as r}from"@koine/utils";import{createApi as t}from"../createApi";export let createUseApi=t=>(i,o,p)=>{let a=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};return e(p?.when===!1||r(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};export let createSwrApi=(...e)=>{let r=t(...e);return r.use=createUseApi(r),r};export default createSwrApi;
|
|
@@ -1,27 +1 @@
|
|
|
1
|
-
"
|
|
2
|
-
import useSWRMutation, {} from "swr/mutation";
|
|
3
|
-
import { createApi } from "../createApi";
|
|
4
|
-
import { createUseApi } from "../swr/createSwrApi";
|
|
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
|
-
};
|
|
27
|
-
export default createSwrMutationApi;
|
|
1
|
+
import r from"swr/mutation";import{createApi as t}from"../createApi";import{createUseApi as e}from"../swr/createSwrApi";let a=(t,e)=>(a,o,i)=>r(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);export let createSwrMutationApi=(...r)=>{let o=t(...r);return o.use=e(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r)}),o};export default createSwrMutationApi;
|
package/swr-mutation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export{createSwrMutationApi}from"./swr-mutation/createSwrMutationApi";
|
package/swr.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export{createSwrApi}from"./swr/createSwrApi";
|
package/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export{};
|
package/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# @koine/api
|
package/createApi.cjs.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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.esm.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
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/createApiResultOk.cjs.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
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;
|
package/createApiResultOk.esm.js
DELETED
package/createSwrApi.cjs.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var e = require('swr');
|
|
4
|
-
var utils = require('@koine/utils');
|
|
5
|
-
var createApi = require('./createApi.cjs.js');
|
|
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
|
-
let createUseApi=t=>(i,o,p)=>{let a=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};return e__default["default"](p?.when===!1||utils.isFunction(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};let createSwrApi=(...e)=>{let r=createApi.createApi(...e);return r.use=createUseApi(r),r};
|
|
12
|
-
|
|
13
|
-
exports.createSwrApi = createSwrApi;
|
|
14
|
-
exports.createUseApi = createUseApi;
|
package/createSwrApi.esm.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import e from 'swr';
|
|
2
|
-
import { isFunction } from '@koine/utils';
|
|
3
|
-
import { c as createApi } from './createApi.esm.js';
|
|
4
|
-
|
|
5
|
-
let createUseApi=t=>(i,o,p)=>{let a=async()=>{let{data:e}=await t.get(i,{...o||{},throwErr:!0});return e};return e(p?.when===!1||isFunction(p?.when)&&p?.when()===!1?null:o?[i,o]:[i],a,p)};let createSwrApi=(...e)=>{let r=createApi(...e);return r.use=createUseApi(r),r};
|
|
6
|
-
|
|
7
|
-
export { createUseApi as a, createSwrApi as c };
|
package/index.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./index";
|
package/index.cjs.default.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./index.cjs.js').default;
|
package/index.cjs.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var createApi = require('./createApi.cjs.js');
|
|
6
|
-
var createApiResultOk = require('./createApiResultOk.cjs.js');
|
|
7
|
-
require('@koine/utils');
|
|
8
|
-
|
|
9
|
-
class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
|
|
10
|
-
|
|
11
|
-
exports.createApi = createApi.createApi;
|
|
12
|
-
exports.createApiResultFail = createApiResultOk.createApiResultFail;
|
|
13
|
-
exports.createApiResultOk = createApiResultOk.createApiResultOk;
|
|
14
|
-
exports.ApiError = ApiError;
|
package/index.cjs.mjs
DELETED
package/index.esm.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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';
|
|
4
|
-
|
|
5
|
-
class ApiError extends Error{constructor(r){super(`Request failed with ${r.status} ${r.msg}`),this.name="ApiError",Object.assign(this,r);}}
|
|
6
|
-
|
|
7
|
-
export { ApiError };
|
package/next.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./next";
|
package/next.cjs.default.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./next.cjs.js').default;
|
package/next.cjs.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var server = require('next/server');
|
|
6
|
-
var createApiResultOk = require('./createApiResultOk.cjs.js');
|
|
7
|
-
|
|
8
|
-
let nextApiResponse={ok:(t,r)=>server.NextResponse.json(createApiResultOk.createApiResultOk(t,r)),fail:(o,r,p)=>server.NextResponse.json(createApiResultOk.createApiResultFail(o,r,p))};
|
|
9
|
-
|
|
10
|
-
let nextApiResponse12=s=>({ok(e,o){s.status(200).json(createApiResultOk.createApiResultOk(e,o));},fail(t,o,p){s.status(p||404).json(createApiResultOk.createApiResultFail(t,o,p));}});
|
|
11
|
-
|
|
12
|
-
exports.nextApiResponse = nextApiResponse;
|
|
13
|
-
exports.nextApiResponse12 = nextApiResponse12;
|
package/next.cjs.mjs
DELETED
package/next.esm.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { NextResponse } from 'next/server';
|
|
2
|
-
import { a as createApiResultOk, c as createApiResultFail } from './createApiResultOk.esm.js';
|
|
3
|
-
|
|
4
|
-
let nextApiResponse={ok:(t,r)=>NextResponse.json(createApiResultOk(t,r)),fail:(o,r,p)=>NextResponse.json(createApiResultFail(o,r,p))};
|
|
5
|
-
|
|
6
|
-
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));}});
|
|
7
|
-
|
|
8
|
-
export { nextApiResponse, nextApiResponse12 };
|
package/swr-mutation.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./swr-mutation";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./swr-mutation.cjs.js').default;
|
package/swr-mutation.cjs.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var r = require('swr/mutation');
|
|
6
|
-
var createApi = require('./createApi.cjs.js');
|
|
7
|
-
var createSwrApi = require('./createSwrApi.cjs.js');
|
|
8
|
-
require('@koine/utils');
|
|
9
|
-
require('swr');
|
|
10
|
-
|
|
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
|
-
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=createSwrApi.createUseApi(o),["post","put","patch","delete"].forEach(r=>{o[`use${r.charAt(0).toUpperCase()+r.slice(1)}`]=a(o,r);}),o};
|
|
16
|
-
|
|
17
|
-
exports.createSwrMutationApi = createSwrMutationApi;
|
package/swr-mutation.cjs.mjs
DELETED
package/swr-mutation.esm.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import r from 'swr/mutation';
|
|
2
|
-
import { c as 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)=>r(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(...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};
|
|
8
|
-
|
|
9
|
-
export { createSwrMutationApi };
|
package/swr.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./swr";
|
package/swr.cjs.default.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./swr.cjs.js').default;
|
package/swr.cjs.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var createSwrApi = require('./createSwrApi.cjs.js');
|
|
6
|
-
require('swr');
|
|
7
|
-
require('@koine/utils');
|
|
8
|
-
require('./createApi.cjs.js');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.createSwrApi = createSwrApi.createSwrApi;
|
package/swr.cjs.mjs
DELETED
package/swr.esm.js
DELETED
package/typings.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
declare namespace Koine.Api {
|
|
2
|
-
type Endpoints = import("./types").Api.Endpoints;
|
|
3
|
-
type GenerateGetShortcuts<E extends Endpoints> =
|
|
4
|
-
import("./types").Api.Generate.GetShortcuts<E>;
|
|
5
|
-
type GeneratePostShortcuts<E extends Endpoints> =
|
|
6
|
-
import("./types").Api.Generate.PostShortcuts<E>;
|
|
7
|
-
type GenerateRequestShortcuts<E extends Endpoints> =
|
|
8
|
-
import("./types").Api.Generate.RequestShortcuts<E>;
|
|
9
|
-
type GenerateResponseShortcuts<E extends Endpoints> =
|
|
10
|
-
import("./types").Api.Generate.ResponseShortcuts<E>;
|
|
11
|
-
type GenerateResultShortcuts<E extends Endpoints> =
|
|
12
|
-
import("./types").Api.Generate.ResultShortcuts<E>;
|
|
13
|
-
}
|