@tanstack/query-core 5.0.0-alpha.49 → 5.0.0-alpha.50

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 (39) hide show
  1. package/build/lib/focusManager.js +15 -31
  2. package/build/lib/focusManager.js.map +1 -1
  3. package/build/lib/hydration.js +4 -7
  4. package/build/lib/hydration.js.map +1 -1
  5. package/build/lib/infiniteQueryBehavior.js +4 -5
  6. package/build/lib/infiniteQueryBehavior.js.map +1 -1
  7. package/build/lib/infiniteQueryObserver.js +2 -3
  8. package/build/lib/infiniteQueryObserver.js.map +1 -1
  9. package/build/lib/mutation.js +102 -127
  10. package/build/lib/mutation.js.map +1 -1
  11. package/build/lib/mutationCache.js +17 -30
  12. package/build/lib/mutationCache.js.map +1 -1
  13. package/build/lib/mutationObserver.js +51 -81
  14. package/build/lib/mutationObserver.js.map +1 -1
  15. package/build/lib/onlineManager.js +14 -29
  16. package/build/lib/onlineManager.js.map +1 -1
  17. package/build/lib/queriesObserver.js +79 -125
  18. package/build/lib/queriesObserver.js.map +1 -1
  19. package/build/lib/query.js +161 -210
  20. package/build/lib/query.js.map +1 -1
  21. package/build/lib/queryCache.js +10 -15
  22. package/build/lib/queryCache.js.map +1 -1
  23. package/build/lib/queryClient.js +61 -98
  24. package/build/lib/queryClient.js.map +1 -1
  25. package/build/lib/queryObserver.js +197 -297
  26. package/build/lib/queryObserver.js.map +1 -1
  27. package/build/lib/removable.js +6 -13
  28. package/build/lib/removable.js.map +1 -1
  29. package/build/lib/retryer.js +14 -15
  30. package/build/lib/retryer.js.map +1 -1
  31. package/build/lib/utils.js +1 -1
  32. package/build/lib/utils.js.map +1 -1
  33. package/package.json +1 -2
  34. package/build/lib/_virtual/_rollupPluginBabelHelpers.js +0 -16
  35. package/build/lib/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  36. package/build/umd/index.development.js +0 -2691
  37. package/build/umd/index.development.js.map +0 -1
  38. package/build/umd/index.production.js +0 -2
  39. package/build/umd/index.production.js.map +0 -1
@@ -1,51 +1,31 @@
1
1
  'use strict';
2
2
 
3
- var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
4
3
  var notifyManager = require('./notifyManager.js');
5
4
  var removable = require('./removable.js');
6
5
  var retryer = require('./retryer.js');
7
6
 
8
7
  // TYPES
9
- var _observers = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("observers");
10
- var _defaultOptions = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("defaultOptions");
11
- var _mutationCache = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("mutationCache");
12
- var _retryer = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("retryer");
13
- var _dispatch = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("dispatch");
8
+
14
9
  // CLASS
15
10
 
16
11
  class Mutation extends removable.Removable {
12
+ #observers;
13
+ #defaultOptions;
14
+ #mutationCache;
15
+ #retryer;
17
16
  constructor(config) {
18
17
  super();
19
- Object.defineProperty(this, _dispatch, {
20
- value: _dispatch2
21
- });
22
- Object.defineProperty(this, _observers, {
23
- writable: true,
24
- value: void 0
25
- });
26
- Object.defineProperty(this, _defaultOptions, {
27
- writable: true,
28
- value: void 0
29
- });
30
- Object.defineProperty(this, _mutationCache, {
31
- writable: true,
32
- value: void 0
33
- });
34
- Object.defineProperty(this, _retryer, {
35
- writable: true,
36
- value: void 0
37
- });
38
18
  this.mutationId = config.mutationId;
39
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _defaultOptions)[_defaultOptions] = config.defaultOptions;
40
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache] = config.mutationCache;
41
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers] = [];
19
+ this.#defaultOptions = config.defaultOptions;
20
+ this.#mutationCache = config.mutationCache;
21
+ this.#observers = [];
42
22
  this.state = config.state || getDefaultState();
43
23
  this.setOptions(config.options);
44
24
  this.scheduleGc();
45
25
  }
46
26
  setOptions(options) {
47
27
  this.options = {
48
- ..._rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _defaultOptions)[_defaultOptions],
28
+ ...this.#defaultOptions,
49
29
  ...options
50
30
  };
