@tanstack/solid-query 4.39.0 → 4.39.2

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.
Files changed (87) hide show
  1. package/build/lib/QueryClientProvider.esm.js +74 -0
  2. package/build/lib/QueryClientProvider.esm.js.map +1 -0
  3. package/build/lib/QueryClientProvider.js +80 -0
  4. package/build/lib/QueryClientProvider.js.map +1 -0
  5. package/build/lib/QueryClientProvider.mjs +74 -0
  6. package/build/lib/QueryClientProvider.mjs.map +1 -0
  7. package/build/lib/createBaseQuery.esm.js +94 -0
  8. package/build/lib/createBaseQuery.esm.js.map +1 -0
  9. package/build/lib/createBaseQuery.js +98 -0
  10. package/build/lib/createBaseQuery.js.map +1 -0
  11. package/build/lib/createBaseQuery.mjs +94 -0
  12. package/build/lib/createBaseQuery.mjs.map +1 -0
  13. package/build/lib/createInfiniteQuery.esm.js +20 -0
  14. package/build/lib/createInfiniteQuery.esm.js.map +1 -0
  15. package/build/lib/createInfiniteQuery.js +24 -0
  16. package/build/lib/createInfiniteQuery.js.map +1 -0
  17. package/build/lib/createInfiniteQuery.mjs +20 -0
  18. package/build/lib/createInfiniteQuery.mjs.map +1 -0
  19. package/build/lib/createMutation.esm.js +45 -0
  20. package/build/lib/createMutation.esm.js.map +1 -0
  21. package/build/lib/createMutation.js +49 -0
  22. package/build/lib/createMutation.js.map +1 -0
  23. package/build/lib/createMutation.mjs +45 -0
  24. package/build/lib/createMutation.mjs.map +1 -0
  25. package/build/lib/createQueries.esm.js +52 -0
  26. package/build/lib/createQueries.esm.js.map +1 -0
  27. package/build/lib/createQueries.js +56 -0
  28. package/build/lib/createQueries.js.map +1 -0
  29. package/build/lib/createQueries.mjs +52 -0
  30. package/build/lib/createQueries.mjs.map +1 -0
  31. package/build/lib/createQuery.esm.js +20 -0
  32. package/build/lib/createQuery.esm.js.map +1 -0
  33. package/build/lib/createQuery.js +24 -0
  34. package/build/lib/createQuery.js.map +1 -0
  35. package/build/lib/createQuery.mjs +20 -0
  36. package/build/lib/createQuery.mjs.map +1 -0
  37. package/build/lib/index.esm.js +9 -0
  38. package/build/lib/index.esm.js.map +1 -0
  39. package/build/lib/index.js +31 -0
  40. package/build/lib/index.js.map +1 -0
  41. package/build/lib/index.mjs +9 -0
  42. package/build/lib/index.mjs.map +1 -0
  43. package/build/lib/useIsFetching.esm.js +29 -0
  44. package/build/lib/useIsFetching.esm.js.map +1 -0
  45. package/build/lib/useIsFetching.js +33 -0
  46. package/build/lib/useIsFetching.js.map +1 -0
  47. package/build/lib/useIsFetching.mjs +29 -0
  48. package/build/lib/useIsFetching.mjs.map +1 -0
  49. package/build/lib/useIsMutating.esm.js +22 -0
  50. package/build/lib/useIsMutating.esm.js.map +1 -0
  51. package/build/lib/useIsMutating.js +26 -0
  52. package/build/lib/useIsMutating.js.map +1 -0
  53. package/build/lib/useIsMutating.mjs +22 -0
  54. package/build/lib/useIsMutating.mjs.map +1 -0
  55. package/build/lib/utils.esm.js +63 -0
  56. package/build/lib/utils.esm.js.map +1 -0
  57. package/build/lib/utils.js +72 -0
  58. package/build/lib/utils.js.map +1 -0
  59. package/build/lib/utils.mjs +63 -0
  60. package/build/lib/utils.mjs.map +1 -0
  61. package/build/solid/QueryClientProvider.jsx +49 -0
  62. package/build/solid/__tests__/QueryClientProvider.test.jsx +185 -0
  63. package/build/solid/__tests__/createInfiniteQuery.test.jsx +1458 -0
  64. package/build/solid/__tests__/createMutation.test.jsx +857 -0
  65. package/build/solid/__tests__/createQueries.test.jsx +958 -0
  66. package/build/solid/__tests__/createQuery.test.jsx +4559 -0
  67. package/build/solid/__tests__/createQuery.types.test.jsx +124 -0
  68. package/build/solid/__tests__/suspense.test.jsx +691 -0
  69. package/build/solid/__tests__/transition.test.jsx +39 -0
  70. package/build/solid/__tests__/useIsFetching.test.jsx +209 -0
  71. package/build/solid/__tests__/useIsMutating.test.jsx +216 -0
  72. package/build/solid/__tests__/utils.jsx +55 -0
  73. package/build/solid/createBaseQuery.js +81 -0
  74. package/build/solid/createInfiniteQuery.js +16 -0
  75. package/build/solid/createMutation.js +40 -0
  76. package/build/solid/createQueries.js +39 -0
  77. package/build/solid/createQuery.js +16 -0
  78. package/build/solid/index.js +12 -0
  79. package/build/solid/types.js +2 -0
  80. package/build/solid/useIsFetching.js +23 -0
  81. package/build/solid/useIsMutating.js +16 -0
  82. package/build/solid/utils.js +45 -0
  83. package/build/umd/index.development.js +3732 -0
  84. package/build/umd/index.development.js.map +1 -0
  85. package/build/umd/index.production.js +2 -0
  86. package/build/umd/index.production.js.map +1 -0
  87. package/package.json +2 -2
