@fgrzl/fetch 1.1.0-alpha.3 → 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.
- package/README.md +15 -12
- package/dist/cjs/client/fetch-client.d.ts +189 -0
- package/dist/cjs/client/fetch-client.d.ts.map +1 -0
- package/dist/cjs/client/fetch-client.js +339 -0
- package/dist/cjs/client/fetch-client.js.map +1 -0
- package/dist/cjs/client/index.d.ts +11 -0
- package/dist/cjs/client/index.d.ts.map +1 -0
- package/dist/cjs/client/index.js +14 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/client/types.d.ts +63 -0
- package/dist/cjs/client/types.d.ts.map +1 -0
- package/dist/cjs/client/types.js +9 -0
- package/dist/cjs/client/types.js.map +1 -0
- package/dist/{errors.d.ts → cjs/errors/index.d.ts} +20 -3
- package/dist/cjs/errors/index.d.ts.map +1 -0
- package/dist/{errors.js → cjs/errors/index.js} +23 -3
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/index.d.ts +65 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +118 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/middleware/authentication/authentication.d.ts +31 -0
- package/dist/cjs/middleware/authentication/authentication.d.ts.map +1 -0
- package/dist/cjs/middleware/authentication/authentication.js +93 -0
- package/dist/cjs/middleware/authentication/authentication.js.map +1 -0
- package/dist/cjs/middleware/authentication/index.d.ts +37 -0
- package/dist/cjs/middleware/authentication/index.d.ts.map +1 -0
- package/dist/cjs/middleware/authentication/index.js +42 -0
- package/dist/cjs/middleware/authentication/index.js.map +1 -0
- package/dist/cjs/middleware/authentication/types.d.ts +73 -0
- package/dist/cjs/middleware/authentication/types.d.ts.map +1 -0
- package/dist/cjs/middleware/authentication/types.js +6 -0
- package/dist/cjs/middleware/authentication/types.js.map +1 -0
- package/dist/cjs/middleware/authorization/authorization.d.ts +30 -0
- package/dist/cjs/middleware/authorization/authorization.d.ts.map +1 -0
- package/dist/cjs/middleware/authorization/authorization.js +82 -0
- package/dist/cjs/middleware/authorization/authorization.js.map +1 -0
- package/dist/cjs/middleware/authorization/index.d.ts +36 -0
- package/dist/cjs/middleware/authorization/index.d.ts.map +1 -0
- package/dist/cjs/middleware/authorization/index.js +41 -0
- package/dist/cjs/middleware/authorization/index.js.map +1 -0
- package/dist/cjs/middleware/authorization/types.d.ts +67 -0
- package/dist/cjs/middleware/authorization/types.d.ts.map +1 -0
- package/dist/cjs/middleware/authorization/types.js +6 -0
- package/dist/cjs/middleware/authorization/types.js.map +1 -0
- package/dist/cjs/middleware/cache/cache.d.ts +41 -0
- package/dist/cjs/middleware/cache/cache.d.ts.map +1 -0
- package/dist/cjs/middleware/cache/cache.js +191 -0
- package/dist/cjs/middleware/cache/cache.js.map +1 -0
- package/dist/cjs/middleware/cache/index.d.ts +44 -0
- package/dist/cjs/middleware/cache/index.d.ts.map +1 -0
- package/dist/cjs/middleware/cache/index.js +50 -0
- package/dist/cjs/middleware/cache/index.js.map +1 -0
- package/dist/cjs/middleware/cache/types.d.ts +89 -0
- package/dist/cjs/middleware/cache/types.d.ts.map +1 -0
- package/dist/cjs/middleware/cache/types.js +6 -0
- package/dist/cjs/middleware/cache/types.js.map +1 -0
- package/dist/cjs/middleware/csrf/csrf.d.ts +34 -0
- package/dist/cjs/middleware/csrf/csrf.d.ts.map +1 -0
- package/dist/cjs/middleware/csrf/csrf.js +94 -0
- package/dist/cjs/middleware/csrf/csrf.js.map +1 -0
- package/dist/cjs/middleware/csrf/index.d.ts +57 -0
- package/dist/cjs/middleware/csrf/index.d.ts.map +1 -0
- package/dist/cjs/middleware/csrf/index.js +62 -0
- package/dist/cjs/middleware/csrf/index.js.map +1 -0
- package/dist/cjs/middleware/csrf/types.d.ts +57 -0
- package/dist/cjs/middleware/csrf/types.d.ts.map +1 -0
- package/dist/cjs/middleware/csrf/types.js +6 -0
- package/dist/cjs/middleware/csrf/types.js.map +1 -0
- package/dist/cjs/middleware/index.d.ts +115 -0
- package/dist/cjs/middleware/index.d.ts.map +1 -0
- package/dist/cjs/middleware/index.js +153 -0
- package/dist/cjs/middleware/index.js.map +1 -0
- package/dist/cjs/middleware/logging/index.d.ts +42 -0
- package/dist/cjs/middleware/logging/index.d.ts.map +1 -0
- package/dist/cjs/middleware/logging/index.js +47 -0
- package/dist/cjs/middleware/logging/index.js.map +1 -0
- package/dist/cjs/middleware/logging/logging.d.ts +29 -0
- package/dist/cjs/middleware/logging/logging.d.ts.map +1 -0
- package/dist/cjs/middleware/logging/logging.js +171 -0
- package/dist/cjs/middleware/logging/logging.js.map +1 -0
- package/dist/cjs/middleware/logging/types.d.ts +90 -0
- package/dist/cjs/middleware/logging/types.d.ts.map +1 -0
- package/dist/cjs/middleware/logging/types.js +6 -0
- package/dist/cjs/middleware/logging/types.js.map +1 -0
- package/dist/cjs/middleware/rate-limit/index.d.ts +16 -0
- package/dist/cjs/middleware/rate-limit/index.d.ts.map +1 -0
- package/dist/cjs/middleware/rate-limit/index.js +21 -0
- package/dist/cjs/middleware/rate-limit/index.js.map +1 -0
- package/dist/cjs/middleware/rate-limit/rate-limit.d.ts +14 -0
- package/dist/cjs/middleware/rate-limit/rate-limit.d.ts.map +1 -0
- package/dist/cjs/middleware/rate-limit/rate-limit.js +87 -0
- package/dist/cjs/middleware/rate-limit/rate-limit.js.map +1 -0
- package/dist/cjs/middleware/rate-limit/types.d.ts +97 -0
- package/dist/cjs/middleware/rate-limit/types.d.ts.map +1 -0
- package/dist/cjs/middleware/rate-limit/types.js +6 -0
- package/dist/cjs/middleware/rate-limit/types.js.map +1 -0
- package/dist/cjs/middleware/retry/index.d.ts +6 -0
- package/dist/cjs/middleware/retry/index.d.ts.map +1 -0
- package/dist/cjs/middleware/retry/index.js +11 -0
- package/dist/cjs/middleware/retry/index.js.map +1 -0
- package/dist/cjs/middleware/retry/retry.d.ts +39 -0
- package/dist/cjs/middleware/retry/retry.d.ts.map +1 -0
- package/dist/cjs/middleware/retry/retry.js +144 -0
- package/dist/cjs/middleware/retry/retry.js.map +1 -0
- package/dist/cjs/middleware/retry/types.d.ts +61 -0
- package/dist/cjs/middleware/retry/types.d.ts.map +1 -0
- package/dist/cjs/middleware/retry/types.js +6 -0
- package/dist/cjs/middleware/retry/types.js.map +1 -0
- package/dist/client/fetch-client.d.ts +189 -0
- package/dist/client/fetch-client.d.ts.map +1 -0
- package/dist/client/fetch-client.js +335 -0
- package/dist/client/fetch-client.js.map +1 -0
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +10 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +63 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +8 -0
- package/dist/client/types.js.map +1 -0
- package/dist/errors/index.d.ts +64 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +73 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +49 -20
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -42
- package/dist/index.js.map +1 -1
- package/dist/middleware/authentication/authentication.d.ts +31 -0
- package/dist/middleware/authentication/authentication.d.ts.map +1 -0
- package/dist/middleware/authentication/authentication.js +90 -0
- package/dist/middleware/authentication/authentication.js.map +1 -0
- package/dist/middleware/authentication/index.d.ts +37 -0
- package/dist/middleware/authentication/index.d.ts.map +1 -0
- package/dist/middleware/authentication/index.js +37 -0
- package/dist/middleware/authentication/index.js.map +1 -0
- package/dist/middleware/authentication/types.d.ts +73 -0
- package/dist/middleware/authentication/types.d.ts.map +1 -0
- package/dist/middleware/authentication/types.js +5 -0
- package/dist/middleware/authentication/types.js.map +1 -0
- package/dist/middleware/authorization/authorization.d.ts +30 -0
- package/dist/middleware/authorization/authorization.d.ts.map +1 -0
- package/dist/middleware/authorization/authorization.js +79 -0
- package/dist/middleware/authorization/authorization.js.map +1 -0
- package/dist/middleware/authorization/index.d.ts +36 -0
- package/dist/middleware/authorization/index.d.ts.map +1 -0
- package/dist/middleware/authorization/index.js +36 -0
- package/dist/middleware/authorization/index.js.map +1 -0
- package/dist/middleware/authorization/types.d.ts +67 -0
- package/dist/middleware/authorization/types.d.ts.map +1 -0
- package/dist/middleware/authorization/types.js +5 -0
- package/dist/middleware/authorization/types.js.map +1 -0
- package/dist/middleware/cache/cache.d.ts +41 -0
- package/dist/middleware/cache/cache.d.ts.map +1 -0
- package/dist/middleware/cache/cache.js +186 -0
- package/dist/middleware/cache/cache.js.map +1 -0
- package/dist/middleware/cache/index.d.ts +44 -0
- package/dist/middleware/cache/index.d.ts.map +1 -0
- package/dist/middleware/cache/index.js +44 -0
- package/dist/middleware/cache/index.js.map +1 -0
- package/dist/middleware/cache/types.d.ts +89 -0
- package/dist/middleware/cache/types.d.ts.map +1 -0
- package/dist/middleware/cache/types.js +5 -0
- package/dist/middleware/cache/types.js.map +1 -0
- package/dist/middleware/csrf/csrf.d.ts +34 -0
- package/dist/middleware/csrf/csrf.d.ts.map +1 -0
- package/dist/middleware/csrf/csrf.js +91 -0
- package/dist/middleware/csrf/csrf.js.map +1 -0
- package/dist/middleware/csrf/index.d.ts +57 -0
- package/dist/middleware/csrf/index.d.ts.map +1 -0
- package/dist/middleware/csrf/index.js +57 -0
- package/dist/middleware/csrf/index.js.map +1 -0
- package/dist/middleware/csrf/types.d.ts +57 -0
- package/dist/middleware/csrf/types.d.ts.map +1 -0
- package/dist/middleware/csrf/types.js +5 -0
- package/dist/middleware/csrf/types.js.map +1 -0
- package/dist/middleware/index.d.ts +115 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +134 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/logging/index.d.ts +42 -0
- package/dist/middleware/logging/index.d.ts.map +1 -0
- package/dist/middleware/logging/index.js +42 -0
- package/dist/middleware/logging/index.js.map +1 -0
- package/dist/middleware/logging/logging.d.ts +29 -0
- package/dist/middleware/logging/logging.d.ts.map +1 -0
- package/dist/middleware/logging/logging.js +168 -0
- package/dist/middleware/logging/logging.js.map +1 -0
- package/dist/middleware/logging/types.d.ts +90 -0
- package/dist/middleware/logging/types.d.ts.map +1 -0
- package/dist/middleware/logging/types.js +5 -0
- package/dist/middleware/logging/types.js.map +1 -0
- package/dist/middleware/rate-limit/index.d.ts +16 -0
- package/dist/middleware/rate-limit/index.d.ts.map +1 -0
- package/dist/middleware/rate-limit/index.js +16 -0
- package/dist/middleware/rate-limit/index.js.map +1 -0
- package/dist/middleware/rate-limit/rate-limit.d.ts +14 -0
- package/dist/middleware/rate-limit/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit/rate-limit.js +84 -0
- package/dist/middleware/rate-limit/rate-limit.js.map +1 -0
- package/dist/middleware/rate-limit/types.d.ts +97 -0
- package/dist/middleware/rate-limit/types.d.ts.map +1 -0
- package/dist/middleware/rate-limit/types.js +5 -0
- package/dist/middleware/rate-limit/types.js.map +1 -0
- package/dist/middleware/retry/index.d.ts +6 -0
- package/dist/middleware/retry/index.d.ts.map +1 -0
- package/dist/middleware/retry/index.js +6 -0
- package/dist/middleware/retry/index.js.map +1 -0
- package/dist/middleware/retry/retry.d.ts +39 -0
- package/dist/middleware/retry/retry.d.ts.map +1 -0
- package/dist/middleware/retry/retry.js +141 -0
- package/dist/middleware/retry/retry.js.map +1 -0
- package/dist/middleware/retry/types.d.ts +61 -0
- package/dist/middleware/retry/types.d.ts.map +1 -0
- package/dist/middleware/retry/types.js +5 -0
- package/dist/middleware/retry/types.js.map +1 -0
- package/package.json +42 -8
- package/dist/client.d.ts +0 -133
- package/dist/client.js +0 -166
- package/dist/client.js.map +0 -1
- package/dist/csrf.d.ts +0 -32
- package/dist/csrf.js +0 -53
- package/dist/csrf.js.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/test-utils.d.ts +0 -24
- package/dist/test-utils.js +0 -52
- package/dist/test-utils.js.map +0 -1
- package/dist/unauthorized.d.ts +0 -27
- package/dist/unauthorized.js +0 -41
- package/dist/unauthorized.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Custom error classes - "Pit of Success" pattern.
|
|
3
|
+
*
|
|
4
|
+
* 🎯 LEVEL 1: HttpError, NetworkError - Most common error types you'll catch
|
|
5
|
+
* 🎯 LEVEL 2: FetchError - Base error class for advanced error handling
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* try {
|
|
10
|
+
* await client.get('/api/data');
|
|
11
|
+
* } catch (error) {
|
|
12
|
+
* if (error instanceof HttpError) {
|
|
13
|
+
* console.log(`HTTP ${error.status}: ${error.statusText}`);
|
|
14
|
+
* } else if (error instanceof NetworkError) {
|
|
15
|
+
* console.log('Network connection failed');
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Base error class for all fetch client errors.
|
|
22
|
+
*/
|
|
23
|
+
export declare class FetchError extends Error {
|
|
24
|
+
/** Optional underlying cause */
|
|
25
|
+
readonly cause?: Error;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new FetchError.
|
|
28
|
+
* @param message - Error message
|
|
29
|
+
* @param cause - Optional underlying cause
|
|
30
|
+
*/
|
|
31
|
+
constructor(message: string, cause?: Error);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Error thrown when an HTTP request fails with a non-2xx status code.
|
|
35
|
+
*/
|
|
36
|
+
export declare class HttpError extends FetchError {
|
|
37
|
+
/** The HTTP status code */
|
|
38
|
+
readonly status: number;
|
|
39
|
+
/** The HTTP status text */
|
|
40
|
+
readonly statusText: string;
|
|
41
|
+
/** The response body (if available) */
|
|
42
|
+
readonly body: unknown;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new HttpError.
|
|
45
|
+
* @param status - HTTP status code
|
|
46
|
+
* @param statusText - HTTP status text
|
|
47
|
+
* @param body - Response body
|
|
48
|
+
* @param url - The request URL
|
|
49
|
+
*/
|
|
50
|
+
constructor(status: number, statusText: string, body: unknown, url: string);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Error thrown when a network request fails completely.
|
|
54
|
+
*/
|
|
55
|
+
export declare class NetworkError extends FetchError {
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new NetworkError.
|
|
58
|
+
* @param message - Error message
|
|
59
|
+
* @param url - The request URL
|
|
60
|
+
* @param cause - The underlying network error
|
|
61
|
+
*/
|
|
62
|
+
constructor(message: string, url: string, cause?: Error);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,gCAAgC;IAChC,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC;IAE9B;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAO3C;AAID;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,2BAA2B;IAC3B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,2BAA2B;IAC3B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,uCAAuC;IACvC,SAAgB,IAAI,EAAE,OAAO,CAAC;IAE9B;;;;;;OAMG;gBACS,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM;CAO3E;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAIxD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Custom error classes - "Pit of Success" pattern.
|
|
3
|
+
*
|
|
4
|
+
* 🎯 LEVEL 1: HttpError, NetworkError - Most common error types you'll catch
|
|
5
|
+
* 🎯 LEVEL 2: FetchError - Base error class for advanced error handling
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* try {
|
|
10
|
+
* await client.get('/api/data');
|
|
11
|
+
* } catch (error) {
|
|
12
|
+
* if (error instanceof HttpError) {
|
|
13
|
+
* console.log(`HTTP ${error.status}: ${error.statusText}`);
|
|
14
|
+
* } else if (error instanceof NetworkError) {
|
|
15
|
+
* console.log('Network connection failed');
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
// 🎯 LEVEL 2: Base error class (for advanced use cases)
|
|
21
|
+
/**
|
|
22
|
+
* Base error class for all fetch client errors.
|
|
23
|
+
*/
|
|
24
|
+
export class FetchError extends Error {
|
|
25
|
+
/**
|
|
26
|
+
* Creates a new FetchError.
|
|
27
|
+
* @param message - Error message
|
|
28
|
+
* @param cause - Optional underlying cause
|
|
29
|
+
*/
|
|
30
|
+
constructor(message, cause) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = 'FetchError';
|
|
33
|
+
if (cause !== undefined) {
|
|
34
|
+
this.cause = cause;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// 🎯 LEVEL 1: Most commonly used error types
|
|
39
|
+
/**
|
|
40
|
+
* Error thrown when an HTTP request fails with a non-2xx status code.
|
|
41
|
+
*/
|
|
42
|
+
export class HttpError extends FetchError {
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new HttpError.
|
|
45
|
+
* @param status - HTTP status code
|
|
46
|
+
* @param statusText - HTTP status text
|
|
47
|
+
* @param body - Response body
|
|
48
|
+
* @param url - The request URL
|
|
49
|
+
*/
|
|
50
|
+
constructor(status, statusText, body, url) {
|
|
51
|
+
super(`HTTP ${status} ${statusText} at ${url}`);
|
|
52
|
+
this.name = 'HttpError';
|
|
53
|
+
this.status = status;
|
|
54
|
+
this.statusText = statusText;
|
|
55
|
+
this.body = body;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Error thrown when a network request fails completely.
|
|
60
|
+
*/
|
|
61
|
+
export class NetworkError extends FetchError {
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new NetworkError.
|
|
64
|
+
* @param message - Error message
|
|
65
|
+
* @param url - The request URL
|
|
66
|
+
* @param cause - The underlying network error
|
|
67
|
+
*/
|
|
68
|
+
constructor(message, url, cause) {
|
|
69
|
+
super(`Network error for ${url}: ${message}`, cause);
|
|
70
|
+
this.name = 'NetworkError';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wDAAwD;AAExD;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAInC;;;;OAIG;IACH,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAED,6CAA6C;AAE7C;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,UAAU;IAQvC;;;;;;OAMG;IACH,YAAY,MAAc,EAAE,UAAkB,EAAE,IAAa,EAAE,GAAW;QACxE,KAAK,CAAC,QAAQ,MAAM,IAAI,UAAU,OAAO,GAAG,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C;;;;;OAKG;IACH,YAAY,OAAe,EAAE,GAAW,EAAE,KAAa;QACrD,KAAK,CAAC,qBAAqB,GAAG,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,36 +1,65 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
2
|
+
* @fileoverview Main library entry point with "pit of success" architecture.
|
|
3
3
|
*
|
|
4
|
-
* This module exports
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* This module exports everything users need in order of discoverability:
|
|
5
|
+
* 1. Pre-configured client with smart defaults (80% of users start here)
|
|
6
|
+
* 2. FetchClient for custom configurations
|
|
7
|
+
* 3. Individual middleware functions for specific needs
|
|
8
|
+
* 4. Pre-built middleware stacks for common scenarios
|
|
9
|
+
* 5. Types for TypeScript users
|
|
8
10
|
*/
|
|
9
|
-
import { FetchClient } from './client';
|
|
11
|
+
import { FetchClient } from './client/fetch-client';
|
|
10
12
|
/**
|
|
11
|
-
* Pre-configured fetch client
|
|
13
|
+
* 🎯 PIT OF SUCCESS: Pre-configured fetch client (Level 1 - 80% of users)
|
|
12
14
|
*
|
|
13
|
-
* This client is ready to use
|
|
14
|
-
* -
|
|
15
|
-
* - Automatic
|
|
16
|
-
* -
|
|
15
|
+
* This client is ready to use out of the box with production-ready middleware:
|
|
16
|
+
* - Authentication support (configure your token provider)
|
|
17
|
+
* - Automatic retries with exponential backoff
|
|
18
|
+
* - Response caching for GET requests
|
|
19
|
+
* - Request/response logging
|
|
20
|
+
* - Rate limiting protection
|
|
21
|
+
* - Same-origin credentials for session-based auth (cookies)
|
|
17
22
|
*
|
|
18
|
-
* @example
|
|
23
|
+
* @example Just import and use:
|
|
19
24
|
* ```typescript
|
|
20
25
|
* import api from '@fgrzl/fetch';
|
|
21
26
|
*
|
|
22
|
-
* //
|
|
27
|
+
* // Works immediately - no setup required!
|
|
23
28
|
* const users = await api.get('/api/users');
|
|
24
|
-
*
|
|
25
|
-
* // POST request (automatically includes CSRF token)
|
|
26
29
|
* const newUser = await api.post('/api/users', { name: 'John' });
|
|
30
|
+
*
|
|
31
|
+
* // With query parameters
|
|
32
|
+
* const activeUsers = await api.get('/api/users', { status: 'active', limit: 10 });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example Configure authentication:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import api from '@fgrzl/fetch';
|
|
38
|
+
* import { useAuthentication } from '@fgrzl/fetch/middleware';
|
|
39
|
+
*
|
|
40
|
+
* const authClient = useAuthentication(api, {
|
|
41
|
+
* tokenProvider: () => localStorage.getItem('auth-token') || ''
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example For token-only auth (no cookies):
|
|
46
|
+
* ```typescript
|
|
47
|
+
* import { FetchClient, useAuthentication } from '@fgrzl/fetch';
|
|
48
|
+
*
|
|
49
|
+
* const tokenClient = useAuthentication(new FetchClient({
|
|
50
|
+
* credentials: 'omit' // Don't send cookies
|
|
51
|
+
* }), {
|
|
52
|
+
* tokenProvider: () => getJWTToken()
|
|
53
|
+
* });
|
|
27
54
|
* ```
|
|
28
55
|
*/
|
|
29
56
|
declare const api: FetchClient;
|
|
30
57
|
export default api;
|
|
58
|
+
export { FetchClient } from './client/fetch-client';
|
|
31
59
|
export { FetchError, HttpError, NetworkError } from './errors';
|
|
32
|
-
export {
|
|
33
|
-
export
|
|
34
|
-
export {
|
|
35
|
-
export {
|
|
36
|
-
export type {
|
|
60
|
+
export { useAuthentication, createAuthenticationMiddleware, useAuthorization, createAuthorizationMiddleware, useCache, createCacheMiddleware, useCSRF, useLogging, createLoggingMiddleware, useRateLimit, createRateLimitMiddleware, useRetry, createRetryMiddleware, } from './middleware';
|
|
61
|
+
export { useProductionStack, useDevelopmentStack, useBasicStack, } from './middleware';
|
|
62
|
+
export type { FetchMiddleware as InterceptMiddleware } from './client/fetch-client';
|
|
63
|
+
export type { FetchResponse, FetchClientOptions } from './client/types';
|
|
64
|
+
export type { AuthenticationOptions, AuthTokenProvider, AuthorizationOptions, UnauthorizedHandler, CacheOptions, CacheStorage, CacheEntry, CacheKeyGenerator, LoggingOptions, Logger, LogLevel, RateLimitOptions, RateLimitAlgorithm, RetryOptions, } from './middleware';
|
|
65
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,QAAA,MAAM,GAAG,aAwBR,CAAC;AAGF,eAAe,GAAG,CAAC;AAGnB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG/D,OAAO,EAEL,iBAAiB,EACjB,8BAA8B,EAE9B,gBAAgB,EAChB,6BAA6B,EAE7B,QAAQ,EACR,qBAAqB,EAErB,OAAO,EAEP,UAAU,EACV,uBAAuB,EAEvB,YAAY,EACZ,yBAAyB,EAEzB,QAAQ,EACR,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,YAAY,EAEV,qBAAqB,EACrB,iBAAiB,EAEjB,oBAAoB,EACpB,mBAAmB,EAEnB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,EAEjB,cAAc,EACd,MAAM,EACN,QAAQ,EAER,gBAAgB,EAChB,kBAAkB,EAElB,YAAY,GACb,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,58 +1,102 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
* @fileoverview
|
|
2
|
+
* @fileoverview Main library entry point with "pit of success" architecture.
|
|
4
3
|
*
|
|
5
|
-
* This module exports
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* This module exports everything users need in order of discoverability:
|
|
5
|
+
* 1. Pre-configured client with smart defaults (80% of users start here)
|
|
6
|
+
* 2. FetchClient for custom configurations
|
|
7
|
+
* 3. Individual middleware functions for specific needs
|
|
8
|
+
* 4. Pre-built middleware stacks for common scenarios
|
|
9
|
+
* 5. Types for TypeScript users
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const client_1 = require("./client");
|
|
13
|
-
const csrf_1 = require("./csrf");
|
|
14
|
-
const unauthorized_1 = require("./unauthorized");
|
|
11
|
+
import { FetchClient } from './client/fetch-client';
|
|
12
|
+
import { useProductionStack } from './middleware';
|
|
15
13
|
/**
|
|
16
|
-
* Pre-configured fetch client
|
|
14
|
+
* 🎯 PIT OF SUCCESS: Pre-configured fetch client (Level 1 - 80% of users)
|
|
17
15
|
*
|
|
18
|
-
* This client is ready to use
|
|
19
|
-
* -
|
|
20
|
-
* - Automatic
|
|
21
|
-
* -
|
|
16
|
+
* This client is ready to use out of the box with production-ready middleware:
|
|
17
|
+
* - Authentication support (configure your token provider)
|
|
18
|
+
* - Automatic retries with exponential backoff
|
|
19
|
+
* - Response caching for GET requests
|
|
20
|
+
* - Request/response logging
|
|
21
|
+
* - Rate limiting protection
|
|
22
|
+
* - Same-origin credentials for session-based auth (cookies)
|
|
22
23
|
*
|
|
23
|
-
* @example
|
|
24
|
+
* @example Just import and use:
|
|
24
25
|
* ```typescript
|
|
25
26
|
* import api from '@fgrzl/fetch';
|
|
26
27
|
*
|
|
27
|
-
* //
|
|
28
|
+
* // Works immediately - no setup required!
|
|
28
29
|
* const users = await api.get('/api/users');
|
|
29
|
-
*
|
|
30
|
-
* // POST request (automatically includes CSRF token)
|
|
31
30
|
* const newUser = await api.post('/api/users', { name: 'John' });
|
|
31
|
+
*
|
|
32
|
+
* // With query parameters
|
|
33
|
+
* const activeUsers = await api.get('/api/users', { status: 'active', limit: 10 });
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example Configure authentication:
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import api from '@fgrzl/fetch';
|
|
39
|
+
* import { useAuthentication } from '@fgrzl/fetch/middleware';
|
|
40
|
+
*
|
|
41
|
+
* const authClient = useAuthentication(api, {
|
|
42
|
+
* tokenProvider: () => localStorage.getItem('auth-token') || ''
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @example For token-only auth (no cookies):
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { FetchClient, useAuthentication } from '@fgrzl/fetch';
|
|
49
|
+
*
|
|
50
|
+
* const tokenClient = useAuthentication(new FetchClient({
|
|
51
|
+
* credentials: 'omit' // Don't send cookies
|
|
52
|
+
* }), {
|
|
53
|
+
* tokenProvider: () => getJWTToken()
|
|
54
|
+
* });
|
|
32
55
|
* ```
|
|
33
56
|
*/
|
|
34
|
-
const api = new
|
|
57
|
+
const api = useProductionStack(new FetchClient({
|
|
58
|
+
// Smart default: include cookies for session-based auth
|
|
59
|
+
// Can be overridden by creating a custom FetchClient
|
|
35
60
|
credentials: 'same-origin',
|
|
61
|
+
}), {
|
|
62
|
+
// Smart defaults - users can override as needed
|
|
63
|
+
retry: {
|
|
64
|
+
maxRetries: 2,
|
|
65
|
+
delay: 1000,
|
|
66
|
+
},
|
|
67
|
+
cache: {
|
|
68
|
+
ttl: 5 * 60 * 1000, // 5 minutes
|
|
69
|
+
methods: ['GET'],
|
|
70
|
+
},
|
|
71
|
+
logging: {
|
|
72
|
+
level: 'info',
|
|
73
|
+
},
|
|
74
|
+
rateLimit: {
|
|
75
|
+
maxRequests: 100,
|
|
76
|
+
windowMs: 60 * 1000, // 100 requests per minute
|
|
77
|
+
},
|
|
36
78
|
});
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
79
|
+
// 🎯 LEVEL 1: Export the production-ready client as default
|
|
80
|
+
export default api;
|
|
81
|
+
// 🎯 LEVEL 2: FetchClient for custom configurations
|
|
82
|
+
export { FetchClient } from './client/fetch-client';
|
|
83
|
+
export { FetchError, HttpError, NetworkError } from './errors';
|
|
84
|
+
// 🎯 LEVEL 3: Individual middleware functions (import from our comprehensive middleware index)
|
|
85
|
+
export {
|
|
86
|
+
// Authentication
|
|
87
|
+
useAuthentication, createAuthenticationMiddleware,
|
|
88
|
+
// Authorization
|
|
89
|
+
useAuthorization, createAuthorizationMiddleware,
|
|
90
|
+
// Cache
|
|
91
|
+
useCache, createCacheMiddleware,
|
|
92
|
+
// CSRF
|
|
93
|
+
useCSRF,
|
|
94
|
+
// Logging
|
|
95
|
+
useLogging, createLoggingMiddleware,
|
|
96
|
+
// Rate Limiting
|
|
97
|
+
useRateLimit, createRateLimitMiddleware,
|
|
98
|
+
// Retry
|
|
99
|
+
useRetry, createRetryMiddleware, } from './middleware';
|
|
100
|
+
// 🎯 LEVEL 4: Pre-built middleware stacks for common scenarios
|
|
101
|
+
export { useProductionStack, useDevelopmentStack, useBasicStack, } from './middleware';
|
|
58
102
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,GAAG,GAAG,kBAAkB,CAC5B,IAAI,WAAW,CAAC;IACd,wDAAwD;IACxD,qDAAqD;IACrD,WAAW,EAAE,aAAa;CAC3B,CAAC,EACF;IACE,gDAAgD;IAChD,KAAK,EAAE;QACL,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,IAAI;KACZ;IACD,KAAK,EAAE;QACL,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;QAChC,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;KACd;IACD,SAAS,EAAE;QACT,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,0BAA0B;KAChD;CACF,CACF,CAAC;AAEF,4DAA4D;AAC5D,eAAe,GAAG,CAAC;AAEnB,oDAAoD;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE/D,+FAA+F;AAC/F,OAAO;AACL,iBAAiB;AACjB,iBAAiB,EACjB,8BAA8B;AAC9B,gBAAgB;AAChB,gBAAgB,EAChB,6BAA6B;AAC7B,QAAQ;AACR,QAAQ,EACR,qBAAqB;AACrB,OAAO;AACP,OAAO;AACP,UAAU;AACV,UAAU,EACV,uBAAuB;AACvB,gBAAgB;AAChB,YAAY,EACZ,yBAAyB;AACzB,QAAQ;AACR,QAAQ,EACR,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,+DAA+D;AAC/D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,GACd,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Authentication middleware implementation.
|
|
3
|
+
*/
|
|
4
|
+
import type { FetchMiddleware } from '../../client/fetch-client';
|
|
5
|
+
import type { AuthenticationOptions } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Creates authentication middleware with smart defaults.
|
|
8
|
+
* Automatically adds Bearer tokens to requests.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Authentication configuration options
|
|
11
|
+
* @returns Authentication middleware for use with FetchClient
|
|
12
|
+
*
|
|
13
|
+
* @example Basic usage:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const authClient = useAuthentication(client, {
|
|
16
|
+
* tokenProvider: () => localStorage.getItem('token') || ''
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Async token provider:
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const authClient = useAuthentication(client, {
|
|
23
|
+
* tokenProvider: async () => {
|
|
24
|
+
* const token = await getAuthToken();
|
|
25
|
+
* return token || '';
|
|
26
|
+
* }
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function createAuthenticationMiddleware(options: AuthenticationOptions): FetchMiddleware;
|
|
31
|
+
//# sourceMappingURL=authentication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../src/middleware/authentication/authentication.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAoCrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qBAAqB,GAC7B,eAAe,CAkDjB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Authentication middleware implementation.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a URL should skip authentication based on configured patterns.
|
|
6
|
+
*/
|
|
7
|
+
function shouldSkipAuth(url, skipPatterns = []) {
|
|
8
|
+
return skipPatterns.some((pattern) => {
|
|
9
|
+
if (typeof pattern === 'string') {
|
|
10
|
+
return url.includes(pattern);
|
|
11
|
+
}
|
|
12
|
+
return pattern.test(url);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a URL should include authentication based on configured patterns.
|
|
17
|
+
*/
|
|
18
|
+
function shouldIncludeAuth(url, includePatterns) {
|
|
19
|
+
if (!includePatterns || includePatterns.length === 0) {
|
|
20
|
+
return true; // Include by default if no patterns specified
|
|
21
|
+
}
|
|
22
|
+
return includePatterns.some((pattern) => {
|
|
23
|
+
if (typeof pattern === 'string') {
|
|
24
|
+
return url.includes(pattern);
|
|
25
|
+
}
|
|
26
|
+
return pattern.test(url);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates authentication middleware with smart defaults.
|
|
31
|
+
* Automatically adds Bearer tokens to requests.
|
|
32
|
+
*
|
|
33
|
+
* @param options - Authentication configuration options
|
|
34
|
+
* @returns Authentication middleware for use with FetchClient
|
|
35
|
+
*
|
|
36
|
+
* @example Basic usage:
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const authClient = useAuthentication(client, {
|
|
39
|
+
* tokenProvider: () => localStorage.getItem('token') || ''
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @example Async token provider:
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const authClient = useAuthentication(client, {
|
|
46
|
+
* tokenProvider: async () => {
|
|
47
|
+
* const token = await getAuthToken();
|
|
48
|
+
* return token || '';
|
|
49
|
+
* }
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export function createAuthenticationMiddleware(options) {
|
|
54
|
+
const { tokenProvider, headerName = 'Authorization', tokenType = 'Bearer', skipPatterns = [], includePatterns, } = options;
|
|
55
|
+
return async (request, next) => {
|
|
56
|
+
const url = request.url || '';
|
|
57
|
+
const parsedUrl = new URL(url);
|
|
58
|
+
const pathname = parsedUrl.pathname;
|
|
59
|
+
// Skip authentication if:
|
|
60
|
+
// 1. URL matches a skip pattern
|
|
61
|
+
// 2. URL doesn't match include patterns (if specified)
|
|
62
|
+
if (shouldSkipAuth(pathname, skipPatterns) ||
|
|
63
|
+
!shouldIncludeAuth(pathname, includePatterns)) {
|
|
64
|
+
return next(request);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
// Get auth token (may be async)
|
|
68
|
+
const token = await tokenProvider();
|
|
69
|
+
// Skip if no token available
|
|
70
|
+
if (!token) {
|
|
71
|
+
return next(request);
|
|
72
|
+
}
|
|
73
|
+
// Add auth header to request
|
|
74
|
+
const headers = new Headers(request.headers);
|
|
75
|
+
headers.set(headerName, `${tokenType} ${token}`);
|
|
76
|
+
// Create modified request with auth header
|
|
77
|
+
const modifiedRequest = {
|
|
78
|
+
...request,
|
|
79
|
+
headers,
|
|
80
|
+
};
|
|
81
|
+
return next(modifiedRequest);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// If token provider fails, proceed without auth
|
|
85
|
+
// This ensures network requests don't fail due to auth issues
|
|
86
|
+
return next(request);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=authentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../../src/middleware/authentication/authentication.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;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;;GAEG;AACH,SAAS,iBAAiB,CACxB,GAAW,EACX,eAAqC;IAErC,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,CAAC,8CAA8C;IAC7D,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACtC,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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAA8B;IAE9B,MAAM,EACJ,aAAa,EACb,UAAU,GAAG,eAAe,EAC5B,SAAS,GAAG,QAAQ,EACpB,YAAY,GAAG,EAAE,EACjB,eAAe,GAChB,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEpC,0BAA0B;QAC1B,gCAAgC;QAChC,uDAAuD;QACvD,IACE,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC;YACtC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,EAC7C,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;YAEpC,6BAA6B;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,6BAA6B;YAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;YAEjD,2CAA2C;YAC3C,MAAM,eAAe,GAAG;gBACtB,GAAG,OAAO;gBACV,OAAO;aACR,CAAC;YAEF,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;YAChD,8DAA8D;YAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Authentication middleware - "pit of success" API.
|
|
3
|
+
*/
|
|
4
|
+
import type { FetchClient } from '../../client/fetch-client';
|
|
5
|
+
import type { AuthenticationOptions } from './types';
|
|
6
|
+
export type { AuthenticationOptions, AuthTokenProvider } from './types';
|
|
7
|
+
export { createAuthenticationMiddleware } from './authentication';
|
|
8
|
+
/**
|
|
9
|
+
* "Pit of success" API for adding authentication to a FetchClient.
|
|
10
|
+
* Automatically adds Bearer tokens to requests.
|
|
11
|
+
*
|
|
12
|
+
* @param client - The FetchClient to add authentication to
|
|
13
|
+
* @param options - Authentication configuration
|
|
14
|
+
* @returns A new FetchClient with authentication middleware
|
|
15
|
+
*
|
|
16
|
+
* @example Basic token from localStorage:
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const authClient = useAuthentication(client, {
|
|
19
|
+
* tokenProvider: () => localStorage.getItem('auth-token') || ''
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example Async token with refresh:
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const authClient = useAuthentication(client, {
|
|
26
|
+
* tokenProvider: async () => {
|
|
27
|
+
* let token = localStorage.getItem('auth-token');
|
|
28
|
+
* if (!token || isExpired(token)) {
|
|
29
|
+
* token = await refreshToken();
|
|
30
|
+
* }
|
|
31
|
+
* return token || '';
|
|
32
|
+
* }
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function useAuthentication(client: FetchClient, options: AuthenticationOptions): FetchClient;
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/authentication/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,qBAAqB,GAC7B,WAAW,CAEb"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Authentication middleware - "pit of success" API.
|
|
3
|
+
*/
|
|
4
|
+
import { createAuthenticationMiddleware } from './authentication';
|
|
5
|
+
export { createAuthenticationMiddleware } from './authentication';
|
|
6
|
+
/**
|
|
7
|
+
* "Pit of success" API for adding authentication to a FetchClient.
|
|
8
|
+
* Automatically adds Bearer tokens to requests.
|
|
9
|
+
*
|
|
10
|
+
* @param client - The FetchClient to add authentication to
|
|
11
|
+
* @param options - Authentication configuration
|
|
12
|
+
* @returns A new FetchClient with authentication middleware
|
|
13
|
+
*
|
|
14
|
+
* @example Basic token from localStorage:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const authClient = useAuthentication(client, {
|
|
17
|
+
* tokenProvider: () => localStorage.getItem('auth-token') || ''
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example Async token with refresh:
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const authClient = useAuthentication(client, {
|
|
24
|
+
* tokenProvider: async () => {
|
|
25
|
+
* let token = localStorage.getItem('auth-token');
|
|
26
|
+
* if (!token || isExpired(token)) {
|
|
27
|
+
* token = await refreshToken();
|
|
28
|
+
* }
|
|
29
|
+
* return token || '';
|
|
30
|
+
* }
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function useAuthentication(client, options) {
|
|
35
|
+
return client.use(createAuthenticationMiddleware(options));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/authentication/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAIlE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,OAA8B;IAE9B,OAAO,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|