51
31
  this.updateGcTime(this.options.gcTime);
@@ -54,12 +34,12 @@ class Mutation extends removable.Removable {
54
34
  return this.options.meta;
55
35
  }
56
36
  addObserver(observer) {
57
- if (_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers].indexOf(observer) === -1) {
58
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers].push(observer);
37
+ if (this.#observers.indexOf(observer) === -1) {
38
+ this.#observers.push(observer);
59
39
 
60
40
  // Stop the mutation from being garbage collected
61
41
  this.clearGcTimeout();
62
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].notify({
42
+ this.#mutationCache.notify({
63
43
  type: 'observerAdded',
64
44
  mutation: this,
65
45
  observer
@@ -67,33 +47,31 @@ class Mutation extends removable.Removable {
67
47
  }
68
48
  }
69
49
  removeObserver(observer) {
70
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers] = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers].filter(x => x !== observer);
50
+ this.#observers = this.#observers.filter(x => x !== observer);
71
51
  this.scheduleGc();
72
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].notify({
52
+ this.#mutationCache.notify({
73
53
  type: 'observerRemoved',
74
54
  mutation: this,
75
55
  observer
76
56
  });
77
57
  }
78
58
  optionalRemove() {
79
- if (!_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers].length) {
59
+ if (!this.#observers.length) {
80
60
  if (this.state.status === 'pending') {
81
61
  this.scheduleGc();
82
62
  } else {
83
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].remove(this);
63
+ this.#mutationCache.remove(this);
84
64
  }
85
65
  }
86
66
  }
87
67
  continue() {
88
- var _classPrivateFieldLoo, _classPrivateFieldLoo2;
89
- return (_classPrivateFieldLoo = (_classPrivateFieldLoo2 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _retryer)[_retryer]) == null ? void 0 : _classPrivateFieldLoo2.continue()) != null ? _classPrivateFieldLoo :
68
+ return this.#retryer?.continue() ??
90
69
  // continuing a mutation assumes that variables are set, mutation must have been dehydrated before
91
70
  this.execute(this.state.variables);
92
71
  }
93
72
  async execute(variables) {
94
73
  const executeMutation = () => {
95
- var _this$options$retry;
96
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _retryer)[_retryer] = retryer.createRetryer({
74
+ this.#retryer = retryer.createRetryer({
97
75
  fn: () => {
98
76
  if (!this.options.mutationFn) {
99
77
  return Promise.reject(new Error('No mutationFn found'));
@@ -101,42 +79,40 @@ class Mutation extends removable.Removable {
101
79
  return this.options.mutationFn(variables);
102
80
  },
103
81
  onFail: (failureCount, error) => {
104
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
82
+ this.#dispatch({
105
83
  type: 'failed',
106
84
  failureCount,
107
85
  error
108
86
  });
109
87
  },
110
88
  onPause: () => {
111
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
89
+ this.#dispatch({
112
90
  type: 'pause'
113
91
  });
114
92
  },
115
93
  onContinue: () => {
116
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
94
+ this.#dispatch({
117
95
  type: 'continue'
118
96
  });
119
97
  },
120
- retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,
98
+ retry: this.options.retry ?? 0,
121
99
  retryDelay: this.options.retryDelay,
122
100
  networkMode: this.options.networkMode
123
101
  });
124
- return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _retryer)[_retryer].promise;
102
+ return this.#retryer.promise;
125
103
  };
126
104
  const restored = this.state.status === 'pending';
127
105
  try {
128
- var _classPrivateFieldLoo5, _classPrivateFieldLoo6, _this$options$onSucce, _this$options2, _classPrivateFieldLoo7, _classPrivateFieldLoo8, _this$options$onSettl, _this$options3;
129
106
  if (!restored) {
130
- var _classPrivateFieldLoo3, _classPrivateFieldLoo4, _this$options$onMutat, _this$options;
131
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
107
+ this.#dispatch({
132
108
  type: 'pending',
133
109
  variables
134
110
  });
135
111
  // Notify cache callback
