@tanstack/query-core 4.24.10 → 5.0.0-alpha.0

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 (183) hide show
  1. package/build/lib/focusManager.d.ts +1 -3
  2. package/build/lib/focusManager.esm.js +19 -36
  3. package/build/lib/focusManager.esm.js.map +1 -1
  4. package/build/lib/focusManager.js +19 -38
  5. package/build/lib/focusManager.js.map +1 -1
  6. package/build/lib/focusManager.mjs +19 -36
  7. package/build/lib/focusManager.mjs.map +1 -1
  8. package/build/lib/hydration.esm.js +21 -23
  9. package/build/lib/hydration.esm.js.map +1 -1
  10. package/build/lib/hydration.js +21 -25
  11. package/build/lib/hydration.js.map +1 -1
  12. package/build/lib/hydration.mjs +21 -23
  13. package/build/lib/hydration.mjs.map +1 -1
  14. package/build/lib/index.d.ts +1 -2
  15. package/build/lib/index.esm.js +1 -1
  16. package/build/lib/index.js +2 -8
  17. package/build/lib/index.js.map +1 -1
  18. package/build/lib/index.mjs +1 -1
  19. package/build/lib/infiniteQueryBehavior.d.ts +3 -7
  20. package/build/lib/infiniteQueryBehavior.esm.js +52 -75
  21. package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
  22. package/build/lib/infiniteQueryBehavior.js +50 -77
  23. package/build/lib/infiniteQueryBehavior.js.map +1 -1
  24. package/build/lib/infiniteQueryBehavior.mjs +52 -75
  25. package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
  26. package/build/lib/infiniteQueryObserver.d.ts +4 -4
  27. package/build/lib/infiniteQueryObserver.esm.js +18 -26
  28. package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
  29. package/build/lib/infiniteQueryObserver.js +18 -28
  30. package/build/lib/infiniteQueryObserver.js.map +1 -1
  31. package/build/lib/infiniteQueryObserver.mjs +18 -26
  32. package/build/lib/infiniteQueryObserver.mjs.map +1 -1
  33. package/build/lib/mutation.d.ts +11 -22
  34. package/build/lib/mutation.esm.js +73 -105
  35. package/build/lib/mutation.esm.js.map +1 -1
  36. package/build/lib/mutation.js +73 -107
  37. package/build/lib/mutation.js.map +1 -1
  38. package/build/lib/mutation.mjs +73 -105
  39. package/build/lib/mutation.mjs.map +1 -1
  40. package/build/lib/mutationCache.d.ts +4 -6
  41. package/build/lib/mutationCache.esm.js +23 -32
  42. package/build/lib/mutationCache.esm.js.map +1 -1
  43. package/build/lib/mutationCache.js +23 -34
  44. package/build/lib/mutationCache.js.map +1 -1
  45. package/build/lib/mutationCache.mjs +23 -32
  46. package/build/lib/mutationCache.mjs.map +1 -1
  47. package/build/lib/mutationObserver.d.ts +4 -9
  48. package/build/lib/mutationObserver.esm.js +43 -72
  49. package/build/lib/mutationObserver.esm.js.map +1 -1
  50. package/build/lib/mutationObserver.js +43 -74
  51. package/build/lib/mutationObserver.js.map +1 -1
  52. package/build/lib/mutationObserver.mjs +43 -72
  53. package/build/lib/mutationObserver.mjs.map +1 -1
  54. package/build/lib/notifyManager.esm.js +7 -17
  55. package/build/lib/notifyManager.esm.js.map +1 -1
  56. package/build/lib/notifyManager.js +7 -19
  57. package/build/lib/notifyManager.js.map +1 -1
  58. package/build/lib/notifyManager.mjs +7 -17
  59. package/build/lib/notifyManager.mjs.map +1 -1
  60. package/build/lib/onlineManager.d.ts +1 -3
  61. package/build/lib/onlineManager.esm.js +16 -30
  62. package/build/lib/onlineManager.esm.js.map +1 -1
  63. package/build/lib/onlineManager.js +16 -32
  64. package/build/lib/onlineManager.js.map +1 -1
  65. package/build/lib/onlineManager.mjs +16 -30
  66. package/build/lib/onlineManager.mjs.map +1 -1
  67. package/build/lib/queriesObserver.d.ts +3 -10
  68. package/build/lib/queriesObserver.esm.js +47 -71
  69. package/build/lib/queriesObserver.esm.js.map +1 -1
  70. package/build/lib/queriesObserver.js +49 -75
  71. package/build/lib/queriesObserver.js.map +1 -1
  72. package/build/lib/queriesObserver.mjs +47 -71
  73. package/build/lib/queriesObserver.mjs.map +1 -1
  74. package/build/lib/query.d.ts +14 -21
  75. package/build/lib/query.esm.js +140 -194
  76. package/build/lib/query.esm.js.map +1 -1
  77. package/build/lib/query.js +139 -195
  78. package/build/lib/query.js.map +1 -1
  79. package/build/lib/query.mjs +140 -194
  80. package/build/lib/query.mjs.map +1 -1
  81. package/build/lib/queryCache.d.ts +12 -7
  82. package/build/lib/queryCache.esm.js +21 -45
  83. package/build/lib/queryCache.esm.js.map +1 -1
  84. package/build/lib/queryCache.js +20 -46
  85. package/build/lib/queryCache.js.map +1 -1
  86. package/build/lib/queryCache.mjs +21 -45
  87. package/build/lib/queryCache.mjs.map +1 -1
  88. package/build/lib/queryClient.d.ts +18 -46
  89. package/build/lib/queryClient.esm.js +137 -216
  90. package/build/lib/queryClient.esm.js.map +1 -1
  91. package/build/lib/queryClient.js +136 -217
  92. package/build/lib/queryClient.js.map +1 -1
  93. package/build/lib/queryClient.mjs +137 -216
  94. package/build/lib/queryClient.mjs.map +1 -1
  95. package/build/lib/queryObserver.d.ts +4 -29
  96. package/build/lib/queryObserver.esm.js +176 -258
  97. package/build/lib/queryObserver.esm.js.map +1 -1
  98. package/build/lib/queryObserver.js +176 -260
  99. package/build/lib/queryObserver.js.map +1 -1
  100. package/build/lib/queryObserver.mjs +176 -258
  101. package/build/lib/queryObserver.mjs.map +1 -1
  102. package/build/lib/removable.d.ts +3 -3
  103. package/build/lib/removable.esm.js +10 -14
  104. package/build/lib/removable.esm.js.map +1 -1
  105. package/build/lib/removable.js +10 -16
  106. package/build/lib/removable.js.map +1 -1
  107. package/build/lib/removable.mjs +10 -14
  108. package/build/lib/removable.mjs.map +1 -1
  109. package/build/lib/retryer.d.ts +5 -5
  110. package/build/lib/retryer.esm.js +27 -44
  111. package/build/lib/retryer.esm.js.map +1 -1
  112. package/build/lib/retryer.js +27 -46
  113. package/build/lib/retryer.js.map +1 -1
  114. package/build/lib/retryer.mjs +27 -44
  115. package/build/lib/retryer.mjs.map +1 -1
  116. package/build/lib/subscribable.esm.js +4 -7
  117. package/build/lib/subscribable.esm.js.map +1 -1
  118. package/build/lib/subscribable.js +4 -9
  119. package/build/lib/subscribable.js.map +1 -1
  120. package/build/lib/subscribable.mjs +4 -7
  121. package/build/lib/subscribable.mjs.map +1 -1
  122. package/build/lib/tests/utils.d.ts +3 -12
  123. package/build/lib/types.d.ts +111 -99
  124. package/build/lib/utils.d.ts +8 -18
  125. package/build/lib/utils.esm.js +39 -132
  126. package/build/lib/utils.esm.js.map +1 -1
  127. package/build/lib/utils.js +42 -144
  128. package/build/lib/utils.js.map +1 -1
  129. package/build/lib/utils.mjs +39 -132
  130. package/build/lib/utils.mjs.map +1 -1
  131. package/build/umd/index.development.js +868 -1398
  132. package/build/umd/index.development.js.map +1 -1
  133. package/build/umd/index.production.js +1 -1
  134. package/build/umd/index.production.js.map +1 -1
  135. package/package.json +1 -1
  136. package/src/focusManager.ts +17 -24
  137. package/src/index.ts +1 -11
  138. package/src/infiniteQueryBehavior.ts +54 -94
  139. package/src/infiniteQueryObserver.ts +10 -12
  140. package/src/mutation.ts +68 -92
  141. package/src/mutationCache.ts +27 -27
  142. package/src/mutationObserver.ts +60 -97
  143. package/src/onlineManager.ts +14 -14
  144. package/src/queriesObserver.ts +50 -54
  145. package/src/query.ts +106 -110
  146. package/src/queryCache.ts +42 -41
  147. package/src/queryClient.ts +155 -434
  148. package/src/queryObserver.ts +155 -192
  149. package/src/removable.ts +13 -13
  150. package/src/retryer.ts +5 -5
  151. package/src/tests/focusManager.test.tsx +25 -25
  152. package/src/tests/hydration.test.tsx +167 -81
  153. package/src/tests/infiniteQueryBehavior.test.tsx +209 -17
  154. package/src/tests/infiniteQueryObserver.test.tsx +6 -2
  155. package/src/tests/mutationCache.test.tsx +127 -127
  156. package/src/tests/mutationObserver.test.tsx +1 -31
  157. package/src/tests/mutations.test.tsx +62 -43
  158. package/src/tests/onlineManager.test.tsx +12 -4
  159. package/src/tests/queriesObserver.test.tsx +41 -77
  160. package/src/tests/query.test.tsx +175 -243
  161. package/src/tests/queryCache.test.tsx +170 -93
  162. package/src/tests/queryClient.test.tsx +229 -378
  163. package/src/tests/queryObserver.test.tsx +23 -147
  164. package/src/tests/utils.test.tsx +84 -29
  165. package/src/tests/utils.ts +9 -18
  166. package/src/types.ts +187 -140
  167. package/src/utils.ts +31 -124
  168. package/build/lib/logger.d.ts +0 -8
  169. package/build/lib/logger.esm.js +0 -4
  170. package/build/lib/logger.esm.js.map +0 -1
  171. package/build/lib/logger.js +0 -8
  172. package/build/lib/logger.js.map +0 -1
  173. package/build/lib/logger.mjs +0 -4
  174. package/build/lib/logger.mjs.map +0 -1
  175. package/build/lib/logger.native.d.ts +0 -6
  176. package/build/lib/logger.native.esm.js +0 -12
  177. package/build/lib/logger.native.esm.js.map +0 -1
  178. package/build/lib/logger.native.js +0 -16
  179. package/build/lib/logger.native.js.map +0 -1
  180. package/build/lib/logger.native.mjs +0 -12
  181. package/build/lib/logger.native.mjs.map +0 -1
  182. package/src/logger.native.ts +0 -11
  183. package/src/logger.ts +0 -9
