@sebspark/openapi-client 2.0.0 → 2.1.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 CHANGED
@@ -29,16 +29,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
30
 
31
31
  // src/index.ts
32
- var src_exports = {};
33
- __export(src_exports, {
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
34
  TypedClient: () => TypedClient
35
35
  });
36
- module.exports = __toCommonJS(src_exports);
36
+ module.exports = __toCommonJS(index_exports);
37
37
 
38
38
  // src/client.ts
39
39
  var import_openapi_core = require("@sebspark/openapi-core");
40
40
  var import_retry = require("@sebspark/retry");
41
41
  var import_axios = __toESM(require("axios"));
42
+ var import_axios_auth_refresh = __toESM(require("axios-auth-refresh"));
42
43
 
43
44
  // src/paramsSerializer.ts
44
45
  var encodeParam = (param) => encodeURIComponent(param);
@@ -92,6 +93,34 @@ var paramsSerializer = (format) => (params) => {
92
93
 
93
94
  // src/client.ts
94
95
  var TypedClient = (baseURL, globalOptions, logger) => {
96
+ if (globalOptions?.authorizationTokenGenerator) {
97
+ import_axios.default.interceptors.request.use(async (request) => {
98
+ if (globalOptions?.authorizationTokenGenerator) {
99
+ const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(request.url);
100
+ if (authorizationTokenHeaders) {
101
+ for (const [key, value] of Object.entries(
102
+ authorizationTokenHeaders
103
+ )) {
104
+ request.headers.set(key, value);
105
+ }
106
+ }
107
+ }
108
+ return request;
109
+ });
110
+ }
111
+ if (globalOptions?.authorizationTokenRefresh) {
112
+ const refreshAuthLogic = async (failedRequest) => {
113
+ if (!import_axios.default.isAxiosError(failedRequest)) {
114
+ return;
115
+ }
116
+ const axiosError = failedRequest;
117
+ const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`;
118
+ if (globalOptions?.authorizationTokenRefresh && url) {
119
+ await globalOptions?.authorizationTokenRefresh(axiosError.request.url);
120
+ }
121
+ };
122
+ (0, import_axios_auth_refresh.default)(import_axios.default, refreshAuthLogic);
123
+ }
95
124
  if (logger) {
96
125
  import_axios.default.interceptors.request.use((request) => {
97
126
  const requestObject = {
@@ -122,10 +151,9 @@ var TypedClient = (baseURL, globalOptions, logger) => {
122
151
  return client;
123
152
  };
124
153
  var callServer = async (args) => {
125
- var _a, _b;
126
154
  try {
127
155
  const serializer = paramsSerializer(args.arrayFormat);
128
- const body = ((_a = args.method) == null ? void 0 : _a.toLowerCase()) === "get" || ((_b = args.method) == null ? void 0 : _b.toLowerCase()) === "delete" ? void 0 : args.body;
156
+ const body = args.method?.toLowerCase() === "get" || args.method?.toLowerCase() === "delete" ? void 0 : args.body;
129
157
  const { headers, data } = await (0, import_retry.retry)(
130
158
  () => import_axios.default.request({
131
159
  baseURL: args.baseUrl,
@@ -159,20 +187,20 @@ var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
159
187
  headers,
160
188
  body,
161
189
  retry: retry2,
162
- arrayFormat: global == null ? void 0 : global.arrayFormat,
163
- httpsAgent: extras == null ? void 0 : extras.httpsAgent,
164
- httpAgent: extras == null ? void 0 : extras.httpAgent
190
+ arrayFormat: global?.arrayFormat,
191
+ httpsAgent: extras?.httpsAgent,
192
+ httpAgent: extras?.httpAgent
165
193
  };
166
194
  return merged;
167
195
  };
168
- var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => (a == null ? void 0 : a[prop]) || {}));
196
+ var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => a?.[prop] || {}));
169
197
  var setParams = (url, params = {}) => Object.entries(params).reduce(
170
198
  (url2, [key, val]) => url2.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`),
171
199
  url
172
200
  );
173
201
 
174
202
  // src/index.ts
175
- __reExport(src_exports, require("@sebspark/retry"), module.exports);
203
+ __reExport(index_exports, require("@sebspark/retry"), module.exports);
176
204
  // Annotate the CommonJS export names for ESM import in node:
177
205
  0 && (module.exports = {
178
206
  TypedClient,
package/dist/index.mjs CHANGED
@@ -4,6 +4,7 @@ import {
4
4
  } from "@sebspark/openapi-core";
5
5
  import { retry } from "@sebspark/retry";
6
6
  import axios from "axios";
7
+ import createAuthRefreshInterceptor from "axios-auth-refresh";
7
8
 
8
9
  // src/paramsSerializer.ts
9
10
  var encodeParam = (param) => encodeURIComponent(param);
@@ -57,6 +58,34 @@ var paramsSerializer = (format) => (params) => {
57
58
 
58
59
  // src/client.ts
59
60
  var TypedClient = (baseURL, globalOptions, logger) => {
61
+ if (globalOptions?.authorizationTokenGenerator) {
62
+ axios.interceptors.request.use(async (request) => {
63
+ if (globalOptions?.authorizationTokenGenerator) {
64
+ const authorizationTokenHeaders = await globalOptions.authorizationTokenGenerator(request.url);
65
+ if (authorizationTokenHeaders) {
66
+ for (const [key, value] of Object.entries(
67
+ authorizationTokenHeaders
68
+ )) {
69
+ request.headers.set(key, value);
70
+ }
71
+ }
72
+ }
73
+ return request;
74
+ });
75
+ }
76
+ if (globalOptions?.authorizationTokenRefresh) {
77
+ const refreshAuthLogic = async (failedRequest) => {
78
+ if (!axios.isAxiosError(failedRequest)) {
79
+ return;
80
+ }
81
+ const axiosError = failedRequest;
82
+ const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`;
83
+ if (globalOptions?.authorizationTokenRefresh && url) {
84
+ await globalOptions?.authorizationTokenRefresh(axiosError.request.url);
85
+ }
86
+ };
87
+ createAuthRefreshInterceptor(axios, refreshAuthLogic);
88
+ }
60
89
  if (logger) {
61
90
  axios.interceptors.request.use((request) => {
62
91
  const requestObject = {
@@ -87,10 +116,9 @@ var TypedClient = (baseURL, globalOptions, logger) => {
87
116
  return client;
88
117
  };
89
118
  var callServer = async (args) => {
90
- var _a, _b;
91
119
  try {
92
120
  const serializer = paramsSerializer(args.arrayFormat);
93
- const body = ((_a = args.method) == null ? void 0 : _a.toLowerCase()) === "get" || ((_b = args.method) == null ? void 0 : _b.toLowerCase()) === "delete" ? void 0 : args.body;
121
+ const body = args.method?.toLowerCase() === "get" || args.method?.toLowerCase() === "delete" ? void 0 : args.body;
94
122
  const { headers, data } = await retry(
95
123
  () => axios.request({
96
124
  baseURL: args.baseUrl,
@@ -124,13 +152,13 @@ var mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
124
152
  headers,
125
153
  body,
126
154
  retry: retry2,
127
- arrayFormat: global == null ? void 0 : global.arrayFormat,
128
- httpsAgent: extras == null ? void 0 : extras.httpsAgent,
129
- httpAgent: extras == null ? void 0 : extras.httpAgent
155
+ arrayFormat: global?.arrayFormat,
156
+ httpsAgent: extras?.httpsAgent,
157
+ httpAgent: extras?.httpAgent
130
158
  };
131
159
  return merged;
132
160
  };
133
- var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => (a == null ? void 0 : a[prop]) || {}));
161
+ var merge = (prop, ...args) => Object.assign({}, ...args.map((a) => a?.[prop] || {}));
134
162
  var setParams = (url, params = {}) => Object.entries(params).reduce(
135
163
  (url2, [key, val]) => url2.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`),
136
164
  url
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebspark/openapi-client",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -19,11 +19,14 @@
19
19
  },
20
20
  "devDependencies": {
21
21
  "@sebspark/openapi-typegen": "*",
22
- "tsconfig": "*"
22
+ "nock": "14.0.1",
23
+ "tsconfig": "*",
24
+ "vitest": "^3.0.7"
23
25
  },
24
26
  "dependencies": {
25
27
  "@sebspark/openapi-core": "*",
26
28
  "@sebspark/retry": "*",
27
- "axios": "1.7.9"
29
+ "axios": "1.8.1",
30
+ "axios-auth-refresh": "3.3.6"
28
31
  }
29
32
  }