@foundatiofx/fetchclient 1.0.0 → 1.1.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.
Files changed (106) hide show
  1. package/esm/mod.js +3 -1
  2. package/esm/src/CircuitBreaker.js +356 -0
  3. package/esm/src/CircuitBreakerMiddleware.js +167 -0
  4. package/esm/src/DefaultHelpers.js +16 -0
  5. package/esm/src/FetchClient.js +8 -6
  6. package/esm/src/FetchClientCache.js +85 -8
  7. package/esm/src/FetchClientProvider.js +58 -3
  8. package/esm/src/mocks/MockHistory.js +63 -0
  9. package/esm/src/mocks/MockRegistry.js +267 -0
  10. package/esm/src/mocks/MockResponseBuilder.js +88 -0
  11. package/esm/src/mocks/mod.js +24 -0
  12. package/esm/src/mocks/types.js +1 -0
  13. package/package.json +12 -2
  14. package/readme.md +88 -233
  15. package/script/mod.js +9 -1
  16. package/script/src/CircuitBreaker.js +361 -0
  17. package/script/src/CircuitBreakerMiddleware.js +174 -0
  18. package/script/src/DefaultHelpers.js +18 -0
  19. package/script/src/FetchClient.js +8 -6
  20. package/script/src/FetchClientCache.js +85 -8
  21. package/script/src/FetchClientProvider.js +58 -3
  22. package/script/src/mocks/MockHistory.js +67 -0
  23. package/script/src/mocks/MockRegistry.js +271 -0
  24. package/script/src/mocks/MockResponseBuilder.js +92 -0
  25. package/script/src/mocks/mod.js +29 -0
  26. package/script/src/mocks/types.js +2 -0
  27. package/types/deps/jsr.io/@std/assert/1.0.18/almost_equals.d.ts.map +1 -0
  28. package/types/deps/jsr.io/@std/assert/1.0.18/array_includes.d.ts.map +1 -0
  29. package/types/deps/jsr.io/@std/assert/1.0.18/assert.d.ts.map +1 -0
  30. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/assertion_error.d.ts.map +1 -1
  31. package/types/deps/jsr.io/@std/assert/1.0.18/equal.d.ts.map +1 -0
  32. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/equals.d.ts.map +1 -1
  33. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/exists.d.ts.map +1 -1
  34. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/fail.d.ts.map +1 -1
  35. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/false.d.ts.map +1 -1
  36. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/greater.d.ts.map +1 -1
  37. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/greater_or_equal.d.ts.map +1 -1
  38. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/instance_of.d.ts.map +1 -1
  39. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/is_error.d.ts.map +1 -1
  40. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/less.d.ts.map +1 -1
  41. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/less_or_equal.d.ts.map +1 -1
  42. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/match.d.ts.map +1 -1
  43. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/mod.d.ts.map +1 -1
  44. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/not_equals.d.ts.map +1 -1
  45. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/not_instance_of.d.ts.map +1 -1
  46. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/not_match.d.ts.map +1 -1
  47. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/not_strict_equals.d.ts.map +1 -1
  48. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/object_match.d.ts.map +1 -1
  49. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/rejects.d.ts.map +1 -1
  50. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/strict_equals.d.ts.map +1 -1
  51. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/string_includes.d.ts.map +1 -1
  52. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/throws.d.ts.map +1 -1
  53. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/unimplemented.d.ts.map +1 -1
  54. package/types/deps/jsr.io/@std/assert/{1.0.14 → 1.0.18}/unreachable.d.ts.map +1 -1
  55. package/types/deps/jsr.io/@std/internal/1.0.12/build_message.d.ts.map +1 -0
  56. package/types/deps/jsr.io/@std/internal/{1.0.10 → 1.0.12}/diff.d.ts.map +1 -1
  57. package/types/deps/jsr.io/@std/internal/1.0.12/diff_str.d.ts.map +1 -0
  58. package/types/deps/jsr.io/@std/internal/{1.0.10 → 1.0.12}/format.d.ts.map +1 -1
  59. package/types/deps/jsr.io/@std/internal/{1.0.10 → 1.0.12}/styles.d.ts.map +1 -1
  60. package/types/deps/jsr.io/@std/internal/1.0.12/types.d.ts.map +1 -0
  61. package/types/mod.d.ts +3 -1
  62. package/types/mod.d.ts.map +1 -1
  63. package/types/src/CircuitBreaker.d.ts +154 -0
  64. package/types/src/CircuitBreaker.d.ts.map +1 -0
  65. package/types/src/CircuitBreakerMiddleware.d.ts +93 -0
  66. package/types/src/CircuitBreakerMiddleware.d.ts.map +1 -0
  67. package/types/src/DefaultHelpers.d.ts +13 -0
  68. package/types/src/DefaultHelpers.d.ts.map +1 -1
  69. package/types/src/FetchClient.d.ts.map +1 -1
  70. package/types/src/FetchClientCache.d.ts +26 -1
  71. package/types/src/FetchClientCache.d.ts.map +1 -1
  72. package/types/src/FetchClientProvider.d.ts +24 -0
  73. package/types/src/FetchClientProvider.d.ts.map +1 -1
  74. package/types/src/RequestOptions.d.ts +6 -1
  75. package/types/src/RequestOptions.d.ts.map +1 -1
  76. package/types/src/mocks/MockHistory.d.ts +22 -0
  77. package/types/src/mocks/MockHistory.d.ts.map +1 -0
  78. package/types/src/mocks/MockRegistry.d.ts +113 -0
  79. package/types/src/mocks/MockRegistry.d.ts.map +1 -0
  80. package/types/src/mocks/MockResponseBuilder.d.ts +60 -0
  81. package/types/src/mocks/MockResponseBuilder.d.ts.map +1 -0
  82. package/types/src/mocks/mod.d.ts +26 -0
  83. package/types/src/mocks/mod.d.ts.map +1 -0
  84. package/types/src/mocks/types.d.ts +47 -0
  85. package/types/src/mocks/types.d.ts.map +1 -0
  86. package/types/src/tests/Caching.test.d.ts.map +1 -0
  87. package/types/src/tests/CircuitBreaker.test.d.ts.map +1 -0
  88. package/types/src/tests/ErrorHandling.test.d.ts.map +1 -0
  89. package/types/src/tests/HttpMethods.test.d.ts.map +1 -0
  90. package/types/src/tests/Integration.test.d.ts.map +1 -0
  91. package/types/src/tests/JsonParsing.test.d.ts.map +1 -0
  92. package/types/src/tests/Middleware.test.d.ts.map +1 -0
  93. package/types/src/tests/MockRegistry.test.d.ts.map +1 -0
  94. package/types/src/tests/Provider.test.d.ts.map +1 -0
  95. package/types/src/tests/RateLimit.test.d.ts.map +1 -0
  96. package/types/src/tests/TimeoutAbort.test.d.ts.map +1 -0
  97. package/types/src/tests/UrlBuilding.test.d.ts.map +1 -0
  98. package/types/deps/jsr.io/@std/assert/1.0.14/almost_equals.d.ts.map +0 -1
  99. package/types/deps/jsr.io/@std/assert/1.0.14/array_includes.d.ts.map +0 -1
  100. package/types/deps/jsr.io/@std/assert/1.0.14/assert.d.ts.map +0 -1
  101. package/types/deps/jsr.io/@std/assert/1.0.14/equal.d.ts.map +0 -1
  102. package/types/deps/jsr.io/@std/internal/1.0.10/build_message.d.ts.map +0 -1
  103. package/types/deps/jsr.io/@std/internal/1.0.10/diff_str.d.ts.map +0 -1
  104. package/types/deps/jsr.io/@std/internal/1.0.10/types.d.ts.map +0 -1
  105. package/types/src/FetchClient.test.d.ts.map +0 -1
  106. package/types/src/RateLimit.test.d.ts.map +0 -1
