@ethlete/query 0.1.0-next.2 → 0.1.0-next.20
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 +4 -5
- package/esm2020/lib/auth/bearer-auth-provider.mjs +117 -60
- package/esm2020/lib/auth/custom-header-auth-provider.mjs +4 -5
- package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2020/lib/directives/infinity-query.directive.mjs +36 -11
- package/esm2020/lib/directives/query.directive.mjs +20 -19
- package/esm2020/lib/infinite-query/infinity-query.mjs +11 -11
- package/esm2020/lib/infinite-query/infinity-query.types.mjs +1 -1
- package/esm2020/lib/query/query.mjs +53 -23
- package/esm2020/lib/query/query.types.mjs +1 -1
- package/esm2020/lib/query/query.utils.mjs +42 -4
- package/esm2020/lib/query-client/query-client.mjs +15 -13
- package/esm2020/lib/query-client/query-client.types.mjs +1 -1
- package/esm2020/lib/query-form/query-form.mjs +10 -7
- package/esm2020/lib/query-form/query-form.types.mjs +1 -1
- package/esm2020/lib/query-form/query-form.utils.mjs +21 -1
- package/esm2020/lib/request/request.mjs +4 -2
- package/esm2020/lib/request/request.util.mjs +16 -8
- package/esm2020/lib/utils/deep-freeze.util.mjs +5 -1
- package/fesm2015/ethlete-query.mjs +443 -248
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +430 -242
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/lib/auth/auth-provider.types.d.ts +30 -22
- 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 +14 -14
- package/lib/auth/custom-header-auth-provider.d.ts +0 -2
- package/lib/directives/infinity-query-trigger.directive.d.ts +1 -1
- package/lib/directives/infinity-query.directive.d.ts +7 -2
- package/lib/directives/query.directive.d.ts +5 -5
- package/lib/infinite-query/infinity-query.types.d.ts +7 -4
- package/lib/query/query.d.ts +5 -3
- package/lib/query/query.types.d.ts +32 -15
- package/lib/query/query.utils.d.ts +22 -5
- package/lib/query-client/query-client.d.ts +11 -10
- package/lib/query-client/query-client.types.d.ts +9 -9
- package/lib/query-form/query-form.d.ts +1 -1
- package/lib/query-form/query-form.types.d.ts +13 -3
- package/lib/query-form/query-form.utils.d.ts +5 -0
- package/lib/request/request.types.d.ts +10 -10
- package/lib/utils/deep-freeze.util.d.ts +1 -1
- package/package.json +6 -6
|
@@ -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,30 +34,39 @@ 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 {
|
|
47
|
+
export interface BearerRefreshConfig<T extends AnyQueryCreator> {
|
|
48
|
+
/**
|
|
49
|
+
* The query used to trade the refresh token for a new token response.
|
|
50
|
+
*/
|
|
51
|
+
queryCreator: T;
|
|
53
52
|
/**
|
|
54
53
|
* The initial refresh token
|
|
55
54
|
*/
|
|
56
|
-
token
|
|
55
|
+
token?: string;
|
|
56
|
+
/**
|
|
57
|
+
* The cookie name where the refresh token is stored
|
|
58
|
+
*/
|
|
59
|
+
cookieName?: string;
|
|
57
60
|
/**
|
|
58
|
-
*
|
|
59
|
-
* @
|
|
61
|
+
* Enable or disable the cookie
|
|
62
|
+
* @default true
|
|
60
63
|
*/
|
|
61
|
-
|
|
64
|
+
cookieEnabled?: boolean;
|
|
62
65
|
/**
|
|
63
|
-
* The
|
|
66
|
+
* The time in milliseconds before the token expires when the refresh should be triggered.
|
|
67
|
+
* @default 300000 (5 minutes)
|
|
64
68
|
*/
|
|
65
|
-
|
|
69
|
+
refreshBuffer?: number;
|
|
66
70
|
/**
|
|
67
71
|
* The expires in property name inside the jwt body
|
|
68
72
|
* @default 'exp'
|
|
@@ -75,18 +79,22 @@ export interface BearerRefreshConfig {
|
|
|
75
79
|
strategy?: AuthBearerRefreshStrategy;
|
|
76
80
|
/**
|
|
77
81
|
* Adapter function used to build the request body for the refresh request.
|
|
78
|
-
* @default { refreshToken: "refreshToken" }
|
|
82
|
+
* @default { body: { refreshToken: "refreshToken" } }
|
|
79
83
|
*/
|
|
80
|
-
|
|
84
|
+
requestArgsAdapter?: (tokens: {
|
|
85
|
+
token: string | null;
|
|
86
|
+
refreshToken: string;
|
|
87
|
+
}) => QueryCreatorArgs<T>;
|
|
81
88
|
/**
|
|
82
89
|
* Adapter function used to extract the token and refreshToken from the response.
|
|
83
90
|
* @default { token: "token", refreshToken: "refreshToken" }
|
|
84
91
|
*/
|
|
85
|
-
responseAdapter?: (response:
|
|
92
|
+
responseAdapter?: (response: NonNullable<QueryResponseType<QueryCreatorReturnType<T>>>) => TokenResponse;
|
|
86
93
|
}
|
|
87
94
|
export declare const enum AuthBearerRefreshStrategy {
|
|
88
95
|
/**
|
|
89
96
|
* Automatically refresh the token 5 minutes before expiration.
|
|
97
|
+
* The time can be configured with the `refreshBuffer` property.
|
|
90
98
|
*/
|
|
91
99
|
BeforeExpiration = "beforeExpiration"
|
|
92
100
|
}
|
|
@@ -94,10 +102,10 @@ export interface TokenResponse {
|
|
|
94
102
|
/**
|
|
95
103
|
* The access token used inside the authorization http header.
|
|
96
104
|
*/
|
|
97
|
-
token: string;
|
|
105
|
+
token: string | null;
|
|
98
106
|
/**
|
|
99
107
|
* The refresh token used for requesting a new token response once the current tokes is expired.
|
|
100
108
|
* This property is required if the bearer refresh config is set.
|
|
101
109
|
*/
|
|
102
|
-
refreshToken
|
|
110
|
+
refreshToken: string | null;
|
|
103
111
|
}
|
|
@@ -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,21 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { QueryClient } from '../query-client';
|
|
3
|
-
import { RequestError } from '../request';
|
|
1
|
+
import { AnyQueryCreator } from '../query-client';
|
|
4
2
|
import { AuthProvider, AuthProviderBearerConfig, TokenResponse } from './auth-provider.types';
|
|
5
|
-
export declare class BearerAuthProvider implements AuthProvider {
|
|
3
|
+
export declare class BearerAuthProvider<T extends AnyQueryCreator> implements AuthProvider {
|
|
6
4
|
private _config;
|
|
7
|
-
private
|
|
8
|
-
private
|
|
9
|
-
private
|
|
5
|
+
private readonly _destroy$;
|
|
6
|
+
private readonly _currentRefreshQuery$;
|
|
7
|
+
private readonly _tokens$;
|
|
10
8
|
get header(): {
|
|
11
9
|
Authorization: string;
|
|
12
10
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
constructor(_config: AuthProviderBearerConfig);
|
|
11
|
+
get tokens$(): import("rxjs").Observable<TokenResponse>;
|
|
12
|
+
get tokens(): TokenResponse;
|
|
13
|
+
get currentRefreshQuery$(): import("rxjs").Observable<ReturnType<T["prepare"]> | null>;
|
|
14
|
+
get currentRefreshQuery(): ReturnType<T["prepare"]> | null;
|
|
15
|
+
constructor(_config: AuthProviderBearerConfig<T>);
|
|
18
16
|
cleanUp(): void;
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
enableCookie(): void;
|
|
18
|
+
disableCookie(): void;
|
|
19
|
+
private _prepareForRefresh;
|
|
20
|
+
private _refreshQuery;
|
|
21
21
|
}
|
|
@@ -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
|
}
|
|
@@ -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, "[infinityQueryTrigger], infinity-query-trigger", never, { "scrollContainerSelector": "scrollContainerSelector"; }, {}, never, never, true>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryTriggerDirective, "[infinityQueryTrigger], infinity-query-trigger", never, { "scrollContainerSelector": "scrollContainerSelector"; }, {}, never, never, true, never>;
|
|
15
15
|
}
|
|
@@ -18,26 +18,31 @@ interface InfinityQueryContext<Q extends InfinityQueryConfig<AnyQueryCreator, Ba
|
|
|
18
18
|
}
|
|
19
19
|
export declare const INFINITY_QUERY_TOKEN: InjectionToken<InfinityQueryDirective<any>>;
|
|
20
20
|
export declare class InfinityQueryDirective<Q extends InfinityQueryConfig<AnyQueryCreator, BaseArguments, any, unknown[]>> implements OnInit, OnDestroy {
|
|
21
|
+
private readonly _queryConfigChanged$;
|
|
21
22
|
private readonly _viewContext;
|
|
22
23
|
private _infinityQueryInstance;
|
|
23
|
-
private _destroy$;
|
|
24
|
+
private readonly _destroy$;
|
|
24
25
|
private readonly _cdr;
|
|
25
26
|
private readonly _viewContainerRef;
|
|
26
27
|
private readonly _mainTemplateRef;
|
|
27
28
|
private readonly _errorHandler;
|
|
29
|
+
private readonly _data$;
|
|
28
30
|
private _isMainViewCreated;
|
|
29
31
|
get infinityQuery(): Q;
|
|
30
32
|
set infinityQuery(v: Q);
|
|
31
33
|
private _infinityQuery;
|
|
32
34
|
get context(): InfinityQueryContext<Q>;
|
|
33
35
|
get instance(): InfinityQuery<AnyQueryCreator, import("../query").Query<any, any, any, any, any>, BaseArguments, any, unknown[]> | null;
|
|
36
|
+
get data$(): import("rxjs").Observable<Q["response"]["arrayType"]>;
|
|
37
|
+
get data(): Q["response"]["arrayType"];
|
|
34
38
|
static ngTemplateContextGuard<Q extends InfinityQueryConfig<AnyQueryCreator, BaseArguments, any, unknown[]>>(dir: InfinityQueryDirective<Q>, ctx: unknown): ctx is InfinityQueryContext<Q>;
|
|
35
39
|
ngOnInit(): void;
|
|
36
40
|
ngOnDestroy(): void;
|
|
37
41
|
private _setupInfinityQuery;
|
|
38
42
|
_loadNextPage(): void;
|
|
39
43
|
private _renderMainView;
|
|
44
|
+
private _cleanup;
|
|
40
45
|
static ɵfac: i0.ɵɵFactoryDeclaration<InfinityQueryDirective<any>, never>;
|
|
41
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryDirective<any>, "[infinityQuery]",
|
|
46
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<InfinityQueryDirective<any>, "[infinityQuery]", ["infinityQuery"], { "infinityQuery": "infinityQuery"; }, {}, never, never, true, never>;
|
|
42
47
|
}
|
|
43
48
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectorRef, ErrorHandler, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { AnyQuery, QueryRawResponseType, QueryResponseType } from '../query';
|
|
2
|
+
import { AnyQuery, AnyQueryCreatorCollection, AnyQueryOfCreatorCollection, QueryOf, QueryRawResponseType, QueryResponseType } from '../query';
|
|
3
3
|
import { RequestError } from '../request';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
interface QueryContext<Q extends AnyQuery | null> {
|
|
@@ -9,7 +9,7 @@ interface QueryContext<Q extends AnyQuery | null> {
|
|
|
9
9
|
loading: boolean;
|
|
10
10
|
error: RequestError<unknown> | null;
|
|
11
11
|
}
|
|
12
|
-
export declare class QueryDirective<Q extends AnyQuery | null> implements OnInit, OnDestroy {
|
|
12
|
+
export declare class QueryDirective<Q extends AnyQuery | AnyQueryOfCreatorCollection<AnyQueryCreatorCollection> | null> implements OnInit, OnDestroy {
|
|
13
13
|
private _mainTemplateRef;
|
|
14
14
|
private _viewContainerRef;
|
|
15
15
|
private _errorHandler;
|
|
@@ -23,14 +23,14 @@ export declare class QueryDirective<Q extends AnyQuery | null> implements OnInit
|
|
|
23
23
|
get cache(): boolean;
|
|
24
24
|
set cache(v: boolean);
|
|
25
25
|
private _cache;
|
|
26
|
-
constructor(_mainTemplateRef: TemplateRef<QueryContext<Q
|
|
27
|
-
static ngTemplateContextGuard<Q extends AnyQuery | null>(dir: QueryDirective<Q>, ctx: unknown): ctx is QueryContext<Q
|
|
26
|
+
constructor(_mainTemplateRef: TemplateRef<QueryContext<QueryOf<Q>>>, _viewContainerRef: ViewContainerRef, _errorHandler: ErrorHandler, _cdr: ChangeDetectorRef);
|
|
27
|
+
static ngTemplateContextGuard<Q extends AnyQuery | AnyQueryOfCreatorCollection<AnyQueryCreatorCollection> | null>(dir: QueryDirective<Q>, ctx: unknown): ctx is QueryContext<QueryOf<Q>>;
|
|
28
28
|
ngOnInit(): void;
|
|
29
29
|
ngOnDestroy(): void;
|
|
30
30
|
private _subscribeToQuery;
|
|
31
31
|
private _updateView;
|
|
32
32
|
private _renderMainView;
|
|
33
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueryDirective<any>, never>;
|
|
34
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<QueryDirective<any>, "[query]", never, { "query": "query"; "cache": "queryCache"; }, {}, never, never, true>;
|
|
34
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<QueryDirective<any>, "[query]", never, { "query": "query"; "cache": "queryCache"; }, {}, never, never, true, never>;
|
|
35
35
|
}
|
|
36
36
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BaseArguments } from '../query';
|
|
2
|
-
import { AnyQueryCreator } from '../query-client';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
import { BaseArguments, QueryStateData } from '../query';
|
|
2
|
+
import { AnyQueryCreator, QueryCreatorArgs, QueryCreatorReturnType } from '../query-client';
|
|
3
|
+
export type InfinityQueryParamLocation = 'path' | 'query' | 'body' | 'header' | 'variable';
|
|
4
|
+
export type AppendItemsLocation = 'start' | 'end';
|
|
5
5
|
export interface PageParamCalculatorOptions {
|
|
6
6
|
page: number;
|
|
7
7
|
totalPages: number | null;
|
|
@@ -89,3 +89,6 @@ export interface InfinityQueryConfig<QueryCreator extends AnyQueryCreator, Argum
|
|
|
89
89
|
totalPagesExtractor?: (data: TotalPagesExtractorOptions<QueryResponse>) => number;
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
|
+
type OmitUndefined<T> = T extends undefined ? never : T;
|
|
93
|
+
export type InfinityQueryConfigType<QueryCreator extends AnyQueryCreator, InfinityResponse extends unknown[]> = InfinityQueryConfig<QueryCreator, OmitUndefined<QueryCreatorArgs<QueryCreator>>, QueryStateData<QueryCreatorReturnType<QueryCreator>['state']>, InfinityResponse>;
|
|
94
|
+
export {};
|
package/lib/query/query.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DefaultResponseTransformer, QueryClient, ResponseTransformerType } from '../query-client';
|
|
2
2
|
import { Method as MethodType } from '../request';
|
|
3
|
-
import { BaseArguments, GqlQueryConfig, PollConfig,
|
|
4
|
-
export declare class Query<Response, Arguments extends BaseArguments | undefined, Route extends RouteType<Arguments>, Method extends MethodType, ResponseTransformer extends ResponseTransformerType<Response> = DefaultResponseTransformer<Response>> {
|
|
3
|
+
import { BaseArguments, GqlQueryConfig, PollConfig, QueryState, RestQueryConfig, RouteType, RunQueryOptions, WithUseResultIn } from './query.types';
|
|
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;
|
|
7
7
|
private _route;
|
|
@@ -9,16 +9,18 @@ export declare class Query<Response, Arguments extends BaseArguments | undefined
|
|
|
9
9
|
private _currentId;
|
|
10
10
|
private _abortController;
|
|
11
11
|
private _pollingSubscription;
|
|
12
|
+
private _onAbort$;
|
|
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
|
-
constructor(_client: QueryClient, _queryConfig:
|
|
18
|
+
constructor(_client: QueryClient, _queryConfig: RestQueryConfig<Route, Response, Arguments, ResponseTransformer> | GqlQueryConfig<Route, Response, Arguments, ResponseTransformer>, _route: Route, _args: Arguments | undefined);
|
|
18
19
|
clone(): import("../query-client").QueryCreator<Arguments, Method, Response, Route, ResponseTransformer>;
|
|
19
20
|
execute<ComputedResponse extends ReturnType<ResponseTransformer>>(options?: RunQueryOptions): this;
|
|
20
21
|
abort(): this;
|
|
21
22
|
poll(config: PollConfig): this;
|
|
22
23
|
stopPolling(): this;
|
|
24
|
+
private _updateUseResultInDependencies;
|
|
23
25
|
private _handleExecuteError;
|
|
24
26
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import { ResponseTransformerType } from '../query-client';
|
|
2
|
+
import { AnyQueryCreator, QueryCreatorReturnType, ResponseTransformerType } from '../query-client';
|
|
3
3
|
import { Method, PathParams, QueryParams, RequestError } from '../request';
|
|
4
4
|
import { Query } from './query';
|
|
5
|
-
export interface
|
|
5
|
+
export interface RestQueryConfig<Route extends RouteType<Arguments>, Response, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response> | undefined> {
|
|
6
6
|
/**
|
|
7
7
|
* The http method to use for the query.
|
|
8
8
|
*/
|
|
@@ -51,9 +51,9 @@ export interface GqlQueryConfig<Route extends RouteType<Arguments> | undefined,
|
|
|
51
51
|
args?: Arguments;
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
export
|
|
55
|
-
export
|
|
56
|
-
export
|
|
54
|
+
export type QueryConfigWithoutMethod<Route extends RouteType<Arguments>, Response, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response> | undefined> = Omit<RestQueryConfig<Route, Response, Arguments, ResponseTransformer>, 'method'>;
|
|
55
|
+
export type GqlQueryConfigWithoutMethod<Route extends RouteType<Arguments>, Response, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response> | undefined> = Omit<GqlQueryConfig<Route, Response, Arguments, ResponseTransformer>, 'method'>;
|
|
56
|
+
export type BaseArguments = WithHeaders & WithVariables & WithBody & WithQueryParams & WithPathParams;
|
|
57
57
|
export interface WithHeaders {
|
|
58
58
|
headers?: Record<string, string>;
|
|
59
59
|
}
|
|
@@ -69,14 +69,17 @@ export interface WithQueryParams {
|
|
|
69
69
|
export interface WithPathParams {
|
|
70
70
|
pathParams?: PathParams;
|
|
71
71
|
}
|
|
72
|
-
export
|
|
72
|
+
export type WithUseResultIn<Response, ResponseTransformer extends ResponseTransformerType<Response>> = {
|
|
73
|
+
useResultIn?: Query<Response, any, any, any, ResponseTransformer>[];
|
|
74
|
+
};
|
|
75
|
+
export type EmptyObject = {};
|
|
73
76
|
export interface RunQueryOptions {
|
|
74
77
|
skipCache?: boolean;
|
|
75
78
|
}
|
|
76
|
-
export
|
|
79
|
+
export type RouteType<Arguments extends BaseArguments | undefined> = Arguments extends {
|
|
77
80
|
pathParams: infer PathParams;
|
|
78
81
|
} ? (p: PathParams) => RouteString : RouteString;
|
|
79
|
-
export
|
|
82
|
+
export type RouteString = `/${string}`;
|
|
80
83
|
export interface PollConfig {
|
|
81
84
|
interval: number;
|
|
82
85
|
takeUntil: Observable<unknown>;
|
|
@@ -117,12 +120,26 @@ export interface QueryStateMeta {
|
|
|
117
120
|
export interface QueryStateSuccessMeta extends QueryStateMeta {
|
|
118
121
|
readonly expiresAt: number | null;
|
|
119
122
|
}
|
|
120
|
-
export
|
|
121
|
-
export
|
|
122
|
-
export
|
|
123
|
-
export
|
|
124
|
-
export
|
|
123
|
+
export type QueryState<Response = unknown, RawResponse = unknown> = Loading | Success<Response, RawResponse> | Failure | Cancelled | Prepared;
|
|
124
|
+
export type QueryStateData<T extends QueryState = QueryState> = T extends Success<infer Response> ? Response : never;
|
|
125
|
+
export type QueryStateRawData<T extends QueryState = QueryState> = T extends Success<infer Response, infer RawResponse> ? RawResponse : never;
|
|
126
|
+
export type AnyQuery = Query<any, any, any, any, any>;
|
|
127
|
+
export type QueryType<T extends {
|
|
125
128
|
prepare: (args: any) => AnyQuery;
|
|
126
129
|
}> = T['prepare'] extends () => infer R ? R : T['prepare'] extends (args: any) => infer R ? R : never;
|
|
127
|
-
export
|
|
128
|
-
export
|
|
130
|
+
export type QueryResponseType<Q extends AnyQuery | null> = Q extends AnyQuery ? QueryStateData<Q['state']> | null : null;
|
|
131
|
+
export type QueryRawResponseType<Q extends AnyQuery | null> = Q extends AnyQuery ? QueryStateRawData<Q['state']> | null : null;
|
|
132
|
+
export type AnyQueryCreatorCollection = {
|
|
133
|
+
[name: string]: AnyQueryCreator;
|
|
134
|
+
};
|
|
135
|
+
export type AnyQueryOfCreatorCollection<T extends {
|
|
136
|
+
[name: string]: AnyQueryCreator;
|
|
137
|
+
}> = {
|
|
138
|
+
[K in keyof T]: {
|
|
139
|
+
type: K;
|
|
140
|
+
query: QueryCreatorReturnType<T[K]>;
|
|
141
|
+
};
|
|
142
|
+
}[keyof T];
|
|
143
|
+
export type QueryOf<T extends AnyQueryOfCreatorCollection<AnyQueryCreatorCollection> | AnyQuery | null> = T extends AnyQuery ? T : T extends AnyQueryOfCreatorCollection<AnyQueryCreatorCollection> ? T['query'] : never;
|
|
144
|
+
export type AnyQueryResponseOfCreatorCollection<T extends AnyQueryOfCreatorCollection<AnyQueryCreatorCollection>> = QueryResponseType<T['query']>;
|
|
145
|
+
export type AnyQueryRawResponseOfCreatorCollection<T extends AnyQueryOfCreatorCollection<AnyQueryCreatorCollection>> = QueryRawResponseType<T['query']>;
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
1
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
2
2
|
import { ResponseTransformerType } from '../query-client';
|
|
3
3
|
import { RequestHeaders } from '../request';
|
|
4
|
-
import { BaseArguments, Cancelled, Failure, GqlQueryConfig, Loading, Prepared, QueryState, QueryStateData, QueryStateRawData, RouteType, Success } from './query.types';
|
|
5
|
-
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
4
|
+
import { AnyQuery, AnyQueryCreatorCollection, AnyQueryOfCreatorCollection, BaseArguments, Cancelled, Failure, GqlQueryConfig, Loading, Prepared, QueryRawResponseType, QueryResponseType, QueryState, QueryStateData, QueryStateRawData, QueryStateType, RouteType, Success } from './query.types';
|
|
5
|
+
type OmitNull<T> = T extends null ? never : T;
|
|
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
|
+
export declare function filterFailure(): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<Failure>;
|
|
8
|
+
export declare function filterQueryStates(allowedStates: QueryStateType[]): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
|
|
9
|
+
export declare function takeUntilResponse(config?: {
|
|
10
|
+
excludeNull?: boolean;
|
|
11
|
+
}): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
|
|
12
|
+
export declare function filterNull(): <T>(source: Observable<T>) => Observable<OmitNull<T>>;
|
|
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>;
|
|
14
|
+
export declare function switchQueryCollectionState(): <T extends {
|
|
15
|
+
type: string;
|
|
16
|
+
query: import("@ethlete/query").Query<any, any, any, any, any>;
|
|
17
|
+
} | null, Response_1 extends QueryResponseType<OmitNull<T>["query"]>, RawResponse extends QueryRawResponseType<OmitNull<T>["query"]>>(source: Observable<T>) => Observable<QueryState<OmitNull<Response_1>, OmitNull<RawResponse>> | null>;
|
|
8
18
|
export declare const isQueryStateLoading: (state: QueryState | null | undefined) => state is Loading;
|
|
9
19
|
export declare const isQueryStateSuccess: (state: QueryState | null | undefined) => state is Success<unknown, unknown>;
|
|
10
20
|
export declare const isQueryStateFailure: (state: QueryState | null | undefined) => state is Failure;
|
|
@@ -12,3 +22,10 @@ export declare const isQueryStateCancelled: (state: QueryState | null | undefine
|
|
|
12
22
|
export declare const isQueryStatePrepared: (state: QueryState | null | undefined) => state is Prepared;
|
|
13
23
|
export declare const mergeHeaders: (...headers: Array<RequestHeaders | null | undefined>) => RequestHeaders | null | undefined;
|
|
14
24
|
export declare const isGqlQueryConfig: <Response_1, Arguments extends BaseArguments | undefined, Route extends RouteType<Arguments> | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> | undefined>(config: unknown) => config is GqlQueryConfig<Route, Response_1, Arguments, ResponseTransformer>;
|
|
25
|
+
export declare const isQuery: <T extends AnyQuery>(query: unknown) => query is T;
|
|
26
|
+
export declare const createQueryCollection: <T extends AnyQueryCreatorCollection, R extends AnyQueryOfCreatorCollection<T>>(queryMap: T) => BehaviorSubject<R | null>;
|
|
27
|
+
export declare const extractQuery: <T extends AnyQuery | {
|
|
28
|
+
type: string;
|
|
29
|
+
query: import("@ethlete/query").Query<any, any, any, any, any>;
|
|
30
|
+
} | null>(v: T) => import("@ethlete/query").Query<any, any, any, any, any> | null;
|
|
31
|
+
export {};
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { AuthProvider } from '../auth';
|
|
2
|
-
import { BaseArguments, GqlQueryConfig, GqlQueryConfigWithoutMethod,
|
|
2
|
+
import { BaseArguments, GqlQueryConfig, GqlQueryConfigWithoutMethod, QueryConfigWithoutMethod, RestQueryConfig, RouteType } from '../query';
|
|
3
3
|
import { Method as MethodType } from '../request';
|
|
4
4
|
import { DefaultResponseTransformer, QueryClientConfig, QueryCreator, ResponseTransformerType } from './query-client.types';
|
|
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
|
-
get: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "GET", Response_1, Route, ResponseTransformer>;
|
|
13
|
-
post: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "POST", Response_1, Route, ResponseTransformer>;
|
|
14
|
-
put: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "PUT", Response_1, Route, ResponseTransformer>;
|
|
15
|
-
patch: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "PATCH", Response_1, Route, ResponseTransformer>;
|
|
16
|
-
delete: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "DELETE", Response_1, Route, ResponseTransformer>;
|
|
17
|
-
gqlQuery: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "GQL_QUERY", Response_1, Route, ResponseTransformer>;
|
|
18
|
-
gqlMutate: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "GQL_MUTATE", Response_1, Route, ResponseTransformer>;
|
|
19
|
-
fetch: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, Method extends MethodType, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig:
|
|
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>;
|
|
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>;
|
|
15
|
+
put: <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, "PUT", Response_1, Route, ResponseTransformer>;
|
|
16
|
+
patch: <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, "PATCH", Response_1, Route, ResponseTransformer>;
|
|
17
|
+
delete: <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, "DELETE", Response_1, Route, ResponseTransformer>;
|
|
18
|
+
gqlQuery: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "GQL_QUERY", Response_1, Route, ResponseTransformer>;
|
|
19
|
+
gqlMutate: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, "GQL_MUTATE", Response_1, Route, ResponseTransformer>;
|
|
20
|
+
fetch: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, Method extends MethodType, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>>(queryConfig: RestQueryConfig<Route, Response_1, Arguments, ResponseTransformer> | GqlQueryConfig<Route, Response_1, Arguments, ResponseTransformer>) => QueryCreator<Arguments, Method, Response_1, Route, ResponseTransformer>;
|
|
20
21
|
setAuthProvider: (authProvider: AuthProvider) => void;
|
|
21
22
|
clearAuthProvider: () => void;
|
|
22
23
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import { Query } from '../query/query';
|
|
3
|
-
import { BaseArguments, EmptyObject, RouteType, WithHeaders } from '../query/query.types';
|
|
3
|
+
import { BaseArguments, EmptyObject, RouteType, WithHeaders, WithUseResultIn } from '../query/query.types';
|
|
4
4
|
import { CacheAdapterFn, Method as MethodType } from '../request';
|
|
5
5
|
export interface QueryClientConfig {
|
|
6
6
|
/**
|
|
@@ -33,15 +33,15 @@ export interface QueryClientConfig {
|
|
|
33
33
|
cacheAdapter?: CacheAdapterFn;
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
-
export
|
|
37
|
-
prepare: (args: Arguments & WithHeaders) => Query<Response, Arguments, Route, Method, ResponseTransformer>;
|
|
36
|
+
export type QueryCreator<Arguments extends BaseArguments | undefined, Method extends MethodType, Response, Route extends RouteType<Arguments>, ResponseTransformer extends ResponseTransformerType<Response> = DefaultResponseTransformer<Response>> = (Arguments extends BaseArguments ? {
|
|
37
|
+
prepare: (args: Arguments & WithHeaders & WithUseResultIn<Response, ResponseTransformer>) => Query<Response, Arguments, Route, Method, ResponseTransformer>;
|
|
38
38
|
} : {
|
|
39
|
-
prepare: (args?: (Arguments extends EmptyObject ? Arguments : EmptyObject) & WithHeaders) => Query<Response, Arguments, Route, Method, ResponseTransformer>;
|
|
39
|
+
prepare: (args?: (Arguments extends EmptyObject ? Arguments : EmptyObject) & WithHeaders & WithUseResultIn<Response, ResponseTransformer>) => Query<Response, Arguments, Route, Method, ResponseTransformer>;
|
|
40
40
|
}) & {
|
|
41
41
|
behaviorSubject: <T extends Query<Response, Arguments, Route, Method, ResponseTransformer>>(initialValue?: T | null) => BehaviorSubject<T | null>;
|
|
42
42
|
};
|
|
43
|
-
export
|
|
44
|
-
export
|
|
45
|
-
export
|
|
46
|
-
export
|
|
47
|
-
export
|
|
43
|
+
export type AnyQueryCreator = QueryCreator<any, any, any, any, any>;
|
|
44
|
+
export type QueryCreatorArgs<T extends AnyQueryCreator> = Parameters<T['prepare']>[0];
|
|
45
|
+
export type ResponseTransformerType<Response> = (response: Response) => unknown;
|
|
46
|
+
export type DefaultResponseTransformer<Response> = (response: Response) => Response;
|
|
47
|
+
export type QueryCreatorReturnType<T extends AnyQueryCreator> = ReturnType<T['prepare']>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
import {
|
|
3
|
+
import { QueryFieldOptions, QueryFormGroup, QueryFormValue } from './query-form.types';
|
|
4
4
|
export declare class QueryField<T> {
|
|
5
5
|
data: QueryFieldOptions<T>;
|
|
6
6
|
changes$: Observable<T | null>;
|
|
@@ -26,18 +26,28 @@ export interface QueryFieldOptions<T = unknown> {
|
|
|
26
26
|
* E.g. for a number field, the value from the url query params is a string, but the field requires a number.
|
|
27
27
|
*
|
|
28
28
|
* The following common transformations are already implemented:
|
|
29
|
+
* - `transformToString`
|
|
30
|
+
* - `transformToStringArray`
|
|
29
31
|
* - `transformToNumber`
|
|
30
32
|
* - `transformToNumberArray`
|
|
31
33
|
* - `transformToBoolean`
|
|
32
34
|
* - `transformToBooleanArray`
|
|
33
35
|
* - `transformToDate` (expects a string in the default js format)
|
|
34
36
|
* - `transformToDateArray` (expects strings in the default js format)
|
|
37
|
+
* - `transformToSort` (expects a string in the format `field:direction`)
|
|
35
38
|
*/
|
|
36
|
-
|
|
39
|
+
queryParamToValueTransformFn?: (val: unknown) => T | null;
|
|
40
|
+
/**
|
|
41
|
+
* A function that transforms the value of the field to a value that can be appended to the url query params.
|
|
42
|
+
*
|
|
43
|
+
* The following common transformations are already implemented:
|
|
44
|
+
* - `transformToSortQueryParam` (returns an object containing `field` and `direction` properties)
|
|
45
|
+
*/
|
|
46
|
+
valueToQueryParamTransformFn?: (val: T | null) => unknown;
|
|
37
47
|
}
|
|
38
|
-
export
|
|
48
|
+
export type QueryFormGroup<T extends Record<string, QueryField<any>>> = {
|
|
39
49
|
[Property in keyof T]: T[Property]['control'];
|
|
40
50
|
};
|
|
41
|
-
export
|
|
51
|
+
export type QueryFormValue<T extends Record<string, QueryField<any>>> = {
|
|
42
52
|
[Property in keyof T]: T[Property]['control']['value'];
|
|
43
53
|
};
|
|
@@ -6,3 +6,8 @@ export declare const transformToBoolean: (value: unknown) => boolean | null;
|
|
|
6
6
|
export declare const transformToBooleanArray: (value: unknown) => boolean[] | null;
|
|
7
7
|
export declare const transformToDate: (value: unknown) => Date | null;
|
|
8
8
|
export declare const transformToDateArray: (value: unknown) => Date[] | null;
|
|
9
|
+
export declare const transformToSort: (value: unknown) => {
|
|
10
|
+
active: string;
|
|
11
|
+
direction: "desc" | "asc";
|
|
12
|
+
} | null;
|
|
13
|
+
export declare const transformToSortQueryParam: (value: unknown) => string | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'TRACE' | 'CONNECT' | 'PURGE' | 'LINK' | 'UNLINK' | 'GQL_QUERY' | 'GQL_MUTATE' | 'CUSTOM';
|
|
2
2
|
export interface RequestError<Detail = unknown> {
|
|
3
3
|
code: number;
|
|
4
4
|
message: string;
|
|
@@ -7,12 +7,12 @@ export interface RequestError<Detail = unknown> {
|
|
|
7
7
|
route: string;
|
|
8
8
|
requestInit?: RequestInit;
|
|
9
9
|
}
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
10
|
+
export type ParamPrimitive = string | number | boolean | null | undefined;
|
|
11
|
+
export type Params = Record<string | number | symbol, ParamPrimitive | ParamArray>;
|
|
12
|
+
export type ParamArray = Array<ParamPrimitive>;
|
|
13
|
+
export type UnfilteredParamPrimitive = string | number | boolean | null | undefined;
|
|
14
|
+
export type QueryParams = Record<string | number | symbol, UnfilteredParamPrimitive | UnfilteredParamArray>;
|
|
15
|
+
export type PathParams = Record<string, string | number>;
|
|
16
|
+
export type UnfilteredParamArray = Array<UnfilteredParamPrimitive>;
|
|
17
|
+
export type CacheAdapterFn = (headers: Headers) => number | null;
|
|
18
|
+
export type RequestHeaders = Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const deepFreeze: <T extends Record<string, unknown>>(object: T) =>
|
|
1
|
+
export declare const deepFreeze: <T extends Record<string, unknown>>(object: T) => T;
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.20",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@angular/common": "^14.2.0",
|
|
9
|
-
"@angular/core": "^14.2.0",
|
|
10
|
-
"
|
|
11
|
-
"@angular/forms": "
|
|
12
|
-
"@angular/router": "
|
|
8
|
+
"@angular/common": "^14.2.0 || ^15.0.0",
|
|
9
|
+
"@angular/core": "^14.2.0 || ^15.0.0",
|
|
10
|
+
"@ethlete/core": "0.2.0-next.16",
|
|
11
|
+
"@angular/forms": "15.1.2",
|
|
12
|
+
"@angular/router": "15.1.2"
|
|
13
13
|
},
|
|
14
14
|
"module": "fesm2015/ethlete-query.mjs",
|
|
15
15
|
"es2020": "fesm2020/ethlete-query.mjs",
|