@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,129 +1,98 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var mutation = require('./mutation.js');
6
4
  var notifyManager = require('./notifyManager.js');
7
5
  var subscribable = require('./subscribable.js');
8
6
  var utils = require('./utils.js');
9
7
 
8
+ // TYPES
9
+
10
10
  // CLASS
11
+
11
12
  class MutationObserver extends subscribable.Subscribable {
13
+ #client;
14
+ #currentResult = undefined;
15
+ #currentMutation;
16
+ #mutateOptions;
12
17
  constructor(client, options) {
13
18
  super();
14
- this.client = client;
19
+ this.#client = client;
15
20
  this.setOptions(options);
16
21
  this.bindMethods();
17
- this.updateResult();
22
+ this.#updateResult();
18
23
  }
19
-
20
24
  bindMethods() {
21
25
  this.mutate = this.mutate.bind(this);
22
26
  this.reset = this.reset.bind(this);
23
27
  }
24
-
25
28
  setOptions(options) {
26
29
  const prevOptions = this.options;
27
- this.options = this.client.defaultMutationOptions(options);
28
-
30
+ this.options = this.#client.defaultMutationOptions(options);
29
31
  if (!utils.shallowEqualObjects(prevOptions, this.options)) {
30
- this.client.getMutationCache().notify({
32
+ this.#client.getMutationCache().notify({
31
33
  type: 'observerOptionsUpdated',
32
- mutation: this.currentMutation,
34
+ mutation: this.#currentMutation,
33
35
  observer: this
34
36
  });
35
37
  }
36
38
  }
37
-
38
39
  onUnsubscribe() {
39
40
  if (!this.listeners.length) {
40
- var _this$currentMutation;
41
-
42
- (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);
41
+ this.#currentMutation?.removeObserver(this);
43
42
  }
44
43
  }
45
-
46
44
  onMutationUpdate(action) {
47
- this.updateResult(); // Determine which callbacks to trigger
48
-
49
- const notifyOptions = {
50
- listeners: true
51
- };
52
-
53
- if (action.type === 'success') {
54
- notifyOptions.onSuccess = true;
55
- } else if (action.type === 'error') {
56
- notifyOptions.onError = true;
57
- }
58
-
59
- this.notify(notifyOptions);
45
+ this.#updateResult();
46
+ this.#notify(action);
60
47
  }
61
-
62
48
  getCurrentResult() {
63
- return this.currentResult;
49
+ return this.#currentResult;
64
50
  }
65
-
66
51
  reset() {
67
- this.currentMutation = undefined;
68
- this.updateResult();
69
- this.notify({
70
- listeners: true
71
- });
52
+ this.#currentMutation = undefined;
53
+ this.#updateResult();
54
+ this.#notify();
72
55
  }
73
-
74
56
  mutate(variables, options) {
75
- this.mutateOptions = options;
76
-
77
- if (this.currentMutation) {
78
- this.currentMutation.removeObserver(this);
79
- }
80
-
81
- this.currentMutation = this.client.getMutationCache().build(this.client, { ...this.options,
82
- variables: typeof variables !== 'undefined' ? variables : this.options.variables
57
+ this.#mutateOptions = options;
58
+ this.#currentMutation?.removeObserver(this);
59
+ this.#currentMutation = this.#client.getMutationCache().build(this.#client, {
60
+ ...this.options
83
61
  });
84
- this.currentMutation.addObserver(this);
85
- return this.currentMutation.execute();
62
+ this.#currentMutation.addObserver(this);
63
+ return this.#currentMutation.execute(variables);
86
64
  }
87
-
88
- updateResult() {
89
- const state = this.currentMutation ? this.currentMutation.state : mutation.getDefaultState();
90
- const result = { ...state,
91
- isLoading: state.status === 'loading',
65
+ #updateResult() {
66
+ const state = this.#currentMutation?.state ?? mutation.getDefaultState();
67
+ this.#currentResult = {
68
+ ...state,
69
+ isPending: state.status === 'pending',
92
70
  isSuccess: state.status === 'success',
93
71
  isError: state.status === 'error',
94
72
  isIdle: state.status === 'idle',
95
73
  mutate: this.mutate,
96
74
  reset: this.reset
97
75
  };
98
- this.currentResult = result;
99
76
  }
100
-
101
- notify(options) {
77
+ #notify(action) {
102
78
  notifyManager.notifyManager.batch(() => {
103
79
  // First trigger the mutate callbacks
104
- if (this.mutateOptions && this.hasListeners()) {
105
- if (options.onSuccess) {
106
- var _this$mutateOptions$o, _this$mutateOptions, _this$mutateOptions$o2, _this$mutateOptions2;
107
-
108
- (_this$mutateOptions$o = (_this$mutateOptions = this.mutateOptions).onSuccess) == null ? void 0 : _this$mutateOptions$o.call(_this$mutateOptions, this.currentResult.data, this.currentResult.variables, this.currentResult.context);
109
- (_this$mutateOptions$o2 = (_this$mutateOptions2 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o2.call(_this$mutateOptions2, this.currentResult.data, null, this.currentResult.variables, this.currentResult.context);
110
- } else if (options.onError) {
111
- var _this$mutateOptions$o3, _this$mutateOptions3, _this$mutateOptions$o4, _this$mutateOptions4;
112
-
113
- (_this$mutateOptions$o3 = (_this$mutateOptions3 = this.mutateOptions).onError) == null ? void 0 : _this$mutateOptions$o3.call(_this$mutateOptions3, this.currentResult.error, this.currentResult.variables, this.currentResult.context);
114
- (_this$mutateOptions$o4 = (_this$mutateOptions4 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o4.call(_this$mutateOptions4, undefined, this.currentResult.error, this.currentResult.variables, this.currentResult.context);
80
+ if (this.#mutateOptions && this.hasListeners()) {
81
+ if (action?.type === 'success') {
82
+ this.#mutateOptions.onSuccess?.(action.data, this.#currentResult.variables, this.#currentResult.context);
83
+ this.#mutateOptions.onSettled?.(action.data, null, this.#currentResult.variables, this.#currentResult.context);
84
+ } else if (action?.type === 'error') {
85
+ this.#mutateOptions.onError?.(action.error, this.#currentResult.variables, this.#currentResult.context);
86
+ this.#mutateOptions.onSettled?.(undefined, action.error, this.#currentResult.variables, this.#currentResult.context);
115
87
  }
116
- } // Then trigger the listeners
117
-
118
-
119
- if (options.listeners) {
120
- this.listeners.forEach(listener => {
121
- listener(this.currentResult);
122
- });
123
88
  }
89
+
90
+ // Then trigger the listeners
91
+ this.listeners.forEach(listener => {
92
+ listener(this.#currentResult);
93
+ });
124
94
  });
125
95
  }
126
-
127
96
  }
128
97
 
129
98
  exports.MutationObserver = MutationObserver;
@@ -1 +1 @@
1
- {"version":3,"file":"mutationObserver.js","sources":["../../src/mutationObserver.ts"],"sourcesContent":["import type { Action, Mutation } from './mutation'\nimport { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type {\n MutateOptions,\n MutationObserverBaseResult,\n MutationObserverResult,\n MutationObserverOptions,\n} from './types'\nimport { shallowEqualObjects } from './utils'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\ninterface NotifyOptions {\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n private client: QueryClient\n private currentResult!: MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n private currentMutation?: Mutation<TData, TError, TVariables, TContext>\n private mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.client = client\n this.setOptions(options)\n this.bindMethods()\n this.updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options?: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options\n this.options = this.client.defaultMutationOptions(options)\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.currentMutation,\n observer: this,\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.updateResult()\n\n // Determine which callbacks to trigger\n const notifyOptions: NotifyOptions = {\n listeners: true,\n }\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true\n } else if (action.type === 'error') {\n notifyOptions.onError = true\n }\n\n this.notify(notifyOptions)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.currentResult\n }\n\n reset(): void {\n this.currentMutation = undefined\n this.updateResult()\n this.notify({ listeners: true })\n }\n\n mutate(\n variables?: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.mutateOptions = options\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this)\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, {\n ...this.options,\n variables:\n typeof variables !== 'undefined' ? variables : this.options.variables,\n })\n\n this.currentMutation.addObserver(this)\n\n return this.currentMutation.execute()\n }\n\n private updateResult(): void {\n const state = this.currentMutation\n ? this.currentMutation.state\n : getDefaultState<TData, TError, TVariables, TContext>()\n\n const result: MutationObserverBaseResult<\n TData,\n TError,\n TVariables,\n TContext\n > = {\n ...state,\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n }\n\n this.currentResult = result as MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n }\n\n private notify(options: NotifyOptions) {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.mutateOptions && this.hasListeners()) {\n if (options.onSuccess) {\n this.mutateOptions.onSuccess?.(\n this.currentResult.data!,\n this.currentResult.variables!,\n this.currentResult.context!,\n )\n this.mutateOptions.onSettled?.(\n this.currentResult.data!,\n null,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n } else if (options.onError) {\n this.mutateOptions.onError?.(\n this.currentResult.error!,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n this.mutateOptions.onSettled?.(\n undefined,\n this.currentResult.error,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n }\n }\n\n // Then trigger the listeners\n if (options.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.currentResult)\n })\n }\n })\n }\n}\n"],"names":["MutationObserver","Subscribable","constructor","client","options","setOptions","bindMethods","updateResult","mutate","bind","reset","prevOptions","defaultMutationOptions","shallowEqualObjects","getMutationCache","notify","type","mutation","currentMutation","observer","onUnsubscribe","listeners","length","removeObserver","onMutationUpdate","action","notifyOptions","onSuccess","onError","getCurrentResult","currentResult","undefined","variables","mutateOptions","build","addObserver","execute","state","getDefaultState","result","isLoading","status","isSuccess","isError","isIdle","notifyManager","batch","hasListeners","data","context","onSettled","error","forEach","listener"],"mappings":"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"}
1
+ {"version":3,"file":"mutationObserver.js","sources":["../../src/mutationObserver.ts"],"sourcesContent":["import type { Action, Mutation } from './mutation'\nimport { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type {\n MutateOptions,\n MutationObserverResult,\n MutationObserverOptions,\n RegisteredError,\n} from './types'\nimport { shallowEqualObjects } from './utils'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = RegisteredError,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n #client: QueryClient\n #currentResult: MutationObserverResult<TData, TError, TVariables, TContext> =\n undefined!\n #currentMutation?: Mutation<TData, TError, TVariables, TContext>\n #mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.#client = client\n this.setOptions(options)\n this.bindMethods()\n this.#updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options?: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options\n this.options = this.#client.defaultMutationOptions(options)\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.#client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.#currentMutation,\n observer: this,\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.#currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.#updateResult()\n\n this.#notify(action)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.#currentResult\n }\n\n reset(): void {\n this.#currentMutation = undefined\n this.#updateResult()\n this.#notify()\n }\n\n mutate(\n variables: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.#mutateOptions = options\n\n this.#currentMutation?.removeObserver(this)\n\n this.#currentMutation = this.#client\n .getMutationCache()\n .build(this.#client, {\n ...this.options,\n })\n\n this.#currentMutation.addObserver(this)\n\n return this.#currentMutation.execute(variables)\n }\n\n #updateResult(): void {\n const state =\n this.#currentMutation?.state ??\n getDefaultState<TData, TError, TVariables, TContext>()\n\n this.#currentResult = {\n ...state,\n isPending: state.status === 'pending',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n } as MutationObserverResult<TData, TError, TVariables, TContext>\n }\n\n #notify(action?: Action<TData, TError, TVariables, TContext>): void {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.#mutateOptions && this.hasListeners()) {\n if (action?.type === 'success') {\n this.#mutateOptions.onSuccess?.(\n action.data,\n this.#currentResult.variables!,\n this.#currentResult.context!,\n )\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n this.#currentResult.variables!,\n this.#currentResult.context,\n )\n } else if (action?.type === 'error') {\n this.#mutateOptions.onError?.(\n action.error,\n this.#currentResult.variables!,\n this.#currentResult.context,\n )\n this.#mutateOptions.onSettled?.(\n undefined,\n action.error,\n this.#currentResult.variables!,\n this.#currentResult.context,\n )\n }\n }\n\n // Then trigger the listeners\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n })\n }\n}\n"],"names":["MutationObserver","Subscribable","undefined","constructor","client","options","setOptions","bindMethods","mutate","bind","reset","prevOptions","defaultMutationOptions","shallowEqualObjects","getMutationCache","notify","type","mutation","observer","onUnsubscribe","listeners","length","removeObserver","onMutationUpdate","action","getCurrentResult","variables","build","addObserver","execute","state","getDefaultState","isPending","status","isSuccess","isError","isIdle","notifyManager","batch","hasListeners","onSuccess","data","context","onSettled","onError","error","forEach","listener"],"mappings":"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"}
@@ -3,123 +3,94 @@ import { notifyManager } from './notifyManager.mjs';
3
3
  import { Subscribable } from './subscribable.mjs';
4
4
  import { shallowEqualObjects } from './utils.mjs';
5
5
 
6
+ // TYPES
7
+
6
8
  // CLASS
9
+
7
10
  class MutationObserver extends Subscribable {
11
+ #client;
12
+ #currentResult = undefined;
13
+ #currentMutation;
14
+ #mutateOptions;
8
15
  constructor(client, options) {
9
16
  super();
10
- this.client = client;
17
+ this.#client = client;
11
18
  this.setOptions(options);
12
19
  this.bindMethods();
13
- this.updateResult();
20
+ this.#updateResult();
14
21
  }
15
-
16
22
  bindMethods() {
17
23
  this.mutate = this.mutate.bind(this);
18
24
  this.reset = this.reset.bind(this);
19
25
  }
20
-
21
26
  setOptions(options) {
22
27
  const prevOptions = this.options;
23
- this.options = this.client.defaultMutationOptions(options);
24
-
28
+ this.options = this.#client.defaultMutationOptions(options);
25
29
  if (!shallowEqualObjects(prevOptions, this.options)) {
26
- this.client.getMutationCache().notify({
30
+ this.#client.getMutationCache().notify({
27
31
  type: 'observerOptionsUpdated',
28
- mutation: this.currentMutation,
32
+ mutation: this.#currentMutation,
29
33
  observer: this
30
34
  });
31
35
  }
32
36
  }
33
-
34
37
  onUnsubscribe() {
35
38
  if (!this.listeners.length) {
36
- var _this$currentMutation;
37
-
38
- (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);
39
+ this.#currentMutation?.removeObserver(this);
39
40
  }
40
41
  }
41
-
42
42
  onMutationUpdate(action) {
43
- this.updateResult(); // Determine which callbacks to trigger
44
-
45
- const notifyOptions = {
46
- listeners: true
47
- };
48
-
49
- if (action.type === 'success') {
50
- notifyOptions.onSuccess = true;
51
- } else if (action.type === 'error') {
52
- notifyOptions.onError = true;
53
- }
54
-
55
- this.notify(notifyOptions);
43
+ this.#updateResult();
44
+ this.#notify(action);
56
45
  }
57
-
58
46
  getCurrentResult() {
59
- return this.currentResult;
47
+ return this.#currentResult;
60
48
  }
61
-
62
49
  reset() {
63
- this.currentMutation = undefined;
64
- this.updateResult();
65
- this.notify({
66
- listeners: true
67
- });
50
+ this.#currentMutation = undefined;
51
+ this.#updateResult();
52
+ this.#notify();
68
53
  }
69
-
70
54
  mutate(variables, options) {
71
- this.mutateOptions = options;
72
-
73
- if (this.currentMutation) {
74
- this.currentMutation.removeObserver(this);
75
- }
76
-
77
- this.currentMutation = this.client.getMutationCache().build(this.client, { ...this.options,
78
- variables: typeof variables !== 'undefined' ? variables : this.options.variables
55
+ this.#mutateOptions = options;
56
+ this.#currentMutation?.removeObserver(this);
57
+ this.#currentMutation = this.#client.getMutationCache().build(this.#client, {
58
+ ...this.options
79
59
  });
80
- this.currentMutation.addObserver(this);
81
- return this.currentMutation.execute();
60
+ this.#currentMutation.addObserver(this);
61
+ return this.#currentMutation.execute(variables);
82
62
  }
83
-
84
- updateResult() {
85
- const state = this.currentMutation ? this.currentMutation.state : getDefaultState();
86
- const result = { ...state,
87
- isLoading: state.status === 'loading',
63
+ #updateResult() {
64
+ const state = this.#currentMutation?.state ?? getDefaultState();
65
+ this.#currentResult = {
66
+ ...state,
67
+ isPending: state.status === 'pending',
88
68
  isSuccess: state.status === 'success',
89
69
  isError: state.status === 'error',
90
70
  isIdle: state.status === 'idle',
91
71
  mutate: this.mutate,
92
72
  reset: this.reset
93
73
  };
94
- this.currentResult = result;
95
74
  }
96
-
97
- notify(options) {
75
+ #notify(action) {
98
76
  notifyManager.batch(() => {
99
77
  // First trigger the mutate callbacks
100
- if (this.mutateOptions && this.hasListeners()) {
101
- if (options.onSuccess) {
102
- var _this$mutateOptions$o, _this$mutateOptions, _this$mutateOptions$o2, _this$mutateOptions2;
103
-
104
- (_this$mutateOptions$o = (_this$mutateOptions = this.mutateOptions).onSuccess) == null ? void 0 : _this$mutateOptions$o.call(_this$mutateOptions, this.currentResult.data, this.currentResult.variables, this.currentResult.context);
105
- (_this$mutateOptions$o2 = (_this$mutateOptions2 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o2.call(_this$mutateOptions2, this.currentResult.data, null, this.currentResult.variables, this.currentResult.context);
106
- } else if (options.onError) {
107
- var _this$mutateOptions$o3, _this$mutateOptions3, _this$mutateOptions$o4, _this$mutateOptions4;
108
-
109
- (_this$mutateOptions$o3 = (_this$mutateOptions3 = this.mutateOptions).onError) == null ? void 0 : _this$mutateOptions$o3.call(_this$mutateOptions3, this.currentResult.error, this.currentResult.variables, this.currentResult.context);
110
- (_this$mutateOptions$o4 = (_this$mutateOptions4 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o4.call(_this$mutateOptions4, undefined, this.currentResult.error, this.currentResult.variables, this.currentResult.context);
78
+ if (this.#mutateOptions && this.hasListeners()) {
79
+ if (action?.type === 'success') {
80
+ this.#mutateOptions.onSuccess?.(action.data, this.#currentResult.variables, this.#currentResult.context);
81
+ this.#mutateOptions.onSettled?.(action.data, null, this.#currentResult.variables, this.#currentResult.context);
82
+ } else if (action?.type === 'error') {
83
+ this.#mutateOptions.onError?.(action.error, this.#currentResult.variables, this.#currentResult.context);
84
+ this.#mutateOptions.onSettled?.(undefined, action.error, this.#currentResult.variables, this.#currentResult.context);
111
85
  }
112
- } // Then trigger the listeners
113
-
114
-
115
- if (options.listeners) {
116
- this.listeners.forEach(listener => {
117
- listener(this.currentResult);
118
- });
119
86
  }
87
+
88
+ // Then trigger the listeners
89
+ this.listeners.forEach(listener => {
90
+ listener(this.#currentResult);
91
+ });
120
92
  });
121
93
  }
122
-
123
94
  }
124
95
 
125
96
  export { MutationObserver };
@@ -1 +1 @@
1
- {"version":3,"file":"mutationObserver.mjs","sources":["../../src/mutationObserver.ts"],"sourcesContent":["import type { Action, Mutation } from './mutation'\nimport { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type {\n MutateOptions,\n MutationObserverBaseResult,\n MutationObserverResult,\n MutationObserverOptions,\n} from './types'\nimport { shallowEqualObjects } from './utils'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\ninterface NotifyOptions {\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n private client: QueryClient\n private currentResult!: MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n private currentMutation?: Mutation<TData, TError, TVariables, TContext>\n private mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.client = client\n this.setOptions(options)\n this.bindMethods()\n this.updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options?: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options\n this.options = this.client.defaultMutationOptions(options)\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.currentMutation,\n observer: this,\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.updateResult()\n\n // Determine which callbacks to trigger\n const notifyOptions: NotifyOptions = {\n listeners: true,\n }\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true\n } else if (action.type === 'error') {\n notifyOptions.onError = true\n }\n\n this.notify(notifyOptions)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.currentResult\n }\n\n reset(): void {\n this.currentMutation = undefined\n this.updateResult()\n this.notify({ listeners: true })\n }\n\n mutate(\n variables?: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.mutateOptions = options\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this)\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, {\n ...this.options,\n variables:\n typeof variables !== 'undefined' ? variables : this.options.variables,\n })\n\n this.currentMutation.addObserver(this)\n\n return this.currentMutation.execute()\n }\n\n private updateResult(): void {\n const state = this.currentMutation\n ? this.currentMutation.state\n : getDefaultState<TData, TError, TVariables, TContext>()\n\n const result: MutationObserverBaseResult<\n TData,\n TError,\n TVariables,\n TContext\n > = {\n ...state,\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n }\n\n this.currentResult = result as MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n }\n\n private notify(options: NotifyOptions) {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.mutateOptions && this.hasListeners()) {\n if (options.onSuccess) {\n this.mutateOptions.onSuccess?.(\n this.currentResult.data!,\n this.currentResult.variables!,\n this.currentResult.context!,\n )\n this.mutateOptions.onSettled?.(\n this.currentResult.data!,\n null,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n } else if (options.onError) {\n this.mutateOptions.onError?.(\n this.currentResult.error!,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n this.mutateOptions.onSettled?.(\n undefined,\n this.currentResult.error,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n }\n }\n\n // Then trigger the listeners\n if (options.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.currentResult)\n })\n }\n })\n }\n}\n"],"names":["MutationObserver","Subscribable","constructor","client","options","setOptions","bindMethods","updateResult","mutate","bind","reset","prevOptions","defaultMutationOptions","shallowEqualObjects","getMutationCache","notify","type","mutation","currentMutation","observer","onUnsubscribe","listeners","length","removeObserver","onMutationUpdate","action","notifyOptions","onSuccess","onError","getCurrentResult","currentResult","undefined","variables","mutateOptions","build","addObserver","execute","state","getDefaultState","result","isLoading","status","isSuccess","isError","isIdle","notifyManager","batch","hasListeners","data","context","onSettled","error","forEach","listener"],"mappings":"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"}
1
+ {"version":3,"file":"mutationObserver.mjs","sources":["../../src/mutationObserver.ts"],"sourcesContent":["import type { Action, Mutation } from './mutation'\nimport { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type {\n MutateOptions,\n MutationObserverResult,\n MutationObserverOptions,\n RegisteredError,\n} from './types'\nimport { shallowEqualObjects } from './utils'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = RegisteredError,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n #client: QueryClient\n #currentResult: MutationObserverResult<TData, TError, TVariables, TContext> =\n undefined!\n #currentMutation?: Mutation<TData, TError, TVariables, TContext>\n #mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.#client = client\n this.setOptions(options)\n this.bindMethods()\n this.#updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options?: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options\n this.options = this.#client.defaultMutationOptions(options)\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.#client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.#currentMutation,\n observer: this,\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.#currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.#updateResult()\n\n this.#notify(action)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.#currentResult\n }\n\n reset(): void {\n this.#currentMutation = undefined\n this.#updateResult()\n this.#notify()\n }\n\n mutate(\n variables: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.#mutateOptions = options\n\n this.#currentMutation?.removeObserver(this)\n\n this.#currentMutation = this.#client\n .getMutationCache()\n .build(this.#client, {\n ...this.options,\n })\n\n this.#currentMutation.addObserver(this)\n\n return this.#currentMutation.execute(variables)\n }\n\n #updateResult(): void {\n const state =\n this.#currentMutation?.state ??\n getDefaultState<TData, TError, TVariables, TContext>()\n\n this.#currentResult = {\n ...state,\n isPending: state.status === 'pending',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n } as MutationObserverResult<TData, TError, TVariables, TContext>\n }\n\n #notify(action?: Action<TData, TError, TVariables, TContext>): void {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.#mutateOptions && this.hasListeners()) {\n if (action?.type === 'success') {\n this.#mutateOptions.onSuccess?.(\n action.data,\n this.#currentResult.variables!,\n this.#currentResult.context!,\n )\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n this.#currentResult.variables!,\n this.#currentResult.context,\n )\n } else if (action?.type === 'error') {\n this.#mutateOptions.onError?.(\n action.error,\n this.#currentResult.variables!,\n this.#currentResult.context,\n )\n this.#mutateOptions.onSettled?.(\n undefined,\n action.error,\n this.#currentResult.variables!,\n this.#currentResult.context,\n )\n }\n }\n\n // Then trigger the listeners\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n })\n }\n}\n"],"names":["MutationObserver","Subscribable","undefined","constructor","client","options","setOptions","bindMethods","mutate","bind","reset","prevOptions","defaultMutationOptions","shallowEqualObjects","getMutationCache","notify","type","mutation","observer","onUnsubscribe","listeners","length","removeObserver","onMutationUpdate","action","getCurrentResult","variables","build","addObserver","execute","state","getDefaultState","isPending","status","isSuccess","isError","isIdle","notifyManager","batch","hasListeners","onSuccess","data","context","onSettled","onError","error","forEach","listener"],"mappings":";;;;;AAaA;;AAMA;;AAEO,MAAMA,gBAAgB,SAKnBC,YAAY,CAEpB;AAGA,EAAA,OAAO,CAAA;EACP,cAAc,GACZC,SAAS,CAAA;AACX,EAAA,gBAAgB,CAAA;AAChB,EAAA,cAAc,CAAA;AAEdC,EAAAA,WAAW,CACTC,MAAmB,EACnBC,OAAqE,EACrE;AACA,IAAA,KAAK,EAAE,CAAA;AAEP,IAAA,IAAI,CAAC,OAAO,GAAGD,MAAM,CAAA;AACrB,IAAA,IAAI,CAACE,UAAU,CAACD,OAAO,CAAC,CAAA;IACxB,IAAI,CAACE,WAAW,EAAE,CAAA;IAClB,IAAI,CAAC,aAAa,EAAE,CAAA;AACtB,GAAA;AAEUA,EAAAA,WAAW,GAAS;IAC5B,IAAI,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,CAACC,KAAK,GAAG,IAAI,CAACA,KAAK,CAACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,GAAA;EAEAH,UAAU,CACRD,OAAsE,EACtE;AACA,IAAA,MAAMM,WAAW,GAAG,IAAI,CAACN,OAAO,CAAA;IAChC,IAAI,CAACA,OAAO,GAAG,IAAI,CAAC,OAAO,CAACO,sBAAsB,CAACP,OAAO,CAAC,CAAA;IAC3D,IAAI,CAACQ,mBAAmB,CAACF,WAAW,EAAE,IAAI,CAACN,OAAO,CAAC,EAAE;MACnD,IAAI,CAAC,OAAO,CAACS,gBAAgB,EAAE,CAACC,MAAM,CAAC;AACrCC,QAAAA,IAAI,EAAE,wBAAwB;AAC9BC,QAAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB;AAC/BC,QAAAA,QAAQ,EAAE,IAAA;AACZ,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;AAEUC,EAAAA,aAAa,GAAS;AAC9B,IAAA,IAAI,CAAC,IAAI,CAACC,SAAS,CAACC,MAAM,EAAE;AAC1B,MAAA,IAAI,CAAC,gBAAgB,EAAEC,cAAc,CAAC,IAAI,CAAC,CAAA;AAC7C,KAAA;AACF,GAAA;EAEAC,gBAAgB,CAACC,MAAmD,EAAQ;IAC1E,IAAI,CAAC,aAAa,EAAE,CAAA;AAEpB,IAAA,IAAI,CAAC,OAAO,CAACA,MAAM,CAAC,CAAA;AACtB,GAAA;AAEAC,EAAAA,gBAAgB,GAKd;IACA,OAAO,IAAI,CAAC,cAAc,CAAA;AAC5B,GAAA;AAEAf,EAAAA,KAAK,GAAS;AACZ,IAAA,IAAI,CAAC,gBAAgB,GAAGR,SAAS,CAAA;IACjC,IAAI,CAAC,aAAa,EAAE,CAAA;IACpB,IAAI,CAAC,OAAO,EAAE,CAAA;AAChB,GAAA;AAEAM,EAAAA,MAAM,CACJkB,SAAqB,EACrBrB,OAA4D,EAC5C;AAChB,IAAA,IAAI,CAAC,cAAc,GAAGA,OAAO,CAAA;AAE7B,IAAA,IAAI,CAAC,gBAAgB,EAAEiB,cAAc,CAAC,IAAI,CAAC,CAAA;AAE3C,IAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACjCR,gBAAgB,EAAE,CAClBa,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;AACnB,MAAA,GAAG,IAAI,CAACtB,OAAAA;AACV,KAAC,CAAC,CAAA;AAEJ,IAAA,IAAI,CAAC,gBAAgB,CAACuB,WAAW,CAAC,IAAI,CAAC,CAAA;IAEvC,OAAO,IAAI,CAAC,gBAAgB,CAACC,OAAO,CAACH,SAAS,CAAC,CAAA;AACjD,GAAA;AAEA,EAAA,aAAa,GAAS;IACpB,MAAMI,KAAK,GACT,IAAI,CAAC,gBAAgB,EAAEA,KAAK,IAC5BC,eAAe,EAAuC,CAAA;IAExD,IAAI,CAAC,cAAc,GAAG;AACpB,MAAA,GAAGD,KAAK;AACRE,MAAAA,SAAS,EAAEF,KAAK,CAACG,MAAM,KAAK,SAAS;AACrCC,MAAAA,SAAS,EAAEJ,KAAK,CAACG,MAAM,KAAK,SAAS;AACrCE,MAAAA,OAAO,EAAEL,KAAK,CAACG,MAAM,KAAK,OAAO;AACjCG,MAAAA,MAAM,EAAEN,KAAK,CAACG,MAAM,KAAK,MAAM;MAC/BzB,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBE,KAAK,EAAE,IAAI,CAACA,KAAAA;KACkD,CAAA;AAClE,GAAA;EAEA,OAAO,CAACc,MAAoD,EAAQ;IAClEa,aAAa,CAACC,KAAK,CAAC,MAAM;AACxB;MACA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAACC,YAAY,EAAE,EAAE;AAC9C,QAAA,IAAIf,MAAM,EAAER,IAAI,KAAK,SAAS,EAAE;UAC9B,IAAI,CAAC,cAAc,CAACwB,SAAS,GAC3BhB,MAAM,CAACiB,IAAI,EACX,IAAI,CAAC,cAAc,CAACf,SAAS,EAC7B,IAAI,CAAC,cAAc,CAACgB,OAAO,CAC5B,CAAA;UACD,IAAI,CAAC,cAAc,CAACC,SAAS,GAC3BnB,MAAM,CAACiB,IAAI,EACX,IAAI,EACJ,IAAI,CAAC,cAAc,CAACf,SAAS,EAC7B,IAAI,CAAC,cAAc,CAACgB,OAAO,CAC5B,CAAA;AACH,SAAC,MAAM,IAAIlB,MAAM,EAAER,IAAI,KAAK,OAAO,EAAE;UACnC,IAAI,CAAC,cAAc,CAAC4B,OAAO,GACzBpB,MAAM,CAACqB,KAAK,EACZ,IAAI,CAAC,cAAc,CAACnB,SAAS,EAC7B,IAAI,CAAC,cAAc,CAACgB,OAAO,CAC5B,CAAA;UACD,IAAI,CAAC,cAAc,CAACC,SAAS,GAC3BzC,SAAS,EACTsB,MAAM,CAACqB,KAAK,EACZ,IAAI,CAAC,cAAc,CAACnB,SAAS,EAC7B,IAAI,CAAC,cAAc,CAACgB,OAAO,CAC5B,CAAA;AACH,SAAA;AACF,OAAA;;AAEA;AACA,MAAA,IAAI,CAACtB,SAAS,CAAC0B,OAAO,CAAEC,QAAQ,IAAK;AACnCA,QAAAA,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAC/B,OAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CAAA;AACJ,GAAA;AACF;;;;"}
@@ -1,34 +1,29 @@
1
1
  import { scheduleMicrotask } from './utils.esm.js';
2
2
 
3
+ // TYPES
4
+
3
5
  function createNotifyManager() {
4
6
  let queue = [];
5
7
  let transactions = 0;
6
-
7
8
  let notifyFn = callback => {
8
9
  callback();
9
10
  };
10
-
11
11
  let batchNotifyFn = callback => {
12
12
  callback();
13
13
  };
14
-
15
14
  const batch = callback => {
16
15
  let result;
17
16
  transactions++;
18
-
19
17
  try {
20
18
  result = callback();
21
19
  } finally {
22
20
  transactions--;
23
-
24
21
  if (!transactions) {
25
22
  flush();
26
23
  }
27
24
  }
28
-
29
25
  return result;
30
26
  };
31
-
32
27
  const schedule = callback => {
33
28
  if (transactions) {
34
29
  queue.push(callback);
@@ -38,11 +33,10 @@ function createNotifyManager() {
38
33
  });
39
34
  }
40
35
  };
36
+
41
37
  /**
42
38
  * All calls to the wrapped function will be batched.
43
39
  */
44
-
45
-
46
40
  const batchCalls = callback => {
47
41
  return (...args) => {
48
42
  schedule(() => {
@@ -50,11 +44,9 @@ function createNotifyManager() {
50
44
  });
51
45
  };
52
46
  };
53
-
54
47
  const flush = () => {
55
48
  const originalQueue = queue;
56
49
  queue = [];
57
-
58
50
  if (originalQueue.length) {
59
51
  scheduleMicrotask(() => {
60
52
  batchNotifyFn(() => {
@@ -65,25 +57,22 @@ function createNotifyManager() {
65
57
  });
66
58
  }
67
59
  };
60
+
68
61
  /**
69
62
  * Use this method to set a custom notify function.
70
63
  * This can be used to for example wrap notifications with `React.act` while running tests.
71
64
  */
72
-
73
-
74
65
  const setNotifyFunction = fn => {
75
66
  notifyFn = fn;
76
67
  };
68
+
77
69
  /**
78
70
  * Use this method to set a custom function to batch notifications together into a single tick.
79
71
  * By default React Query will use the batch function provided by ReactDOM or React Native.
80
72
  */
81
-
82
-
83
73
  const setBatchNotifyFunction = fn => {
84
74
  batchNotifyFn = fn;
85
75
  };
86
-
87
76
  return {
88
77
  batch,
89
78
  batchCalls,
@@ -91,8 +80,9 @@ function createNotifyManager() {
91
80
  setNotifyFunction,
92
81
  setBatchNotifyFunction
93
82
  };
94
- } // SINGLETON
83
+ }
95
84
 
85
+ // SINGLETON
96
86
  const notifyManager = createNotifyManager();
97
87
 
98
88
  export { createNotifyManager, notifyManager };
@@ -1 +1 @@
1
- {"version":3,"file":"notifyManager.esm.js","sources":["../../src/notifyManager.ts"],"sourcesContent":["import { scheduleMicrotask } from './utils'\n\n// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: NotifyCallback[] = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Function>(callback: T): T => {\n return ((...args: any[]) => {\n schedule(() => {\n callback(...args)\n })\n }) as any\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n"],"names":["createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","batch","result","flush","schedule","push","scheduleMicrotask","batchCalls","args","originalQueue","length","forEach","setNotifyFunction","fn","setBatchNotifyFunction","notifyManager"],"mappings":";;AAUO,SAASA,mBAAT,GAA+B;EACpC,IAAIC,KAAuB,GAAG,EAA9B,CAAA;EACA,IAAIC,YAAY,GAAG,CAAnB,CAAA;;EACA,IAAIC,QAAwB,GAAIC,QAAD,IAAc;IAC3CA,QAAQ,EAAA,CAAA;GADV,CAAA;;EAGA,IAAIC,aAAkC,GAAID,QAAD,IAA0B;IACjEA,QAAQ,EAAA,CAAA;GADV,CAAA;;EAIA,MAAME,KAAK,GAAOF,QAAJ,IAA6B;AACzC,IAAA,IAAIG,MAAJ,CAAA;IACAL,YAAY,EAAA,CAAA;;IACZ,IAAI;MACFK,MAAM,GAAGH,QAAQ,EAAjB,CAAA;AACD,KAFD,SAEU;MACRF,YAAY,EAAA,CAAA;;MACZ,IAAI,CAACA,YAAL,EAAmB;QACjBM,KAAK,EAAA,CAAA;AACN,OAAA;AACF,KAAA;;AACD,IAAA,OAAOD,MAAP,CAAA;GAXF,CAAA;;EAcA,MAAME,QAAQ,GAAIL,QAAD,IAAoC;AACnD,IAAA,IAAIF,YAAJ,EAAkB;MAChBD,KAAK,CAACS,IAAN,CAAWN,QAAX,CAAA,CAAA;AACD,KAFD,MAEO;AACLO,MAAAA,iBAAiB,CAAC,MAAM;QACtBR,QAAQ,CAACC,QAAD,CAAR,CAAA;AACD,OAFgB,CAAjB,CAAA;AAGD,KAAA;GAPH,CAAA;AAUA;AACF;AACA;;;EACE,MAAMQ,UAAU,GAAwBR,QAArB,IAAwC;IACzD,OAAQ,CAAC,GAAGS,IAAJ,KAAoB;AAC1BJ,MAAAA,QAAQ,CAAC,MAAM;QACbL,QAAQ,CAAC,GAAGS,IAAJ,CAAR,CAAA;AACD,OAFO,CAAR,CAAA;KADF,CAAA;GADF,CAAA;;EAQA,MAAML,KAAK,GAAG,MAAY;IACxB,MAAMM,aAAa,GAAGb,KAAtB,CAAA;AACAA,IAAAA,KAAK,GAAG,EAAR,CAAA;;IACA,IAAIa,aAAa,CAACC,MAAlB,EAA0B;AACxBJ,MAAAA,iBAAiB,CAAC,MAAM;AACtBN,QAAAA,aAAa,CAAC,MAAM;AAClBS,UAAAA,aAAa,CAACE,OAAd,CAAuBZ,QAAD,IAAc;YAClCD,QAAQ,CAACC,QAAD,CAAR,CAAA;WADF,CAAA,CAAA;AAGD,SAJY,CAAb,CAAA;AAKD,OANgB,CAAjB,CAAA;AAOD,KAAA;GAXH,CAAA;AAcA;AACF;AACA;AACA;;;EACE,MAAMa,iBAAiB,GAAIC,EAAD,IAAwB;AAChDf,IAAAA,QAAQ,GAAGe,EAAX,CAAA;GADF,CAAA;AAIA;AACF;AACA;AACA;;;EACE,MAAMC,sBAAsB,GAAID,EAAD,IAA6B;AAC1Db,IAAAA,aAAa,GAAGa,EAAhB,CAAA;GADF,CAAA;;EAIA,OAAO;IACLZ,KADK;IAELM,UAFK;IAGLH,QAHK;IAILQ,iBAJK;AAKLE,IAAAA,sBAAAA;GALF,CAAA;AAOD;;AAGYC,MAAAA,aAAa,GAAGpB,mBAAmB;;;;"}
1
+ {"version":3,"file":"notifyManager.esm.js","sources":["../../src/notifyManager.ts"],"sourcesContent":["import { scheduleMicrotask } from './utils'\n\n// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: NotifyCallback[] = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Function>(callback: T): T => {\n return ((...args: any[]) => {\n schedule(() => {\n callback(...args)\n })\n }) as any\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n"],"names":["createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","batch","result","flush","schedule","push","scheduleMicrotask","batchCalls","args","originalQueue","length","forEach","setNotifyFunction","fn","setBatchNotifyFunction","notifyManager"],"mappings":";;AAEA;;AAQO,SAASA,mBAAmB,GAAG;EACpC,IAAIC,KAAuB,GAAG,EAAE,CAAA;EAChC,IAAIC,YAAY,GAAG,CAAC,CAAA;EACpB,IAAIC,QAAwB,GAAIC,QAAQ,IAAK;AAC3CA,IAAAA,QAAQ,EAAE,CAAA;GACX,CAAA;EACD,IAAIC,aAAkC,GAAID,QAAoB,IAAK;AACjEA,IAAAA,QAAQ,EAAE,CAAA;GACX,CAAA;EAED,MAAME,KAAK,GAAOF,QAAiB,IAAQ;AACzC,IAAA,IAAIG,MAAM,CAAA;AACVL,IAAAA,YAAY,EAAE,CAAA;IACd,IAAI;MACFK,MAAM,GAAGH,QAAQ,EAAE,CAAA;AACrB,KAAC,SAAS;AACRF,MAAAA,YAAY,EAAE,CAAA;MACd,IAAI,CAACA,YAAY,EAAE;AACjBM,QAAAA,KAAK,EAAE,CAAA;AACT,OAAA;AACF,KAAA;AACA,IAAA,OAAOD,MAAM,CAAA;GACd,CAAA;EAED,MAAME,QAAQ,GAAIL,QAAwB,IAAW;AACnD,IAAA,IAAIF,YAAY,EAAE;AAChBD,MAAAA,KAAK,CAACS,IAAI,CAACN,QAAQ,CAAC,CAAA;AACtB,KAAC,MAAM;AACLO,MAAAA,iBAAiB,CAAC,MAAM;QACtBR,QAAQ,CAACC,QAAQ,CAAC,CAAA;AACpB,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,CAAA;;AAED;AACF;AACA;EACE,MAAMQ,UAAU,GAAwBR,QAAW,IAAQ;IACzD,OAAQ,CAAC,GAAGS,IAAW,KAAK;AAC1BJ,MAAAA,QAAQ,CAAC,MAAM;QACbL,QAAQ,CAAC,GAAGS,IAAI,CAAC,CAAA;AACnB,OAAC,CAAC,CAAA;KACH,CAAA;GACF,CAAA;EAED,MAAML,KAAK,GAAG,MAAY;IACxB,MAAMM,aAAa,GAAGb,KAAK,CAAA;AAC3BA,IAAAA,KAAK,GAAG,EAAE,CAAA;IACV,IAAIa,aAAa,CAACC,MAAM,EAAE;AACxBJ,MAAAA,iBAAiB,CAAC,MAAM;AACtBN,QAAAA,aAAa,CAAC,MAAM;AAClBS,UAAAA,aAAa,CAACE,OAAO,CAAEZ,QAAQ,IAAK;YAClCD,QAAQ,CAACC,QAAQ,CAAC,CAAA;AACpB,WAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACJ,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,CAAA;;AAED;AACF;AACA;AACA;EACE,MAAMa,iBAAiB,GAAIC,EAAkB,IAAK;AAChDf,IAAAA,QAAQ,GAAGe,EAAE,CAAA;GACd,CAAA;;AAED;AACF;AACA;AACA;EACE,MAAMC,sBAAsB,GAAID,EAAuB,IAAK;AAC1Db,IAAAA,aAAa,GAAGa,EAAE,CAAA;GACnB,CAAA;EAED,OAAO;IACLZ,KAAK;IACLM,UAAU;IACVH,QAAQ;IACRQ,iBAAiB;AACjBE,IAAAA,sBAAAA;GACD,CAAA;AACH,CAAA;;AAEA;AACaC,MAAAA,aAAa,GAAGpB,mBAAmB;;;;"}