@tanstack/query-core 4.0.11-beta.0 → 4.1.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 (96) hide show
  1. package/build/cjs/focusManager.js +101 -0
  2. package/build/cjs/focusManager.js.map +1 -0
  3. package/build/cjs/hydration.js +112 -0
  4. package/build/cjs/hydration.js.map +1 -0
  5. package/build/cjs/index.js +51 -0
  6. package/build/cjs/index.js.map +1 -0
  7. package/build/cjs/infiniteQueryBehavior.js +160 -0
  8. package/build/cjs/infiniteQueryBehavior.js.map +1 -0
  9. package/build/cjs/infiniteQueryObserver.js +92 -0
  10. package/build/cjs/infiniteQueryObserver.js.map +1 -0
  11. package/build/cjs/logger.js +18 -0
  12. package/build/cjs/logger.js.map +1 -0
  13. package/build/cjs/mutation.js +258 -0
  14. package/build/cjs/mutation.js.map +1 -0
  15. package/build/cjs/mutationCache.js +99 -0
  16. package/build/cjs/mutationCache.js.map +1 -0
  17. package/build/cjs/mutationObserver.js +140 -0
  18. package/build/cjs/mutationObserver.js.map +1 -0
  19. package/build/cjs/notifyManager.js +114 -0
  20. package/build/cjs/notifyManager.js.map +1 -0
  21. package/build/cjs/onlineManager.js +100 -0
  22. package/build/cjs/onlineManager.js.map +1 -0
  23. package/build/cjs/queriesObserver.js +170 -0
  24. package/build/cjs/queriesObserver.js.map +1 -0
  25. package/build/cjs/query.js +474 -0
  26. package/build/cjs/query.js.map +1 -0
  27. package/build/cjs/queryCache.js +140 -0
  28. package/build/cjs/queryCache.js.map +1 -0
  29. package/build/cjs/queryClient.js +353 -0
  30. package/build/cjs/queryClient.js.map +1 -0
  31. package/build/cjs/queryObserver.js +529 -0
  32. package/build/cjs/queryObserver.js.map +1 -0
  33. package/build/cjs/removable.js +47 -0
  34. package/build/cjs/removable.js.map +1 -0
  35. package/build/cjs/retryer.js +177 -0
  36. package/build/cjs/retryer.js.map +1 -0
  37. package/build/cjs/subscribable.js +43 -0
  38. package/build/cjs/subscribable.js.map +1 -0
  39. package/build/cjs/utils.js +356 -0
  40. package/build/cjs/utils.js.map +1 -0
  41. package/build/{lib/index.mjs → esm/index.js} +18 -1
  42. package/build/esm/index.js.map +1 -0
  43. package/build/stats-html.html +2689 -0
  44. package/build/stats.json +811 -0
  45. package/build/{lib → types/packages/query-core/src}/focusManager.d.ts +0 -0
  46. package/build/{lib → types/packages/query-core/src}/hydration.d.ts +0 -0
  47. package/build/{lib → types/packages/query-core/src}/index.d.ts +2 -2
  48. package/build/{lib → types/packages/query-core/src}/infiniteQueryBehavior.d.ts +0 -0
  49. package/build/{lib → types/packages/query-core/src}/infiniteQueryObserver.d.ts +0 -0
  50. package/build/{lib → types/packages/query-core/src}/logger.d.ts +0 -0
  51. package/build/{lib → types/packages/query-core/src}/logger.native.d.ts +0 -0
  52. package/build/{lib → types/packages/query-core/src}/mutation.d.ts +0 -0
  53. package/build/{lib → types/packages/query-core/src}/mutationCache.d.ts +6 -1
  54. package/build/{lib → types/packages/query-core/src}/mutationObserver.d.ts +0 -0
  55. package/build/{lib → types/packages/query-core/src}/notifyManager.d.ts +0 -0
  56. package/build/{lib → types/packages/query-core/src}/onlineManager.d.ts +0 -0
  57. package/build/{lib → types/packages/query-core/src}/queriesObserver.d.ts +0 -0
  58. package/build/{lib → types/packages/query-core/src}/query.d.ts +0 -0
  59. package/build/{lib → types/packages/query-core/src}/queryCache.d.ts +6 -1
  60. package/build/{lib → types/packages/query-core/src}/queryClient.d.ts +0 -0
  61. package/build/{lib → types/packages/query-core/src}/queryObserver.d.ts +0 -0
  62. package/build/{lib → types/packages/query-core/src}/removable.d.ts +0 -0
  63. package/build/{lib → types/packages/query-core/src}/retryer.d.ts +0 -0
  64. package/build/{lib → types/packages/query-core/src}/subscribable.d.ts +0 -0
  65. package/build/types/packages/query-core/src/tests/focusManager.test.d.ts +1 -0
  66. package/build/types/packages/query-core/src/tests/hydration.test.d.ts +1 -0
  67. package/build/types/packages/query-core/src/tests/infiniteQueryBehavior.test.d.ts +1 -0
  68. package/build/types/packages/query-core/src/tests/infiniteQueryObserver.test.d.ts +1 -0
  69. package/build/types/packages/query-core/src/tests/mutationCache.test.d.ts +1 -0
  70. package/build/types/packages/query-core/src/tests/mutationObserver.test.d.ts +1 -0
  71. package/build/types/packages/query-core/src/tests/mutations.test.d.ts +1 -0
  72. package/build/types/packages/query-core/src/tests/notifyManager.test.d.ts +1 -0
  73. package/build/types/packages/query-core/src/tests/onlineManager.test.d.ts +1 -0
  74. package/build/types/packages/query-core/src/tests/queriesObserver.test.d.ts +1 -0
  75. package/build/types/packages/query-core/src/tests/query.test.d.ts +1 -0
  76. package/build/types/packages/query-core/src/tests/queryCache.test.d.ts +1 -0
  77. package/build/types/packages/query-core/src/tests/queryClient.test.d.ts +1 -0
  78. package/build/types/packages/query-core/src/tests/queryObserver.test.d.ts +1 -0
  79. package/build/types/packages/query-core/src/tests/utils.test.d.ts +1 -0
  80. package/build/{lib → types/packages/query-core/src}/types.d.ts +0 -0
  81. package/build/{lib → types/packages/query-core/src}/utils.d.ts +0 -0
  82. package/build/types/tests/utils.d.ts +24 -0
  83. package/build/umd/index.development.js +17 -0
  84. package/build/umd/index.development.js.map +1 -1
  85. package/build/umd/index.production.js +1 -1
  86. package/build/umd/index.production.js.map +1 -1
  87. package/package.json +7 -16
  88. package/src/index.ts +2 -2
  89. package/src/mutationCache.ts +7 -0
  90. package/src/mutationObserver.ts +9 -0
  91. package/src/queryCache.ts +7 -0
  92. package/src/queryObserver.ts +8 -0
  93. package/src/tests/queryObserver.test.tsx +19 -0
  94. package/build/lib/index.js +0 -3096
  95. package/build/lib/index.js.map +0 -1
  96. package/build/lib/index.mjs.map +0 -1
