@sebspark/openapi-client 3.0.0 → 4.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.js +39 -40
- package/package.json +8 -6
- package/dist/index.mjs +0 -263
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -19,14 +19,14 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
20
|
|
|
21
21
|
// src/index.ts
|
|
22
|
-
|
|
22
|
+
export * from "@sebspark/retry";
|
|
23
23
|
|
|
24
24
|
// src/client.ts
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
import {fromAxiosError} from "@sebspark/openapi-core";
|
|
26
|
+
import {getLogger} from "@sebspark/otel";
|
|
27
|
+
import {retry} from "@sebspark/retry";
|
|
28
|
+
import axios from "axios";
|
|
29
|
+
import createAuthRefreshInterceptor from "axios-auth-refresh";
|
|
30
30
|
|
|
31
31
|
// src/paramsSerializer.ts
|
|
32
32
|
var encodeParam = (param) => encodeURIComponent(param);
|
|
@@ -83,15 +83,15 @@ var paramsSerializer = (format) => (params) => {
|
|
|
83
83
|
|
|
84
84
|
// src/client.ts
|
|
85
85
|
var TypedClient = (baseURL, globalOptions) => {
|
|
86
|
-
const axiosInstance =
|
|
87
|
-
const logger =
|
|
88
|
-
logger.debug(`client initialized with arrayFormat '${globalOptions
|
|
89
|
-
if (globalOptions
|
|
86
|
+
const axiosInstance = axios.create();
|
|
87
|
+
const logger = getLogger("TypedClient");
|
|
88
|
+
logger.debug(`client initialized with arrayFormat '${globalOptions?.arrayFormat}'`);
|
|
89
|
+
if (globalOptions?.authorizationTokenGenerator) {
|
|
90
90
|
logger.debug("authorizationTokenGenerator is set");
|
|
91
91
|
axiosInstance.interceptors.request.use(async (request) => {
|
|
92
92
|
const url = `${request.baseURL}${request.url}`;
|
|
93
93
|
logger.debug(`Intercepting request to ${url}`);
|
|
94
|
-
if (
|
|
94
|
+
if (globalOptions?.authorizationTokenGenerator && url) {
|
|
95
95
|
try {
|
|
96
96
|
const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(url);
|
|
97
97
|
if (authorizationTokenHeaders) {
|
|
@@ -111,29 +111,29 @@ var TypedClient = (baseURL, globalOptions) => {
|
|
|
111
111
|
return request;
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
|
-
if (globalOptions
|
|
114
|
+
if (globalOptions?.authorizationTokenRefresh) {
|
|
115
115
|
const refreshAuthLogic = async (failedRequest) => {
|
|
116
|
-
|
|
117
|
-
if (!_axios2.default.isAxiosError(failedRequest)) {
|
|
116
|
+
if (!axios.isAxiosError(failedRequest)) {
|
|
118
117
|
logger.error("Failed request is not an axios error", failedRequest);
|
|
119
|
-
|
|
118
|
+
throw failedRequest;
|
|
120
119
|
} else {
|
|
121
120
|
logger.debug("Failed request", failedRequest);
|
|
122
121
|
}
|
|
123
122
|
const axiosError = failedRequest;
|
|
124
123
|
logger.debug("Failed request config", axiosError.config);
|
|
125
|
-
const url = `${
|
|
126
|
-
if (
|
|
124
|
+
const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`;
|
|
125
|
+
if (globalOptions?.authorizationTokenRefresh && url) {
|
|
127
126
|
logger.debug(`Refreshing token for URL ${url}`);
|
|
128
127
|
try {
|
|
129
|
-
await
|
|
128
|
+
await globalOptions?.authorizationTokenRefresh(url);
|
|
130
129
|
} catch (error) {
|
|
131
130
|
logger.error(`Error refreshing token for URL: ${url}`, error);
|
|
132
131
|
throw error;
|
|
133
132
|
}
|
|
134
133
|
}
|
|
134
|
+
return axiosError.response;
|
|
135
135
|
};
|
|
136
|
-
|
|
136
|
+
createAuthRefreshInterceptor(axiosInstance, refreshAuthLogic);
|
|
137
137
|
}
|
|
138
138
|
if (logger) {
|
|
139
139
|
axiosInstance.interceptors.request.use((request) => {
|
|
@@ -165,12 +165,11 @@ var TypedClient = (baseURL, globalOptions) => {
|
|
|
165
165
|
return __spreadProps(__spreadValues({}, client), {axiosInstance});
|
|
166
166
|
};
|
|
167
167
|
var callServer = async (axiosInstance, args, logger) => {
|
|
168
|
-
var _a, _b;
|
|
169
168
|
try {
|
|
170
169
|
const serializer = paramsSerializer(args.arrayFormat);
|
|
171
170
|
logger.debug(`[callServer] typeof serializer: ${typeof serializer}`);
|
|
172
|
-
const body =
|
|
173
|
-
const {headers, data} = await
|
|
171
|
+
const body = args.method?.toLowerCase() === "get" || args.method?.toLowerCase() === "delete" ? void 0 : args.body;
|
|
172
|
+
const {headers, data} = await retry(() => axiosInstance.request({
|
|
174
173
|
baseURL: args.baseUrl,
|
|
175
174
|
url: args.url,
|
|
176
175
|
method: args.method,
|
|
@@ -183,7 +182,7 @@ var callServer = async (axiosInstance, args, logger) => {
|
|
|
183
182
|
}), args.retry);
|
|
184
183
|
return {headers, data};
|
|
185
184
|
} catch (error) {
|
|
186
|
-
throw
|
|
185
|
+
throw fromAxiosError(error);
|
|
187
186
|
}
|
|
188
187
|
};
|
|
189
188
|
var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
|
|
@@ -200,34 +199,34 @@ var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
|
|
|
200
199
|
headers,
|
|
201
200
|
body,
|
|
202
201
|
retry: retry2,
|
|
203
|
-
arrayFormat: global
|
|
204
|
-
httpsAgent: extras
|
|
205
|
-
httpAgent: extras
|
|
202
|
+
arrayFormat: global?.arrayFormat,
|
|
203
|
+
httpsAgent: extras?.httpsAgent,
|
|
204
|
+
httpAgent: extras?.httpAgent
|
|
206
205
|
};
|
|
207
206
|
return merged;
|
|
208
207
|
};
|
|
209
|
-
var merge = (prop, ...args) => Object.assign({}, ...args.map((a) =>
|
|
208
|
+
var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => a?.[prop] || {}));
|
|
210
209
|
var setParams = (url, params = {}) => Object.entries(params).reduce((url2, [key, val]) => url2.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`), url);
|
|
211
210
|
|
|
212
211
|
// src/graphql/client.ts
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
212
|
+
import {
|
|
213
|
+
apiGatewayTokenByUrlGenerator,
|
|
214
|
+
apiGatewayTokenRefresh
|
|
215
|
+
} from "@sebspark/openapi-auth-iam";
|
|
216
|
+
import {getLogger as getLogger2} from "@sebspark/otel";
|
|
218
217
|
var GatewayGraphqlClient = class {
|
|
219
218
|
constructor(args) {
|
|
220
219
|
this.uri = args.uri;
|
|
221
|
-
this.logger =
|
|
220
|
+
this.logger = getLogger2("GatewayGraphqlClient");
|
|
222
221
|
this.options = {
|
|
223
222
|
timeout: 10 * 1e3,
|
|
224
223
|
authorizationTokenGenerator: async (url) => {
|
|
225
224
|
this.logger.debug(`Generating token for: ${this.uri}`);
|
|
226
|
-
return
|
|
225
|
+
return apiGatewayTokenByUrlGenerator(args.apiKey)(url);
|
|
227
226
|
},
|
|
228
227
|
authorizationTokenRefresh: async (url) => {
|
|
229
228
|
this.logger.debug(`Refreshing token for: ${this.uri}`);
|
|
230
|
-
return
|
|
229
|
+
return apiGatewayTokenRefresh()(url);
|
|
231
230
|
}
|
|
232
231
|
};
|
|
233
232
|
this.client = TypedClient(args.uri, this.options);
|
|
@@ -257,7 +256,7 @@ var GatewayGraphqlClient = class {
|
|
|
257
256
|
return false;
|
|
258
257
|
}
|
|
259
258
|
};
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
259
|
+
export {
|
|
260
|
+
GatewayGraphqlClient,
|
|
261
|
+
TypedClient
|
|
262
|
+
};
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebspark/openapi-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"types": "dist/index.d.ts",
|
|
8
9
|
"files": [
|
|
9
10
|
"dist"
|
|
10
11
|
],
|
|
11
12
|
"scripts": {
|
|
12
13
|
"generate": "yarn openapi-typegen -i ./src/test/ -o ./src/test/",
|
|
13
|
-
"build": "tsup-node src/index.ts --format esm
|
|
14
|
+
"build": "tsup-node src/index.ts --format esm --target node22 --dts",
|
|
14
15
|
"dev": "tsc --watch --noEmit",
|
|
15
16
|
"lint": "biome check .",
|
|
16
17
|
"test": "vitest run --passWithNoTests --coverage",
|
|
@@ -20,19 +21,20 @@
|
|
|
20
21
|
"devDependencies": {
|
|
21
22
|
"@sebspark/openapi-typegen": "*",
|
|
22
23
|
"@sebspark/otel": "*",
|
|
24
|
+
"@sebspark/tsconfig": "*",
|
|
25
|
+
"express": "5.1.0",
|
|
23
26
|
"nock": "14.0.10",
|
|
24
|
-
"tsconfig": "*",
|
|
25
27
|
"tsup-node": "^0.1.0",
|
|
26
|
-
"vitest": "4.0.
|
|
28
|
+
"vitest": "4.0.5"
|
|
27
29
|
},
|
|
28
30
|
"dependencies": {
|
|
29
31
|
"@sebspark/openapi-auth-iam": "*",
|
|
30
32
|
"@sebspark/openapi-core": "*",
|
|
31
33
|
"@sebspark/retry": "*",
|
|
32
|
-
"axios": "
|
|
34
|
+
"axios": "1.13.1",
|
|
33
35
|
"axios-auth-refresh": "3.3.6"
|
|
34
36
|
},
|
|
35
37
|
"peerDependencies": {
|
|
36
|
-
"@sebspark/otel": ">=
|
|
38
|
+
"@sebspark/otel": ">=2.0.0"
|
|
37
39
|
}
|
|
38
40
|
}
|
package/dist/index.mjs
DELETED
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
|
|
21
|
-
// src/index.ts
|
|
22
|
-
export * from "@sebspark/retry";
|
|
23
|
-
|
|
24
|
-
// src/client.ts
|
|
25
|
-
import {fromAxiosError} from "@sebspark/openapi-core";
|
|
26
|
-
import {getLogger} from "@sebspark/otel";
|
|
27
|
-
import {retry} from "@sebspark/retry";
|
|
28
|
-
import axios from "axios";
|
|
29
|
-
import createAuthRefreshInterceptor from "axios-auth-refresh";
|
|
30
|
-
|
|
31
|
-
// src/paramsSerializer.ts
|
|
32
|
-
var encodeParam = (param) => encodeURIComponent(param);
|
|
33
|
-
var encodeValue = (param, encodeCommas = false) => {
|
|
34
|
-
if (param instanceof Date) {
|
|
35
|
-
return encodeURIComponent(param.toISOString());
|
|
36
|
-
}
|
|
37
|
-
if (typeof param === "number" || typeof param === "string" || typeof param === "boolean") {
|
|
38
|
-
if (encodeCommas) {
|
|
39
|
-
return encodeURIComponent(param);
|
|
40
|
-
}
|
|
41
|
-
return param.toString().split(",").map((p) => encodeURIComponent(p)).join(",");
|
|
42
|
-
}
|
|
43
|
-
return "";
|
|
44
|
-
};
|
|
45
|
-
var paramsSerializer = (format) => (params) => {
|
|
46
|
-
if (!params) {
|
|
47
|
-
return "";
|
|
48
|
-
}
|
|
49
|
-
const s = [];
|
|
50
|
-
for (const [key, value] of Object.entries(params)) {
|
|
51
|
-
if (value === void 0) {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
if (Array.isArray(value)) {
|
|
55
|
-
const title = encodeParam(key);
|
|
56
|
-
if (format === "comma") {
|
|
57
|
-
s.push(`${title}=${value.map((v) => encodeValue(v, true)).join(",")}`);
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
value.forEach((v, ix) => {
|
|
61
|
-
const value2 = encodeValue(v);
|
|
62
|
-
switch (format) {
|
|
63
|
-
case "indices": {
|
|
64
|
-
s.push(`${title}[${ix}]=${value2}`);
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
case "repeat": {
|
|
68
|
-
s.push(`${title}=${value2}`);
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
default: {
|
|
72
|
-
s.push(`${title}[]=${value2}`);
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
} else {
|
|
78
|
-
s.push(`${encodeParam(key)}=${encodeValue(value)}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return s.join("&");
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// src/client.ts
|
|
85
|
-
var TypedClient = (baseURL, globalOptions) => {
|
|
86
|
-
const axiosInstance = axios.create();
|
|
87
|
-
const logger = getLogger("TypedClient");
|
|
88
|
-
logger.debug(`client initialized with arrayFormat '${globalOptions == null ? void 0 : globalOptions.arrayFormat}'`);
|
|
89
|
-
if (globalOptions == null ? void 0 : globalOptions.authorizationTokenGenerator) {
|
|
90
|
-
logger.debug("authorizationTokenGenerator is set");
|
|
91
|
-
axiosInstance.interceptors.request.use(async (request) => {
|
|
92
|
-
const url = `${request.baseURL}${request.url}`;
|
|
93
|
-
logger.debug(`Intercepting request to ${url}`);
|
|
94
|
-
if ((globalOptions == null ? void 0 : globalOptions.authorizationTokenGenerator) && url) {
|
|
95
|
-
try {
|
|
96
|
-
const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(url);
|
|
97
|
-
if (authorizationTokenHeaders) {
|
|
98
|
-
for (const key of Object.keys(authorizationTokenHeaders)) {
|
|
99
|
-
const value = authorizationTokenHeaders[key];
|
|
100
|
-
logger.debug(`Setting header ${key} to ${value}`);
|
|
101
|
-
request.headers[key] = value;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
} catch (error) {
|
|
105
|
-
logger.error(`Error generating token for URL: ${url}`, error);
|
|
106
|
-
throw error;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
logger.debug("Intercepted request:");
|
|
110
|
-
logger.debug(JSON.stringify(request, null, 2));
|
|
111
|
-
return request;
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
if (globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh) {
|
|
115
|
-
const refreshAuthLogic = async (failedRequest) => {
|
|
116
|
-
var _a, _b;
|
|
117
|
-
if (!axios.isAxiosError(failedRequest)) {
|
|
118
|
-
logger.error("Failed request is not an axios error", failedRequest);
|
|
119
|
-
return;
|
|
120
|
-
} else {
|
|
121
|
-
logger.debug("Failed request", failedRequest);
|
|
122
|
-
}
|
|
123
|
-
const axiosError = failedRequest;
|
|
124
|
-
logger.debug("Failed request config", axiosError.config);
|
|
125
|
-
const url = `${(_a = axiosError.config) == null ? void 0 : _a.baseURL}${(_b = axiosError.config) == null ? void 0 : _b.url}`;
|
|
126
|
-
if ((globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh) && url) {
|
|
127
|
-
logger.debug(`Refreshing token for URL ${url}`);
|
|
128
|
-
try {
|
|
129
|
-
await (globalOptions == null ? void 0 : globalOptions.authorizationTokenRefresh(url));
|
|
130
|
-
} catch (error) {
|
|
131
|
-
logger.error(`Error refreshing token for URL: ${url}`, error);
|
|
132
|
-
throw error;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
createAuthRefreshInterceptor(axiosInstance, refreshAuthLogic);
|
|
137
|
-
}
|
|
138
|
-
if (logger) {
|
|
139
|
-
axiosInstance.interceptors.request.use((request) => {
|
|
140
|
-
const requestObject = {
|
|
141
|
-
url: request.url,
|
|
142
|
-
params: request.params,
|
|
143
|
-
headers: request.headers
|
|
144
|
-
};
|
|
145
|
-
logger.debug("request", requestObject);
|
|
146
|
-
return request;
|
|
147
|
-
});
|
|
148
|
-
axiosInstance.interceptors.response.use((response) => {
|
|
149
|
-
const responseObject = {
|
|
150
|
-
data: response.data,
|
|
151
|
-
config: response.config,
|
|
152
|
-
headers: response.headers
|
|
153
|
-
};
|
|
154
|
-
logger.debug("response", responseObject);
|
|
155
|
-
return response;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
const client = {
|
|
159
|
-
get: (url, args, opts) => callServer(axiosInstance, mergeArgs(baseURL, url, "get", args, opts, globalOptions), logger),
|
|
160
|
-
post: (url, args, opts) => callServer(axiosInstance, mergeArgs(baseURL, url, "post", args, opts, globalOptions), logger),
|
|
161
|
-
put: (url, args, opts) => callServer(axiosInstance, mergeArgs(baseURL, url, "put", args, opts, globalOptions), logger),
|
|
162
|
-
patch: (url, args, opts) => callServer(axiosInstance, mergeArgs(baseURL, url, "patch", args, opts, globalOptions), logger),
|
|
163
|
-
delete: (url, args, opts) => callServer(axiosInstance, mergeArgs(baseURL, url, "delete", args, opts, globalOptions), logger)
|
|
164
|
-
};
|
|
165
|
-
return __spreadProps(__spreadValues({}, client), {axiosInstance});
|
|
166
|
-
};
|
|
167
|
-
var callServer = async (axiosInstance, args, logger) => {
|
|
168
|
-
var _a, _b;
|
|
169
|
-
try {
|
|
170
|
-
const serializer = paramsSerializer(args.arrayFormat);
|
|
171
|
-
logger.debug(`[callServer] typeof serializer: ${typeof serializer}`);
|
|
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;
|
|
173
|
-
const {headers, data} = await retry(() => axiosInstance.request({
|
|
174
|
-
baseURL: args.baseUrl,
|
|
175
|
-
url: args.url,
|
|
176
|
-
method: args.method,
|
|
177
|
-
headers: args.headers,
|
|
178
|
-
params: args.params,
|
|
179
|
-
paramsSerializer: serializer,
|
|
180
|
-
data: body,
|
|
181
|
-
httpsAgent: args.httpsAgent,
|
|
182
|
-
httpAgent: args.httpAgent
|
|
183
|
-
}), args.retry);
|
|
184
|
-
return {headers, data};
|
|
185
|
-
} catch (error) {
|
|
186
|
-
throw fromAxiosError(error);
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
|
|
190
|
-
const params = merge("params", global, requestArgs, extras);
|
|
191
|
-
const query = merge("query", global, requestArgs, extras);
|
|
192
|
-
const headers = merge("headers", global, requestArgs, extras);
|
|
193
|
-
const body = merge("body", global, requestArgs, extras);
|
|
194
|
-
const retry2 = merge("retry", global, requestArgs, extras);
|
|
195
|
-
const merged = {
|
|
196
|
-
url: setParams(url, params),
|
|
197
|
-
baseUrl,
|
|
198
|
-
method,
|
|
199
|
-
params: query,
|
|
200
|
-
headers,
|
|
201
|
-
body,
|
|
202
|
-
retry: retry2,
|
|
203
|
-
arrayFormat: global == null ? void 0 : global.arrayFormat,
|
|
204
|
-
httpsAgent: extras == null ? void 0 : extras.httpsAgent,
|
|
205
|
-
httpAgent: extras == null ? void 0 : extras.httpAgent
|
|
206
|
-
};
|
|
207
|
-
return merged;
|
|
208
|
-
};
|
|
209
|
-
var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => (a == null ? void 0 : a[prop]) || {}));
|
|
210
|
-
var setParams = (url, params = {}) => Object.entries(params).reduce((url2, [key, val]) => url2.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`), url);
|
|
211
|
-
|
|
212
|
-
// src/graphql/client.ts
|
|
213
|
-
import {
|
|
214
|
-
apiGatewayTokenByUrlGenerator,
|
|
215
|
-
apiGatewayTokenRefresh
|
|
216
|
-
} from "@sebspark/openapi-auth-iam";
|
|
217
|
-
import {getLogger as getLogger2} from "@sebspark/otel";
|
|
218
|
-
var GatewayGraphqlClient = class {
|
|
219
|
-
constructor(args) {
|
|
220
|
-
this.uri = args.uri;
|
|
221
|
-
this.logger = getLogger2("GatewayGraphqlClient");
|
|
222
|
-
this.options = {
|
|
223
|
-
timeout: 10 * 1e3,
|
|
224
|
-
authorizationTokenGenerator: async (url) => {
|
|
225
|
-
this.logger.debug(`Generating token for: ${this.uri}`);
|
|
226
|
-
return apiGatewayTokenByUrlGenerator(args.apiKey)(url);
|
|
227
|
-
},
|
|
228
|
-
authorizationTokenRefresh: async (url) => {
|
|
229
|
-
this.logger.debug(`Refreshing token for: ${this.uri}`);
|
|
230
|
-
return apiGatewayTokenRefresh()(url);
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
this.client = TypedClient(args.uri, this.options);
|
|
234
|
-
}
|
|
235
|
-
async graphql(query, variables) {
|
|
236
|
-
try {
|
|
237
|
-
const response = await this.client.post("/graphql", {
|
|
238
|
-
body: {query: query.trim(), variables}
|
|
239
|
-
});
|
|
240
|
-
if (response.data.errors) {
|
|
241
|
-
this.logger.error(`Error posting graphql query to: ${this.uri}`);
|
|
242
|
-
throw new Error(response.data.errors.map((e) => e.message).join("\n"));
|
|
243
|
-
}
|
|
244
|
-
return response.data.data;
|
|
245
|
-
} catch (error) {
|
|
246
|
-
this.logger.error(`Error posting graphql: ${this.uri}`);
|
|
247
|
-
throw error;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
async isHealthy() {
|
|
251
|
-
try {
|
|
252
|
-
await this.client.get("/health");
|
|
253
|
-
return true;
|
|
254
|
-
} catch (error) {
|
|
255
|
-
this.logger.error(error);
|
|
256
|
-
}
|
|
257
|
-
return false;
|
|
258
|
-
}
|
|
259
|
-
};
|
|
260
|
-
export {
|
|
261
|
-
GatewayGraphqlClient,
|
|
262
|
-
TypedClient
|
|
263
|
-
};
|