@foundatiofx/fetchclient 0.47.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 +5 -0
  2. package/esm/package.json +3 -0
  3. package/esm/src/Counter.js +36 -0
  4. package/esm/src/DefaultHelpers.js +132 -0
  5. package/esm/src/FetchClient.js +543 -0
  6. package/esm/src/FetchClientCache.js +88 -0
  7. package/esm/src/FetchClientContext.js +1 -0
  8. package/esm/src/FetchClientMiddleware.js +1 -0
  9. package/esm/src/FetchClientOptions.js +1 -0
  10. package/esm/src/FetchClientProvider.js +200 -0
  11. package/esm/src/FetchClientResponse.js +1 -0
  12. package/esm/src/LinkHeader.js +70 -0
  13. package/esm/src/ObjectEvent.js +15 -0
  14. package/esm/src/ProblemDetails.js +47 -0
  15. package/esm/src/RateLimitMiddleware.js +115 -0
  16. package/esm/src/RateLimiter.js +347 -0
  17. package/esm/src/RequestOptions.js +1 -0
  18. package/license +20 -0
  19. package/package.json +50 -0
  20. package/readme.md +303 -0
  21. package/script/mod.js +27 -0
  22. package/script/package.json +3 -0
  23. package/script/src/Counter.js +40 -0
  24. package/script/src/DefaultHelpers.js +149 -0
  25. package/script/src/FetchClient.js +547 -0
  26. package/script/src/FetchClientCache.js +92 -0
  27. package/script/src/FetchClientContext.js +2 -0
  28. package/script/src/FetchClientMiddleware.js +2 -0
  29. package/script/src/FetchClientOptions.js +2 -0
  30. package/script/src/FetchClientProvider.js +204 -0
  31. package/script/src/FetchClientResponse.js +2 -0
  32. package/script/src/LinkHeader.js +72 -0
  33. package/script/src/ObjectEvent.js +19 -0
  34. package/script/src/ProblemDetails.js +51 -0
  35. package/script/src/RateLimitMiddleware.js +120 -0
  36. package/script/src/RateLimiter.js +356 -0
  37. package/script/src/RequestOptions.js +2 -0
  38. package/types/_dnt.test_shims.d.ts.map +1 -0
  39. package/types/deps/jsr.io/@std/assert/1.0.14/almost_equals.d.ts.map +1 -0
  40. package/types/deps/jsr.io/@std/assert/1.0.14/array_includes.d.ts.map +1 -0
  41. package/types/deps/jsr.io/@std/assert/1.0.14/assert.d.ts.map +1 -0
  42. package/types/deps/jsr.io/@std/assert/1.0.14/assertion_error.d.ts.map +1 -0
  43. package/types/deps/jsr.io/@std/assert/1.0.14/equal.d.ts.map +1 -0
  44. package/types/deps/jsr.io/@std/assert/1.0.14/equals.d.ts.map +1 -0
  45. package/types/deps/jsr.io/@std/assert/1.0.14/exists.d.ts.map +1 -0
  46. package/types/deps/jsr.io/@std/assert/1.0.14/fail.d.ts.map +1 -0
  47. package/types/deps/jsr.io/@std/assert/1.0.14/false.d.ts.map +1 -0
  48. package/types/deps/jsr.io/@std/assert/1.0.14/greater.d.ts.map +1 -0
  49. package/types/deps/jsr.io/@std/assert/1.0.14/greater_or_equal.d.ts.map +1 -0
  50. package/types/deps/jsr.io/@std/assert/1.0.14/instance_of.d.ts.map +1 -0
  51. package/types/deps/jsr.io/@std/assert/1.0.14/is_error.d.ts.map +1 -0
  52. package/types/deps/jsr.io/@std/assert/1.0.14/less.d.ts.map +1 -0
  53. package/types/deps/jsr.io/@std/assert/1.0.14/less_or_equal.d.ts.map +1 -0
  54. package/types/deps/jsr.io/@std/assert/1.0.14/match.d.ts.map +1 -0
  55. package/types/deps/jsr.io/@std/assert/1.0.14/mod.d.ts.map +1 -0
  56. package/types/deps/jsr.io/@std/assert/1.0.14/not_equals.d.ts.map +1 -0
  57. package/types/deps/jsr.io/@std/assert/1.0.14/not_instance_of.d.ts.map +1 -0
  58. package/types/deps/jsr.io/@std/assert/1.0.14/not_match.d.ts.map +1 -0
  59. package/types/deps/jsr.io/@std/assert/1.0.14/not_strict_equals.d.ts.map +1 -0
  60. package/types/deps/jsr.io/@std/assert/1.0.14/object_match.d.ts.map +1 -0
  61. package/types/deps/jsr.io/@std/assert/1.0.14/rejects.d.ts.map +1 -0
  62. package/types/deps/jsr.io/@std/assert/1.0.14/strict_equals.d.ts.map +1 -0
  63. package/types/deps/jsr.io/@std/assert/1.0.14/string_includes.d.ts.map +1 -0
  64. package/types/deps/jsr.io/@std/assert/1.0.14/throws.d.ts.map +1 -0
  65. package/types/deps/jsr.io/@std/assert/1.0.14/unimplemented.d.ts.map +1 -0
  66. package/types/deps/jsr.io/@std/assert/1.0.14/unreachable.d.ts.map +1 -0
  67. package/types/deps/jsr.io/@std/internal/1.0.10/build_message.d.ts.map +1 -0
  68. package/types/deps/jsr.io/@std/internal/1.0.10/diff.d.ts.map +1 -0
  69. package/types/deps/jsr.io/@std/internal/1.0.10/diff_str.d.ts.map +1 -0
  70. package/types/deps/jsr.io/@std/internal/1.0.10/format.d.ts.map +1 -0
  71. package/types/deps/jsr.io/@std/internal/1.0.10/styles.d.ts.map +1 -0
  72. package/types/deps/jsr.io/@std/internal/1.0.10/types.d.ts.map +1 -0
  73. package/types/mod.d.ts +11 -0
  74. package/types/mod.d.ts.map +1 -0
  75. package/types/src/Counter.d.ts +27 -0
  76. package/types/src/Counter.d.ts.map +1 -0
  77. package/types/src/DefaultHelpers.d.ts +106 -0
  78. package/types/src/DefaultHelpers.d.ts.map +1 -0
  79. package/types/src/FetchClient.d.ts +156 -0
  80. package/types/src/FetchClient.d.ts.map +1 -0
  81. package/types/src/FetchClient.test.d.ts.map +1 -0
  82. package/types/src/FetchClientCache.d.ts +62 -0
  83. package/types/src/FetchClientCache.d.ts.map +1 -0
  84. package/types/src/FetchClientContext.d.ts +8 -0
  85. package/types/src/FetchClientContext.d.ts.map +1 -0
  86. package/types/src/FetchClientMiddleware.d.ts +9 -0
  87. package/types/src/FetchClientMiddleware.d.ts.map +1 -0
  88. package/types/src/FetchClientOptions.d.ts +53 -0
  89. package/types/src/FetchClientOptions.d.ts.map +1 -0
  90. package/types/src/FetchClientProvider.d.ts +109 -0
  91. package/types/src/FetchClientProvider.d.ts.map +1 -0
  92. package/types/src/FetchClientResponse.d.ts +29 -0
  93. package/types/src/FetchClientResponse.d.ts.map +1 -0
  94. package/types/src/LinkHeader.d.ts +15 -0
  95. package/types/src/LinkHeader.d.ts.map +1 -0
  96. package/types/src/ObjectEvent.d.ts +20 -0
  97. package/types/src/ObjectEvent.d.ts.map +1 -0
  98. package/types/src/ProblemDetails.d.ts +43 -0
  99. package/types/src/ProblemDetails.d.ts.map +1 -0
  100. package/types/src/RateLimit.test.d.ts.map +1 -0
  101. package/types/src/RateLimitMiddleware.d.ts +50 -0
  102. package/types/src/RateLimitMiddleware.d.ts.map +1 -0
  103. package/types/src/RateLimiter.d.ts +179 -0
  104. package/types/src/RateLimiter.d.ts.map +1 -0
  105. package/types/src/RequestOptions.d.ts +64 -0
  106. package/types/src/RequestOptions.d.ts.map +1 -0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Represents a problem details object.
