@ethlete/query 0.1.0-next.15 → 0.1.0-next.17
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/esm2020/lib/auth/auth-provider.types.mjs +1 -1
- package/esm2020/lib/auth/auth-provider.utils.mjs +1 -1
- package/esm2020/lib/auth/basic-auth-provider.mjs +1 -2
- package/esm2020/lib/auth/bearer-auth-provider.mjs +70 -64
- package/esm2020/lib/auth/custom-header-auth-provider.mjs +1 -2
- package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2020/lib/directives/infinity-query.directive.mjs +3 -3
- package/esm2020/lib/directives/query.directive.mjs +3 -3
- package/esm2020/lib/query/query.utils.mjs +8 -3
- package/esm2020/lib/query-client/query-client.mjs +10 -8
- package/fesm2015/ethlete-query.mjs +172 -163
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +167 -157
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/lib/auth/auth-provider.types.d.ts +15 -31
- package/lib/auth/auth-provider.utils.d.ts +2 -1
- package/lib/auth/basic-auth-provider.d.ts +0 -2
- package/lib/auth/bearer-auth-provider.d.ts +10 -14
- package/lib/auth/custom-header-auth-provider.d.ts +0 -2
- package/lib/query/query.utils.d.ts +3 -1
- package/lib/query-client/query-client.d.ts +2 -1
- package/package.json +4 -5
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Method } from '../request';
|
|
1
|
+
import { QueryResponseType } from '../query';
|
|
2
|
+
import { AnyQueryCreator, QueryCreatorArgs, QueryCreatorReturnType } from '../query-client';
|
|
4
3
|
export interface AuthProvider {
|
|
5
4
|
/**
|
|
6
5
|
* The up to date auth header.
|
|
@@ -12,10 +11,6 @@ export interface AuthProvider {
|
|
|
12
11
|
* @internal
|
|
13
12
|
*/
|
|
14
13
|
cleanUp(): void;
|
|
15
|
-
/**
|
|
16
|
-
* Reference to the query client
|
|
17
|
-
*/
|
|
18
|
-
queryClient: QueryClient | null;
|
|
19
14
|
}
|
|
20
15
|
export interface AuthProviderBasicConfig {
|
|
21
16
|
/**
|
|
@@ -39,40 +34,29 @@ export interface AuthProviderCustomHeaderConfig {
|
|
|
39
34
|
*/
|
|
40
35
|
value: string;
|
|
41
36
|
}
|
|
42
|
-
export interface AuthProviderBearerConfig {
|
|
37
|
+
export interface AuthProviderBearerConfig<T extends AnyQueryCreator> {
|
|
43
38
|
/**
|
|
44
39
|
* The initial jwt
|
|
45
40
|
*/
|
|
46
|
-
token
|
|
41
|
+
token?: string;
|
|
47
42
|
/**
|
|
48
43
|
* Refresh token configuration
|
|
49
44
|
*/
|
|
50
|
-
refreshConfig?: BearerRefreshConfig
|
|
45
|
+
refreshConfig?: BearerRefreshConfig<T>;
|
|
51
46
|
}
|
|
52
|
-
export interface BearerRefreshConfig {
|
|
53
|
-
/**
|
|
54
|
-
* The initial refresh token
|
|
55
|
-
*/
|
|
56
|
-
token: string;
|
|
47
|
+
export interface BearerRefreshConfig<T extends AnyQueryCreator> {
|
|
57
48
|
/**
|
|
58
|
-
* The
|
|
59
|
-
* @example /api/auth/refresh-token
|
|
49
|
+
* The query used to trade the refresh token for a new token response.
|
|
60
50
|
*/
|
|
61
|
-
|
|
51
|
+
queryCreator: T;
|
|
62
52
|
/**
|
|
63
|
-
* The
|
|
64
|
-
*/
|
|
65
|
-
method: Method;
|
|
66
|
-
/**
|
|
67
|
-
* The maximum number of refresh attempts
|
|
68
|
-
* @default 3
|
|
53
|
+
* The initial refresh token
|
|
69
54
|
*/
|
|
70
|
-
|
|
55
|
+
token?: string;
|
|
71
56
|
/**
|
|
72
|
-
* The
|
|
73
|
-
* @default 'body'
|
|
57
|
+
* The cookie name where the refresh token is stored
|
|
74
58
|
*/
|
|
75
|
-
|
|
59
|
+
cookieName?: string;
|
|
76
60
|
/**
|
|
77
61
|
* The time in milliseconds before the token expires when the refresh should be triggered.
|
|
78
62
|
* @default 300000 (5 minutes)
|
|
@@ -90,14 +74,14 @@ export interface BearerRefreshConfig {
|
|
|
90
74
|
strategy?: AuthBearerRefreshStrategy;
|
|
91
75
|
/**
|
|
92
76
|
* Adapter function used to build the request body for the refresh request.
|
|
93
|
-
* @default { refreshToken: "refreshToken" }
|
|
77
|
+
* @default { body: { refreshToken: "refreshToken" } }
|
|
94
78
|
*/
|
|
95
|
-
|
|
79
|
+
requestArgsAdapter?: (refreshToken: string, token: string | null) => QueryCreatorArgs<T>;
|
|
96
80
|
/**
|
|
97
81
|
* Adapter function used to extract the token and refreshToken from the response.
|
|
98
82
|
* @default { token: "token", refreshToken: "refreshToken" }
|
|
99
83
|
*/
|
|
100
|
-
responseAdapter?: (response:
|
|
84
|
+
responseAdapter?: (response: QueryResponseType<QueryCreatorReturnType<T>>) => TokenResponse;
|
|
101
85
|
}
|
|
102
86
|
export declare const enum AuthBearerRefreshStrategy {
|
|
103
87
|
/**
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { AnyQueryCreator } from '../query-client';
|
|
1
2
|
import { AuthProvider } from './auth-provider.types';
|
|
2
3
|
import { BasicAuthProvider } from './basic-auth-provider';
|
|
3
4
|
import { BearerAuthProvider } from './bearer-auth-provider';
|
|
4
5
|
import { CustomHeaderAuthProvider } from './custom-header-auth-provider';
|
|
5
6
|
export declare const isBasicAuthProvider: (authProvider: AuthProvider) => authProvider is BasicAuthProvider;
|
|
6
|
-
export declare const isBearerAuthProvider: (authProvider: AuthProvider) => authProvider is BearerAuthProvider
|
|
7
|
+
export declare const isBearerAuthProvider: <T extends AnyQueryCreator = AnyQueryCreator>(authProvider: AuthProvider) => authProvider is BearerAuthProvider<T>;
|
|
7
8
|
export declare const isCustomHeaderAuthProvider: (authProvider: AuthProvider) => authProvider is CustomHeaderAuthProvider;
|
|
8
9
|
export declare const decryptBearer: <Result = Record<string, unknown>>(token: string) => Result | null;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { QueryClient } from '../query-client';
|
|
2
1
|
import { AuthProvider, AuthProviderBasicConfig } from './auth-provider.types';
|
|
3
2
|
export declare class BasicAuthProvider implements AuthProvider {
|
|
4
3
|
private _config;
|
|
@@ -6,7 +5,6 @@ export declare class BasicAuthProvider implements AuthProvider {
|
|
|
6
5
|
Authorization: string;
|
|
7
6
|
};
|
|
8
7
|
private get _basicAuthString();
|
|
9
|
-
queryClient: QueryClient | null;
|
|
10
8
|
constructor(_config: AuthProviderBasicConfig);
|
|
11
9
|
cleanUp(): void;
|
|
12
10
|
}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { AuthProvider, AuthProviderBearerConfig, TokenResponse } from './auth-provider.types';
|
|
5
|
-
export declare class BearerAuthProvider implements AuthProvider {
|
|
1
|
+
import { AnyQueryCreator } from '../query-client';
|
|
2
|
+
import { AuthProvider, AuthProviderBearerConfig } from './auth-provider.types';
|
|
3
|
+
export declare class BearerAuthProvider<T extends AnyQueryCreator> implements AuthProvider {
|
|
6
4
|
private _config;
|
|
5
|
+
private readonly _destroy$;
|
|
6
|
+
private readonly _currentRefreshQuery$;
|
|
7
7
|
private _token;
|
|
8
8
|
private _refreshToken;
|
|
9
|
-
private _refreshTimerSubscription;
|
|
10
|
-
private _failureCount;
|
|
11
9
|
get header(): {
|
|
12
10
|
Authorization: string;
|
|
13
11
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
onRefreshFailure$: Subject<RequestError<unknown>>;
|
|
18
|
-
constructor(_config: AuthProviderBearerConfig);
|
|
12
|
+
get currentRefreshQuery$(): import("rxjs").Observable<ReturnType<T["prepare"]> | null>;
|
|
13
|
+
get currentRefreshQuery(): ReturnType<T["prepare"]> | null;
|
|
14
|
+
constructor(_config: AuthProviderBearerConfig<T>);
|
|
19
15
|
cleanUp(): void;
|
|
20
|
-
private
|
|
21
|
-
private
|
|
16
|
+
private _prepareForRefresh;
|
|
17
|
+
private _refreshQuery;
|
|
22
18
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { QueryClient } from '../query-client';
|
|
2
1
|
import { AuthProvider, AuthProviderCustomHeaderConfig } from './auth-provider.types';
|
|
3
2
|
export declare class CustomHeaderAuthProvider implements AuthProvider {
|
|
4
3
|
private _config;
|
|
5
4
|
get header(): {
|
|
6
5
|
[x: string]: string;
|
|
7
6
|
};
|
|
8
|
-
queryClient: QueryClient | null;
|
|
9
7
|
constructor(_config: AuthProviderCustomHeaderConfig);
|
|
10
8
|
cleanUp(): void;
|
|
11
9
|
}
|
|
@@ -6,7 +6,9 @@ type OmitNull<T> = T extends null ? never : T;
|
|
|
6
6
|
export declare function filterSuccess(): <T extends QueryState<unknown, unknown> | null, Response_1 extends QueryStateData<OmitNull<T>>, RawResponse extends QueryStateRawData<OmitNull<T>>>(source: Observable<T>) => Observable<Success<Response_1, RawResponse>>;
|
|
7
7
|
export declare function filterFailure(): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<Failure>;
|
|
8
8
|
export declare function filterQueryStates(allowedStates: QueryStateType[]): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
|
|
9
|
-
export declare function takeUntilResponse(
|
|
9
|
+
export declare function takeUntilResponse(config?: {
|
|
10
|
+
excludeNull?: boolean;
|
|
11
|
+
}): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
|
|
10
12
|
export declare function filterNull(): <T>(source: Observable<T>) => Observable<OmitNull<T>>;
|
|
11
13
|
export declare function switchQueryState(): <T extends AnyQuery | null, Response_1 extends QueryResponseType<OmitNull<T>>, RawResponse extends QueryRawResponseType<OmitNull<T>>>(source: Observable<T>) => Observable<QueryState<OmitNull<Response_1>, OmitNull<RawResponse>> | null>;
|
|
12
14
|
export declare const isQueryStateLoading: (state: QueryState | null | undefined) => state is Loading;
|
|
@@ -5,9 +5,10 @@ import { DefaultResponseTransformer, QueryClientConfig, QueryCreator, ResponseTr
|
|
|
5
5
|
export declare class QueryClient {
|
|
6
6
|
private _clientConfig;
|
|
7
7
|
private readonly _store;
|
|
8
|
-
private _authProvider;
|
|
9
8
|
get config(): QueryClientConfig;
|
|
10
9
|
get authProvider(): AuthProvider | null;
|
|
10
|
+
get authProvider$(): import("rxjs").Observable<AuthProvider | null>;
|
|
11
|
+
private readonly _authProvider$;
|
|
11
12
|
constructor(_clientConfig: QueryClientConfig);
|
|
12
13
|
get: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "GET", Response_1, Route, ResponseTransformer>;
|
|
13
14
|
post: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "POST", Response_1, Route, ResponseTransformer>;
|
package/package.json
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.17",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"@angular/common": "^14.2.0 || ^15.0.0",
|
|
9
9
|
"@angular/core": "^14.2.0 || ^15.0.0",
|
|
10
|
-
"
|
|
11
|
-
"@
|
|
12
|
-
"@angular/
|
|
13
|
-
"@angular/router": "15.1.1"
|
|
10
|
+
"@ethlete/core": "0.2.0-next.16",
|
|
11
|
+
"@angular/forms": "15.1.2",
|
|
12
|
+
"@angular/router": "15.1.2"
|
|
14
13
|
},
|
|
15
14
|
"module": "fesm2015/ethlete-query.mjs",
|
|
16
15
|
"es2020": "fesm2020/ethlete-query.mjs",
|