136
- await ((_classPrivateFieldLoo3 = (_classPrivateFieldLoo4 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].config).onMutate) == null ? void 0 : _classPrivateFieldLoo3.call(_classPrivateFieldLoo4, variables, this));
137
- const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, variables));
112
+ await this.#mutationCache.config.onMutate?.(variables, this);
113
+ const context = await this.options.onMutate?.(variables);
138
114
  if (context !== this.state.context) {
139
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
115
+ this.#dispatch({
140
116
  type: 'pending',
141
117
  context,
142
118
  variables
@@ -146,102 +122,101 @@ class Mutation extends removable.Removable {
146
122
  const data = await executeMutation();
147
123
 
148
124
  // Notify cache callback
149
- await ((_classPrivateFieldLoo5 = (_classPrivateFieldLoo6 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].config).onSuccess) == null ? void 0 : _classPrivateFieldLoo5.call(_classPrivateFieldLoo6, data, variables, this.state.context, this));
150
- await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, variables, this.state.context));
125
+ await this.#mutationCache.config.onSuccess?.(data, variables, this.state.context, this);
126
+ await this.options.onSuccess?.(data, variables, this.state.context);
151
127
 
152
128
  // Notify cache callback
153
- await ((_classPrivateFieldLoo7 = (_classPrivateFieldLoo8 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].config).onSettled) == null ? void 0 : _classPrivateFieldLoo7.call(_classPrivateFieldLoo8, data, null, this.state.variables, this.state.context, this));
154
- await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, variables, this.state.context));
155
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
129
+ await this.#mutationCache.config.onSettled?.(data, null, this.state.variables, this.state.context, this);
130
+ await this.options.onSettled?.(data, null, variables, this.state.context);
131
+ this.#dispatch({
156
132
  type: 'success',
157
133
  data
158
134
  });
159
135
  return data;
160
136
  } catch (error) {
161
137
  try {
162
- var _classPrivateFieldLoo9, _classPrivateFieldLoo10, _this$options$onError, _this$options4, _classPrivateFieldLoo11, _classPrivateFieldLoo12, _this$options$onSettl2, _this$options5;
163
138
  // Notify cache callback
164
- await ((_classPrivateFieldLoo9 = (_classPrivateFieldLoo10 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].config).onError) == null ? void 0 : _classPrivateFieldLoo9.call(_classPrivateFieldLoo10, error, variables, this.state.context, this));
165
- await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error, variables, this.state.context));
139
+ await this.#mutationCache.config.onError?.(error, variables, this.state.context, this);
140
+ await this.options.onError?.(error, variables, this.state.context);
166
141
 
167
142
  // Notify cache callback
168
- await ((_classPrivateFieldLoo11 = (_classPrivateFieldLoo12 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].config).onSettled) == null ? void 0 : _classPrivateFieldLoo11.call(_classPrivateFieldLoo12, undefined, error, this.state.variables, this.state.context, this));
169
- await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, undefined, error, variables, this.state.context));
143
+ await this.#mutationCache.config.onSettled?.(undefined, error, this.state.variables, this.state.context, this);
144
+ await this.options.onSettled?.(undefined, error, variables, this.state.context);
170
145
  throw error;
171
146
  } finally {
172
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _dispatch)[_dispatch]({
147
+ this.#dispatch({
173
148
  type: 'error',
174
149
  error: error
175
150
  });
176
151
  }
177
152
  }
178
153
  }