@@ -1,205 +1,177 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var logger = require('./logger');
6
3
  var notifyManager = require('./notifyManager.js');
7
4
  var removable = require('./removable.js');
8
5
  var retryer = require('./retryer.js');
9
6
 
7
+ // TYPES
8
+
10
9
  // CLASS
10
+
11
11
  class Mutation extends removable.Removable {
12
+ #observers;
13
+ #mutationCache;
14
+ #retryer;
12
15
  constructor(config) {
13
16
  super();
14
- this.options = { ...config.defaultOptions,
15
- ...config.options
16
- };
17
+ this.options = config.options;
17
18
  this.mutationId = config.mutationId;
18
- this.mutationCache = config.mutationCache;
19
- this.logger = config.logger || logger.defaultLogger;
20
- this.observers = [];
19
+ this.#mutationCache = config.mutationCache;
20
+ this.#observers = [];
21
21
  this.state = config.state || getDefaultState();
22
- this.updateCacheTime(this.options.cacheTime);
22
+ this.updateGcTime(this.options.gcTime);
23
23
  this.scheduleGc();
24
24
  }
25
-
26
25
  get meta() {
27
26
  return this.options.meta;
28
27
  }
29
-
30
- setState(state) {
31
- this.dispatch({
32
- type: 'setState',
33
- state
34
- });
35
- }
36
-
37
28
  addObserver(observer) {
38
- if (this.observers.indexOf(observer) === -1) {
39
- this.observers.push(observer); // Stop the mutation from being garbage collected
29
+ if (this.#observers.indexOf(observer) === -1) {
30
+ this.#observers.push(observer);
40
31
 
32
+ // Stop the mutation from being garbage collected
41
33
  this.clearGcTimeout();
42
- this.mutationCache.notify({
34
+ this.#mutationCache.notify({
43
35
  type: 'observerAdded',
44
36
  mutation: this,
45
37
  observer
46
38
  });
47
39
  }
48
40
  }
49
-
50
41
  removeObserver(observer) {
51
- this.observers = this.observers.filter(x => x !== observer);
42
+ this.#observers = this.#observers.filter(x => x !== observer);
52
43
  this.scheduleGc();
53
- this.mutationCache.notify({
44
+ this.#mutationCache.notify({
54
45
  type: 'observerRemoved',
55
46
  mutation: this,
56
47
  observer
57
48
  });
58
49
  }
59
-
60
50
  optionalRemove() {
61
- if (!this.observers.length) {
62
- if (this.state.status === 'loading') {
51
+ if (!this.#observers.length) {
52
+ if (this.state.status === 'pending') {
63
53
  this.scheduleGc();
64
54
  } else {
65
- this.mutationCache.remove(this);
55
+ this.#mutationCache.remove(this);
66
56
  }
67
57
  }
68
58
  }
69
-
70
59
  continue() {
71
- var _this$retryer$continu, _this$retryer;
72
-
73
- return (_this$retryer$continu = (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.continue()) != null ? _this$retryer$continu : this.execute();
60
+ return this.#retryer?.continue() ??
61
+ // continuing a mutation assumes that variables are set, mutation must have been dehydrated before
62
+ this.execute(this.state.variables);
74
63
  }
75
-
76
- async execute() {
64
+ async execute(variables) {
77
65
  const executeMutation = () => {
78
- var _this$options$retry;
79
-
80
- this.retryer = retryer.createRetryer({
66
+ this.#retryer = retryer.createRetryer({
81
67
  fn: () => {
82
68
  if (!this.options.mutationFn) {
83
- return Promise.reject('No mutationFn found');
69
+ return Promise.reject(new Error('No mutationFn found'));
84
70
  }
85
-
86
- return this.options.mutationFn(this.state.variables);
71
+ return this.options.mutationFn(variables);
87
72
  },
88
73
  onFail: (failureCount, error) => {
89
- this.dispatch({
74
+ this.#dispatch({
90
75
  type: 'failed',
91
76
  failureCount,
92
77
  error
93
78
  });
94
79
  },
95
80
  onPause: () => {
96
- this.dispatch({
81
+ this.#dispatch({
97
82
  type: 'pause'
98
83
  });
99
84
  },
100
85
  onContinue: () => {
101
- this.dispatch({
86
+ this.#dispatch({
102
87
  type: 'continue'
103
88
  });
104
89
  },
105
- retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,
90
+ retry: this.options.retry ?? 0,
106
91
  retryDelay: this.options.retryDelay,
107
92
  networkMode: this.options.networkMode
108
93
  });
109
- return this.retryer.promise;
94
+ return this.#retryer.promise;
110
95
  };
111
-
112
- const restored = this.state.status === 'loading';
113
-
96
+ const restored = this.state.status === 'pending';
114
97
  try {
115
- var _this$mutationCache$c3, _this$mutationCache$c4, _this$options$onSucce, _this$options2, _this$options$onSettl, _this$options3;
116
-
117
98
  if (!restored) {
118
- var _this$mutationCache$c, _this$mutationCache$c2, _this$options$onMutat, _this$options;
119
-
120
- this.dispatch({
121
- type: 'loading',
122
- variables: this.options.variables
123
- }); // Notify cache callback
124
-
125
- await ((_this$mutationCache$c = (_this$mutationCache$c2 = this.mutationCache.config).onMutate) == null ? void 0 : _this$mutationCache$c.call(_this$mutationCache$c2, this.state.variables, this));
126
- const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, this.state.variables));
127
-
99
+ this.#dispatch({
100
+ type: 'pending',
101
+ variables
102
+ });
103
+ // Notify cache callback
104
+ await this.#mutationCache.config.onMutate?.(variables, this);
105
+ const context = await this.options.onMutate?.(variables);
128
106
  if (context !== this.state.context) {
129
- this.dispatch({
130
- type: 'loading',
107
+ this.#dispatch({
108
+ type: 'pending',
131
109
  context,
132
- variables: this.state.variables
110
+ variables
133
111
  });
134
112
  }
135
113
  }
114
+ const data = await executeMutation();
136
115
 
137
- const data = await executeMutation(); // Notify cache callback
138
-
139
- await ((_this$mutationCache$c3 = (_this$mutationCache$c4 = this.mutationCache.config).onSuccess) == null ? void 0 : _this$mutationCache$c3.call(_this$mutationCache$c4, data, this.state.variables, this.state.context, this));
140
- await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, this.state.variables, this.state.context));
141
- await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, this.state.variables, this.state.context));
142
- this.dispatch({
116
+ // Notify cache callback
117
+ await this.#mutationCache.config.onSuccess?.(data, variables, this.state.context, this);
118
+ await this.options.onSuccess?.(data, variables, this.state.context);
119
+ await this.options.onSettled?.(data, null, variables, this.state.context);
120
+ this.#dispatch({
143
121
  type: 'success',
144
122
  data
145
123
  });
