@fgrzl/fetch 1.1.0-alpha.7 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/CONTRIBUTING.md +327 -0
- package/README.md +50 -21
- package/dist/cjs/index.js +1110 -105
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +2 -0
- package/dist/cjs/index.min.js.map +1 -0
- package/dist/index.d.ts +1381 -10
- package/dist/index.js +1066 -91
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/package.json +14 -5
- package/dist/cjs/client/fetch-client.d.ts +0 -189
- package/dist/cjs/client/fetch-client.d.ts.map +0 -1
- package/dist/cjs/client/fetch-client.js +0 -339
- package/dist/cjs/client/fetch-client.js.map +0 -1
- package/dist/cjs/client/index.d.ts +0 -11
- package/dist/cjs/client/index.d.ts.map +0 -1
- package/dist/cjs/client/index.js +0 -14
- package/dist/cjs/client/index.js.map +0 -1
- package/dist/cjs/client/types.d.ts +0 -63
- package/dist/cjs/client/types.d.ts.map +0 -1
- package/dist/cjs/client/types.js +0 -9
- package/dist/cjs/client/types.js.map +0 -1
- package/dist/cjs/errors/index.d.ts +0 -64
- package/dist/cjs/errors/index.d.ts.map +0 -1
- package/dist/cjs/errors/index.js +0 -79
- package/dist/cjs/errors/index.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -65
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/middleware/authentication/authentication.d.ts +0 -31
- package/dist/cjs/middleware/authentication/authentication.d.ts.map +0 -1
- package/dist/cjs/middleware/authentication/authentication.js +0 -93
- package/dist/cjs/middleware/authentication/authentication.js.map +0 -1
- package/dist/cjs/middleware/authentication/index.d.ts +0 -37
- package/dist/cjs/middleware/authentication/index.d.ts.map +0 -1
- package/dist/cjs/middleware/authentication/index.js +0 -42
- package/dist/cjs/middleware/authentication/index.js.map +0 -1
- package/dist/cjs/middleware/authentication/types.d.ts +0 -73
- package/dist/cjs/middleware/authentication/types.d.ts.map +0 -1
- package/dist/cjs/middleware/authentication/types.js +0 -6
- package/dist/cjs/middleware/authentication/types.js.map +0 -1
- package/dist/cjs/middleware/authorization/authorization.d.ts +0 -30
- package/dist/cjs/middleware/authorization/authorization.d.ts.map +0 -1
- package/dist/cjs/middleware/authorization/authorization.js +0 -82
- package/dist/cjs/middleware/authorization/authorization.js.map +0 -1
- package/dist/cjs/middleware/authorization/index.d.ts +0 -36
- package/dist/cjs/middleware/authorization/index.d.ts.map +0 -1
- package/dist/cjs/middleware/authorization/index.js +0 -41
- package/dist/cjs/middleware/authorization/index.js.map +0 -1
- package/dist/cjs/middleware/authorization/types.d.ts +0 -67
- package/dist/cjs/middleware/authorization/types.d.ts.map +0 -1
- package/dist/cjs/middleware/authorization/types.js +0 -6
- package/dist/cjs/middleware/authorization/types.js.map +0 -1
- package/dist/cjs/middleware/cache/cache.d.ts +0 -41
- package/dist/cjs/middleware/cache/cache.d.ts.map +0 -1
- package/dist/cjs/middleware/cache/cache.js +0 -191
- package/dist/cjs/middleware/cache/cache.js.map +0 -1
- package/dist/cjs/middleware/cache/index.d.ts +0 -44
- package/dist/cjs/middleware/cache/index.d.ts.map +0 -1
- package/dist/cjs/middleware/cache/index.js +0 -50
- package/dist/cjs/middleware/cache/index.js.map +0 -1
- package/dist/cjs/middleware/cache/types.d.ts +0 -89
- package/dist/cjs/middleware/cache/types.d.ts.map +0 -1
- package/dist/cjs/middleware/cache/types.js +0 -6
- package/dist/cjs/middleware/cache/types.js.map +0 -1
- package/dist/cjs/middleware/csrf/csrf.d.ts +0 -34
- package/dist/cjs/middleware/csrf/csrf.d.ts.map +0 -1
- package/dist/cjs/middleware/csrf/csrf.js +0 -94
- package/dist/cjs/middleware/csrf/csrf.js.map +0 -1
- package/dist/cjs/middleware/csrf/index.d.ts +0 -57
- package/dist/cjs/middleware/csrf/index.d.ts.map +0 -1
- package/dist/cjs/middleware/csrf/index.js +0 -62
- package/dist/cjs/middleware/csrf/index.js.map +0 -1
- package/dist/cjs/middleware/csrf/types.d.ts +0 -57
- package/dist/cjs/middleware/csrf/types.d.ts.map +0 -1
- package/dist/cjs/middleware/csrf/types.js +0 -6
- package/dist/cjs/middleware/csrf/types.js.map +0 -1
- package/dist/cjs/middleware/index.d.ts +0 -115
- package/dist/cjs/middleware/index.d.ts.map +0 -1
- package/dist/cjs/middleware/index.js +0 -153
- package/dist/cjs/middleware/index.js.map +0 -1
- package/dist/cjs/middleware/logging/index.d.ts +0 -42
- package/dist/cjs/middleware/logging/index.d.ts.map +0 -1
- package/dist/cjs/middleware/logging/index.js +0 -47
- package/dist/cjs/middleware/logging/index.js.map +0 -1
- package/dist/cjs/middleware/logging/logging.d.ts +0 -29
- package/dist/cjs/middleware/logging/logging.d.ts.map +0 -1
- package/dist/cjs/middleware/logging/logging.js +0 -171
- package/dist/cjs/middleware/logging/logging.js.map +0 -1
- package/dist/cjs/middleware/logging/types.d.ts +0 -90
- package/dist/cjs/middleware/logging/types.d.ts.map +0 -1
- package/dist/cjs/middleware/logging/types.js +0 -6
- package/dist/cjs/middleware/logging/types.js.map +0 -1
- package/dist/cjs/middleware/rate-limit/index.d.ts +0 -16
- package/dist/cjs/middleware/rate-limit/index.d.ts.map +0 -1
- package/dist/cjs/middleware/rate-limit/index.js +0 -21
- package/dist/cjs/middleware/rate-limit/index.js.map +0 -1
- package/dist/cjs/middleware/rate-limit/rate-limit.d.ts +0 -14
- package/dist/cjs/middleware/rate-limit/rate-limit.d.ts.map +0 -1
- package/dist/cjs/middleware/rate-limit/rate-limit.js +0 -87
- package/dist/cjs/middleware/rate-limit/rate-limit.js.map +0 -1
- package/dist/cjs/middleware/rate-limit/types.d.ts +0 -97
- package/dist/cjs/middleware/rate-limit/types.d.ts.map +0 -1
- package/dist/cjs/middleware/rate-limit/types.js +0 -6
- package/dist/cjs/middleware/rate-limit/types.js.map +0 -1
- package/dist/cjs/middleware/retry/index.d.ts +0 -6
- package/dist/cjs/middleware/retry/index.d.ts.map +0 -1
- package/dist/cjs/middleware/retry/index.js +0 -11
- package/dist/cjs/middleware/retry/index.js.map +0 -1
- package/dist/cjs/middleware/retry/retry.d.ts +0 -39
- package/dist/cjs/middleware/retry/retry.d.ts.map +0 -1
- package/dist/cjs/middleware/retry/retry.js +0 -144
- package/dist/cjs/middleware/retry/retry.js.map +0 -1
- package/dist/cjs/middleware/retry/types.d.ts +0 -61
- package/dist/cjs/middleware/retry/types.d.ts.map +0 -1
- package/dist/cjs/middleware/retry/types.js +0 -6
- package/dist/cjs/middleware/retry/types.js.map +0 -1
- package/dist/client/fetch-client.d.ts +0 -189
- package/dist/client/fetch-client.d.ts.map +0 -1
- package/dist/client/fetch-client.js +0 -335
- package/dist/client/fetch-client.js.map +0 -1
- package/dist/client/index.d.ts +0 -11
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -10
- package/dist/client/index.js.map +0 -1
- package/dist/client/types.d.ts +0 -63
- package/dist/client/types.d.ts.map +0 -1
- package/dist/client/types.js +0 -8
- package/dist/client/types.js.map +0 -1
- package/dist/errors/index.d.ts +0 -64
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -73
- package/dist/errors/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/middleware/authentication/authentication.d.ts +0 -31
- package/dist/middleware/authentication/authentication.d.ts.map +0 -1
- package/dist/middleware/authentication/authentication.js +0 -90
- package/dist/middleware/authentication/authentication.js.map +0 -1
- package/dist/middleware/authentication/index.d.ts +0 -37
- package/dist/middleware/authentication/index.d.ts.map +0 -1
- package/dist/middleware/authentication/index.js +0 -37
- package/dist/middleware/authentication/index.js.map +0 -1
- package/dist/middleware/authentication/types.d.ts +0 -73
- package/dist/middleware/authentication/types.d.ts.map +0 -1
- package/dist/middleware/authentication/types.js +0 -5
- package/dist/middleware/authentication/types.js.map +0 -1
- package/dist/middleware/authorization/authorization.d.ts +0 -30
- package/dist/middleware/authorization/authorization.d.ts.map +0 -1
- package/dist/middleware/authorization/authorization.js +0 -79
- package/dist/middleware/authorization/authorization.js.map +0 -1
- package/dist/middleware/authorization/index.d.ts +0 -36
- package/dist/middleware/authorization/index.d.ts.map +0 -1
- package/dist/middleware/authorization/index.js +0 -36
- package/dist/middleware/authorization/index.js.map +0 -1
- package/dist/middleware/authorization/types.d.ts +0 -67
- package/dist/middleware/authorization/types.d.ts.map +0 -1
- package/dist/middleware/authorization/types.js +0 -5
- package/dist/middleware/authorization/types.js.map +0 -1
- package/dist/middleware/cache/cache.d.ts +0 -41
- package/dist/middleware/cache/cache.d.ts.map +0 -1
- package/dist/middleware/cache/cache.js +0 -186
- package/dist/middleware/cache/cache.js.map +0 -1
- package/dist/middleware/cache/index.d.ts +0 -44
- package/dist/middleware/cache/index.d.ts.map +0 -1
- package/dist/middleware/cache/index.js +0 -44
- package/dist/middleware/cache/index.js.map +0 -1
- package/dist/middleware/cache/types.d.ts +0 -89
- package/dist/middleware/cache/types.d.ts.map +0 -1
- package/dist/middleware/cache/types.js +0 -5
- package/dist/middleware/cache/types.js.map +0 -1
- package/dist/middleware/csrf/csrf.d.ts +0 -34
- package/dist/middleware/csrf/csrf.d.ts.map +0 -1
- package/dist/middleware/csrf/csrf.js +0 -91
- package/dist/middleware/csrf/csrf.js.map +0 -1
- package/dist/middleware/csrf/index.d.ts +0 -57
- package/dist/middleware/csrf/index.d.ts.map +0 -1
- package/dist/middleware/csrf/index.js +0 -57
- package/dist/middleware/csrf/index.js.map +0 -1
- package/dist/middleware/csrf/types.d.ts +0 -57
- package/dist/middleware/csrf/types.d.ts.map +0 -1
- package/dist/middleware/csrf/types.js +0 -5
- package/dist/middleware/csrf/types.js.map +0 -1
- package/dist/middleware/index.d.ts +0 -115
- package/dist/middleware/index.d.ts.map +0 -1
- package/dist/middleware/index.js +0 -134
- package/dist/middleware/index.js.map +0 -1
- package/dist/middleware/logging/index.d.ts +0 -42
- package/dist/middleware/logging/index.d.ts.map +0 -1
- package/dist/middleware/logging/index.js +0 -42
- package/dist/middleware/logging/index.js.map +0 -1
- package/dist/middleware/logging/logging.d.ts +0 -29
- package/dist/middleware/logging/logging.d.ts.map +0 -1
- package/dist/middleware/logging/logging.js +0 -168
- package/dist/middleware/logging/logging.js.map +0 -1
- package/dist/middleware/logging/types.d.ts +0 -90
- package/dist/middleware/logging/types.d.ts.map +0 -1
- package/dist/middleware/logging/types.js +0 -5
- package/dist/middleware/logging/types.js.map +0 -1
- package/dist/middleware/rate-limit/index.d.ts +0 -16
- package/dist/middleware/rate-limit/index.d.ts.map +0 -1
- package/dist/middleware/rate-limit/index.js +0 -16
- package/dist/middleware/rate-limit/index.js.map +0 -1
- package/dist/middleware/rate-limit/rate-limit.d.ts +0 -14
- package/dist/middleware/rate-limit/rate-limit.d.ts.map +0 -1
- package/dist/middleware/rate-limit/rate-limit.js +0 -84
- package/dist/middleware/rate-limit/rate-limit.js.map +0 -1
- package/dist/middleware/rate-limit/types.d.ts +0 -97
- package/dist/middleware/rate-limit/types.d.ts.map +0 -1
- package/dist/middleware/rate-limit/types.js +0 -5
- package/dist/middleware/rate-limit/types.js.map +0 -1
- package/dist/middleware/retry/index.d.ts +0 -6
- package/dist/middleware/retry/index.d.ts.map +0 -1
- package/dist/middleware/retry/index.js +0 -6
- package/dist/middleware/retry/index.js.map +0 -1
- package/dist/middleware/retry/retry.d.ts +0 -39
- package/dist/middleware/retry/retry.d.ts.map +0 -1
- package/dist/middleware/retry/retry.js +0 -141
- package/dist/middleware/retry/retry.js.map +0 -1
- package/dist/middleware/retry/types.d.ts +0 -61
- package/dist/middleware/retry/types.d.ts.map +0 -1
- package/dist/middleware/retry/types.js +0 -5
- package/dist/middleware/retry/types.js.map +0 -1
|
@@ -1,90 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Authentication middleware types and configuration.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Authentication token provider function.
|
|
6
|
-
* Should return the current auth token or empty string if not available.
|
|
7
|
-
*/
|
|
8
|
-
export type AuthTokenProvider = () => string | Promise<string>;
|
|
9
|
-
/**
|
|
10
|
-
* Authentication configuration options - optimized for "pit of success".
|
|
11
|
-
*
|
|
12
|
-
* Smart defaults:
|
|
13
|
-
* - Uses standard Authorization header with Bearer token
|
|
14
|
-
* - Applies to all requests by default
|
|
15
|
-
* - Graceful handling when token is unavailable
|
|
16
|
-
*/
|
|
17
|
-
export interface AuthenticationOptions {
|
|
18
|
-
/**
|
|
19
|
-
* Function to get the current authentication token.
|
|
20
|
-
* Can be synchronous or asynchronous.
|
|
21
|
-
*
|
|
22
|
-
* @returns The auth token or empty string if not available
|
|
23
|
-
*
|
|
24
|
-
* @example Token from localStorage:
|
|
25
|
-
* ```typescript
|
|
26
|
-
* const getToken = () => localStorage.getItem('auth-token') || '';
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @example Async token refresh:
|
|
30
|
-
* ```typescript
|
|
31
|
-
* const getToken = async () => {
|
|
32
|
-
* const token = localStorage.getItem('auth-token');
|
|
33
|
-
* if (!token || isExpired(token)) {
|
|
34
|
-
* return await refreshToken();
|
|
35
|
-
* }
|
|
36
|
-
* return token;
|
|
37
|
-
* };
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
tokenProvider: AuthTokenProvider;
|
|
41
|
-
/**
|
|
42
|
-
* Header name for the authentication token (default: 'Authorization')
|
|
43
|
-
* The token will be prefixed with the tokenType
|
|
44
|
-
*/
|
|
45
|
-
headerName?: string;
|
|
46
|
-
/**
|
|
47
|
-
* Token type prefix (default: 'Bearer')
|
|
48
|
-
* Common alternatives: 'Token', 'JWT', 'ApiKey'
|
|
49
|
-
*/
|
|
50
|
-
tokenType?: string;
|
|
51
|
-
/**
|
|
52
|
-
* Skip authentication for requests matching these URL patterns
|
|
53
|
-
* Useful for public endpoints that don't need auth
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* skipPatterns: [/^\/public\//, '/health', '/login']
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
skipPatterns?: (RegExp | string)[];
|
|
61
|
-
/**
|
|
62
|
-
* Only apply authentication to requests matching these patterns
|
|
63
|
-
* If specified, only these patterns will get auth headers
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* includePatterns: [/^\/api\//, '/graphql']
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
includePatterns?: (RegExp | string)[];
|
|
71
|
-
}
|
|
72
|
-
export {};
|
|
73
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/authentication/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,EAAE,iBAAiB,CAAC;IAEjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAEnC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACvC;AAGD,OAAO,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/middleware/authentication/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Authorization middleware implementation.
|
|
3
|
-
*/
|
|
4
|
-
import type { FetchMiddleware } from '../../client/fetch-client';
|
|
5
|
-
import type { AuthorizationOptions } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Creates authorization middleware with smart defaults.
|
|
8
|
-
* Handles 401/403 responses by calling configured handlers.
|
|
9
|
-
*
|
|
10
|
-
* @param options - Authorization configuration options
|
|
11
|
-
* @returns Authorization middleware for use with FetchClient
|
|
12
|
-
*
|
|
13
|
-
* @example Basic redirect on 401:
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const authzClient = useAuthorization(client, {
|
|
16
|
-
* onUnauthorized: () => window.location.href = '/login'
|
|
17
|
-
* });
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @example Handle both 401 and 403:
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const authzClient = useAuthorization(client, {
|
|
23
|
-
* onUnauthorized: () => redirectToLogin(),
|
|
24
|
-
* onForbidden: () => showAccessDeniedMessage(),
|
|
25
|
-
* statusCodes: [401, 403]
|
|
26
|
-
* });
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export declare function createAuthorizationMiddleware(options: AuthorizationOptions): FetchMiddleware;
|
|
30
|
-
//# sourceMappingURL=authorization.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../src/middleware/authorization/authorization.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAyBpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oBAAoB,GAC5B,eAAe,CAuCjB"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Authorization middleware implementation.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Checks if a URL should skip authorization handling based on configured patterns.
|
|
6
|
-
*/
|
|
7
|
-
function shouldSkipAuth(url, skipPatterns = []) {
|
|
8
|
-
// Extract pathname from URL for pattern matching
|
|
9
|
-
let pathname;
|
|
10
|
-
try {
|
|
11
|
-
pathname = new URL(url).pathname;
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
pathname = url; // fallback if not a valid URL
|
|
15
|
-
}
|
|
16
|
-
return skipPatterns.some((pattern) => {
|
|
17
|
-
if (typeof pattern === 'string') {
|
|
18
|
-
return pathname.includes(pattern);
|
|
19
|
-
}
|
|
20
|
-
return pattern.test(pathname);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Creates authorization middleware with smart defaults.
|
|
25
|
-
* Handles 401/403 responses by calling configured handlers.
|
|
26
|
-
*
|
|
27
|
-
* @param options - Authorization configuration options
|
|
28
|
-
* @returns Authorization middleware for use with FetchClient
|
|
29
|
-
*
|
|
30
|
-
* @example Basic redirect on 401:
|
|
31
|
-
* ```typescript
|
|
32
|
-
* const authzClient = useAuthorization(client, {
|
|
33
|
-
* onUnauthorized: () => window.location.href = '/login'
|
|
34
|
-
* });
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @example Handle both 401 and 403:
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const authzClient = useAuthorization(client, {
|
|
40
|
-
* onUnauthorized: () => redirectToLogin(),
|
|
41
|
-
* onForbidden: () => showAccessDeniedMessage(),
|
|
42
|
-
* statusCodes: [401, 403]
|
|
43
|
-
* });
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
export function createAuthorizationMiddleware(options) {
|
|
47
|
-
const { onUnauthorized, onForbidden, skipPatterns = [], statusCodes = [401], } = options;
|
|
48
|
-
return async (request, next) => {
|
|
49
|
-
const url = request.url || '';
|
|
50
|
-
// Skip authorization handling if URL matches skip patterns
|
|
51
|
-
if (shouldSkipAuth(url, skipPatterns)) {
|
|
52
|
-
return next(request);
|
|
53
|
-
}
|
|
54
|
-
// Execute the request
|
|
55
|
-
const response = await next(request);
|
|
56
|
-
// Check if response status requires handling
|
|
57
|
-
if (statusCodes.includes(response.status)) {
|
|
58
|
-
try {
|
|
59
|
-
if (response.status === 401 && onUnauthorized) {
|
|
60
|
-
await onUnauthorized(response, request);
|
|
61
|
-
}
|
|
62
|
-
else if (response.status === 403 && onForbidden) {
|
|
63
|
-
await onForbidden(response, request);
|
|
64
|
-
}
|
|
65
|
-
else if (onUnauthorized) {
|
|
66
|
-
// For any other configured status codes, use the first available handler
|
|
67
|
-
await onUnauthorized(response, request);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
// If handler fails, log but don't break the response chain
|
|
72
|
-
// eslint-disable-next-line no-console
|
|
73
|
-
console.warn('Authorization handler failed:', error);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return response;
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=authorization.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../src/middleware/authorization/authorization.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,SAAS,cAAc,CACrB,GAAW,EACX,eAAoC,EAAE;IAEtC,iDAAiD;IACjD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,GAAG,CAAC,CAAC,8BAA8B;IAChD,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAA6B;IAE7B,MAAM,EACJ,cAAc,EACd,WAAW,EACX,YAAY,GAAG,EAAE,EACjB,WAAW,GAAG,CAAC,GAAG,CAAC,GACpB,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAE9B,2DAA2D;QAC3D,IAAI,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,sBAAsB;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAErC,6CAA6C;QAC7C,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;oBAC9C,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;oBAClD,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,cAAc,EAAE,CAAC;oBAC1B,yEAAyE;oBACzE,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,2DAA2D;gBAC3D,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Authorization middleware - "pit of success" API.
|
|
3
|
-
*/
|
|
4
|
-
import type { FetchClient } from '../../client/fetch-client';
|
|
5
|
-
import type { AuthorizationOptions } from './types';
|
|
6
|
-
export type { AuthorizationOptions, UnauthorizedHandler } from './types';
|
|
7
|
-
export { createAuthorizationMiddleware } from './authorization';
|
|
8
|
-
/**
|
|
9
|
-
* "Pit of success" API for adding authorization handling to a FetchClient.
|
|
10
|
-
* Automatically handles 401 Unauthorized responses.
|
|
11
|
-
*
|
|
12
|
-
* @param client - The FetchClient to add authorization handling to
|
|
13
|
-
* @param options - Authorization configuration
|
|
14
|
-
* @returns A new FetchClient with authorization middleware
|
|
15
|
-
*
|
|
16
|
-
* @example Basic redirect on 401:
|
|
17
|
-
* ```typescript
|
|
18
|
-
* const authzClient = useAuthorization(client, {
|
|
19
|
-
* onUnauthorized: () => {
|
|
20
|
-
* localStorage.removeItem('auth-token');
|
|
21
|
-
* window.location.href = '/login';
|
|
22
|
-
* }
|
|
23
|
-
* });
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @example Handle multiple status codes:
|
|
27
|
-
* ```typescript
|
|
28
|
-
* const authzClient = useAuthorization(client, {
|
|
29
|
-
* onUnauthorized: () => redirectToLogin(),
|
|
30
|
-
* onForbidden: () => showAccessDenied(),
|
|
31
|
-
* statusCodes: [401, 403]
|
|
32
|
-
* });
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export declare function useAuthorization(client: FetchClient, options: AuthorizationOptions): FetchClient;
|
|
36
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/authorization/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAIpD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,GAC5B,WAAW,CAEb"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Authorization middleware - "pit of success" API.
|
|
3
|
-
*/
|
|
4
|
-
import { createAuthorizationMiddleware } from './authorization';
|
|
5
|
-
export { createAuthorizationMiddleware } from './authorization';
|
|
6
|
-
/**
|
|
7
|
-
* "Pit of success" API for adding authorization handling to a FetchClient.
|
|
8
|
-
* Automatically handles 401 Unauthorized responses.
|
|
9
|
-
*
|
|
10
|
-
* @param client - The FetchClient to add authorization handling to
|
|
11
|
-
* @param options - Authorization configuration
|
|
12
|
-
* @returns A new FetchClient with authorization middleware
|
|
13
|
-
*
|
|
14
|
-
* @example Basic redirect on 401:
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const authzClient = useAuthorization(client, {
|
|
17
|
-
* onUnauthorized: () => {
|
|
18
|
-
* localStorage.removeItem('auth-token');
|
|
19
|
-
* window.location.href = '/login';
|
|
20
|
-
* }
|
|
21
|
-
* });
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* @example Handle multiple status codes:
|
|
25
|
-
* ```typescript
|
|
26
|
-
* const authzClient = useAuthorization(client, {
|
|
27
|
-
* onUnauthorized: () => redirectToLogin(),
|
|
28
|
-
* onForbidden: () => showAccessDenied(),
|
|
29
|
-
* statusCodes: [401, 403]
|
|
30
|
-
* });
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export function useAuthorization(client, options) {
|
|
34
|
-
return client.use(createAuthorizationMiddleware(options));
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/authorization/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAIhE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,OAA6B;IAE7B,OAAO,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Authorization middleware types and configuration.
|
|
3
|
-
*/
|
|
4
|
-
import type { FetchResponse } from '../../client/types';
|
|
5
|
-
/**
|
|
6
|
-
* Handler function for unauthorized/forbidden responses.
|
|
7
|
-
*/
|
|
8
|
-
export type UnauthorizedHandler = (response: FetchResponse<unknown>, request: RequestInit & {
|
|
9
|
-
url?: string;
|
|
10
|
-
}) => void | Promise<void>;
|
|
11
|
-
/**
|
|
12
|
-
* Authorization configuration options - optimized for "pit of success".
|
|
13
|
-
*
|
|
14
|
-
* Smart defaults:
|
|
15
|
-
* - Handles 401 Unauthorized responses
|
|
16
|
-
* - Optionally handles 403 Forbidden responses
|
|
17
|
-
* - Graceful error handling
|
|
18
|
-
*/
|
|
19
|
-
export interface AuthorizationOptions {
|
|
20
|
-
/**
|
|
21
|
-
* Handler called when 401 Unauthorized response is received.
|
|
22
|
-
*
|
|
23
|
-
* @param response - The 401 response object
|
|
24
|
-
* @param request - The original request that was unauthorized
|
|
25
|
-
*
|
|
26
|
-
* @example Redirect to login:
|
|
27
|
-
* ```typescript
|
|
28
|
-
* onUnauthorized: () => {
|
|
29
|
-
* window.location.href = '/login';
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @example Clear token and reload:
|
|
34
|
-
* ```typescript
|
|
35
|
-
* onUnauthorized: () => {
|
|
36
|
-
* localStorage.removeItem('auth-token');
|
|
37
|
-
* window.location.reload();
|
|
38
|
-
* }
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
onUnauthorized: UnauthorizedHandler;
|
|
42
|
-
/**
|
|
43
|
-
* Handler called when 403 Forbidden response is received.
|
|
44
|
-
* Optional - if not provided, 403 responses are ignored.
|
|
45
|
-
*
|
|
46
|
-
* @param response - The 403 response object
|
|
47
|
-
* @param request - The original request that was forbidden
|
|
48
|
-
*/
|
|
49
|
-
onForbidden?: UnauthorizedHandler;
|
|
50
|
-
/**
|
|
51
|
-
* Skip authorization handling for requests matching these URL patterns
|
|
52
|
-
* Useful for login/public endpoints where 401 is expected
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* skipPatterns: ['/login', '/register', /^\/public\//]
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
skipPatterns?: (RegExp | string)[];
|
|
60
|
-
/**
|
|
61
|
-
* Status codes to handle (default: [401])
|
|
62
|
-
* You can add 403 if you want to handle forbidden responses
|
|
63
|
-
*/
|
|
64
|
-
statusCodes?: number[];
|
|
65
|
-
}
|
|
66
|
-
export {};
|
|
67
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/authorization/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,OAAO,EAAE,WAAW,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,KACpC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,cAAc,EAAE,mBAAmB,CAAC;IAEpC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAEnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAGD,OAAO,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/middleware/authorization/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Cache middleware implementation.
|
|
3
|
-
*/
|
|
4
|
-
import type { FetchMiddleware } from '../../client/fetch-client';
|
|
5
|
-
import type { CacheOptions, CacheStorage, CacheEntry } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Default in-memory cache storage implementation.
|
|
8
|
-
*/
|
|
9
|
-
export declare class MemoryStorage implements CacheStorage {
|
|
10
|
-
private cache;
|
|
11
|
-
get(key: string): Promise<CacheEntry | null>;
|
|
12
|
-
getWithExpiry(key: string): Promise<{
|
|
13
|
-
entry: CacheEntry | null;
|
|
14
|
-
isExpired: boolean;
|
|
15
|
-
}>;
|
|
16
|
-
set(key: string, entry: CacheEntry): Promise<void>;
|
|
17
|
-
delete(key: string): Promise<void>;
|
|
18
|
-
clear(): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Creates cache middleware with smart defaults.
|
|
22
|
-
* Caches GET responses for faster subsequent requests.
|
|
23
|
-
*
|
|
24
|
-
* @param options - Cache configuration options
|
|
25
|
-
* @returns Cache middleware for use with FetchClient
|
|
26
|
-
*
|
|
27
|
-
* @example Basic caching:
|
|
28
|
-
* ```typescript
|
|
29
|
-
* const cachedClient = useCache(client);
|
|
30
|
-
* // GET requests will be cached for 5 minutes
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @example Custom TTL:
|
|
34
|
-
* ```typescript
|
|
35
|
-
* const cachedClient = useCache(client, {
|
|
36
|
-
* ttl: 10 * 60 * 1000 // 10 minutes
|
|
37
|
-
* });
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export declare function createCacheMiddleware(options?: CacheOptions): FetchMiddleware;
|
|
41
|
-
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/middleware/cache/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EAEX,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,KAAK,CAAiC;IAExC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAe5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAWrF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,YAAiB,GACzB,eAAe,CA0HjB"}
|