@@ -2,11 +2,16 @@
2
2
  * Represents a cache key used in the FetchClientCache.
3
3
  */
4
4
  export type CacheKey = string[] | string;
5
+ /**
6
+ * Represents a cache tag used for grouping and invalidating cache entries.
7
+ */
8
+ export type CacheTag = string;
5
9
  /**
6
10
  * Represents an entry in the FetchClientCache.
7
11
  */
8
12
  type CacheEntry = {
9
13
  key: CacheKey;
14
+ tags: CacheTag[];
10
15
  lastAccess: Date;
11
16
  expires: Date;
12
17
  response: Response;
@@ -16,13 +21,15 @@ type CacheEntry = {
16
21
  */
17
22
  export declare class FetchClientCache {
18
23
  private cache;
24
+ private tagIndex;
19
25
  /**
20
26
  * Sets a response in the cache with the specified key.
21
27
  * @param key - The cache key.
22
28
  * @param response - The response to be cached.
23
29
  * @param cacheDuration - The duration for which the response should be cached (in milliseconds).
30
+ * @param tags - Optional tags for grouping and invalidating cache entries.
24
31
  */
25
- set(key: CacheKey, response: Response, cacheDuration?: number): void;
32
+ set(key: CacheKey, response: Response, cacheDuration?: number, tags?: CacheTag[]): void;
26
33
  /**
27
34
  * Retrieves a response from the cache with the specified key.
28
35
  * @param key - The cache key.
@@ -41,6 +48,23 @@ export declare class FetchClientCache {
41
48
  * @returns The number of responses that were deleted.
42
49
  */
43
50
  deleteAll(prefix: CacheKey): number;
51
+ /**
52
+ * Deletes all responses from the cache that have the specified tag.
53
+ * @param tag - The cache tag.
54
+ * @returns The number of responses that were deleted.
55
+ */
56
+ deleteByTag(tag: CacheTag): number;
57
+ /**
58
+ * Gets all tags currently in use in the cache.
59
+ * @returns An array of all cache tags.
60
+ */
61
+ getTags(): CacheTag[];
62
+ /**
63
+ * Gets the tags associated with a cache entry.
64
+ * @param key - The cache key.
65
+ * @returns The tags associated with the entry, or an empty array if not found.
66
+ */
67
+ getEntryTags(key: CacheKey): CacheTag[];
44
68
  /**
45
69
  * Checks if a response exists in the cache with the specified key.
46
70
  * @param key - The cache key.
@@ -57,6 +81,7 @@ export declare class FetchClientCache {
57
81
  */
58
82
  clear(): void;
59
83
  private getHash;
84
+ private removeTagAssociations;
60
85
  }
61
86
  export {};
62
87
  //# sourceMappingURL=FetchClientCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FetchClientCache.d.ts","sourceRoot":"","sources":["../../src/src/FetchClientCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiC;IAE9C;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAS3E;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAgB1C;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAIrC;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAc1C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAIlC;;;OAGG;IACI,MAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC;IAI7C;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,OAAO;CAOhB"}
1
+ {"version":3,"file":"FetchClientCache.d.ts","sourceRoot":"","sources":["../../src/src/FetchClientCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAoC;IAEpD;;;;;;OAMG;IACI,GAAG,CACR,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE,QAAQ,EAAE,GAChB,IAAI;IA2BP;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAkB1C;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAWrC;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAgB1C;;;;OAIG;IACI,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM;IAqBzC;;;OAGG;IACI,OAAO,IAAI,QAAQ,EAAE;IAM5B;;;;OAIG;IACI,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAK9C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAIlC;;;OAGG;IACI,MAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC;IAI7C;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,qBAAqB;CAW9B"}
@@ -7,6 +7,8 @@ import type { FetchClientOptions } from "./FetchClientOptions.js";
7
7
  import { type IObjectEvent } from "./ObjectEvent.js";
8
8
  import { type RateLimitMiddlewareOptions } from "./RateLimitMiddleware.js";
9
9
  import { type RateLimiter } from "./RateLimiter.js";
10
+ import { type CircuitBreakerMiddlewareOptions } from "./CircuitBreakerMiddleware.js";
11
+ import { type CircuitBreaker } from "./CircuitBreaker.js";
10
12
  type Fetch = typeof globalThis.fetch;
11
13
  /**
12
14
  * Represents a provider for creating instances of the FetchClient class with shared default options and cache.
@@ -103,6 +105,28 @@ export declare class FetchClientProvider {
103
105
  * Removes the rate limiting middleware from all FetchClient instances created by this provider.
104
106
  */
105
107
  removeRateLimit(): void;
108
+ /**
109
+ * Enables circuit breaker for all FetchClient instances created by this provider.
110
+ * The circuit breaker monitors failures and blocks requests when a service is failing,
111
+ * allowing time for recovery.
112
+ * @param options - The circuit breaker configuration options.
113
+ */
114
+ useCircuitBreaker(options?: CircuitBreakerMiddlewareOptions): void;
115
+ /**
116
+ * Enables per-domain circuit breaker for all FetchClient instances created by this provider.
117
+ * Each domain gets its own circuit breaker, so failures on one domain don't affect others.
118
+ * @param options - The circuit breaker configuration options.
119
+ */
120
+ usePerDomainCircuitBreaker(options?: Omit<CircuitBreakerMiddlewareOptions, "getGroupFunc">): void;
121
+ /**
122
+ * Gets the circuit breaker instance.
123
+ * @returns The circuit breaker instance, or undefined if not enabled.
124
+ */
125
+ get circuitBreaker(): CircuitBreaker | undefined;
126
+ /**
127
+ * Removes the circuit breaker middleware from all FetchClient instances created by this provider.
128
+ */
129
+ removeCircuitBreaker(): void;
106
130
  }
107
131
  export declare const defaultInstance: FetchClientProvider;
108
132
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"FetchClientProvider.d.ts","sourceRoot":"","sources":["../../src/src/FetchClientProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEnE,KAAK,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AAErC;;GAEG;AACH,qBAAa,mBAAmB;;IAQ9B;;;OAGG;gBACS,KAAK,CAAC,EAAE,KAAK;IAyBzB;;OAEG;IACH,IAAW,KAAK,IAAI,KAAK,GAAG,SAAS,CAEpC;IAED;;OAEG;IACH,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAExC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAE1C;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAE3C;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,gBAAgB,CAEnC;IAED;;;;OAIG;IACI,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAchE;;OAEG;IACI,YAAY,CAAC,OAAO,EAAE,kBAAkB;IAO/C;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI;IAO9D;;;OAGG;IACI,iBAAiB,CACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQpE;;;OAGG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM;IAO7B;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,qBAAqB;IAUtD;;;OAGG;IACI,YAAY,CAAC,OAAO,EAAE,0BAA0B;IAKvD;;;OAGG;IACI,qBAAqB,CAC1B,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,CAAC;IAS3D;;;OAGG;IACH,IAAW,WAAW,IAAI,WAAW,GAAG,SAAS,CAEhD;IAED;;OAEG;IACI,eAAe;CAMvB;AAGD,eAAO,MAAM,eAAe,EAAE,mBAA8B,CAAC"}
1
+ {"version":3,"file":"FetchClientProvider.d.ts","sourceRoot":"","sources":["../../src/src/FetchClientProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AAErC;;GAEG;AACH,qBAAa,mBAAmB;;IAW9B;;;OAGG;gBACS,KAAK,CAAC,EAAE,KAAK;IAyBzB;;OAEG;IACH,IAAW,KAAK,IAAI,KAAK,GAAG,SAAS,CAEpC;IAED;;OAEG;IACH,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAExC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAE1C;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,kBAAkB,CAEvC;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAE3C;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,gBAAgB,CAEnC;IAED;;;;OAIG;IACI,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAchE;;OAEG;IACI,YAAY,CAAC,OAAO,EAAE,kBAAkB;IAO/C;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI;IAO9D;;;OAGG;IACI,iBAAiB,CACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQpE;;;OAGG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM;IAO7B;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,qBAAqB;IAUtD;;;OAGG;IACI,YAAY,CAAC,OAAO,EAAE,0BAA0B;IAMvD;;;OAGG;IACI,qBAAqB,CAC1B,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,CAAC;IAU3D;;;OAGG;IACH,IAAW,WAAW,IAAI,WAAW,GAAG,SAAS,CAEhD;IAED;;OAEG;IACI,eAAe;IAWtB;;;;;OAKG;IACI,iBAAiB,CAAC,OAAO,CAAC,EAAE,+BAA+B;IAOlE;;;;OAIG;IACI,0BAA0B,CAC/B,OAAO,CAAC,EAAE,IAAI,CAAC,+BAA+B,EAAE,cAAc,CAAC;IAWjE;;;OAGG;IACH,IAAW,cAAc,IAAI,cAAc,GAAG,SAAS,CAEtD;IAED;;OAEG;IACI,oBAAoB;CAU5B;AAGD,eAAO,MAAM,eAAe,EAAE,mBAA8B,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CacheKey } from "./FetchClientCache.js";
1
+ import type { CacheKey, CacheTag } from "./FetchClientCache.js";
2
2
  import type { FetchClientResponse } from "./FetchClientResponse.js";
3
3
  /**
4
4
  * Represents the options for making a request using the FetchClient.
@@ -60,5 +60,10 @@ export type GetRequestOptions = RequestOptions & {
60
60
  * The duration for which the response should be cached, in milliseconds.
61
61
  */
62
62
  cacheDuration?: number;
63
+ /**
64
+ * Tags for grouping and invalidating cache entries. Multiple entries can share
65
+ * the same tag, allowing bulk invalidation via `cache.deleteByTag(tag)`.
66
+ */
67
+ cacheTags?: CacheTag[];
63
68
  };
64
69
  //# sourceMappingURL=RequestOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequestOptions.d.ts","sourceRoot":"","sources":["../../src/src/RequestOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IAExE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACnE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"RequestOptions.d.ts","sourceRoot":"","sources":["../../src/src/RequestOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IAExE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACnE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { MockHistory } from "./types.js";
2
+ /**
3
+ * Implementation of MockHistory that tracks recorded requests.
4
+ */
5
+ export declare class MockHistoryImpl implements MockHistory {
6
+ #private;
7
+ get get(): Request[];
8
+ get post(): Request[];
9
+ get put(): Request[];
10
+ get patch(): Request[];
11
+ get delete(): Request[];
12
+ get all(): Request[];
13
+ /**
14
+ * Records a request in the history.
15
+ */
16
+ record(request: Request): void;
17
+ /**
18
+ * Clears all recorded history.
19
+ */
20
+ clear(): void;
21
+ }
22
+ //# sourceMappingURL=MockHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockHistory.d.ts","sourceRoot":"","sources":["../../../src/src/mocks/MockHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;;IAQjD,IAAI,GAAG,IAAI,OAAO,EAAE,CAEnB;IAED,IAAI,IAAI,IAAI,OAAO,EAAE,CAEpB;IAED,IAAI,GAAG,IAAI,OAAO,EAAE,CAEnB;IAED,IAAI,KAAK,IAAI,OAAO,EAAE,CAErB;IAED,IAAI,MAAM,IAAI,OAAO,EAAE,CAEtB;IAED,IAAI,GAAG,IAAI,OAAO,EAAE,CAEnB;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAsB9B;;OAEG;IACH,KAAK,IAAI,IAAI;CAQd"}
@@ -0,0 +1,113 @@
1
+ import type { FetchClient } from "../FetchClient.js";
2
+ import type { FetchClientProvider } from "../FetchClientProvider.js";
3
+ import { MockResponseBuilder } from "./MockResponseBuilder.js";
4
+ import type { MockHistory } from "./types.js";
5
+ type Fetch = typeof globalThis.fetch;
6
+ /**
7
+ * A registry for defining mock responses that can be installed on a
8
+ * FetchClient or FetchClientProvider, or used as a standalone fetch replacement.
9
+ *
10
+ * @example Install on FetchClientProvider
11
+ * ```typescript
12
+ * const mocks = new MockRegistry();
13
+ * mocks.onGet('/api/users').reply(200, [{ id: 1 }]);
14
+ *
15
+ * const provider = new FetchClientProvider();
16
+ * mocks.install(provider);
17
+ *
18
+ * const client = provider.getFetchClient();
19
+ * const response = await client.getJSON('/api/users');
20
+ * ```
21
+ *
22
+ * @example Use as standalone fetch replacement
23
+ * ```typescript
24
+ * const mocks = new MockRegistry();
25
+ * mocks.onGet('/api/users').reply(200, [{ id: 1 }]);
26
+ *
27
+ * // Use directly as fetch
28
+ * const response = await mocks.fetch('/api/users');
29
+ *
30
+ * // Or pass to any library expecting a fetch function
31
+ * const client = new SomeHttpClient({ fetch: mocks.fetch });
32
+ * ```
33
+ */
34
+ export declare class MockRegistry {
35
+ #private;
36
+ /**
37
+ * Creates a mock for GET requests matching the given URL.
38
+ * @param url - URL string or RegExp to match
39
+ */
40
+ onGet(url: string | RegExp): MockResponseBuilder<MockRegistry>;
41
+ /**
42
+ * Creates a mock for POST requests matching the given URL.
43
+ * @param url - URL string or RegExp to match
44
+ */
45
+ onPost(url: string | RegExp): MockResponseBuilder<MockRegistry>;
46
+ /**
47
+ * Creates a mock for PUT requests matching the given URL.
48
+ * @param url - URL string or RegExp to match
49
+ */
50
+ onPut(url: string | RegExp): MockResponseBuilder<MockRegistry>;
51
+ /**
52
+ * Creates a mock for PATCH requests matching the given URL.
53
+ * @param url - URL string or RegExp to match
54
+ */
55
+ onPatch(url: string | RegExp): MockResponseBuilder<MockRegistry>;
56
+ /**
57
+ * Creates a mock for DELETE requests matching the given URL.
58
+ * @param url - URL string or RegExp to match
59
+ */
60
+ onDelete(url: string | RegExp): MockResponseBuilder<MockRegistry>;
61
+ /**
62
+ * Creates a mock for any HTTP method matching the given URL.
63
+ * @param url - URL string or RegExp to match
64
+ */
65
+ onAny(url: string | RegExp): MockResponseBuilder<MockRegistry>;
66
+ /**
67
+ * Installs the mock registry on a FetchClient or FetchClientProvider.
68
+ * Replaces the fetch implementation to intercept requests.
69
+ *
70
+ * @param target - The FetchClient or FetchClientProvider to install on
71
+ * @throws Error if already installed on another target
72
+ */
73
+ install(target: FetchClientProvider | FetchClient): void;
74
+ /**
75
+ * Restores the original fetch implementation.
76
+ */
77
+ restore(): void;
78
+ /**
79
+ * Gets the recorded request history.
80
+ */
81
+ get history(): MockHistory;
82
+ /**
83
+ * Gets the mock fetch function for standalone use.
84
+ * This allows using MockRegistry with any code that accepts a fetch function.
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const mocks = new MockRegistry();
89
+ * mocks.onGet('/api/data').reply(200, { value: 42 });
90
+ *
91
+ * // Use directly
92
+ * const response = await mocks.fetch('/api/data');
93
+ *
94
+ * // Or pass to other libraries
95
+ * const client = new SomeClient({ fetch: mocks.fetch });
96
+ * ```
97
+ */
98
+ get fetch(): Fetch;
99
+ /**
100
+ * Clears all mocks and history.
101
+ */
102
+ reset(): void;
103
+ /**
104
+ * Clears all mocks but keeps history.
105
+ */
106
+ resetMocks(): void;
107
+ /**
108
+ * Clears history but keeps mocks.
109
+ */
110
+ resetHistory(): void;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=MockRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockRegistry.d.ts","sourceRoot":"","sources":["../../../src/src/mocks/MockRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,KAAK,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,YAAY;;IAMvB;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC;IAI9D;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC;IAI/D;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC;IAI9D;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC;IAIhE;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC;IAIjE;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC;IAoB9D;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,GAAG,IAAI;IAyBxD;;OAEG;IACH,OAAO,IAAI,IAAI;IAkIf;;OAEG;IACH,IAAI,OAAO,IAAI,WAAW,CAEzB;IAED;;;;;;;;;;;;;;;OAeG;IACH,IAAI,KAAK,IAAI,KAAK,CAOjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,60 @@
1
+ import type { MockDefinition } from "./types.js";
2
+ /**
3
+ * Fluent builder for configuring mock responses.
4
+ * @template T The type of the registry (for chaining)
5
+ */
6
+ export declare class MockResponseBuilder<T> {
7
+ #private;
8
+ constructor(mock: MockDefinition, registry: T);
9
+ /**
10
+ * Sets the response status, data, and optional headers.
11
+ * @param status - HTTP status code
12
+ * @param data - Response data (will be JSON stringified)
13
+ * @param headers - Optional response headers
14
+ * @returns The registry for chaining
15
+ */
16
+ reply(status: number, data?: unknown, headers?: Record<string, string>): T;
17
+ /**
18
+ * Sets a one-time response that is removed after the first match.
19
+ * @param status - HTTP status code
20
+ * @param data - Response data (will be JSON stringified)
21
+ * @param headers - Optional response headers
22
+ * @returns The registry for chaining
23
+ */
24
+ replyOnce(status: number, data?: unknown, headers?: Record<string, string>): T;
25
+ /**
26
+ * Simulates a network error by throwing a TypeError.
27
+ * @param message - Error message (default: "Network error")
28
+ * @returns The registry for chaining
29
+ */
30
+ networkError(message?: string): T;
31
+ /**
32
+ * Simulates a timeout by throwing a TimeoutError.
33
+ * @returns The registry for chaining
34
+ */
35
+ timeout(): T;
36
+ /**
37
+ * Passes the request through to the real fetch implementation.
38
+ * @returns The registry for chaining
39
+ */
40
+ passthrough(): T;
41
+ /**
42
+ * Adds header matching requirements for this mock.
43
+ * @param headers - Headers that must be present and match
44
+ * @returns This builder for further configuration
45
+ */
46
+ withHeaders(headers: Record<string, string>): this;
47
+ /**
48
+ * Adds body matching requirements for this mock.
49
+ * @param body - Exact body to match, or a predicate function
50
+ * @returns This builder for further configuration
51
+ */
52
+ withBody(body: unknown | ((body: unknown) => boolean)): this;
53
+ /**
54
+ * Adds a delay before returning the response.
55
+ * @param ms - Delay in milliseconds
56
+ * @returns This builder for further configuration
57
+ */
58
+ delay(ms: number): this;
59
+ }
60
+ //# sourceMappingURL=MockResponseBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockResponseBuilder.d.ts","sourceRoot":"","sources":["../../../src/src/mocks/MockResponseBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,CAAC;;gBAIpB,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IAK7C;;;;;;OAMG;IACH,KAAK,CACH,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,CAAC;IAOJ;;;;;;OAMG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,CAAC;IAKJ;;;;OAIG;IACH,YAAY,CAAC,OAAO,SAAkB,GAAG,CAAC;IAK1C;;;OAGG;IACH,OAAO,IAAI,CAAC;IAKZ;;;OAGG;IACH,WAAW,IAAI,CAAC;IAKhB;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKlD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI;IAK5D;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAIxB"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Mock utilities for testing FetchClient.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { FetchClientProvider } from "@foundatiofx/fetchclient";
7
+ * import { MockRegistry } from "@foundatiofx/fetchclient/mocks";
8
+ *
9
+ * const mocks = new MockRegistry();
10
+ * mocks.onGet('/api/users').reply(200, [{ id: 1 }]);
11
+ *
12
+ * const provider = new FetchClientProvider();
13
+ * mocks.install(provider);
14
+ *
15
+ * const client = provider.getFetchClient();
16
+ * const response = await client.getJSON('/api/users');
17
+ *
18
+ * mocks.restore();
19
+ * ```
20
+ *
21
+ * @module
22
+ */
23
+ export { MockRegistry } from "./MockRegistry.js";
24
+ export { MockResponseBuilder } from "./MockResponseBuilder.js";
25
+ export type { MockDefinition, MockHistory } from "./types.js";
26
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/mocks/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Definition of a mock response configuration.
3
+ */
4
+ export interface MockDefinition {
5
+ /** HTTP method to match, or null for any method */
6
+ method: string | null;
7
+ /** URL pattern to match (string or RegExp) */
8
+ url: string | RegExp;
9
+ /** HTTP status code to return */
10
+ status: number;
11
+ /** Response data (will be JSON stringified) */
12
+ data?: unknown;
13
+ /** Response headers */
14
+ headers?: Record<string, string>;
15
+ /** If true, mock is removed after first match */
16
+ once: boolean;
17
+ /** If true, request passes through to real fetch */
18
+ passthrough: boolean;
19
+ /** If set, throws TypeError with this message */
20
+ networkError?: string;
21
+ /** If true, throws TimeoutError */
22
+ timeout: boolean;
23
+ /** Delay in milliseconds before returning response */
24
+ delay?: number;
25
+ /** Headers that must match for this mock to apply */
26
+ headerMatchers?: Record<string, string>;
27
+ /** Body matcher - exact match or predicate function */
28
+ bodyMatcher?: unknown | ((body: unknown) => boolean);
29
+ }
30
+ /**
31
+ * Recorded request history organized by HTTP method.
32
+ */
33
+ export interface MockHistory {
34
+ /** GET requests */
35
+ readonly get: Request[];
36
+ /** POST requests */
37
+ readonly post: Request[];
38
+ /** PUT requests */
39
+ readonly put: Request[];
40
+ /** PATCH requests */
41
+ readonly patch: Request[];
42
+ /** DELETE requests */
43
+ readonly delete: Request[];
44
+ /** All requests in order */
45
+ readonly all: Request[];
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/mocks/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iDAAiD;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,uDAAuD;IACvD,WAAW,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;IACxB,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IACzB,mBAAmB;IACnB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;CACzB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Caching.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/Caching.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircuitBreaker.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/CircuitBreaker.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorHandling.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/ErrorHandling.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpMethods.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/HttpMethods.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Integration.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/Integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonParsing.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/JsonParsing.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Middleware.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/Middleware.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockRegistry.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/MockRegistry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/Provider.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimit.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/RateLimit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeoutAbort.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/TimeoutAbort.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UrlBuilding.test.d.ts","sourceRoot":"","sources":["../../../src/src/tests/UrlBuilding.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"almost_equals.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/assert/1.0.14/almost_equals.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,QAmBb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"array_includes.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/assert/1.0.14/array_includes.ts"],"names":[],"mappings":"AAMA,0FAA0F;AAC1F,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,GAAG,CAAC,EAAE,MAAM,QAwBb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/assert/1.0.14/assert.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,SAAK,GAAG,OAAO,CAAC,IAAI,CAI5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"equal.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/assert/1.0.14/equal.ts"],"names":[],"mappings":"AA2FA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAuGrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_message.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.10/build_message.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ;AAClB;;;GAGG;AACH,UAAU,UAAQ,GACjB,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CASvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CASrD;AAED,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,OAAO,GAAE,mBAAwB,GAChC,MAAM,EAAE,CAsBV"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff_str.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.10/diff_str.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY/C;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,EAAE,CAiBnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAC3B,UAAU,CAAC,MAAM,CAAC,EAAE,CAetB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAkDlE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.10/types.ts"],"names":[],"mappings":"AAGA,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,4BAA4B;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,6BAA6B;IAC7B,KAAK,EAAE,CAAC,CAAC;IACT,+BAA+B;IAC/B,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;CAC3B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FetchClient.test.d.ts","sourceRoot":"","sources":["../../src/src/FetchClient.test.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;AAMzC,eAAO,MAAM,UAAU;;;;;;iBAMrB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RateLimit.test.d.ts","sourceRoot":"","sources":["../../src/src/RateLimit.test.ts"],"names":[],"mappings":""}