@ethlete/query 5.38.0 → 5.39.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.
@@ -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,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,10 @@
1
1
  import { DestroyRef, EnvironmentInjector, ɵEffectScheduler } from '@angular/core';
2
2
  import { QueryClient } from './query-client';
3
3
  import { QueryClientConfig } from './query-client-config';
4
+ import { QueryConfig } from './query-creator';
4
5
  export type SetupQueryDependenciesOptions = {
5
6
  clientConfig: QueryClientConfig;
7
+ queryConfig: QueryConfig | undefined;
6
8
  };
7
9
  export type QueryDependencies = {
8
10
  /** The destroy ref of the query. */
@@ -1,5 +1,6 @@
1
1
  export * from './auth';
2
2
  export * from './gql';
3
3
  export * from './http';
4
+ export * from './interop';
4
5
  export * from './pipes';
5
6
  export * from './ws';
@@ -0,0 +1,2 @@
1
+ export * from './legacy-query';
2
+ export * from './legacy-query-creator';
@@ -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 queryComputed<T extends AnyQuery | null>(computation: () => T, options?: CreateComputedOptions<T> & QueryContainerConfig & ToObservableOptions): Signal<T>;
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,12 @@
1
1
  {
2
2
  "name": "@ethlete/query",
3
- "version": "5.38.0",
3
+ "version": "5.39.0",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@angular/common": "19.2.6",
7
- "@angular/core": "19.2.6",
8
- "@angular/forms": "19.2.6",
9
- "@angular/router": "19.2.6",
6
+ "@angular/common": "19.2.9",
7
+ "@angular/core": "19.2.9",
8
+ "@angular/forms": "19.2.9",
9
+ "@angular/router": "19.2.9",
10
10
  "@ethlete/core": "^4.0.3",
11
11
  "@ethlete/types": "^1.6.2",
12
12
  "rxjs": "7.8.2",