179
- }
180
- function _dispatch2(action) {
181
- const reducer = state => {
182
- switch (action.type) {
183
- case 'failed':
184
- return {
185
- ...state,
186
- failureCount: action.failureCount,
187
- failureReason: action.error
188
- };
189
- case 'pause':
190
- return {
191
- ...state,
192
- isPaused: true
193
- };
194
- case 'continue':
195
- return {
196
- ...state,
197
- isPaused: false
198
- };
199
- case 'pending':
200
- return {
201
- ...state,
202
- context: action.context,
203
- data: undefined,
204
- failureCount: 0,
205
- failureReason: null,
206
- error: null,
207
- isPaused: !retryer.canFetch(this.options.networkMode),
208
- status: 'pending',
209
- variables: action.variables,
210
- submittedAt: Date.now()
211
- };
212
- case 'success':
213
- return {
214
- ...state,
215
- data: action.data,
216
- failureCount: 0,
217
- failureReason: null,
218
- error: null,
219
- status: 'success',
220
- isPaused: false
221
- };
222
- case 'error':
223
- return {
224
- ...state,
225
- data: undefined,
226
- error: action.error,
227
- failureCount: state.failureCount + 1,
228
- failureReason: action.error,
229
- isPaused: false,
230
- status: 'error'
231
- };
232
- }
233
- };
234
- this.state = reducer(this.state);
235
- notifyManager.notifyManager.batch(() => {
236
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _observers)[_observers].forEach(observer => {
237
- observer.onMutationUpdate(action);
238
- });
239
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache].notify({
240
- mutation: this,
241
- type: 'updated',
242
- action
154
+ #dispatch(action) {
155
+ const reducer = state => {
156
+ switch (action.type) {
157
+ case 'failed':
158
+ return {
159
+ ...state,
160
+ failureCount: action.failureCount,
161
+ failureReason: action.error
162
+ };
163
+ case 'pause':
164
+ return {
165
+ ...state,
166
+ isPaused: true
167
+ };
168
+ case 'continue':
169
+ return {
170
+ ...state,
171
+ isPaused: false
172
+ };
173
+ case 'pending':
174
+ return {
175
+ ...state,
176
+ context: action.context,
177
+ data: undefined,
178
+ failureCount: 0,
179
+ failureReason: null,
180
+ error: null,
181
+ isPaused: !retryer.canFetch(this.options.networkMode),
182
+ status: 'pending',
183
+ variables: action.variables,
184
+ submittedAt: Date.now()
185
+ };
186
+ case 'success':
187
+ return {
188
+ ...state,
189
+ data: action.data,
190
+ failureCount: 0,
191
+ failureReason: null,
192
+ error: null,
193
+ status: 'success',
194
+ isPaused: false
195
+ };
196
+ case 'error':
197
+ return {
198
+ ...state,
199
+ data: undefined,
200
+ error: action.error,
201
+ failureCount: state.failureCount + 1,
202
+ failureReason: action.error,
203
+ isPaused: false,
204
+ status: 'error'
205
+ };
206
+ }
207
+ };
208
+ this.state = reducer(this.state);
209
+ notifyManager.notifyManager.batch(() => {
210
+ this.#observers.forEach(observer => {
211
+ observer.onMutationUpdate(action);
212
+ });
213
+ this.#mutationCache.notify({
214
+ mutation: this,
215
+ type: 'updated',
216
+ action
217
+ });
243
218
  });
244
- });
219
+ }
245
220
  }
