@tanstack/lit-query 0.2.11 → 0.2.12

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 (143) hide show
  1. package/README.md +17 -0
  2. package/build/legacy/index.cjs +1585 -0
  3. package/build/legacy/index.cjs.map +1 -0
  4. package/build/legacy/index.d.cts +781 -0
  5. package/build/legacy/index.d.cts.map +1 -0
  6. package/build/legacy/index.d.ts +781 -0
  7. package/build/legacy/index.d.ts.map +1 -0
  8. package/build/legacy/index.js +1561 -0
  9. package/build/legacy/index.js.map +1 -0
  10. package/build/modern/index.cjs +1569 -0
  11. package/build/modern/index.cjs.map +1 -0
  12. package/build/modern/index.d.cts +781 -0
  13. package/build/modern/index.d.cts.map +1 -0
  14. package/build/modern/index.d.ts +781 -0
  15. package/build/modern/index.d.ts.map +1 -0
  16. package/build/modern/index.js +1545 -0
  17. package/build/modern/index.js.map +1 -0
  18. package/package.json +27 -30
  19. package/src/createInfiniteQueryController.ts +0 -1
  20. package/src/createMutationController.ts +9 -7
  21. package/src/createQueriesController.ts +0 -2
  22. package/src/createQueryController.ts +0 -1
  23. package/src/infiniteQueryOptions.ts +10 -4
  24. package/dist/QueryClientProvider.d.ts +0 -85
  25. package/dist/QueryClientProvider.d.ts.map +0 -1
  26. package/dist/QueryClientProvider.js +0 -137
  27. package/dist/QueryClientProvider.js.map +0 -1
  28. package/dist/accessor.d.ts +0 -32
  29. package/dist/accessor.d.ts.map +0 -1
  30. package/dist/accessor.js +0 -12
  31. package/dist/accessor.js.map +0 -1
  32. package/dist/context.d.ts +0 -59
  33. package/dist/context.d.ts.map +0 -1
  34. package/dist/context.js +0 -100
  35. package/dist/context.js.map +0 -1
  36. package/dist/controllers/BaseController.d.ts +0 -39
  37. package/dist/controllers/BaseController.d.ts.map +0 -1
  38. package/dist/controllers/BaseController.js +0 -213
  39. package/dist/controllers/BaseController.js.map +0 -1
  40. package/dist/createInfiniteQueryController.d.ts +0 -76
  41. package/dist/createInfiniteQueryController.d.ts.map +0 -1
  42. package/dist/createInfiniteQueryController.js +0 -248
  43. package/dist/createInfiniteQueryController.js.map +0 -1
  44. package/dist/createMutationController.d.ts +0 -79
  45. package/dist/createMutationController.d.ts.map +0 -1
  46. package/dist/createMutationController.js +0 -193
  47. package/dist/createMutationController.js.map +0 -1
  48. package/dist/createQueriesController.d.ts +0 -145
  49. package/dist/createQueriesController.d.ts.map +0 -1
  50. package/dist/createQueriesController.js +0 -367
  51. package/dist/createQueriesController.js.map +0 -1
  52. package/dist/createQueryController.d.ts +0 -67
  53. package/dist/createQueryController.d.ts.map +0 -1
  54. package/dist/createQueryController.js +0 -238
  55. package/dist/createQueryController.js.map +0 -1
  56. package/dist/index.d.ts +0 -24
  57. package/dist/index.d.ts.map +0 -1
  58. package/dist/index.js +0 -15
  59. package/dist/index.js.map +0 -1
  60. package/dist/infiniteQueryOptions.d.ts +0 -21
  61. package/dist/infiniteQueryOptions.d.ts.map +0 -1
  62. package/dist/infiniteQueryOptions.js +0 -22
  63. package/dist/infiniteQueryOptions.js.map +0 -1
  64. package/dist/mutationOptions.d.ts +0 -19
  65. package/dist/mutationOptions.d.ts.map +0 -1
  66. package/dist/mutationOptions.js +0 -20
  67. package/dist/mutationOptions.js.map +0 -1
  68. package/dist/queryObserverResultTracker.d.ts +0 -14
  69. package/dist/queryObserverResultTracker.d.ts.map +0 -1
  70. package/dist/queryObserverResultTracker.js +0 -18
  71. package/dist/queryObserverResultTracker.js.map +0 -1
  72. package/dist/queryOptions.d.ts +0 -62
  73. package/dist/queryOptions.d.ts.map +0 -1
  74. package/dist/queryOptions.js +0 -4
  75. package/dist/queryOptions.js.map +0 -1
  76. package/dist/types.d.ts +0 -31
  77. package/dist/types.d.ts.map +0 -1
  78. package/dist/types.js +0 -2
  79. package/dist/types.js.map +0 -1
  80. package/dist/useIsFetching.d.ts +0 -45
  81. package/dist/useIsFetching.d.ts.map +0 -1
  82. package/dist/useIsFetching.js +0 -116
  83. package/dist/useIsFetching.js.map +0 -1
  84. package/dist/useIsMutating.d.ts +0 -45
  85. package/dist/useIsMutating.d.ts.map +0 -1
  86. package/dist/useIsMutating.js +0 -116
  87. package/dist/useIsMutating.js.map +0 -1
  88. package/dist/useMutationState.d.ts +0 -57
  89. package/dist/useMutationState.d.ts.map +0 -1
  90. package/dist/useMutationState.js +0 -136
  91. package/dist/useMutationState.js.map +0 -1
  92. package/dist-cjs/QueryClientProvider.d.cts +0 -84
  93. package/dist-cjs/QueryClientProvider.js +0 -141
  94. package/dist-cjs/QueryClientProvider.js.map +0 -1
  95. package/dist-cjs/accessor.d.cts +0 -31
  96. package/dist-cjs/accessor.js +0 -16
  97. package/dist-cjs/accessor.js.map +0 -1
  98. package/dist-cjs/context.d.cts +0 -58
  99. package/dist-cjs/context.js +0 -109
  100. package/dist-cjs/context.js.map +0 -1
  101. package/dist-cjs/controllers/BaseController.d.cts +0 -38
  102. package/dist-cjs/controllers/BaseController.js +0 -217
  103. package/dist-cjs/controllers/BaseController.js.map +0 -1
  104. package/dist-cjs/createInfiniteQueryController.d.cts +0 -75
  105. package/dist-cjs/createInfiniteQueryController.js +0 -251
  106. package/dist-cjs/createInfiniteQueryController.js.map +0 -1
  107. package/dist-cjs/createMutationController.d.cts +0 -78
  108. package/dist-cjs/createMutationController.js +0 -196
  109. package/dist-cjs/createMutationController.js.map +0 -1
  110. package/dist-cjs/createQueriesController.d.cts +0 -144
  111. package/dist-cjs/createQueriesController.js +0 -370
  112. package/dist-cjs/createQueriesController.js.map +0 -1
  113. package/dist-cjs/createQueryController.d.cts +0 -66
  114. package/dist-cjs/createQueryController.js +0 -241
  115. package/dist-cjs/createQueryController.js.map +0 -1
  116. package/dist-cjs/index.d.cts +0 -23
  117. package/dist-cjs/index.js +0 -49
  118. package/dist-cjs/index.js.map +0 -1
  119. package/dist-cjs/infiniteQueryOptions.d.cts +0 -20
  120. package/dist-cjs/infiniteQueryOptions.js +0 -25
  121. package/dist-cjs/infiniteQueryOptions.js.map +0 -1
  122. package/dist-cjs/mutationOptions.d.cts +0 -18
  123. package/dist-cjs/mutationOptions.js +0 -23
  124. package/dist-cjs/mutationOptions.js.map +0 -1
  125. package/dist-cjs/package.json +0 -3
  126. package/dist-cjs/queryObserverResultTracker.d.cts +0 -13
  127. package/dist-cjs/queryObserverResultTracker.js +0 -22
  128. package/dist-cjs/queryObserverResultTracker.js.map +0 -1
  129. package/dist-cjs/queryOptions.d.cts +0 -61
  130. package/dist-cjs/queryOptions.js +0 -7
  131. package/dist-cjs/queryOptions.js.map +0 -1
  132. package/dist-cjs/types.d.cts +0 -30
  133. package/dist-cjs/types.js +0 -3
  134. package/dist-cjs/types.js.map +0 -1
  135. package/dist-cjs/useIsFetching.d.cts +0 -44
  136. package/dist-cjs/useIsFetching.js +0 -119
  137. package/dist-cjs/useIsFetching.js.map +0 -1
  138. package/dist-cjs/useIsMutating.d.cts +0 -44
  139. package/dist-cjs/useIsMutating.js +0 -119
  140. package/dist-cjs/useIsMutating.js.map +0 -1
  141. package/dist-cjs/useMutationState.d.cts +0 -56
  142. package/dist-cjs/useMutationState.js +0 -139
  143. package/dist-cjs/useMutationState.js.map +0 -1
