Skip to content

Commit cfd8fae

Browse files
committed
fix typing and stream handling
1 parent fad0eb8 commit cfd8fae

File tree

2 files changed

+14
-24
lines changed

2 files changed

+14
-24
lines changed

src/lib/hooks/create-resource-stream.svelte.ts

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,22 @@ import { useQueryLogger } from '../query-logger';
1111
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1212
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
1313

14+
export type StreamItemType<T> = T extends (
15+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
16+
...args: any[]
17+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
18+
) => AsyncGenerator<infer R, any, any>
19+
? R
20+
: never;
21+
1422
interface QueryOptions {
1523
// enabled defaults to true if unspecified
1624
enabled?: boolean;
1725
refetchMode?: 'append' | 'reset' | 'replace';
1826
maxChunks?: number;
1927
}
2028

21-
export type ResolvedReturnType<T> = T extends (
22-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
23-
...args: any[]
24-
) => infer R
25-
? R
26-
: never;
27-
28-
type QueryResult<T extends Resource, K extends keyof T> = QueryObserverResult<
29-
ResolvedReturnType<T[K]>[],
30-
Error
31-
>;
29+
type QueryResult<U> = QueryObserverResult<U[], Error>;
3230

3331
export const createResourceStream = <T extends Resource, K extends keyof T>(
3432
client: { current: T | undefined },
@@ -39,7 +37,7 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
3937
options?: (() => QueryOptions) | QueryOptions,
4038
]
4139
| [options?: (() => QueryOptions) | QueryOptions]
42-
): { current: QueryResult<T, K> } => {
40+
): { current: QueryResult<StreamItemType<T[K]>> } => {
4341
const debug = useQueryLogger();
4442

4543
let [args, options] = additional;
@@ -66,7 +64,6 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
6664
...(_args ? [_args] : []),
6765
]);
6866

69-
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-explicit-any
7067
function processStream() {
7168
const clientFunc = client.current?.[method];
7269

@@ -83,15 +80,11 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
8380
const response = clientFunc?.apply(
8481
client.current,
8582
_args
86-
) as AsyncGenerator<ResolvedReturnType<T[K]>>;
83+
) as AsyncGenerator<StreamItemType<T[K]>>;
8784
console.log('response', typeof response);
8885

8986
logger('RES', name, methodName, response);
90-
return {
91-
async *[Symbol.asyncIterator]() {
92-
yield* response;
93-
},
94-
};
87+
return response;
9588
} catch (error) {
9689
logger('ERR', name, methodName, error);
9790
throw error;
@@ -102,7 +95,7 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
10295
createQueryOptions({
10396
queryKey,
10497
enabled: client.current !== undefined && _options?.enabled !== false,
105-
queryFn: streamedQuery<ResolvedReturnType<T[K]>>({
98+
queryFn: streamedQuery<StreamItemType<T[K]>>({
10699
queryFn: processStream,
107100
..._options,
108101
}),

src/routes/+layout.svelte

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@ let { children }: Props = $props();
4343
{/each}
4444
</div>
4545

46-
<ViamProvider
47-
{dialConfigs}
48-
logQueries
49-
>
46+
<ViamProvider {dialConfigs}>
5047
<Parts />
5148
{@render children()}
5249
<SvelteQueryDevtools />

0 commit comments

Comments
 (0)