246
221
  function getDefaultState() {
247
222
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.js","sources":["../../src/mutation.ts"],"sourcesContent":["import type {\n MutationOptions,\n MutationStatus,\n MutationMeta,\n DefaultError,\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 = DefaultError,\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 = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options!: MutationOptions<TData, TError, TVariables, TContext>\n readonly mutationId: number\n\n #observers: MutationObserver<TData, TError, TVariables, TContext>[]\n #defaultOptions?: MutationOptions<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.mutationId = config.mutationId\n this.#defaultOptions = config.defaultOptions\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.setOptions(config.options)\n this.scheduleGc()\n }\n\n setOptions(\n options?: MutationOptions<TData, TError, TVariables, TContext>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\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 // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\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 as any,\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 // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n undefined,\n error as any,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\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":["_observers","_classPrivateFieldLooseKey","_defaultOptions","_mutationCache","_retryer","_dispatch","Mutation","Removable","constructor","config","Object","defineProperty","value","_dispatch2","writable","mutationId","_classPrivateFieldLooseBase","defaultOptions","mutationCache","state","getDefaultState","setOptions","options","scheduleGc","updateGcTime","gcTime","meta","addObserver","observer","indexOf","push","clearGcTimeout","notify","type","mutation","removeObserver","filter","x","optionalRemove","length","status","remove","continue","_classPrivateFieldLoo","_classPrivateFieldLoo2","execute","variables","executeMutation","_this$options$retry","createRetryer","fn","mutationFn","Promise","reject","Error","onFail","failureCount","error","onPause","onContinue","retry","retryDelay","networkMode","promise","restored","_classPrivateFieldLoo5","_classPrivateFieldLoo6","_this$options$onSucce","_this$options2","_classPrivateFieldLoo7","_classPrivateFieldLoo8","_this$options$onSettl","_this$options3","_classPrivateFieldLoo3","_classPrivateFieldLoo4","_this$options$onMutat","_this$options","onMutate","call","context","data","onSuccess","onSettled","_classPrivateFieldLoo9","_classPrivateFieldLoo10","_this$options$onError","_this$options4","_classPrivateFieldLoo11","_classPrivateFieldLoo12","_this$options$onSettl2","_this$options5","onError","undefined","action","reducer","failureReason","isPaused","canFetch","submittedAt","Date","now","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 DefaultError,\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 = DefaultError,\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 = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options!: MutationOptions<TData, TError, TVariables, TContext>\n readonly mutationId: number\n\n #observers: MutationObserver<TData, TError, TVariables, TContext>[]\n #defaultOptions?: MutationOptions<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.mutationId = config.mutationId\n this.#defaultOptions = config.defaultOptions\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.setOptions(config.options)\n this.scheduleGc()\n }\n\n setOptions(\n options?: MutationOptions<TData, TError, TVariables, TContext>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\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 // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\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 as any,\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 // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n undefined,\n error as any,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\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","mutationId","defaultOptions","mutationCache","state","getDefaultState","setOptions","options","scheduleGc","updateGcTime","gcTime","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","#dispatch","action","reducer","failureReason","isPaused","canFetch","submittedAt","Date","now","notifyManager","batch","forEach","onMutationUpdate"],"mappings":"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"}
@@ -1,40 +1,28 @@
1
1
  'use strict';
2
2
 
3
- var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
4
3
  var notifyManager = require('./notifyManager.js');
5
4
  var mutation = require('./mutation.js');
6
5
  var utils = require('./utils.js');
7
6
  var subscribable = require('./subscribable.js');
8
7
 
9
8
  // TYPES
10
- var _mutations = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("mutations");
11
- var _mutationId = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("mutationId");
12
- var _resuming = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("resuming");
9
+
13
10
  // CLASS
14
11
 
15
12
  class MutationCache extends subscribable.Subscribable {
13
+ #mutations;
14
+ #mutationId;
15
+ #resuming;
16
16
  constructor(config = {}) {
17
17
  super();
18
- Object.defineProperty(this, _mutations, {
19
- writable: true,
20
- value: void 0
21
- });
22
- Object.defineProperty(this, _mutationId, {
23
- writable: true,
24
- value: void 0
25
- });
26
- Object.defineProperty(this, _resuming, {
27
- writable: true,
28
- value: void 0
29
- });
30
18
  this.config = config;
31
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations] = [];
32
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationId)[_mutationId] = 0;
19
+ this.#mutations = [];
20
+ this.#mutationId = 0;
33
21
  }
34
22
  build(client, options, state) {
35
23
  const mutation$1 = new mutation.Mutation({
36
24
  mutationCache: this,
37
- mutationId: ++_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationId)[_mutationId],
25
+ mutationId: ++this.#mutationId,
38
26
  options: client.defaultMutationOptions(options),
39
27
  state
40
28
  });
@@ -42,14 +30,14 @@ class MutationCache extends subscribable.Subscribable {
42
30
  return mutation$1;
43
31
  }
44
32
  add(mutation) {
45
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations].push(mutation);
33
+ this.#mutations.push(mutation);
46
34
  this.notify({
47
35
  type: 'added',
48
36
  mutation
49
37
  });
50
38
  }
51
39
  remove(mutation) {
52
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations] = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations].filter(x => x !== mutation);
40
+ this.#mutations = this.#mutations.filter(x => x !== mutation);
53
41
  this.notify({
54
42
  type: 'removed',
55
43
  mutation
@@ -57,23 +45,23 @@ class MutationCache extends subscribable.Subscribable {
57
45
  }
58
46
  clear() {
59
47
  notifyManager.notifyManager.batch(() => {
60
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations].forEach(mutation => {
48
+ this.#mutations.forEach(mutation => {
61
49
  this.remove(mutation);
62
50
  });
63
51
  });
64
52
  }
65
53
  getAll() {
66
- return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations];
54
+ return this.#mutations;
67
55
  }
68
56
  find(filters) {
69
57
  const defaultedFilters = {
70
58
  exact: true,
71
59
  ...filters
72
60
  };
73
- return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations].find(mutation => utils.matchMutation(defaultedFilters, mutation));
61
+ return this.#mutations.find(mutation => utils.matchMutation(defaultedFilters, mutation));
74
62
  }