3
+ */
4
+ export declare class ProblemDetails implements Record<string, unknown> {
5
+ [key: string]: unknown;
6
+ /**
7
+ * The type of the problem details.
8
+ */
9
+ type?: string;
10
+ /**
11
+ * The title of the problem details.
12
+ */
13
+ title?: string;
14
+ /**
15
+ * The HTTP status code of the problem details.
16
+ */
17
+ status?: number;
18
+ /**
19
+ * Additional details about the problem.
20
+ */
21
+ detail?: string;
22
+ /**
23
+ * The URI of the specific occurrence of the problem.
24
+ */
25
+ instance?: string;
26
+ /**
27
+ * Represents the errors associated with a problem details response.
28
+ */
29
+ errors: Record<string, string[] | undefined>;
30
+ /**
31
+ * Clears the error with the specified name.
32
+ * @param name - The name of the error to clear.
33
+ * @returns The updated ProblemDetails instance.
34
+ */
35
+ clear(name: string): ProblemDetails;
36
+ /**
37
+ * Sets the error message for the general error.
38
+ * @param message - The error message to set.
39
+ * @returns The updated ProblemDetails instance.
40
+ */
41
+ setErrorMessage(message: string): ProblemDetails;
42
+ }
43
+ //# sourceMappingURL=ProblemDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProblemDetails.d.ts","sourceRoot":"","sources":["../../src/src/ProblemDetails.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAM;IAElD;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAKnC;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAIjD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimit.test.d.ts","sourceRoot":"","sources":["../../src/src/RateLimit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import type { FetchClientMiddleware } from "./FetchClientMiddleware.js";
2
+ import { RateLimiter, type RateLimiterOptions } from "./RateLimiter.js";
3
+ /**
4
+ * Rate limiting error thrown when requests exceed the rate limit.
5
+ */
6
+ export declare class RateLimitError extends Error {
7
+ readonly resetTime: number;
8
+ readonly remainingRequests: number;
9
+ constructor(resetTime: number, remainingRequests: number, message?: string);
10
+ }
11
+ /**
12
+ * Configuration options for the rate limiting middleware.
13
+ */
14
+ export interface RateLimitMiddlewareOptions extends RateLimiterOptions {
15
+ /**
16
+ * Whether to throw an error when rate limit is exceeded.
17
+ * If false, the middleware will set a 429 status response.
18
+ * @default true
19
+ */
20
+ throwOnRateLimit?: boolean;
21
+ /**
22
+ * Custom error message when rate limit is exceeded.
23
+ */
24
+ errorMessage?: string;
25
+ /**
26
+ * Whether to automatically update rate limits based on response headers.
27
+ * @default true
28
+ */
29
+ autoUpdateFromHeaders?: boolean;
30
+ }
31
+ /**
32
+ * Rate limiting middleware instance that can be shared across requests.
33
+ */
34
+ export declare class RateLimitMiddleware {
35
+ #private;
36
+ private readonly throwOnRateLimit;
37
+ private readonly errorMessage?;
38
+ private readonly autoUpdateFromHeaders;
39
+ constructor(options: RateLimitMiddlewareOptions);
40
+ /**
41
+ * Gets the underlying rate limiter instance.
42
+ */
43
+ get rateLimiter(): RateLimiter;
44
+ /**
45
+ * Creates the middleware function.
46
+ * @returns The middleware function
47
+ */
48
+ middleware(): FetchClientMiddleware;
49
+ }
50
+ //# sourceMappingURL=RateLimitMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimitMiddleware.d.ts","sourceRoot":"","sources":["../../src/src/RateLimitMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,EAGL,WAAW,EACX,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;gBAE9B,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAW3E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,mBAAmB;;IAG9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;gBAEpC,OAAO,EAAE,0BAA0B;IAO/C;;OAEG;IACH,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED;;;OAGG;IACI,UAAU,IAAI,qBAAqB;CA8F3C"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Per-group rate limiter options that can override the global options.
3
+ */
4
+ export interface GroupRateLimiterOptions {
5
+ /**
6
+ * Maximum number of requests allowed per time window for this group.
7
+ */
8
+ maxRequests?: number;
9
+ /**
10
+ * Time window in milliseconds for this group.
11
+ */
12
+ windowSeconds?: number;
13
+ /**
14
+ * Callback function called when rate limit is exceeded for this group.
15
+ * @param resetTime - Time when the rate limit will reset (in milliseconds since epoch)
16
+ */
17
+ onRateLimitExceeded?: (resetTime: number) => void;
18
+ }
19
+ /**
20
+ * Configuration options for the rate limiter.
21
+ */
22
+ export interface RateLimiterOptions {
23
+ /**
24
+ * Maximum number of requests allowed per time window.
25
+ */
26
+ maxRequests: number;
27
+ /**
28
+ * Time window in seconds.
29
+ */
30
+ windowSeconds: number;
31
+ /**
32
+ * Optional group generator function to create unique rate limit buckets.
33
+ * If not provided, a global rate limit is applied.
34
+ * @param url - The request URL
35
+ * @returns A string group to identify the rate limit bucket
36
+ */
37
+ getGroupFunc?: (url: string) => string;
38
+ /**
39
+ * Callback function called when rate limit is exceeded.
40
+ * @param resetTime - Time when the rate limit will reset (in milliseconds since epoch)
41
+ */
42
+ onRateLimitExceeded?: (resetTime: number) => void;
43
+ /**
44
+ * Optional group-specific rate limit options.
45
+ * Map of group keys to their specific rate limit options.
46
+ */
47
+ groups?: Record<string, GroupRateLimiterOptions>;
48
+ }
49
+ /**
50
+ * A rate limiter that tracks requests per time window.
51
+ */
52
+ export declare class RateLimiter {
53
+ private readonly options;
54
+ private readonly buckets;
55
+ private readonly groupOptions;
56
+ constructor(options: RateLimiterOptions);
57
+ /**
58
+ * Checks if a request is allowed and updates the rate limit state.
59
+ * @param url - The request URL
60
+ * @returns True if the request is allowed, false if rate limit is exceeded
61
+ */
62
+ isAllowed(url: string): boolean;
63
+ /**
64
+ * Gets the current request count for a specific key.
65
+ * @param url - The request URL
66
+ * @returns The current number of requests in the time window
67
+ */
68
+ getRequestCount(url: string): number;
69
+ /**
70
+ * Gets the remaining requests allowed for a specific key.
71
+ * @param url - The request URL
72
+ * @returns The number of remaining requests allowed
73
+ */
74
+ getRemainingRequests(url: string): number;
75
+ /**
76
+ * Gets the time when the rate limit will reset for a specific key.
77
+ * @param url - The request URL
78
+ * @returns The reset time in milliseconds since epoch, or null if no bucket exists
79
+ */
80
+ getResetTime(url: string): number | null;
81
+ /**
82
+ * Clears the rate limit state for a specific key.
83
+ * @param url - The request URL
84
+ */
85
+ clearBucket(url: string): void;
86
+ /**
87
+ * Gets the group key for a URL.
88
+ * @param url - The request URL
89
+ * @returns The group key
90
+ */
91
+ getGroup(url: string): string;
92
+ /**
93
+ * Gets the options for a specific group. Falls back to global options if not set.
94
+ * @param group - The group key
95
+ * @returns The options for the group
96
+ */
97
+ getGroupOptions(group: string): GroupRateLimiterOptions;
98
+ /**
99
+ * Checks if a group has specific options set.
100
+ * @param group - The group key
101
+ * @returns True if the group has options, false otherwise
102
+ */
103
+ hasGroupOptions(group: string): boolean;
104
+ /**
105
+ * Sets options for a specific group.
106
+ * @param group - The group key
107
+ * @param options - The options to set
108
+ */
109
+ setGroupOptions(group: string, options: GroupRateLimiterOptions): void;
110
+ /**
111
+ * Sets rate limit options for a request.
112
+ * @param url - The request URL
113
+ * @param options - The options to set for this group
114
+ */
115
+ setOptionsForRequest(url: string, options: GroupRateLimiterOptions): void;
116
+ /**
117
+ * Updates rate limit options for a request based on standard rate limit headers.
118
+ * @param url - The request URL
119
+ * @param method - The HTTP method
120
+ * @param headers - The response headers containing rate limit information
121
+ */
122
+ updateFromHeadersForRequest(url: string, headers: Headers): void;
123
+ /**
124
+ * Updates rate limit options based on standard rate limit headers.
125
+ * @param group - The group key
126
+ * @param headers - The response headers containing rate limit information
127
+ */
128
+ updateFromHeaders(group: string, headers: Headers): void;
129
+ /**
130
+ * Clears all rate limit state.
131
+ */
132
+ clearAll(): void;
133
+ }
134
+ /**
135
+ * Creates a group generator function that groups requests by domain only (no protocol).
136
+ * @param url - The request URL
137
+ * @returns A string representing the domain without protocol
138
+ */
139
+ export declare function groupByDomain(url: string): string;
140
+ /**
141
+ * IETF rate limit header information structure.
142
+ */
143
+ export interface RateLimitInfo {
144
+ /** The policy name/identifier */
145
+ policy: string;
146
+ /** Maximum requests allowed (quota) */
147
+ limit: number;
148
+ /** Remaining requests */
149
+ remaining: number;
150
+ /** Reset time in seconds from now */
151
+ resetSeconds: number;
152
+ /** Window duration in seconds */
153
+ windowSeconds?: number;
154
+ }
155
+ /**
156
+ * Creates an IETF standard RateLimit header value.
157
+ * @param info - The rate limit information
158
+ * @returns The formatted RateLimit header value
159
+ */
160
+ export declare function buildRateLimitHeader(info: Omit<RateLimitInfo, "limit" | "windowSeconds">): string;
161
+ /**
162
+ * Creates an IETF standard RateLimit-Policy header value.
163
+ * @param info - The rate limit information
164
+ * @returns The formatted RateLimit-Policy header value
165
+ */
166
+ export declare function buildRateLimitPolicyHeader(info: Omit<RateLimitInfo, "remaining" | "resetSeconds">): string;
167
+ /**
168
+ * Parses an IETF standard RateLimit header value.
169
+ * @param headerValue - The RateLimit header value to parse
170
+ * @returns The parsed rate limit information or null if invalid
171
+ */
172
+ export declare function parseRateLimitHeader(headerValue: string): Partial<RateLimitInfo> | null;
173
+ /**
174
+ * Parses an IETF standard RateLimit-Policy header value.
175
+ * @param headerValue - The RateLimit-Policy header value to parse
176
+ * @returns The parsed rate limit policy information or null if invalid
177
+ */
178
+ export declare function parseRateLimitPolicyHeader(headerValue: string): Partial<RateLimitInfo> | null;
179
+ //# sourceMappingURL=RateLimiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/src/RateLimiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { CacheKey } from "./FetchClientCache.js";
2
+ import type { FetchClientResponse } from "./FetchClientResponse.js";
3
+ /**
4
+ * Represents the options for making a request using the FetchClient.
5
+ */
6
+ export type RequestOptions = {
7
+ /**
8
+ * Specifies whether the model should be validated before making the request.
9
+ */
10
+ shouldValidateModel?: boolean;
11
+ /**
12
+ * Additional parameters to be included in the request.
13
+ */
14
+ params?: Record<string, unknown>;
15
+ /**
16
+ * By default, the client will throw an error on non-successful and unexpected status codes (outside of 200-299). Use this option to disable that behavior off.
17
+ */
18
+ shouldThrowOnUnexpectedStatusCodes?: boolean;
19
+ /**
20
+ * By default, non-successful status codes (outside of 200-299) will throw an error. Any status code that you wish to
21
+ * handle manually instead of an error being thrown should be included here.
22
+ */
23
+ expectedStatusCodes?: number[];
24
+ /**
25
+ * Additional headers to be included in the request.
26
+ */
27
+ headers?: Record<string, string>;
28
+ /**
29
+ * A callback function to handle non-expected errors that occur during the request. By default, non-successful status
30
+ * codes (outside of 200-299) are considered errors and will throw. If the callback returns true, the error will
31
+ * be treated as handled and ignored. If the callback returns false or doesn't return a value, the error will be thrown.
32
+ */
33
+ errorCallback?: (error: FetchClientResponse<unknown>) => boolean | void;
34
+ /**
35
+ * Timeout duration for the request in milliseconds. If the request takes longer than this duration, it will be aborted and will throw an error.
36
+ */
37
+ timeout?: number;
38
+ /**
39
+ * An AbortSignal object that can be used to cancel the request.
40
+ */
41
+ signal?: AbortSignal;
42
+ /**
43
+ * Specifies whether the JSON parsing should convert strings that look like dates into Date instances.
44
+ */
45
+ shouldParseDates?: boolean;
46
+ /**
47
+ * Specifies a reviver function to use for JSON response parsing.
48
+ */
49
+ reviver?: (this: unknown, key: string, value: unknown) => unknown;
50
+ } & Record<string, unknown>;
51
+ /**
52
+ * Represents the options for a GET request.
53
+ */
54
+ export type GetRequestOptions = RequestOptions & {
55
+ /**
56
+ * The cache key for the request.
57
+ */
58
+ cacheKey?: CacheKey;
59
+ /**
60
+ * The duration for which the response should be cached, in milliseconds.
61
+ */
62
+ cacheDuration?: number;
63
+ };
64
+ //# sourceMappingURL=RequestOptions.d.ts.map
@@ -0,0 +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"}