kinetex 1.4.0 → 1.5.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 +170 -46
- package/dist/browser/kinetex.esm.js +29 -29
- package/dist/browser/kinetex.js +1143 -791
- package/dist/browser/kinetex.min.js +29 -29
- package/dist/cjs/aws-sigv4.js +7 -14
- package/dist/cjs/cache.js +9 -0
- package/dist/cjs/circuit-breaker.js +8 -1
- package/dist/cjs/client.js +350 -95
- package/dist/cjs/cookie-parser.js +28 -1
- package/dist/cjs/core.js +227 -5
- package/dist/cjs/dedup.js +93 -10
- package/dist/cjs/digest.js +36 -15
- package/dist/cjs/graphql.js +2 -11
- package/dist/cjs/headers.js +24 -1
- package/dist/cjs/interceptors.js +6 -17
- package/dist/cjs/lifecycle.js +3 -19
- package/dist/cjs/logging.js +12 -29
- package/dist/cjs/progress.js +1 -3
- package/dist/cjs/proxy.js +19 -2
- package/dist/cjs/response.js +202 -75
- package/dist/cjs/socks5.js +5 -0
- package/dist/cjs/utils.js +115 -27
- package/dist/cjs/ws.js +43 -2
- package/dist/esm/aws-sigv4.js +7 -14
- package/dist/esm/aws-sigv4.js.map +1 -1
- package/dist/esm/cache.js +9 -0
- package/dist/esm/cache.js.map +1 -1
- package/dist/esm/circuit-breaker.js +8 -1
- package/dist/esm/circuit-breaker.js.map +1 -1
- package/dist/esm/client.js +350 -95
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/cookie-parser.js +28 -1
- package/dist/esm/cookie-parser.js.map +1 -1
- package/dist/esm/core.js +227 -5
- package/dist/esm/core.js.map +1 -1
- package/dist/esm/dedup.js +93 -10
- package/dist/esm/dedup.js.map +1 -1
- package/dist/esm/digest.js +36 -15
- package/dist/esm/digest.js.map +1 -1
- package/dist/esm/graphql.js +2 -11
- package/dist/esm/graphql.js.map +1 -1
- package/dist/esm/headers.js +24 -1
- package/dist/esm/headers.js.map +1 -1
- package/dist/esm/interceptors.js +6 -17
- package/dist/esm/interceptors.js.map +1 -1
- package/dist/esm/lifecycle.js +3 -19
- package/dist/esm/lifecycle.js.map +1 -1
- package/dist/esm/logging.js +12 -29
- package/dist/esm/logging.js.map +1 -1
- package/dist/esm/progress.js +1 -3
- package/dist/esm/progress.js.map +1 -1
- package/dist/esm/proxy.js +19 -2
- package/dist/esm/proxy.js.map +1 -1
- package/dist/esm/response.js +202 -75
- package/dist/esm/response.js.map +1 -1
- package/dist/esm/socks5.js +5 -0
- package/dist/esm/socks5.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/url.js.map +1 -1
- package/dist/esm/utils.js +115 -27
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/ws.js +43 -2
- package/dist/esm/ws.js.map +1 -1
- package/dist/types/aws-sigv4.d.ts.map +1 -1
- package/dist/types/cache.d.ts.map +1 -1
- package/dist/types/circuit-breaker.d.ts +1 -1
- package/dist/types/circuit-breaker.d.ts.map +1 -1
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/cookie-parser.d.ts.map +1 -1
- package/dist/types/core.d.ts +113 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/dedup.d.ts +38 -3
- package/dist/types/dedup.d.ts.map +1 -1
- package/dist/types/digest.d.ts.map +1 -1
- package/dist/types/graphql.d.ts.map +1 -1
- package/dist/types/headers.d.ts +23 -4
- package/dist/types/headers.d.ts.map +1 -1
- package/dist/types/interceptors.d.ts +24 -38
- package/dist/types/interceptors.d.ts.map +1 -1
- package/dist/types/lifecycle.d.ts.map +1 -1
- package/dist/types/logging.d.ts.map +1 -1
- package/dist/types/progress.d.ts.map +1 -1
- package/dist/types/proxy.d.ts.map +1 -1
- package/dist/types/response.d.ts +42 -1
- package/dist/types/response.d.ts.map +1 -1
- package/dist/types/socks5.d.ts.map +1 -1
- package/dist/types/types.d.ts +105 -23
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/url.d.ts +0 -11
- package/dist/types/url.d.ts.map +1 -1
- package/dist/types/utils.d.ts +69 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/types/ws.d.ts +0 -1
- package/dist/types/ws.d.ts.map +1 -1
- package/package.json +10 -4
package/dist/cjs/aws-sigv4.js
CHANGED
|
@@ -22,6 +22,13 @@
|
|
|
22
22
|
*/
|
|
23
23
|
// Node.js globals accessed via globalThis for cross-runtime compatibility
|
|
24
24
|
import { TimeoutError, NetworkError } from "./types.js";
|
|
25
|
+
import { sha256Hex } from "./utils.js";
|
|
26
|
+
/** Convert a Uint8Array to a lowercase hex string. */
|
|
27
|
+
function toHex(bytes) {
|
|
28
|
+
return Array.from(bytes)
|
|
29
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
30
|
+
.join("");
|
|
31
|
+
}
|
|
25
32
|
/**
|
|
26
33
|
* Static credential provider — wraps a fixed set of credentials.
|
|
27
34
|
*/
|
|
@@ -277,20 +284,6 @@ async function hmacSHA256(key, data) {
|
|
|
277
284
|
/**
|
|
278
285
|
* SHA-256 hash of a string or bytes. Returns lowercase hex.
|
|
279
286
|
*/
|
|
280
|
-
async function sha256Hex(data) {
|
|
281
|
-
const enc = new TextEncoder();
|
|
282
|
-
const raw = typeof data === "string" ? enc.encode(data) : data;
|
|
283
|
-
// Cast to ArrayBuffer for WebCrypto digest overload
|
|
284
|
-
const buf = raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength);
|
|
285
|
-
const hashBuf = await crypto.subtle.digest("SHA-256", buf);
|
|
286
|
-
return toHex(new Uint8Array(hashBuf));
|
|
287
|
-
}
|
|
288
|
-
/** Convert a Uint8Array to a lowercase hex string. */
|
|
289
|
-
function toHex(bytes) {
|
|
290
|
-
return Array.from(bytes)
|
|
291
|
-
.map((b) => b.toString(16).padStart(2, "0"))
|
|
292
|
-
.join("");
|
|
293
|
-
}
|
|
294
287
|
// ============================================================================
|
|
295
288
|
// #5 CANONICAL REQUEST
|
|
296
289
|
// ============================================================================
|
package/dist/cjs/cache.js
CHANGED
|
@@ -438,6 +438,15 @@ function computeTTL(response, defaultTtl, honor) {
|
|
|
438
438
|
if (honor && d.noStore) {
|
|
439
439
|
return { ttlMs: 0, swrMs: 0, staleOnError: 0, shouldCache: false };
|
|
440
440
|
}
|
|
441
|
+
// `private` marks a response as belonging to a single user. A browser's cache
|
|
442
|
+
// *is* per-user, so storing it there is correct — but this cache is a Map in
|
|
443
|
+
// the calling process, shared by every request that process makes. Honouring
|
|
444
|
+
// the directive is the difference between one user's `private` response and
|
|
445
|
+
// another user's. `d.private` was parsed and then never read, so a response
|
|
446
|
+
// that explicitly asked not to be shared was stored and replayed anyway.
|
|
447
|
+
if (honor && d.private) {
|
|
448
|
+
return { ttlMs: 0, swrMs: 0, staleOnError: 0, shouldCache: false };
|
|
449
|
+
}
|
|
441
450
|
// s-maxage takes priority (for shared/proxy caches)
|
|
442
451
|
const maxAgeSecs = d.sMaxAge ?? d.maxAge;
|
|
443
452
|
let ttlMs;
|
|
@@ -327,7 +327,14 @@ export class CircuitBreaker {
|
|
|
327
327
|
const code = err.code;
|
|
328
328
|
if (this.failureFilter.networkErrors && code === "ENETWORK")
|
|
329
329
|
return true;
|
|
330
|
-
|
|
330
|
+
// `ETIMEDOUT` as well as `ETIMEOUT`. The timeout interceptor raises its own
|
|
331
|
+
// `TimeoutError` (src/interceptors.ts), which carries `ETIMEDOUT`, so a
|
|
332
|
+
// request that timed out at the interceptor was never counted toward the
|
|
333
|
+
// threshold no matter what `failureFilter.timeouts` was set to. Both codes
|
|
334
|
+
// are kept because `ETIMEDOUT` is also a node:net errno (see
|
|
335
|
+
// `TRANSIENT_DIAL_CODES` in socks5.ts), so accepting it is right
|
|
336
|
+
// independently of the interceptor.
|
|
337
|
+
if (this.failureFilter.timeouts && (code === "ETIMEOUT" || code === "ETIMEDOUT"))
|
|
331
338
|
return true;
|
|
332
339
|
if (this.failureFilter.serverErrors) {
|
|
333
340
|
const status = err.status;
|