|
1 | 1 | import { difference, replaceAt } from './utils'
|
2 | 2 | import { notifyManager } from './notifyManager'
|
3 |
| -import type { QueryObserverOptions, QueryObserverResult } from './types' |
| 3 | +import type { QueryObserverOptions, QueryObserverResult, QueriesObserverResult } from './types' |
4 | 4 | import type { QueryClient } from './queryClient'
|
5 | 5 | import { NotifyOptions, QueryObserver } from './queryObserver'
|
6 | 6 | import { Subscribable } from './subscribable'
|
7 | 7 |
|
8 |
| -type QueriesObserverListener = (result: QueryObserverResult[]) => void |
| 8 | +type QueriesObserverListener<T extends readonly [...QueryObserverOptions[]]> = (result: QueriesObserverResult<T>) => void |
9 | 9 |
|
10 |
| -export class QueriesObserver extends Subscribable<QueriesObserverListener> { |
| 10 | +export class QueriesObserver<T extends readonly [...QueryObserverOptions[]]> extends Subscribable<QueriesObserverListener<T>> { |
11 | 11 | private client: QueryClient
|
12 |
| - private result: QueryObserverResult[] |
13 |
| - private queries: QueryObserverOptions[] |
| 12 | + private result: QueriesObserverResult<T> |
| 13 | + private queries: T |
14 | 14 | private observers: QueryObserver[]
|
15 | 15 | private observersMap: Record<string, QueryObserver>
|
16 | 16 |
|
17 |
| - constructor(client: QueryClient, queries?: QueryObserverOptions[]) { |
| 17 | + constructor(client: QueryClient, queries?: T) { |
18 | 18 | super()
|
19 | 19 |
|
20 | 20 | this.client = client
|
21 |
| - this.queries = [] |
22 |
| - this.result = [] |
| 21 | + this.queries = [] as any |
| 22 | + this.result = [] as any |
23 | 23 | this.observers = []
|
24 | 24 | this.observersMap = {}
|
25 | 25 |
|
@@ -52,24 +52,24 @@ export class QueriesObserver extends Subscribable<QueriesObserverListener> {
|
52 | 52 | }
|
53 | 53 |
|
54 | 54 | setQueries(
|
55 |
| - queries: QueryObserverOptions[], |
| 55 | + queries: T, |
56 | 56 | notifyOptions?: NotifyOptions
|
57 | 57 | ): void {
|
58 | 58 | this.queries = queries
|
59 | 59 | this.updateObservers(notifyOptions)
|
60 | 60 | }
|
61 | 61 |
|
62 |
| - getCurrentResult(): QueryObserverResult[] { |
| 62 | + getCurrentResult(): QueriesObserverResult<T> { |
63 | 63 | return this.result
|
64 | 64 | }
|
65 | 65 |
|
66 |
| - getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] { |
| 66 | + getOptimisticResult(queries: T): QueriesObserverResult<T> { |
67 | 67 | return queries.map(options => {
|
68 | 68 | const defaultedOptions = this.client.defaultQueryObserverOptions(options)
|
69 | 69 | return this.getObserver(defaultedOptions).getOptimisticResult(
|
70 | 70 | defaultedOptions
|
71 | 71 | )
|
72 |
| - }) |
| 72 | + }) as any |
73 | 73 | }
|
74 | 74 |
|
75 | 75 | private getObserver(options: QueryObserverOptions): QueryObserver {
|
@@ -117,7 +117,7 @@ export class QueriesObserver extends Subscribable<QueriesObserverListener> {
|
117 | 117 |
|
118 | 118 | this.observers = newObservers
|
119 | 119 | this.observersMap = newObserversMap
|
120 |
| - this.result = newResult |
| 120 | + this.result = newResult as any |
121 | 121 |
|
122 | 122 | if (!this.hasListeners()) {
|
123 | 123 | return
|
|
0 commit comments