@lokalise/harmony 1.17.0-exp-jwtheaderfactorysharedauth.1 → 1.17.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/dist/harmony.cjs +1 -1
- package/dist/harmony.mjs +439 -440
- package/dist/types/src/features/auth/core/headers/createHeaderBuilderMiddleware.d.ts +32 -0
- package/dist/types/src/features/auth/core/headers/createHeaderBuilderMiddleware.test.d.ts +1 -0
- package/dist/types/src/features/auth/core/headers/headerBuilder.d.ts +6 -34
- package/dist/types/src/features/auth/core/middleware/jwtAuthHeaderBuilderMiddleware.d.ts +1 -1
- package/dist/types/src/features/auth/core/middleware/publicApiHeaderBuilderMiddleware.d.ts +2 -2
- package/dist/types/src/features/auth/node.d.ts +2 -1
- package/package.json +1 -1
@@ -0,0 +1,32 @@
|
|
1
|
+
import { HeaderBuilder, Headers } from './headerBuilder';
|
2
|
+
/**
|
3
|
+
* A helper function that creates a HeaderBuilderMiddleware, it removed the
|
4
|
+
* complexity of creating a new instance of the middleware class and tracking the input types.
|
5
|
+
*
|
6
|
+
* @param middleware - A function that modifies a HeaderBuilder
|
7
|
+
* @returns - A new instance of HeaderBuilderMiddleware to be used with a HeaderBuilder
|
8
|
+
*/
|
9
|
+
export declare function createHeaderBuilderMiddleware<const H extends Headers>(middleware: (builder: HeaderBuilder) => HeaderBuilder<H> | Promise<HeaderBuilder<H>>): HeaderBuilderMiddleware<H>;
|
10
|
+
export type { HeaderBuilderMiddleware };
|
11
|
+
/**
|
12
|
+
* A middleware class that allows you to modify a HeaderBuilder in a type-safe way.
|
13
|
+
* It receives a builder and returns a new builder with the modifications applied.
|
14
|
+
*
|
15
|
+
* @example
|
16
|
+
* ```typescript
|
17
|
+
* const authMiddleware = createHeaderBuilderMiddleware(async (builder) => {
|
18
|
+
* const token = await fetchToken()
|
19
|
+
* return builder.add('Authorization', `Bearer ${token}`)
|
20
|
+
* })
|
21
|
+
*
|
22
|
+
* const builder = HeaderBuilder.create()
|
23
|
+
* .with(authMiddleware)
|
24
|
+
*
|
25
|
+
* const headers = await builder.resolve() // Type of headers is { 'Authorization': string }
|
26
|
+
* console.log(headers) // { 'Authorization': 'Bearer <token>' }
|
27
|
+
*/
|
28
|
+
declare class HeaderBuilderMiddleware<const H extends Headers> {
|
29
|
+
private readonly middleware;
|
30
|
+
constructor(middleware: (builder: HeaderBuilder<Headers>) => HeaderBuilder<H> | Promise<HeaderBuilder<H>>);
|
31
|
+
apply<const BH extends Headers>(base: HeaderBuilder<BH>): HeaderBuilder<BH & H>;
|
32
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
import { HeaderBuilderMiddleware } from './createHeaderBuilderMiddleware';
|
2
|
+
export type Headers<K extends string = string, V extends string = string> = Record<K, V>;
|
3
|
+
type NoHeaders = {};
|
2
4
|
/**
|
3
5
|
* A builder class that helps to build up a set of headers in a type-safe way.
|
4
6
|
* It allows you to add headers, merge them together, and resolve them into a single object.
|
@@ -26,7 +28,7 @@ export type Headers<K extends string = string, V = any> = Record<K, V>;
|
|
26
28
|
* // 'Authorization': 'Bearer <token>'
|
27
29
|
* // }
|
28
30
|
*/
|
29
|
-
export declare class HeaderBuilder<H extends Headers =
|
31
|
+
export declare class HeaderBuilder<H extends Headers = NoHeaders> {
|
30
32
|
private readonly factories;
|
31
33
|
/**
|
32
34
|
* Creates a new HeaderBuilder, optionally with an initial set of headers.
|
@@ -92,7 +94,7 @@ export declare class HeaderBuilder<H extends Headers = {}> {
|
|
92
94
|
*
|
93
95
|
* @param extension - An object with the headers to add
|
94
96
|
*/
|
95
|
-
and<const K extends string, const V, E extends Headers<K, V>>(extension: E | Promise<E>): HeaderBuilder<H & E>;
|
97
|
+
and<const K extends string, const V extends string, E extends Headers<K, V>>(extension: E | Promise<E>): HeaderBuilder<H & E>;
|
96
98
|
/**
|
97
99
|
* Adds a factory function that returns a promise of headers to the builder.
|
98
100
|
* This is useful when you need to fetch some data asynchronously to build the headers.
|
@@ -166,34 +168,4 @@ export declare class HeaderBuilder<H extends Headers = {}> {
|
|
166
168
|
*/
|
167
169
|
resolve(): Promise<H>;
|
168
170
|
}
|
169
|
-
|
170
|
-
* A middleware class that allows you to modify a HeaderBuilder in a type-safe way.
|
171
|
-
* It receives a builder and returns a new builder with the modifications applied.
|
172
|
-
*
|
173
|
-
* @example
|
174
|
-
* ```typescript
|
175
|
-
* const authMiddleware = createHeaderBuilderMiddleware(async (builder) => {
|
176
|
-
* const token = await fetchToken()
|
177
|
-
* return builder.add('Authorization', `Bearer ${token}`)
|
178
|
-
* })
|
179
|
-
*
|
180
|
-
* const builder = HeaderBuilder.create()
|
181
|
-
* .with(authMiddleware)
|
182
|
-
*
|
183
|
-
* const headers = await builder.resolve() // Type of headers is { 'Authorization': string }
|
184
|
-
* console.log(headers) // { 'Authorization': 'Bearer <token>' }
|
185
|
-
*/
|
186
|
-
declare class HeaderBuilderMiddleware<const H extends Headers> {
|
187
|
-
private readonly middleware;
|
188
|
-
constructor(middleware: (builder: HeaderBuilder<Headers>) => HeaderBuilder<H> | Promise<HeaderBuilder<H>>);
|
189
|
-
apply<const BH extends Headers>(base: HeaderBuilder<BH>): HeaderBuilder<BH & H>;
|
190
|
-
}
|
191
|
-
/**
|
192
|
-
* A helper function that creates a HeaderBuilderMiddleware, it removed the
|
193
|
-
* complexity of creating a new instance of the middleware class and tracking the input types.
|
194
|
-
*
|
195
|
-
* @param middleware - A function that modifies a HeaderBuilder
|
196
|
-
* @returns - A new instance of HeaderBuilderMiddleware to be used with a HeaderBuilder
|
197
|
-
*/
|
198
|
-
export declare function createHeaderBuilderMiddleware<const H extends Headers>(middleware: (builder: HeaderBuilder) => HeaderBuilder<H> | Promise<HeaderBuilder<H>>): HeaderBuilderMiddleware<H>;
|
199
|
-
export type { HeaderBuilderMiddleware };
|
171
|
+
export {};
|
@@ -5,6 +5,6 @@ export type JwtAuthHeaderBuilderMiddlewareProps = {
|
|
5
5
|
generateNewToken?: () => Promise<JwtToken | null>;
|
6
6
|
onNewTokenIssued?: (token: JwtToken) => void;
|
7
7
|
};
|
8
|
-
export declare function JwtAuthHeaderBuilderMiddleware(props: JwtAuthHeaderBuilderMiddlewareProps): import('../headers/
|
8
|
+
export declare function JwtAuthHeaderBuilderMiddleware(props: JwtAuthHeaderBuilderMiddlewareProps): import('../headers/createHeaderBuilderMiddleware').HeaderBuilderMiddleware<{
|
9
9
|
Authorization: `Bearer ${string}`;
|
10
10
|
}>;
|
@@ -1,3 +1,3 @@
|
|
1
|
-
export declare const PublicApiHeaderBuilderMiddleware: import('../headers/
|
2
|
-
'x-lokalise-plugin':
|
1
|
+
export declare const PublicApiHeaderBuilderMiddleware: import('../headers/createHeaderBuilderMiddleware').HeaderBuilderMiddleware<{
|
2
|
+
'x-lokalise-plugin': "true";
|
3
3
|
}>;
|
@@ -3,7 +3,7 @@ export { PublicApiHeaderBuilderMiddleware } from './core/middleware/publicApiHea
|
|
3
3
|
export type { JwtTokenPayload } from './core/types/jwtTokenPayload';
|
4
4
|
export { parseJwtTokenPayload } from './core/utils/jwtTokenPayload';
|
5
5
|
export { getJwtTokenFromCookie, getCsrfTokenFromCookie } from './frontend/utils/cookieTokenUtils';
|
6
|
-
export { HeaderBuilder,
|
6
|
+
export { HeaderBuilder, type Headers, } from './core/headers/headerBuilder';
|
7
7
|
export * from './backend/services/getAuthenticatedSessionDetailFromRequest';
|
8
8
|
export * from './frontend/services/generateTokenFromClassicSession';
|
9
9
|
export * from './frontend/services/refreshExpiredToken';
|
@@ -11,3 +11,4 @@ export * from './frontend/hooks/useGetPromotedClassicSessionJwtQuery';
|
|
11
11
|
export * from './frontend/hooks/useAuthenticatedSessionPayload';
|
12
12
|
export * from './frontend/hooks/useAuthenticatedUser';
|
13
13
|
export * from './frontend/hooks/useAuthenticatedProjectContributor';
|
14
|
+
export { createHeaderBuilderMiddleware, type HeaderBuilderMiddleware, } from './core/headers/createHeaderBuilderMiddleware';
|