75
63
  findAll(filters = {}) {
76
- return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations].filter(mutation => utils.matchMutation(filters, mutation));
64
+ return this.#mutations.filter(mutation => utils.matchMutation(filters, mutation));
77
65
  }
78
66
  notify(event) {
79
67
  notifyManager.notifyManager.batch(() => {
@@ -83,14 +71,13 @@ class MutationCache extends subscribable.Subscribable {
83
71
  });
84
72
  }
85
73
  resumePausedMutations() {
86
- var _classPrivateFieldLoo;
87
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _resuming)[_resuming] = ((_classPrivateFieldLoo = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _resuming)[_resuming]) != null ? _classPrivateFieldLoo : Promise.resolve()).then(() => {
88
- const pausedMutations = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutations)[_mutations].filter(x => x.state.isPaused);
74
+ this.#resuming = (this.#resuming ?? Promise.resolve()).then(() => {
75
+ const pausedMutations = this.#mutations.filter(x => x.state.isPaused);
89
76
  return notifyManager.notifyManager.batch(() => pausedMutations.reduce((promise, mutation) => promise.then(() => mutation.continue().catch(utils.noop)), Promise.resolve()));
90
77
  }).then(() => {
91
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _resuming)[_resuming] = undefined;
78
+ this.#resuming = undefined;
92
79
  });
93
- return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _resuming)[_resuming];
80
+ return this.#resuming;
94
81
  }
95
82
  }
96
83
 
