@fgrzl/fetch 1.1.0-alpha.2 → 1.1.0-alpha.7

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 (231) hide show
  1. package/README.md +31 -1090
  2. package/dist/cjs/client/fetch-client.d.ts +189 -0
  3. package/dist/cjs/client/fetch-client.d.ts.map +1 -0
  4. package/dist/cjs/client/fetch-client.js +339 -0
  5. package/dist/cjs/client/fetch-client.js.map +1 -0
  6. package/dist/cjs/client/index.d.ts +11 -0
  7. package/dist/cjs/client/index.d.ts.map +1 -0
  8. package/dist/cjs/client/index.js +14 -0
  9. package/dist/cjs/client/index.js.map +1 -0
  10. package/dist/cjs/client/types.d.ts +63 -0
  11. package/dist/cjs/client/types.d.ts.map +1 -0
  12. package/dist/cjs/client/types.js +9 -0
  13. package/dist/cjs/client/types.js.map +1 -0
  14. package/dist/{errors.d.ts → cjs/errors/index.d.ts} +20 -3
  15. package/dist/cjs/errors/index.d.ts.map +1 -0
  16. package/dist/{errors.js → cjs/errors/index.js} +23 -3
  17. package/dist/cjs/errors/index.js.map +1 -0
  18. package/dist/cjs/index.d.ts +65 -0
  19. package/dist/cjs/index.d.ts.map +1 -0
  20. package/dist/cjs/index.js +118 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/middleware/authentication/authentication.d.ts +31 -0
  23. package/dist/cjs/middleware/authentication/authentication.d.ts.map +1 -0
  24. package/dist/cjs/middleware/authentication/authentication.js +93 -0
  25. package/dist/cjs/middleware/authentication/authentication.js.map +1 -0
  26. package/dist/cjs/middleware/authentication/index.d.ts +37 -0
  27. package/dist/cjs/middleware/authentication/index.d.ts.map +1 -0
  28. package/dist/cjs/middleware/authentication/index.js +42 -0
  29. package/dist/cjs/middleware/authentication/index.js.map +1 -0
  30. package/dist/cjs/middleware/authentication/types.d.ts +73 -0
  31. package/dist/cjs/middleware/authentication/types.d.ts.map +1 -0
  32. package/dist/cjs/middleware/authentication/types.js +6 -0
  33. package/dist/cjs/middleware/authentication/types.js.map +1 -0
  34. package/dist/cjs/middleware/authorization/authorization.d.ts +30 -0
  35. package/dist/cjs/middleware/authorization/authorization.d.ts.map +1 -0
  36. package/dist/cjs/middleware/authorization/authorization.js +82 -0
  37. package/dist/cjs/middleware/authorization/authorization.js.map +1 -0
  38. package/dist/cjs/middleware/authorization/index.d.ts +36 -0
  39. package/dist/cjs/middleware/authorization/index.d.ts.map +1 -0
  40. package/dist/cjs/middleware/authorization/index.js +41 -0
  41. package/dist/cjs/middleware/authorization/index.js.map +1 -0
  42. package/dist/cjs/middleware/authorization/types.d.ts +67 -0
  43. package/dist/cjs/middleware/authorization/types.d.ts.map +1 -0
  44. package/dist/cjs/middleware/authorization/types.js +6 -0
  45. package/dist/cjs/middleware/authorization/types.js.map +1 -0
  46. package/dist/cjs/middleware/cache/cache.d.ts +41 -0
  47. package/dist/cjs/middleware/cache/cache.d.ts.map +1 -0
  48. package/dist/cjs/middleware/cache/cache.js +191 -0
  49. package/dist/cjs/middleware/cache/cache.js.map +1 -0
  50. package/dist/cjs/middleware/cache/index.d.ts +44 -0
  51. package/dist/cjs/middleware/cache/index.d.ts.map +1 -0
  52. package/dist/cjs/middleware/cache/index.js +50 -0
  53. package/dist/cjs/middleware/cache/index.js.map +1 -0
  54. package/dist/cjs/middleware/cache/types.d.ts +89 -0
  55. package/dist/cjs/middleware/cache/types.d.ts.map +1 -0
  56. package/dist/cjs/middleware/cache/types.js +6 -0
  57. package/dist/cjs/middleware/cache/types.js.map +1 -0
  58. package/dist/cjs/middleware/csrf/csrf.d.ts +34 -0
  59. package/dist/cjs/middleware/csrf/csrf.d.ts.map +1 -0
  60. package/dist/cjs/middleware/csrf/csrf.js +94 -0
  61. package/dist/cjs/middleware/csrf/csrf.js.map +1 -0
  62. package/dist/cjs/middleware/csrf/index.d.ts +57 -0
  63. package/dist/cjs/middleware/csrf/index.d.ts.map +1 -0
  64. package/dist/cjs/middleware/csrf/index.js +62 -0
  65. package/dist/cjs/middleware/csrf/index.js.map +1 -0
  66. package/dist/cjs/middleware/csrf/types.d.ts +57 -0
  67. package/dist/cjs/middleware/csrf/types.d.ts.map +1 -0
  68. package/dist/cjs/middleware/csrf/types.js +6 -0
  69. package/dist/cjs/middleware/csrf/types.js.map +1 -0
  70. package/dist/cjs/middleware/index.d.ts +115 -0
  71. package/dist/cjs/middleware/index.d.ts.map +1 -0
  72. package/dist/cjs/middleware/index.js +153 -0
  73. package/dist/cjs/middleware/index.js.map +1 -0
  74. package/dist/cjs/middleware/logging/index.d.ts +42 -0
  75. package/dist/cjs/middleware/logging/index.d.ts.map +1 -0
  76. package/dist/cjs/middleware/logging/index.js +47 -0
  77. package/dist/cjs/middleware/logging/index.js.map +1 -0
  78. package/dist/cjs/middleware/logging/logging.d.ts +29 -0
  79. package/dist/cjs/middleware/logging/logging.d.ts.map +1 -0
  80. package/dist/cjs/middleware/logging/logging.js +171 -0
  81. package/dist/cjs/middleware/logging/logging.js.map +1 -0
  82. package/dist/cjs/middleware/logging/types.d.ts +90 -0
  83. package/dist/cjs/middleware/logging/types.d.ts.map +1 -0
  84. package/dist/cjs/middleware/logging/types.js +6 -0
  85. package/dist/cjs/middleware/logging/types.js.map +1 -0
  86. package/dist/cjs/middleware/rate-limit/index.d.ts +16 -0
  87. package/dist/cjs/middleware/rate-limit/index.d.ts.map +1 -0
  88. package/dist/cjs/middleware/rate-limit/index.js +21 -0
  89. package/dist/cjs/middleware/rate-limit/index.js.map +1 -0
  90. package/dist/cjs/middleware/rate-limit/rate-limit.d.ts +14 -0
  91. package/dist/cjs/middleware/rate-limit/rate-limit.d.ts.map +1 -0
  92. package/dist/cjs/middleware/rate-limit/rate-limit.js +87 -0
  93. package/dist/cjs/middleware/rate-limit/rate-limit.js.map +1 -0
  94. package/dist/cjs/middleware/rate-limit/types.d.ts +97 -0
  95. package/dist/cjs/middleware/rate-limit/types.d.ts.map +1 -0
  96. package/dist/cjs/middleware/rate-limit/types.js +6 -0
  97. package/dist/cjs/middleware/rate-limit/types.js.map +1 -0
  98. package/dist/cjs/middleware/retry/index.d.ts +6 -0
  99. package/dist/cjs/middleware/retry/index.d.ts.map +1 -0
  100. package/dist/cjs/middleware/retry/index.js +11 -0
  101. package/dist/cjs/middleware/retry/index.js.map +1 -0
  102. package/dist/cjs/middleware/retry/retry.d.ts +39 -0
  103. package/dist/cjs/middleware/retry/retry.d.ts.map +1 -0
  104. package/dist/cjs/middleware/retry/retry.js +144 -0
  105. package/dist/cjs/middleware/retry/retry.js.map +1 -0
  106. package/dist/cjs/middleware/retry/types.d.ts +61 -0
  107. package/dist/cjs/middleware/retry/types.d.ts.map +1 -0
  108. package/dist/cjs/middleware/retry/types.js +6 -0
  109. package/dist/cjs/middleware/retry/types.js.map +1 -0
  110. package/dist/client/fetch-client.d.ts +189 -0
  111. package/dist/client/fetch-client.d.ts.map +1 -0
  112. package/dist/client/fetch-client.js +335 -0
  113. package/dist/client/fetch-client.js.map +1 -0
  114. package/dist/client/index.d.ts +11 -0
  115. package/dist/client/index.d.ts.map +1 -0
  116. package/dist/client/index.js +10 -0
  117. package/dist/client/index.js.map +1 -0
  118. package/dist/client/types.d.ts +63 -0
  119. package/dist/client/types.d.ts.map +1 -0
  120. package/dist/client/types.js +8 -0
  121. package/dist/client/types.js.map +1 -0
  122. package/dist/errors/index.d.ts +64 -0
  123. package/dist/errors/index.d.ts.map +1 -0
  124. package/dist/errors/index.js +73 -0
  125. package/dist/errors/index.js.map +1 -0
  126. package/dist/index.d.ts +49 -20
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +86 -42
  129. package/dist/index.js.map +1 -1
  130. package/dist/middleware/authentication/authentication.d.ts +31 -0
  131. package/dist/middleware/authentication/authentication.d.ts.map +1 -0
  132. package/dist/middleware/authentication/authentication.js +90 -0
  133. package/dist/middleware/authentication/authentication.js.map +1 -0
  134. package/dist/middleware/authentication/index.d.ts +37 -0
  135. package/dist/middleware/authentication/index.d.ts.map +1 -0
  136. package/dist/middleware/authentication/index.js +37 -0
  137. package/dist/middleware/authentication/index.js.map +1 -0
  138. package/dist/middleware/authentication/types.d.ts +73 -0
  139. package/dist/middleware/authentication/types.d.ts.map +1 -0
  140. package/dist/middleware/authentication/types.js +5 -0
  141. package/dist/middleware/authentication/types.js.map +1 -0
  142. package/dist/middleware/authorization/authorization.d.ts +30 -0
  143. package/dist/middleware/authorization/authorization.d.ts.map +1 -0
  144. package/dist/middleware/authorization/authorization.js +79 -0
  145. package/dist/middleware/authorization/authorization.js.map +1 -0
  146. package/dist/middleware/authorization/index.d.ts +36 -0
  147. package/dist/middleware/authorization/index.d.ts.map +1 -0
  148. package/dist/middleware/authorization/index.js +36 -0
  149. package/dist/middleware/authorization/index.js.map +1 -0
  150. package/dist/middleware/authorization/types.d.ts +67 -0
  151. package/dist/middleware/authorization/types.d.ts.map +1 -0
  152. package/dist/middleware/authorization/types.js +5 -0
  153. package/dist/middleware/authorization/types.js.map +1 -0
  154. package/dist/middleware/cache/cache.d.ts +41 -0
  155. package/dist/middleware/cache/cache.d.ts.map +1 -0
  156. package/dist/middleware/cache/cache.js +186 -0
  157. package/dist/middleware/cache/cache.js.map +1 -0
  158. package/dist/middleware/cache/index.d.ts +44 -0
  159. package/dist/middleware/cache/index.d.ts.map +1 -0
  160. package/dist/middleware/cache/index.js +44 -0
  161. package/dist/middleware/cache/index.js.map +1 -0
  162. package/dist/middleware/cache/types.d.ts +89 -0
  163. package/dist/middleware/cache/types.d.ts.map +1 -0
  164. package/dist/middleware/cache/types.js +5 -0
  165. package/dist/middleware/cache/types.js.map +1 -0
  166. package/dist/middleware/csrf/csrf.d.ts +34 -0
  167. package/dist/middleware/csrf/csrf.d.ts.map +1 -0
  168. package/dist/middleware/csrf/csrf.js +91 -0
  169. package/dist/middleware/csrf/csrf.js.map +1 -0
  170. package/dist/middleware/csrf/index.d.ts +57 -0
  171. package/dist/middleware/csrf/index.d.ts.map +1 -0
  172. package/dist/middleware/csrf/index.js +57 -0
  173. package/dist/middleware/csrf/index.js.map +1 -0
  174. package/dist/middleware/csrf/types.d.ts +57 -0
  175. package/dist/middleware/csrf/types.d.ts.map +1 -0
  176. package/dist/middleware/csrf/types.js +5 -0
  177. package/dist/middleware/csrf/types.js.map +1 -0
  178. package/dist/middleware/index.d.ts +115 -0
  179. package/dist/middleware/index.d.ts.map +1 -0
  180. package/dist/middleware/index.js +134 -0
  181. package/dist/middleware/index.js.map +1 -0
  182. package/dist/middleware/logging/index.d.ts +42 -0
  183. package/dist/middleware/logging/index.d.ts.map +1 -0
  184. package/dist/middleware/logging/index.js +42 -0
  185. package/dist/middleware/logging/index.js.map +1 -0
  186. package/dist/middleware/logging/logging.d.ts +29 -0
  187. package/dist/middleware/logging/logging.d.ts.map +1 -0
  188. package/dist/middleware/logging/logging.js +168 -0
  189. package/dist/middleware/logging/logging.js.map +1 -0
  190. package/dist/middleware/logging/types.d.ts +90 -0
  191. package/dist/middleware/logging/types.d.ts.map +1 -0
  192. package/dist/middleware/logging/types.js +5 -0
  193. package/dist/middleware/logging/types.js.map +1 -0
  194. package/dist/middleware/rate-limit/index.d.ts +16 -0
  195. package/dist/middleware/rate-limit/index.d.ts.map +1 -0
  196. package/dist/middleware/rate-limit/index.js +16 -0
  197. package/dist/middleware/rate-limit/index.js.map +1 -0
  198. package/dist/middleware/rate-limit/rate-limit.d.ts +14 -0
  199. package/dist/middleware/rate-limit/rate-limit.d.ts.map +1 -0
  200. package/dist/middleware/rate-limit/rate-limit.js +84 -0
  201. package/dist/middleware/rate-limit/rate-limit.js.map +1 -0
  202. package/dist/middleware/rate-limit/types.d.ts +97 -0
  203. package/dist/middleware/rate-limit/types.d.ts.map +1 -0
  204. package/dist/middleware/rate-limit/types.js +5 -0
  205. package/dist/middleware/rate-limit/types.js.map +1 -0
  206. package/dist/middleware/retry/index.d.ts +6 -0
  207. package/dist/middleware/retry/index.d.ts.map +1 -0
  208. package/dist/middleware/retry/index.js +6 -0
  209. package/dist/middleware/retry/index.js.map +1 -0
  210. package/dist/middleware/retry/retry.d.ts +39 -0
  211. package/dist/middleware/retry/retry.d.ts.map +1 -0
  212. package/dist/middleware/retry/retry.js +141 -0
  213. package/dist/middleware/retry/retry.js.map +1 -0
  214. package/dist/middleware/retry/types.d.ts +61 -0
  215. package/dist/middleware/retry/types.d.ts.map +1 -0
  216. package/dist/middleware/retry/types.js +5 -0
  217. package/dist/middleware/retry/types.js.map +1 -0
  218. package/package.json +43 -9
  219. package/dist/client.d.ts +0 -111
  220. package/dist/client.js +0 -140
  221. package/dist/client.js.map +0 -1
  222. package/dist/csrf.d.ts +0 -32
  223. package/dist/csrf.js +0 -53
  224. package/dist/csrf.js.map +0 -1
  225. package/dist/errors.js.map +0 -1
  226. package/dist/test-utils.d.ts +0 -24
  227. package/dist/test-utils.js +0 -52
  228. package/dist/test-utils.js.map +0 -1
  229. package/dist/unauthorized.d.ts +0 -27
  230. package/dist/unauthorized.js +0 -41
  231. package/dist/unauthorized.js.map +0 -1
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @fileoverview Cache middleware types and configuration.
3
+ */
4
+ /**
5
+ * Cache key generator function.
6
+ * Should return a unique key for the request.
7
+ */
8
+ export type CacheKeyGenerator = (request: RequestInit & {
9
+ url?: string;
10
+ }) => string;
11
+ /**
12
+ * Cache storage interface.
13
+ * Allows custom cache implementations.
14
+ */
15
+ export interface CacheStorage {
16
+ get(key: string): Promise<CacheEntry | null>;
17
+ getWithExpiry?(key: string): Promise<{
18
+ entry: CacheEntry | null;
19
+ isExpired: boolean;
20
+ }>;
21
+ set(key: string, entry: CacheEntry): Promise<void>;
22
+ delete(key: string): Promise<void>;
23
+ clear(): Promise<void>;
24
+ }
25
+ /**
26
+ * Cached response entry.
27
+ */
28
+ export interface CacheEntry {
29
+ response: {
30
+ status: number;
31
+ statusText: string;
32
+ headers: Record<string, string>;
33
+ data: unknown;
34
+ };
35
+ timestamp: number;
36
+ expiresAt: number;
37
+ }
38
+ /**
39
+ * Cache configuration options - optimized for "pit of success".
40
+ *
41
+ * Smart defaults:
42
+ * - Only caches GET requests
43
+ * - 5 minute default TTL
44
+ * - Memory-based storage
45
+ * - Automatic cache key generation
46
+ */
47
+ export interface CacheOptions {
48
+ /**
49
+ * Time to live in milliseconds (default: 300000 = 5 minutes)
50
+ * How long responses should be cached
51
+ */
52
+ ttl?: number;
53
+ /**
54
+ * HTTP methods to cache (default: ['GET'])
55
+ * Only these methods will be cached
56
+ */
57
+ methods?: string[];
58
+ /**
59
+ * Cache storage implementation (default: in-memory)
60
+ * Can be replaced with localStorage, IndexedDB, etc.
61
+ */
62
+ storage?: CacheStorage;
63
+ /**
64
+ * Custom cache key generator (default: URL + method + headers)
65
+ * Should return a unique key for each request
66
+ *
67
+ * @example Custom key generator:
68
+ * ```typescript
69
+ * keyGenerator: (request) => `${request.method}:${request.url}`
70
+ * ```
71
+ */
72
+ keyGenerator?: CacheKeyGenerator;
73
+ /**
74
+ * Skip caching for requests matching these URL patterns
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * skipPatterns: [/\/api\/user/, '/dynamic-data']
79
+ * ```
80
+ */
81
+ skipPatterns?: (RegExp | string)[];
82
+ /**
83
+ * Whether to serve stale cache entries while revalidating
84
+ * When true, returns cached data immediately and updates cache in background
85
+ */
86
+ staleWhileRevalidate?: boolean;
87
+ }
88
+ export {};
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/middleware/cache/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,WAAW,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,KACpC,MAAM,CAAC;AAEZ;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC7C,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAEnC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAGD,OAAO,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Cache middleware types and configuration.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/middleware/cache/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @fileoverview CSRF protection middleware implementation.
3
+ */
4
+ import type { FetchMiddleware } from '../../client/fetch-client';
5
+ import type { CSRFOptions } from './types';
6
+ /**
7
+ * Creates CSRF protection middleware with smart defaults.
8
+ * Automatically adds CSRF tokens to state-changing requests.
9
+ *
10
+ * @param options - CSRF configuration options (all optional for "pit of success")
11
+ * @returns CSRF middleware for use with FetchClient
12
+ *
13
+ * @example Basic usage (uses cookies automatically):
14
+ * ```typescript
15
+ * const client = new FetchClient();
16
+ * const csrfClient = useCSRF(client);
17
+ * ```
18
+ *
19
+ * @example Custom token provider:
20
+ * ```typescript
21
+ * const csrfClient = useCSRF(client, {
22
+ * tokenProvider: () => localStorage.getItem('csrf-token') || ''
23
+ * });
24
+ * ```
25
+ *
26
+ * @example Skip external APIs:
27
+ * ```typescript
28
+ * const csrfClient = useCSRF(client, {
29
+ * skipPatterns: [/^https:\/\/api\.external\.com\//, '/webhook/']
30
+ * });
31
+ * ```
32
+ */
33
+ export declare function createCSRFMiddleware(options?: CSRFOptions): FetchMiddleware;
34
+ //# sourceMappingURL=csrf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.d.ts","sourceRoot":"","sources":["../../../../src/middleware/csrf/csrf.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAwC3C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,WAAgB,GACxB,eAAe,CA4CjB"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview CSRF protection middleware implementation.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createCSRFMiddleware = createCSRFMiddleware;
7
+ /**
8
+ * Default CSRF token provider that extracts token from XSRF-TOKEN cookie.
9
+ * This follows the standard convention used by Rails, Laravel, and many other frameworks.
10
+ */
11
+ function getTokenFromCookie(cookieName = 'XSRF-TOKEN') {
12
+ if (typeof document === 'undefined') {
13
+ return ''; // Server-side, no cookies available
14
+ }
15
+ const name = `${cookieName}=`;
16
+ const decodedCookie = decodeURIComponent(document.cookie);
17
+ const cookies = decodedCookie.split(';');
18
+ for (const cookie of cookies) {
19
+ const c = cookie.trim();
20
+ if (c.indexOf(name) === 0) {
21
+ return c.substring(name.length);
22
+ }
23
+ }
24
+ return '';
25
+ }
26
+ /**
27
+ * Checks if a URL should skip CSRF protection based on configured patterns.
28
+ */
29
+ function shouldSkipCSRF(url, skipPatterns = []) {
30
+ return skipPatterns.some((pattern) => {
31
+ if (typeof pattern === 'string') {
32
+ return url.includes(pattern);
33
+ }
34
+ return pattern.test(url);
35
+ });
36
+ }
37
+ /**
38
+ * Creates CSRF protection middleware with smart defaults.
39
+ * Automatically adds CSRF tokens to state-changing requests.
40
+ *
41
+ * @param options - CSRF configuration options (all optional for "pit of success")
42
+ * @returns CSRF middleware for use with FetchClient
43
+ *
44
+ * @example Basic usage (uses cookies automatically):
45
+ * ```typescript
46
+ * const client = new FetchClient();
47
+ * const csrfClient = useCSRF(client);
48
+ * ```
49
+ *
50
+ * @example Custom token provider:
51
+ * ```typescript
52
+ * const csrfClient = useCSRF(client, {
53
+ * tokenProvider: () => localStorage.getItem('csrf-token') || ''
54
+ * });
55
+ * ```
56
+ *
57
+ * @example Skip external APIs:
58
+ * ```typescript
59
+ * const csrfClient = useCSRF(client, {
60
+ * skipPatterns: [/^https:\/\/api\.external\.com\//, '/webhook/']
61
+ * });
62
+ * ```
63
+ */
64
+ function createCSRFMiddleware(options = {}) {
65
+ // Smart defaults for "pit of success"
66
+ const { headerName = 'X-XSRF-TOKEN', cookieName = 'XSRF-TOKEN', protectedMethods = ['POST', 'PUT', 'PATCH', 'DELETE'], skipPatterns = [], tokenProvider = () => getTokenFromCookie(cookieName), } = options;
67
+ return async (request, next) => {
68
+ const method = (request.method || 'GET').toUpperCase();
69
+ const url = request.url || '';
70
+ // Skip CSRF protection if:
71
+ // 1. Method is not in protected methods list
72
+ // 2. URL matches a skip pattern
73
+ if (!protectedMethods.includes(method) ||
74
+ shouldSkipCSRF(url, skipPatterns)) {
75
+ return next(request);
76
+ }
77
+ // Get CSRF token
78
+ const token = tokenProvider();
79
+ // Skip if no token available (let the server handle the error)
80
+ if (!token) {
81
+ return next(request);
82
+ }
83
+ // Add CSRF token to request headers
84
+ const headers = new Headers(request.headers);
85
+ headers.set(headerName, token);
86
+ // Create modified request with CSRF header
87
+ const modifiedRequest = {
88
+ ...request,
89
+ headers,
90
+ };
91
+ return next(modifiedRequest);
92
+ };
93
+ }
94
+ //# sourceMappingURL=csrf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.js","sourceRoot":"","sources":["../../../../src/middleware/csrf/csrf.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAsEH,oDA8CC;AA/GD;;;GAGG;AACH,SAAS,kBAAkB,CAAC,aAAqB,YAAY;IAC3D,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC,CAAC,oCAAoC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG,CAAC;IAC9B,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,GAAW,EACX,eAAoC,EAAE;IAEtC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,oBAAoB,CAClC,UAAuB,EAAE;IAEzB,sCAAsC;IACtC,MAAM,EACJ,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,YAAY,EACzB,gBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EACrD,YAAY,GAAG,EAAE,EACjB,aAAa,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,GACrD,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAE9B,2BAA2B;QAC3B,6CAA6C;QAC7C,gCAAgC;QAChC,IACE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,EACjC,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,iBAAiB;QACjB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAE9B,+DAA+D;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,oCAAoC;QACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,2CAA2C;QAC3C,MAAM,eAAe,GAAG;YACtB,GAAG,OAAO;YACV,OAAO;SACR,CAAC;QAEF,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @fileoverview CSRF protection middleware - "pit of success" API.
3
+ */
4
+ import type { FetchClient } from '../../client/fetch-client';
5
+ import type { CSRFOptions } from './types';
6
+ export type { CSRFOptions, CSRFTokenProvider } from './types';
7
+ export { createCSRFMiddleware } from './csrf';
8
+ /**
9
+ * "Pit of success" API for adding CSRF protection to a FetchClient.
10
+ * Uses smart defaults that work with most web frameworks out of the box.
11
+ *
12
+ * Default behavior:
13
+ * - Reads CSRF token from XSRF-TOKEN cookie
14
+ * - Adds X-XSRF-TOKEN header to POST, PUT, PATCH, DELETE requests
15
+ * - Skips GET/HEAD requests (they don't need CSRF protection)
16
+ *
17
+ * @param client - The FetchClient to add CSRF protection to
18
+ * @param options - Optional CSRF configuration
19
+ * @returns A new FetchClient with CSRF protection
20
+ *
21
+ * @example Basic usage (automatic cookie-based CSRF):
22
+ * ```typescript
23
+ * const client = new FetchClient();
24
+ * const protectedClient = useCSRF(client);
25
+ *
26
+ * // CSRF token automatically added to POST requests
27
+ * await protectedClient.post('/api/users', { name: 'John' });
28
+ * ```
29
+ *
30
+ * @example Custom token provider:
31
+ * ```typescript
32
+ * const protectedClient = useCSRF(client, {
33
+ * tokenProvider: () => localStorage.getItem('csrf-token') || ''
34
+ * });
35
+ * ```
36
+ *
37
+ * @example Custom header and cookie names:
38
+ * ```typescript
39
+ * const protectedClient = useCSRF(client, {
40
+ * headerName: 'X-CSRF-Token',
41
+ * cookieName: 'csrf-token'
42
+ * });
43
+ * ```
44
+ *
45
+ * @example Skip patterns for external APIs:
46
+ * ```typescript
47
+ * const protectedClient = useCSRF(client, {
48
+ * skipPatterns: [
49
+ * /^https:\/\/api\.external\.com\//, // Skip external API
50
+ * '/webhook/', // Skip webhook endpoints
51
+ * '/public-api/' // Skip public API endpoints
52
+ * ]
53
+ * });
54
+ * ```
55
+ */
56
+ export declare function useCSRF(client: FetchClient, options?: CSRFOptions): FetchClient;
57
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/csrf/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,WAAgB,GACxB,WAAW,CAEb"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview CSRF protection middleware - "pit of success" API.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createCSRFMiddleware = void 0;
7
+ exports.useCSRF = useCSRF;
8
+ const csrf_1 = require("./csrf");
9
+ var csrf_2 = require("./csrf");
10
+ Object.defineProperty(exports, "createCSRFMiddleware", { enumerable: true, get: function () { return csrf_2.createCSRFMiddleware; } });
11
+ /**
12
+ * "Pit of success" API for adding CSRF protection to a FetchClient.
13
+ * Uses smart defaults that work with most web frameworks out of the box.
14
+ *
15
+ * Default behavior:
16
+ * - Reads CSRF token from XSRF-TOKEN cookie
17
+ * - Adds X-XSRF-TOKEN header to POST, PUT, PATCH, DELETE requests
18
+ * - Skips GET/HEAD requests (they don't need CSRF protection)
19
+ *
20
+ * @param client - The FetchClient to add CSRF protection to
21
+ * @param options - Optional CSRF configuration
22
+ * @returns A new FetchClient with CSRF protection
23
+ *
24
+ * @example Basic usage (automatic cookie-based CSRF):
25
+ * ```typescript
26
+ * const client = new FetchClient();
27
+ * const protectedClient = useCSRF(client);
28
+ *
29
+ * // CSRF token automatically added to POST requests
30
+ * await protectedClient.post('/api/users', { name: 'John' });
31
+ * ```
32
+ *
33
+ * @example Custom token provider:
34
+ * ```typescript
35
+ * const protectedClient = useCSRF(client, {
36
+ * tokenProvider: () => localStorage.getItem('csrf-token') || ''
37
+ * });
38
+ * ```
39
+ *
40
+ * @example Custom header and cookie names:
41
+ * ```typescript
42
+ * const protectedClient = useCSRF(client, {
43
+ * headerName: 'X-CSRF-Token',
44
+ * cookieName: 'csrf-token'
45
+ * });
46
+ * ```
47
+ *
48
+ * @example Skip patterns for external APIs:
49
+ * ```typescript
50
+ * const protectedClient = useCSRF(client, {
51
+ * skipPatterns: [
52
+ * /^https:\/\/api\.external\.com\//, // Skip external API
53
+ * '/webhook/', // Skip webhook endpoints
54
+ * '/public-api/' // Skip public API endpoints
55
+ * ]
56
+ * });
57
+ * ```
58
+ */
59
+ function useCSRF(client, options = {}) {
60
+ return client.use((0, csrf_1.createCSRFMiddleware)(options));
61
+ }
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/csrf/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA0DH,0BAKC;AA3DD,iCAA8C;AAI9C,+BAA8C;AAArC,4GAAA,oBAAoB,OAAA;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,SAAgB,OAAO,CACrB,MAAmB,EACnB,UAAuB,EAAE;IAEzB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @fileoverview CSRF protection middleware types and configuration.
3
+ */
4
+ /**
5
+ * CSRF token provider function.
6
+ * Should return the current CSRF token or empty string if not available.
7
+ */
8
+ export type CSRFTokenProvider = () => string;
9
+ /**
10
+ * CSRF configuration options - optimized for "pit of success".
11
+ *
12
+ * Smart defaults:
13
+ * - Uses standard X-XSRF-TOKEN header
14
+ * - Automatically extracts token from XSRF-TOKEN cookie
15
+ * - Only adds token to state-changing methods (POST, PUT, PATCH, DELETE)
16
+ */
17
+ export interface CSRFOptions {
18
+ /**
19
+ * Function to get the current CSRF token.
20
+ * Default: extracts from XSRF-TOKEN cookie (standard Rails/Laravel convention)
21
+ *
22
+ * @returns The CSRF token or empty string if not available
23
+ *
24
+ * @example Custom token provider:
25
+ * ```typescript
26
+ * const getToken = () => localStorage.getItem('csrf-token') || '';
27
+ * ```
28
+ */
29
+ tokenProvider?: CSRFTokenProvider;
30
+ /**
31
+ * Header name to use for CSRF token (default: 'X-XSRF-TOKEN')
32
+ * Common alternatives: 'X-CSRF-Token', 'X-CSRFToken'
33
+ */
34
+ headerName?: string;
35
+ /**
36
+ * Cookie name to read token from when using default provider (default: 'XSRF-TOKEN')
37
+ * Common alternatives: 'csrf-token', '_token'
38
+ */
39
+ cookieName?: string;
40
+ /**
41
+ * HTTP methods that require CSRF protection (default: ['POST', 'PUT', 'PATCH', 'DELETE'])
42
+ * GET and HEAD requests typically don't need CSRF tokens
43
+ */
44
+ protectedMethods?: string[];
45
+ /**
46
+ * Skip CSRF protection for requests matching these URL patterns
47
+ * Useful for external API calls that don't need CSRF tokens
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * skipPatterns: [/^https:\/\/api\.external\.com\//, '/public-api/']
52
+ * ```
53
+ */
54
+ skipPatterns?: (RegExp | string)[];
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/middleware/csrf/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACpC;AAGD,OAAO,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview CSRF protection middleware types and configuration.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/middleware/csrf/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @fileoverview Complete middleware collection for FetchClient - "pit of success" APIs.
3
+ *
4
+ * This module provides a comprehensive set of middleware for common HTTP client concerns:
5
+ * - 🔐 Authentication: Bearer token injection
6
+ * - 🛡️ Authorization: 401/403 response handling
7
+ * - 💾 Cache: Response caching with TTL
8
+ * - 🔒 CSRF: Cross-site request forgery protection
9
+ * - 📝 Logging: Request/response logging
10
+ * - 🚦 Rate Limiting: Request rate limiting with token bucket
11
+ * - 🔄 Retry: Automatic retry with backoff
12
+ *
13
+ * Each middleware follows the "pit of success" pattern with:
14
+ * - Smart defaults for common scenarios
15
+ * - Simple `use{Middleware}()` convenience functions
16
+ * - Advanced `create{Middleware}Middleware()` for custom scenarios
17
+ * - Comprehensive TypeScript support
18
+ *
19
+ * @example Quick setup with multiple middleware:
20
+ * ```typescript
21
+ * import { FetchClient } from '@fgrzl/fetch';
22
+ * import { useAuthentication, useRetry, useLogging } from '@fgrzl/fetch/middleware';
23
+ *
24
+ * const client = new FetchClient();
25
+ * const enhancedClient = useAuthentication(client, {
26
+ * tokenProvider: () => localStorage.getItem('auth-token') || ''
27
+ * })
28
+ * .pipe(useRetry, { retries: 3 })
29
+ * .pipe(useLogging);
30
+ * ```
31
+ */
32
+ export type { AuthenticationOptions, AuthTokenProvider, } from './authentication';
33
+ export { useAuthentication, createAuthenticationMiddleware, } from './authentication';
34
+ export type { AuthorizationOptions, UnauthorizedHandler, } from './authorization';
35
+ export { useAuthorization, createAuthorizationMiddleware, } from './authorization';
36
+ export type { CacheOptions, CacheStorage, CacheEntry, CacheKeyGenerator, } from './cache';
37
+ export { useCache, createCacheMiddleware } from './cache';
38
+ export { useCSRF } from './csrf';
39
+ export type { LoggingOptions, Logger, LogLevel } from './logging';
40
+ export { useLogging, createLoggingMiddleware } from './logging';
41
+ export type { RateLimitOptions, RateLimitAlgorithm } from './rate-limit';
42
+ export { useRateLimit, createRateLimitMiddleware } from './rate-limit';
43
+ export type { RetryOptions } from './retry';
44
+ export { useRetry, createRetryMiddleware } from './retry';
45
+ /**
46
+ * Common middleware combinations for typical use cases.
47
+ * These provide pre-configured middleware stacks for common scenarios.
48
+ */
49
+ import type { FetchClient } from '../client/fetch-client';
50
+ import { useAuthentication } from './authentication';
51
+ import { useRetry } from './retry';
52
+ import { useLogging } from './logging';
53
+ import { useCache } from './cache';
54
+ import { useRateLimit } from './rate-limit';
55
+ /**
56
+ * Production-ready middleware stack with authentication, retry, logging, and caching.
57
+ * Perfect for API clients that need reliability and observability.
58
+ *
59
+ * @param client - The FetchClient to enhance
60
+ * @param config - Configuration for each middleware
61
+ * @returns Enhanced FetchClient with production middleware stack
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const apiClient = useProductionStack(new FetchClient(), {
66
+ * auth: { tokenProvider: () => getAuthToken() },
67
+ * cache: { ttl: 5 * 60 * 1000 }, // 5 minutes
68
+ * logging: { level: 'info' }
69
+ * });
70
+ * ```
71
+ */
72
+ export declare function useProductionStack(client: FetchClient, config?: {
73
+ auth?: Parameters<typeof useAuthentication>[1];
74
+ retry?: Parameters<typeof useRetry>[1];
75
+ cache?: Parameters<typeof useCache>[1];
76
+ logging?: Parameters<typeof useLogging>[1];
77
+ rateLimit?: Parameters<typeof useRateLimit>[1];
78
+ }): FetchClient;
79
+ /**
80
+ * Development-friendly middleware stack with comprehensive logging and retries.
81
+ * Perfect for local development and debugging.
82
+ *
83
+ * @param client - The FetchClient to enhance
84
+ * @param config - Configuration for development middleware
85
+ * @returns Enhanced FetchClient with development middleware stack
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const devClient = useDevelopmentStack(new FetchClient(), {
90
+ * auth: { tokenProvider: () => 'dev-token' }
91
+ * });
92
+ * ```
93
+ */
94
+ export declare function useDevelopmentStack(client: FetchClient, config?: {
95
+ auth?: Parameters<typeof useAuthentication>[1];
96
+ }): FetchClient;
97
+ /**
98
+ * Basic middleware stack with just authentication and retry.
99
+ * Perfect for simple API clients that need minimal overhead.
100
+ *
101
+ * @param client - The FetchClient to enhance
102
+ * @param config - Basic configuration
103
+ * @returns Enhanced FetchClient with basic middleware stack
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const basicClient = useBasicStack(new FetchClient(), {
108
+ * auth: { tokenProvider: () => getToken() }
109
+ * });
110
+ * ```
111
+ */
112
+ export declare function useBasicStack(client: FetchClient, config: {
113
+ auth: Parameters<typeof useAuthentication>[1];
114
+ }): FetchClient;
115
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,YAAY,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG1D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAGhE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAGvE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE1D;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,GAAE;IACN,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,GACL,WAAW,CAyBb;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,MAAM,GAAE;IACN,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,GACL,WAAW,CAsBb;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE;IACN,IAAI,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,GACA,WAAW,CAEb"}