@foundatiofx/fetchclient 1.1.0 → 1.1.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.
@@ -73,6 +73,13 @@ export function getCurrentProvider() {
73
73
  }
74
74
  return getCurrentProviderFunc() ?? defaultProvider;
75
75
  }
76
+ /**
77
+ * Gets the cache from the current provider.
78
+ * @returns The FetchClientCache instance.
79
+ */
80
+ export function getCache() {
81
+ return getCurrentProvider().cache;
82
+ }
76
83
  /**
77
84
  * Sets the function that retrieves the current FetchClientProvider using whatever scoping mechanism is available.
78
85
  * @param getProviderFunc - The function that retrieves the current FetchClientProvider.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foundatiofx/fetchclient",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "A typed JSON fetch client with middleware support for Deno, Node and the browser.",
5
5
  "keywords": [
6
6
  "Fetch",
package/readme.md CHANGED
@@ -14,7 +14,7 @@ handling.
14
14
 
15
15
  - **Typed JSON helpers** - `getJSON`, `postJSON`, `putJSON`, `patchJSON`,
16
16
  `deleteJSON`
17
- - **Two API styles** - Functional (no classes) or class-based - your choice
17
+ - **Two API styles** - Functional or class-based - your choice
18
18
  - **Response caching** - TTL-based caching with tags for grouped invalidation
19
19
  - **Middleware** - Intercept requests/responses for logging, auth, transforms
20
20
  - **Rate limiting** - Per-domain rate limits with automatic header detection
@@ -33,15 +33,13 @@ npm install @foundatiofx/fetchclient
33
33
 
34
34
  FetchClient works two ways - pick whichever style you prefer:
35
35
 
36
- ### Functional API (no classes)
36
+ ### Functional API
37
37
 
38
38
  ```ts
39
39
  import { getJSON, postJSON, setBaseUrl } from "@foundatiofx/fetchclient";
40
40
 
41
- // Optional: configure once at startup
42
41
  setBaseUrl("https://api.example.com");
43
42
 
44
- // Use simple functions anywhere
45
43
  const { data: users } = await getJSON<User[]>("/users");
46
44
  const { data: created } = await postJSON<User>("/users", { name: "Alice" });
47
45
  ```
@@ -69,9 +67,6 @@ const client = new FetchClient({ baseUrl: "https://api.example.com" });
69
67
  const { data } = await client.getJSON<User[]>("/users");
70
68
  ```
71
69
 
72
- All styles share the same configuration - the functional API wraps a
73
- [default provider](https://fetchclient.foundatio.dev/guide/provider#default-provider).
74
-
75
70
  ## Caching
76
71
 
77
72
  ```ts
@@ -112,12 +107,11 @@ usePerDomainRateLimit({
112
107
  ## Circuit Breaker
113
108
 
114
109
  ```ts
115
- import { FetchClientProvider } from "@foundatiofx/fetchclient";
110
+ import { useCircuitBreaker } from "@foundatiofx/fetchclient";
116
111
 
117
- const provider = new FetchClientProvider();
118
- provider.useCircuitBreaker({
119
- failureThreshold: 5, // Open after 5 failures
120
- openDurationMs: 30000, // Stay open for 30 seconds
112
+ useCircuitBreaker({
113
+ failureThreshold: 5,
114
+ openDurationMs: 30000,
121
115
  });
122
116
 
123
117
  // When API fails repeatedly, circuit opens
@@ -133,10 +127,9 @@ import { MockRegistry } from "@foundatiofx/fetchclient/mocks";
133
127
  const mocks = new MockRegistry();
134
128
  mocks.onGet("/api/users").reply(200, [{ id: 1, name: "Alice" }]);
135
129
 
136
- const provider = new FetchClientProvider();
137
- mocks.install(provider);
130
+ const client = new FetchClient();
131
+ mocks.install(client);
138
132
 
139
- const client = provider.getFetchClient();
140
133
  const { data } = await client.getJSON("/api/users");
141
134
  // data = [{ id: 1, name: "Alice" }]
142
135
  ```
@@ -7,6 +7,7 @@ exports.putJSON = putJSON;
7
7
  exports.patchJSON = patchJSON;
8
8
  exports.deleteJSON = deleteJSON;
9
9
  exports.getCurrentProvider = getCurrentProvider;
10
+ exports.getCache = getCache;
10
11
  exports.setCurrentProviderFunc = setCurrentProviderFunc;
11
12
  exports.setBaseUrl = setBaseUrl;
12
13
  exports.setAccessTokenFunc = setAccessTokenFunc;
@@ -92,6 +93,13 @@ function getCurrentProvider() {
92
93
  }
93
94
  return getCurrentProviderFunc() ?? FetchClientProvider_js_1.defaultInstance;
94
95
  }
96
+ /**
97
+ * Gets the cache from the current provider.
98
+ * @returns The FetchClientCache instance.
99
+ */
100
+ function getCache() {
101
+ return getCurrentProvider().cache;
102
+ }
95
103
  /**
96
104
  * Sets the function that retrieves the current FetchClientProvider using whatever scoping mechanism is available.
97
105
  * @param getProviderFunc - The function that retrieves the current FetchClientProvider.
@@ -1,4 +1,5 @@
1
1
  import type { FetchClient } from "./FetchClient.js";
2
+ import type { FetchClientCache } from "./FetchClientCache.js";
2
3
  import type { FetchClientMiddleware } from "./FetchClientMiddleware.js";
3
4
  import type { FetchClientOptions } from "./FetchClientOptions.js";
4
5
  import { type FetchClientProvider } from "./FetchClientProvider.js";
@@ -63,6 +64,11 @@ export declare function deleteJSON<T>(url: string, options?: RequestOptions): Pr
63
64
  * @returns The current FetchClientProvider.
64
65
  */
65
66
  export declare function getCurrentProvider(): FetchClientProvider;
67
+ /**
68
+ * Gets the cache from the current provider.
69
+ * @returns The FetchClientCache instance.
70
+ */
71
+ export declare function getCache(): FetchClientCache;
66
72
  /**
67
73
  * Sets the function that retrieves the current FetchClientProvider using whatever scoping mechanism is available.
68
74
  * @param getProviderFunc - The function that retrieves the current FetchClientProvider.
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultHelpers.d.ts","sourceRoot":"","sources":["../../src/src/DefaultHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DefaultHelpers.d.ts","sourceRoot":"","sources":["../../src/src/DefaultHelpers.ts"],"names":[],"mappings":"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"}