@molecule/app-http-axios 1.0.5 → 1.0.7
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 +42 -7
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +31 -3
- package/dist/provider.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-10-
|
|
6
|
+
Generated: 2026-10-19T07:52:40.440Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-http-axios
|
|
@@ -241,11 +241,15 @@ interface RequestConfig {
|
|
|
241
241
|
/**
|
|
242
242
|
* Send this request WITHOUT waiting for the session restore (the auth gate).
|
|
243
243
|
*
|
|
244
|
-
* A request the gate
|
|
245
|
-
*
|
|
246
|
-
* client
|
|
247
|
-
*
|
|
248
|
-
*
|
|
244
|
+
* A request the gate's restore issues from a LATER continuation must set this. The gate
|
|
245
|
+
* recognizes a request the settle function issues while it runs and never holds it — this
|
|
246
|
+
* package's client awaits the gate before anything else, so a `restoreSession()` that calls
|
|
247
|
+
* it directly does not deadlock. But a restore that awaits something else first
|
|
248
|
+
* (`await storage.get()`), then calls the client, reaches `awaitAuthGate` after that window:
|
|
249
|
+
* the gate then waits on itself, and every request on the page stalls until the gate times
|
|
250
|
+
* out (3 s) — so pass `skipAuthGate: true` on that request. A provider that awaits the gate
|
|
251
|
+
* inside a scheduled interceptor (the Axios bond) also reaches it after the window, so its
|
|
252
|
+
* restore's request needs the opt-out.
|
|
249
253
|
*
|
|
250
254
|
* ```typescript
|
|
251
255
|
* // the request the gate's restore makes, through the same client the gate holds back
|
|
@@ -254,7 +258,8 @@ interface RequestConfig {
|
|
|
254
258
|
*
|
|
255
259
|
* `@molecule/app-auth`'s own restore does not need it — it sends its request with
|
|
256
260
|
* `fetch`, not through this client. An app with its own session store that registers a
|
|
257
|
-
* gate with `setAuthGate` does
|
|
261
|
+
* gate with `setAuthGate` does not need it either when its restore calls the client
|
|
262
|
+
* directly.
|
|
258
263
|
*/
|
|
259
264
|
skipAuthGate?: boolean
|
|
260
265
|
/**
|
|
@@ -379,18 +384,43 @@ type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTION
|
|
|
379
384
|
|
|
380
385
|
HTTP error with response details.
|
|
381
386
|
|
|
387
|
+
**`status` is an HTTP status when the server answered, and `0` when it did not.**
|
|
388
|
+
A `0` means NO response exists: the request was aborted (an `AbortController`, a
|
|
389
|
+
component's effect cleanup, a route change tearing the request down) or the
|
|
390
|
+
network failed before anything came back. It is not an HTTP status at all, so it
|
|
391
|
+
says nothing about the session — an app must never treat `status < 500` as
|
|
392
|
+
"signed out", because every aborted request on a route change would clear the
|
|
393
|
+
session. The correct check is {@link isAuthFailure} (`status === 401 || status === 403`);
|
|
394
|
+
`isNoResponse` (`status === 0`) identifies this case.
|
|
395
|
+
|
|
382
396
|
```typescript
|
|
383
397
|
declare class HttpError extends Error {
|
|
384
398
|
status: number
|
|
385
399
|
response?: HttpResponse | undefined
|
|
386
400
|
config?: FullRequestConfig | undefined
|
|
387
401
|
errorKey?: string | undefined
|
|
402
|
+
aborted: boolean
|
|
403
|
+
/**
|
|
404
|
+
* Builds a failed-request error.
|
|
405
|
+
*
|
|
406
|
+
* @param message - Human-readable message (already translated where a key exists).
|
|
407
|
+
* @param status - HTTP status, or `0` when no response was received (aborted / network failure).
|
|
408
|
+
* @param response - Parsed response when the server answered, otherwise undefined.
|
|
409
|
+
* @param config - The request config that failed.
|
|
410
|
+
* @param errorKey - Translation key for the failure (`http.error.aborted` for an
|
|
411
|
+
* aborted request, `http.error.networkError` for a real network failure).
|
|
412
|
+
* @param aborted - Whether the request was aborted before a response: an
|
|
413
|
+
* `AbortController` signal (component cleanup, a cancelled request) or the
|
|
414
|
+
* browser tearing the fetch down during a navigation. Distinguishes an abort
|
|
415
|
+
* from a network outage on the same `status === 0`, without parsing the message.
|
|
416
|
+
*/
|
|
388
417
|
constructor(
|
|
389
418
|
message: string,
|
|
390
419
|
status: number,
|
|
391
420
|
response?: HttpResponse | undefined,
|
|
392
421
|
config?: FullRequestConfig | undefined,
|
|
393
422
|
errorKey?: string | undefined,
|
|
423
|
+
aborted?: boolean,
|
|
394
424
|
)
|
|
395
425
|
}
|
|
396
426
|
```
|
|
@@ -460,6 +490,11 @@ Peer dependencies:
|
|
|
460
490
|
- The exported `provider` constant is a pre-built default client (no baseURL,
|
|
461
491
|
30 s timeout); prefer `createAxiosClient({...})` so baseURL/credentials are
|
|
462
492
|
explicit.
|
|
493
|
+
- A bonded `baseURL` applies to every relative path, and a path that already
|
|
494
|
+
starts with it is not prefixed twice: with `baseURL: '/api'`, both
|
|
495
|
+
`get('/articles')` and `get('/api/articles')` request `/api/articles`. Leave
|
|
496
|
+
the base URL off and both ask the PAGE origin, which answers its own
|
|
497
|
+
`index.html` with a 200.
|
|
463
498
|
- An API whose scheme is not `Bearer` (`Authorization: Token <jwt>`) passes
|
|
464
499
|
`authScheme: 'Token'` to THIS package's constructor —
|
|
465
500
|
`setClient(createAxiosClient({ baseURL, authScheme: 'Token' }))` — and the auth
|
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
* - The exported `provider` constant is a pre-built default client (no baseURL,
|
|
41
41
|
* 30 s timeout); prefer `createAxiosClient({...})` so baseURL/credentials are
|
|
42
42
|
* explicit.
|
|
43
|
+
* - A bonded `baseURL` applies to every relative path, and a path that already
|
|
44
|
+
* starts with it is not prefixed twice: with `baseURL: '/api'`, both
|
|
45
|
+
* `get('/articles')` and `get('/api/articles')` request `/api/articles`. Leave
|
|
46
|
+
* the base URL off and both ask the PAGE origin, which answers its own
|
|
47
|
+
* `index.html` with a 200.
|
|
43
48
|
* - An API whose scheme is not `Bearer` (`Authorization: Token <jwt>`) passes
|
|
44
49
|
* `authScheme: 'Token'` to THIS package's constructor —
|
|
45
50
|
* `setClient(createAxiosClient({ baseURL, authScheme: 'Token' }))` — and the auth
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
* - The exported `provider` constant is a pre-built default client (no baseURL,
|
|
41
41
|
* 30 s timeout); prefer `createAxiosClient({...})` so baseURL/credentials are
|
|
42
42
|
* explicit.
|
|
43
|
+
* - A bonded `baseURL` applies to every relative path, and a path that already
|
|
44
|
+
* starts with it is not prefixed twice: with `baseURL: '/api'`, both
|
|
45
|
+
* `get('/articles')` and `get('/api/articles')` request `/api/articles`. Leave
|
|
46
|
+
* the base URL off and both ask the PAGE origin, which answers its own
|
|
47
|
+
* `index.html` with a 200.
|
|
43
48
|
* - An API whose scheme is not `Bearer` (`Authorization: Token <jwt>`) passes
|
|
44
49
|
* `authScheme: 'Token'` to THIS package's constructor —
|
|
45
50
|
* `setClient(createAxiosClient({ baseURL, authScheme: 'Token' }))` — and the auth
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EACV,qBAAqB,EAGrB,UAAU,EAKX,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EACV,qBAAqB,EAGrB,UAAU,EAKX,MAAM,YAAY,CAAA;AAmFnB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,qBAA0B,GAAG,UAAU,CAoRhF;AAED,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,YAAsB,CAAA"}
|
package/dist/provider.js
CHANGED
|
@@ -53,6 +53,28 @@ function toHttpResponse(response, config) {
|
|
|
53
53
|
config,
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Removes the bonded `baseURL` from a relative request URL, so Axios does not join it twice.
|
|
58
|
+
*
|
|
59
|
+
* Axios combines `baseURL` with every URL that carries no protocol, so `get('/api/articles')`
|
|
60
|
+
* under `baseURL: '/api'` would request `/api/api/articles`. Callers legitimately pass the
|
|
61
|
+
* absolute path — the scaffolded app's own examples call `/api/...` — and
|
|
62
|
+
* `@molecule/app-http`'s fetch client already leaves a URL that starts with the bonded base as
|
|
63
|
+
* written. This applies the same rule on the Axios path (xr-molecule-flash-m206: a client
|
|
64
|
+
* bonded with the `/api` base must serve both `get('/tags')` and `get('/api/tags')`).
|
|
65
|
+
*
|
|
66
|
+
* @param url - The URL the caller (or a request interceptor) supplied.
|
|
67
|
+
* @param baseURL - The client's bonded base URL.
|
|
68
|
+
* @returns The URL without the bonded prefix, unchanged for an absolute URL or no base.
|
|
69
|
+
*/
|
|
70
|
+
function stripBondedBaseURL(url, baseURL) {
|
|
71
|
+
if (!baseURL || /^[a-z][a-z0-9+.-]*:\/\//i.test(url))
|
|
72
|
+
return url;
|
|
73
|
+
const prefix = baseURL.endsWith('/') ? baseURL : `${baseURL}/`;
|
|
74
|
+
if (url === baseURL)
|
|
75
|
+
return '';
|
|
76
|
+
return url.startsWith(prefix) ? url.slice(baseURL.length) : url;
|
|
77
|
+
}
|
|
56
78
|
/**
|
|
57
79
|
* Creates an Axios-based HTTP client implementing the molecule `HttpClient` interface.
|
|
58
80
|
* Supports request/response/error interceptors, auth token management, and 401 error handlers.
|
|
@@ -120,8 +142,9 @@ export function createAxiosClient(config = {}) {
|
|
|
120
142
|
for (const interceptor of requestInterceptors) {
|
|
121
143
|
config = await interceptor(config);
|
|
122
144
|
}
|
|
123
|
-
// Apply back to Axios config
|
|
124
|
-
|
|
145
|
+
// Apply back to Axios config. A URL that already carries the bonded base is left as the
|
|
146
|
+
// caller wrote it — Axios would otherwise prefix it a second time.
|
|
147
|
+
axiosConfig.url = stripBondedBaseURL(config.url, baseURL);
|
|
125
148
|
axiosConfig.method = config.method.toLowerCase();
|
|
126
149
|
axiosConfig.headers.set(config.headers ?? {});
|
|
127
150
|
axiosConfig.params = config.params;
|
|
@@ -151,6 +174,11 @@ export function createAxiosClient(config = {}) {
|
|
|
151
174
|
if (error.response?.status === 401) {
|
|
152
175
|
authErrorHandlers.forEach((handler) => handler());
|
|
153
176
|
}
|
|
177
|
+
// A cancelled request (an AbortController signal) arrives with no response
|
|
178
|
+
// and Axios' `ERR_CANCELED` code. Flag it like the fetch provider does, so a
|
|
179
|
+
// caller can tell "aborted" from a real outage on the same `status === 0` and
|
|
180
|
+
// never reads either as an auth failure.
|
|
181
|
+
const aborted = error.code === 'ERR_CANCELED';
|
|
154
182
|
// Run error interceptors
|
|
155
183
|
const httpError = new HttpError(error.message, error.response?.status ?? 0, error.response
|
|
156
184
|
? toHttpResponse(error.response, {
|
|
@@ -166,7 +194,7 @@ export function createAxiosClient(config = {}) {
|
|
|
166
194
|
headers: error.config.headers,
|
|
167
195
|
data: error.config.data,
|
|
168
196
|
}
|
|
169
|
-
: undefined);
|
|
197
|
+
: undefined, aborted ? 'http.error.aborted' : 'http.error.networkError', aborted);
|
|
170
198
|
for (const interceptor of errorInterceptors) {
|
|
171
199
|
try {
|
|
172
200
|
const result = await interceptor(httpError);
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|