@koine/api 1.0.26 → 1.0.29

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/core/index.js CHANGED
@@ -25,7 +25,7 @@ export { ApiError };
25
25
  * @param baseUrl Either relativ eor absolute, it must end without trailing slash
26
26
  */
27
27
  export var createApi = function (apiName, baseUrl, options) {
28
- var _a = options || {}, adapterBase = _a.adapter, _b = _a.request, requestBase = _b === void 0 ? {
28
+ var _a = options || {}, transformRequestBase = _a.transformRequest, transformResponseBase = _a.transformResponse, _b = _a.request, requestBase = _b === void 0 ? {
29
29
  credentials: "include",
30
30
  referrerPolicy: "no-referrer",
31
31
  // mode: "cors",
@@ -34,11 +34,11 @@ export var createApi = function (apiName, baseUrl, options) {
34
34
  } : _b, shouldThrowBase = _a.shouldThrow;
35
35
  return ["get", "post", "put", "patch", "delete"].reduce(function (api, method) {
36
36
  api[method] = function (endpoint, options) { return __awaiter(void 0, void 0, void 0, function () {
37
- var _a, json, params, _b, request, _c, headers, _d, timeout, _e, adapter, _f, shouldThrow, requestInit, timeoutNumber, controller, timeoutId, url, response, e_1, result, e_2, msg;
38
- return __generator(this, function (_g) {
39
- switch (_g.label) {
37
+ var _a, json, params, _b, request, _c, headers, _d, timeout, _e, transformRequest, _f, transformResponse, _g, shouldThrow, requestInit, timeoutNumber, controller, timeoutId, url, response, e_1, result, e_2, msg;
38
+ return __generator(this, function (_h) {
39
+ switch (_h.label) {
40
40
  case 0:
41
- _a = options || {}, json = _a.json, params = _a.params, _b = _a.request, request = _b === void 0 ? requestBase : _b, _c = _a.headers, headers = _c === void 0 ? {} : _c, _d = _a.timeout, timeout = _d === void 0 ? 10000 : _d, _e = _a.adapter, adapter = _e === void 0 ? adapterBase : _e, _f = _a.shouldThrow, shouldThrow = _f === void 0 ? shouldThrowBase : _f;
41
+ _a = options || {}, json = _a.json, params = _a.params, _b = _a.request, request = _b === void 0 ? requestBase : _b, _c = _a.headers, headers = _c === void 0 ? {} : _c, _d = _a.timeout, timeout = _d === void 0 ? 10000 : _d, _e = _a.transformRequest, transformRequest = _e === void 0 ? transformRequestBase : _e, _f = _a.transformResponse, transformResponse = _f === void 0 ? transformResponseBase : _f, _g = _a.shouldThrow, shouldThrow = _g === void 0 ? shouldThrowBase : _g;
42
42
  requestInit = __assign(__assign({ method: method.toUpperCase() }, request), { headers: __assign({ "content-type": "application/json" }, headers) });
43
43
  timeoutNumber = Number(timeout);
44
44
  url = "".concat(baseUrl, "/").concat(endpoint + "".replace(/^\/*/, ""));
@@ -50,61 +50,64 @@ export var createApi = function (apiName, baseUrl, options) {
50
50
  timeoutId = setTimeout(function () { return controller.abort(); }, timeoutNumber);
51
51
  requestInit.signal = controller.signal;
52
52
  }
53
+ if (transformRequest) {
54
+ requestInit = transformRequest(requestInit);
55
+ }
53
56
  if (params) {
54
57
  // FIXME: ts-expect-error this assertion is not the best, but nevermind for now
55
58
  // url += buildUrlQueryString(params as unknown as Koine.Api.RequestParams);
56
59
  url += buildUrlQueryString(params);
57
60
  }
58
61
  if (!shouldThrow) return [3 /*break*/, 5];
59
- _g.label = 1;
62
+ _h.label = 1;
60
63
  case 1:
61
- _g.trys.push([1, 3, , 4]);
64
+ _h.trys.push([1, 3, , 4]);
62
65
  return [4 /*yield*/, fetch(url, requestInit)];
63
66
  case 2:
64
- response = _g.sent();
67
+ response = _h.sent();
65
68
  return [3 /*break*/, 4];
66
69
  case 3:
67
- e_1 = _g.sent();
70
+ e_1 = _h.sent();
68
71
  // eslint-disable-next-line no-throw-literal
69
72
  throw { e: e_1 };
70
73
  case 4: return [3 /*break*/, 7];
71
74
  case 5: return [4 /*yield*/, fetch(url, requestInit)];
72
75
  case 6:
73
- response = _g.sent();
74
- _g.label = 7;
76
+ response = _h.sent();
77
+ _h.label = 7;
75
78
  case 7:
76
79
  if (timeoutId) {
77
80
  clearTimeout(timeoutId);
78
81
  }
79
82
  if (!shouldThrow) return [3 /*break*/, 15];
80
- _g.label = 8;
83
+ _h.label = 8;
81
84
  case 8:
82
- _g.trys.push([8, 13, , 14]);
83
- if (!adapter) return [3 /*break*/, 10];
84
- return [4 /*yield*/, adapter(response, options || {})];
85
+ _h.trys.push([8, 13, , 14]);
86
+ if (!transformResponse) return [3 /*break*/, 10];
87
+ return [4 /*yield*/, transformResponse(response, options || {})];
85
88
  case 9:
86
- result = _g.sent();
89
+ result = _h.sent();
87
90
  return [3 /*break*/, 12];
88
91
  case 10: return [4 /*yield*/, response.json()];
89
92
  case 11:
90
- result = _g.sent();
91
- _g.label = 12;
93
+ result = _h.sent();
94
+ _h.label = 12;
92
95
  case 12: return [3 /*break*/, 14];
93
96
  case 13:
94
- e_2 = _g.sent();
97
+ e_2 = _h.sent();
95
98
  // eslint-disable-next-line no-throw-literal
96
99
  throw { e: e_2 };
97
100
  case 14: return [3 /*break*/, 19];
98
101
  case 15:
99
- if (!adapter) return [3 /*break*/, 17];
100
- return [4 /*yield*/, adapter(response, options || {})];
102
+ if (!transformResponse) return [3 /*break*/, 17];
103
+ return [4 /*yield*/, transformResponse(response, options || {})];
101
104
  case 16:
102
- result = _g.sent();
105
+ result = _h.sent();
103
106
  return [3 /*break*/, 19];
104
107
  case 17: return [4 /*yield*/, response.json()];
105
108
  case 18:
106
- result = _g.sent();
107
- _g.label = 19;
109
+ result = _h.sent();
110
+ _h.label = 19;
108
111
  case 19:
109
112
  if (shouldThrow && result.fail) {
110
113
  // throw new ApiError<Failed>(result);
@@ -28,7 +28,7 @@ exports.ApiError = ApiError;
28
28
  * @param baseUrl Either relativ eor absolute, it must end without trailing slash
29
29
  */
30
30
  var createApi = function (apiName, baseUrl, options) {
31
- var _a = options || {}, adapterBase = _a.adapter, _b = _a.request, requestBase = _b === void 0 ? {
31
+ var _a = options || {}, transformRequestBase = _a.transformRequest, transformResponseBase = _a.transformResponse, _b = _a.request, requestBase = _b === void 0 ? {
32
32
  credentials: "include",
33
33
  referrerPolicy: "no-referrer",
34
34
  // mode: "cors",
@@ -37,11 +37,11 @@ var createApi = function (apiName, baseUrl, options) {
37
37
  } : _b, shouldThrowBase = _a.shouldThrow;
38
38
  return ["get", "post", "put", "patch", "delete"].reduce(function (api, method) {
39
39
  api[method] = function (endpoint, options) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
40
- var _a, json, params, _b, request, _c, headers, _d, timeout, _e, adapter, _f, shouldThrow, requestInit, timeoutNumber, controller, timeoutId, url, response, e_1, result, e_2, msg;
41
- return tslib_1.__generator(this, function (_g) {
42
- switch (_g.label) {
40
+ var _a, json, params, _b, request, _c, headers, _d, timeout, _e, transformRequest, _f, transformResponse, _g, shouldThrow, requestInit, timeoutNumber, controller, timeoutId, url, response, e_1, result, e_2, msg;
41
+ return tslib_1.__generator(this, function (_h) {
42
+ switch (_h.label) {
43
43
  case 0:
44
- _a = options || {}, json = _a.json, params = _a.params, _b = _a.request, request = _b === void 0 ? requestBase : _b, _c = _a.headers, headers = _c === void 0 ? {} : _c, _d = _a.timeout, timeout = _d === void 0 ? 10000 : _d, _e = _a.adapter, adapter = _e === void 0 ? adapterBase : _e, _f = _a.shouldThrow, shouldThrow = _f === void 0 ? shouldThrowBase : _f;
44
+ _a = options || {}, json = _a.json, params = _a.params, _b = _a.request, request = _b === void 0 ? requestBase : _b, _c = _a.headers, headers = _c === void 0 ? {} : _c, _d = _a.timeout, timeout = _d === void 0 ? 10000 : _d, _e = _a.transformRequest, transformRequest = _e === void 0 ? transformRequestBase : _e, _f = _a.transformResponse, transformResponse = _f === void 0 ? transformResponseBase : _f, _g = _a.shouldThrow, shouldThrow = _g === void 0 ? shouldThrowBase : _g;
45
45
  requestInit = tslib_1.__assign(tslib_1.__assign({ method: method.toUpperCase() }, request), { headers: tslib_1.__assign({ "content-type": "application/json" }, headers) });
46
46
  timeoutNumber = Number(timeout);
47
47
  url = "".concat(baseUrl, "/").concat(endpoint + "".replace(/^\/*/, ""));
@@ -53,61 +53,64 @@ var createApi = function (apiName, baseUrl, options) {
53
53
  timeoutId = setTimeout(function () { return controller.abort(); }, timeoutNumber);
54
54
  requestInit.signal = controller.signal;
55
55
  }
56
+ if (transformRequest) {
57
+ requestInit = transformRequest(requestInit);
58
+ }
56
59
  if (params) {
57
60
  // FIXME: ts-expect-error this assertion is not the best, but nevermind for now
58
61
  // url += buildUrlQueryString(params as unknown as Koine.Api.RequestParams);
59
62
  url += (0, utils_1.buildUrlQueryString)(params);
60
63
  }
61
64
  if (!shouldThrow) return [3 /*break*/, 5];
62
- _g.label = 1;
65
+ _h.label = 1;
63
66
  case 1:
64
- _g.trys.push([1, 3, , 4]);
67
+ _h.trys.push([1, 3, , 4]);
65
68
  return [4 /*yield*/, fetch(url, requestInit)];
66
69
  case 2:
67
- response = _g.sent();
70
+ response = _h.sent();
68
71
  return [3 /*break*/, 4];
69
72
  case 3:
70
- e_1 = _g.sent();
73
+ e_1 = _h.sent();
71
74
  // eslint-disable-next-line no-throw-literal
72
75
  throw { e: e_1 };
73
76
  case 4: return [3 /*break*/, 7];
74
77
  case 5: return [4 /*yield*/, fetch(url, requestInit)];
75
78
  case 6:
76
- response = _g.sent();
77
- _g.label = 7;
79
+ response = _h.sent();
80
+ _h.label = 7;
78
81
  case 7:
79
82
  if (timeoutId) {
80
83
  clearTimeout(timeoutId);
81
84
  }
82
85
  if (!shouldThrow) return [3 /*break*/, 15];
83
- _g.label = 8;
86
+ _h.label = 8;
84
87
  case 8:
85
- _g.trys.push([8, 13, , 14]);
86
- if (!adapter) return [3 /*break*/, 10];
87
- return [4 /*yield*/, adapter(response, options || {})];
88
+ _h.trys.push([8, 13, , 14]);
89
+ if (!transformResponse) return [3 /*break*/, 10];
90
+ return [4 /*yield*/, transformResponse(response, options || {})];
88
91
  case 9:
89
- result = _g.sent();
92
+ result = _h.sent();
90
93
  return [3 /*break*/, 12];
91
94
  case 10: return [4 /*yield*/, response.json()];
92
95
  case 11:
93
- result = _g.sent();
94
- _g.label = 12;
96
+ result = _h.sent();
97
+ _h.label = 12;
95
98
  case 12: return [3 /*break*/, 14];
96
99
  case 13:
97
- e_2 = _g.sent();
100
+ e_2 = _h.sent();
98
101
  // eslint-disable-next-line no-throw-literal
99
102
  throw { e: e_2 };
100
103
  case 14: return [3 /*break*/, 19];
101
104
  case 15:
102
- if (!adapter) return [3 /*break*/, 17];
103
- return [4 /*yield*/, adapter(response, options || {})];
105
+ if (!transformResponse) return [3 /*break*/, 17];
106
+ return [4 /*yield*/, transformResponse(response, options || {})];
104
107
  case 16:
105
- result = _g.sent();
108
+ result = _h.sent();
106
109
  return [3 /*break*/, 19];
107
110
  case 17: return [4 /*yield*/, response.json()];
108
111
  case 18:
109
- result = _g.sent();
110
- _g.label = 19;
112
+ result = _h.sent();
113
+ _h.label = 19;
111
114
  case 19:
112
115
  if (shouldThrow && result.fail) {
113
116
  // throw new ApiError<Failed>(result);
package/package.json CHANGED
@@ -5,12 +5,12 @@
5
5
  "typings": "./index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@koine/utils": "1.0.26",
8
+ "@koine/utils": "1.0.29",
9
9
  "next": "^12.1.6",
10
10
  "swr": "^2.0.0-beta.3",
11
11
  "tslib": "^2.4.0"
12
12
  },
13
- "version": "1.0.26",
13
+ "version": "1.0.29",
14
14
  "module": "./index.js",
15
15
  "types": "./index.d.ts"
16
16
  }
package/swr/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type SWRConfiguration, type SWRResponse } from "swr";
2
2
  import { type SWRMutationConfiguration, type SWRMutationResponse } from "swr/mutation";
3
- declare type KoineApiMethodHookSWR<THookName extends keyof Koine.Api.HooksMapsByName, TEndpoints extends Koine.Api.Endpoints> = <TEndpoint extends Koine.Api.EndpointUrl<TEndpoints>, TMethod extends Koine.Api.RequestMethod = Koine.Api.HooksMapsByName[THookName]>(endpoint: TEndpoint, options?: Koine.Api.EndpointRequestOptions<TEndpoints, TEndpoint, TMethod>, config?: THookName extends "useGet" ? SWRConfiguration<Koine.Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>> : SWRMutationConfiguration<Koine.Api.EndpointResultOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResultFail<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointRequestOptions<TEndpoints, TEndpoint, TMethod>, TEndpoint>) => THookName extends "useGet" ? SWRResponse<Koine.Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>> : SWRMutationResponse<Koine.Api.EndpointResultOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResultFail<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointRequestOptions<TEndpoints, TEndpoint, TMethod>, TEndpoint>;
3
+ declare type KoineApiMethodHookSWR<THookName extends keyof Koine.Api.HooksMapsByName, TEndpoints extends Koine.Api.Endpoints> = <TEndpoint extends Koine.Api.EndpointUrl<TEndpoints>, TMethod extends Koine.Api.RequestMethod = Koine.Api.HooksMapsByName[THookName]>(endpoint: TEndpoint, options?: Koine.Api.EndpointRequestOptions<TEndpoints, TEndpoint, TMethod>, config?: THookName extends "useGet" ? SWRConfiguration<Koine.Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>> : SWRMutationConfiguration<Koine.Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointRequestOptions<TEndpoints, TEndpoint, TMethod>, TEndpoint>) => THookName extends "useGet" ? SWRResponse<Koine.Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>> : SWRMutationResponse<Koine.Api.EndpointResponseOk<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointResponseFail<TEndpoints, TEndpoint, TMethod>, Koine.Api.EndpointRequestOptions<TEndpoints, TEndpoint, TMethod>, TEndpoint>;
4
4
  /**
5
5
  * It creates an api client extended with auto-generated SWR wrapper hooks
6
6
  */
package/typings.d.ts CHANGED
@@ -27,7 +27,8 @@ declare namespace Koine.Api {
27
27
  * @default { credentials: "include", referrerPolicy: "no-referrer" }
28
28
  */
29
29
  request?: Omit<RequestInit, "body" | "headers" | "method">;
30
- adapter?: ResponseAdapter;
30
+ transformRequest?: RequestTransformer;
31
+ transformResponse?: ResponseTransformer;
31
32
  shouldThrow?: boolean;
32
33
  };
33
34
 
@@ -298,7 +299,9 @@ declare namespace Koine.Api {
298
299
  data: TResponseFail;
299
300
  };
300
301
 
301
- type ResponseAdapter = <
302
+ type RequestTransformer = (request: RequestInit) => RequestInit;
303
+
304
+ type ResponseTransformer = <
302
305
  TResponseOk extends ResponseOk = ResponseOk,
303
306
  TResponseFail extends ResponseFailed = ResponseFailed
304
307
  >(