146
124
  return data;
147
125
  } catch (error) {
148
126
  try {
149
- var _this$mutationCache$c5, _this$mutationCache$c6, _this$options$onError, _this$options4, _this$options$onSettl2, _this$options5;
150
-
151
127
  // Notify cache callback
152
- await ((_this$mutationCache$c5 = (_this$mutationCache$c6 = this.mutationCache.config).onError) == null ? void 0 : _this$mutationCache$c5.call(_this$mutationCache$c6, error, this.state.variables, this.state.context, this));
153
-
154
- if (process.env.NODE_ENV !== 'production') {
155
- this.logger.error(error);
156
- }
157
-
158
- await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error, this.state.variables, this.state.context));
159
- await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, undefined, error, this.state.variables, this.state.context));
128
+ await this.#mutationCache.config.onError?.(error, variables, this.state.context, this);
129
+ await this.options.onError?.(error, variables, this.state.context);
130
+ await this.options.onSettled?.(undefined, error, variables, this.state.context);
160
131
  throw error;
161
132
  } finally {
162
- this.dispatch({
133
+ this.#dispatch({
163
134
  type: 'error',
164
135
  error: error
165
136
  });
166
137
  }
167
138
  }
168
139
  }
169
-
170
- dispatch(action) {
140
+ #dispatch(action) {
171
141
  const reducer = state => {
172
142
  switch (action.type) {
173
143
  case 'failed':
174
- return { ...state,
144
+ return {
145
+ ...state,
175
146
  failureCount: action.failureCount,
176
147
  failureReason: action.error
177
148
  };
178
-
179
149
  case 'pause':
180
- return { ...state,
150
+ return {
151
+ ...state,
181
152
  isPaused: true
182
153
  };
183
-
184
154
  case 'continue':
185
- return { ...state,
155
+ return {
156
+ ...state,
186
157
  isPaused: false
187
158
  };
188
-
189
- case 'loading':
190
- return { ...state,
159
+ case 'pending':
160
+ return {
161
+ ...state,
191
162
  context: action.context,
192
163
  data: undefined,
193
164
  failureCount: 0,
194
165
  failureReason: null,
195
166
  error: null,
196
167
  isPaused: !retryer.canFetch(this.options.networkMode),
197
- status: 'loading',
198
- variables: action.variables
168
+ status: 'pending',
169
+ variables: action.variables,
170
+ submittedAt: Date.now()
199
171
  };
200
-
201
172
  case 'success':
202
- return { ...state,
173
+ return {
174
+ ...state,
203
175
  data: action.data,
204
176
  failureCount: 0,
205
177
  failureReason: null,
@@ -207,9 +179,9 @@ class Mutation extends removable.Removable {
207
179
  status: 'success',
208
180
  isPaused: false
209
181
  };
210
-
211
182
  case 'error':
212
- return { ...state,
183
+ return {
184
+ ...state,
213
185
  data: undefined,
214
186
  error: action.error,
215
187
  failureCount: state.failureCount + 1,
@@ -217,27 +189,20 @@ class Mutation extends removable.Removable {
217
189
  isPaused: false,
218
190
  status: 'error'
219
191
  };
220
-
221
- case 'setState':
222
- return { ...state,
223
- ...action.state
224
- };
225
192
  }
226
193
  };
227
-
228
194
  this.state = reducer(this.state);
229
195
  notifyManager.notifyManager.batch(() => {
230
- this.observers.forEach(observer => {
196
+ this.#observers.forEach(observer => {
231
197
  observer.onMutationUpdate(action);
232
198
  });
233
- this.mutationCache.notify({
199
+ this.#mutationCache.notify({
234
200
  mutation: this,
235
201
  type: 'updated',
236
202
  action
237
203
  });
238
204
  });
239
205
  }
240
-
241
206
  }
242
207
  function getDefaultState() {
243
208
  return {
@@ -248,7 +213,8 @@ function getDefaultState() {
248
213
  failureReason: null,
249
214
  isPaused: false,
250
215
  status: 'idle',
251
- variables: undefined
216
+ variables: undefined,
217
+ submittedAt: 0
252
218
  };
253
219
  }
254
220
 
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.js","sources":["../../src/mutation.ts"],"sourcesContent":["import type { MutationOptions, MutationStatus, MutationMeta } from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport type { Logger } from './logger'\nimport { defaultLogger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport type { Retryer } from './retryer'\nimport { canFetch, createRetryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig<TData, TError, TVariables, TContext> {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions<TData, TError, TVariables, TContext>\n logger?: Logger\n defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>\n state?: MutationState<TData, TError, TVariables, TContext>\n meta?: MutationMeta\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n failureReason: TError | null\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError | null\n}\n\ninterface LoadingAction<TVariables, TContext> {\n type: 'loading'\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction<TData> {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError, TVariables, TContext> {\n type: 'setState'\n state: MutationState<TData, TError, TVariables, TContext>\n}\n\nexport type Action<TData, TError, TVariables, TContext> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | LoadingAction<TVariables, TContext>\n | PauseAction\n | SetStateAction<TData, TError, TVariables, TContext>\n | SuccessAction<TData>\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options: MutationOptions<TData, TError, TVariables, TContext>\n mutationId: number\n\n private observers: MutationObserver<TData, TError, TVariables, TContext>[]\n private mutationCache: MutationCache\n private logger: Logger\n private retryer?: Retryer<TData>\n\n constructor(config: MutationConfig<TData, TError, TVariables, TContext>) {\n super()\n\n this.options = {\n ...config.defaultOptions,\n ...config.options,\n }\n this.mutationId = config.mutationId\n this.mutationCache = config.mutationCache\n this.logger = config.logger || defaultLogger\n this.observers = []\n this.state = config.state || getDefaultState()\n\n this.updateCacheTime(this.options.cacheTime)\n this.scheduleGc()\n }\n\n get meta(): MutationMeta | undefined {\n return this.options.meta\n }\n\n setState(state: MutationState<TData, TError, TVariables, TContext>): void {\n this.dispatch({ type: 'setState', state })\n }\n\n addObserver(observer: MutationObserver<any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver<any, any, any, any>): void {\n this.observers = this.observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc()\n } else {\n this.mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise<unknown> {\n return this.retryer?.continue() ?? this.execute()\n }\n\n async execute(): Promise<TData> {\n const executeMutation = () => {\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found')\n }\n return this.options.mutationFn(this.state.variables!)\n },\n onFail: (failureCount, error) => {\n this.dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n })\n\n return this.retryer.promise\n }\n\n const restored = this.state.status === 'loading'\n try {\n if (!restored) {\n this.dispatch({ type: 'loading', variables: this.options.variables! })\n // Notify cache callback\n await this.mutationCache.config.onMutate?.(\n this.state.variables,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n const context = await this.options.onMutate?.(this.state.variables!)\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables,\n })\n }\n }\n const data = await executeMutation()\n\n // Notify cache callback\n await this.mutationCache.config.onSuccess?.(\n data,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSuccess?.(\n data,\n this.state.variables!,\n this.state.context!,\n )\n\n await this.options.onSettled?.(\n data,\n null,\n this.state.variables!,\n this.state.context,\n )\n\n this.dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n await this.mutationCache.config.onError?.(\n error,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n\n await this.options.onError?.(\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n throw error\n } finally {\n this.dispatch({ type: 'error', error: error as TError })\n }\n }\n }\n\n private dispatch(action: Action<TData, TError, TVariables, TContext>): void {\n const reducer = (\n state: MutationState<TData, TError, TVariables, TContext>,\n ): MutationState<TData, TError, TVariables, TContext> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'loading':\n return {\n ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error',\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState<TData, TError, TVariables, TContext> {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n }\n}\n"],"names":["Mutation","Removable","constructor","config","options","defaultOptions","mutationId","mutationCache","logger","defaultLogger","observers","state","getDefaultState","updateCacheTime","cacheTime","scheduleGc","meta","setState","dispatch","type","addObserver","observer","indexOf","push","clearGcTimeout","notify","mutation","removeObserver","filter","x","optionalRemove","length","status","remove","continue","retryer","execute","executeMutation","createRetryer","fn","mutationFn","Promise","reject","variables","onFail","failureCount","error","onPause","onContinue","retry","retryDelay","networkMode","promise","restored","onMutate","context","data","onSuccess","onSettled","onError","process","env","NODE_ENV","undefined","action","reducer","failureReason","isPaused","canFetch","notifyManager","batch","forEach","onMutationUpdate"],"mappings":"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"}
1
+ {"version":3,"file":"mutation.js","sources":["../../src/mutation.ts"],"sourcesContent":["import type {\n MutationOptions,\n MutationStatus,\n MutationMeta,\n RegisteredError,\n} from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport type { Retryer } from './retryer'\nimport { canFetch, createRetryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig<TData, TError, TVariables, TContext> {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions<TData, TError, TVariables, TContext>\n defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>\n state?: MutationState<TData, TError, TVariables, TContext>\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = RegisteredError,\n TVariables = void,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n failureReason: TError | null\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n submittedAt: number\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError | null\n}\n\ninterface PendingAction<TVariables, TContext> {\n type: 'pending'\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction<TData> {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\nexport type Action<TData, TError, TVariables, TContext> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | PendingAction<TVariables, TContext>\n | PauseAction\n | SuccessAction<TData>\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = RegisteredError,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n readonly options: MutationOptions<TData, TError, TVariables, TContext>\n readonly mutationId: number\n\n #observers: MutationObserver<TData, TError, TVariables, TContext>[]\n #mutationCache: MutationCache\n #retryer?: Retryer<TData>\n\n constructor(config: MutationConfig<TData, TError, TVariables, TContext>) {\n super()\n\n this.options = config.options\n this.mutationId = config.mutationId\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.updateGcTime(this.options.gcTime)\n this.scheduleGc()\n }\n\n get meta(): MutationMeta | undefined {\n return this.options.meta\n }\n\n addObserver(observer: MutationObserver<any, any, any, any>): void {\n if (this.#observers.indexOf(observer) === -1) {\n this.#observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.#mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver<any, any, any, any>): void {\n this.#observers = this.#observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.#mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === 'pending') {\n this.scheduleGc()\n } else {\n this.#mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise<unknown> {\n return (\n this.#retryer?.continue() ??\n // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables!)\n )\n }\n\n async execute(variables: TVariables): Promise<TData> {\n const executeMutation = () => {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error('No mutationFn found'))\n }\n return this.options.mutationFn(variables)\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n })\n\n return this.#retryer.promise\n }\n\n const restored = this.state.status === 'pending'\n\n try {\n if (!restored) {\n this.#dispatch({ type: 'pending', variables })\n // Notify cache callback\n await this.#mutationCache.config.onMutate?.(\n variables,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n const context = await this.options.onMutate?.(variables)\n if (context !== this.state.context) {\n this.#dispatch({\n type: 'pending',\n context,\n variables,\n })\n }\n }\n const data = await executeMutation()\n\n // Notify cache callback\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSuccess?.(data, variables, this.state.context!)\n\n await this.options.onSettled?.(data, null, variables, this.state.context)\n\n this.#dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onError?.(\n error as TError,\n variables,\n this.state.context,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n variables,\n this.state.context,\n )\n throw error\n } finally {\n this.#dispatch({ type: 'error', error: error as TError })\n }\n }\n }\n\n #dispatch(action: Action<TData, TError, TVariables, TContext>): void {\n const reducer = (\n state: MutationState<TData, TError, TVariables, TContext>,\n ): MutationState<TData, TError, TVariables, TContext> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'pending':\n return {\n ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'pending',\n variables: action.variables,\n submittedAt: Date.now(),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error',\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.#mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState<TData, TError, TVariables, TContext> {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n submittedAt: 0,\n }\n}\n"],"names":["Mutation","Removable","constructor","config","options","mutationId","mutationCache","state","getDefaultState","updateGcTime","gcTime","scheduleGc","meta","addObserver","observer","indexOf","push","clearGcTimeout","notify","type","mutation","removeObserver","filter","x","optionalRemove","length","status","remove","continue","execute","variables","executeMutation","createRetryer","fn","mutationFn","Promise","reject","Error","onFail","failureCount","error","onPause","onContinue","retry","retryDelay","networkMode","promise","restored","onMutate","context","data","onSuccess","onSettled","onError","undefined","action","reducer","failureReason","isPaused","canFetch","submittedAt","Date","now","notifyManager","batch","forEach","onMutationUpdate"],"mappings":"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"}