@ethlete/query 4.3.3 → 4.4.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/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2022/lib/directives/infinity-query.directive.mjs +4 -4
- package/esm2022/lib/directives/query.directive.mjs +7 -5
- package/esm2022/lib/infinite-query/infinity-query.mjs +9 -7
- package/esm2022/lib/infinite-query/infinity-query.types.mjs +1 -1
- package/esm2022/lib/query/query.mjs +7 -1
- package/esm2022/lib/query-client/query-client.types.mjs +1 -1
- package/esm2022/lib/query-creator/query-creator.mjs +2 -1
- package/esm2022/lib/request/request.types.mjs +1 -1
- package/esm2022/lib/request/request.util.mjs +22 -59
- package/fesm2022/ethlete-query.mjs +49 -75
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/directives/infinity-query-trigger.directive.d.ts +1 -1
- package/lib/directives/infinity-query.directive.d.ts +1 -1
- package/lib/directives/query.directive.d.ts +19 -1
- package/lib/infinite-query/infinity-query.types.d.ts +3 -2
- package/lib/query/query.d.ts +4 -0
- package/lib/query-client/query-client.types.d.ts +5 -1
- package/lib/request/request.types.d.ts +32 -9
- package/lib/request/request.util.d.ts +3 -6
- package/package.json +2 -2
|
@@ -11,5 +11,5 @@ export declare class InfinityQueryTriggerDirective implements OnInit, OnDestroy
|
|
|
11
11
|
ngOnDestroy(): void;
|
|
12
12
|
private _setupIntersectionObserver;
|
|
13
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<InfinityQueryTriggerDirective, never>;
|
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryTriggerDirective, "[etInfinityQueryTrigger], et-infinity-query-trigger", never, { "scrollContainerSelector": { "alias": "scrollContainerSelector"; "required": false; }; }, {}, never, never, true, never
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryTriggerDirective, "[etInfinityQueryTrigger], et-infinity-query-trigger", never, { "scrollContainerSelector": { "alias": "scrollContainerSelector"; "required": false; }; }, {}, never, never, true, never>;
|
|
15
15
|
}
|
|
@@ -47,6 +47,6 @@ export declare class InfinityQueryDirective<Q extends InfinityQueryConfig<AnyQue
|
|
|
47
47
|
private _renderMainView;
|
|
48
48
|
private _cleanup;
|
|
49
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<InfinityQueryDirective<any>, never>;
|
|
50
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryDirective<any>, "[etInfinityQuery]", ["etInfinityQuery"], { "infinityQuery": { "alias": "etInfinityQuery"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.DelayableDirective; inputs: {}; outputs: {}; }]
|
|
50
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryDirective<any>, "[etInfinityQuery]", ["etInfinityQuery"], { "infinityQuery": { "alias": "etInfinityQuery"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.DelayableDirective; inputs: {}; outputs: {}; }]>;
|
|
51
51
|
}
|
|
52
52
|
export {};
|
|
@@ -4,11 +4,29 @@ import { QueryDataOf } from '../query-creator';
|
|
|
4
4
|
import { RequestError, RequestProgress } from '../request';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
interface QueryContext<Q extends AnyQuery | null> {
|
|
7
|
+
/**
|
|
8
|
+
* The queries's response data.
|
|
9
|
+
*/
|
|
7
10
|
$implicit: QueryDataOf<Q> | null;
|
|
11
|
+
/**
|
|
12
|
+
* The queries's response data.
|
|
13
|
+
*/
|
|
8
14
|
etQuery: QueryDataOf<Q> | null;
|
|
15
|
+
/**
|
|
16
|
+
* Is true when the query is triggered by user interaction.
|
|
17
|
+
*/
|
|
9
18
|
loading: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Is true when the query is triggered by either polling or auto refresh event.
|
|
21
|
+
*/
|
|
10
22
|
refreshing: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The query's progress state.
|
|
25
|
+
*/
|
|
11
26
|
progress: RequestProgress | null;
|
|
27
|
+
/**
|
|
28
|
+
* The query's error state.
|
|
29
|
+
*/
|
|
12
30
|
error: RequestError<unknown> | null;
|
|
13
31
|
}
|
|
14
32
|
export declare class QueryDirective<Q extends AnyQuery | AnyQueryCollection | null> implements OnInit, OnDestroy {
|
|
@@ -32,6 +50,6 @@ export declare class QueryDirective<Q extends AnyQuery | AnyQueryCollection | nu
|
|
|
32
50
|
private _updateView;
|
|
33
51
|
private _renderMainView;
|
|
34
52
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueryDirective<any>, never>;
|
|
35
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<QueryDirective<any>, "[etQuery]", never, { "query": { "alias": "etQuery"; "required": false; }; "cache": { "alias": "etQueryCache"; "required": false; }; }, {}, never, never, true, never
|
|
53
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<QueryDirective<any>, "[etQuery]", never, { "query": { "alias": "etQuery"; "required": false; }; "cache": { "alias": "etQueryCache"; "required": false; }; }, {}, never, never, true, never>;
|
|
36
54
|
}
|
|
37
55
|
export {};
|
|
@@ -8,9 +8,10 @@ export interface PageParamCalculatorOptions {
|
|
|
8
8
|
totalPages: number | null;
|
|
9
9
|
itemsPerPage: number;
|
|
10
10
|
}
|
|
11
|
-
export interface TotalPagesExtractorOptions<QueryResponse> {
|
|
11
|
+
export interface TotalPagesExtractorOptions<QueryResponse, Arguments> {
|
|
12
12
|
response: QueryResponse;
|
|
13
13
|
itemsPerPage: number;
|
|
14
|
+
arguments: Arguments;
|
|
14
15
|
}
|
|
15
16
|
export interface InfinityQueryConfig<QueryCreator extends AnyQueryCreator, Arguments extends BaseArguments | undefined, QueryResponse, InfinityResponse extends unknown[]> {
|
|
16
17
|
/**
|
|
@@ -87,7 +88,7 @@ export interface InfinityQueryConfig<QueryCreator extends AnyQueryCreator, Argum
|
|
|
87
88
|
*
|
|
88
89
|
* @default "totalPages"
|
|
89
90
|
*/
|
|
90
|
-
totalPagesExtractor?: (data: TotalPagesExtractorOptions<QueryResponse>) => number;
|
|
91
|
+
totalPagesExtractor?: (data: TotalPagesExtractorOptions<QueryResponse, Arguments>) => number;
|
|
91
92
|
};
|
|
92
93
|
}
|
|
93
94
|
type OmitUndefined<T> = T extends undefined ? never : T;
|
package/lib/query/query.d.ts
CHANGED
|
@@ -34,6 +34,10 @@ export declare class Query<Response, Arguments extends BaseArguments | undefined
|
|
|
34
34
|
* @internal
|
|
35
35
|
*/
|
|
36
36
|
get _enableSmartPolling(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
get _arguments(): Arguments;
|
|
37
41
|
get store(): Store | null;
|
|
38
42
|
constructor(_client: QueryClient, _queryConfig: RestQueryConfig<Route, Response, Arguments, Store, Data, Id> | GqlQueryConfig<Route, Response, Arguments, Store, Data, Id>, _routeWithParams: Route, _args: Arguments);
|
|
39
43
|
execute(options?: ExecuteQueryOptions): this;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GqlTransferOption } from '../query/query.types';
|
|
2
|
-
import { CacheAdapterFn, RequestHeaders, RequestHeadersMethodMap, RequestRetryFn } from '../request';
|
|
2
|
+
import { BuildQueryStringConfig, CacheAdapterFn, RequestHeaders, RequestHeadersMethodMap, RequestRetryFn } from '../request';
|
|
3
3
|
import { QueryClient } from './query-client';
|
|
4
4
|
export interface QueryClientConfig {
|
|
5
5
|
/**
|
|
@@ -64,6 +64,10 @@ export interface QueryClientConfig {
|
|
|
64
64
|
*/
|
|
65
65
|
transferVia?: GqlTransferOption;
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Configuration options for all query strings.
|
|
69
|
+
*/
|
|
70
|
+
queryParams?: BuildQueryStringConfig;
|
|
67
71
|
};
|
|
68
72
|
/**
|
|
69
73
|
* Parent query client.
|
|
@@ -6,17 +6,10 @@ export interface RequestError<Detail = unknown> {
|
|
|
6
6
|
statusText: string;
|
|
7
7
|
detail: Detail;
|
|
8
8
|
}
|
|
9
|
-
export type
|
|
10
|
-
export type
|
|
11
|
-
export type ParamArray = Array<ParamPrimitive>;
|
|
12
|
-
export type UnfilteredParamPrimitive = string | number | boolean | null | undefined;
|
|
13
|
-
export type QueryParams = {
|
|
14
|
-
[key: string]: UnfilteredParamPrimitive | UnfilteredParamArray | QueryParams;
|
|
15
|
-
};
|
|
9
|
+
export type RequestHeaders = Record<string, string>;
|
|
10
|
+
export type QueryParams = Record<string | number, unknown | Array<unknown>>;
|
|
16
11
|
export type PathParams = Record<string, string | number>;
|
|
17
|
-
export type UnfilteredParamArray = Array<UnfilteredParamPrimitive>;
|
|
18
12
|
export type CacheAdapterFn = (headers: RequestHeaders) => number | null;
|
|
19
|
-
export type RequestHeaders = Record<string, string>;
|
|
20
13
|
export type RequestHeadersMethodMap = {
|
|
21
14
|
[M in Method]?: RequestHeaders;
|
|
22
15
|
};
|
|
@@ -85,3 +78,33 @@ export type RequestEvent<Response = unknown> = {
|
|
|
85
78
|
type: 'cancel';
|
|
86
79
|
headers: RequestHeaders;
|
|
87
80
|
};
|
|
81
|
+
export interface BuildQueryStringConfig {
|
|
82
|
+
/**
|
|
83
|
+
* Object notation to use for nested objects.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* // dot notation
|
|
87
|
+
* { foo: { bar: 'baz' } } => "foo.bar=baz"
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* // bracket notation
|
|
91
|
+
* { foo: { bar: 'baz' } } => "foo[bar]=baz"
|
|
92
|
+
*
|
|
93
|
+
* @default 'bracket'
|
|
94
|
+
*/
|
|
95
|
+
objectNotation?: 'dot' | 'bracket';
|
|
96
|
+
/**
|
|
97
|
+
* Whether to write array indexes in bracket notation.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // true
|
|
101
|
+
* { foo: ['bar', 'baz'] } => "foo[0]=bar&foo[1]=baz"
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* // false
|
|
105
|
+
* { foo: ['bar', 'baz'] } => "foo[]=bar&foo[]=baz"
|
|
106
|
+
*
|
|
107
|
+
* @default false
|
|
108
|
+
*/
|
|
109
|
+
writeArrayIndexes?: boolean;
|
|
110
|
+
}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BuildQueryStringConfig, Method, QueryParams, RequestError, RequestHeaders, RequestRetryFn } 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;
|
|
5
5
|
route: string | ((args: Record<string, unknown>) => string) | null | undefined;
|
|
6
6
|
pathParams?: Record<string, unknown> | undefined;
|
|
7
7
|
queryParams?: QueryParams | undefined;
|
|
8
|
+
queryParamConfig?: BuildQueryStringConfig | undefined;
|
|
8
9
|
}) => string;
|
|
9
|
-
export declare const buildQueryString: (params: QueryParams) => string | null;
|
|
10
|
-
export declare const buildQueryArrayString: (key: string, array: ParamArray) => string;
|
|
11
|
-
export declare const buildQueryObjectString: (key: string, object: QueryParams) => string;
|
|
12
|
-
export declare const filterInvalidParams: (params: QueryParams) => Params;
|
|
13
|
-
export declare const isParamValid: (primitive: UnfilteredParamPrimitive) => boolean;
|
|
10
|
+
export declare const buildQueryString: (params: QueryParams, config?: BuildQueryStringConfig) => string | null;
|
|
14
11
|
export declare const extractExpiresInSeconds: (headers: RequestHeaders) => number | null;
|
|
15
12
|
export declare const buildTimestampFromSeconds: (seconds: number | null) => number | null;
|
|
16
13
|
export declare const serializeBody: (body: unknown) => ArrayBuffer | URLSearchParams | Blob | FormData | string | null;
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.5.0"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"@angular/common": "^15.2.1 || ^16.0.0",
|
|
9
9
|
"@angular/core": "^15.2.1 || ^16.0.0",
|
|
10
|
-
"@ethlete/core": "2.
|
|
10
|
+
"@ethlete/core": "2.8.0"
|
|
11
11
|
},
|
|
12
12
|
"module": "fesm2022/ethlete-query.mjs",
|
|
13
13
|
"typings": "index.d.ts",
|