@@ -1 +1 @@
1
- {"version":3,"file":"mutationCache.js","sources":["../../src/mutationCache.ts"],"sourcesContent":["import type { MutationObserver } from './mutationObserver'\nimport type { NotifyEvent, MutationOptions, DefaultError } from './types'\nimport type { QueryClient } from './queryClient'\nimport { notifyManager } from './notifyManager'\nimport type { Action, MutationState } from './mutation'\nimport { Mutation } from './mutation'\nimport type { MutationFilters } from './utils'\nimport { matchMutation, noop } from './utils'\nimport { Subscribable } from './subscribable'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: DefaultError,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onMutate?: (\n variables: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n}\n\ninterface NotifyEventMutationAdded extends NotifyEvent {\n type: 'added'\n mutation: Mutation<any, any, any, any>\n}\ninterface NotifyEventMutationRemoved extends NotifyEvent {\n type: 'removed'\n mutation: Mutation<any, any, any, any>\n}\n\ninterface NotifyEventMutationObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n mutation?: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any, any>\n}\n\ninterface NotifyEventMutationUpdated extends NotifyEvent {\n type: 'updated'\n mutation: Mutation<any, any, any, any>\n action: Action<any, any, any, any>\n}\n\ntype MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable<MutationCacheListener> {\n #mutations: Mutation<any, any, any, any>[]\n #mutationId: number\n #resuming: Promise<unknown> | undefined\n\n constructor(public config: MutationCacheConfig = {}) {\n super()\n this.#mutations = []\n this.#mutationId = 0\n }\n\n build<TData, TError, TVariables, TContext>(\n client: QueryClient,\n options: MutationOptions<TData, TError, TVariables, TContext>,\n state?: MutationState<TData, TError, TVariables, TContext>,\n ): Mutation<TData, TError, TVariables, TContext> {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation<any, any, any, any>): void {\n this.#mutations.push(mutation)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation<any, any, any, any>): void {\n this.#mutations = this.#mutations.filter((x) => x !== mutation)\n this.notify({ type: 'removed', mutation })\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Mutation[] {\n return this.#mutations\n }\n\n find<\n TData = unknown,\n TError = DefaultError,\n TVariables = any,\n TContext = unknown,\n >(\n filters: MutationFilters,\n ): Mutation<TData, TError, TVariables, TContext> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.#mutations.find((mutation) =>\n matchMutation(defaultedFilters, mutation),\n )\n }\n\n findAll(filters: MutationFilters = {}): Mutation[] {\n return this.#mutations.filter((mutation) =>\n matchMutation(filters, mutation),\n )\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise<unknown> {\n this.#resuming = (this.#resuming ?? Promise.resolve())\n .then(() => {\n const pausedMutations = this.#mutations.filter((x) => x.state.isPaused)\n return notifyManager.batch(() =>\n pausedMutations.reduce(\n (promise, mutation) =>\n promise.then(() => mutation.continue().catch(noop)),\n Promise.resolve() as Promise<unknown>,\n ),\n )\n })\n .then(() => {\n this.#resuming = undefined\n })\n\n return this.#resuming\n }\n}\n"],"names":["_mutations","_classPrivateFieldLooseKey","_mutationId","_resuming","MutationCache","Subscribable","constructor","config","Object","defineProperty","writable","value","_classPrivateFieldLooseBase","build","client","options","state","mutation","Mutation","mutationCache","mutationId","defaultMutationOptions","add","push","notify","type","remove","filter","x","clear","notifyManager","batch","forEach","getAll","find","filters","defaultedFilters","exact","matchMutation","findAll","event","listeners","listener","resumePausedMutations","_classPrivateFieldLoo","Promise","resolve","then","pausedMutations","isPaused","reduce","promise","continue","catch","noop","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"mutationCache.js","sources":["../../src/mutationCache.ts"],"sourcesContent":["import type { MutationObserver } from './mutationObserver'\nimport type { NotifyEvent, MutationOptions, DefaultError } from './types'\nimport type { QueryClient } from './queryClient'\nimport { notifyManager } from './notifyManager'\nimport type { Action, MutationState } from './mutation'\nimport { Mutation } from './mutation'\nimport type { MutationFilters } from './utils'\nimport { matchMutation, noop } from './utils'\nimport { Subscribable } from './subscribable'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: DefaultError,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onMutate?: (\n variables: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n}\n\ninterface NotifyEventMutationAdded extends NotifyEvent {\n type: 'added'\n mutation: Mutation<any, any, any, any>\n}\ninterface NotifyEventMutationRemoved extends NotifyEvent {\n type: 'removed'\n mutation: Mutation<any, any, any, any>\n}\n\ninterface NotifyEventMutationObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n mutation?: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any, any>\n}\n\ninterface NotifyEventMutationUpdated extends NotifyEvent {\n type: 'updated'\n mutation: Mutation<any, any, any, any>\n action: Action<any, any, any, any>\n}\n\ntype MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable<MutationCacheListener> {\n #mutations: Mutation<any, any, any, any>[]\n #mutationId: number\n #resuming: Promise<unknown> | undefined\n\n constructor(public config: MutationCacheConfig = {}) {\n super()\n this.#mutations = []\n this.#mutationId = 0\n }\n\n build<TData, TError, TVariables, TContext>(\n client: QueryClient,\n options: MutationOptions<TData, TError, TVariables, TContext>,\n state?: MutationState<TData, TError, TVariables, TContext>,\n ): Mutation<TData, TError, TVariables, TContext> {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation<any, any, any, any>): void {\n this.#mutations.push(mutation)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation<any, any, any, any>): void {\n this.#mutations = this.#mutations.filter((x) => x !== mutation)\n this.notify({ type: 'removed', mutation })\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Mutation[] {\n return this.#mutations\n }\n\n find<\n TData = unknown,\n TError = DefaultError,\n TVariables = any,\n TContext = unknown,\n >(\n filters: MutationFilters,\n ): Mutation<TData, TError, TVariables, TContext> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.#mutations.find((mutation) =>\n matchMutation(defaultedFilters, mutation),\n )\n }\n\n findAll(filters: MutationFilters = {}): Mutation[] {\n return this.#mutations.filter((mutation) =>\n matchMutation(filters, mutation),\n )\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise<unknown> {\n this.#resuming = (this.#resuming ?? Promise.resolve())\n .then(() => {\n const pausedMutations = this.#mutations.filter((x) => x.state.isPaused)\n return notifyManager.batch(() =>\n pausedMutations.reduce(\n (promise, mutation) =>\n promise.then(() => mutation.continue().catch(noop)),\n Promise.resolve() as Promise<unknown>,\n ),\n )\n })\n .then(() => {\n this.#resuming = undefined\n })\n\n return this.#resuming\n }\n}\n"],"names":["MutationCache","Subscribable","constructor","config","build","client","options","state","mutation","Mutation","mutationCache","mutationId","defaultMutationOptions","add","push","notify","type","remove","filter","x","clear","notifyManager","batch","forEach","getAll","find","filters","defaultedFilters","exact","matchMutation","findAll","event","listeners","listener","resumePausedMutations","Promise","resolve","then","pausedMutations","isPaused","reduce","promise","continue","catch","noop","undefined"],"mappings":"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"}