@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/tanstack-react-query",
3
- "version": "0.0.0-dev-20260128170746",
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-20260128170746",
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/common": "0.0.0-dev-20260128170746",
33
- "@powersync/react": "1.8.2"
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>;
@@ -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"}
@@ -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>;
@@ -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
@@ -1,2 +0,0 @@
1
- export { useQuery, useSuspenseQuery } from './hooks/useQuery.js';
2
- export { useQueries } from './hooks/useQueries.js';
package/lib/index.js DELETED
@@ -1,3 +0,0 @@
1
- export { useQuery, useSuspenseQuery } from './hooks/useQuery.js';
2
- export { useQueries } from './hooks/useQueries.js';
3
- //# sourceMappingURL=index.js.map
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"}