@ethlete/query 5.38.0 → 5.40.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 +16 -0
- package/fesm2022/ethlete-query.mjs +4567 -4201
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/directives/query.directive.d.ts +4 -3
- package/lib/experimental/http/http-request.d.ts +5 -2
- package/lib/experimental/http/query-creator.d.ts +5 -0
- package/lib/experimental/http/query-dependencies.d.ts +8 -1
- package/lib/experimental/http/query-repository.d.ts +15 -4
- package/lib/experimental/index.d.ts +1 -0
- package/lib/experimental/interop/index.d.ts +2 -0
- package/lib/experimental/interop/legacy-query-creator.d.ts +45 -0
- package/lib/experimental/interop/legacy-query.d.ts +38 -0
- package/lib/infinite-query/infinity-query.d.ts +2 -1
- package/lib/infinite-query/infinity-query.types.d.ts +3 -2
- package/lib/infinite-query/infinity-query.utils.d.ts +2 -1
- package/lib/query/query.types.d.ts +9 -4
- package/lib/query/query.utils.d.ts +2 -1
- package/lib/query-creator/query-creator.types.d.ts +8 -7
- package/lib/utils/data.utils.d.ts +18 -16
- package/package.json +6 -5
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { AnyLegacyQuery } from '../experimental';
|
|
2
3
|
import { AnyQuery, AnyQueryCollection, QueryCollectionKeysOf, QueryOf } from '../query';
|
|
3
4
|
import { QueryDataOf } from '../query-creator';
|
|
4
5
|
import { RequestError, RequestProgress } from '../request';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
interface QueryContext<Q extends AnyQuery | AnyQueryCollection | null> {
|
|
7
|
+
interface QueryContext<Q extends AnyQuery | AnyLegacyQuery | AnyQueryCollection | null> {
|
|
7
8
|
/**
|
|
8
9
|
* The queries's response data.
|
|
9
10
|
*/
|
|
@@ -37,7 +38,7 @@ interface QueryContext<Q extends AnyQuery | AnyQueryCollection | null> {
|
|
|
37
38
|
*/
|
|
38
39
|
scope: QueryCollectionKeysOf<Q> | null;
|
|
39
40
|
}
|
|
40
|
-
export declare class QueryDirective<Q extends AnyQuery | AnyQueryCollection | null> implements OnInit, OnDestroy {
|
|
41
|
+
export declare class QueryDirective<Q extends AnyQuery | AnyLegacyQuery | AnyQueryCollection | null> implements OnInit, OnDestroy {
|
|
41
42
|
private _mainTemplateRef;
|
|
42
43
|
private _viewContainerRef;
|
|
43
44
|
private _errorHandler;
|
|
@@ -51,7 +52,7 @@ export declare class QueryDirective<Q extends AnyQuery | AnyQueryCollection | nu
|
|
|
51
52
|
get cache(): boolean;
|
|
52
53
|
set cache(v: boolean);
|
|
53
54
|
private _cache;
|
|
54
|
-
static ngTemplateContextGuard<Q extends AnyQuery | AnyQueryCollection | null>(dir: QueryDirective<Q>, ctx: unknown): ctx is QueryContext<Q>;
|
|
55
|
+
static ngTemplateContextGuard<Q extends AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>(dir: QueryDirective<Q>, ctx: unknown): ctx is QueryContext<Q>;
|
|
55
56
|
ngOnInit(): void;
|
|
56
57
|
ngOnDestroy(): void;
|
|
57
58
|
private _subscribeToQuery;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { HttpClient, HttpContext, HttpEvent } from '@angular/common/http';
|
|
2
|
-
import { Signal } from '@angular/core';
|
|
2
|
+
import { ErrorHandler, Signal } from '@angular/core';
|
|
3
3
|
import { QueryArgs, RequestArgs, ResponseType } from './query';
|
|
4
4
|
import { CacheAdapterFn } from './query-client-config';
|
|
5
5
|
import { QueryMethod } from './query-creator';
|
|
6
6
|
import { QueryErrorResponse } from './query-error-response';
|
|
7
|
+
import { QueryRepositoryDependencies } from './query-repository';
|
|
7
8
|
import { ShouldRetryRequestFn } from './query-utils';
|
|
8
9
|
export declare const SPEED_BUFFER_TIME_IN_MS = 2000;
|
|
9
10
|
export type HttpRequestTransferCacheConfig = boolean | {
|
|
@@ -13,6 +14,8 @@ export type HttpRequestResponseType = 'json' | 'text' | 'blob' | 'arraybuffer';
|
|
|
13
14
|
export type CreateHttpRequestDependencies = {
|
|
14
15
|
/** The http client instance to use for the request */
|
|
15
16
|
httpClient: HttpClient;
|
|
17
|
+
/** The error handler instance to use for the request */
|
|
18
|
+
ngErrorHandler: ErrorHandler;
|
|
16
19
|
};
|
|
17
20
|
export type CreateHttpRequestClientOptions = {
|
|
18
21
|
/**
|
|
@@ -58,7 +61,7 @@ export type CreateHttpRequestOptions<TArgs extends QueryArgs> = {
|
|
|
58
61
|
/** The data of the request */
|
|
59
62
|
args?: RequestArgs<TArgs> | null;
|
|
60
63
|
/** The dependencies of the request */
|
|
61
|
-
dependencies:
|
|
64
|
+
dependencies: QueryRepositoryDependencies;
|
|
62
65
|
/** The client options of the request */
|
|
63
66
|
clientOptions?: CreateHttpRequestClientOptions;
|
|
64
67
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
1
2
|
import { HttpRequestResponseType, HttpRequestTransferCacheConfig } from './http-request';
|
|
2
3
|
import { AnyQuery, PathParamsType, Query, QueryArgs } from './query';
|
|
3
4
|
import { QueryClientConfig } from './query-client-config';
|
|
@@ -69,6 +70,10 @@ export type QueryConfig = {
|
|
|
69
70
|
* If true, the query will not throw an error because a "withArgs()" feature is missing.
|
|
70
71
|
*/
|
|
71
72
|
silenceMissingWithArgsFeatureError?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* A custom injector to use for this query.
|
|
75
|
+
*/
|
|
76
|
+
injector?: Injector;
|
|
72
77
|
};
|
|
73
78
|
export declare const splitQueryConfig: <TArgs extends QueryArgs>(args: (QueryFeature<TArgs> | QueryConfig)[]) => {
|
|
74
79
|
features: QueryFeature<TArgs>[];
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { DestroyRef, EnvironmentInjector, ErrorHandler, ɵEffectScheduler } from '@angular/core';
|
|
2
3
|
import { QueryClient } from './query-client';
|
|
3
4
|
import { QueryClientConfig } from './query-client-config';
|
|
5
|
+
import { QueryConfig } from './query-creator';
|
|
4
6
|
export type SetupQueryDependenciesOptions = {
|
|
5
7
|
clientConfig: QueryClientConfig;
|
|
8
|
+
queryConfig: QueryConfig | undefined;
|
|
6
9
|
};
|
|
7
10
|
export type QueryDependencies = {
|
|
8
11
|
/** The destroy ref of the query. */
|
|
@@ -15,5 +18,9 @@ export type QueryDependencies = {
|
|
|
15
18
|
injector: EnvironmentInjector;
|
|
16
19
|
/** The effect scheduler */
|
|
17
20
|
effectScheduler: ɵEffectScheduler;
|
|
21
|
+
/** The error handler */
|
|
22
|
+
ngErrorHandler: ErrorHandler;
|
|
23
|
+
/** The http client */
|
|
24
|
+
httpClient: HttpClient;
|
|
18
25
|
};
|
|
19
26
|
export declare const setupQueryDependencies: (options: SetupQueryDependenciesOptions) => QueryDependencies;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { DestroyRef, ErrorHandler } from '@angular/core';
|
|
2
3
|
import { CreateHttpRequestClientOptions, HttpRequest } from './http-request';
|
|
3
4
|
import { QueryArgs, RequestArgs } from './query';
|
|
4
5
|
import { QueryClientConfig } from './query-client-config';
|
|
@@ -24,7 +25,7 @@ export type QueryRepositoryRequestOptions<TArgs extends QueryArgs> = {
|
|
|
24
25
|
/** The previous cache key of the request */
|
|
25
26
|
previousKey?: string | false;
|
|
26
27
|
/** The destroy ref to bind the request to. If the destroy ref is destroyed, the request will be destroyed as well. */
|
|
27
|
-
|
|
28
|
+
consumerDestroyRef: DestroyRef;
|
|
28
29
|
/** Configuration on how to run the query */
|
|
29
30
|
runQueryOptions?: RunQueryExecuteOptions;
|
|
30
31
|
/** Internal options for running the query */
|
|
@@ -45,7 +46,7 @@ export type QueryRepository = {
|
|
|
45
46
|
/** Creates a new request. If the request is already cached, it will be reused. */
|
|
46
47
|
request: <TArgs extends QueryArgs>(options: QueryRepositoryRequestOptions<TArgs>) => QueryRepositoryItem<TArgs>;
|
|
47
48
|
/** Removes a consumer from a request by its key. Destroys the request if there are no more consumers left. */
|
|
48
|
-
unbind: (key: QueryKeyOrNone,
|
|
49
|
+
unbind: (key: QueryKeyOrNone, consumerDestroyRef: DestroyRef) => boolean;
|
|
49
50
|
/** Removes all secure requests and their consumers */
|
|
50
51
|
unbindAllSecure: () => void;
|
|
51
52
|
};
|
|
@@ -55,4 +56,14 @@ export type QueryKey = string;
|
|
|
55
56
|
export type QueryKeyNoCache = false;
|
|
56
57
|
/** A key that may or may not be cached */
|
|
57
58
|
export type QueryKeyOrNone = QueryKey | QueryKeyNoCache;
|
|
58
|
-
export
|
|
59
|
+
export type QueryRepositoryDependencies = {
|
|
60
|
+
/** The HTTP client to use for the requests */
|
|
61
|
+
httpClient: HttpClient;
|
|
62
|
+
/** The error handler to use for the requests */
|
|
63
|
+
ngErrorHandler: ErrorHandler;
|
|
64
|
+
};
|
|
65
|
+
export type CreateQueryRepositoryConfig = QueryClientConfig & {
|
|
66
|
+
/** The dependencies of the query repository */
|
|
67
|
+
dependencies: QueryRepositoryDependencies;
|
|
68
|
+
};
|
|
69
|
+
export declare const createQueryRepository: (config: CreateQueryRepositoryConfig) => QueryRepository;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { EntityStore } from '../../entity';
|
|
4
|
+
import { BaseArguments, EmptyObject, QueryConfig, QueryEntityConfig, RouteType, WithHeaders, WithInjector } from '../../query';
|
|
5
|
+
import { QueryContainerConfig } from '../../utils';
|
|
6
|
+
import { AnyQuery, Query, QueryArgs, QueryCreator, ResponseType } from '../http';
|
|
7
|
+
import { LegacyQuery } from './legacy-query';
|
|
8
|
+
export type LegacyArgumentsOfQueryArgs<T extends QueryArgs> = Omit<T, 'response' | 'headers'> & WithHeaders;
|
|
9
|
+
export type QueryArgsOfLegacyArguments<T extends BaseArguments | undefined, J> = Omit<T, 'mock' | 'headers'> & {
|
|
10
|
+
headers?: HttpHeaders;
|
|
11
|
+
response?: J;
|
|
12
|
+
};
|
|
13
|
+
export type CreateLegacyQueryCreatorOptions<TArgs extends QueryArgs, Response, Store extends EntityStore<unknown>, Data, Id> = {
|
|
14
|
+
creator: QueryCreator<TArgs>;
|
|
15
|
+
/**
|
|
16
|
+
* Object containing the query's entity store information.
|
|
17
|
+
*/
|
|
18
|
+
entity?: QueryEntityConfig<Store, Data, Response, LegacyArgumentsOfQueryArgs<TArgs>, Id>;
|
|
19
|
+
};
|
|
20
|
+
export interface WithLegacyConfig {
|
|
21
|
+
/**
|
|
22
|
+
* Additional configuration for this query.
|
|
23
|
+
*/
|
|
24
|
+
config?: QueryConfig & {
|
|
25
|
+
/**
|
|
26
|
+
* If set to true, the query will be destroyed when it either succeeds or fails.
|
|
27
|
+
*/
|
|
28
|
+
destroyOnResponse?: boolean;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export type LegacyQueryPrepareFn<Arguments extends BaseArguments | undefined, Response, Route extends RouteType<Arguments>, Store extends EntityStore<unknown>, Data, Id, TNewQuery extends AnyQuery> = Arguments extends BaseArguments ? (args: Arguments & WithHeaders & WithLegacyConfig & WithInjector) => LegacyQuery<Response, Arguments, Route, Store, Data, Id, TNewQuery> : (args?: (Arguments extends EmptyObject ? Arguments : EmptyObject) & WithHeaders & WithLegacyConfig & WithInjector) => LegacyQuery<Response, Arguments, Route, Store, Data, Id, TNewQuery>;
|
|
32
|
+
export type AnyLegacyQueryCreator = LegacyQueryCreator<any, any, any, any, any>;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a legacy query creator.
|
|
35
|
+
* @deprecated This is a temporary solution to support legacy queries. It will be removed in the future.
|
|
36
|
+
*/
|
|
37
|
+
export declare class LegacyQueryCreator<TArgs extends QueryArgs, Response extends ResponseType<TArgs>, Store extends EntityStore<unknown>, Id, Data = Response> {
|
|
38
|
+
options: CreateLegacyQueryCreatorOptions<TArgs, Response, Store, Data, Id>;
|
|
39
|
+
constructor(options: CreateLegacyQueryCreatorOptions<TArgs, Response, Store, Data, Id>);
|
|
40
|
+
prepare: LegacyQueryPrepareFn<LegacyArgs, Response, Route, Store, Data, Id, Query<TArgs>>;
|
|
41
|
+
createSubject: (initialValue?: ReturnType<typeof this.prepare> | null, config?: QueryContainerConfig) => BehaviorSubject<LegacyQuery<Response, LegacyArgs, Route, Store, Data, Id, Query<TArgs>> | null>;
|
|
42
|
+
createSignal: (initialValue?: ReturnType<typeof this.prepare> | null, config?: QueryContainerConfig) => import("@angular/core").WritableSignal<LegacyQuery<Response, LegacyArgs, Route, Store, Data, Id, Query<TArgs>> | null>;
|
|
43
|
+
behaviorSubject: (initialValue?: ReturnType<typeof this.prepare> | null, config?: QueryContainerConfig) => BehaviorSubject<LegacyQuery<Response, LegacyArgs, Route, Store, Data, Id, Query<TArgs>> | null>;
|
|
44
|
+
}
|
|
45
|
+
export declare const createLegacyQueryCreator: <TArgs extends QueryArgs, Response extends ResponseType<TArgs>, Store extends EntityStore<unknown>, Id, Data = Response>(options: CreateLegacyQueryCreatorOptions<TArgs, Response, Store, Data, Id>) => LegacyQueryCreator<TArgs, Response, Store, Id, Data>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { EntityStore } from '../../entity';
|
|
3
|
+
import { BaseArguments, ExecuteQueryOptions, PollConfig, QueryAutoRefreshConfig, QueryEntityConfig, QueryState, RouteType } from '../../query';
|
|
4
|
+
import { RequestError } from '../../request';
|
|
5
|
+
import { AnyQuery, Query, QueryArgs, QueryArgsOf, RequestArgs } from '../http';
|
|
6
|
+
export type CreateLegacyQueryOptions<TArgs extends QueryArgs> = {
|
|
7
|
+
query: Query<TArgs>;
|
|
8
|
+
};
|
|
9
|
+
export declare const isLegacyQuery: <T extends AnyLegacyQuery>(query: unknown) => query is T;
|
|
10
|
+
export type AnyLegacyQuery = LegacyQuery<any, any, any, any, any, any, any>;
|
|
11
|
+
export declare class LegacyQuery<Response, Arguments extends BaseArguments | undefined, Route extends RouteType<Arguments>, Store extends EntityStore<unknown>, Data, Id, TNewQuery extends AnyQuery> {
|
|
12
|
+
private newQuery;
|
|
13
|
+
_arguments: RequestArgs<QueryArgsOf<TNewQuery>>;
|
|
14
|
+
private entity?;
|
|
15
|
+
private _pollingSubscription;
|
|
16
|
+
private _currentPollConfig;
|
|
17
|
+
private storeSyncEffect;
|
|
18
|
+
state$: Observable<QueryState<Data>>;
|
|
19
|
+
get rawState(): QueryState<any>;
|
|
20
|
+
get isExpired(): boolean;
|
|
21
|
+
get isInUse(): boolean;
|
|
22
|
+
get isPolling(): boolean;
|
|
23
|
+
get autoRefreshOnConfig(): Readonly<QueryAutoRefreshConfig>;
|
|
24
|
+
get store(): null;
|
|
25
|
+
get canBeCached(): boolean;
|
|
26
|
+
get _isInMockMode(): boolean;
|
|
27
|
+
constructor(newQuery: TNewQuery, _arguments: RequestArgs<QueryArgsOf<TNewQuery>>, entity?: QueryEntityConfig<Store, Data, Response, Arguments, Id> | undefined);
|
|
28
|
+
destroy(): void;
|
|
29
|
+
execute(options?: ExecuteQueryOptions): this;
|
|
30
|
+
abort(): this;
|
|
31
|
+
poll(config: PollConfig): this;
|
|
32
|
+
stopPolling(): this;
|
|
33
|
+
pausePolling(): this;
|
|
34
|
+
resumePolling(): this;
|
|
35
|
+
onSuccess(callback: (response: Data) => void): this;
|
|
36
|
+
onFailure(callback: (error: RequestError<unknown>) => void): this;
|
|
37
|
+
private _transformState;
|
|
38
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
import { AnyLegacyQueryCreator } from '../experimental';
|
|
2
3
|
import { AnyQueryCreator, ConstructQuery, QueryArgsOf, QueryDataOf } from '../query-creator';
|
|
3
4
|
import { InfinityQueryConfig } from './infinity-query.types';
|
|
4
|
-
export declare class InfinityQuery<QueryCreator extends AnyQueryCreator, Query extends ConstructQuery<QueryCreator>, Args extends QueryArgsOf<QueryCreator>, QueryResponse extends QueryDataOf<QueryCreator>, InfinityResponse extends unknown[]> {
|
|
5
|
+
export declare class InfinityQuery<QueryCreator extends AnyQueryCreator | AnyLegacyQueryCreator, Query extends ConstructQuery<QueryCreator>, Args extends QueryArgsOf<QueryCreator>, QueryResponse extends QueryDataOf<QueryCreator>, InfinityResponse extends unknown[]> {
|
|
5
6
|
private _config;
|
|
6
7
|
private _destroy$;
|
|
7
8
|
private readonly _queries$;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AnyLegacyQueryCreator } from '../experimental';
|
|
1
2
|
import { BaseArguments, WithHeaders } from '../query';
|
|
2
3
|
import { AnyQueryCreator, ConstructQuery, QueryArgsOf, QueryDataOf } from '../query-creator';
|
|
3
4
|
import { InfinityQuery } from './infinity-query';
|
|
@@ -13,7 +14,7 @@ export interface TotalPagesExtractorOptions<Arguments extends BaseArguments | un
|
|
|
13
14
|
itemsPerPage: number;
|
|
14
15
|
args: Arguments;
|
|
15
16
|
}
|
|
16
|
-
export interface InfinityQueryConfig<QueryCreator extends AnyQueryCreator, Arguments extends BaseArguments | undefined, QueryResponse, InfinityResponse extends unknown[]> {
|
|
17
|
+
export interface InfinityQueryConfig<QueryCreator extends AnyQueryCreator | AnyLegacyQueryCreator, Arguments extends BaseArguments | undefined, QueryResponse, InfinityResponse extends unknown[]> {
|
|
17
18
|
/**
|
|
18
19
|
* The query creator to use for fetching pages.
|
|
19
20
|
*/
|
|
@@ -99,6 +100,6 @@ export interface InfinityQueryConfig<QueryCreator extends AnyQueryCreator, Argum
|
|
|
99
100
|
type OmitUndefined<T> = T extends undefined ? never : T;
|
|
100
101
|
export type AnyInfinityQueryConfig = InfinityQueryConfig<any, any, any, any>;
|
|
101
102
|
export type AnyInfinityQuery = InfinityQuery<any, any, any, any, any>;
|
|
102
|
-
export type InfinityQueryConfigType<QueryCreator extends AnyQueryCreator, InfinityResponse extends unknown[]> = InfinityQueryConfig<QueryCreator, OmitUndefined<QueryArgsOf<QueryCreator>>, QueryDataOf<QueryCreator>, InfinityResponse>;
|
|
103
|
+
export type InfinityQueryConfigType<QueryCreator extends AnyQueryCreator | AnyLegacyQueryCreator, InfinityResponse extends unknown[]> = InfinityQueryConfig<QueryCreator, OmitUndefined<QueryArgsOf<QueryCreator>>, QueryDataOf<QueryCreator>, InfinityResponse>;
|
|
103
104
|
export type InfinityQueryOf<Cfg extends AnyInfinityQueryConfig | null> = InfinityQuery<NonNullable<Cfg>['queryCreator'], ConstructQuery<NonNullable<Cfg>['queryCreator']>, QueryArgsOf<NonNullable<Cfg>['queryCreator']>, QueryDataOf<NonNullable<Cfg>['queryCreator']>, NonNullable<Cfg>['response']['arrayType']>;
|
|
104
105
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { AnyLegacyQueryCreator } from '../experimental';
|
|
1
2
|
import { AnyQueryCreator, QueryArgsOf, QueryDataOf } from '../query-creator';
|
|
2
3
|
import { InfinityQueryConfig, PageParamCalculatorOptions } from './infinity-query.types';
|
|
3
|
-
export declare const createInfinityQueryConfig: <QueryCreator extends AnyQueryCreator, Args extends QueryArgsOf<QueryCreator>, QueryResponse extends QueryDataOf<QueryCreator>, InfinityResponse extends unknown[]>(config: InfinityQueryConfig<QueryCreator, Args, QueryResponse, InfinityResponse>) => InfinityQueryConfig<QueryCreator, Args, QueryResponse, InfinityResponse>;
|
|
4
|
+
export declare const createInfinityQueryConfig: <QueryCreator extends AnyQueryCreator | AnyLegacyQueryCreator, Args extends QueryArgsOf<QueryCreator>, QueryResponse extends QueryDataOf<QueryCreator>, InfinityResponse extends unknown[]>(config: InfinityQueryConfig<QueryCreator, Args, QueryResponse, InfinityResponse>) => InfinityQueryConfig<QueryCreator, Args, QueryResponse, InfinityResponse>;
|
|
4
5
|
export declare const skipPaginationPageParamCalculator: ({ page, itemsPerPage }: PageParamCalculatorOptions) => number;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
1
2
|
import { Observable } from 'rxjs';
|
|
2
3
|
import { EntityStore } from '../entity';
|
|
4
|
+
import { AnyLegacyQuery, AnyLegacyQueryCreator } from '../experimental';
|
|
3
5
|
import { AnyQueryCreator, ConstructQuery, QueryDataOf, QueryResponseOf } from '../query-creator';
|
|
4
6
|
import { QueryForm } from '../query-form';
|
|
5
7
|
import { Method, PathParams, QueryParams, RequestError, RequestHeaders, RequestProgress } from '../request';
|
|
@@ -258,6 +260,9 @@ export interface WithConfig {
|
|
|
258
260
|
*/
|
|
259
261
|
config?: QueryConfig;
|
|
260
262
|
}
|
|
263
|
+
export interface WithInjector {
|
|
264
|
+
injector?: Injector;
|
|
265
|
+
}
|
|
261
266
|
export interface WithVariables {
|
|
262
267
|
/**
|
|
263
268
|
* The variables for the query. (graphql only)
|
|
@@ -361,10 +366,10 @@ export type QueryState<Response = unknown> = Loading | Success<Response> | Failu
|
|
|
361
366
|
export type QueryStateResponseOf<T extends QueryState = QueryState> = T extends Success<infer Response> ? Response : never;
|
|
362
367
|
export type AnyQuery = Query<any, any, any, any, any, any>;
|
|
363
368
|
export type AnyQueryCreatorCollection = {
|
|
364
|
-
[name: string]: AnyQueryCreator;
|
|
369
|
+
[name: string]: AnyQueryCreator | AnyLegacyQueryCreator;
|
|
365
370
|
};
|
|
366
371
|
export type QueryCollectionOf<T extends {
|
|
367
|
-
[name: string]: AnyQueryCreator;
|
|
372
|
+
[name: string]: AnyQueryCreator | AnyLegacyQueryCreator;
|
|
368
373
|
}> = {
|
|
369
374
|
[K in keyof T]: {
|
|
370
375
|
type: K;
|
|
@@ -372,10 +377,10 @@ export type QueryCollectionOf<T extends {
|
|
|
372
377
|
};
|
|
373
378
|
}[keyof T];
|
|
374
379
|
export type AnyQueryCollection = QueryCollectionOf<AnyQueryCreatorCollection>;
|
|
375
|
-
export type QueryOf<T extends AnyQueryCollection | AnyQuery | null> = T extends AnyQuery ? T : T extends AnyQueryCollection ? T['query'] : never;
|
|
380
|
+
export type QueryOf<T extends AnyQueryCollection | AnyLegacyQuery | AnyQuery | null> = T extends AnyQuery ? T : T extends AnyLegacyQuery ? T : T extends AnyQueryCollection ? T['query'] : never;
|
|
376
381
|
export type AnyQueryCollectionResponse<T extends AnyQueryCollection> = QueryResponseOf<T['query']>;
|
|
377
382
|
export type AnyQueryCollectionData<T extends AnyQueryCollection> = QueryDataOf<T['query']>;
|
|
378
|
-
export type QueryCollectionKeysOf<T extends AnyQueryCollection | AnyQuery | null> = T extends AnyQueryCollection ? T['type'] : never;
|
|
383
|
+
export type QueryCollectionKeysOf<T extends AnyQueryCollection | AnyLegacyQuery | AnyQuery | null> = T extends AnyQueryCollection ? T['type'] : never;
|
|
379
384
|
export type QueryCollectionWithNullableQuery<T extends AnyQueryCollection | null> = T extends null ? never : {
|
|
380
385
|
[K in keyof T]: T[K] extends string ? T[K] : T[K] | null;
|
|
381
386
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Paginated } from '@ethlete/types';
|
|
2
2
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
3
|
import { EntityStore } from '../entity';
|
|
4
|
+
import { AnyLegacyQuery } from '../experimental';
|
|
4
5
|
import { QueryClient } from '../query-client';
|
|
5
6
|
import { AnyQueryCreator, QueryArgsOf, QueryCreator, QueryDataOf, QueryResponseOf, QueryStoreIdOf, QueryStoreOf } from '../query-creator';
|
|
6
7
|
import { QueryForm } from '../query-form';
|
|
@@ -35,7 +36,7 @@ export declare const isQueryCollection: <T extends AnyQueryCollection>(query: un
|
|
|
35
36
|
export declare const createQueryCollection: <T extends AnyQueryCreatorCollection, R extends QueryCollectionOf<T>>(queryMap: T) => BehaviorSubject<R | null>;
|
|
36
37
|
export declare const createQueryCollectionSubject: <T extends AnyQueryCreatorCollection, R extends QueryCollectionOf<T>>(queryMap: T, config?: QueryContainerConfig) => BehaviorSubject<R | null>;
|
|
37
38
|
export declare const createQueryCollectionSignal: <T extends AnyQueryCreatorCollection, R extends QueryCollectionOf<T>>(queryMap: T, config?: QueryContainerConfig) => import("@angular/core").WritableSignal<R | null>;
|
|
38
|
-
export declare const extractQuery: <T extends AnyQuery | AnyQueryCollection | null>(v: T) => import("@ethlete/query").Query<any, any, any, any, any, any> | null;
|
|
39
|
+
export declare const extractQuery: <T extends AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>(v: T) => import("@ethlete/query").Query<any, any, any, any, any, any> | (T & AnyLegacyQuery) | import("../experimental").LegacyQuery<any, LegacyArgs, Route, any, any, any, import("../experimental").Query<any>> | null;
|
|
39
40
|
export declare const getDefaultHeaders: (headers: RequestHeaders | RequestHeadersMethodMap | null | undefined, method: Method) => RequestHeaders;
|
|
40
41
|
export declare const castQueryCreatorTypes: <QC extends AnyQueryCreator, Arguments extends QueryArgsOf<QC>, Response extends QueryResponseOf<QC>, Store extends QueryStoreOf<QC>, Data extends QueryDataOf<QC>, Route extends RouteType<Arguments>, Id extends QueryStoreIdOf<QC>, OverrideArguments extends BaseArguments | undefined, OverrideResponse extends Response | undefined>(config: {
|
|
41
42
|
creator: QC;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { EntityStore } from '../entity';
|
|
2
|
+
import { AnyLegacyQuery, AnyLegacyQueryCreator, LegacyArgumentsOfQueryArgs, LegacyQuery, LegacyQueryCreator } from '../experimental';
|
|
2
3
|
import { Query } from '../query/query';
|
|
3
4
|
import { AnyQuery, BaseArguments, EmptyObject, RouteType, WithConfig, WithHeaders, WithMock } from '../query/query.types';
|
|
4
5
|
import { QueryCreator } from './query-creator';
|
|
5
6
|
export type QueryPrepareFn<Arguments extends BaseArguments | undefined, Response, Route extends RouteType<Arguments>, Store extends EntityStore<unknown>, Data, Id> = Arguments extends BaseArguments ? (args: Arguments & WithHeaders & WithConfig & WithMock<Response>) => Query<Response, Arguments, Route, Store, Data, Id> : (args?: (Arguments extends EmptyObject ? Arguments : EmptyObject) & WithHeaders & WithConfig & WithMock<Response>) => Query<Response, Arguments, Route, Store, Data, Id>;
|
|
6
7
|
export type AnyQueryCreator = QueryCreator<any, any, any, any, any, any>;
|
|
7
|
-
export type QueryArgsOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<infer Args, any, any, any, any, any> ? Args : T extends Query<any, infer Args, any, any, any, any> ? Args : never;
|
|
8
|
-
export type QueryResponseOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, infer Response, any, any, any, any> ? Response : T extends Query<infer Response, any, any, any, any, any> ? Response : never;
|
|
9
|
-
export type QueryRouteOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, infer Route, any, any, any> ? Route : T extends Query<any, any, infer Route, any, any, any> ? Route : never;
|
|
10
|
-
export type QueryStoreOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, infer Store, any, any> ? Store : T extends Query<any, any, any, infer Store, any, any> ? Store : never;
|
|
11
|
-
export type QueryDataOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, any, infer Data, any> ? Data : T extends Query<any, any, any, any, infer Data, any> ? Data : never;
|
|
12
|
-
export type QueryStoreIdOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, any, any, infer StoreId> ? StoreId : T extends Query<any, any, any, any, any, infer StoreId> ? StoreId : never;
|
|
13
|
-
export type ConstructQuery<T extends AnyQueryCreator> = ReturnType<T['prepare']>;
|
|
8
|
+
export type QueryArgsOf<T extends AnyQueryCreator | AnyQuery | AnyLegacyQuery | AnyLegacyQueryCreator | null> = T extends QueryCreator<infer Args, any, any, any, any, any> ? Args : T extends Query<any, infer Args, any, any, any, any> ? Args : T extends LegacyQuery<any, infer Args, any, any, any, any, any> ? Args : T extends LegacyQueryCreator<infer Args, any, any, any, any> ? LegacyArgumentsOfQueryArgs<Args> : never;
|
|
9
|
+
export type QueryResponseOf<T extends AnyQueryCreator | AnyQuery | AnyLegacyQuery | AnyLegacyQueryCreator | null> = T extends QueryCreator<any, infer Response, any, any, any, any> ? Response : T extends Query<infer Response, any, any, any, any, any> ? Response : T extends LegacyQuery<infer Response, any, any, any, any, any, any> ? Response : T extends LegacyQueryCreator<any, infer Response, any, any, any> ? Response : never;
|
|
10
|
+
export type QueryRouteOf<T extends AnyQueryCreator | AnyQuery | AnyLegacyQuery | AnyLegacyQueryCreator | null> = T extends QueryCreator<any, any, infer Route, any, any, any> ? Route : T extends Query<any, any, infer Route, any, any, any> ? Route : T extends LegacyQuery<any, any, infer Route, any, any, any, any> ? Route : T extends LegacyQueryCreator<infer Args, any, any, any, any> ? RouteType<LegacyArgumentsOfQueryArgs<Args>> : never;
|
|
11
|
+
export type QueryStoreOf<T extends AnyQueryCreator | AnyQuery | AnyLegacyQuery | AnyLegacyQueryCreator | null> = T extends QueryCreator<any, any, any, infer Store, any, any> ? Store : T extends Query<any, any, any, infer Store, any, any> ? Store : T extends LegacyQuery<any, any, any, infer Store, any, any, any> ? Store : T extends LegacyQueryCreator<any, any, infer Store, any, any> ? Store : never;
|
|
12
|
+
export type QueryDataOf<T extends AnyQueryCreator | AnyLegacyQuery | AnyLegacyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, any, infer Data, any> ? Data : T extends Query<any, any, any, any, infer Data, any> ? Data : T extends LegacyQuery<any, any, any, any, infer Data, any, any> ? Data : T extends LegacyQueryCreator<any, any, any, any, infer Data> ? Data : never;
|
|
13
|
+
export type QueryStoreIdOf<T extends AnyQueryCreator | AnyQuery | AnyLegacyQuery | AnyLegacyQueryCreator | null> = T extends QueryCreator<any, any, any, any, any, infer StoreId> ? StoreId : T extends Query<any, any, any, any, any, infer StoreId> ? StoreId : T extends LegacyQuery<any, any, any, any, any, infer StoreId, any> ? StoreId : T extends LegacyQueryCreator<any, any, any, infer StoreId, any> ? StoreId : never;
|
|
14
|
+
export type ConstructQuery<T extends AnyQueryCreator | AnyLegacyQueryCreator> = ReturnType<T['prepare']>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { CreateComputedOptions, Signal } from '@angular/core';
|
|
1
|
+
import { CreateComputedOptions, Injector, Signal } from '@angular/core';
|
|
2
2
|
import { ToObservableOptions, ToSignalOptions } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { Observable, Subscribable } from 'rxjs';
|
|
4
|
+
import { AnyLegacyQuery } from '../experimental';
|
|
4
5
|
import { AnyQuery, AnyQueryCollection, QueryOf, QueryState } from '../query';
|
|
5
6
|
import { QueryDataOf } from '../query-creator';
|
|
6
7
|
export interface QueryContainerConfig {
|
|
@@ -27,36 +28,37 @@ export interface QueryFilterConfig {
|
|
|
27
28
|
*/
|
|
28
29
|
cacheResponse?: boolean;
|
|
29
30
|
}
|
|
30
|
-
export declare const addQueryContainerHandling: (obs: Observable<AnyQuery | AnyQuery[] | null>, valueFn: () => AnyQuery | AnyQuery[] | null | undefined, config?: QueryContainerConfig) => void;
|
|
31
|
-
export declare function toQuerySignal<T extends AnyQuery | null>(source: Observable<T> | Subscribable<T>): Signal<T | undefined>;
|
|
32
|
-
export declare function toQuerySignal<T extends AnyQuery | null>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | undefined>> & {
|
|
31
|
+
export declare const addQueryContainerHandling: (obs: Observable<AnyQuery | AnyQuery[] | AnyLegacyQuery | AnyLegacyQuery[] | null>, valueFn: () => AnyQuery | AnyQuery[] | AnyLegacyQuery | AnyLegacyQuery[] | null | undefined, config?: QueryContainerConfig) => void;
|
|
32
|
+
export declare function toQuerySignal<T extends AnyQuery | AnyLegacyQuery | null>(source: Observable<T> | Subscribable<T>): Signal<T | undefined>;
|
|
33
|
+
export declare function toQuerySignal<T extends AnyQuery | AnyLegacyQuery | null>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | undefined>> & {
|
|
33
34
|
initialValue?: undefined;
|
|
34
35
|
requireSync?: false;
|
|
35
36
|
} & QueryContainerConfig): Signal<T | undefined>;
|
|
36
|
-
export declare function toQuerySignal<T extends AnyQuery | null>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | null>> & {
|
|
37
|
+
export declare function toQuerySignal<T extends AnyQuery | AnyLegacyQuery | null>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | null>> & {
|
|
37
38
|
initialValue?: null;
|
|
38
39
|
requireSync?: false;
|
|
39
40
|
} & QueryContainerConfig): Signal<T | null>;
|
|
40
|
-
export declare function toQuerySignal<T extends AnyQuery | null>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T>> & {
|
|
41
|
+
export declare function toQuerySignal<T extends AnyQuery | AnyLegacyQuery | null>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T>> & {
|
|
41
42
|
initialValue?: undefined;
|
|
42
43
|
requireSync: true;
|
|
43
44
|
} & QueryContainerConfig): Signal<T>;
|
|
44
|
-
export declare function toQuerySignal<T extends AnyQuery | null, const U extends T>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | U>> & {
|
|
45
|
+
export declare function toQuerySignal<T extends AnyQuery | AnyLegacyQuery | null, const U extends T>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | U>> & {
|
|
45
46
|
initialValue: U;
|
|
46
47
|
requireSync?: false;
|
|
47
48
|
} & QueryContainerConfig): Signal<T | U>;
|
|
48
|
-
export declare function
|
|
49
|
+
export declare function effectComputed<T extends AnyQuery | AnyLegacyQuery | AnyQuery[] | AnyLegacyQuery[] | null>(computation: () => T, injector: Injector): Signal<T>;
|
|
50
|
+
export declare function queryComputed<T extends AnyQuery | AnyLegacyQuery | null>(computation: () => T, options?: CreateComputedOptions<T> & QueryContainerConfig & ToObservableOptions): Signal<T>;
|
|
49
51
|
/**
|
|
50
52
|
* Creates a signal that will only be reactive until the first query is created.
|
|
51
53
|
* All subsequent changes inside the computation will be ignored.
|
|
52
54
|
*/
|
|
53
|
-
export declare function queryComputedTillTruthy<T extends AnyQuery | null>(computation: () => T, options?: CreateComputedOptions<T> & QueryContainerConfig & ToObservableOptions): Signal<T | null>;
|
|
54
|
-
export declare function queryArrayComputed<T extends AnyQuery[] | null>(computation: () => T, options?: CreateComputedOptions<T> & QueryContainerConfig & ToObservableOptions): Signal<T>;
|
|
55
|
-
export declare function toQuerySubject<T extends AnyQuery | null>(source: Signal<T>, options?: ToObservableOptions & QueryContainerConfig): Observable<T>;
|
|
56
|
-
export declare function queryStateSignal<T extends Signal<AnyQuery | AnyQueryCollection | null>>(source: T, options?: QueryFilterConfig): import("@angular/core").WritableSignal<QueryState<QueryDataOf<QueryOf<ReturnType<T>>>> | null>;
|
|
57
|
-
export type QueryStateSignal<T extends Signal<AnyQuery | AnyQueryCollection | null>> = Signal<QueryDataOf<QueryOf<ReturnType<T>>> | null> & {
|
|
55
|
+
export declare function queryComputedTillTruthy<T extends AnyQuery | AnyLegacyQuery | null>(computation: () => T, options?: CreateComputedOptions<T> & QueryContainerConfig & ToObservableOptions): Signal<T | null>;
|
|
56
|
+
export declare function queryArrayComputed<T extends AnyQuery[] | AnyLegacyQuery[] | null>(computation: () => T, options?: CreateComputedOptions<T> & QueryContainerConfig & ToObservableOptions): Signal<T>;
|
|
57
|
+
export declare function toQuerySubject<T extends AnyQuery | AnyLegacyQuery | null>(source: Signal<T>, options?: ToObservableOptions & QueryContainerConfig): Observable<T>;
|
|
58
|
+
export declare function queryStateSignal<T extends Signal<AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>>(source: T, options?: QueryFilterConfig): import("@angular/core").WritableSignal<QueryState<QueryDataOf<QueryOf<ReturnType<T>>>> | null>;
|
|
59
|
+
export type QueryStateSignal<T extends Signal<AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>> = Signal<QueryDataOf<QueryOf<ReturnType<T>>> | null> & {
|
|
58
60
|
reset: () => void;
|
|
59
61
|
};
|
|
60
|
-
export declare function queryStateResponseSignal<T extends Signal<AnyQuery | AnyQueryCollection | null>>(source: T, options?: QueryFilterConfig): QueryStateSignal<T>;
|
|
61
|
-
export declare function queryStateErrorSignal<T extends Signal<AnyQuery | AnyQueryCollection | null>>(source: T): Signal<import("@ethlete/query").RequestError<unknown> | null>;
|
|
62
|
-
export declare function queryStateLoadingSignal<T extends Signal<AnyQuery | AnyQueryCollection | null>>(source: T): Signal<import("../query").Loading | null>;
|
|
62
|
+
export declare function queryStateResponseSignal<T extends Signal<AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>>(source: T, options?: QueryFilterConfig): QueryStateSignal<T>;
|
|
63
|
+
export declare function queryStateErrorSignal<T extends Signal<AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>>(source: T): Signal<import("@ethlete/query").RequestError<unknown> | null>;
|
|
64
|
+
export declare function queryStateLoadingSignal<T extends Signal<AnyQuery | AnyLegacyQuery | AnyQueryCollection | null>>(source: T): Signal<import("../query").Loading | null>;
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.40.0",
|
|
4
|
+
"license": "MIT",
|
|
4
5
|
"sideEffects": false,
|
|
5
6
|
"peerDependencies": {
|
|
6
|
-
"@angular/common": "19.2.
|
|
7
|
-
"@angular/core": "19.2.
|
|
8
|
-
"@angular/forms": "19.2.
|
|
9
|
-
"@angular/router": "19.2.
|
|
7
|
+
"@angular/common": "19.2.11",
|
|
8
|
+
"@angular/core": "19.2.11",
|
|
9
|
+
"@angular/forms": "19.2.11",
|
|
10
|
+
"@angular/router": "19.2.11",
|
|
10
11
|
"@ethlete/core": "^4.0.3",
|
|
11
12
|
"@ethlete/types": "^1.6.2",
|
|
12
13
|
"rxjs": "7.8.2",
|