@@ -1,76 +0,0 @@
1
- import { type DefaultError, type InfiniteData, type InfiniteQueryObserverOptions, type InfiniteQueryObserverResult, type QueryKey } from '@tanstack/query-core';
2
- import type { QueryClient } from '@tanstack/query-core';
3
- import type { ReactiveControllerHost } from 'lit';
4
- import { type Accessor, type ValueAccessor } from './accessor.js';
5
- /**
6
- * Options accepted by `createInfiniteQueryController`.
7
- *
8
- * This is the Lit adapter shape for `InfiniteQueryObserverOptions`. Pass it
9
- * directly or through an `Accessor` when the options depend on Lit host state.
10
- */
11
- export type CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>;
12
- /**
13
- * Accessor returned by `createInfiniteQueryController`.
14
- *
15
- * Call the accessor or read its `current` property to get the latest infinite
16
- * query result. The attached methods delegate to the active infinite query
17
- * observer.
18
- */
19
- export type InfiniteQueryResultAccessor<TData, TError> = ValueAccessor<InfiniteQueryObserverResult<TData, TError>> & {
20
- /** Refetches the current infinite query. */
21
- refetch: InfiniteQueryObserverResult<TData, TError>['refetch'];
22
- /** Fetches the next page for the current infinite query. */
23
- fetchNextPage: InfiniteQueryObserverResult<TData, TError>['fetchNextPage'];
24
- /** Fetches the previous page for the current infinite query. */
25
- fetchPreviousPage: InfiniteQueryObserverResult<TData, TError>['fetchPreviousPage'];
26
- /** Removes the controller from its Lit host and unsubscribes observers. */
27
- destroy: () => void;
28
- };
29
- /**
30
- * Creates a Lit reactive controller that subscribes the host to an infinite
31
- * query.
32
- *
33
- * The returned accessor is callable and also exposes `current`, `refetch`,
34
- * `fetchNextPage`, `fetchPreviousPage`, and `destroy`. When `options` is a
35
- * function, it is re-read during host updates so query keys and options can
36
- * follow reactive host state.
37
- *
38
- * If `queryClient` is omitted, the controller resolves the client from the
39
- * nearest connected `QueryClientProvider`.
40
- *
41
- * @param host - The Lit reactive controller host that owns the infinite query
42
- * subscription.
43
- * @param options - Infinite query observer options, or a getter that returns
44
- * options.
45
- * @param queryClient - Optional explicit query client. Provide this for
46
- * controllers that should not resolve a client from Lit context.
47
- * @returns An accessor for the latest infinite query result with page helper
48
- * methods.
49
- *
50
- * @example
51
- * ```ts
52
- * import { LitElement, html } from 'lit'
53
- * import { createInfiniteQueryController } from '@tanstack/lit-query'
54
- *
55
- * class ProjectsView extends LitElement {
56
- * private readonly projects = createInfiniteQueryController(this, {
57
- * queryKey: ['projects'],
58
- * queryFn: ({ pageParam }) => fetchProjects(pageParam),
59
- * initialPageParam: 0,
60
- * getNextPageParam: (lastPage) => lastPage.nextCursor,
61
- * })
62
- *
63
- * render() {
64
- * const query = this.projects()
65
- *
66
- * return html`
67
- * <button ?disabled=${!query.hasNextPage} @click=${() => this.projects.fetchNextPage()}>
68
- * Load more
69
- * </button>
70
- * `
71
- * }
72
- * }
73
- * ```
74
- */
75
- export declare function createInfiniteQueryController<TQueryFnData = unknown, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(host: ReactiveControllerHost, options: Accessor<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>, queryClient?: QueryClient): InfiniteQueryResultAccessor<TData, TError>;
76
- //# sourceMappingURL=createInfiniteQueryController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createInfiniteQueryController.d.ts","sourceRoot":"","sources":["../src/createInfiniteQueryController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAA;AACjD,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAKtB;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,CACpC,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,EAClC,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,UAAU,GAAG,OAAO,IAClB,4BAA4B,CAC9B,YAAY,EACZ,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,CACX,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,CAAC,KAAK,EAAE,MAAM,IAAI,aAAa,CACpE,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAC3C,GAAG;IACF,4CAA4C;IAC5C,OAAO,EAAE,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAA;IAC9D,4DAA4D;IAC5D,aAAa,EAAE,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,eAAe,CAAC,CAAA;IAC1E,gEAAgE;IAChE,iBAAiB,EAAE,2BAA2B,CAC5C,KAAK,EACL,MAAM,CACP,CAAC,mBAAmB,CAAC,CAAA;IACtB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAsSD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,EAClC,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,UAAU,GAAG,OAAO,EAEpB,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,QAAQ,CACf,0BAA0B,CACxB,YAAY,EACZ,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,CACX,CACF,EACD,WAAW,CAAC,EAAE,WAAW,GACxB,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAY5C"}
@@ -1,248 +0,0 @@
1
- import { InfiniteQueryObserver, } from '@tanstack/query-core';
2
- import { createValueAccessor, readAccessor, } from './accessor.js';
3
- import { createMissingQueryClientError } from './context.js';
4
- import { BaseController } from './controllers/BaseController.js';
5
- import { QueryObserverResultTracker } from './queryObserverResultTracker.js';
6
- function createPendingInfiniteQueryResult() {
7
- return {
8
- data: undefined,
9
- dataUpdatedAt: 0,
10
- error: null,
11
- errorUpdatedAt: 0,
12
- failureCount: 0,
13
- failureReason: null,
14
- errorUpdateCount: 0,
15
- isError: false,
16
- isFetched: false,
17
- isFetchedAfterMount: false,
18
- isFetching: false,
19
- isInitialLoading: false,
20
- isLoading: false,
21
- isLoadingError: false,
22
- isPaused: false,
23
- isPending: true,
24
- isPlaceholderData: false,
25
- isRefetchError: false,
26
- isRefetching: false,
27
- isStale: true,
28
- isEnabled: true,
29
- isSuccess: false,
30
- fetchStatus: 'idle',
31
- status: 'pending',
32
- refetch: (() => Promise.reject(createMissingQueryClientError())),
33
- fetchNextPage: (() => Promise.reject(createMissingQueryClientError())),
34
- fetchPreviousPage: (() => Promise.reject(createMissingQueryClientError())),
35
- hasNextPage: false,
36
- hasPreviousPage: false,
37
- isFetchNextPageError: false,
38
- isFetchingNextPage: false,
39
- isFetchPreviousPageError: false,
40
- isFetchingPreviousPage: false,
41
- promise: Promise.resolve(undefined),
42
- };
43
- }
44
- class InfiniteQueryController extends BaseController {
45
- options;
46
- observer;
47
- resultTracker = new QueryObserverResultTracker();
48
- unsubscribe;
49
- queryClient;
50
- constructor(host, options, queryClient) {
51
- super(host, createPendingInfiniteQueryResult(), queryClient);
52
- this.options = options;
53
- if (!queryClient) {
54
- return;
55
- }
56
- if (typeof options === 'function') {
57
- return;
58
- }
59
- const defaulted = this.defaultOptions(queryClient);
60
- const observer = new InfiniteQueryObserver(queryClient, defaulted);
61
- this.queryClient = queryClient;
62
- this.observer = observer;
63
- this.assignObserverResult(observer.getOptimisticResult(defaulted));
64
- }
65
- onConnected() {
66
- if (!this.syncClient()) {
67
- return;
68
- }
69
- this.refreshOptions();
70
- this.subscribe();
71
- this.observer?.updateResult();
72
- if (this.observer) {
73
- this.setObserverResult(this.observer.getCurrentResult());
74
- }
75
- }
76
- onDisconnected() {
77
- this.unsubscribeObserver();
78
- this.syncClient();
79
- }
80
- onHostUpdate() {
81
- if (typeof this.options !== 'function') {
82
- return;
83
- }
84
- this.refreshOptions();
85
- }
86
- onQueryClientChanged() {
87
- if (!this.syncClient() || !this.connectedState) {
88
- return;
89
- }
90
- this.refreshOptions();
91
- this.subscribe();
92
- this.observer?.updateResult();
93
- if (this.observer) {
94
- this.setObserverResult(this.observer.getCurrentResult());
95
- }
96
- }
97
- refetch = (...args) => {
98
- if (!this.applyOptions() || !this.observer) {
99
- return Promise.reject(createMissingQueryClientError());
100
- }
101
- return this.observer.refetch(...args);
102
- };
103
- fetchNextPage = (...args) => {
104
- if (!this.applyOptions() || !this.observer) {
105
- return Promise.reject(createMissingQueryClientError());
106
- }
107
- return this.observer.fetchNextPage(...args);
108
- };
109
- fetchPreviousPage = (...args) => {
110
- if (!this.applyOptions() || !this.observer) {
111
- return Promise.reject(createMissingQueryClientError());
112
- }
113
- return this.observer.fetchPreviousPage(...args);
114
- };
115
- readCurrent() {
116
- if (this.observer) {
117
- this.assignObserverResult(this.observer.getCurrentResult());
118
- }
119
- return this.current;
120
- }
121
- subscribe() {
122
- if (!this.observer) {
123
- return;
124
- }
125
- if (this.unsubscribe) {
126
- return;
127
- }
128
- this.unsubscribe = this.observer.subscribe((next) => {
129
- this.setObserverResult(next);
130
- });
131
- }
132
- unsubscribeObserver() {
133
- this.unsubscribe?.();
134
- this.unsubscribe = undefined;
135
- }
136
- syncClient() {
137
- const nextClient = this.tryGetQueryClient();
138
- if (!nextClient) {
139
- this.unsubscribeObserver();
140
- this.queryClient = undefined;
141
- this.observer = undefined;
142
- this.resultTracker.reset();
143
- this.setResult(createPendingInfiniteQueryResult());
144
- return false;
145
- }
146
- if (nextClient === this.queryClient) {
147
- return true;
148
- }
149
- this.unsubscribeObserver();
150
- this.queryClient = nextClient;
151
- const options = this.defaultOptions(this.queryClient);
152
- this.observer = new InfiniteQueryObserver(this.queryClient, options);
153
- this.setObserverResult(this.observer.getOptimisticResult(options));
154
- return true;
155
- }
156
- applyOptions() {
157
- if (!this.syncClient() || !this.observer || !this.queryClient) {
158
- return false;
159
- }
160
- const options = this.defaultOptions(this.queryClient);
161
- this.observer.setOptions(options);
162
- return true;
163
- }
164
- refreshOptions() {
165
- if (!this.applyOptions() || !this.observer) {
166
- return false;
167
- }
168
- this.setObserverResult(this.observer.getCurrentResult());
169
- return true;
170
- }
171
- assignObserverResult(result) {
172
- const trackedResult = this.resultTracker.update(this.observer, result);
173
- if (trackedResult) {
174
- this.result = trackedResult;
175
- }
176
- }
177
- setObserverResult(result) {
178
- const trackedResult = this.resultTracker.update(this.observer, result);
179
- if (trackedResult) {
180
- this.setResult(trackedResult);
181
- }
182
- }
183
- defaultOptions(client = this.queryClient) {
184
- if (!client) {
185
- throw createMissingQueryClientError();
186
- }
187
- const defaulted = client.defaultQueryOptions(readAccessor(this.options));
188
- defaulted._optimisticResults =
189
- 'optimistic';
190
- return defaulted;
191
- }
192
- }
193
- /**
194
- * Creates a Lit reactive controller that subscribes the host to an infinite
195
- * query.
196
- *
197
- * The returned accessor is callable and also exposes `current`, `refetch`,
198
- * `fetchNextPage`, `fetchPreviousPage`, and `destroy`. When `options` is a
199
- * function, it is re-read during host updates so query keys and options can
200
- * follow reactive host state.
201
- *
202
- * If `queryClient` is omitted, the controller resolves the client from the
203
- * nearest connected `QueryClientProvider`.
204
- *
205
- * @param host - The Lit reactive controller host that owns the infinite query
206
- * subscription.
207
- * @param options - Infinite query observer options, or a getter that returns
208
- * options.
209
- * @param queryClient - Optional explicit query client. Provide this for
210
- * controllers that should not resolve a client from Lit context.
211
- * @returns An accessor for the latest infinite query result with page helper
212
- * methods.
213
- *
214
- * @example
215
- * ```ts
216
- * import { LitElement, html } from 'lit'
217
- * import { createInfiniteQueryController } from '@tanstack/lit-query'
218
- *
219
- * class ProjectsView extends LitElement {
220
- * private readonly projects = createInfiniteQueryController(this, {
221
- * queryKey: ['projects'],
222
- * queryFn: ({ pageParam }) => fetchProjects(pageParam),
223
- * initialPageParam: 0,
224
- * getNextPageParam: (lastPage) => lastPage.nextCursor,
225
- * })
226
- *
227
- * render() {
228
- * const query = this.projects()
229
- *
230
- * return html`
231
- * <button ?disabled=${!query.hasNextPage} @click=${() => this.projects.fetchNextPage()}>
232
- * Load more
233
- * </button>
234
- * `
235
- * }
236
- * }
237
- * ```
238
- */
239
- export function createInfiniteQueryController(host, options, queryClient) {
240
- const controller = new InfiniteQueryController(host, options, queryClient);
241
- return Object.assign(createValueAccessor(() => controller.readCurrent()), {
242
- refetch: controller.refetch,
243
- fetchNextPage: controller.fetchNextPage,
244
- fetchPreviousPage: controller.fetchPreviousPage,
245
- destroy: () => controller.destroy(),
246
- });
247
- }
248
- //# sourceMappingURL=createInfiniteQueryController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createInfiniteQueryController.js","sourceRoot":"","sources":["../src/createInfiniteQueryController.ts"],"names":[],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- import { type DefaultError, type MutateOptions, type MutationObserverOptions, type MutationObserverResult } from '@tanstack/query-core';
2
- import type { QueryClient } from '@tanstack/query-core';
3
- import type { ReactiveControllerHost } from 'lit';
4
- import { type Accessor, type ValueAccessor } from './accessor.js';
5
- /**
6
- * Options accepted by `createMutationController`.
7
- *
8
- * This is the Lit adapter shape for `MutationObserverOptions`. Pass it directly
9
- * or through an `Accessor` when the options depend on Lit host state.
10
- */
11
- export type CreateMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown> = MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>;
12
- /**
13
- * Accessor returned by `createMutationController`.
14
- *
15
- * Call the accessor or read its `current` property to get the latest mutation
16
- * result. The attached methods delegate to the active mutation observer.
17
- */
18
- export type MutationResultAccessor<TData, TError, TVariables, TOnMutateResult> = ValueAccessor<MutationObserverResult<TData, TError, TVariables, TOnMutateResult>> & {
19
- /**
20
- * Starts the mutation and swallows the returned promise.
21
- *
22
- * Throws synchronously if no `QueryClient` can be resolved.
23
- */
24
- mutate: (variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TOnMutateResult>) => void;
25
- /**
26
- * Starts the mutation and returns the observer promise.
27
- *
28
- * Rejects if no `QueryClient` can be resolved.
29
- */
30
- mutateAsync: MutationObserverResult<TData, TError, TVariables, TOnMutateResult>['mutate'];
31
- /** Resets the mutation observer to its idle state. */
32
- reset: MutationObserverResult<TData, TError, TVariables, TOnMutateResult>['reset'];
33
- /** Removes the controller from its Lit host and unsubscribes observers. */
34
- destroy: () => void;
35
- };
36
- /**
37
- * Creates a Lit reactive controller that subscribes the host to a mutation.
38
- *
39
- * The returned accessor is callable and also exposes `current`, `mutate`,
40
- * `mutateAsync`, `reset`, and `destroy`. When `options` is a function, it is
41
- * re-read during host updates so mutation options can follow reactive host
42
- * state.
43
- *
44
- * If `queryClient` is omitted, the controller resolves the client from the
45
- * nearest connected `QueryClientProvider`.
46
- *
47
- * @param host - The Lit reactive controller host that owns the mutation
48
- * subscription.
49
- * @param options - Mutation observer options, or a getter that returns options.
50
- * @param queryClient - Optional explicit query client. Provide this for
51
- * controllers that should not resolve a client from Lit context.
52
- * @returns An accessor for the latest mutation result with mutation helper
53
- * methods.
54
- *
55
- * @example
56
- * ```ts
57
- * import { LitElement, html } from 'lit'
58
- * import { createMutationController } from '@tanstack/lit-query'
59
- *
60
- * class AddTodoForm extends LitElement {
61
- * private readonly addTodo = createMutationController(this, {
62
- * mutationFn: (title: string) =>
63
- * fetch('/api/todos', { method: 'POST', body: JSON.stringify({ title }) }),
64
- * })
65
- *
66
- * render() {
67
- * const mutation = this.addTodo()
68
- *
69
- * return html`
70
- * <button ?disabled=${mutation.isPending} @click=${() => this.addTodo.mutate('Ship docs')}>
71
- * Add todo
72
- * </button>
73
- * `
74
- * }
75
- * }
76
- * ```
77
- */
78
- export declare function createMutationController<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown>(host: ReactiveControllerHost, options: Accessor<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>>, queryClient?: QueryClient): MutationResultAccessor<TData, TError, TVariables, TOnMutateResult>;
79
- //# sourceMappingURL=createMutationController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMutationController.d.ts","sourceRoot":"","sources":["../src/createMutationController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAA;AACjD,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAItB;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAC/B,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,eAAe,GAAG,OAAO,IACvB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CAAA;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,IAC3E,aAAa,CACX,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CACnE,GAAG;IACF;;;;OAIG;IACH,MAAM,EAAE,CACN,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,KAChE,IAAI,CAAA;IACT;;;;OAIG;IACH,WAAW,EAAE,sBAAsB,CACjC,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAAe,CAChB,CAAC,QAAQ,CAAC,CAAA;IACX,sDAAsD;IACtD,KAAK,EAAE,sBAAsB,CAC3B,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAAe,CAChB,CAAC,OAAO,CAAC,CAAA;IACV,2EAA2E;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAiOH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,eAAe,GAAG,OAAO,EAEzB,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,QAAQ,CACf,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CAClE,EACD,WAAW,CAAC,EAAE,WAAW,GACxB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CAYpE"}
@@ -1,193 +0,0 @@
1
- import { MutationObserver, } from '@tanstack/query-core';
2
- import { createValueAccessor, readAccessor, } from './accessor.js';
3
- import { createMissingQueryClientError } from './context.js';
4
- import { BaseController } from './controllers/BaseController.js';
5
- function createIdleMutationResult() {
6
- return {
7
- context: undefined,
8
- data: undefined,
9
- error: null,
10
- failureCount: 0,
11
- failureReason: null,
12
- isError: false,
13
- isIdle: true,
14
- isPending: false,
15
- isPaused: false,
16
- isSuccess: false,
17
- status: 'idle',
18
- submittedAt: 0,
19
- variables: undefined,
20
- mutate: (() => Promise.reject(createMissingQueryClientError())),
21
- reset: (() => undefined),
22
- };
23
- }
24
- class MutationController extends BaseController {
25
- options;
26
- observer;
27
- unsubscribe;
28
- queryClient;
29
- constructor(host, options, queryClient) {
30
- super(host, createIdleMutationResult(), queryClient);
31
- this.options = options;
32
- if (!queryClient) {
33
- return;
34
- }
35
- if (typeof options === 'function') {
36
- return;
37
- }
38
- const observer = new MutationObserver(queryClient, this.defaultOptions(queryClient));
39
- this.queryClient = queryClient;
40
- this.observer = observer;
41
- this.result = observer.getCurrentResult();
42
- }
43
- onConnected() {
44
- if (!this.syncClient()) {
45
- return;
46
- }
47
- this.refreshOptions();
48
- this.subscribe();
49
- if (this.observer) {
50
- this.setResult(this.observer.getCurrentResult());
51
- }
52
- }
53
- onDisconnected() {
54
- this.unsubscribeObserver();
55
- this.syncClient();
56
- }
57
- onHostUpdate() {
58
- if (typeof this.options !== 'function') {
59
- return;
60
- }
61
- this.refreshOptions();
62
- }
63
- onQueryClientChanged() {
64
- if (!this.syncClient() || !this.connectedState) {
65
- return;
66
- }
67
- this.refreshOptions();
68
- this.subscribe();
69
- if (this.observer) {
70
- this.setResult(this.observer.getCurrentResult());
71
- }
72
- }
73
- mutate = (variables, mutateOptions) => {
74
- if (!this.syncClient() || !this.observer) {
75
- throw createMissingQueryClientError();
76
- }
77
- void this.observer.mutate(variables, mutateOptions).catch(() => {
78
- // Intentionally swallow in sync mutate path.
79
- });
80
- };
81
- mutateAsync = (...args) => {
82
- if (!this.syncClient() || !this.observer) {
83
- return Promise.reject(createMissingQueryClientError());
84
- }
85
- return this.observer.mutate(...args);
86
- };
87
- reset = () => {
88
- if (!this.syncClient() || !this.observer) {
89
- return;
90
- }
91
- this.observer.reset();
92
- this.setResult(this.observer.getCurrentResult());
93
- };
94
- subscribe() {
95
- if (!this.observer) {
96
- return;
97
- }
98
- if (this.unsubscribe) {
99
- return;
100
- }
101
- this.unsubscribe = this.observer.subscribe((next) => {
102
- this.setResult(next);
103
- });
104
- }
105
- unsubscribeObserver() {
106
- this.unsubscribe?.();
107
- this.unsubscribe = undefined;
108
- }
109
- syncClient() {
110
- const nextClient = this.tryGetQueryClient();
111
- if (!nextClient) {
112
- this.unsubscribeObserver();
113
- this.queryClient = undefined;
114
- this.observer = undefined;
115
- this.setResult(createIdleMutationResult());
116
- return false;
117
- }
118
- if (nextClient === this.queryClient) {
119
- return true;
120
- }
121
- this.unsubscribeObserver();
122
- this.queryClient = nextClient;
123
- this.observer = new MutationObserver(this.queryClient, this.defaultOptions(this.queryClient));
124
- this.setResult(this.observer.getCurrentResult());
125
- return true;
126
- }
127
- refreshOptions() {
128
- if (!this.syncClient() || !this.observer || !this.queryClient) {
129
- return false;
130
- }
131
- this.observer.setOptions(this.defaultOptions());
132
- this.setResult(this.observer.getCurrentResult());
133
- return true;
134
- }
135
- defaultOptions(client = this.queryClient) {
136
- if (!client) {
137
- throw createMissingQueryClientError();
138
- }
139
- return client.defaultMutationOptions(readAccessor(this.options));
140
- }
141
- }
142
- /**
143
- * Creates a Lit reactive controller that subscribes the host to a mutation.
144
- *
145
- * The returned accessor is callable and also exposes `current`, `mutate`,
146
- * `mutateAsync`, `reset`, and `destroy`. When `options` is a function, it is
147
- * re-read during host updates so mutation options can follow reactive host
148
- * state.
149
- *
150
- * If `queryClient` is omitted, the controller resolves the client from the
151
- * nearest connected `QueryClientProvider`.
152
- *
153
- * @param host - The Lit reactive controller host that owns the mutation
154
- * subscription.
155
- * @param options - Mutation observer options, or a getter that returns options.
156
- * @param queryClient - Optional explicit query client. Provide this for
157
- * controllers that should not resolve a client from Lit context.
158
- * @returns An accessor for the latest mutation result with mutation helper
159
- * methods.
160
- *
161
- * @example
162
- * ```ts
163
- * import { LitElement, html } from 'lit'
164
- * import { createMutationController } from '@tanstack/lit-query'
165
- *
166
- * class AddTodoForm extends LitElement {
167
- * private readonly addTodo = createMutationController(this, {
168
- * mutationFn: (title: string) =>
169
- * fetch('/api/todos', { method: 'POST', body: JSON.stringify({ title }) }),
170
- * })
171
- *
172
- * render() {
173
- * const mutation = this.addTodo()
174
- *
175
- * return html`
176
- * <button ?disabled=${mutation.isPending} @click=${() => this.addTodo.mutate('Ship docs')}>
177
- * Add todo
178
- * </button>
179
- * `
180
- * }
181
- * }
182
- * ```
183
- */
184
- export function createMutationController(host, options, queryClient) {
185
- const controller = new MutationController(host, options, queryClient);
186
- return Object.assign(createValueAccessor(() => controller.current), {
187
- mutate: controller.mutate,
188
- mutateAsync: controller.mutateAsync,
189
- reset: controller.reset,
190
- destroy: () => controller.destroy(),
191
- });
192
- }
193
- //# sourceMappingURL=createMutationController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMutationController.js","sourceRoot":"","sources":["../src/createMutationController.ts"],"names":[],"mappings":"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"}