@@ -0,0 +1,39 @@
1
+ import { createComputed, onCleanup, onMount } from 'solid-js';
2
+ import { QueriesObserver } from '@tanstack/query-core';
3
+ import { createStore, unwrap } from 'solid-js/store';
4
+ import { useQueryClient } from './QueryClientProvider';
5
+ import { scheduleMicrotask } from './utils';
6
+ export function createQueries(queriesOptions) {
7
+ const queryClient = useQueryClient({ context: queriesOptions.context });
8
+ const normalizeOptions = (options) => {
9
+ const normalizedOptions = { ...options, queryKey: options.queryKey?.() };
10
+ const defaultedOptions = queryClient.defaultQueryOptions(normalizedOptions);
11
+ defaultedOptions._optimisticResults = 'optimistic';
12
+ return defaultedOptions;
13
+ };
14
+ const defaultedQueries = queriesOptions.queries.map((options) => normalizeOptions(options));
15
+ const observer = new QueriesObserver(queryClient, defaultedQueries);
16
+ const [state, setState] = createStore(observer.getOptimisticResult(defaultedQueries));
17
+ const taskQueue = [];
18
+ const unsubscribe = observer.subscribe((result) => {
19
+ taskQueue.push(() => {
20
+ setState(unwrap(result));
21
+ });
22
+ scheduleMicrotask(() => {
23
+ const taskToRun = taskQueue.pop();
24
+ if (taskToRun) {
25
+ taskToRun();
26
+ taskQueue.splice(0, taskQueue.length);
27
+ }
28
+ });
29
+ });
30
+ onCleanup(unsubscribe);
31
+ onMount(() => {
32
+ observer.setQueries(defaultedQueries, { listeners: false });
33
+ });
34
+ createComputed(() => {
35
+ const updateDefaultedQueries = queriesOptions.queries.map((options) => normalizeOptions(options));
36
+ observer.setQueries(updateDefaultedQueries);
37
+ });
38
+ return state;
39
+ }
@@ -0,0 +1,16 @@
1
+ import { QueryObserver } from '@tanstack/query-core';
2
+ import { createComputed } from 'solid-js';
3
+ import { createStore } from 'solid-js/store';
4
+ import { parseQueryArgs } from './utils';
5
+ import { createBaseQuery } from './createBaseQuery';
6
+ export function createQuery(arg1, arg2, arg3) {
7
+ // The parseQuery Args functions helps normalize the arguments into the correct form.
8
+ // Whatever the parameters are, they are normalized into the correct form.
9
+ const [parsedOptions, setParsedOptions] = createStore(parseQueryArgs(arg1, arg2, arg3));
10
+ // Watch for changes in the options and update the parsed options.
11
+ createComputed(() => {
12
+ const newParsedOptions = parseQueryArgs(arg1, arg2, arg3);
13
+ setParsedOptions(newParsedOptions);
14
+ });
15
+ return createBaseQuery(parsedOptions, QueryObserver);
16
+ }
@@ -0,0 +1,12 @@
1
+ /* istanbul ignore file */
2
+ // Re-export core
3
+ export * from '@tanstack/query-core';
4
+ // Solid Query
5
+ export * from './types';
6
+ export { createQuery } from './createQuery';
7
+ export { defaultContext, QueryClientProvider, useQueryClient, } from './QueryClientProvider';
8
+ export { useIsFetching } from './useIsFetching';
9
+ export { useIsMutating } from './useIsMutating';
10
+ export { createMutation } from './createMutation';
11
+ export { createInfiniteQuery } from './createInfiniteQuery';
12
+ export { createQueries } from './createQueries';
@@ -0,0 +1,2 @@
1
+ /* istanbul ignore file */
2
+ export {};
@@ -0,0 +1,23 @@
1
+ import { createComputed, createMemo, createSignal, onCleanup } from 'solid-js';
2
+ import { useQueryClient } from './QueryClientProvider';
3
+ import { parseFilterArgs } from './utils';
4
+ export function useIsFetching(arg1, arg2, arg3) {
5
+ const [filtersObj, optionsObj = {}] = parseFilterArgs(arg1, arg2, arg3);
6
+ const [filters, setFilters] = createSignal(filtersObj);
7
+ const [options, setOptions] = createSignal(optionsObj);
8
+ const queryClient = createMemo(() => useQueryClient({ context: options().context }));
9
+ const queryCache = createMemo(() => queryClient().getQueryCache());
10
+ const [fetches, setFetches] = createSignal(queryClient().isFetching(filters));
11
+ createComputed(() => {
12
+ const [newFiltersObj, newOptionsObj = {}] = parseFilterArgs(arg1, arg2, arg3);
13
+ setFilters(newFiltersObj);
14
+ setOptions(newOptionsObj);
15
+ });
16
+ const unsubscribe = queryCache().subscribe(() => {
17
+ setFetches(queryClient().isFetching(filters()));
18
+ });
19
+ onCleanup(() => {
20
+ unsubscribe();
21
+ });
22
+ return fetches;
23
+ }
@@ -0,0 +1,16 @@
1
+ import { parseMutationFilterArgs } from '@tanstack/query-core';
2
+ import { createSignal, onCleanup } from 'solid-js';
3
+ import { useQueryClient } from './QueryClientProvider';
4
+ export function useIsMutating(arg1, arg2, arg3) {
5
+ const [filters, options = {}] = parseMutationFilterArgs(arg1, arg2, arg3);
6
+ const queryClient = useQueryClient({ context: options.context });
7
+ const mutationCache = queryClient.getMutationCache();
8
+ const [mutations, setMutations] = createSignal(queryClient.isMutating(filters));
9
+ const unsubscribe = mutationCache.subscribe((_result) => {
10
+ setMutations(queryClient.isMutating(filters));
11
+ });
12
+ onCleanup(() => {
13
+ unsubscribe();
14
+ });
15
+ return mutations;
16
+ }
@@ -0,0 +1,45 @@
1
+ export function isQueryKey(value) {
2
+ return typeof value === 'function';
3
+ }
4
+ // The parseQuery Args functions helps normalize the arguments into the correct form.
5
+ // Whatever the parameters are, they are normalized into the correct form.
6
+ export function parseQueryArgs(arg1, arg2, arg3) {
7
+ if (!isQueryKey(arg1)) {
8
+ const { queryKey: solidKey, ...opts } = arg1;
9
+ if (solidKey) {
10
+ return {
11
+ ...opts,
12
+ queryKey: solidKey(),
13
+ };
14
+ }
15
+ return arg1;
16
+ }
17
+ if (typeof arg2 === 'function') {
18
+ return { ...arg3, queryKey: arg1(), queryFn: arg2 };
19
+ }
20
+ return { ...arg2, queryKey: arg1() };
21
+ }
22
+ export function parseFilterArgs(arg1, arg2, arg3) {
23
+ return (isQueryKey(arg1)
24
+ ? [{ ...arg2, queryKey: arg1() }, arg3]
25
+ : [{ ...arg1, queryKey: arg1?.queryKey?.() }, arg2]);
26
+ }
27
+ export function shouldThrowError(_useErrorBoundary, params) {
28
+ // Allow useErrorBoundary function to override throwing behavior on a per-error basis
29
+ if (typeof _useErrorBoundary === 'function') {
30
+ return _useErrorBoundary(...params);
31
+ }
32
+ return !!_useErrorBoundary;
33
+ }
34
+ export function sleep(timeout) {
35
+ return new Promise((resolve) => {
36
+ setTimeout(resolve, timeout);
37
+ });
38
+ }
39
+ /**
40
+ * Schedules a microtask.
41
+ * This can be useful to schedule state updates after rendering.
42
+ */
43
+ export function scheduleMicrotask(callback) {
44
+ sleep(0).then(callback);
45
+ }