@ethlete/query 2.1.1 → 2.2.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/esm2020/lib/query/query.mjs +13 -5
- package/esm2020/lib/query/query.types.mjs +1 -1
- package/esm2020/lib/query-client/query-client.types.mjs +1 -1
- package/esm2020/lib/request/request.mjs +56 -38
- package/esm2020/lib/request/request.types.mjs +1 -1
- package/esm2020/lib/request/request.util.mjs +33 -2
- package/fesm2015/ethlete-query.mjs +95 -43
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +99 -42
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/lib/query/query.types.d.ts +3 -0
- package/lib/query-client/query-client.types.d.ts +6 -1
- package/lib/request/request.types.d.ts +19 -0
- package/lib/request/request.util.d.ts +3 -1
- package/package.json +2 -2
|
@@ -178,6 +178,9 @@ export interface Cancelled {
|
|
|
178
178
|
export interface QueryStateMeta {
|
|
179
179
|
id: number;
|
|
180
180
|
triggeredVia: QueryTrigger;
|
|
181
|
+
isWaitingForRetry?: boolean;
|
|
182
|
+
retryNumber?: number;
|
|
183
|
+
retryDelay?: number;
|
|
181
184
|
}
|
|
182
185
|
export interface QueryStateSuccessMeta extends QueryStateMeta {
|
|
183
186
|
expiresAt?: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import { Query } from '../query/query';
|
|
3
3
|
import { BaseArguments, EmptyObject, RouteType, WithHeaders, WithUseResultIn } from '../query/query.types';
|
|
4
|
-
import { CacheAdapterFn, Method as MethodType, RequestHeaders, RequestHeadersMethodMap } from '../request';
|
|
4
|
+
import { CacheAdapterFn, Method as MethodType, RequestHeaders, RequestHeadersMethodMap, RequestRetryFn } from '../request';
|
|
5
5
|
import { QueryClient } from './query-client';
|
|
6
6
|
export interface QueryClientConfig {
|
|
7
7
|
/**
|
|
@@ -49,6 +49,11 @@ export interface QueryClientConfig {
|
|
|
49
49
|
* @default true
|
|
50
50
|
*/
|
|
51
51
|
enableSmartPolling?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* A retry function to be used for all queries.
|
|
54
|
+
* @default shouldRetryRequest()
|
|
55
|
+
*/
|
|
56
|
+
retryFn?: RequestRetryFn;
|
|
52
57
|
};
|
|
53
58
|
/**
|
|
54
59
|
* Parent query client.
|
|
@@ -24,6 +24,16 @@ export interface PartialXhrState {
|
|
|
24
24
|
statusText: string;
|
|
25
25
|
url: string;
|
|
26
26
|
}
|
|
27
|
+
export interface RequestRetryFnConfig {
|
|
28
|
+
error: RequestError;
|
|
29
|
+
headers: RequestHeaders;
|
|
30
|
+
currentRetryCount: number;
|
|
31
|
+
}
|
|
32
|
+
export interface RequestRetryFnResult {
|
|
33
|
+
retry: boolean;
|
|
34
|
+
delay?: number;
|
|
35
|
+
}
|
|
36
|
+
export type RequestRetryFn = (config: RequestRetryFnConfig) => RequestRetryFnResult;
|
|
27
37
|
export interface RequestConfig {
|
|
28
38
|
method: Method;
|
|
29
39
|
urlWithParams: string;
|
|
@@ -33,6 +43,7 @@ export interface RequestConfig {
|
|
|
33
43
|
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
|
|
34
44
|
headers?: RequestHeaders;
|
|
35
45
|
cacheAdapter?: CacheAdapterFn;
|
|
46
|
+
retryFn?: RequestRetryFn;
|
|
36
47
|
}
|
|
37
48
|
export type RequestProgress = {
|
|
38
49
|
current: number;
|
|
@@ -42,6 +53,14 @@ export type RequestProgress = {
|
|
|
42
53
|
export type RequestEvent<Response = unknown> = {
|
|
43
54
|
type: 'start';
|
|
44
55
|
headers: RequestHeaders;
|
|
56
|
+
isRetry?: boolean;
|
|
57
|
+
retryNumber?: number;
|
|
58
|
+
retryDelay?: number;
|
|
59
|
+
} | {
|
|
60
|
+
type: 'delay-retry';
|
|
61
|
+
headers: RequestHeaders;
|
|
62
|
+
retryNumber: number;
|
|
63
|
+
retryDelay: number;
|
|
45
64
|
} | {
|
|
46
65
|
type: 'download-progress';
|
|
47
66
|
headers: RequestHeaders;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Method, ParamArray, Params, QueryParams, RequestError, RequestHeaders, UnfilteredParamPrimitive } from './request.types';
|
|
1
|
+
import { Method, ParamArray, Params, QueryParams, RequestError, RequestHeaders, RequestRetryFn, UnfilteredParamPrimitive } from './request.types';
|
|
2
2
|
export declare const isRequestError: <T = unknown>(error: unknown) => error is RequestError<T>;
|
|
3
3
|
export declare const buildRoute: (options: {
|
|
4
4
|
base: string;
|
|
@@ -20,7 +20,9 @@ export declare const hasHeader: (headers: RequestHeaders, header: string) => boo
|
|
|
20
20
|
export declare const forEachHeader: (headers: RequestHeaders, callback: (value: string, key: string) => void) => void;
|
|
21
21
|
export declare const parseAllXhrResponseHeaders: (xhr: XMLHttpRequest) => RequestHeaders;
|
|
22
22
|
export declare const getResponseUrl: (xhr: XMLHttpRequest) => string | null;
|
|
23
|
+
export declare const shouldRetryRequest: RequestRetryFn;
|
|
23
24
|
export declare const enum HttpStatusCode {
|
|
25
|
+
Unknown = 0,
|
|
24
26
|
Continue = 100,
|
|
25
27
|
SwitchingProtocols = 101,
|
|
26
28
|
Processing = 102,
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
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.3"
|
|
11
11
|
},
|
|
12
12
|
"module": "fesm2015/ethlete-query.mjs",
|
|
13
13
|
"es2020": "fesm2020/ethlete-query.mjs",
|