@ethlete/query 5.33.3 → 5.35.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 +14 -0
- package/fesm2022/ethlete-query.mjs +42 -14
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/experimental/auth/bearer-auth-provider-config.d.ts +10 -6
- package/lib/experimental/auth/bearer-auth-provider.d.ts +9 -5
- package/lib/experimental/http/paged-query-stack.d.ts +10 -2
- package/lib/experimental/http/query-stack.d.ts +9 -3
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ export type BearerAuthProviderCookieConfig<TTokenRefreshArgs extends QueryArgs>
|
|
|
66
66
|
*/
|
|
67
67
|
autoLoginExcludeRoutes?: string[];
|
|
68
68
|
};
|
|
69
|
-
export type CreateBearerAuthProviderConfigOptions<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs> = {
|
|
69
|
+
export type CreateBearerAuthProviderConfigOptions<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData> = {
|
|
70
70
|
/**
|
|
71
71
|
* The name of the auth provider
|
|
72
72
|
*/
|
|
@@ -110,10 +110,14 @@ export type CreateBearerAuthProviderConfigOptions<TLoginArgs extends QueryArgs,
|
|
|
110
110
|
* @default true
|
|
111
111
|
*/
|
|
112
112
|
refreshOnUnauthorizedResponse?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* A function that decrypts the bearer token
|
|
115
|
+
*/
|
|
116
|
+
bearerDecryptFn?: (token: string) => TBearerData;
|
|
113
117
|
};
|
|
114
|
-
export type BearerAuthProviderConfig<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs> = CreateBearerAuthProviderConfigOptions<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs> & {
|
|
115
|
-
token: BearerAuthProviderRef<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>;
|
|
118
|
+
export type BearerAuthProviderConfig<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData> = CreateBearerAuthProviderConfigOptions<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData> & {
|
|
119
|
+
token: BearerAuthProviderRef<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>;
|
|
116
120
|
};
|
|
117
|
-
export type AnyBearerAuthProviderConfig = BearerAuthProviderConfig<any, any, any, any>;
|
|
118
|
-
export type BearerAuthProviderRef<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs> = InjectionToken<BearerAuthProvider<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>>;
|
|
119
|
-
export declare const createBearerAuthProviderConfig: <TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs>(options: CreateBearerAuthProviderConfigOptions<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>) => BearerAuthProviderConfig<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>;
|
|
121
|
+
export type AnyBearerAuthProviderConfig = BearerAuthProviderConfig<any, any, any, any, any>;
|
|
122
|
+
export type BearerAuthProviderRef<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData> = InjectionToken<BearerAuthProvider<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>>;
|
|
123
|
+
export declare const createBearerAuthProviderConfig: <TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData>(options: CreateBearerAuthProviderConfigOptions<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>) => BearerAuthProviderConfig<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>;
|
|
@@ -10,7 +10,7 @@ type QuerySnapshotWithType<TLoginArgs extends QueryArgs, TTokenLoginArgs extends
|
|
|
10
10
|
} & QuerySnapshot<TTokenRefreshArgs>) | ({
|
|
11
11
|
type: 'selectRole';
|
|
12
12
|
} & QuerySnapshot<TSelectRoleArgs>);
|
|
13
|
-
export type BearerAuthProvider<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs> = {
|
|
13
|
+
export type BearerAuthProvider<TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData> = {
|
|
14
14
|
/**
|
|
15
15
|
* Logs in the user with the given args.
|
|
16
16
|
*/
|
|
@@ -56,10 +56,14 @@ export type BearerAuthProvider<TLoginArgs extends QueryArgs, TTokenLoginArgs ext
|
|
|
56
56
|
* A signal that contains the current access and refresh tokens.
|
|
57
57
|
*/
|
|
58
58
|
tokens: Signal<BearerAuthProviderTokens | null>;
|
|
59
|
+
/**
|
|
60
|
+
* The bearer data that was decrypted from the access token.
|
|
61
|
+
*/
|
|
62
|
+
bearerData: Signal<TBearerData | null>;
|
|
59
63
|
};
|
|
60
|
-
export declare const createBearerAuthProvider: <TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs>(options: BearerAuthProviderConfig<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>) => BearerAuthProvider<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>;
|
|
61
|
-
export declare const provideBearerAuthProvider: <TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs>(config: BearerAuthProviderConfig<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>) => {
|
|
62
|
-
provide: import("./bearer-auth-provider-config").BearerAuthProviderRef<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>;
|
|
63
|
-
useFactory: () => BearerAuthProvider<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs>;
|
|
64
|
+
export declare const createBearerAuthProvider: <TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData>(options: BearerAuthProviderConfig<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>) => BearerAuthProvider<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>;
|
|
65
|
+
export declare const provideBearerAuthProvider: <TLoginArgs extends QueryArgs, TTokenLoginArgs extends QueryArgs, TTokenRefreshArgs extends QueryArgs, TSelectRoleArgs extends QueryArgs, TBearerData>(config: BearerAuthProviderConfig<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>) => {
|
|
66
|
+
provide: import("./bearer-auth-provider-config").BearerAuthProviderRef<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>;
|
|
67
|
+
useFactory: () => BearerAuthProvider<TLoginArgs, TTokenLoginArgs, TTokenRefreshArgs, TSelectRoleArgs, TBearerData>;
|
|
64
68
|
};
|
|
65
69
|
export {};
|
|
@@ -100,18 +100,26 @@ export type PagedQueryStack<TQuery extends AnyQuery, TNormPagination extends Nor
|
|
|
100
100
|
* The pagination of the first executed query in the paged query.
|
|
101
101
|
*/
|
|
102
102
|
minPagination: Signal<TNormPagination | null>;
|
|
103
|
+
/**
|
|
104
|
+
* Whether the last page of the paged query is loaded or not.
|
|
105
|
+
*/
|
|
106
|
+
isLastPageLoaded: Signal<boolean>;
|
|
107
|
+
/**
|
|
108
|
+
* Whether the first page of the paged query is loaded or not.
|
|
109
|
+
*/
|
|
110
|
+
isFirstPageLoaded: Signal<boolean>;
|
|
103
111
|
/**
|
|
104
112
|
* Fetches the previous page of the paged query.
|
|
105
113
|
*
|
|
106
114
|
* @throws If the paged query is already at the first page.
|
|
107
115
|
*/
|
|
108
|
-
fetchPreviousPage: () =>
|
|
116
|
+
fetchPreviousPage: () => TQuery | null;
|
|
109
117
|
/**
|
|
110
118
|
* Fetches the next page of the paged query.
|
|
111
119
|
*
|
|
112
120
|
* @throws If the paged query is already at the last page.
|
|
113
121
|
*/
|
|
114
|
-
fetchNextPage: () =>
|
|
122
|
+
fetchNextPage: () => TQuery | null;
|
|
115
123
|
/**
|
|
116
124
|
* Whether the previous page can be fetched or not.
|
|
117
125
|
*
|
|
@@ -3,7 +3,11 @@ import { AnyQuery, RequestArgs, ResponseType } from './query';
|
|
|
3
3
|
import { AnyQueryCreator, QueryArgsOf, RunQueryCreator } from './query-creator';
|
|
4
4
|
import { QueryErrorResponse } from './query-error-response';
|
|
5
5
|
import { QueryFeature } from './query-features';
|
|
6
|
-
export type
|
|
6
|
+
export type QueryStackSubtle<TCreator extends AnyQueryCreator, TQuery extends AnyQuery> = {
|
|
7
|
+
/** Create a new query with the given arguments. You should always prefer the `args` option instead of this. */
|
|
8
|
+
runWithArgs: (args: RequestArgs<QueryArgsOf<TCreator>> | RequestArgs<QueryArgsOf<TCreator>>[] | null) => TQuery | null;
|
|
9
|
+
};
|
|
10
|
+
export type QueryStack<TQuery extends AnyQuery, TCreator extends AnyQueryCreator, TTransform> = {
|
|
7
11
|
/** Contains all queries in the stack. */
|
|
8
12
|
queries: Signal<TQuery[]>;
|
|
9
13
|
/** Contains the first query in the stack. */
|
|
@@ -22,8 +26,10 @@ export type QueryStack<TQuery extends AnyQuery, TTransform> = {
|
|
|
22
26
|
}) => void;
|
|
23
27
|
/** Destroys all queries in the stack and empties it. This should only be used if `append` is true. */
|
|
24
28
|
clear: () => void;
|
|
29
|
+
/** Advanced query stack features. **WARNING!** Incorrectly using these features will likely **BREAK** your application. You have been warned! */
|
|
30
|
+
subtle: QueryStackSubtle<TCreator, TQuery>;
|
|
25
31
|
};
|
|
26
|
-
export type AnyQueryStack = QueryStack<AnyQuery, any>;
|
|
32
|
+
export type AnyQueryStack = QueryStack<AnyQuery, AnyQueryCreator, any>;
|
|
27
33
|
export type CreateQueryStackOptions<TCreator extends AnyQueryCreator, TDeps extends () => any, TTransform = (ResponseType<QueryArgsOf<TCreator>> | null)[]> = {
|
|
28
34
|
/**
|
|
29
35
|
* The query creator function that will be used to create the query stack.
|
|
@@ -100,4 +106,4 @@ export declare const transformArrayResponse: <T extends (unknown | null)[]>(resp
|
|
|
100
106
|
export declare const transformPaginatedResponse: <T extends ({
|
|
101
107
|
items: unknown[];
|
|
102
108
|
} | null)[]>(responses: T) => NonNullable<NonNullable<T[0]>["items"]>;
|
|
103
|
-
export declare const createQueryStack: <TCreator extends AnyQueryCreator, TArgs extends QueryArgsOf<TCreator>, TDeps extends () => any, TTransform = (ResponseType<TArgs> | null)[]>(options: CreateQueryStackOptions<TCreator, TDeps, TTransform>) => QueryStack<RunQueryCreator<TCreator>, TTransform>;
|
|
109
|
+
export declare const createQueryStack: <TCreator extends AnyQueryCreator, TArgs extends QueryArgsOf<TCreator>, TDeps extends () => any, TTransform = (ResponseType<TArgs> | null)[]>(options: CreateQueryStackOptions<TCreator, TDeps, TTransform>) => QueryStack<RunQueryCreator<TCreator>, TCreator, TTransform>;
|