@sebspark/openapi-client 2.1.8 → 2.1.10
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/dist/index.d.mts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +45 -19
- package/dist/index.mjs +45 -19
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { BaseClient, ClientOptions } from '@sebspark/openapi-core';
|
|
2
|
+
import { AxiosInstance } from 'axios';
|
|
2
3
|
import { Logger } from 'winston';
|
|
3
4
|
export * from '@sebspark/retry';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
type TypedAxiosClient<T> = T & {
|
|
7
|
+
axiosInstance: AxiosInstance;
|
|
8
|
+
};
|
|
9
|
+
declare const TypedClient: <C extends Partial<BaseClient>>(baseURL: string, globalOptions?: ClientOptions, logger?: Logger) => TypedAxiosClient<C>;
|
|
6
10
|
|
|
7
|
-
export { TypedClient };
|
|
11
|
+
export { type TypedAxiosClient, TypedClient };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { BaseClient, ClientOptions } from '@sebspark/openapi-core';
|
|
2
|
+
import { AxiosInstance } from 'axios';
|
|
2
3
|
import { Logger } from 'winston';
|
|
3
4
|
export * from '@sebspark/retry';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
type TypedAxiosClient<T> = T & {
|
|
7
|
+
axiosInstance: AxiosInstance;
|
|
8
|
+
};
|
|
9
|
+
declare const TypedClient: <C extends Partial<BaseClient>>(baseURL: string, globalOptions?: ClientOptions, logger?: Logger) => TypedAxiosClient<C>;
|
|
6
10
|
|
|
7
|
-
export { TypedClient };
|
|
11
|
+
export { type TypedAxiosClient, TypedClient };
|
package/dist/index.js
CHANGED
|
@@ -93,19 +93,25 @@ var paramsSerializer = (format) => (params) => {
|
|
|
93
93
|
|
|
94
94
|
// src/client.ts
|
|
95
95
|
var TypedClient = (baseURL, globalOptions, logger) => {
|
|
96
|
+
const axiosInstance = import_axios.default.create();
|
|
96
97
|
if (globalOptions?.authorizationTokenGenerator) {
|
|
97
98
|
logger?.debug("authorizationTokenGenerator is set");
|
|
98
|
-
|
|
99
|
+
axiosInstance.interceptors.request.use(async (request) => {
|
|
99
100
|
const url = `${request.baseURL}${request.url}`;
|
|
100
101
|
logger?.debug(`Intercepting request to ${url}`);
|
|
101
102
|
if (globalOptions?.authorizationTokenGenerator && url) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
try {
|
|
104
|
+
const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(url);
|
|
105
|
+
if (authorizationTokenHeaders) {
|
|
106
|
+
for (const key of Object.keys(authorizationTokenHeaders)) {
|
|
107
|
+
const value = authorizationTokenHeaders[key];
|
|
108
|
+
logger?.debug(`Setting header ${key} to ${value}`);
|
|
109
|
+
request.headers[key] = value;
|
|
110
|
+
}
|
|
108
111
|
}
|
|
112
|
+
} catch (error) {
|
|
113
|
+
logger?.error(`Error generating token for URL: ${url}`);
|
|
114
|
+
throw error;
|
|
109
115
|
}
|
|
110
116
|
}
|
|
111
117
|
logger?.debug("Intercepted request:");
|
|
@@ -127,13 +133,18 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
127
133
|
const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`;
|
|
128
134
|
if (globalOptions?.authorizationTokenRefresh && url) {
|
|
129
135
|
logger?.debug(`Refreshing token for URL ${url}`);
|
|
130
|
-
|
|
136
|
+
try {
|
|
137
|
+
await globalOptions?.authorizationTokenRefresh(url);
|
|
138
|
+
} catch (error) {
|
|
139
|
+
logger?.error(`Error refreshing token for URL: ${url}`);
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
131
142
|
}
|
|
132
143
|
};
|
|
133
|
-
(0, import_axios_auth_refresh.default)(
|
|
144
|
+
(0, import_axios_auth_refresh.default)(axiosInstance, refreshAuthLogic);
|
|
134
145
|
}
|
|
135
146
|
if (logger) {
|
|
136
|
-
|
|
147
|
+
axiosInstance.interceptors.request.use((request) => {
|
|
137
148
|
const requestObject = {
|
|
138
149
|
url: request.url,
|
|
139
150
|
params: request.params,
|
|
@@ -142,7 +153,7 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
142
153
|
logger.debug(JSON.stringify(requestObject, null, 2));
|
|
143
154
|
return request;
|
|
144
155
|
});
|
|
145
|
-
|
|
156
|
+
axiosInstance.interceptors.response.use((response) => {
|
|
146
157
|
const responseObject = {
|
|
147
158
|
data: response.data,
|
|
148
159
|
config: response.config,
|
|
@@ -153,20 +164,35 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
153
164
|
});
|
|
154
165
|
}
|
|
155
166
|
const client = {
|
|
156
|
-
get: (url, args, opts) => callServer(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
167
|
+
get: (url, args, opts) => callServer(
|
|
168
|
+
axiosInstance,
|
|
169
|
+
mergeArgs(baseURL, url, "get", args, opts, globalOptions)
|
|
170
|
+
),
|
|
171
|
+
post: (url, args, opts) => callServer(
|
|
172
|
+
axiosInstance,
|
|
173
|
+
mergeArgs(baseURL, url, "post", args, opts, globalOptions)
|
|
174
|
+
),
|
|
175
|
+
put: (url, args, opts) => callServer(
|
|
176
|
+
axiosInstance,
|
|
177
|
+
mergeArgs(baseURL, url, "put", args, opts, globalOptions)
|
|
178
|
+
),
|
|
179
|
+
patch: (url, args, opts) => callServer(
|
|
180
|
+
axiosInstance,
|
|
181
|
+
mergeArgs(baseURL, url, "patch", args, opts, globalOptions)
|
|
182
|
+
),
|
|
183
|
+
delete: (url, args, opts) => callServer(
|
|
184
|
+
axiosInstance,
|
|
185
|
+
mergeArgs(baseURL, url, "delete", args, opts, globalOptions)
|
|
186
|
+
)
|
|
161
187
|
};
|
|
162
|
-
return client;
|
|
188
|
+
return { ...client, axiosInstance };
|
|
163
189
|
};
|
|
164
|
-
var callServer = async (args) => {
|
|
190
|
+
var callServer = async (axiosInstance, args) => {
|
|
165
191
|
try {
|
|
166
192
|
const serializer = paramsSerializer(args.arrayFormat);
|
|
167
193
|
const body = args.method?.toLowerCase() === "get" || args.method?.toLowerCase() === "delete" ? void 0 : args.body;
|
|
168
194
|
const { headers, data } = await (0, import_retry.retry)(
|
|
169
|
-
() =>
|
|
195
|
+
() => axiosInstance.request({
|
|
170
196
|
baseURL: args.baseUrl,
|
|
171
197
|
url: args.url,
|
|
172
198
|
method: args.method,
|
package/dist/index.mjs
CHANGED
|
@@ -58,19 +58,25 @@ var paramsSerializer = (format) => (params) => {
|
|
|
58
58
|
|
|
59
59
|
// src/client.ts
|
|
60
60
|
var TypedClient = (baseURL, globalOptions, logger) => {
|
|
61
|
+
const axiosInstance = axios.create();
|
|
61
62
|
if (globalOptions?.authorizationTokenGenerator) {
|
|
62
63
|
logger?.debug("authorizationTokenGenerator is set");
|
|
63
|
-
|
|
64
|
+
axiosInstance.interceptors.request.use(async (request) => {
|
|
64
65
|
const url = `${request.baseURL}${request.url}`;
|
|
65
66
|
logger?.debug(`Intercepting request to ${url}`);
|
|
66
67
|
if (globalOptions?.authorizationTokenGenerator && url) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
try {
|
|
69
|
+
const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(url);
|
|
70
|
+
if (authorizationTokenHeaders) {
|
|
71
|
+
for (const key of Object.keys(authorizationTokenHeaders)) {
|
|
72
|
+
const value = authorizationTokenHeaders[key];
|
|
73
|
+
logger?.debug(`Setting header ${key} to ${value}`);
|
|
74
|
+
request.headers[key] = value;
|
|
75
|
+
}
|
|
73
76
|
}
|
|
77
|
+
} catch (error) {
|
|
78
|
+
logger?.error(`Error generating token for URL: ${url}`);
|
|
79
|
+
throw error;
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
82
|
logger?.debug("Intercepted request:");
|
|
@@ -92,13 +98,18 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
92
98
|
const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`;
|
|
93
99
|
if (globalOptions?.authorizationTokenRefresh && url) {
|
|
94
100
|
logger?.debug(`Refreshing token for URL ${url}`);
|
|
95
|
-
|
|
101
|
+
try {
|
|
102
|
+
await globalOptions?.authorizationTokenRefresh(url);
|
|
103
|
+
} catch (error) {
|
|
104
|
+
logger?.error(`Error refreshing token for URL: ${url}`);
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
96
107
|
}
|
|
97
108
|
};
|
|
98
|
-
createAuthRefreshInterceptor(
|
|
109
|
+
createAuthRefreshInterceptor(axiosInstance, refreshAuthLogic);
|
|
99
110
|
}
|
|
100
111
|
if (logger) {
|
|
101
|
-
|
|
112
|
+
axiosInstance.interceptors.request.use((request) => {
|
|
102
113
|
const requestObject = {
|
|
103
114
|
url: request.url,
|
|
104
115
|
params: request.params,
|
|
@@ -107,7 +118,7 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
107
118
|
logger.debug(JSON.stringify(requestObject, null, 2));
|
|
108
119
|
return request;
|
|
109
120
|
});
|
|
110
|
-
|
|
121
|
+
axiosInstance.interceptors.response.use((response) => {
|
|
111
122
|
const responseObject = {
|
|
112
123
|
data: response.data,
|
|
113
124
|
config: response.config,
|
|
@@ -118,20 +129,35 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
118
129
|
});
|
|
119
130
|
}
|
|
120
131
|
const client = {
|
|
121
|
-
get: (url, args, opts) => callServer(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
get: (url, args, opts) => callServer(
|
|
133
|
+
axiosInstance,
|
|
134
|
+
mergeArgs(baseURL, url, "get", args, opts, globalOptions)
|
|
135
|
+
),
|
|
136
|
+
post: (url, args, opts) => callServer(
|
|
137
|
+
axiosInstance,
|
|
138
|
+
mergeArgs(baseURL, url, "post", args, opts, globalOptions)
|
|
139
|
+
),
|
|
140
|
+
put: (url, args, opts) => callServer(
|
|
141
|
+
axiosInstance,
|
|
142
|
+
mergeArgs(baseURL, url, "put", args, opts, globalOptions)
|
|
143
|
+
),
|
|
144
|
+
patch: (url, args, opts) => callServer(
|
|
145
|
+
axiosInstance,
|
|
146
|
+
mergeArgs(baseURL, url, "patch", args, opts, globalOptions)
|
|
147
|
+
),
|
|
148
|
+
delete: (url, args, opts) => callServer(
|
|
149
|
+
axiosInstance,
|
|
150
|
+
mergeArgs(baseURL, url, "delete", args, opts, globalOptions)
|
|
151
|
+
)
|
|
126
152
|
};
|
|
127
|
-
return client;
|
|
153
|
+
return { ...client, axiosInstance };
|
|
128
154
|
};
|
|
129
|
-
var callServer = async (args) => {
|
|
155
|
+
var callServer = async (axiosInstance, args) => {
|
|
130
156
|
try {
|
|
131
157
|
const serializer = paramsSerializer(args.arrayFormat);
|
|
132
158
|
const body = args.method?.toLowerCase() === "get" || args.method?.toLowerCase() === "delete" ? void 0 : args.body;
|
|
133
159
|
const { headers, data } = await retry(
|
|
134
|
-
() =>
|
|
160
|
+
() => axiosInstance.request({
|
|
135
161
|
baseURL: args.baseUrl,
|
|
136
162
|
url: args.url,
|
|
137
163
|
method: args.method,
|