@sebspark/openapi-client 2.4.1 → 3.0.0
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.ts +4 -5
- package/dist/index.js +26 -25
- package/dist/index.mjs +25 -24
- package/package.json +8 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
export * from '@sebspark/retry';
|
|
1
2
|
import { BaseClient, ClientOptions, RequestOptions, APIResponse } from '@sebspark/openapi-core';
|
|
2
3
|
import { AxiosInstance } from 'axios';
|
|
3
|
-
import {
|
|
4
|
-
export * from '@sebspark/retry';
|
|
4
|
+
import { getLogger } from '@sebspark/otel';
|
|
5
5
|
|
|
6
6
|
type TypedAxiosClient<T> = T & {
|
|
7
7
|
axiosInstance: AxiosInstance;
|
|
8
8
|
};
|
|
9
|
-
declare const TypedClient: <C extends Partial<BaseClient>>(baseURL: string, globalOptions?: ClientOptions
|
|
9
|
+
declare const TypedClient: <C extends Partial<BaseClient>>(baseURL: string, globalOptions?: ClientOptions) => TypedAxiosClient<C>;
|
|
10
10
|
|
|
11
11
|
type GatewayGraphqlClient$1 = Pick<BaseClient, 'post' | 'get'> & {
|
|
12
12
|
post: {
|
|
@@ -44,14 +44,13 @@ type GatewayGraphqlClient$1 = Pick<BaseClient, 'post' | 'get'> & {
|
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
46
|
type GatewayGraphqlClientArgs = {
|
|
47
|
-
logger: Logger;
|
|
48
47
|
uri: string;
|
|
49
48
|
apiKey: string;
|
|
50
49
|
};
|
|
51
50
|
|
|
52
51
|
declare class GatewayGraphqlClient<T extends GatewayGraphqlClient$1 = GatewayGraphqlClient$1> {
|
|
53
52
|
client: T;
|
|
54
|
-
logger:
|
|
53
|
+
logger: ReturnType<typeof getLogger>;
|
|
55
54
|
private uri;
|
|
56
55
|
private options;
|
|
57
56
|
constructor(args: GatewayGraphqlClientArgs);
|
package/dist/index.js
CHANGED
|
@@ -18,9 +18,13 @@ var __spreadValues = (a, b) => {
|
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
20
|
|
|
21
|
+
// src/index.ts
|
|
22
|
+
var _retry = require('@sebspark/retry'); _createStarExport(_retry);
|
|
23
|
+
|
|
21
24
|
// src/client.ts
|
|
22
25
|
var _openapicore = require('@sebspark/openapi-core');
|
|
23
|
-
var
|
|
26
|
+
var _otel = require('@sebspark/otel');
|
|
27
|
+
|
|
24
28
|
var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);
|
|
25
29
|
var _axiosauthrefresh = require('axios-auth-refresh'); var _axiosauthrefresh2 = _interopRequireDefault(_axiosauthrefresh);
|
|
26
30
|
|
|
@@ -78,53 +82,53 @@ var paramsSerializer = (format) => (params) => {
|
|
|
78
82
|
};
|
|
79
83
|
|
|
80
84
|
// src/client.ts
|
|
81
|
-
var TypedClient = (baseURL, globalOptions
|
|
85
|
+
var TypedClient = (baseURL, globalOptions) => {
|
|
82
86
|
const axiosInstance = _axios2.default.create();
|
|
83
|
-
logger
|
|
87
|
+
const logger = _otel.getLogger.call(void 0, "TypedClient");
|
|
88
|
+
logger.debug(`client initialized with arrayFormat '${globalOptions == null ? void 0 : globalOptions.arrayFormat}'`);
|
|
84
89
|
if (globalOptions == null ? void 0 : globalOptions.authorizationTokenGenerator) {
|
|
85
|
-
logger
|
|
90
|
+
logger.debug("authorizationTokenGenerator is set");
|
|
86
91
|
axiosInstance.interceptors.request.use(async (request) => {
|
|
87
92
|
const url = `${request.baseURL}${request.url}`;
|
|
88
|
-
logger
|
|
93
|
+
logger.debug(`Intercepting request to ${url}`);
|
|
89
94
|
if ((globalOptions == null ? void 0 : globalOptions.authorizationTokenGenerator) && url) {
|
|
90
95
|
try {
|
|
91
96
|
const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(url);
|
|
92
97
|
if (authorizationTokenHeaders) {
|
|
93
98
|
for (const key of Object.keys(authorizationTokenHeaders)) {
|
|
94
99
|
const value = authorizationTokenHeaders[key];
|
|
95
|
-
logger
|
|
100
|
+
logger.debug(`Setting header ${key} to ${value}`);
|
|
96
101
|
request.headers[key] = value;
|
|
97
102
|
}
|
|
98
103
|
}
|
|
99
104
|
} catch (error) {
|
|
100
|
-
logger
|
|
105
|
+
logger.error(`Error generating token for URL: ${url}`, error);
|
|
101
106
|
throw error;
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
|
-
logger
|
|
105
|
-
logger
|
|
109
|
+
logger.debug("Intercepted request:");
|
|
110
|
+
logger.debug(JSON.stringify(request, null, 2));
|
|
106
111
|
return request;
|
|
107
112
|
});
|
|
108
113
|
}
|
|
109
114
|
if (globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh) {
|
|
110
115
|
const refreshAuthLogic = async (failedRequest) => {
|
|
111
116
|
var _a, _b;
|
|
112
|
-
logger == null ? void 0 : logger.debug("Failed request");
|
|
113
|
-
logger == null ? void 0 : logger.debug(JSON.stringify(failedRequest, null, 2));
|
|
114
117
|
if (!_axios2.default.isAxiosError(failedRequest)) {
|
|
115
|
-
logger
|
|
118
|
+
logger.error("Failed request is not an axios error", failedRequest);
|
|
116
119
|
return;
|
|
120
|
+
} else {
|
|
121
|
+
logger.debug("Failed request", failedRequest);
|
|
117
122
|
}
|
|
118
123
|
const axiosError = failedRequest;
|
|
119
|
-
logger
|
|
120
|
-
logger == null ? void 0 : logger.debug(JSON.stringify(axiosError.config, null, 2));
|
|
124
|
+
logger.debug("Failed request config", axiosError.config);
|
|
121
125
|
const url = `${(_a = axiosError.config) == null ? void 0 : _a.baseURL}${(_b = axiosError.config) == null ? void 0 : _b.url}`;
|
|
122
126
|
if ((globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh) && url) {
|
|
123
|
-
logger
|
|
127
|
+
logger.debug(`Refreshing token for URL ${url}`);
|
|
124
128
|
try {
|
|
125
129
|
await (globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh(url));
|
|
126
130
|
} catch (error) {
|
|
127
|
-
logger
|
|
131
|
+
logger.error(`Error refreshing token for URL: ${url}`, error);
|
|
128
132
|
throw error;
|
|
129
133
|
}
|
|
130
134
|
}
|
|
@@ -138,7 +142,7 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
138
142
|
params: request.params,
|
|
139
143
|
headers: request.headers
|
|
140
144
|
};
|
|
141
|
-
logger.debug(
|
|
145
|
+
logger.debug("request", requestObject);
|
|
142
146
|
return request;
|
|
143
147
|
});
|
|
144
148
|
axiosInstance.interceptors.response.use((response) => {
|
|
@@ -147,7 +151,7 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
147
151
|
config: response.config,
|
|
148
152
|
headers: response.headers
|
|
149
153
|
};
|
|
150
|
-
logger.debug(
|
|
154
|
+
logger.debug("response", responseObject);
|
|
151
155
|
return response;
|
|
152
156
|
});
|
|
153
157
|
}
|
|
@@ -164,8 +168,7 @@ var callServer = async (axiosInstance, args, logger) => {
|
|
|
164
168
|
var _a, _b;
|
|
165
169
|
try {
|
|
166
170
|
const serializer = paramsSerializer(args.arrayFormat);
|
|
167
|
-
logger
|
|
168
|
-
logger == null ? void 0 : logger.debug(`[callServer] sample serialization: ${serializer({test: ["a", "b"]})}`);
|
|
171
|
+
logger.debug(`[callServer] typeof serializer: ${typeof serializer}`);
|
|
169
172
|
const body = ((_a = args.method) == null ? void 0 : _a.toLowerCase()) === "get" || ((_b = args.method) == null ? void 0 : _b.toLowerCase()) === "delete" ? void 0 : args.body;
|
|
170
173
|
const {headers, data} = await _retry.retry.call(void 0, () => axiosInstance.request({
|
|
171
174
|
baseURL: args.baseUrl,
|
|
@@ -206,18 +209,16 @@ var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
|
|
|
206
209
|
var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => (a == null ? void 0 : a[prop]) || {}));
|
|
207
210
|
var setParams = (url, params = {}) => Object.entries(params).reduce((url2, [key, val]) => url2.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`), url);
|
|
208
211
|
|
|
209
|
-
// src/index.ts
|
|
210
|
-
|
|
211
|
-
|
|
212
212
|
// src/graphql/client.ts
|
|
213
213
|
|
|
214
214
|
|
|
215
215
|
|
|
216
216
|
var _openapiauthiam = require('@sebspark/openapi-auth-iam');
|
|
217
|
+
|
|
217
218
|
var GatewayGraphqlClient = class {
|
|
218
219
|
constructor(args) {
|
|
219
220
|
this.uri = args.uri;
|
|
220
|
-
this.logger =
|
|
221
|
+
this.logger = _otel.getLogger.call(void 0, "GatewayGraphqlClient");
|
|
221
222
|
this.options = {
|
|
222
223
|
timeout: 10 * 1e3,
|
|
223
224
|
authorizationTokenGenerator: async (url) => {
|
|
@@ -229,7 +230,7 @@ var GatewayGraphqlClient = class {
|
|
|
229
230
|
return _openapiauthiam.apiGatewayTokenRefresh.call(void 0, )(url);
|
|
230
231
|
}
|
|
231
232
|
};
|
|
232
|
-
this.client = TypedClient(args.uri, this.options
|
|
233
|
+
this.client = TypedClient(args.uri, this.options);
|
|
233
234
|
}
|
|
234
235
|
async graphql(query, variables) {
|
|
235
236
|
try {
|
package/dist/index.mjs
CHANGED
|
@@ -18,8 +18,12 @@ var __spreadValues = (a, b) => {
|
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
20
|
|
|
21
|
+
// src/index.ts
|
|
22
|
+
export * from "@sebspark/retry";
|
|
23
|
+
|
|
21
24
|
// src/client.ts
|
|
22
25
|
import {fromAxiosError} from "@sebspark/openapi-core";
|
|
26
|
+
import {getLogger} from "@sebspark/otel";
|
|
23
27
|
import {retry} from "@sebspark/retry";
|
|
24
28
|
import axios from "axios";
|
|
25
29
|
import createAuthRefreshInterceptor from "axios-auth-refresh";
|
|
@@ -78,53 +82,53 @@ var paramsSerializer = (format) => (params) => {
|
|
|
78
82
|
};
|
|
79
83
|
|
|
80
84
|
// src/client.ts
|
|
81
|
-
var TypedClient = (baseURL, globalOptions
|
|
85
|
+
var TypedClient = (baseURL, globalOptions) => {
|
|
82
86
|
const axiosInstance = axios.create();
|
|
83
|
-
logger
|
|
87
|
+
const logger = getLogger("TypedClient");
|
|
88
|
+
logger.debug(`client initialized with arrayFormat '${globalOptions == null ? void 0 : globalOptions.arrayFormat}'`);
|
|
84
89
|
if (globalOptions == null ? void 0 : globalOptions.authorizationTokenGenerator) {
|
|
85
|
-
logger
|
|
90
|
+
logger.debug("authorizationTokenGenerator is set");
|
|
86
91
|
axiosInstance.interceptors.request.use(async (request) => {
|
|
87
92
|
const url = `${request.baseURL}${request.url}`;
|
|
88
|
-
logger
|
|
93
|
+
logger.debug(`Intercepting request to ${url}`);
|
|
89
94
|
if ((globalOptions == null ? void 0 : globalOptions.authorizationTokenGenerator) && url) {
|
|
90
95
|
try {
|
|
91
96
|
const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(url);
|
|
92
97
|
if (authorizationTokenHeaders) {
|
|
93
98
|
for (const key of Object.keys(authorizationTokenHeaders)) {
|
|
94
99
|
const value = authorizationTokenHeaders[key];
|
|
95
|
-
logger
|
|
100
|
+
logger.debug(`Setting header ${key} to ${value}`);
|
|
96
101
|
request.headers[key] = value;
|
|
97
102
|
}
|
|
98
103
|
}
|
|
99
104
|
} catch (error) {
|
|
100
|
-
logger
|
|
105
|
+
logger.error(`Error generating token for URL: ${url}`, error);
|
|
101
106
|
throw error;
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
|
-
logger
|
|
105
|
-
logger
|
|
109
|
+
logger.debug("Intercepted request:");
|
|
110
|
+
logger.debug(JSON.stringify(request, null, 2));
|
|
106
111
|
return request;
|
|
107
112
|
});
|
|
108
113
|
}
|
|
109
114
|
if (globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh) {
|
|
110
115
|
const refreshAuthLogic = async (failedRequest) => {
|
|
111
116
|
var _a, _b;
|
|
112
|
-
logger == null ? void 0 : logger.debug("Failed request");
|
|
113
|
-
logger == null ? void 0 : logger.debug(JSON.stringify(failedRequest, null, 2));
|
|
114
117
|
if (!axios.isAxiosError(failedRequest)) {
|
|
115
|
-
logger
|
|
118
|
+
logger.error("Failed request is not an axios error", failedRequest);
|
|
116
119
|
return;
|
|
120
|
+
} else {
|
|
121
|
+
logger.debug("Failed request", failedRequest);
|
|
117
122
|
}
|
|
118
123
|
const axiosError = failedRequest;
|
|
119
|
-
logger
|
|
120
|
-
logger == null ? void 0 : logger.debug(JSON.stringify(axiosError.config, null, 2));
|
|
124
|
+
logger.debug("Failed request config", axiosError.config);
|
|
121
125
|
const url = `${(_a = axiosError.config) == null ? void 0 : _a.baseURL}${(_b = axiosError.config) == null ? void 0 : _b.url}`;
|
|
122
126
|
if ((globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh) && url) {
|
|
123
|
-
logger
|
|
127
|
+
logger.debug(`Refreshing token for URL ${url}`);
|
|
124
128
|
try {
|
|
125
129
|
await (globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh(url));
|
|
126
130
|
} catch (error) {
|
|
127
|
-
logger
|
|
131
|
+
logger.error(`Error refreshing token for URL: ${url}`, error);
|
|
128
132
|
throw error;
|
|
129
133
|
}
|
|
130
134
|
}
|
|
@@ -138,7 +142,7 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
138
142
|
params: request.params,
|
|
139
143
|
headers: request.headers
|
|
140
144
|
};
|
|
141
|
-
logger.debug(
|
|
145
|
+
logger.debug("request", requestObject);
|
|
142
146
|
return request;
|
|
143
147
|
});
|
|
144
148
|
axiosInstance.interceptors.response.use((response) => {
|
|
@@ -147,7 +151,7 @@ var TypedClient = (baseURL, globalOptions, logger) => {
|
|
|
147
151
|
config: response.config,
|
|
148
152
|
headers: response.headers
|
|
149
153
|
};
|
|
150
|
-
logger.debug(
|
|
154
|
+
logger.debug("response", responseObject);
|
|
151
155
|
return response;
|
|
152
156
|
});
|
|
153
157
|
}
|
|
@@ -164,8 +168,7 @@ var callServer = async (axiosInstance, args, logger) => {
|
|
|
164
168
|
var _a, _b;
|
|
165
169
|
try {
|
|
166
170
|
const serializer = paramsSerializer(args.arrayFormat);
|
|
167
|
-
logger
|
|
168
|
-
logger == null ? void 0 : logger.debug(`[callServer] sample serialization: ${serializer({test: ["a", "b"]})}`);
|
|
171
|
+
logger.debug(`[callServer] typeof serializer: ${typeof serializer}`);
|
|
169
172
|
const body = ((_a = args.method) == null ? void 0 : _a.toLowerCase()) === "get" || ((_b = args.method) == null ? void 0 : _b.toLowerCase()) === "delete" ? void 0 : args.body;
|
|
170
173
|
const {headers, data} = await retry(() => axiosInstance.request({
|
|
171
174
|
baseURL: args.baseUrl,
|
|
@@ -206,18 +209,16 @@ var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
|
|
|
206
209
|
var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => (a == null ? void 0 : a[prop]) || {}));
|
|
207
210
|
var setParams = (url, params = {}) => Object.entries(params).reduce((url2, [key, val]) => url2.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`), url);
|
|
208
211
|
|
|
209
|
-
// src/index.ts
|
|
210
|
-
export * from "@sebspark/retry";
|
|
211
|
-
|
|
212
212
|
// src/graphql/client.ts
|
|
213
213
|
import {
|
|
214
214
|
apiGatewayTokenByUrlGenerator,
|
|
215
215
|
apiGatewayTokenRefresh
|
|
216
216
|
} from "@sebspark/openapi-auth-iam";
|
|
217
|
+
import {getLogger as getLogger2} from "@sebspark/otel";
|
|
217
218
|
var GatewayGraphqlClient = class {
|
|
218
219
|
constructor(args) {
|
|
219
220
|
this.uri = args.uri;
|
|
220
|
-
this.logger =
|
|
221
|
+
this.logger = getLogger2("GatewayGraphqlClient");
|
|
221
222
|
this.options = {
|
|
222
223
|
timeout: 10 * 1e3,
|
|
223
224
|
authorizationTokenGenerator: async (url) => {
|
|
@@ -229,7 +230,7 @@ var GatewayGraphqlClient = class {
|
|
|
229
230
|
return apiGatewayTokenRefresh()(url);
|
|
230
231
|
}
|
|
231
232
|
};
|
|
232
|
-
this.client = TypedClient(args.uri, this.options
|
|
233
|
+
this.client = TypedClient(args.uri, this.options);
|
|
233
234
|
}
|
|
234
235
|
async graphql(query, variables) {
|
|
235
236
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebspark/openapi-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -19,16 +19,20 @@
|
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@sebspark/openapi-typegen": "*",
|
|
22
|
-
"
|
|
22
|
+
"@sebspark/otel": "*",
|
|
23
|
+
"nock": "14.0.10",
|
|
23
24
|
"tsconfig": "*",
|
|
24
25
|
"tsup-node": "^0.1.0",
|
|
25
|
-
"vitest": "
|
|
26
|
+
"vitest": "4.0.3"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
28
29
|
"@sebspark/openapi-auth-iam": "*",
|
|
29
30
|
"@sebspark/openapi-core": "*",
|
|
30
31
|
"@sebspark/retry": "*",
|
|
31
|
-
"axios": "^1.12.
|
|
32
|
+
"axios": "^1.12.2",
|
|
32
33
|
"axios-auth-refresh": "3.3.6"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@sebspark/otel": ">=1.1.3"
|
|
33
37
|
}
|
|
34
38
|
}
|