tapi-rs 5.1.0 → 5.3.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/README.md +265 -196
- package/dist/core.d.ts +7 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +45 -5
- package/dist/core.js.map +1 -1
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +7 -8
- package/dist/hook.js.map +1 -1
- package/dist/request.d.ts +1 -1
- package/dist/request.d.ts.map +1 -1
- package/dist/request.js +6 -4
- package/dist/request.js.map +1 -1
- package/dist/types.d.ts +7 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,280 +1,349 @@
|
|
|
1
|
-
#
|
|
1
|
+
# tapi
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Type-safe REST API client for TypeScript with React hooks. Pure compile-time types — no runtime schemas, no codegen.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
- **Type Safety** - Full TypeScript support with compile-time type checking
|
|
8
|
-
- **Error as Value** - No thrown errors, all errors returned as discriminated unions
|
|
9
|
-
- **React Hooks** - Built-in React integration with loading states
|
|
10
|
-
- **Zero Runtime Validation** - Pure TypeScript types, no runtime overhead
|
|
11
|
-
- **Lightweight** - No external validation library dependencies
|
|
12
|
-
- **Auto-completion** - Full IDE support with IntelliSense
|
|
13
|
-
- **Internationalization** - Multi-language support for error messages
|
|
14
|
-
|
|
15
|
-
## Installation
|
|
5
|
+
## Install
|
|
16
6
|
|
|
17
7
|
```bash
|
|
18
|
-
npm install tapi
|
|
8
|
+
npm install tapi-rs
|
|
19
9
|
```
|
|
20
10
|
|
|
21
|
-
## Quick
|
|
11
|
+
## Quick start
|
|
22
12
|
|
|
23
|
-
```
|
|
24
|
-
import Tapi from "tapi"
|
|
13
|
+
```ts
|
|
14
|
+
import Tapi from "tapi-rs"
|
|
25
15
|
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
16
|
+
// Define routes
|
|
17
|
+
const routes = {
|
|
18
|
+
getUsers: Tapi.get<{ response: User[] }>()({ endpoint: "/users" }),
|
|
19
|
+
getUser: Tapi.get<{ path: { id: string }; response: User }>()({ endpoint: "/users/:id" }),
|
|
20
|
+
createUser: Tapi.post<{ body: CreateUser; response: User }>()({ endpoint: "/users" }),
|
|
21
|
+
}
|
|
32
22
|
|
|
33
|
-
//
|
|
23
|
+
// Build the client
|
|
34
24
|
const api = Tapi.builder()
|
|
35
25
|
.withHost("https://api.example.com")
|
|
36
|
-
.
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
26
|
+
.withRoutes(routes)
|
|
27
|
+
.build()
|
|
28
|
+
|
|
29
|
+
// Make requests
|
|
30
|
+
const response = await api.getUser({ path: { id: "1" } })
|
|
31
|
+
|
|
32
|
+
if (response.ok) {
|
|
33
|
+
console.log(response.data) // User — fully typed
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Defining routes
|
|
38
|
+
|
|
39
|
+
Each route is created with `Tapi.get`, `Tapi.post`, `Tapi.put`, `Tapi.patch`, or `Tapi.delete`. Pass a type object specifying only the params you need:
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
// GET with query params
|
|
43
|
+
Tapi.get<{
|
|
44
|
+
query: { page: number; limit: number }
|
|
45
|
+
response: { users: User[]; total: number }
|
|
46
|
+
}>()({ endpoint: "/users" })
|
|
47
|
+
|
|
48
|
+
// POST with body
|
|
49
|
+
Tapi.post<{
|
|
50
|
+
body: { name: string; email: string }
|
|
51
|
+
response: User
|
|
52
|
+
}>()({ endpoint: "/users" })
|
|
53
|
+
|
|
54
|
+
// PUT with path + body
|
|
55
|
+
Tapi.put<{
|
|
56
|
+
path: { id: string }
|
|
57
|
+
body: Partial<User>
|
|
58
|
+
response: User
|
|
59
|
+
}>()({ endpoint: "/users/:id" })
|
|
60
|
+
|
|
61
|
+
// DELETE with path
|
|
62
|
+
Tapi.delete<{
|
|
63
|
+
path: { id: string }
|
|
64
|
+
response: { deleted: boolean }
|
|
65
|
+
}>()({ endpoint: "/users/:id" })
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Available type params: `path`, `body`, `formData`, `query`, `headers`, `response`.
|
|
69
|
+
|
|
70
|
+
## React hooks
|
|
71
|
+
|
|
72
|
+
Every route function has a `.useHook()` method:
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
function UserProfile({ userId }: { userId: string }) {
|
|
76
|
+
const [user, error, loading, refresh, setUser] = api.getUser.useHook({
|
|
77
|
+
path: { id: userId },
|
|
52
78
|
})
|
|
53
|
-
.build();
|
|
54
79
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
80
|
+
if (loading) return <p>Loading...</p>
|
|
81
|
+
if (error) return <p>Error: {error.message}</p>
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<div>
|
|
85
|
+
<h1>{user.name}</h1>
|
|
86
|
+
<button onClick={() => refresh()}>Refresh</button>
|
|
87
|
+
</div>
|
|
88
|
+
)
|
|
59
89
|
}
|
|
60
90
|
```
|
|
61
91
|
|
|
62
|
-
|
|
92
|
+
### Hook return value
|
|
63
93
|
|
|
64
|
-
|
|
94
|
+
Returns a tuple `[data, error, loading, refresh, setter]`:
|
|
65
95
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
96
|
+
| Index | Value | Type |
|
|
97
|
+
|-------|-------|------|
|
|
98
|
+
| 0 | `data` | `T \| null` — response data |
|
|
99
|
+
| 1 | `error` | `Errors<TError> \| null` — error details |
|
|
100
|
+
| 2 | `loading` | `boolean` |
|
|
101
|
+
| 3 | `refresh` | `(resetState?: boolean) => Promise<boolean>` |
|
|
102
|
+
| 4 | `setter` | `(fn: (prev: T) => T) => void` — optimistic updates |
|
|
69
103
|
|
|
70
|
-
|
|
71
|
-
Tapi.get<{ path: { id: string }; response: User }>();
|
|
104
|
+
### Skip fetching
|
|
72
105
|
|
|
73
|
-
|
|
74
|
-
Tapi.get<{ query: { limit?: number }; response: Post[] }>();
|
|
106
|
+
Pass `null` to disable auto-fetching entirely:
|
|
75
107
|
|
|
76
|
-
|
|
77
|
-
|
|
108
|
+
```tsx
|
|
109
|
+
const [user] = api.getUser.useHook(null)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Lazy mode
|
|
113
|
+
|
|
114
|
+
Pass `lazy: true` to create the hook without auto-fetching. Call `refresh()` to trigger manually:
|
|
78
115
|
|
|
79
|
-
|
|
80
|
-
|
|
116
|
+
```tsx
|
|
117
|
+
const [result, error, loading, submit] = api.createUser.useHook({
|
|
118
|
+
body: { name: "Alice", email: "alice@example.com" },
|
|
119
|
+
lazy: true,
|
|
120
|
+
})
|
|
81
121
|
|
|
82
|
-
//
|
|
83
|
-
|
|
122
|
+
// Trigger the request manually
|
|
123
|
+
await submit()
|
|
84
124
|
```
|
|
85
125
|
|
|
86
|
-
|
|
126
|
+
### Optimistic updates
|
|
87
127
|
|
|
88
|
-
|
|
128
|
+
Use the setter to update local data without refetching:
|
|
89
129
|
|
|
90
|
-
```
|
|
91
|
-
const
|
|
130
|
+
```tsx
|
|
131
|
+
const [users, error, loading, refresh, setUsers] = api.getUsers.useHook({})
|
|
92
132
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
} else {
|
|
96
|
-
switch (result.status) {
|
|
97
|
-
case "network_error":
|
|
98
|
-
console.error("Network failed:", result.error);
|
|
99
|
-
break;
|
|
100
|
-
case "api_error":
|
|
101
|
-
console.error(`API error [${result.code}]:`, result.data);
|
|
102
|
-
break;
|
|
103
|
-
case "mapper_error":
|
|
104
|
-
console.error("Mapper failed:", result.error);
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
133
|
+
function removeUser(id: string) {
|
|
134
|
+
setUsers((prev) => prev.filter((u) => u.id !== id))
|
|
107
135
|
}
|
|
108
136
|
```
|
|
109
137
|
|
|
110
|
-
##
|
|
138
|
+
## Cancellation
|
|
111
139
|
|
|
112
|
-
|
|
140
|
+
Hooks automatically cancel in-flight requests when params change or the component unmounts — no stale responses.
|
|
113
141
|
|
|
114
|
-
|
|
115
|
-
function UserProfile({ userId }: { userId: string }) {
|
|
116
|
-
const [user, error, loading, refresh, setUser] = api.users.getById.useHook({
|
|
117
|
-
path: { id: userId }
|
|
118
|
-
});
|
|
142
|
+
For imperative calls, pass an `AbortSignal`:
|
|
119
143
|
|
|
120
|
-
|
|
121
|
-
|
|
144
|
+
```ts
|
|
145
|
+
const controller = new AbortController()
|
|
122
146
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
147
|
+
api.getUser({ path: { id: "1" }, signal: controller.signal })
|
|
148
|
+
|
|
149
|
+
// Cancel the request
|
|
150
|
+
controller.abort()
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Nested routes
|
|
154
|
+
|
|
155
|
+
Group related endpoints under namespaces:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
const routes = {
|
|
159
|
+
users: {
|
|
160
|
+
list: Tapi.get<{ response: User[] }>()({ endpoint: "/users" }),
|
|
161
|
+
create: Tapi.post<{ body: CreateUser; response: User }>()({ endpoint: "/users" }),
|
|
162
|
+
},
|
|
163
|
+
posts: {
|
|
164
|
+
list: Tapi.get<{ response: Post[] }>()({ endpoint: "/posts" }),
|
|
165
|
+
get: Tapi.get<{ path: { id: string }; response: Post }>()({ endpoint: "/posts/:id" }),
|
|
166
|
+
},
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const api = Tapi.builder()
|
|
170
|
+
.withHost("https://api.example.com")
|
|
171
|
+
.withRoutes(routes)
|
|
172
|
+
.build()
|
|
173
|
+
|
|
174
|
+
const response = await api.users.list({})
|
|
175
|
+
const [posts] = api.posts.list.useHook({})
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Response handling
|
|
179
|
+
|
|
180
|
+
Every request returns an `ApiResponse` — a discriminated union you can narrow with `response.ok`:
|
|
181
|
+
|
|
182
|
+
```ts
|
|
183
|
+
const response = await api.getUser({ path: { id: "1" } })
|
|
184
|
+
|
|
185
|
+
if (response.ok) {
|
|
186
|
+
// Success — response.data is typed
|
|
187
|
+
console.log(response.data)
|
|
188
|
+
} else if (response.status === "api_error") {
|
|
189
|
+
// Server returned an error — response.code, response.message, response.data
|
|
190
|
+
console.log(response.code, response.data)
|
|
191
|
+
} else {
|
|
192
|
+
// Network error — response.error is the original Error
|
|
193
|
+
console.log(response.error)
|
|
130
194
|
}
|
|
131
195
|
```
|
|
132
196
|
|
|
133
|
-
|
|
197
|
+
## FormData & file uploads
|
|
198
|
+
|
|
199
|
+
Use `formData` instead of `body` for multipart requests:
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
const routes = {
|
|
203
|
+
uploadAvatar: Tapi.post<{
|
|
204
|
+
path: { userId: string }
|
|
205
|
+
formData: { avatar: File; description: string }
|
|
206
|
+
response: { url: string }
|
|
207
|
+
}>()({ endpoint: "/users/:userId/avatar" }),
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
await api.uploadAvatar({
|
|
211
|
+
path: { userId: "1" },
|
|
212
|
+
formData: { avatar: file, description: "Profile picture" },
|
|
213
|
+
})
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
File arrays are supported — each file is appended individually to the FormData.
|
|
134
217
|
|
|
135
|
-
|
|
136
|
-
const [data, error, loading, refresh, setter] = api.endpoint.useHook(params);
|
|
218
|
+
## Blob responses
|
|
137
219
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
220
|
+
Set `responseType: "blob"` for binary data:
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
const routes = {
|
|
224
|
+
downloadReport: Tapi.get<{
|
|
225
|
+
path: { id: string }
|
|
226
|
+
response: Blob
|
|
227
|
+
}>()({ endpoint: "/reports/:id/download", responseType: "blob" }),
|
|
228
|
+
}
|
|
143
229
|
```
|
|
144
230
|
|
|
145
|
-
|
|
231
|
+
## URL building
|
|
232
|
+
|
|
233
|
+
Every route function has a `.path()` method to build the full URL without making a request:
|
|
146
234
|
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
lazy: true // Don't fetch on mount
|
|
151
|
-
});
|
|
235
|
+
```ts
|
|
236
|
+
api.getUser.path({ id: "42" })
|
|
237
|
+
// => "https://api.example.com/users/42"
|
|
152
238
|
|
|
153
|
-
|
|
154
|
-
|
|
239
|
+
api.getUsers.path()
|
|
240
|
+
// => "https://api.example.com/users"
|
|
155
241
|
```
|
|
156
242
|
|
|
157
|
-
##
|
|
243
|
+
## Builder options
|
|
158
244
|
|
|
159
|
-
|
|
245
|
+
### Custom error handling
|
|
160
246
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
247
|
+
Parse your API's error format:
|
|
248
|
+
|
|
249
|
+
```ts
|
|
250
|
+
type ApiError = { code: string; details: string[] }
|
|
164
251
|
|
|
165
252
|
const api = Tapi.builder()
|
|
166
253
|
.withHost("https://api.example.com")
|
|
167
|
-
.withApiError(async (
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
getById: Tapi.get<{
|
|
171
|
-
path: { id: string };
|
|
172
|
-
response: ApiUser;
|
|
173
|
-
mapped: User;
|
|
174
|
-
}>()({
|
|
175
|
-
endpoint: "/users/:id",
|
|
176
|
-
response: Tapi.response<ApiUser, User>((data) => () => ({
|
|
177
|
-
id: data.id,
|
|
178
|
-
name: data.full_name
|
|
179
|
-
}))
|
|
180
|
-
})
|
|
181
|
-
}
|
|
254
|
+
.withApiError<ApiError>(async (response) => {
|
|
255
|
+
const body = await response.json()
|
|
256
|
+
return { code: body.error_code, details: body.messages }
|
|
182
257
|
})
|
|
183
|
-
.
|
|
258
|
+
.withRoutes(routes)
|
|
259
|
+
.build()
|
|
184
260
|
|
|
185
|
-
|
|
186
|
-
|
|
261
|
+
const response = await api.getUser({ path: { id: "1" } })
|
|
262
|
+
|
|
263
|
+
if (!response.ok && response.status === "api_error") {
|
|
264
|
+
console.log(response.data.code) // typed as ApiError
|
|
265
|
+
}
|
|
187
266
|
```
|
|
188
267
|
|
|
189
|
-
###
|
|
268
|
+
### Credentials
|
|
269
|
+
|
|
270
|
+
Set the `credentials` mode for all requests (e.g. cross-origin cookies):
|
|
190
271
|
|
|
191
|
-
```
|
|
272
|
+
```ts
|
|
192
273
|
const api = Tapi.builder()
|
|
193
274
|
.withHost("https://api.example.com")
|
|
194
|
-
.
|
|
195
|
-
.withRoutes(
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
mapArg: { limit: number };
|
|
201
|
-
}>()({
|
|
202
|
-
endpoint: "/posts",
|
|
203
|
-
response: Tapi.response<Post[], Post[], { limit: number }>((posts) => (args) => posts.slice(0, args.limit))
|
|
204
|
-
})
|
|
205
|
-
}
|
|
206
|
-
})
|
|
207
|
-
.build();
|
|
275
|
+
.withCredentials("include")
|
|
276
|
+
.withRoutes(routes)
|
|
277
|
+
.build()
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Default headers
|
|
208
281
|
|
|
209
|
-
|
|
210
|
-
const
|
|
282
|
+
```ts
|
|
283
|
+
const api = Tapi.builder()
|
|
284
|
+
.withHost("https://api.example.com")
|
|
285
|
+
.withDefaultHeaders({ Authorization: "Bearer token" })
|
|
286
|
+
.withRoutes(routes)
|
|
287
|
+
.build()
|
|
288
|
+
|
|
289
|
+
// Update headers at runtime
|
|
290
|
+
api.setHeaders({ Authorization: "Bearer new-token" })
|
|
211
291
|
```
|
|
212
292
|
|
|
213
|
-
|
|
293
|
+
### Prefetch callback
|
|
294
|
+
|
|
295
|
+
Runs before every request — useful for injecting auth:
|
|
214
296
|
|
|
215
|
-
```
|
|
297
|
+
```ts
|
|
216
298
|
const api = Tapi.builder()
|
|
217
299
|
.withHost("https://api.example.com")
|
|
218
|
-
.
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
message: error.message || "Unknown error",
|
|
222
|
-
code: response.status,
|
|
223
|
-
details: error
|
|
224
|
-
};
|
|
225
|
-
})
|
|
226
|
-
.withDefaultHeaders({
|
|
227
|
-
Authorization: "Bearer <token>",
|
|
228
|
-
"Content-Type": "application/json"
|
|
229
|
-
})
|
|
230
|
-
.withPrefetch((request) => {
|
|
231
|
-
console.log(`[${request.method}] ${request.url}`);
|
|
232
|
-
})
|
|
233
|
-
.withPostfetch((response) => {
|
|
234
|
-
if (!response.ok) {
|
|
235
|
-
console.error("Request failed:", response.status);
|
|
236
|
-
}
|
|
300
|
+
.withPrefetch(async ({ url, method, headers }) => {
|
|
301
|
+
const token = await getAccessToken()
|
|
302
|
+
headers.set("Authorization", `Bearer ${token}`)
|
|
237
303
|
})
|
|
238
|
-
.withLanguage("en") // "en" | "br"
|
|
239
304
|
.withRoutes(routes)
|
|
240
|
-
.build()
|
|
305
|
+
.build()
|
|
241
306
|
```
|
|
242
307
|
|
|
243
|
-
###
|
|
244
|
-
|
|
245
|
-
Update headers at runtime using `setHeaders`:
|
|
308
|
+
### Postfetch callback
|
|
246
309
|
|
|
247
|
-
|
|
248
|
-
// Update auth token
|
|
249
|
-
api.setHeaders({
|
|
250
|
-
Authorization: `Bearer ${newToken}`
|
|
251
|
-
});
|
|
310
|
+
Runs after every request — useful for logging or global error handling:
|
|
252
311
|
|
|
253
|
-
|
|
254
|
-
api.
|
|
312
|
+
```ts
|
|
313
|
+
const api = Tapi.builder()
|
|
314
|
+
.withHost("https://api.example.com")
|
|
315
|
+
.withPostfetch((response) => {
|
|
316
|
+
if (!response.ok && response.code === 401) {
|
|
317
|
+
redirectToLogin()
|
|
318
|
+
}
|
|
319
|
+
})
|
|
320
|
+
.withRoutes(routes)
|
|
321
|
+
.build()
|
|
255
322
|
```
|
|
256
323
|
|
|
257
|
-
|
|
324
|
+
### Language
|
|
258
325
|
|
|
259
|
-
|
|
326
|
+
Error messages support `"en"` (default) and `"br"` (Brazilian Portuguese):
|
|
260
327
|
|
|
261
|
-
|
|
262
|
-
- `"br"` - Portuguese (Brazil)
|
|
263
|
-
|
|
264
|
-
```typescript
|
|
328
|
+
```ts
|
|
265
329
|
const api = Tapi.builder()
|
|
266
330
|
.withHost("https://api.example.com")
|
|
267
|
-
.withLanguage("br")
|
|
268
|
-
.withApiError(async (res) => res.statusText)
|
|
331
|
+
.withLanguage("br")
|
|
269
332
|
.withRoutes(routes)
|
|
270
|
-
.build()
|
|
333
|
+
.build()
|
|
271
334
|
```
|
|
272
335
|
|
|
273
|
-
##
|
|
336
|
+
## Types
|
|
274
337
|
|
|
275
|
-
|
|
338
|
+
```ts
|
|
339
|
+
import type { ApiResponse, Success, CustomError, NetworkError, Errors } from "tapi-rs"
|
|
276
340
|
|
|
277
|
-
|
|
341
|
+
// ApiResponse<TData, TError> = (Success<TData> | Errors<TError>) & { endpoint: string; method: HttpMethod }
|
|
342
|
+
// Success<T> = { ok: true; status: "success"; data: T }
|
|
343
|
+
// CustomError<T> = { ok: false; code: number; status: "api_error"; message: string; data: T }
|
|
344
|
+
// NetworkError = { ok: false; code: number; status: "network_error"; message: string; error: Error }
|
|
345
|
+
// Errors<T> = NetworkError | CustomError<T>
|
|
346
|
+
```
|
|
278
347
|
|
|
279
348
|
## License
|
|
280
349
|
|
package/dist/core.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as Hook from "./hook";
|
|
2
2
|
import { Language } from "./translations";
|
|
3
3
|
import * as Types from "./types";
|
|
4
|
+
type PathBuilderSignature<T extends Types.RequestConfig<any, any, any, any, any, any, any>> = Types.ExtractPath<T> extends undefined ? () => string : (params: Types.ExtractPath<T>) => string;
|
|
4
5
|
type RouteFunction<T extends Types.RequestConfig<any, any, any, any, any, any, any>, TError = string> = Types.RequesterFunction<T, TError> & {
|
|
5
6
|
useHook: (params: (Types.CallSignature<T> & {
|
|
6
7
|
lazy?: boolean;
|
|
7
8
|
}) | null) => Hook.HookResponse<T, TError>;
|
|
9
|
+
path: PathBuilderSignature<T>;
|
|
8
10
|
};
|
|
9
11
|
export type GenerateApiMethods<T extends Types.RouteDefinitions, TError = string> = {
|
|
10
12
|
[K in keyof T]: T[K] extends Types.RequestConfig<any, any, any, any, any, any, any> ? RouteFunction<T[K], TError> : T[K] extends Types.RouteDefinitions ? GenerateApiMethods<T[K], TError> : never;
|
|
@@ -25,6 +27,7 @@ export declare class TapiBuilder<TRoutes extends Types.RouteDefinitions = {}, TE
|
|
|
25
27
|
private defaultHeaders?;
|
|
26
28
|
private errorHandler?;
|
|
27
29
|
private language;
|
|
30
|
+
private credentials?;
|
|
28
31
|
/**
|
|
29
32
|
* Set the host URL for API requests
|
|
30
33
|
*/
|
|
@@ -53,6 +56,10 @@ export declare class TapiBuilder<TRoutes extends Types.RouteDefinitions = {}, TE
|
|
|
53
56
|
* Set the language for error messages
|
|
54
57
|
*/
|
|
55
58
|
withLanguage(language: Language): TapiBuilder<TRoutes, TError, THasHost, THasRoutes>;
|
|
59
|
+
/**
|
|
60
|
+
* Set the credentials mode for all requests (e.g. "include" for cross-origin cookies)
|
|
61
|
+
*/
|
|
62
|
+
withCredentials(credentials: RequestCredentials): TapiBuilder<TRoutes, TError, THasHost, THasRoutes>;
|
|
56
63
|
/**
|
|
57
64
|
* Build the API client with compile-time validation
|
|
58
65
|
*
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,KAAK,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAC3I,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
CHANGED
|
@@ -12,21 +12,30 @@ function isRequestConfig(value) {
|
|
|
12
12
|
/**
|
|
13
13
|
* Recursively creates nested API methods based on route definitions
|
|
14
14
|
*/
|
|
15
|
-
function createNestedMethods(host, routes, target, prefetchCallback, postfetchCallback, defaultHeaders, errorHandler, language = "en") {
|
|
15
|
+
function createNestedMethods(host, routes, target, prefetchCallback, postfetchCallback, defaultHeaders, errorHandler, language = "en", credentials) {
|
|
16
16
|
// Store headers and update function references for use by setHeaders method
|
|
17
17
|
let currentHeaders = defaultHeaders;
|
|
18
18
|
const updateTargets = [];
|
|
19
19
|
for (const [routeName, routeValue] of Object.entries(routes)) {
|
|
20
20
|
if (isRequestConfig(routeValue)) {
|
|
21
|
-
const requester = RequestCreator.create(host, routeValue, prefetchCallback, postfetchCallback, currentHeaders, errorHandler, language);
|
|
21
|
+
const requester = RequestCreator.create(host, routeValue, prefetchCallback, postfetchCallback, currentHeaders, errorHandler, language, credentials);
|
|
22
22
|
const hook = (params) => Hook.useHook(requester, params);
|
|
23
23
|
requester.useHook = hook;
|
|
24
|
+
requester.path = (params) => {
|
|
25
|
+
let url = routeValue.endpoint;
|
|
26
|
+
if (params) {
|
|
27
|
+
for (const [key, value] of Object.entries(params)) {
|
|
28
|
+
url = url.replace(`:${key}`, encodeURIComponent(String(value)));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return `${host}${url}`;
|
|
32
|
+
};
|
|
24
33
|
target[routeName] = requester;
|
|
25
34
|
updateTargets.push({ target: routeName, config: routeValue });
|
|
26
35
|
}
|
|
27
36
|
else if (typeof routeValue === "object" && routeValue !== null) {
|
|
28
37
|
target[routeName] = {};
|
|
29
|
-
createNestedMethods(host, routeValue, target[routeName], prefetchCallback, postfetchCallback, currentHeaders, errorHandler, language);
|
|
38
|
+
createNestedMethods(host, routeValue, target[routeName], prefetchCallback, postfetchCallback, currentHeaders, errorHandler, language, credentials);
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
// Add setHeaders method to update headers for all nested routes
|
|
@@ -34,9 +43,18 @@ function createNestedMethods(host, routes, target, prefetchCallback, postfetchCa
|
|
|
34
43
|
currentHeaders = headers;
|
|
35
44
|
// Update existing routes with new headers
|
|
36
45
|
for (const item of updateTargets) {
|
|
37
|
-
const requester = RequestCreator.create(host, item.config, prefetchCallback, postfetchCallback, headers, errorHandler, language);
|
|
46
|
+
const requester = RequestCreator.create(host, item.config, prefetchCallback, postfetchCallback, headers, errorHandler, language, credentials);
|
|
38
47
|
const hook = (params) => Hook.useHook(requester, params);
|
|
39
48
|
requester.useHook = hook;
|
|
49
|
+
requester.path = (params) => {
|
|
50
|
+
let url = item.config.endpoint;
|
|
51
|
+
if (params) {
|
|
52
|
+
for (const [key, value] of Object.entries(params)) {
|
|
53
|
+
url = url.replace(`:${key}`, encodeURIComponent(String(value)));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return `${host}${url}`;
|
|
57
|
+
};
|
|
40
58
|
target[item.target] = requester;
|
|
41
59
|
}
|
|
42
60
|
// Update headers for nested objects
|
|
@@ -66,6 +84,7 @@ export class TapiBuilder {
|
|
|
66
84
|
builder.defaultHeaders = this.defaultHeaders;
|
|
67
85
|
builder.errorHandler = this.errorHandler;
|
|
68
86
|
builder.language = this.language;
|
|
87
|
+
builder.credentials = this.credentials;
|
|
69
88
|
return builder;
|
|
70
89
|
}
|
|
71
90
|
/**
|
|
@@ -80,6 +99,7 @@ export class TapiBuilder {
|
|
|
80
99
|
builder.defaultHeaders = this.defaultHeaders;
|
|
81
100
|
builder.errorHandler = this.errorHandler;
|
|
82
101
|
builder.language = this.language;
|
|
102
|
+
builder.credentials = this.credentials;
|
|
83
103
|
return builder;
|
|
84
104
|
}
|
|
85
105
|
/**
|
|
@@ -94,6 +114,7 @@ export class TapiBuilder {
|
|
|
94
114
|
builder.defaultHeaders = this.defaultHeaders;
|
|
95
115
|
builder.errorHandler = errorHandler;
|
|
96
116
|
builder.language = this.language;
|
|
117
|
+
builder.credentials = this.credentials;
|
|
97
118
|
return builder;
|
|
98
119
|
}
|
|
99
120
|
/**
|
|
@@ -108,6 +129,7 @@ export class TapiBuilder {
|
|
|
108
129
|
builder.defaultHeaders = this.defaultHeaders;
|
|
109
130
|
builder.errorHandler = this.errorHandler;
|
|
110
131
|
builder.language = this.language;
|
|
132
|
+
builder.credentials = this.credentials;
|
|
111
133
|
return builder;
|
|
112
134
|
}
|
|
113
135
|
/**
|
|
@@ -122,6 +144,7 @@ export class TapiBuilder {
|
|
|
122
144
|
builder.defaultHeaders = this.defaultHeaders;
|
|
123
145
|
builder.errorHandler = this.errorHandler;
|
|
124
146
|
builder.language = this.language;
|
|
147
|
+
builder.credentials = this.credentials;
|
|
125
148
|
return builder;
|
|
126
149
|
}
|
|
127
150
|
/**
|
|
@@ -136,6 +159,7 @@ export class TapiBuilder {
|
|
|
136
159
|
builder.defaultHeaders = headers;
|
|
137
160
|
builder.errorHandler = this.errorHandler;
|
|
138
161
|
builder.language = this.language;
|
|
162
|
+
builder.credentials = this.credentials;
|
|
139
163
|
return builder;
|
|
140
164
|
}
|
|
141
165
|
/**
|
|
@@ -150,6 +174,22 @@ export class TapiBuilder {
|
|
|
150
174
|
builder.defaultHeaders = this.defaultHeaders;
|
|
151
175
|
builder.errorHandler = this.errorHandler;
|
|
152
176
|
builder.language = language;
|
|
177
|
+
builder.credentials = this.credentials;
|
|
178
|
+
return builder;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Set the credentials mode for all requests (e.g. "include" for cross-origin cookies)
|
|
182
|
+
*/
|
|
183
|
+
withCredentials(credentials) {
|
|
184
|
+
const builder = new TapiBuilder();
|
|
185
|
+
builder.host = this.host;
|
|
186
|
+
builder.routes = this.routes;
|
|
187
|
+
builder.prefetchCallback = this.prefetchCallback;
|
|
188
|
+
builder.postfetchCallback = this.postfetchCallback;
|
|
189
|
+
builder.defaultHeaders = this.defaultHeaders;
|
|
190
|
+
builder.errorHandler = this.errorHandler;
|
|
191
|
+
builder.language = this.language;
|
|
192
|
+
builder.credentials = credentials;
|
|
153
193
|
return builder;
|
|
154
194
|
}
|
|
155
195
|
/**
|
|
@@ -161,7 +201,7 @@ export class TapiBuilder {
|
|
|
161
201
|
*/
|
|
162
202
|
build(...args) {
|
|
163
203
|
const apiMethods = {};
|
|
164
|
-
createNestedMethods(this.host, this.routes, apiMethods, this.prefetchCallback, this.postfetchCallback, this.defaultHeaders, this.errorHandler, this.language);
|
|
204
|
+
createNestedMethods(this.host, this.routes, apiMethods, this.prefetchCallback, this.postfetchCallback, this.defaultHeaders, this.errorHandler, this.language, this.credentials);
|
|
165
205
|
return apiMethods;
|
|
166
206
|
}
|
|
167
207
|
}
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/hook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAQjC,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAE5D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,IACtG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GACpI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAC/G,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnG,wBAAgB,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EACvG,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAC7C,UAAU,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,GAC/D,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAyDzB"}
|
package/dist/hook.js
CHANGED
|
@@ -6,19 +6,17 @@ function useDeepCompareMemo(value) {
|
|
|
6
6
|
ref.current = value;
|
|
7
7
|
return ref.current;
|
|
8
8
|
}
|
|
9
|
-
function useDeepCompareCallback(fn, deps) {
|
|
10
|
-
const memoDeps = useDeepCompareMemo(deps);
|
|
11
|
-
return useCallback(fn, memoDeps);
|
|
12
|
-
}
|
|
13
9
|
export function useHook(requester, callParams) {
|
|
14
10
|
const [data, setData] = useState(null);
|
|
15
11
|
const [error, setError] = useState(null);
|
|
16
12
|
const [loading, setLoading] = useState(true);
|
|
17
13
|
const memoizedParams = useDeepCompareMemo(callParams);
|
|
18
|
-
const fetchData =
|
|
14
|
+
const fetchData = useCallback(async (signal) => {
|
|
19
15
|
if (!memoizedParams)
|
|
20
16
|
return true;
|
|
21
|
-
const result = await requester(memoizedParams);
|
|
17
|
+
const result = await requester({ ...memoizedParams, signal });
|
|
18
|
+
if (signal?.aborted)
|
|
19
|
+
return true;
|
|
22
20
|
if (!result.ok) {
|
|
23
21
|
setData(null);
|
|
24
22
|
setError(result);
|
|
@@ -31,10 +29,11 @@ export function useHook(requester, callParams) {
|
|
|
31
29
|
return true;
|
|
32
30
|
}, [requester, memoizedParams]);
|
|
33
31
|
useEffect(() => {
|
|
34
|
-
// Don't fetch if callParams is null or in lazy mode
|
|
35
32
|
if (!memoizedParams || memoizedParams.lazy)
|
|
36
33
|
return;
|
|
37
|
-
|
|
34
|
+
const controller = new AbortController();
|
|
35
|
+
fetchData(controller.signal);
|
|
36
|
+
return () => controller.abort();
|
|
38
37
|
}, [fetchData, memoizedParams]);
|
|
39
38
|
const setter = useCallback((callback) => {
|
|
40
39
|
setData((prev) => {
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAKzC,SAAS,kBAAkB,CAAI,KAAQ;IACrC,MAAM,GAAG,GAAG,MAAM,CAAI,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtD,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAKzC,SAAS,kBAAkB,CAAI,KAAQ;IACrC,MAAM,GAAG,GAAG,MAAM,CAAI,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtD,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAUD,MAAM,UAAU,OAAO,CACrB,SAA6C,EAC7C,UAAgE;IAEhE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA8B,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,EAAE,MAAoB,EAAE,EAAE;QAC7B,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAE9D,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO,IAAI,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,MAA8B,CAAC,CAAC;YACzC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,SAAS,EAAE,cAAc,CAAC,CAC5B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI;YAAE,OAAO;QAEnD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE7B,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,QAAwG,EAAE,EAAE;QACtI,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACpB,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,UAAU,OAAO,CAAC,UAAoB;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAA4B,CAAC;AAC5E,CAAC"}
|
package/dist/request.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as ResponseSchema from "./response";
|
|
2
2
|
import { Language } from "./translations";
|
|
3
3
|
import * as Types from "./types";
|
|
4
|
-
export declare function create<TConfig extends Types.RequestConfig<any, any, any, any, any, any, any>, TError = string>(host: string, config: TConfig, prefetchCallback: Types.PrefetchCallback | undefined, postfetchCallback: Types.PostfetchCallback<ResponseSchema.InferResult<TConfig["response"]>, TError> | undefined, defaultHeaders: Record<string, string> | undefined, errorHandler: ((response: Response) => Promise<TError>) | undefined, language?: Language): Types.RequesterFunction<TConfig, TError>;
|
|
4
|
+
export declare function create<TConfig extends Types.RequestConfig<any, any, any, any, any, any, any>, TError = string>(host: string, config: TConfig, prefetchCallback: Types.PrefetchCallback | undefined, postfetchCallback: Types.PostfetchCallback<ResponseSchema.InferResult<TConfig["response"]>, TError> | undefined, defaultHeaders: Record<string, string> | undefined, errorHandler: ((response: Response) => Promise<TError>) | undefined, language?: Language, credentials?: RequestCredentials): Types.RequesterFunction<TConfig, TError>;
|
|
5
5
|
//# sourceMappingURL=request.d.ts.map
|
package/dist/request.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAK,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAWjC,wBAAgB,MAAM,CAAC,OAAO,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAC5G,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,SAAS,EACpD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/G,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClD,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,EACnE,QAAQ,GAAE,QAAe,
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAK,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAWjC,wBAAgB,MAAM,CAAC,OAAO,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAC5G,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,SAAS,EACpD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/G,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClD,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,EACnE,QAAQ,GAAE,QAAe,EACzB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAwE1C"}
|
package/dist/request.js
CHANGED
|
@@ -8,7 +8,7 @@ function dispatchPostFetchCallback(callback, args) {
|
|
|
8
8
|
.catch(() => { });
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
export function create(host, config, prefetchCallback, postfetchCallback, defaultHeaders, errorHandler, language = "en") {
|
|
11
|
+
export function create(host, config, prefetchCallback, postfetchCallback, defaultHeaders, errorHandler, language = "en", credentials) {
|
|
12
12
|
const translations = t(language);
|
|
13
13
|
const requester = async function (params) {
|
|
14
14
|
const promise = async () => {
|
|
@@ -43,10 +43,11 @@ export function create(host, config, prefetchCallback, postfetchCallback, defaul
|
|
|
43
43
|
if (prefetchCallback) {
|
|
44
44
|
await Promise.resolve(prefetchCallback({ url, method: config.method, headers, body }));
|
|
45
45
|
}
|
|
46
|
-
const responseOrError = await Utils.executeRequest(url, config, params, defaultHeaders, language);
|
|
46
|
+
const responseOrError = await Utils.executeRequest(url, config, params, defaultHeaders, language, credentials);
|
|
47
47
|
if ("error" in responseOrError) {
|
|
48
48
|
const nError = { ...responseOrError, endpoint: url, method: config.method };
|
|
49
|
-
|
|
49
|
+
if (!params.signal?.aborted)
|
|
50
|
+
dispatchPostFetchCallback(postfetchCallback, nError);
|
|
50
51
|
return nError;
|
|
51
52
|
}
|
|
52
53
|
const response = responseOrError;
|
|
@@ -66,7 +67,8 @@ export function create(host, config, prefetchCallback, postfetchCallback, defaul
|
|
|
66
67
|
catch (error) {
|
|
67
68
|
const networkError = Errors.createNetworkError(translations.errors.requestFailed, error instanceof Error ? error : new Error(String(error)));
|
|
68
69
|
const nError = { ...networkError, endpoint: config.endpoint, method: config.method };
|
|
69
|
-
|
|
70
|
+
if (!params.signal?.aborted)
|
|
71
|
+
dispatchPostFetchCallback(postfetchCallback, nError);
|
|
70
72
|
return nError;
|
|
71
73
|
}
|
|
72
74
|
};
|
package/dist/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAY,CAAC,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,SAAS,yBAAyB,CAAC,QAAkC,EAAE,IAAU;IAC/E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,OAAO,EAAE;aACd,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1B,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,IAAY,EACZ,MAAe,EACf,gBAAoD,EACpD,iBAA+G,EAC/G,cAAkD,EAClD,YAAmE,EACnE,WAAqB,IAAI;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -39,13 +39,17 @@ type InferHeaderParam<THeaders> = THeaders extends undefined ? {
|
|
|
39
39
|
} : {
|
|
40
40
|
headers: THeaders;
|
|
41
41
|
};
|
|
42
|
-
type ExtractPath<T> = T extends RequestConfig<any, infer P, any, any, any, any, any> ? P : undefined;
|
|
42
|
+
export type ExtractPath<T> = T extends RequestConfig<any, infer P, any, any, any, any, any> ? P : undefined;
|
|
43
43
|
type ExtractBody<T> = T extends RequestConfig<any, any, infer B, any, any, any, any> ? B : undefined;
|
|
44
44
|
type ExtractFormData<T> = T extends RequestConfig<any, any, any, infer F, any, any, any> ? F : undefined;
|
|
45
45
|
type ExtractQuery<T> = T extends RequestConfig<any, any, any, any, infer Q, any, any> ? Q : undefined;
|
|
46
46
|
type ExtractHeaders<T> = T extends RequestConfig<any, any, any, any, any, infer H, any> ? H : undefined;
|
|
47
|
-
export type RequesterParams<T extends RequestConfig<any, any, any, any, any, any, any>> = InferPathParam<ExtractPath<T>> & InferBodyParam<ExtractBody<T>> & InferFormDataParam<ExtractFormData<T>> & InferQueryParam<ExtractQuery<T>> & InferHeaderParam<ExtractHeaders<T
|
|
48
|
-
|
|
47
|
+
export type RequesterParams<T extends RequestConfig<any, any, any, any, any, any, any>> = InferPathParam<ExtractPath<T>> & InferBodyParam<ExtractBody<T>> & InferFormDataParam<ExtractFormData<T>> & InferQueryParam<ExtractQuery<T>> & InferHeaderParam<ExtractHeaders<T>> & {
|
|
48
|
+
signal?: AbortSignal;
|
|
49
|
+
};
|
|
50
|
+
export type CallSignature<T extends RequestConfig<any, any, any, any, any, any, any>> = InferPathParam<ExtractPath<T>> & InferBodyParam<ExtractBody<T>> & InferFormDataParam<ExtractFormData<T>> & InferQueryParam<ExtractQuery<T>> & InferHeaderParam<ExtractHeaders<T>> & {
|
|
51
|
+
signal?: AbortSignal;
|
|
52
|
+
};
|
|
49
53
|
export type PrefetchCallback = (args: {
|
|
50
54
|
url: string;
|
|
51
55
|
method: HttpMethod;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,aAAa,CACvB,OAAO,SAAS,UAAU,GAAG,UAAU,EACvC,KAAK,GAAG,SAAS,EACjB,KAAK,GAAG,SAAS,EACjB,SAAS,GAAG,SAAS,EACrB,MAAM,GAAG,SAAS,EAClB,QAAQ,GAAG,SAAS,EACpB,SAAS,GAAG,OAAO,IACjB;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAC;CACpF,CAAC;AAGF,KAAK,cAAc,CAAC,KAAK,IAAI,KAAK,SAAS,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAC1F,KAAK,cAAc,CAAC,KAAK,IAAI,KAAK,SAAS,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAC1F,KAAK,kBAAkB,CAAC,SAAS,IAAI,SAAS,SAAS,SAAS,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAClH,KAAK,eAAe,CAAC,MAAM,IAAI,MAAM,SAAS,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAChG,KAAK,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,SAAS,SAAS,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAG3G,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Language } from "./translations";
|
|
2
2
|
import * as Types from "./types";
|
|
3
3
|
export declare function buildUrl<T extends Types.RequestConfig<any, any, any, any, any, any, any>>(host: string, config: T, params: Types.RequesterParams<T>): string;
|
|
4
|
-
export declare function executeRequest<T extends Types.RequestConfig<any, any, any, any, any, any, any>>(url: string, config: T, params: Types.RequesterParams<T>, defaultHeaders?: Record<string, string>, language?: Language): Promise<Response | Types.NetworkError>;
|
|
4
|
+
export declare function executeRequest<T extends Types.RequestConfig<any, any, any, any, any, any, any>>(url: string, config: T, params: Types.RequesterParams<T>, defaultHeaders?: Record<string, string>, language?: Language, credentials?: RequestCredentials): Promise<Response | Types.NetworkError>;
|
|
5
5
|
export declare function handleErrorResponse<TError = string>(response: Response, errorHandler?: (response: Response) => Promise<TError>, language?: Language): Promise<Types.CustomError<TError>>;
|
|
6
6
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAK,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAc5J;AAED,wBAAsB,cAAc,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACnG,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAChC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,QAAQ,GAAE,QAAe,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAK,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAc5J;AAED,wBAAsB,cAAc,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACnG,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAChC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,QAAQ,GAAE,QAAe,EACzB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,CAsCxC;AAED,wBAAsB,mBAAmB,CAAC,MAAM,GAAG,MAAM,EACvD,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,EACtD,QAAQ,GAAE,QAAe,GACxB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA6BpC"}
|
package/dist/utils.js
CHANGED
|
@@ -12,7 +12,7 @@ export function buildUrl(host, config, params) {
|
|
|
12
12
|
const queryString = params.query ? `?${new URLSearchParams(params.query).toString()}` : "";
|
|
13
13
|
return `${host}${url}${queryString}`;
|
|
14
14
|
}
|
|
15
|
-
export async function executeRequest(url, config, params, defaultHeaders, language = "en") {
|
|
15
|
+
export async function executeRequest(url, config, params, defaultHeaders, language = "en", credentials) {
|
|
16
16
|
const translations = t(language);
|
|
17
17
|
const headers = new Headers({ ...defaultHeaders });
|
|
18
18
|
// Add custom headers from params
|
|
@@ -43,7 +43,7 @@ export async function executeRequest(url, config, params, defaultHeaders, langua
|
|
|
43
43
|
headers.append("Content-Type", "application/json");
|
|
44
44
|
}
|
|
45
45
|
try {
|
|
46
|
-
return await fetch(url, { method: config.method, headers, body });
|
|
46
|
+
return await fetch(url, { method: config.method, headers, body, signal: params.signal, credentials });
|
|
47
47
|
}
|
|
48
48
|
catch (error) {
|
|
49
49
|
return Errors.createNetworkError(translations.errors.requestFailed, error instanceof Error ? error : new Error(String(error)));
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAY,CAAC,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,UAAU,QAAQ,CAAmE,IAAY,EAAE,MAAS,EAAE,MAAgC;IAClJ,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE1B,0BAA0B;IAC1B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAA8B,CAAC,EAAE,CAAC;YACjF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,KAA+B,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAErH,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,MAAS,EACT,MAAgC,EAChC,cAAuC,EACvC,WAAqB,IAAI;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tapi-rs",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "A modern, type-safe REST API client builder for TypeScript/JavaScript applications with React hooks integration and intelligent error handling.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|