@powersync/tanstack-react-query 0.0.0-dev-20260128170746 → 0.0.0-dev-20260202160933
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/package.json +4 -4
- package/lib/hooks/usePowerSyncQueries.d.ts +0 -15
- package/lib/hooks/usePowerSyncQueries.js +0 -151
- package/lib/hooks/usePowerSyncQueries.js.map +0 -1
- package/lib/hooks/useQueries.d.ts +0 -59
- package/lib/hooks/useQueries.js +0 -70
- package/lib/hooks/useQueries.js.map +0 -1
- package/lib/hooks/useQuery.d.ts +0 -77
- package/lib/hooks/useQuery.js +0 -29
- package/lib/hooks/useQuery.js.map +0 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -3
- package/lib/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/tanstack-react-query",
|
|
3
|
-
"version": "0.0.0-dev-
|
|
3
|
+
"version": "0.0.0-dev-20260202160933",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
},
|
|
25
25
|
"homepage": "https://docs.powersync.com",
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@powersync/common": "0.0.0-dev-
|
|
27
|
+
"@powersync/common": "0.0.0-dev-20260202160933",
|
|
28
28
|
"react": "*"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@tanstack/react-query": "^5.70.0",
|
|
32
|
-
"@powersync/
|
|
33
|
-
"@powersync/
|
|
32
|
+
"@powersync/react": "0.0.0-dev-20260202160933",
|
|
33
|
+
"@powersync/common": "0.0.0-dev-20260202160933"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@testing-library/react": "^15.0.2",
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type CompilableQuery } from '@powersync/common';
|
|
2
|
-
import * as Tanstack from '@tanstack/react-query';
|
|
3
|
-
export type UsePowerSyncQueriesInput = {
|
|
4
|
-
query?: string | CompilableQuery<unknown>;
|
|
5
|
-
parameters?: unknown[];
|
|
6
|
-
queryKey: Tanstack.QueryKey;
|
|
7
|
-
}[];
|
|
8
|
-
export type UsePowerSyncQueriesOutput = {
|
|
9
|
-
sqlStatement: string;
|
|
10
|
-
queryParameters: unknown[];
|
|
11
|
-
tables: string[];
|
|
12
|
-
error?: Error;
|
|
13
|
-
queryFn: () => Promise<unknown[]>;
|
|
14
|
-
}[];
|
|
15
|
-
export declare function usePowerSyncQueries(queries: UsePowerSyncQueriesInput, queryClient: Tanstack.QueryClient): UsePowerSyncQueriesOutput;
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { parseQuery } from '@powersync/common';
|
|
2
|
-
import { usePowerSync } from '@powersync/react';
|
|
3
|
-
import { useEffect, useState, useCallback, useMemo } from 'react';
|
|
4
|
-
export function usePowerSyncQueries(queries, queryClient) {
|
|
5
|
-
const powerSync = usePowerSync();
|
|
6
|
-
const [tablesArr, setTablesArr] = useState(() => queries.map(() => []));
|
|
7
|
-
const [errorsArr, setErrorsArr] = useState(() => queries.map(() => undefined));
|
|
8
|
-
const updateTablesArr = useCallback((tables, idx) => {
|
|
9
|
-
setTablesArr((prev) => {
|
|
10
|
-
if (JSON.stringify(prev[idx]) === JSON.stringify(tables))
|
|
11
|
-
return prev;
|
|
12
|
-
const next = [...prev];
|
|
13
|
-
next[idx] = tables;
|
|
14
|
-
return next;
|
|
15
|
-
});
|
|
16
|
-
}, []);
|
|
17
|
-
const updateErrorsArr = useCallback((error, idx) => {
|
|
18
|
-
setErrorsArr((prev) => {
|
|
19
|
-
if (prev[idx]?.message === error?.message)
|
|
20
|
-
return prev;
|
|
21
|
-
const next = [...prev];
|
|
22
|
-
next[idx] = error;
|
|
23
|
-
return next;
|
|
24
|
-
});
|
|
25
|
-
}, []);
|
|
26
|
-
const parsedQueries = useMemo(() => queries.map((queryInput) => {
|
|
27
|
-
const { query, parameters = [], queryKey } = queryInput;
|
|
28
|
-
if (!query) {
|
|
29
|
-
return {
|
|
30
|
-
query,
|
|
31
|
-
parameters,
|
|
32
|
-
queryKey,
|
|
33
|
-
sqlStatement: '',
|
|
34
|
-
queryParameters: [],
|
|
35
|
-
parseError: undefined
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const parsed = parseQuery(query, parameters);
|
|
40
|
-
return {
|
|
41
|
-
query,
|
|
42
|
-
parameters,
|
|
43
|
-
queryKey,
|
|
44
|
-
sqlStatement: parsed.sqlStatement,
|
|
45
|
-
queryParameters: parsed.parameters,
|
|
46
|
-
parseError: undefined
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
return {
|
|
51
|
-
query,
|
|
52
|
-
parameters,
|
|
53
|
-
queryKey,
|
|
54
|
-
sqlStatement: '',
|
|
55
|
-
queryParameters: [],
|
|
56
|
-
parseError: e
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
}), [queries]);
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
parsedQueries.forEach((pq, idx) => {
|
|
62
|
-
if (pq.parseError) {
|
|
63
|
-
updateErrorsArr(pq.parseError, idx);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}, [parsedQueries, updateErrorsArr]);
|
|
67
|
-
const stringifiedQueriesDeps = JSON.stringify(parsedQueries.map((q) => ({
|
|
68
|
-
sql: q.sqlStatement,
|
|
69
|
-
params: q.queryParameters
|
|
70
|
-
})));
|
|
71
|
-
useEffect(() => {
|
|
72
|
-
const listeners = parsedQueries.map((pq, idx) => {
|
|
73
|
-
if (pq.parseError || !pq.query) {
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
(async () => {
|
|
77
|
-
try {
|
|
78
|
-
const tables = await powerSync.resolveTables(pq.sqlStatement, pq.queryParameters);
|
|
79
|
-
updateTablesArr(tables, idx);
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
updateErrorsArr(e, idx);
|
|
83
|
-
}
|
|
84
|
-
})();
|
|
85
|
-
return powerSync.registerListener({
|
|
86
|
-
schemaChanged: async () => {
|
|
87
|
-
try {
|
|
88
|
-
const tables = await powerSync.resolveTables(pq.sqlStatement, pq.queryParameters);
|
|
89
|
-
updateTablesArr(tables, idx);
|
|
90
|
-
queryClient.invalidateQueries({ queryKey: pq.queryKey });
|
|
91
|
-
}
|
|
92
|
-
catch (e) {
|
|
93
|
-
updateErrorsArr(e, idx);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
return () => {
|
|
99
|
-
listeners.forEach((l) => l?.());
|
|
100
|
-
};
|
|
101
|
-
}, [powerSync, queryClient, stringifiedQueriesDeps, updateTablesArr, updateErrorsArr]);
|
|
102
|
-
const stringifiedQueryKeys = JSON.stringify(parsedQueries.map((q) => q.queryKey));
|
|
103
|
-
useEffect(() => {
|
|
104
|
-
const aborts = parsedQueries.map((pq, idx) => {
|
|
105
|
-
if (pq.parseError || !pq.query) {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
const abort = new AbortController();
|
|
109
|
-
powerSync.onChangeWithCallback({
|
|
110
|
-
onChange: () => {
|
|
111
|
-
queryClient.invalidateQueries({ queryKey: pq.queryKey });
|
|
112
|
-
},
|
|
113
|
-
onError: (e) => {
|
|
114
|
-
updateErrorsArr(e, idx);
|
|
115
|
-
}
|
|
116
|
-
}, {
|
|
117
|
-
tables: tablesArr[idx],
|
|
118
|
-
signal: abort.signal
|
|
119
|
-
});
|
|
120
|
-
return abort;
|
|
121
|
-
});
|
|
122
|
-
return () => aborts.forEach((a) => a?.abort());
|
|
123
|
-
}, [powerSync, queryClient, tablesArr, updateErrorsArr, stringifiedQueryKeys]);
|
|
124
|
-
return useMemo(() => {
|
|
125
|
-
return parsedQueries.map((pq, idx) => {
|
|
126
|
-
const error = errorsArr[idx] || pq.parseError;
|
|
127
|
-
const queryFn = async () => {
|
|
128
|
-
if (error)
|
|
129
|
-
throw error;
|
|
130
|
-
if (!pq.query)
|
|
131
|
-
throw new Error('No query provided');
|
|
132
|
-
try {
|
|
133
|
-
return typeof pq.query === 'string'
|
|
134
|
-
? await powerSync.getAll(pq.sqlStatement, pq.queryParameters)
|
|
135
|
-
: await pq.query.execute();
|
|
136
|
-
}
|
|
137
|
-
catch (e) {
|
|
138
|
-
throw e;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return {
|
|
142
|
-
sqlStatement: pq.sqlStatement,
|
|
143
|
-
queryParameters: pq.queryParameters,
|
|
144
|
-
tables: tablesArr[idx],
|
|
145
|
-
error,
|
|
146
|
-
queryFn
|
|
147
|
-
};
|
|
148
|
-
});
|
|
149
|
-
}, [parsedQueries, errorsArr, tablesArr, powerSync]);
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=usePowerSyncQueries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePowerSyncQueries.js","sourceRoot":"","sources":["../../src/hooks/usePowerSyncQueries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { type CompilableQuery } from '@powersync/common';
|
|
2
|
-
import * as Tanstack from '@tanstack/react-query';
|
|
3
|
-
export type PowerSyncQueryOptions<T> = {
|
|
4
|
-
query?: string | CompilableQuery<T>;
|
|
5
|
-
parameters?: any[];
|
|
6
|
-
};
|
|
7
|
-
export type PowerSyncQueryOption<T = unknown[]> = Tanstack.UseQueryOptions<T[]> & PowerSyncQueryOptions<T>;
|
|
8
|
-
export type InferQueryResults<TQueries extends readonly unknown[]> = {
|
|
9
|
-
[K in keyof TQueries]: TQueries[K] extends {
|
|
10
|
-
query: CompilableQuery<infer TData>;
|
|
11
|
-
} ? Tanstack.UseQueryResult<TData[]> : Tanstack.UseQueryResult<unknown[]>;
|
|
12
|
-
};
|
|
13
|
-
export type ExplicitQueryResults<T extends readonly unknown[]> = {
|
|
14
|
-
[K in keyof T]: Tanstack.UseQueryResult<T[K][]>;
|
|
15
|
-
};
|
|
16
|
-
export type EnhancedInferQueryResults<TQueries extends readonly unknown[]> = {
|
|
17
|
-
[K in keyof TQueries]: TQueries[K] extends {
|
|
18
|
-
query: CompilableQuery<infer TData>;
|
|
19
|
-
} ? Tanstack.UseQueryResult<TData[]> & {
|
|
20
|
-
queryKey: Tanstack.QueryKey;
|
|
21
|
-
} : Tanstack.UseQueryResult<unknown[]> & {
|
|
22
|
-
queryKey: Tanstack.QueryKey;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export type EnhancedExplicitQueryResults<T extends readonly unknown[]> = {
|
|
26
|
-
[K in keyof T]: Tanstack.UseQueryResult<T[K][]> & {
|
|
27
|
-
queryKey: Tanstack.QueryKey;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
export type UseQueriesExplicitWithCombineOptions<T extends readonly unknown[], TCombined> = {
|
|
31
|
-
queries: readonly [...{
|
|
32
|
-
[K in keyof T]: PowerSyncQueryOption<T[K]>;
|
|
33
|
-
}];
|
|
34
|
-
combine: (results: EnhancedExplicitQueryResults<T>) => TCombined;
|
|
35
|
-
};
|
|
36
|
-
export type UseQueriesExplicitWithoutCombineOptions<T extends readonly unknown[]> = {
|
|
37
|
-
queries: readonly [...{
|
|
38
|
-
[K in keyof T]: PowerSyncQueryOption<T[K]>;
|
|
39
|
-
}];
|
|
40
|
-
combine?: undefined;
|
|
41
|
-
};
|
|
42
|
-
export type UseQueriesAutoInferenceWithCombineOptions<TQueries extends readonly PowerSyncQueryOption[], TCombined> = {
|
|
43
|
-
queries: readonly [...TQueries];
|
|
44
|
-
combine: (results: EnhancedInferQueryResults<TQueries>) => TCombined;
|
|
45
|
-
};
|
|
46
|
-
export type UseQueriesAutoInferenceWithoutCombineOptions<TQueries extends readonly PowerSyncQueryOption[]> = {
|
|
47
|
-
queries: readonly [...TQueries];
|
|
48
|
-
combine?: undefined;
|
|
49
|
-
};
|
|
50
|
-
export type UseQueriesBaseOptions = {
|
|
51
|
-
queries: readonly (Tanstack.UseQueryOptions & PowerSyncQueryOptions<unknown>)[];
|
|
52
|
-
combine?: (results: (Tanstack.UseQueryResult<unknown, unknown> & {
|
|
53
|
-
queryKey: Tanstack.QueryKey;
|
|
54
|
-
})[]) => unknown;
|
|
55
|
-
};
|
|
56
|
-
export declare function useQueries<T extends readonly unknown[], TCombined>(options: UseQueriesExplicitWithCombineOptions<T, TCombined>, queryClient?: Tanstack.QueryClient): TCombined;
|
|
57
|
-
export declare function useQueries<T extends readonly unknown[]>(options: UseQueriesExplicitWithoutCombineOptions<T>, queryClient?: Tanstack.QueryClient): ExplicitQueryResults<T>;
|
|
58
|
-
export declare function useQueries<TQueries extends readonly PowerSyncQueryOption[], TCombined>(options: UseQueriesAutoInferenceWithCombineOptions<TQueries, TCombined>, queryClient?: Tanstack.QueryClient): TCombined;
|
|
59
|
-
export declare function useQueries<TQueries extends readonly PowerSyncQueryOption[]>(options: UseQueriesAutoInferenceWithoutCombineOptions<TQueries>, queryClient?: Tanstack.QueryClient): InferQueryResults<TQueries>;
|
package/lib/hooks/useQueries.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { usePowerSync } from '@powersync/react';
|
|
2
|
-
import * as Tanstack from '@tanstack/react-query';
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
|
-
import { usePowerSyncQueries } from './usePowerSyncQueries.js';
|
|
5
|
-
/**
|
|
6
|
-
* @example
|
|
7
|
-
* ```
|
|
8
|
-
* const { data, error, isLoading } = useQueries({
|
|
9
|
-
* queries: [
|
|
10
|
-
* { queryKey: ['lists'], query: 'SELECT * from lists' },
|
|
11
|
-
* { queryKey: ['todos'], query: 'SELECT * from todos' }
|
|
12
|
-
* ],
|
|
13
|
-
* })
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```
|
|
18
|
-
* const ids = [1, 2, 3];
|
|
19
|
-
* const combinedQueries = useQueries({
|
|
20
|
-
* queries: ids.map((id) => ({
|
|
21
|
-
* queryKey: ['post', id],
|
|
22
|
-
* query: 'SELECT * from lists where id = ?',
|
|
23
|
-
* parameters: [id],
|
|
24
|
-
* })),
|
|
25
|
-
* combine: (results) => {
|
|
26
|
-
* return {
|
|
27
|
-
* data: results.map((result) => result.data),
|
|
28
|
-
* pending: results.some((result) => result.isPending),
|
|
29
|
-
* }
|
|
30
|
-
* },
|
|
31
|
-
* });
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export function useQueries(options, queryClient = Tanstack.useQueryClient()) {
|
|
35
|
-
const powerSync = usePowerSync();
|
|
36
|
-
if (!powerSync) {
|
|
37
|
-
throw new Error('PowerSync is not available');
|
|
38
|
-
}
|
|
39
|
-
const queriesInput = options.queries;
|
|
40
|
-
const powerSyncQueriesInput = useMemo(() => queriesInput.map((queryOptions) => ({
|
|
41
|
-
query: queryOptions.query,
|
|
42
|
-
parameters: queryOptions.parameters,
|
|
43
|
-
queryKey: queryOptions.queryKey
|
|
44
|
-
})), [queriesInput]);
|
|
45
|
-
const states = usePowerSyncQueries(powerSyncQueriesInput, queryClient);
|
|
46
|
-
const queries = useMemo(() => {
|
|
47
|
-
return queriesInput.map((queryOptions, idx) => {
|
|
48
|
-
const { query, parameters, ...rest } = queryOptions;
|
|
49
|
-
const state = states[idx];
|
|
50
|
-
return {
|
|
51
|
-
...rest,
|
|
52
|
-
queryFn: query ? state.queryFn : rest.queryFn,
|
|
53
|
-
queryKey: rest.queryKey
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
}, [queriesInput, states]);
|
|
57
|
-
return Tanstack.useQueries({
|
|
58
|
-
queries: queries,
|
|
59
|
-
combine: options.combine
|
|
60
|
-
? (results) => {
|
|
61
|
-
const enhancedResultsWithQueryKey = results.map((result, index) => ({
|
|
62
|
-
...result,
|
|
63
|
-
queryKey: queries[index].queryKey
|
|
64
|
-
}));
|
|
65
|
-
return options.combine?.(enhancedResultsWithQueryKey);
|
|
66
|
-
}
|
|
67
|
-
: undefined
|
|
68
|
-
}, queryClient);
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=useQueries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useQueries.js","sourceRoot":"","sources":["../../src/hooks/useQueries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AA8E/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,UAAU,CACxB,OAA8B,EAC9B,cAAoC,QAAQ,CAAC,cAAc,EAAE;IAE7D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAErC,MAAM,qBAAqB,GAAG,OAAO,CACnC,GAAG,EAAE,CACH,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAC,CAAC,EACL,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE;YAC5C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;gBAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,OAAO,QAAQ,CAAC,UAAU,CACxB;QACE,OAAO,EAAE,OAAuC;QAChD,OAAO,EAAE,OAAO,CAAC,OAAO;YACtB,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBACV,MAAM,2BAA2B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBAClE,GAAG,MAAM;oBACT,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ;iBAClC,CAAC,CAAC,CAAC;gBAEJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,2BAA2B,CAAC,CAAC;YACxD,CAAC;YACH,CAAC,CAAC,SAAS;KACd,EACD,WAAW,CACZ,CAAC;AACJ,CAAC"}
|
package/lib/hooks/useQuery.d.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { type CompilableQuery } from '@powersync/common';
|
|
2
|
-
import * as Tanstack from '@tanstack/react-query';
|
|
3
|
-
export type PowerSyncQueryOptions<T> = {
|
|
4
|
-
query?: string | CompilableQuery<T>;
|
|
5
|
-
parameters?: any[];
|
|
6
|
-
};
|
|
7
|
-
export type UseBaseQueryOptions<TQueryOptions> = TQueryOptions & PowerSyncQueryOptions<any>;
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* Uses the `queryFn` to execute the query. No different from the base `useQuery` hook.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```
|
|
14
|
-
* const { data, error, isLoading } = useQuery({
|
|
15
|
-
* queryKey: ['lists'],
|
|
16
|
-
* queryFn: getTodos,
|
|
17
|
-
* });
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare function useQuery<TData = unknown, TError = Tanstack.DefaultError>(options: UseBaseQueryOptions<Tanstack.UseQueryOptions<TData, TError>> & {
|
|
21
|
-
query?: undefined;
|
|
22
|
-
}, queryClient?: Tanstack.QueryClient): Tanstack.UseQueryResult<TData, TError>;
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
* Uses the `query` to execute the PowerSync query.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* ```
|
|
29
|
-
* const { data, error, isLoading } = useQuery({
|
|
30
|
-
* queryKey: ['lists'],
|
|
31
|
-
* query: 'SELECT * from lists where id = ?',
|
|
32
|
-
* parameters: ['id-1']
|
|
33
|
-
* });
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```
|
|
38
|
-
* const { data, error, isLoading } = useQuery({
|
|
39
|
-
* queryKey: ['lists'],
|
|
40
|
-
* query: compilableQuery,
|
|
41
|
-
* });
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export declare function useQuery<TData = unknown, TError = Tanstack.DefaultError>(options: UseBaseQueryOptions<Tanstack.UseQueryOptions<TData[], TError>> & {
|
|
45
|
-
query: string | CompilableQuery<TData>;
|
|
46
|
-
}, queryClient?: Tanstack.QueryClient): Tanstack.UseQueryResult<TData[], TError>;
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
-
* Uses the `queryFn` to execute the query. No different from the base `useSuspenseQuery` hook.
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```
|
|
53
|
-
* const { data } = useSuspenseQuery({
|
|
54
|
-
* queryKey: ['lists'],
|
|
55
|
-
* queryFn: getTodos,
|
|
56
|
-
* });
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
export declare function useSuspenseQuery<TData = unknown, TError = Tanstack.DefaultError>(options: UseBaseQueryOptions<Tanstack.UseSuspenseQueryOptions<TData, TError>> & {
|
|
60
|
-
query?: undefined;
|
|
61
|
-
}, queryClient?: Tanstack.QueryClient): Tanstack.UseSuspenseQueryResult<TData, TError>;
|
|
62
|
-
/***
|
|
63
|
-
*
|
|
64
|
-
* Uses the `query` to execute the PowerSync query.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```
|
|
68
|
-
* const { data } = useSuspenseQuery({
|
|
69
|
-
* queryKey: ['lists'],
|
|
70
|
-
* query: 'SELECT * from lists where id = ?',
|
|
71
|
-
* parameters: ['id-1']
|
|
72
|
-
* });
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
export declare function useSuspenseQuery<TData = unknown, TError = Tanstack.DefaultError>(options: UseBaseQueryOptions<Tanstack.UseSuspenseQueryOptions<TData[], TError>> & {
|
|
76
|
-
query: string | CompilableQuery<TData>;
|
|
77
|
-
}, queryClient?: Tanstack.QueryClient): Tanstack.UseSuspenseQueryResult<TData[], TError>;
|
package/lib/hooks/useQuery.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { usePowerSync } from '@powersync/react';
|
|
2
|
-
import * as Tanstack from '@tanstack/react-query';
|
|
3
|
-
import { usePowerSyncQueries } from './usePowerSyncQueries.js';
|
|
4
|
-
export function useQuery(options, queryClient = Tanstack.useQueryClient()) {
|
|
5
|
-
return useQueryCore(options, queryClient, Tanstack.useQuery);
|
|
6
|
-
}
|
|
7
|
-
export function useSuspenseQuery(options, queryClient = Tanstack.useQueryClient()) {
|
|
8
|
-
return useQueryCore(options, queryClient, Tanstack.useSuspenseQuery);
|
|
9
|
-
}
|
|
10
|
-
function useQueryCore(options, queryClient, useQueryFn) {
|
|
11
|
-
const powerSync = usePowerSync();
|
|
12
|
-
if (!powerSync) {
|
|
13
|
-
throw new Error('PowerSync is not available');
|
|
14
|
-
}
|
|
15
|
-
const { query, parameters, queryKey, ...resolvedOptions } = options;
|
|
16
|
-
const [{ queryFn }] = usePowerSyncQueries([
|
|
17
|
-
{
|
|
18
|
-
query,
|
|
19
|
-
parameters,
|
|
20
|
-
queryKey
|
|
21
|
-
}
|
|
22
|
-
], queryClient);
|
|
23
|
-
return useQueryFn({
|
|
24
|
-
...resolvedOptions,
|
|
25
|
-
queryKey,
|
|
26
|
-
queryFn: query ? queryFn : resolvedOptions.queryFn
|
|
27
|
-
}, queryClient);
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=useQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/hooks/useQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAoD/D,MAAM,UAAU,QAAQ,CACtB,OAAqE,EACrE,cAAoC,QAAQ,CAAC,cAAc,EAAE;IAE7D,OAAO,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAuCD,MAAM,UAAU,gBAAgB,CAC9B,OAA6E,EAC7E,cAAoC,QAAQ,CAAC,cAAc,EAAE;IAE7D,OAAO,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CAMnB,OAA2C,EAC3C,WAAiC,EACjC,UAAwF;IAExF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC;IAEpE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,mBAAmB,CACvC;QACE;YACE,KAAK;YACL,UAAU;YACV,QAAQ;SACT;KACF,EACD,WAAW,CACZ,CAAC;IAEF,OAAO,UAAU,CACf;QACE,GAAI,eAAiC;QACrC,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO;KAClC,EAClB,WAAW,CACZ,CAAC;AACJ,CAAC"}
|
package/lib/index.d.ts
DELETED
package/lib/index.js
DELETED
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|