@ethlete/query 2.0.0 → 2.1.1
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/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2020/lib/directives/infinity-query.directive.mjs +6 -6
- package/esm2020/lib/directives/query.directive.mjs +3 -3
- package/esm2020/lib/infinite-query/infinity-query.mjs +13 -4
- package/esm2020/lib/query/query.mjs +46 -8
- package/esm2020/lib/query/query.types.mjs +1 -1
- package/esm2020/lib/query-client/query-client.mjs +3 -1
- package/esm2020/lib/query-client/query-client.types.mjs +1 -1
- package/esm2020/lib/query-store/query-store.mjs +36 -3
- package/esm2020/lib/request/request.util.mjs +4 -1
- package/fesm2015/ethlete-query.mjs +121 -32
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +107 -23
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/lib/auth/auth-provider.types.d.ts +0 -5
- package/lib/infinite-query/infinity-query.d.ts +1 -1
- package/lib/query/query.d.ts +6 -2
- package/lib/query/query.types.d.ts +39 -7
- package/lib/query-client/query-client.types.d.ts +11 -0
- package/lib/query-store/query-store.d.ts +3 -0
- package/package.json +2 -2
|
@@ -6,11 +6,6 @@ export interface AuthProvider {
|
|
|
6
6
|
* This will automatically get injected into every query that has the `secure` property set to `true`.
|
|
7
7
|
*/
|
|
8
8
|
header: Record<string, string>;
|
|
9
|
-
/**
|
|
10
|
-
* Cleanup function that gets called once the auth provider gets destroyed.
|
|
11
|
-
* @internal
|
|
12
|
-
*/
|
|
13
|
-
cleanUp(): void;
|
|
14
9
|
}
|
|
15
10
|
export interface AuthProviderBasicConfig {
|
|
16
11
|
/**
|
|
@@ -25,7 +25,7 @@ export declare class InfinityQuery<QueryCreator extends AnyQueryCreator, Query e
|
|
|
25
25
|
constructor(_config: InfinityQueryConfig<QueryCreator, Args, QueryResponse, InfinityResponse>);
|
|
26
26
|
nextPage(): void;
|
|
27
27
|
reset(newConfig?: Omit<InfinityQueryConfig<QueryCreator, Args, QueryResponse, InfinityResponse>, 'queryCreator' | 'response'>): void;
|
|
28
|
-
|
|
28
|
+
_clearSubscriptions(): void;
|
|
29
29
|
private _handleNewQuery;
|
|
30
30
|
private _prepareArgs;
|
|
31
31
|
private _getPageParamLocation;
|
package/lib/query/query.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DefaultResponseTransformer, QueryClient, ResponseTransformerType } from '../query-client';
|
|
2
2
|
import { Method as MethodType } from '../request';
|
|
3
|
-
import { BaseArguments, GqlQueryConfig, PollConfig, QueryState, RestQueryConfig, RouteType, RunQueryOptions, WithUseResultIn } from './query.types';
|
|
3
|
+
import { BaseArguments, GqlQueryConfig, PollConfig, QueryAutoRefreshConfig, QueryState, RestQueryConfig, RouteType, RunQueryOptions, WithUseResultIn } from './query.types';
|
|
4
4
|
export declare class Query<Response, Arguments extends (BaseArguments & WithUseResultIn<Response, ResponseTransformer>) | undefined, Route extends RouteType<Arguments>, Method extends MethodType, ResponseTransformer extends ResponseTransformerType<Response> = DefaultResponseTransformer<Response>> {
|
|
5
5
|
private _client;
|
|
6
6
|
private _queryConfig;
|
|
@@ -9,18 +9,22 @@ export declare class Query<Response, Arguments extends (BaseArguments & WithUseR
|
|
|
9
9
|
private _currentId;
|
|
10
10
|
private _pollingSubscription;
|
|
11
11
|
private _onAbort$;
|
|
12
|
+
private _currentPollConfig;
|
|
12
13
|
private readonly _state$;
|
|
13
14
|
private get _nextId();
|
|
14
15
|
get state$(): import("rxjs").Observable<QueryState<ReturnType<ResponseTransformer>, Response>>;
|
|
15
16
|
get state(): QueryState<ReturnType<ResponseTransformer>, Response>;
|
|
16
17
|
get isExpired(): boolean;
|
|
17
18
|
get isInUse(): boolean;
|
|
18
|
-
get
|
|
19
|
+
get isPolling(): boolean;
|
|
20
|
+
get autoRefreshOnConfig(): Readonly<QueryAutoRefreshConfig>;
|
|
19
21
|
constructor(_client: QueryClient, _queryConfig: RestQueryConfig<Route, Response, Arguments, ResponseTransformer> | GqlQueryConfig<Route, Response, Arguments, ResponseTransformer>, _routeWithParams: Route, _args: Arguments | undefined);
|
|
20
22
|
clone(): import("../query-client").QueryCreator<Arguments, Method, Response, Route, ResponseTransformer>;
|
|
21
23
|
execute<ComputedResponse extends ReturnType<ResponseTransformer>>(options?: RunQueryOptions): this;
|
|
22
24
|
abort(): this;
|
|
23
25
|
poll(config: PollConfig): this;
|
|
24
26
|
stopPolling(): this;
|
|
27
|
+
pausePolling(): this;
|
|
28
|
+
resumePolling(): this;
|
|
25
29
|
private _updateUseResultInDependencies;
|
|
26
30
|
}
|
|
@@ -2,6 +2,20 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import { AnyQueryCreator, QueryCreatorReturnType, ResponseTransformerType } from '../query-client';
|
|
3
3
|
import { Method, PathParams, QueryParams, RequestError, RequestProgress } from '../request';
|
|
4
4
|
import { Query } from './query';
|
|
5
|
+
export interface QueryAutoRefreshConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Refresh the query when the query client's headers change.
|
|
8
|
+
* @default true
|
|
9
|
+
*/
|
|
10
|
+
queryClientDefaultHeadersChange?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Refresh the query when the window regains focus.
|
|
13
|
+
*
|
|
14
|
+
* This can only be disabled if `autoRefreshQueriesOnWindowFocus` is enabled on the query client.
|
|
15
|
+
* @default true
|
|
16
|
+
*/
|
|
17
|
+
windowFocus?: boolean;
|
|
18
|
+
}
|
|
5
19
|
export type QueryConfigBase<Response, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response> | undefined> = {
|
|
6
20
|
/**
|
|
7
21
|
* The http method to use for the query.
|
|
@@ -36,13 +50,15 @@ export type QueryConfigBase<Response, Arguments extends BaseArguments | undefine
|
|
|
36
50
|
*
|
|
37
51
|
* **Note:** This is only available for queries that can be refreshed. (`GET`, `HEAD`, `OPTIONS`, `GQL_QUERY`)
|
|
38
52
|
*/
|
|
39
|
-
autoRefreshOn?:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
autoRefreshOn?: QueryAutoRefreshConfig;
|
|
54
|
+
/**
|
|
55
|
+
* Whether to automatically stop polling for this query when the window loses focus.
|
|
56
|
+
* Polling will resume when the window regains focus.
|
|
57
|
+
*
|
|
58
|
+
* This can only be disabled if `enableSmartPolling` is enabled on the query client.
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
61
|
+
enableSmartPolling?: boolean;
|
|
46
62
|
/**
|
|
47
63
|
* Object containing the query's type information.
|
|
48
64
|
*/
|
|
@@ -100,8 +116,13 @@ export interface WithPathParams {
|
|
|
100
116
|
export type WithUseResultIn<Response, ResponseTransformer extends ResponseTransformerType<Response>> = {
|
|
101
117
|
useResultIn?: Query<Response, any, any, any, ResponseTransformer>[];
|
|
102
118
|
};
|
|
119
|
+
export type QueryTrigger = 'program' | 'poll' | 'auto';
|
|
103
120
|
export type EmptyObject = {};
|
|
104
121
|
export interface RunQueryOptions {
|
|
122
|
+
/**
|
|
123
|
+
* Whether to skip the cache for this query. This will force the query to be executed. It might still be caught by the native browser cache.
|
|
124
|
+
* @default false
|
|
125
|
+
*/
|
|
105
126
|
skipCache?: boolean;
|
|
106
127
|
}
|
|
107
128
|
export type RouteType<Arguments extends BaseArguments | undefined> = Arguments extends {
|
|
@@ -109,8 +130,18 @@ export type RouteType<Arguments extends BaseArguments | undefined> = Arguments e
|
|
|
109
130
|
} ? (p: PathParams) => RouteString : RouteString;
|
|
110
131
|
export type RouteString = `/${string}`;
|
|
111
132
|
export interface PollConfig {
|
|
133
|
+
/**
|
|
134
|
+
* The interval in milliseconds to poll the query.
|
|
135
|
+
*/
|
|
112
136
|
interval: number;
|
|
137
|
+
/**
|
|
138
|
+
* A observable that will stop the polling when it emits.
|
|
139
|
+
*/
|
|
113
140
|
takeUntil: Observable<unknown>;
|
|
141
|
+
/**
|
|
142
|
+
* Whether to trigger the query immediately after polling starts.
|
|
143
|
+
*/
|
|
144
|
+
triggerImmediately?: boolean;
|
|
114
145
|
}
|
|
115
146
|
export declare const enum QueryStateType {
|
|
116
147
|
Prepared = "PREPARED",
|
|
@@ -146,6 +177,7 @@ export interface Cancelled {
|
|
|
146
177
|
}
|
|
147
178
|
export interface QueryStateMeta {
|
|
148
179
|
id: number;
|
|
180
|
+
triggeredVia: QueryTrigger;
|
|
149
181
|
}
|
|
150
182
|
export interface QueryStateSuccessMeta extends QueryStateMeta {
|
|
151
183
|
expiresAt?: number;
|
|
@@ -38,6 +38,17 @@ export interface QueryClientConfig {
|
|
|
38
38
|
* Do not include the `Authorization` header here. Use an `AuthProvider` instead.
|
|
39
39
|
*/
|
|
40
40
|
headers?: RequestHeaders | RequestHeadersMethodMap;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to automatically refresh expired queries when the window regains focus.
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
autoRefreshQueriesOnWindowFocus?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Whether to automatically stop polling queries when the window loses focus.
|
|
48
|
+
* Polling will resume when the window regains focus.
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
enableSmartPolling?: boolean;
|
|
41
52
|
};
|
|
42
53
|
/**
|
|
43
54
|
* Parent query client.
|
|
@@ -6,6 +6,8 @@ export declare class QueryStore {
|
|
|
6
6
|
constructor(_config?: {
|
|
7
7
|
enableChangeLogging?: boolean | undefined;
|
|
8
8
|
enableGarbageCollectorLogging?: boolean | undefined;
|
|
9
|
+
autoRefreshQueriesOnWindowFocus?: boolean | undefined;
|
|
10
|
+
enableSmartPolling?: boolean | undefined;
|
|
9
11
|
} | undefined);
|
|
10
12
|
add(id: string, query: AnyQuery): void;
|
|
11
13
|
get(id: string): AnyQuery | null;
|
|
@@ -15,6 +17,7 @@ export declare class QueryStore {
|
|
|
15
17
|
ignoreCacheValidity?: boolean;
|
|
16
18
|
purgeUnused?: boolean;
|
|
17
19
|
}): void;
|
|
20
|
+
private _initSmartQueryHandling;
|
|
18
21
|
private _logState;
|
|
19
22
|
private _initGarbageCollector;
|
|
20
23
|
private _stopGarbageCollector;
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
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
|
-
"@ethlete/core": "1.4.
|
|
10
|
+
"@ethlete/core": "1.4.2"
|
|
11
11
|
},
|
|
12
12
|
"module": "fesm2015/ethlete-query.mjs",
|
|
13
13
|
"es2020": "fesm2020/ethlete-query.mjs",
|