@vertesia/api-fetch-client 0.80.0-dev.20251121 → 0.80.1
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/README.md +270 -1
- package/package.json +4 -3
- package/lib/cjs/base.js +0 -190
- package/lib/cjs/base.js.map +0 -1
- package/lib/cjs/client.js +0 -107
- package/lib/cjs/client.js.map +0 -1
- package/lib/cjs/errors.js +0 -57
- package/lib/cjs/errors.js.map +0 -1
- package/lib/cjs/index.js +0 -21
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/sse/EventSourceParserStream.js +0 -41
- package/lib/cjs/sse/EventSourceParserStream.js.map +0 -1
- package/lib/cjs/sse/TextDecoderStream.js +0 -51
- package/lib/cjs/sse/TextDecoderStream.js.map +0 -1
- package/lib/cjs/sse/index.js +0 -27
- package/lib/cjs/sse/index.js.map +0 -1
- package/lib/cjs/utils.js +0 -38
- package/lib/cjs/utils.js.map +0 -1
- package/lib/esm/base.js +0 -185
- package/lib/esm/base.js.map +0 -1
- package/lib/esm/client.js +0 -101
- package/lib/esm/client.js.map +0 -1
- package/lib/esm/errors.js +0 -51
- package/lib/esm/errors.js.map +0 -1
- package/lib/esm/index.js +0 -5
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/sse/EventSourceParserStream.js +0 -37
- package/lib/esm/sse/EventSourceParserStream.js.map +0 -1
- package/lib/esm/sse/TextDecoderStream.js +0 -49
- package/lib/esm/sse/TextDecoderStream.js.map +0 -1
- package/lib/esm/sse/index.js +0 -24
- package/lib/esm/sse/index.js.map +0 -1
- package/lib/esm/utils.js +0 -33
- package/lib/esm/utils.js.map +0 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/lib/types/base.d.ts +0 -67
- package/lib/types/base.d.ts.map +0 -1
- package/lib/types/client.d.ts +0 -36
- package/lib/types/client.d.ts.map +0 -1
- package/lib/types/errors.d.ts +0 -18
- package/lib/types/errors.d.ts.map +0 -1
- package/lib/types/index.d.ts +0 -5
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/sse/EventSourceParserStream.d.ts +0 -23
- package/lib/types/sse/EventSourceParserStream.d.ts.map +0 -1
- package/lib/types/sse/TextDecoderStream.d.ts +0 -8
- package/lib/types/sse/TextDecoderStream.d.ts.map +0 -1
- package/lib/types/sse/index.d.ts +0 -13
- package/lib/types/sse/index.d.ts.map +0 -1
- package/lib/types/utils.d.ts +0 -4
- package/lib/types/utils.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1 +1,270 @@
|
|
|
1
|
-
# api-fetch-client
|
|
1
|
+
# @vertesia/api-fetch-client
|
|
2
|
+
|
|
3
|
+
A lightweight HTTP client that wraps the Fetch API and simplifies building REST API clients. Works in both browser and Node.js environments.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Fluent API for building HTTP clients
|
|
8
|
+
- Works in browser and Node.js
|
|
9
|
+
- Server-Sent Events (SSE) support out of the box
|
|
10
|
+
- Customizable authentication via callbacks
|
|
11
|
+
- Request/response interceptors
|
|
12
|
+
- Custom error handling
|
|
13
|
+
- TypeScript support with full type definitions
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @vertesia/api-fetch-client
|
|
19
|
+
# or
|
|
20
|
+
pnpm add @vertesia/api-fetch-client
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Basic Usage
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { FetchClient } from '@vertesia/api-fetch-client';
|
|
27
|
+
|
|
28
|
+
const client = new FetchClient('https://api.example.com/v1');
|
|
29
|
+
|
|
30
|
+
// GET request
|
|
31
|
+
const data = await client.get('/users');
|
|
32
|
+
|
|
33
|
+
// POST request with payload
|
|
34
|
+
const newUser = await client.post('/users', {
|
|
35
|
+
payload: { name: 'John', email: 'john@example.com' }
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// PUT request
|
|
39
|
+
await client.put('/users/123', {
|
|
40
|
+
payload: { name: 'John Updated' }
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// DELETE request
|
|
44
|
+
await client.delete('/users/123');
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Authentication
|
|
48
|
+
|
|
49
|
+
Use the `withAuthCallback` method to set up dynamic authentication:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const client = new FetchClient('https://api.example.com')
|
|
53
|
+
.withAuthCallback(async () => {
|
|
54
|
+
const token = await getAccessToken();
|
|
55
|
+
return `Bearer ${token}`;
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Or set headers directly:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
const client = new FetchClient('https://api.example.com')
|
|
63
|
+
.withHeaders({
|
|
64
|
+
'Authorization': 'Bearer my-token'
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Query Parameters
|
|
69
|
+
|
|
70
|
+
Pass query parameters using the `query` option:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
const results = await client.get('/search', {
|
|
74
|
+
query: { q: 'search term', page: 1, limit: 10 }
|
|
75
|
+
});
|
|
76
|
+
// Request: GET /search?q=search%20term&page=1&limit=10
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Custom Headers
|
|
80
|
+
|
|
81
|
+
Add headers per-request or globally:
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// Global headers
|
|
85
|
+
const client = new FetchClient('https://api.example.com')
|
|
86
|
+
.withHeaders({ 'X-Custom-Header': 'value' });
|
|
87
|
+
|
|
88
|
+
// Per-request headers
|
|
89
|
+
await client.get('/endpoint', {
|
|
90
|
+
headers: { 'X-Request-Id': '12345' }
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Server-Sent Events (SSE)
|
|
95
|
+
|
|
96
|
+
Stream server-sent events using the built-in SSE reader:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
const stream = await client.get('/events', { reader: 'sse' });
|
|
100
|
+
|
|
101
|
+
for await (const event of stream) {
|
|
102
|
+
if (event.type === 'event') {
|
|
103
|
+
console.log('Event:', event.event, event.data);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Custom Response Readers
|
|
109
|
+
|
|
110
|
+
Provide a custom reader function for non-JSON responses:
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// Read as text
|
|
114
|
+
const text = await client.get('/file.txt', {
|
|
115
|
+
reader: (response) => response.text()
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Read as blob
|
|
119
|
+
const blob = await client.get('/image.png', {
|
|
120
|
+
reader: (response) => response.blob()
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Error Handling
|
|
125
|
+
|
|
126
|
+
The client throws typed errors for different failure scenarios:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { RequestError, ServerError, ConnectionError } from '@vertesia/api-fetch-client';
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
await client.get('/protected');
|
|
133
|
+
} catch (error) {
|
|
134
|
+
if (error instanceof ServerError) {
|
|
135
|
+
console.log('Server error:', error.status, error.message);
|
|
136
|
+
console.log('Response payload:', error.payload);
|
|
137
|
+
} else if (error instanceof ConnectionError) {
|
|
138
|
+
console.log('Connection failed:', error.message);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Custom Error Factory
|
|
144
|
+
|
|
145
|
+
Transform errors before they're thrown:
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
const client = new FetchClient('https://api.example.com')
|
|
149
|
+
.withErrorFactory((err) => {
|
|
150
|
+
if (err.status === 401) {
|
|
151
|
+
return new UnauthorizedError('Please log in');
|
|
152
|
+
}
|
|
153
|
+
return err;
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Request/Response Interceptors
|
|
158
|
+
|
|
159
|
+
Hook into requests and responses for logging or modification:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
const client = new FetchClient('https://api.example.com');
|
|
163
|
+
|
|
164
|
+
client.onRequest = (request) => {
|
|
165
|
+
console.log('Sending:', request.method, request.url);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
client.onResponse = (response, request) => {
|
|
169
|
+
console.log('Received:', response.status, 'for', request.url);
|
|
170
|
+
};
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Building API Clients with ApiTopic
|
|
174
|
+
|
|
175
|
+
Create organized API clients by extending `ApiTopic`:
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
import { AbstractFetchClient, ApiTopic } from '@vertesia/api-fetch-client';
|
|
179
|
+
|
|
180
|
+
class UsersApi extends ApiTopic {
|
|
181
|
+
list() {
|
|
182
|
+
return this.get('/');
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
getById(id: string) {
|
|
186
|
+
return this.get(`/${id}`);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
create(data: CreateUserInput) {
|
|
190
|
+
return this.post('/', { payload: data });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
class MyApiClient extends AbstractFetchClient<MyApiClient> {
|
|
195
|
+
readonly users: UsersApi;
|
|
196
|
+
|
|
197
|
+
constructor(baseUrl: string) {
|
|
198
|
+
super(baseUrl);
|
|
199
|
+
this.users = new UsersApi(this, '/users');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Usage
|
|
204
|
+
const api = new MyApiClient('https://api.example.com');
|
|
205
|
+
const users = await api.users.list();
|
|
206
|
+
const user = await api.users.getById('123');
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Non-JSON Payloads
|
|
210
|
+
|
|
211
|
+
Disable automatic JSON serialization for form data or other formats:
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
const formData = new FormData();
|
|
215
|
+
formData.append('file', fileBlob);
|
|
216
|
+
|
|
217
|
+
await client.post('/upload', {
|
|
218
|
+
payload: formData,
|
|
219
|
+
jsonPayload: false
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Access Last Response
|
|
224
|
+
|
|
225
|
+
Inspect the last response for headers or status:
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
await client.get('/endpoint');
|
|
229
|
+
console.log('Status:', client.response?.status);
|
|
230
|
+
console.log('Headers:', client.response?.headers.get('X-Custom-Header'));
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## API Reference
|
|
234
|
+
|
|
235
|
+
### FetchClient
|
|
236
|
+
|
|
237
|
+
The main client class for making HTTP requests.
|
|
238
|
+
|
|
239
|
+
| Method | Description |
|
|
240
|
+
|--------|-------------|
|
|
241
|
+
| `get(path, params?)` | Make a GET request |
|
|
242
|
+
| `post(path, params?)` | Make a POST request |
|
|
243
|
+
| `put(path, params?)` | Make a PUT request |
|
|
244
|
+
| `delete(path, params?)` | Make a DELETE request |
|
|
245
|
+
| `withAuthCallback(cb)` | Set authentication callback |
|
|
246
|
+
| `withHeaders(headers)` | Add default headers |
|
|
247
|
+
| `withLang(locale)` | Set Accept-Language header |
|
|
248
|
+
| `withErrorFactory(factory)` | Set custom error factory |
|
|
249
|
+
|
|
250
|
+
### Request Parameters
|
|
251
|
+
|
|
252
|
+
| Option | Type | Description |
|
|
253
|
+
|--------|------|-------------|
|
|
254
|
+
| `query` | `Record<string, primitive>` | Query string parameters |
|
|
255
|
+
| `headers` | `Record<string, string>` | Request headers |
|
|
256
|
+
| `payload` | `object \| BodyInit` | Request body |
|
|
257
|
+
| `reader` | `'sse' \| function` | Custom response reader |
|
|
258
|
+
| `jsonPayload` | `boolean` | Auto-serialize payload as JSON (default: true) |
|
|
259
|
+
|
|
260
|
+
### Error Classes
|
|
261
|
+
|
|
262
|
+
| Class | Description |
|
|
263
|
+
|-------|-------------|
|
|
264
|
+
| `RequestError` | Base class for all request errors |
|
|
265
|
+
| `ServerError` | HTTP error responses (4xx, 5xx) |
|
|
266
|
+
| `ConnectionError` | Network/connection failures |
|
|
267
|
+
|
|
268
|
+
## License
|
|
269
|
+
|
|
270
|
+
Apache-2.0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertesia/api-fetch-client",
|
|
3
|
-
"version": "0.80.
|
|
3
|
+
"version": "0.80.1",
|
|
4
4
|
"description": "HTTP client which wraps a fetch implementation and simplify the creation of REST API clients. Works both in browser and in node.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./lib/types/index.d.ts",
|
|
@@ -29,10 +29,11 @@
|
|
|
29
29
|
"browser",
|
|
30
30
|
"node",
|
|
31
31
|
"sse",
|
|
32
|
-
"eventsource"
|
|
32
|
+
"eventsource",
|
|
33
|
+
"vertesia"
|
|
33
34
|
],
|
|
34
35
|
"author": "stefanescu.bogdan@gmail.com",
|
|
35
|
-
"license": "
|
|
36
|
+
"license": "Apache-2.0",
|
|
36
37
|
"bugs": {
|
|
37
38
|
"url": "https://github.com/vertesia/composableai/issues"
|
|
38
39
|
},
|
package/lib/cjs/base.js
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClientBase = void 0;
|
|
4
|
-
exports.fetchPromise = fetchPromise;
|
|
5
|
-
const errors_js_1 = require("./errors.js");
|
|
6
|
-
const index_js_1 = require("./sse/index.js");
|
|
7
|
-
const utils_js_1 = require("./utils.js");
|
|
8
|
-
function fetchPromise(fetchImpl) {
|
|
9
|
-
if (fetchImpl) {
|
|
10
|
-
return Promise.resolve(fetchImpl);
|
|
11
|
-
}
|
|
12
|
-
else if (typeof globalThis.fetch === 'function') {
|
|
13
|
-
return Promise.resolve(globalThis.fetch);
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
// install an error impl
|
|
17
|
-
return Promise.resolve(() => {
|
|
18
|
-
throw new Error('No Fetch implementation found');
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
class ClientBase {
|
|
23
|
-
constructor(baseUrl, fetchImpl) {
|
|
24
|
-
this.errorFactory = (err) => err;
|
|
25
|
-
this.verboseErrors = true;
|
|
26
|
-
this.baseUrl = (0, utils_js_1.removeTrailingSlash)(baseUrl);
|
|
27
|
-
this._fetch = fetchPromise(fetchImpl);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Can be subclassed to map to custom errors
|
|
31
|
-
* @param err
|
|
32
|
-
*/
|
|
33
|
-
throwError(err) {
|
|
34
|
-
throw this.errorFactory(err);
|
|
35
|
-
}
|
|
36
|
-
getUrl(path) {
|
|
37
|
-
return (0, utils_js_1.removeTrailingSlash)((0, utils_js_1.join)(this.baseUrl, path));
|
|
38
|
-
}
|
|
39
|
-
get(path, params) {
|
|
40
|
-
return this.request('GET', path, params);
|
|
41
|
-
}
|
|
42
|
-
del(path, params) {
|
|
43
|
-
return this.request('DELETE', path, params);
|
|
44
|
-
}
|
|
45
|
-
delete(path, params) {
|
|
46
|
-
return this.request('DELETE', path, params);
|
|
47
|
-
}
|
|
48
|
-
post(path, params) {
|
|
49
|
-
return this.request('POST', path, params);
|
|
50
|
-
}
|
|
51
|
-
put(path, params) {
|
|
52
|
-
return this.request('PUT', path, params);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* You can customize the json parser by overriding this method
|
|
56
|
-
* @param text
|
|
57
|
-
* @returns
|
|
58
|
-
*/
|
|
59
|
-
jsonParse(text) {
|
|
60
|
-
return JSON.parse(text);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Can be overridden to create the request
|
|
64
|
-
* @param fetch
|
|
65
|
-
* @param url
|
|
66
|
-
* @param init
|
|
67
|
-
* @returns
|
|
68
|
-
*/
|
|
69
|
-
createRequest(url, init) {
|
|
70
|
-
return Promise.resolve(new Request(url, init));
|
|
71
|
-
}
|
|
72
|
-
createServerError(req, res, payload) {
|
|
73
|
-
const status = res.status;
|
|
74
|
-
let message = 'Server Error: ' + status;
|
|
75
|
-
if (payload) {
|
|
76
|
-
if (payload.message) {
|
|
77
|
-
message = String(payload.message);
|
|
78
|
-
}
|
|
79
|
-
else if (payload.error) {
|
|
80
|
-
if (typeof payload.error === 'string') {
|
|
81
|
-
message = String(payload.error);
|
|
82
|
-
}
|
|
83
|
-
else if (typeof payload.error.message === 'string') {
|
|
84
|
-
message = String(payload.error.message);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return new errors_js_1.ServerError(message, req, res.status, payload, this.verboseErrors);
|
|
89
|
-
}
|
|
90
|
-
async readJSONPayload(res) {
|
|
91
|
-
return res.text().then(text => {
|
|
92
|
-
if (!text) {
|
|
93
|
-
return undefined;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
try {
|
|
97
|
-
return this.jsonParse(text);
|
|
98
|
-
}
|
|
99
|
-
catch (err) {
|
|
100
|
-
return {
|
|
101
|
-
status: res.status,
|
|
102
|
-
error: "Not a valid JSON payload",
|
|
103
|
-
message: err.message,
|
|
104
|
-
text: text,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}).catch((err) => {
|
|
109
|
-
return {
|
|
110
|
-
status: res.status,
|
|
111
|
-
error: "Unable to load response content",
|
|
112
|
-
message: err.message,
|
|
113
|
-
};
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Subclasses You can override this to do something with the response
|
|
118
|
-
* @param res
|
|
119
|
-
*/
|
|
120
|
-
handleResponse(req, res, params) {
|
|
121
|
-
res.url;
|
|
122
|
-
if (params && params.reader) {
|
|
123
|
-
if (params.reader === 'sse') {
|
|
124
|
-
return (0, index_js_1.sse)(res);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
return params.reader.call(this, res);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return this.readJSONPayload(res).then((payload) => {
|
|
132
|
-
if (res.ok) {
|
|
133
|
-
return payload;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
this.throwError(this.createServerError(req, res, payload));
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
async request(method, path, params) {
|
|
142
|
-
let url = this.getUrl(path);
|
|
143
|
-
if (params?.query) {
|
|
144
|
-
url += '?' + (0, utils_js_1.buildQueryString)(params.query);
|
|
145
|
-
}
|
|
146
|
-
const headers = this.headers ? Object.assign({}, this.headers) : {};
|
|
147
|
-
const paramsHeaders = params?.headers;
|
|
148
|
-
if (paramsHeaders) {
|
|
149
|
-
for (const key in paramsHeaders) {
|
|
150
|
-
headers[key.toLowerCase()] = paramsHeaders[key];
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
let body;
|
|
154
|
-
const payload = params?.payload;
|
|
155
|
-
if (payload) {
|
|
156
|
-
if (params && params.jsonPayload === false) {
|
|
157
|
-
body = payload;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
body = (typeof payload !== 'string') ? JSON.stringify(payload) : payload;
|
|
161
|
-
if (!('content-type' in headers)) {
|
|
162
|
-
headers['content-type'] = 'application/json';
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
const init = {
|
|
167
|
-
method: method,
|
|
168
|
-
headers: headers,
|
|
169
|
-
body: body,
|
|
170
|
-
};
|
|
171
|
-
const req = await this.createRequest(url, init);
|
|
172
|
-
return this._fetch.then(fetch => fetch(req).catch(err => {
|
|
173
|
-
console.error(`Failed to connect to ${url}`, err);
|
|
174
|
-
this.throwError(new errors_js_1.ConnectionError(req, err));
|
|
175
|
-
}).then(res => {
|
|
176
|
-
return this.handleResponse(req, res, params);
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Expose the fetch method
|
|
181
|
-
* @param input
|
|
182
|
-
* @param init
|
|
183
|
-
* @returns
|
|
184
|
-
*/
|
|
185
|
-
fetch(input, init) {
|
|
186
|
-
return this._fetch.then(fetch => fetch(input, init));
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
exports.ClientBase = ClientBase;
|
|
190
|
-
//# sourceMappingURL=base.js.map
|
package/lib/cjs/base.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/client.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiTopic = exports.FetchClient = exports.AbstractFetchClient = void 0;
|
|
4
|
-
const base_js_1 = require("./base.js");
|
|
5
|
-
function isAuthorizationHeaderSet(headers) {
|
|
6
|
-
if (!headers)
|
|
7
|
-
return false;
|
|
8
|
-
return "authorization" in headers;
|
|
9
|
-
}
|
|
10
|
-
class AbstractFetchClient extends base_js_1.ClientBase {
|
|
11
|
-
constructor(baseUrl, fetchImpl) {
|
|
12
|
-
super(baseUrl, fetchImpl);
|
|
13
|
-
this.baseUrl = baseUrl[baseUrl.length - 1] === '/' ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl;
|
|
14
|
-
this.headers = this.initialHeaders;
|
|
15
|
-
}
|
|
16
|
-
get initialHeaders() {
|
|
17
|
-
return { accept: 'application/json' };
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Install an auth callback. If the callback is undefined or null then remove the auth callback.
|
|
21
|
-
* @param authCb a function returning a promise that resolves to the value to use for the authorization header
|
|
22
|
-
* @returns the client instance
|
|
23
|
-
*/
|
|
24
|
-
withAuthCallback(authCb) {
|
|
25
|
-
this._auth = authCb || undefined;
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
withErrorFactory(factory) {
|
|
29
|
-
this.errorFactory = factory;
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
withLang(locale) {
|
|
33
|
-
if (locale) {
|
|
34
|
-
this.headers['accept-language'] = locale;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
delete this.headers['accept-language'];
|
|
38
|
-
}
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
withHeaders(headers) {
|
|
42
|
-
const thisHeaders = this.headers;
|
|
43
|
-
for (const key in headers) {
|
|
44
|
-
const value = headers[key];
|
|
45
|
-
if (value != null) {
|
|
46
|
-
thisHeaders[key.toLowerCase()] = value;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
setHeader(key, value) {
|
|
52
|
-
if (!value) {
|
|
53
|
-
delete this.headers[key.toLowerCase()];
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.headers[key.toLowerCase()] = value;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async createRequest(url, init) {
|
|
60
|
-
if (this._auth && !isAuthorizationHeaderSet(init.headers)) {
|
|
61
|
-
const headers = (init.headers ? init.headers : {});
|
|
62
|
-
init.headers = headers;
|
|
63
|
-
const auth = await this._auth();
|
|
64
|
-
if (auth) {
|
|
65
|
-
init.headers["authorization"] = auth;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
this.response = undefined;
|
|
69
|
-
const request = await super.createRequest(url, init);
|
|
70
|
-
this.onRequest && this.onRequest(request);
|
|
71
|
-
return request;
|
|
72
|
-
}
|
|
73
|
-
async handleResponse(req, res, params) {
|
|
74
|
-
this.response = res; // store last response
|
|
75
|
-
this.onResponse && this.onResponse(res, req);
|
|
76
|
-
return super.handleResponse(req, res, params);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.AbstractFetchClient = AbstractFetchClient;
|
|
80
|
-
class FetchClient extends AbstractFetchClient {
|
|
81
|
-
constructor(baseUrl, fetchImpl) {
|
|
82
|
-
super(baseUrl, fetchImpl);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
exports.FetchClient = FetchClient;
|
|
86
|
-
class ApiTopic extends base_js_1.ClientBase {
|
|
87
|
-
constructor(client, basePath) {
|
|
88
|
-
//TODO we should refactor the way ClientBase and ApiTopic is created
|
|
89
|
-
// to avoid cloning all customizations
|
|
90
|
-
super(client.getUrl(basePath), client._fetch);
|
|
91
|
-
this.client = client;
|
|
92
|
-
this.createServerError = client.createServerError;
|
|
93
|
-
this.errorFactory = client.errorFactory;
|
|
94
|
-
this.verboseErrors = client.verboseErrors;
|
|
95
|
-
}
|
|
96
|
-
createRequest(url, init) {
|
|
97
|
-
return this.client.createRequest(url, init);
|
|
98
|
-
}
|
|
99
|
-
handleResponse(req, res, params) {
|
|
100
|
-
return this.client.handleResponse(req, res, params);
|
|
101
|
-
}
|
|
102
|
-
get headers() {
|
|
103
|
-
return this.client.headers;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.ApiTopic = ApiTopic;
|
|
107
|
-
//# sourceMappingURL=client.js.map
|
package/lib/cjs/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/errors.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConnectionError = exports.ServerError = exports.RequestError = void 0;
|
|
4
|
-
function createMessage(message, request, status, payload, displayDetails) {
|
|
5
|
-
let msg = message;
|
|
6
|
-
if (displayDetails) {
|
|
7
|
-
msg += '\nRequest: ' + request.method + ' ' + request.url + ' => ' + status;
|
|
8
|
-
const details = payload?.details || payload?.error?.details;
|
|
9
|
-
if (details) {
|
|
10
|
-
const detailsType = typeof details;
|
|
11
|
-
if (detailsType === 'string') {
|
|
12
|
-
msg += '\nDetails: ' + details;
|
|
13
|
-
}
|
|
14
|
-
else if (detailsType === "object") {
|
|
15
|
-
msg += '\nDetails: ' + JSON.stringify(details, undefined, 2);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
msg += '\nStack Trace: ';
|
|
19
|
-
}
|
|
20
|
-
return msg;
|
|
21
|
-
}
|
|
22
|
-
class RequestError extends Error {
|
|
23
|
-
constructor(message, request, status, payload, displayDetails = true) {
|
|
24
|
-
super(createMessage(message, request, status, payload, displayDetails));
|
|
25
|
-
this.original_message = message;
|
|
26
|
-
this.request = request;
|
|
27
|
-
this.status = status;
|
|
28
|
-
this.payload = payload;
|
|
29
|
-
this.request_info = request.method + ' ' + request.url + ' => ' + status;
|
|
30
|
-
this.displayDetails = displayDetails;
|
|
31
|
-
}
|
|
32
|
-
get details() {
|
|
33
|
-
return this.payload?.details || this.payload?.error?.details;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.RequestError = RequestError;
|
|
37
|
-
class ServerError extends RequestError {
|
|
38
|
-
constructor(message, req, status, payload, displayDetails = true) {
|
|
39
|
-
super(message, req, status, payload, displayDetails);
|
|
40
|
-
}
|
|
41
|
-
updateDetails(details) {
|
|
42
|
-
if (details !== this.details) {
|
|
43
|
-
return new ServerError(this.original_message, this.request, this.status, { ...this.payload, details }, this.displayDetails);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.ServerError = ServerError;
|
|
51
|
-
class ConnectionError extends RequestError {
|
|
52
|
-
constructor(req, err) {
|
|
53
|
-
super("Failed to connect to server: " + err.message, req, 0, err);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.ConnectionError = ConnectionError;
|
|
57
|
-
//# sourceMappingURL=errors.js.map
|
package/lib/cjs/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AACA,SAAS,aAAa,CAAC,OAAe,EAAE,OAAgB,EAAE,MAAc,EAAE,OAAY,EAAE,cAAuB;IAC3G,IAAI,GAAG,GAAG,OAAO,CAAC;IAClB,IAAI,cAAc,EAAE,CAAC;QACjB,GAAG,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;QAC5E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC;YACnC,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC3B,GAAG,IAAI,aAAa,GAAG,OAAO,CAAC;YACnC,CAAC;iBAAM,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAClC,GAAG,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;QACD,GAAG,IAAI,iBAAiB,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAa,YAAa,SAAQ,KAAK;IAOnC,YAAY,OAAe,EAAE,OAAgB,EAAE,MAAc,EAAE,OAAY,EAAE,cAAc,GAAG,IAAI;QAC9F,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;IACjE,CAAC;CAEJ;AArBD,oCAqBC;AAED,MAAa,WAAY,SAAQ,YAAY;IACzC,YAAY,OAAe,EAAE,GAAY,EAAE,MAAc,EAAE,OAAY,EAAE,cAAc,GAAG,IAAI;QAC1F,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,aAAa,CAAC,OAAY;QACtB,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC/H,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;CACJ;AAZD,kCAYC;AAED,MAAa,eAAgB,SAAQ,YAAY;IAC7C,YAAY,GAAY,EAAE,GAAU;QAChC,KAAK,CAAC,+BAA+B,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;CACJ;AAJD,0CAIC"}
|
package/lib/cjs/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./base.js"), exports);
|
|
18
|
-
__exportStar(require("./client.js"), exports);
|
|
19
|
-
__exportStar(require("./errors.js"), exports);
|
|
20
|
-
__exportStar(require("./sse/index.js"), exports);
|
|
21
|
-
//# sourceMappingURL=index.js.map
|