vigor-fetch 1.0.9 → 1.0.11
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 +22 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.mjs +5 -1
- package/package.json +12 -4
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
- 🛡️ **Smart Resilience:** Automatically handles 429 errors by respecting `Retry-After` headers.
|
|
8
8
|
- 📈 **Exponential Backoff & Jitter:** Prevents server hammering by increasing wait times with random variation.
|
|
9
9
|
- ⚡ **Zero Dependencies:** Built using native Fetch API and AbortController.
|
|
10
|
+
- ⚡ **Tiny footprint** (~3 KB)
|
|
10
11
|
- 🎯 **Fully Type-Safe:** Written in TypeScript for excellent developer experience and auto-completion.
|
|
11
12
|
- 🚦 **Concurrency Control**: Execute bulk requests with a global limit and inter-request jitter using the VigorAll engine.
|
|
12
13
|
- 🎯 **Immutable Chaining**: Every configuration method returns a new instance, making it perfect for base templates and functional patterns.
|
|
@@ -18,14 +19,34 @@ npm install vigor-fetch
|
|
|
18
19
|
|
|
19
20
|
```
|
|
20
21
|
|
|
22
|
+
## Why Vigor?
|
|
23
|
+
|
|
24
|
+
| Feature | Vigor | Axios | Native fetch |
|
|
25
|
+
|-------|------|------|-------------|
|
|
26
|
+
| Built-in Retry | ✅ | ❌ | ❌ |
|
|
27
|
+
| Rate-limit handling | ✅ | ❌ | ❌ |
|
|
28
|
+
| Concurrency control | ✅ | ❌ | ❌ |
|
|
29
|
+
| Zero dependencies | ✅ | ❌ | ✅ |
|
|
30
|
+
| Immutable request builder | ✅ | ❌ | ❌ |
|
|
31
|
+
|
|
32
|
+
## Use Cases
|
|
33
|
+
|
|
34
|
+
**Vigor is useful when:**
|
|
35
|
+
|
|
36
|
+
- Your API frequently returns 429 (Too Many Requests)
|
|
37
|
+
- You need automatic retry with exponential backoff
|
|
38
|
+
- You want concurrency control for batch requests
|
|
39
|
+
- You prefer immutable request builders
|
|
40
|
+
|
|
21
41
|
## 🛠️ API References
|
|
22
42
|
|
|
23
|
-
1. **
|
|
43
|
+
1. **vigor.fetch(origin)**
|
|
24
44
|
|
|
25
45
|
| Method | Type | Default | Description
|
|
26
46
|
| :--- | :--- | :--- | :--- |
|
|
27
47
|
| .path(arg) | string | "" | Sets the endpoint path to be appended to the origin. |
|
|
28
48
|
| .query(arg) | Record<string, any> | {} | Appends key-value pairs as query parameters to the URL. |
|
|
49
|
+
| .method(arg) | string | "POST" | "GET" (depends on body) | Sets the HTTP request method. |
|
|
29
50
|
| .headers(arg) | Record<string, string> | {} | Sets the HTTP request headers. |
|
|
30
51
|
| .body(arg) | any | null | Sets the request body |
|
|
31
52
|
| .offset(arg) | RequestInit | {} | Provides raw fetch options to be merged into the request. |
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -53,7 +53,11 @@ class VigorFetch {
|
|
|
53
53
|
url: this._origin, status: 0, message: "Invalid Protocol"
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
-
const
|
|
56
|
+
const originBase = this._origin.endsWith('/') ? this._origin : this._origin + '/';
|
|
57
|
+
const cleanPath = path.replace(/^\//, "");
|
|
58
|
+
const urlObj = cleanPath
|
|
59
|
+
? new URL(cleanPath, originBase)
|
|
60
|
+
: new URL(this._origin);
|
|
57
61
|
Object.entries(query).forEach(([key, value]) => {
|
|
58
62
|
if (value !== null && value !== undefined)
|
|
59
63
|
urlObj.searchParams.append(key, String(value));
|
package/dist/index.mjs
CHANGED
|
@@ -51,7 +51,11 @@ class VigorFetch {
|
|
|
51
51
|
url: this._origin, status: 0, message: "Invalid Protocol"
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
const
|
|
54
|
+
const originBase = this._origin.endsWith('/') ? this._origin : this._origin + '/';
|
|
55
|
+
const cleanPath = path.replace(/^\//, "");
|
|
56
|
+
const urlObj = cleanPath
|
|
57
|
+
? new URL(cleanPath, originBase)
|
|
58
|
+
: new URL(this._origin);
|
|
55
59
|
Object.entries(query).forEach(([key, value]) => {
|
|
56
60
|
if (value !== null && value !== undefined)
|
|
57
61
|
urlObj.searchParams.append(key, String(value));
|
package/package.json
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vigor-fetch",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "Smart, zero-dependency HTTP client with self-healing retries for rate-limited servers.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/Uav3537/Vigor"
|
|
11
|
+
},
|
|
8
12
|
"exports": {
|
|
9
13
|
".": {
|
|
10
14
|
"types": "./dist/index.d.ts",
|
|
@@ -14,19 +18,23 @@
|
|
|
14
18
|
},
|
|
15
19
|
"scripts": {
|
|
16
20
|
"prebuild": "rimraf dist",
|
|
17
|
-
"build": "rollup -c"
|
|
21
|
+
"build": "rollup -c",
|
|
22
|
+
"save": "node commit.js"
|
|
18
23
|
},
|
|
19
24
|
"files": [
|
|
20
25
|
"dist"
|
|
21
26
|
],
|
|
22
27
|
"keywords": [
|
|
23
28
|
"fetch",
|
|
24
|
-
"
|
|
29
|
+
"fetch retry",
|
|
30
|
+
"concurrency",
|
|
25
31
|
"retry",
|
|
26
32
|
"backoff",
|
|
27
33
|
"ratelimit",
|
|
34
|
+
"hooks",
|
|
28
35
|
"typescript",
|
|
29
|
-
"zero-dependency"
|
|
36
|
+
"zero-dependency",
|
|
37
|
+
"resilient HTTP client"
|
|
30
38
|
],
|
|
31
39
|
"author": "Uav1010",
|
|
32
40
|
"license": "MIT",
|