@@ -0,0 +1,258 @@
1
+ /**
2
+ * query-core
3
+ *
4
+ * Copyright (c) TanStack
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var logger = require('./logger.js');
16
+ var notifyManager = require('./notifyManager.js');
17
+ var removable = require('./removable.js');
18
+ var retryer = require('./retryer.js');
19
+
20
+ // CLASS
21
+ class Mutation extends removable.Removable {
22
+ constructor(config) {
23
+ super();
24
+ this.options = { ...config.defaultOptions,
25
+ ...config.options
26
+ };
27
+ this.mutationId = config.mutationId;
28
+ this.mutationCache = config.mutationCache;
29
+ this.logger = config.logger || logger.defaultLogger;
30
+ this.observers = [];
31
+ this.state = config.state || getDefaultState();
32
+ this.meta = config.meta;
33
+ this.updateCacheTime(this.options.cacheTime);
34
+ this.scheduleGc();
35
+ }
36
+
37
+ setState(state) {
38
+ this.dispatch({
39
+ type: 'setState',
40
+ state
41
+ });
42
+ }
43
+
44
+ addObserver(observer) {
45
+ if (this.observers.indexOf(observer) === -1) {
46
+ this.observers.push(observer); // Stop the mutation from being garbage collected
47
+
48
+ this.clearGcTimeout();
49
+ this.mutationCache.notify({
50
+ type: 'observerAdded',
51
+ mutation: this,
52
+ observer
53
+ });
54
+ }
55
+ }
56
+
57
+ removeObserver(observer) {
58
+ this.observers = this.observers.filter(x => x !== observer);
59
+ this.scheduleGc();
60
+ this.mutationCache.notify({
61
+ type: 'observerRemoved',
62
+ mutation: this,
63
+ observer
64
+ });
65
+ }
66
+
67
+ optionalRemove() {
68
+ if (!this.observers.length) {
69
+ if (this.state.status === 'loading') {
70
+ this.scheduleGc();
71
+ } else {
72
+ this.mutationCache.remove(this);
73
+ }
74
+ }
75
+ }
76
+
77
+ continue() {
78
+ if (this.retryer) {
79
+ this.retryer.continue();
80
+ return this.retryer.promise;
81
+ }
82
+
83
+ return this.execute();
84
+ }
85
+
86
+ async execute() {
87
+ const executeMutation = () => {
88
+ var _this$options$retry;
89
+
90
+ this.retryer = retryer.createRetryer({
91
+ fn: () => {
92
+ if (!this.options.mutationFn) {
93
+ return Promise.reject('No mutationFn found');
94
+ }
95
+
96
+ return this.options.mutationFn(this.state.variables);
97
+ },
98
+ onFail: () => {
99
+ this.dispatch({
100
+ type: 'failed'
101
+ });
102
+ },
103
+ onPause: () => {
104
+ this.dispatch({
105
+ type: 'pause'
106
+ });
107
+ },
108
+ onContinue: () => {
109
+ this.dispatch({
110
+ type: 'continue'
111
+ });
112
+ },
113
+ retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,
114
+ retryDelay: this.options.retryDelay,
115
+ networkMode: this.options.networkMode
116
+ });
117
+ return this.retryer.promise;
118
+ };
119
+
120
+ const restored = this.state.status === 'loading';
121
+
122
+ try {
123
+ var _this$mutationCache$c3, _this$mutationCache$c4, _this$options$onSucce, _this$options2, _this$options$onSettl, _this$options3;
124
+
125
+ if (!restored) {
126
+ var _this$mutationCache$c, _this$mutationCache$c2, _this$options$onMutat, _this$options;
127
+
128
+ this.dispatch({
129
+ type: 'loading',
130
+ variables: this.options.variables
131
+ }); // Notify cache callback
132
+
133
+ (_this$mutationCache$c = (_this$mutationCache$c2 = this.mutationCache.config).onMutate) == null ? void 0 : _this$mutationCache$c.call(_this$mutationCache$c2, this.state.variables, this);
134
+ const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, this.state.variables));
135
+
136
+ if (context !== this.state.context) {
137
+ this.dispatch({
138
+ type: 'loading',
139
+ context,
140
+ variables: this.state.variables
141
+ });
142
+ }
143
+ }
144
+
145
+ const data = await executeMutation(); // Notify cache callback
146
+
147
+ (_this$mutationCache$c3 = (_this$mutationCache$c4 = this.mutationCache.config).onSuccess) == null ? void 0 : _this$mutationCache$c3.call(_this$mutationCache$c4, data, this.state.variables, this.state.context, this);
148
+ await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, this.state.variables, this.state.context));
149
+ await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, this.state.variables, this.state.context));
150
+ this.dispatch({
151
+ type: 'success',
152
+ data
153
+ });
154
+ return data;
155
+ } catch (error) {
156
+ try {
157
+ var _this$mutationCache$c5, _this$mutationCache$c6, _this$options$onError, _this$options4, _this$options$onSettl2, _this$options5;
158
+
159
+ // Notify cache callback
160
+ (_this$mutationCache$c5 = (_this$mutationCache$c6 = this.mutationCache.config).onError) == null ? void 0 : _this$mutationCache$c5.call(_this$mutationCache$c6, error, this.state.variables, this.state.context, this);
161
+
162
+ if (process.env.NODE_ENV !== 'production') {
163
+ this.logger.error(error);
164
+ }
165
+
166
+ await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error, this.state.variables, this.state.context));
167
+ await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, undefined, error, this.state.variables, this.state.context));
168
+ throw error;
169
+ } finally {
170
+ this.dispatch({
171
+ type: 'error',
172
+ error: error
173
+ });
174
+ }
175
+ }
176
+ }
177
+
178
+ dispatch(action) {
179
+ const reducer = state => {
180
+ switch (action.type) {
181
+ case 'failed':
182
+ return { ...state,
183
+ failureCount: state.failureCount + 1
184
+ };
185
+
186
+ case 'pause':
187
+ return { ...state,
188
+ isPaused: true
189
+ };
190
+
191
+ case 'continue':
192
+ return { ...state,
193
+ isPaused: false
194
+ };
195
+
196
+ case 'loading':
197
+ return { ...state,
198
+ context: action.context,
199
+ data: undefined,
200
+ error: null,
201
+ isPaused: !retryer.canFetch(this.options.networkMode),
202
+ status: 'loading',
203
+ variables: action.variables
204
+ };
205
+
206
+ case 'success':
207
+ return { ...state,
208
+ data: action.data,
209
+ error: null,
210
+ status: 'success',
211
+ isPaused: false
212
+ };
213
+
214
+ case 'error':
215
+ return { ...state,
216
+ data: undefined,
217
+ error: action.error,
218
+ failureCount: state.failureCount + 1,
219
+ isPaused: false,
220
+ status: 'error'
221
+ };
222
+
223
+ case 'setState':
224
+ return { ...state,
225
+ ...action.state
226
+ };
227
+ }
228
+ };
229
+
230
+ this.state = reducer(this.state);
231
+ notifyManager.notifyManager.batch(() => {
232
+ this.observers.forEach(observer => {
233
+ observer.onMutationUpdate(action);
234
+ });
235
+ this.mutationCache.notify({
236
+ mutation: this,
237
+ type: 'updated',
238
+ action
239
+ });
240
+ });
241
+ }
242
+
243
+ }
244
+ function getDefaultState() {
245
+ return {
246
+ context: undefined,
247
+ data: undefined,
248
+ error: null,
249
+ failureCount: 0,
250
+ isPaused: false,
251
+ status: 'idle',
252
+ variables: undefined
253
+ };
254
+ }
255
+
256
+ exports.Mutation = Mutation;
257
+ exports.getDefaultState = getDefaultState;
258
+ //# sourceMappingURL=mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.js","sources":["../../src/mutation.ts"],"sourcesContent":["import type { MutationOptions, MutationStatus, MutationMeta } from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport { defaultLogger, Logger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { canFetch, Retryer, createRetryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig<TData, TError, TVariables, TContext> {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions<TData, TError, TVariables, TContext>\n logger?: Logger\n defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>\n state?: MutationState<TData, TError, TVariables, TContext>\n meta?: MutationMeta\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n}\n\ninterface FailedAction {\n type: 'failed'\n}\n\ninterface LoadingAction<TVariables, TContext> {\n type: 'loading'\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction<TData> {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError, TVariables, TContext> {\n type: 'setState'\n state: MutationState<TData, TError, TVariables, TContext>\n}\n\nexport type Action<TData, TError, TVariables, TContext> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction\n | LoadingAction<TVariables, TContext>\n | PauseAction\n | SetStateAction<TData, TError, TVariables, TContext>\n | SuccessAction<TData>\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options: MutationOptions<TData, TError, TVariables, TContext>\n mutationId: number\n meta: MutationMeta | undefined\n\n private observers: MutationObserver<TData, TError, TVariables, TContext>[]\n private mutationCache: MutationCache\n private logger: Logger\n private retryer?: Retryer<TData>\n\n constructor(config: MutationConfig<TData, TError, TVariables, TContext>) {\n super()\n\n this.options = {\n ...config.defaultOptions,\n ...config.options,\n }\n this.mutationId = config.mutationId\n this.mutationCache = config.mutationCache\n this.logger = config.logger || defaultLogger\n this.observers = []\n this.state = config.state || getDefaultState()\n this.meta = config.meta\n\n this.updateCacheTime(this.options.cacheTime)\n this.scheduleGc()\n }\n\n setState(state: MutationState<TData, TError, TVariables, TContext>): void {\n this.dispatch({ type: 'setState', state })\n }\n\n addObserver(observer: MutationObserver<any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver<any, any, any, any>): void {\n this.observers = this.observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc()\n } else {\n this.mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise<TData> {\n if (this.retryer) {\n this.retryer.continue()\n return this.retryer.promise\n }\n return this.execute()\n }\n\n async execute(): Promise<TData> {\n const executeMutation = () => {\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found')\n }\n return this.options.mutationFn(this.state.variables!)\n },\n onFail: () => {\n this.dispatch({ type: 'failed' })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n })\n\n return this.retryer.promise\n }\n\n const restored = this.state.status === 'loading'\n try {\n if (!restored) {\n this.dispatch({ type: 'loading', variables: this.options.variables! })\n // Notify cache callback\n this.mutationCache.config.onMutate?.(\n this.state.variables,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n const context = await this.options.onMutate?.(this.state.variables!)\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables,\n })\n }\n }\n const data = await executeMutation()\n\n // Notify cache callback\n this.mutationCache.config.onSuccess?.(\n data,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSuccess?.(\n data,\n this.state.variables!,\n this.state.context!,\n )\n\n await this.options.onSettled?.(\n data,\n null,\n this.state.variables!,\n this.state.context,\n )\n\n this.dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n this.mutationCache.config.onError?.(\n error,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n\n await this.options.onError?.(\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n throw error\n } finally {\n this.dispatch({ type: 'error', error: error as TError })\n }\n }\n }\n\n private dispatch(action: Action<TData, TError, TVariables, TContext>): void {\n const reducer = (\n state: MutationState<TData, TError, TVariables, TContext>,\n ): MutationState<TData, TError, TVariables, TContext> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: state.failureCount + 1,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'loading':\n return {\n ...state,\n context: action.context,\n data: undefined,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n 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 isPaused: false,\n status: 'error',\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState<TData, TError, TVariables, TContext> {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n }\n}\n"],"names":["Mutation","Removable","constructor","config","options","defaultOptions","mutationId","mutationCache","logger","defaultLogger","observers","state","getDefaultState","meta","updateCacheTime","cacheTime","scheduleGc","setState","dispatch","type","addObserver","observer","indexOf","push","clearGcTimeout","notify","mutation","removeObserver","filter","x","optionalRemove","length","status","remove","continue","retryer","promise","execute","executeMutation","createRetryer","fn","mutationFn","Promise","reject","variables","onFail","onPause","onContinue","retry","retryDelay","networkMode","restored","onMutate","context","data","onSuccess","onSettled","error","onError","process","env","NODE_ENV","undefined","action","reducer","failureCount","isPaused","canFetch","notifyManager","batch","forEach","onMutationUpdate"],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * query-core
3
+ *
4
+ * Copyright (c) TanStack
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var notifyManager = require('./notifyManager.js');
16
+ var mutation = require('./mutation.js');
17
+ var utils = require('./utils.js');
18
+ var subscribable = require('./subscribable.js');
19
+
20
+ // CLASS
21
+ class MutationCache extends subscribable.Subscribable {
22
+ constructor(config) {
23
+ super();
24
+ this.config = config || {};
25
+ this.mutations = [];
26
+ this.mutationId = 0;
27
+ }
28
+
29
+ build(client, options, state) {
30
+ const mutation$1 = new mutation.Mutation({
31
+ mutationCache: this,
32
+ logger: client.getLogger(),
33
+ mutationId: ++this.mutationId,
34
+ options: client.defaultMutationOptions(options),
35
+ state,
36
+ defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,
37
+ meta: options.meta
38
+ });
39
+ this.add(mutation$1);
40
+ return mutation$1;
41
+ }
42
+
43
+ add(mutation) {
44
+ this.mutations.push(mutation);
45
+ this.notify({
46
+ type: 'added',
47
+ mutation
48
+ });
49
+ }
50
+
51
+ remove(mutation) {
52
+ this.mutations = this.mutations.filter(x => x !== mutation);
53
+ this.notify({
54
+ type: 'removed',
55
+ mutation
56
+ });
57
+ }
58
+
59
+ clear() {
60
+ notifyManager.notifyManager.batch(() => {
61
+ this.mutations.forEach(mutation => {
62
+ this.remove(mutation);
63
+ });
64
+ });
65
+ }
66
+
67
+ getAll() {
68
+ return this.mutations;
69
+ }
70
+
71
+ find(filters) {
72
+ if (typeof filters.exact === 'undefined') {
73
+ filters.exact = true;
74
+ }
75
+
76
+ return this.mutations.find(mutation => utils.matchMutation(filters, mutation));
77
+ }
78
+
79
+ findAll(filters) {
80
+ return this.mutations.filter(mutation => utils.matchMutation(filters, mutation));
81
+ }
82
+
83
+ notify(event) {
84
+ notifyManager.notifyManager.batch(() => {
85
+ this.listeners.forEach(listener => {
86
+ listener(event);
87
+ });
88
+ });
89
+ }
90
+
91
+ resumePausedMutations() {
92
+ const pausedMutations = this.mutations.filter(x => x.state.isPaused);
93
+ return notifyManager.notifyManager.batch(() => pausedMutations.reduce((promise, mutation) => promise.then(() => mutation.continue().catch(utils.noop)), Promise.resolve()));
94
+ }
95
+
96
+ }
97
+
98
+ exports.MutationCache = MutationCache;
99
+ //# sourceMappingURL=mutationCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutationCache.js","sources":["../../src/mutationCache.ts"],"sourcesContent":["import { MutationObserver } from './mutationObserver'\nimport type { MutationOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport { notifyManager } from './notifyManager'\nimport { Action, Mutation, MutationState } from './mutation'\nimport { matchMutation, MutationFilters, noop } from './utils'\nimport { Subscribable } from './subscribable'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => void\n onMutate?: (\n variables: unknown,\n mutation: Mutation<unknown, unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventMutationAdded {\n type: 'added'\n mutation: Mutation<any, any, any, any>\n}\ninterface NotifyEventMutationRemoved {\n type: 'removed'\n mutation: Mutation<any, any, any, any>\n}\n\ninterface NotifyEventMutationObserverAdded {\n type: 'observerAdded'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverRemoved {\n type: 'observerRemoved'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated {\n type: 'observerOptionsUpdated'\n mutation?: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any, any>\n}\n\ninterface NotifyEventMutationUpdated {\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 config: MutationCacheConfig\n\n private mutations: Mutation<any, any, any, any>[]\n private mutationId: number\n\n constructor(config?: MutationCacheConfig) {\n super()\n this.config = config || {}\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 logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey\n ? client.getMutationDefaults(options.mutationKey)\n : undefined,\n meta: options.meta,\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<TData = unknown, TError = unknown, TVariables = any, TContext = unknown>(\n filters: MutationFilters,\n ): Mutation<TData, TError, TVariables, TContext> | undefined {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.mutations.find((mutation) => matchMutation(filters, mutation))\n }\n\n findAll(filters: MutationFilters): Mutation[] {\n return this.mutations.filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise<void> {\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(),\n ),\n )\n }\n}\n"],"names":["MutationCache","Subscribable","constructor","config","mutations","mutationId","build","client","options","state","mutation","Mutation","mutationCache","logger","getLogger","defaultMutationOptions","defaultOptions","mutationKey","getMutationDefaults","undefined","meta","add","push","notify","type","remove","filter","x","clear","notifyManager","batch","forEach","getAll","find","filters","exact","matchMutation","findAll","event","listeners","listener","resumePausedMutations","pausedMutations","isPaused","reduce","promise","then","continue","catch","noop","Promise","resolve"],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * query-core
3
+ *
4
+ * Copyright (c) TanStack
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var mutation = require('./mutation.js');
16
+ var notifyManager = require('./notifyManager.js');
17
+ var subscribable = require('./subscribable.js');
18
+ var utils = require('./utils.js');
19
+
20
+ // CLASS
21
+ class MutationObserver extends subscribable.Subscribable {
22
+ constructor(client, options) {
23
+ super();
24
+ this.client = client;
25
+ this.setOptions(options);
26
+ this.bindMethods();
27
+ this.updateResult();
28
+ }
29
+
30
+ bindMethods() {
31
+ this.mutate = this.mutate.bind(this);
32
+ this.reset = this.reset.bind(this);
33
+ }
34
+
35
+ setOptions(options) {
36
+ const prevOptions = this.options;
37
+ this.options = this.client.defaultMutationOptions(options);
38
+
39
+ if (!utils.shallowEqualObjects(prevOptions, this.options)) {
40
+ this.client.getMutationCache().notify({
41
+ type: 'observerOptionsUpdated',
42
+ mutation: this.currentMutation,
43
+ observer: this
44
+ });
45
+ }
46
+ }
47
+
48
+ onUnsubscribe() {
49
+ if (!this.listeners.length) {
50
+ var _this$currentMutation;
51
+
52
+ (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);
53
+ }
54
+ }
55
+
56
+ onMutationUpdate(action) {
57
+ this.updateResult(); // Determine which callbacks to trigger
58
+
59
+ const notifyOptions = {
60
+ listeners: true
61
+ };
62
+
63
+ if (action.type === 'success') {
64
+ notifyOptions.onSuccess = true;
65
+ } else if (action.type === 'error') {
66
+ notifyOptions.onError = true;
67
+ }
68
+
69
+ this.notify(notifyOptions);
70
+ }
71
+
72
+ getCurrentResult() {
73
+ return this.currentResult;
74
+ }
75
+
76
+ reset() {
77
+ this.currentMutation = undefined;
78
+ this.updateResult();
79
+ this.notify({
80
+ listeners: true
81
+ });
82
+ }
83
+
84
+ mutate(variables, options) {
85
+ this.mutateOptions = options;
86
+
87
+ if (this.currentMutation) {
88
+ this.currentMutation.removeObserver(this);
89
+ }
90
+
91
+ this.currentMutation = this.client.getMutationCache().build(this.client, { ...this.options,
92
+ variables: typeof variables !== 'undefined' ? variables : this.options.variables
93
+ });
94
+ this.currentMutation.addObserver(this);
95
+ return this.currentMutation.execute();
96
+ }
97
+
98
+ updateResult() {
99
+ const state = this.currentMutation ? this.currentMutation.state : mutation.getDefaultState();
100
+ const result = { ...state,
101
+ isLoading: state.status === 'loading',
102
+ isSuccess: state.status === 'success',
103
+ isError: state.status === 'error',
104
+ isIdle: state.status === 'idle',
105
+ mutate: this.mutate,
106
+ reset: this.reset
107
+ };
108
+ this.currentResult = result;
109
+ }
110
+
111
+ notify(options) {
112
+ notifyManager.notifyManager.batch(() => {
113
+ // First trigger the mutate callbacks
114
+ if (this.mutateOptions) {
115
+ if (options.onSuccess) {
116
+ var _this$mutateOptions$o, _this$mutateOptions, _this$mutateOptions$o2, _this$mutateOptions2;
117
+
118
+ (_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);
119
+ (_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);
120
+ } else if (options.onError) {
121
+ var _this$mutateOptions$o3, _this$mutateOptions3, _this$mutateOptions$o4, _this$mutateOptions4;
122
+
123
+ (_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);
124
+ (_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);
125
+ }
126
+ } // Then trigger the listeners
127
+
128
+
129
+ if (options.listeners) {
130
+ this.listeners.forEach(listener => {
131
+ listener(this.currentResult);
132
+ });
133
+ }
134
+ });
135
+ }
136
+
137
+ }
138
+
139
+ exports.MutationObserver = MutationObserver;
140
+ //# sourceMappingURL=mutationObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutationObserver.js","sources":["../../src/mutationObserver.ts"],"sourcesContent":["import { Action, getDefaultState, Mutation } 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) {\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","data","context","onSettled","error","forEach","listener"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA;AAEO,MAAMA,gBAAN,SAKGC,yBALH,CAOL;AAaAC,EAAAA,WAAW,CACTC,MADS,EAETC,OAFS,EAGT;AACA,IAAA,KAAA,EAAA,CAAA;IAEA,IAAKD,CAAAA,MAAL,GAAcA,MAAd,CAAA;IACA,IAAKE,CAAAA,UAAL,CAAgBD,OAAhB,CAAA,CAAA;AACA,IAAA,IAAA,CAAKE,WAAL,EAAA,CAAA;AACA,IAAA,IAAA,CAAKC,YAAL,EAAA,CAAA;AACD,GAAA;;AAESD,EAAAA,WAAW,GAAS;IAC5B,IAAKE,CAAAA,MAAL,GAAc,IAAKA,CAAAA,MAAL,CAAYC,IAAZ,CAAiB,IAAjB,CAAd,CAAA;IACA,IAAKC,CAAAA,KAAL,GAAa,IAAKA,CAAAA,KAAL,CAAWD,IAAX,CAAgB,IAAhB,CAAb,CAAA;AACD,GAAA;;EAEDJ,UAAU,CACRD,OADQ,EAER;IACA,MAAMO,WAAW,GAAG,IAAA,CAAKP,OAAzB,CAAA;IACA,IAAKA,CAAAA,OAAL,GAAe,IAAKD,CAAAA,MAAL,CAAYS,sBAAZ,CAAmCR,OAAnC,CAAf,CAAA;;IACA,IAAI,CAACS,yBAAmB,CAACF,WAAD,EAAc,IAAKP,CAAAA,OAAnB,CAAxB,EAAqD;AACnD,MAAA,IAAA,CAAKD,MAAL,CAAYW,gBAAZ,EAAA,CAA+BC,MAA/B,CAAsC;AACpCC,QAAAA,IAAI,EAAE,wBAD8B;QAEpCC,QAAQ,EAAE,KAAKC,eAFqB;AAGpCC,QAAAA,QAAQ,EAAE,IAAA;OAHZ,CAAA,CAAA;AAKD,KAAA;AACF,GAAA;;AAESC,EAAAA,aAAa,GAAS;AAC9B,IAAA,IAAI,CAAC,IAAA,CAAKC,SAAL,CAAeC,MAApB,EAA4B;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAC1B,MAAA,CAAA,qBAAA,GAAA,IAAA,CAAKJ,eAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAsBK,cAAtB,CAAqC,IAArC,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;EAEDC,gBAAgB,CAACC,MAAD,EAA4D;IAC1E,IAAKlB,CAAAA,YAAL,GAD0E;;AAI1E,IAAA,MAAMmB,aAA4B,GAAG;AACnCL,MAAAA,SAAS,EAAE,IAAA;KADb,CAAA;;AAIA,IAAA,IAAII,MAAM,CAACT,IAAP,KAAgB,SAApB,EAA+B;MAC7BU,aAAa,CAACC,SAAd,GAA0B,IAA1B,CAAA;AACD,KAFD,MAEO,IAAIF,MAAM,CAACT,IAAP,KAAgB,OAApB,EAA6B;MAClCU,aAAa,CAACE,OAAd,GAAwB,IAAxB,CAAA;AACD,KAAA;;IAED,IAAKb,CAAAA,MAAL,CAAYW,aAAZ,CAAA,CAAA;AACD,GAAA;;AAEDG,EAAAA,gBAAgB,GAKd;AACA,IAAA,OAAO,KAAKC,aAAZ,CAAA;AACD,GAAA;;AAEDpB,EAAAA,KAAK,GAAS;IACZ,IAAKQ,CAAAA,eAAL,GAAuBa,SAAvB,CAAA;AACA,IAAA,IAAA,CAAKxB,YAAL,EAAA,CAAA;AACA,IAAA,IAAA,CAAKQ,MAAL,CAAY;AAAEM,MAAAA,SAAS,EAAE,IAAA;KAAzB,CAAA,CAAA;AACD,GAAA;;AAEDb,EAAAA,MAAM,CACJwB,SADI,EAEJ5B,OAFI,EAGY;IAChB,IAAK6B,CAAAA,aAAL,GAAqB7B,OAArB,CAAA;;IAEA,IAAI,IAAA,CAAKc,eAAT,EAA0B;AACxB,MAAA,IAAA,CAAKA,eAAL,CAAqBK,cAArB,CAAoC,IAApC,CAAA,CAAA;AACD,KAAA;;AAED,IAAA,IAAA,CAAKL,eAAL,GAAuB,IAAKf,CAAAA,MAAL,CAAYW,gBAAZ,EAAA,CAA+BoB,KAA/B,CAAqC,KAAK/B,MAA1C,EAAkD,EACvE,GAAG,KAAKC,OAD+D;MAEvE4B,SAAS,EACP,OAAOA,SAAP,KAAqB,WAArB,GAAmCA,SAAnC,GAA+C,IAAK5B,CAAAA,OAAL,CAAa4B,SAAAA;AAHS,KAAlD,CAAvB,CAAA;AAMA,IAAA,IAAA,CAAKd,eAAL,CAAqBiB,WAArB,CAAiC,IAAjC,CAAA,CAAA;AAEA,IAAA,OAAO,IAAKjB,CAAAA,eAAL,CAAqBkB,OAArB,EAAP,CAAA;AACD,GAAA;;AAEO7B,EAAAA,YAAY,GAAS;IAC3B,MAAM8B,KAAK,GAAG,IAAA,CAAKnB,eAAL,GACV,IAAKA,CAAAA,eAAL,CAAqBmB,KADX,GAEVC,wBAAe,EAFnB,CAAA;AAIA,IAAA,MAAMC,MAKL,GAAG,EACF,GAAGF,KADD;AAEFG,MAAAA,SAAS,EAAEH,KAAK,CAACI,MAAN,KAAiB,SAF1B;AAGFC,MAAAA,SAAS,EAAEL,KAAK,CAACI,MAAN,KAAiB,SAH1B;AAIFE,MAAAA,OAAO,EAAEN,KAAK,CAACI,MAAN,KAAiB,OAJxB;AAKFG,MAAAA,MAAM,EAAEP,KAAK,CAACI,MAAN,KAAiB,MALvB;MAMFjC,MAAM,EAAE,KAAKA,MANX;AAOFE,MAAAA,KAAK,EAAE,IAAKA,CAAAA,KAAAA;KAZd,CAAA;IAeA,IAAKoB,CAAAA,aAAL,GAAqBS,MAArB,CAAA;AAMD,GAAA;;EAEOxB,MAAM,CAACX,OAAD,EAAyB;IACrCyC,2BAAa,CAACC,KAAd,CAAoB,MAAM;AACxB;MACA,IAAI,IAAA,CAAKb,aAAT,EAAwB;QACtB,IAAI7B,OAAO,CAACuB,SAAZ,EAAuB;AAAA,UAAA,IAAA,qBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,oBAAA,CAAA;;AACrB,UAAA,CAAA,qBAAA,GAAA,CAAA,mBAAA,GAAA,IAAA,CAAKM,aAAL,EAAmBN,SAAnB,KACE,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAA,IAAA,CAAA,mBAAA,EAAA,IAAA,CAAKG,aAAL,CAAmBiB,IADrB,EAEE,IAAA,CAAKjB,aAAL,CAAmBE,SAFrB,EAGE,IAAKF,CAAAA,aAAL,CAAmBkB,OAHrB,CAAA,CAAA;AAKA,UAAA,CAAA,sBAAA,GAAA,CAAA,oBAAA,GAAA,IAAA,CAAKf,aAAL,EAAmBgB,SAAnB,uEACE,IAAKnB,CAAAA,aAAL,CAAmBiB,IADrB,EAEE,IAFF,EAGE,IAAA,CAAKjB,aAAL,CAAmBE,SAHrB,EAIE,IAAKF,CAAAA,aAAL,CAAmBkB,OAJrB,CAAA,CAAA;AAMD,SAZD,MAYO,IAAI5C,OAAO,CAACwB,OAAZ,EAAqB;AAAA,UAAA,IAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,CAAA;;AAC1B,UAAA,CAAA,sBAAA,GAAA,CAAA,oBAAA,GAAA,IAAA,CAAKK,aAAL,EAAmBL,OAAnB,KACE,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAA,IAAA,CAAA,oBAAA,EAAA,IAAA,CAAKE,aAAL,CAAmBoB,KADrB,EAEE,IAAA,CAAKpB,aAAL,CAAmBE,SAFrB,EAGE,IAAKF,CAAAA,aAAL,CAAmBkB,OAHrB,CAAA,CAAA;AAKA,UAAA,CAAA,sBAAA,GAAA,CAAA,oBAAA,GAAA,IAAA,CAAKf,aAAL,EAAmBgB,SAAnB,uEACElB,SADF,EAEE,KAAKD,aAAL,CAAmBoB,KAFrB,EAGE,IAAA,CAAKpB,aAAL,CAAmBE,SAHrB,EAIE,IAAKF,CAAAA,aAAL,CAAmBkB,OAJrB,CAAA,CAAA;AAMD,SAAA;AACF,OA5BuB;;;MA+BxB,IAAI5C,OAAO,CAACiB,SAAZ,EAAuB;AACrB,QAAA,IAAA,CAAKA,SAAL,CAAe8B,OAAf,CAAwBC,QAAD,IAAc;UACnCA,QAAQ,CAAC,IAAKtB,CAAAA,aAAN,CAAR,CAAA;SADF,CAAA,CAAA;AAGD,OAAA;KAnCH,CAAA,CAAA;AAqCD,GAAA;;AAzKD;;;;"}