@livestore/livestore 0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4

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 (131) hide show
  1. package/README.md +1 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/QueryCache.d.ts +20 -0
  4. package/dist/QueryCache.d.ts.map +1 -0
  5. package/dist/QueryCache.js +61 -0
  6. package/dist/QueryCache.js.map +1 -0
  7. package/dist/SynchronousDatabaseWrapper.d.ts +36 -0
  8. package/dist/SynchronousDatabaseWrapper.d.ts.map +1 -0
  9. package/dist/SynchronousDatabaseWrapper.js +176 -0
  10. package/dist/SynchronousDatabaseWrapper.js.map +1 -0
  11. package/dist/effect/LiveStore.d.ts +38 -0
  12. package/dist/effect/LiveStore.d.ts.map +1 -0
  13. package/dist/effect/LiveStore.js +38 -0
  14. package/dist/effect/LiveStore.js.map +1 -0
  15. package/dist/effect/index.d.ts +2 -0
  16. package/dist/effect/index.d.ts.map +1 -0
  17. package/dist/effect/index.js +2 -0
  18. package/dist/effect/index.js.map +1 -0
  19. package/dist/global-state.d.ts +14 -0
  20. package/dist/global-state.d.ts.map +1 -0
  21. package/dist/global-state.js +16 -0
  22. package/dist/global-state.js.map +1 -0
  23. package/dist/index.d.ts +19 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +15 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/reactive.d.ts +163 -0
  28. package/dist/reactive.d.ts.map +1 -0
  29. package/dist/reactive.js +382 -0
  30. package/dist/reactive.js.map +1 -0
  31. package/dist/reactive.test.d.ts +2 -0
  32. package/dist/reactive.test.d.ts.map +1 -0
  33. package/dist/reactive.test.js +345 -0
  34. package/dist/reactive.test.js.map +1 -0
  35. package/dist/reactiveQueries/base-class.d.ts +59 -0
  36. package/dist/reactiveQueries/base-class.d.ts.map +1 -0
  37. package/dist/reactiveQueries/base-class.js +29 -0
  38. package/dist/reactiveQueries/base-class.js.map +1 -0
  39. package/dist/reactiveQueries/graphql.d.ts +52 -0
  40. package/dist/reactiveQueries/graphql.d.ts.map +1 -0
  41. package/dist/reactiveQueries/graphql.js +136 -0
  42. package/dist/reactiveQueries/graphql.js.map +1 -0
  43. package/dist/reactiveQueries/js.d.ts +35 -0
  44. package/dist/reactiveQueries/js.d.ts.map +1 -0
  45. package/dist/reactiveQueries/js.js +57 -0
  46. package/dist/reactiveQueries/js.js.map +1 -0
  47. package/dist/reactiveQueries/sql.d.ts +49 -0
  48. package/dist/reactiveQueries/sql.d.ts.map +1 -0
  49. package/dist/reactiveQueries/sql.js +130 -0
  50. package/dist/reactiveQueries/sql.js.map +1 -0
  51. package/dist/reactiveQueries/sql.test.d.ts +2 -0
  52. package/dist/reactiveQueries/sql.test.d.ts.map +1 -0
  53. package/dist/reactiveQueries/sql.test.js +284 -0
  54. package/dist/reactiveQueries/sql.test.js.map +1 -0
  55. package/dist/row-query.d.ts +33 -0
  56. package/dist/row-query.d.ts.map +1 -0
  57. package/dist/row-query.js +84 -0
  58. package/dist/row-query.js.map +1 -0
  59. package/dist/store-context.d.ts +26 -0
  60. package/dist/store-context.d.ts.map +1 -0
  61. package/dist/store-context.js +6 -0
  62. package/dist/store-context.js.map +1 -0
  63. package/dist/store-devtools.d.ts +19 -0
  64. package/dist/store-devtools.d.ts.map +1 -0
  65. package/dist/store-devtools.js +141 -0
  66. package/dist/store-devtools.js.map +1 -0
  67. package/dist/store.d.ts +175 -0
  68. package/dist/store.d.ts.map +1 -0
  69. package/dist/store.js +507 -0
  70. package/dist/store.js.map +1 -0
  71. package/dist/utils/data-structures.d.ts +10 -0
  72. package/dist/utils/data-structures.d.ts.map +1 -0
  73. package/dist/utils/data-structures.js +32 -0
  74. package/dist/utils/data-structures.js.map +1 -0
  75. package/dist/utils/dev.d.ts +3 -0
  76. package/dist/utils/dev.d.ts.map +1 -0
  77. package/dist/utils/dev.js +17 -0
  78. package/dist/utils/dev.js.map +1 -0
  79. package/dist/utils/otel.d.ts +4 -0
  80. package/dist/utils/otel.d.ts.map +1 -0
  81. package/dist/utils/otel.js +6 -0
  82. package/dist/utils/otel.js.map +1 -0
  83. package/dist/utils/stack-info.d.ts +10 -0
  84. package/dist/utils/stack-info.d.ts.map +1 -0
  85. package/dist/utils/stack-info.js +41 -0
  86. package/dist/utils/stack-info.js.map +1 -0
  87. package/dist/utils/stack-info.test.d.ts +2 -0
  88. package/dist/utils/stack-info.test.d.ts.map +1 -0
  89. package/dist/utils/stack-info.test.js +75 -0
  90. package/dist/utils/stack-info.test.js.map +1 -0
  91. package/dist/utils/tests/fixture.d.ts +259 -0
  92. package/dist/utils/tests/fixture.d.ts.map +1 -0
  93. package/dist/utils/tests/fixture.js +33 -0
  94. package/dist/utils/tests/fixture.js.map +1 -0
  95. package/dist/utils/tests/mod.d.ts +3 -0
  96. package/dist/utils/tests/mod.d.ts.map +1 -0
  97. package/dist/utils/tests/mod.js +3 -0
  98. package/dist/utils/tests/mod.js.map +1 -0
  99. package/dist/utils/tests/otel.d.ts +10 -0
  100. package/dist/utils/tests/otel.d.ts.map +1 -0
  101. package/dist/utils/tests/otel.js +42 -0
  102. package/dist/utils/tests/otel.js.map +1 -0
  103. package/package.json +60 -0
  104. package/src/QueryCache.ts +81 -0
  105. package/src/SynchronousDatabaseWrapper.ts +256 -0
  106. package/src/ambient.d.ts +10 -0
  107. package/src/effect/LiveStore.ts +112 -0
  108. package/src/effect/index.ts +8 -0
  109. package/src/global-state.ts +20 -0
  110. package/src/index.ts +64 -0
  111. package/src/reactive.test.ts +426 -0
  112. package/src/reactive.ts +661 -0
  113. package/src/reactiveQueries/base-class.ts +115 -0
  114. package/src/reactiveQueries/graphql.ts +233 -0
  115. package/src/reactiveQueries/js.ts +108 -0
  116. package/src/reactiveQueries/sql.test.ts +308 -0
  117. package/src/reactiveQueries/sql.ts +226 -0
  118. package/src/row-query.ts +200 -0
  119. package/src/store-context.ts +23 -0
  120. package/src/store-devtools.ts +217 -0
  121. package/src/store.ts +920 -0
  122. package/src/utils/data-structures.ts +36 -0
  123. package/src/utils/dev.ts +24 -0
  124. package/src/utils/otel.ts +9 -0
  125. package/src/utils/stack-info.test.ts +79 -0
  126. package/src/utils/stack-info.ts +54 -0
  127. package/src/utils/tests/fixture.ts +77 -0
  128. package/src/utils/tests/mod.ts +2 -0
  129. package/src/utils/tests/otel.ts +61 -0
  130. package/tsconfig.json +18 -0
  131. package/vitest.config.js +9 -0
@@ -0,0 +1,345 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { ReactiveGraph } from './reactive.js';
3
+ describe('a trivial graph', () => {
4
+ const makeGraph = () => {
5
+ const graph = new ReactiveGraph();
6
+ graph.context = {};
7
+ const a = graph.makeRef(1, { label: 'a' });
8
+ const b = graph.makeRef(2, { label: 'b' });
9
+ const numberOfRunsForC = { runs: 0 };
10
+ const c = graph.makeThunk((get) => {
11
+ numberOfRunsForC.runs++;
12
+ return get(a) + get(b);
13
+ }, { label: 'c' });
14
+ const d = graph.makeRef(3, { label: 'd' });
15
+ const e = graph.makeThunk((get) => get(c) + get(d), { label: 'e' });
16
+ // a(1) b(2)
17
+ // \ /
18
+ // \ /
19
+ // c = a + b
20
+ // \
21
+ // \
22
+ // d(3) \
23
+ // \ \
24
+ // \ \
25
+ // e = c + d
26
+ expect(graph.atoms.size).toBe(5);
27
+ return { graph, a, b, c, d, e, numberOfRunsForC };
28
+ };
29
+ it('has the right initial values', () => {
30
+ const { c, e } = makeGraph();
31
+ expect(c.computeResult()).toBe(3);
32
+ expect(e.computeResult()).toBe(6);
33
+ });
34
+ it('propagates change through the graph', () => {
35
+ const { graph, a, c, e } = makeGraph();
36
+ graph.setRef(a, 5);
37
+ expect(c.computeResult()).toBe(7);
38
+ expect(e.computeResult()).toBe(10);
39
+ });
40
+ it('does not rerun downstream computations eagerly when an upstream dep changes', () => {
41
+ const { graph, a, c, numberOfRunsForC } = makeGraph();
42
+ expect(numberOfRunsForC.runs).toBe(0);
43
+ graph.setRef(a, 5);
44
+ expect(numberOfRunsForC.runs).toBe(0);
45
+ c.computeResult();
46
+ expect(numberOfRunsForC.runs).toBe(1);
47
+ });
48
+ it('does not rerun c when d is edited and e is rerun', () => {
49
+ const { graph, d, e, numberOfRunsForC } = makeGraph();
50
+ expect(numberOfRunsForC.runs).toBe(0);
51
+ expect(e.computeResult()).toBe(3 + 3);
52
+ expect(numberOfRunsForC.runs).toBe(1);
53
+ graph.setRef(d, 4);
54
+ expect(e.computeResult()).toBe(4 + 3);
55
+ expect(numberOfRunsForC.runs).toBe(1);
56
+ });
57
+ it('cuts off reactive propagation when a thunk evaluates to same result as before', () => {
58
+ const { graph, a, c, d } = makeGraph();
59
+ let numberOfRuns = 0;
60
+ const f = graph.makeThunk((get) => {
61
+ numberOfRuns++;
62
+ return get(c) + get(d);
63
+ });
64
+ expect(numberOfRuns).toBe(0); // defining f shouldn't run it yet
65
+ f.computeResult();
66
+ expect(numberOfRuns).toBe(1); // refreshing should run it once
67
+ // f doesn't run because a is set to same value as before
68
+ graph.setRef(a, 1);
69
+ expect(f.computeResult()).toBe(6);
70
+ // expect(numberOfRuns).toBe(1) // TODO comp caching
71
+ // f runs because a is set to a different value
72
+ graph.setRef(a, 5);
73
+ expect(f.computeResult()).toBe(10);
74
+ // expect(numberOfRuns).toBe(2) // TODO comp caching
75
+ // f runs again when d is set to a different value
76
+ graph.setRef(d, 4);
77
+ expect(f.computeResult()).toBe(11);
78
+ // expect(numberOfRuns).toBe(3) // TODO comp caching
79
+ // f only runs one time if we set two refs together
80
+ graph.setRefs([
81
+ [a, 6],
82
+ [d, 5],
83
+ ]);
84
+ expect(f.computeResult()).toBe(13);
85
+ // expect(numberOfRuns).toBe(4) // TODO comp caching
86
+ });
87
+ it('only runs a thunk once when two upstream refs are updated together', () => {
88
+ const { graph, a, b, c, numberOfRunsForC } = makeGraph();
89
+ graph.setRefs([
90
+ [a, 5],
91
+ [b, 6],
92
+ ]);
93
+ expect(numberOfRunsForC.runs).toBe(0);
94
+ expect(c.computeResult()).toBe(11);
95
+ expect(numberOfRunsForC.runs).toBe(1);
96
+ });
97
+ describe('effects', () => {
98
+ // TODO TBD whether we want to keep this as intended behavior
99
+ it(`doesn't run on initial definition`, () => {
100
+ const { graph, c, numberOfRunsForC } = makeGraph();
101
+ expect(numberOfRunsForC.runs).toBe(0);
102
+ c.computeResult();
103
+ expect(numberOfRunsForC.runs).toBe(1);
104
+ let numberOfEffectRuns = 0;
105
+ const effect = graph.makeEffect((get) => {
106
+ // establish a dependency on thunk c and mutate an outside value
107
+ expect(get(c)).toBe(3);
108
+ numberOfEffectRuns++;
109
+ });
110
+ expect(numberOfEffectRuns).toBe(0);
111
+ expect(numberOfRunsForC.runs).toBe(1);
112
+ effect.doEffect();
113
+ expect(numberOfEffectRuns).toBe(1);
114
+ });
115
+ it('only reruns an effect if the thunk value changed', () => {
116
+ const { graph, a, c } = makeGraph();
117
+ let numberOfEffectRuns = 0;
118
+ let aHasChanged = true;
119
+ expect(numberOfEffectRuns).toBe(0);
120
+ const effect = graph.makeEffect((get) => {
121
+ // establish a dependency on thunk c and mutate an outside value
122
+ expect(get(c)).toBe(aHasChanged ? 3 : 4);
123
+ numberOfEffectRuns++;
124
+ });
125
+ expect(numberOfEffectRuns).toBe(0);
126
+ effect.doEffect();
127
+ expect(numberOfEffectRuns).toBe(1);
128
+ // if we set a to the same value, the effect should not run again
129
+ graph.setRef(a, 1);
130
+ // expect(numberOfCallsToC).toBe(1) // TODO comp caching
131
+ aHasChanged = false;
132
+ graph.setRef(a, 2);
133
+ // expect(numberOfCallsToC).toBe(2) // TODO comp caching
134
+ });
135
+ describe('skip refresh', () => {
136
+ it(`defers effect execution until manual run`, () => {
137
+ const { graph, a, c, d, numberOfRunsForC } = makeGraph();
138
+ // using here both to track number oe effect runs and to "update the effect behavior"
139
+ let numberOfEffectRuns = 0;
140
+ const effect = graph.makeEffect((get) => {
141
+ expect(get(c)).toBe(numberOfEffectRuns === 0 ? 3 : 4);
142
+ numberOfEffectRuns++;
143
+ });
144
+ effect.doEffect();
145
+ expect(numberOfEffectRuns).toBe(1);
146
+ expect(numberOfRunsForC.runs).toBe(1);
147
+ graph.setRef(a, 2, { skipRefresh: true });
148
+ expect(numberOfEffectRuns).toBe(1);
149
+ expect(numberOfRunsForC.runs).toBe(1);
150
+ // Even setting a unrelated ref should not trigger a refresh
151
+ graph.setRef(d, 0);
152
+ expect(numberOfEffectRuns).toBe(1);
153
+ expect(numberOfRunsForC.runs).toBe(1);
154
+ graph.runDeferredEffects();
155
+ expect(numberOfEffectRuns).toBe(2);
156
+ expect(numberOfRunsForC.runs).toBe(2);
157
+ });
158
+ it(`doesn't run deferred effects which have been destroyed already`, () => {
159
+ const { graph, a, c, numberOfRunsForC } = makeGraph();
160
+ let numberOfEffect1Runs = 0;
161
+ const effect1 = graph.makeEffect((get) => {
162
+ expect(get(c)).toBe(numberOfEffect1Runs === 0 ? 3 : 4);
163
+ numberOfEffect1Runs++;
164
+ });
165
+ let numberOfEffect2Runs = 0;
166
+ const effect2 = graph.makeEffect((get) => {
167
+ expect(get(c)).toBe(numberOfEffect2Runs === 0 ? 3 : 4);
168
+ numberOfEffect2Runs++;
169
+ });
170
+ effect1.doEffect();
171
+ effect2.doEffect();
172
+ expect(numberOfEffect1Runs).toBe(1);
173
+ expect(numberOfEffect2Runs).toBe(1);
174
+ expect(numberOfRunsForC.runs).toBe(1);
175
+ graph.setRef(a, 2, { skipRefresh: true });
176
+ expect(numberOfEffect1Runs).toBe(1);
177
+ expect(numberOfEffect2Runs).toBe(1);
178
+ expect(numberOfRunsForC.runs).toBe(1);
179
+ graph.destroyNode(effect1);
180
+ graph.runDeferredEffects();
181
+ expect(numberOfEffect1Runs).toBe(1);
182
+ expect(numberOfEffect2Runs).toBe(2);
183
+ expect(numberOfRunsForC.runs).toBe(2);
184
+ });
185
+ });
186
+ });
187
+ describe('destroying nodes', () => {
188
+ it('marks super node as dirty when a sub node is destroyed', () => {
189
+ const { graph, b, c, d, e } = makeGraph();
190
+ e.computeResult();
191
+ graph.destroyNode(b);
192
+ expect(c.isDirty).toBe(true);
193
+ expect(d.isDirty).toBe(false);
194
+ expect(e.isDirty).toBe(true);
195
+ expect(() => c.computeResult()).toThrowErrorMatchingInlineSnapshot(`[Error: This should never happen: LiveStore Error: Attempted to compute destroyed ref (node-58): b]`);
196
+ });
197
+ });
198
+ });
199
+ describe('a dynamic graph', () => {
200
+ const makeGraph = () => {
201
+ const graph = new ReactiveGraph();
202
+ graph.context = {};
203
+ const a = graph.makeRef(1, { label: 'a' });
204
+ const b = graph.makeRef(2, { label: 'b' });
205
+ const c = graph.makeRef('a', { label: 'c' });
206
+ const numberOfRunsForD = { runs: 0 };
207
+ const d = graph.makeThunk((get) => {
208
+ numberOfRunsForD.runs++;
209
+ return get(c) === 'a' ? get(a) : get(b);
210
+ }, { label: 'd' });
211
+ const e = graph.makeRef(2, { label: 'e' });
212
+ const f = graph.makeThunk((get) => get(d) * get(e), { label: 'f' });
213
+ // a(1) b(2) c('a')
214
+ // \ / /
215
+ // \ / /
216
+ // d = a or b depending on c
217
+ // \
218
+ // \
219
+ // e(2) \
220
+ // \ \
221
+ // \ \
222
+ // f = d * e
223
+ expect(graph.atoms.size).toBe(6);
224
+ return { graph, a, b, c, d, e, f, numberOfRunsForD };
225
+ };
226
+ it('has the right initial values', () => {
227
+ const { d, f } = makeGraph();
228
+ expect(d.computeResult()).toBe(1);
229
+ expect(f.computeResult()).toBe(2);
230
+ });
231
+ it('dynamically adjusts d when a, b or c changes', () => {
232
+ const { graph, c, d, e, f, numberOfRunsForD } = makeGraph();
233
+ expect(numberOfRunsForD.runs).toBe(0);
234
+ expect(d.computeResult()).toBe(1);
235
+ expect(f.computeResult()).toBe(2);
236
+ expect(numberOfRunsForD.runs).toBe(1);
237
+ graph.setRef(c, 'b');
238
+ expect(d.computeResult()).toBe(2);
239
+ expect(f.computeResult()).toBe(4);
240
+ expect(numberOfRunsForD.runs).toBe(2);
241
+ graph.setRef(e, 3);
242
+ expect(f.computeResult()).toBe(6);
243
+ expect(numberOfRunsForD.runs).toBe(2);
244
+ });
245
+ it('runs d only when a changes, not b', () => {
246
+ const { graph, a, b, d, numberOfRunsForD } = makeGraph();
247
+ numberOfRunsForD.runs = 0;
248
+ d.computeResult();
249
+ expect(numberOfRunsForD.runs).toBe(1);
250
+ graph.setRef(a, 3);
251
+ expect(d.computeResult()).toBe(3);
252
+ expect(numberOfRunsForD.runs).toBe(2);
253
+ graph.setRef(b, 4);
254
+ expect(d.computeResult()).toBe(3);
255
+ expect(numberOfRunsForD.runs).toBe(2);
256
+ });
257
+ });
258
+ describe('a diamond shaped graph', () => {
259
+ const makeGraph = () => {
260
+ const graph = new ReactiveGraph();
261
+ graph.context = {};
262
+ const a = graph.makeRef(1);
263
+ const b = graph.makeThunk((get) => get(a) + 1);
264
+ const c = graph.makeThunk((get) => get(a) + 1);
265
+ // track the number of times d has run in an object so we can mutate it
266
+ const dRuns = { runs: 0 };
267
+ // normally thunks aren't supposed to side effect;
268
+ // we do it here to track the number of times d has run
269
+ const d = graph.makeThunk((get) => {
270
+ dRuns.runs++;
271
+ return get(b) + get(c);
272
+ });
273
+ // a(1)
274
+ // / \
275
+ // b c
276
+ // \ /
277
+ // d = b + c
278
+ expect(graph.atoms.size).toBe(4);
279
+ return { graph, a, b, c, d, dRuns };
280
+ };
281
+ it('has the right initial values', () => {
282
+ const { b, c, d } = makeGraph();
283
+ expect(b.computeResult()).toBe(2);
284
+ expect(c.computeResult()).toBe(2);
285
+ expect(d.computeResult()).toBe(4);
286
+ });
287
+ it('propagates change through the graph', () => {
288
+ const { graph, a, b, c, d } = makeGraph();
289
+ graph.setRef(a, 5);
290
+ expect(b.computeResult()).toBe(6);
291
+ expect(c.computeResult()).toBe(6);
292
+ expect(d.computeResult()).toBe(12);
293
+ });
294
+ // if we're being efficient, we should update b and c before updating d,
295
+ // so d only needs to update one time
296
+ it('only runs d once when a changes', () => {
297
+ const { graph, a, d, dRuns } = makeGraph();
298
+ expect(dRuns.runs).toBe(0);
299
+ d.computeResult();
300
+ expect(dRuns.runs).toBe(1);
301
+ graph.setRef(a, 5);
302
+ d.computeResult();
303
+ d.computeResult(); // even extra calls to computeResult should not run d again
304
+ expect(dRuns.runs).toBe(2);
305
+ });
306
+ });
307
+ describe('a trivial graph with undefined', () => {
308
+ const makeGraph = () => {
309
+ const graph = new ReactiveGraph();
310
+ graph.context = {};
311
+ const a = graph.makeRef(1);
312
+ const b = graph.makeRef(undefined);
313
+ const c = graph.makeThunk((get) => {
314
+ return get(a) + (get(b) ?? 0);
315
+ });
316
+ const d = graph.makeRef(3);
317
+ const e = graph.makeThunk((get) => get(c) + get(d));
318
+ // a(1) b(undefined)
319
+ // \ /
320
+ // \ /
321
+ // c = a + b
322
+ // \
323
+ // \
324
+ // d(3) \
325
+ // \ \
326
+ // \ \
327
+ // e = c + d
328
+ expect(graph.atoms.size).toBe(5);
329
+ return { graph, a, b, c, d, e };
330
+ };
331
+ it('has the right initial values', () => {
332
+ const { c, e } = makeGraph();
333
+ expect(c.computeResult()).toBe(1);
334
+ expect(e.computeResult()).toBe(4);
335
+ });
336
+ });
337
+ describe('error handling', () => {
338
+ it('throws an error when no context is set', () => {
339
+ const graph = new ReactiveGraph();
340
+ const a = graph.makeRef(1);
341
+ const b = graph.makeThunk((get) => get(a) + 1);
342
+ expect(() => b.computeResult()).toThrowErrorMatchingInlineSnapshot(`[Error: LiveStore Error: \`context\` not set on ReactiveGraph (graph-19)]`);
343
+ });
344
+ });
345
+ //# sourceMappingURL=reactive.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.test.js","sourceRoot":"","sources":["../src/reactive.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CACvB,CAAC,GAAG,EAAE,EAAE;YACN,gBAAgB,CAAC,IAAI,EAAE,CAAA;YACvB,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC,EACD,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAEnE,cAAc;QACd,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,UAAU;QACV,WAAW;QACX,YAAY;QACZ,cAAc;QACd,eAAe;QACf,iBAAiB;QAEjB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEhC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACnD,CAAC,CAAA;IAED,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QACtC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;QACrD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,CAAC,CAAC,aAAa,EAAE,CAAA;QACjB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;QACrD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QAEtC,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,YAAY,EAAE,CAAA;YACd,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,kCAAkC;QAC/D,CAAC,CAAC,aAAa,EAAE,CAAA;QACjB,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;QAE7D,yDAAyD;QACzD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,oDAAoD;QAEpD,+CAA+C;QAC/C,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClC,oDAAoD;QAEpD,kDAAkD;QAClD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClC,oDAAoD;QAEpD,mDAAmD;QACnD,KAAK,CAAC,OAAO,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC,CAAA;QACF,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClC,oDAAoD;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;QACxD,KAAK,CAAC,OAAO,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC,CAAA;QACF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,6DAA6D;QAC7D,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;YAClD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC,CAAC,aAAa,EAAE,CAAA;YACjB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAErC,IAAI,kBAAkB,GAAG,CAAC,CAAA;YAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtC,gEAAgE;gBAChE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtB,kBAAkB,EAAE,CAAA;YACtB,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAErC,MAAM,CAAC,QAAQ,EAAE,CAAA;YACjB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;YACnC,IAAI,kBAAkB,GAAG,CAAC,CAAA;YAC1B,IAAI,WAAW,GAAG,IAAI,CAAA;YACtB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtC,gEAAgE;gBAChE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACxC,kBAAkB,EAAE,CAAA;YACtB,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClC,MAAM,CAAC,QAAQ,EAAE,CAAA;YACjB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAElC,iEAAiE;YACjE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAClB,wDAAwD;YAExD,WAAW,GAAG,KAAK,CAAA;YAEnB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAClB,wDAAwD;QAC1D,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBAClD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;gBAExD,qFAAqF;gBACrF,IAAI,kBAAkB,GAAG,CAAC,CAAA;gBAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;oBACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBACrD,kBAAkB,EAAE,CAAA;gBACtB,CAAC,CAAC,CAAA;gBAEF,MAAM,CAAC,QAAQ,EAAE,CAAA;gBAEjB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAErC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;gBAEzC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAErC,4DAA4D;gBAC5D,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAElB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAErC,KAAK,CAAC,kBAAkB,EAAE,CAAA;gBAE1B,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;gBACxE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;gBAErD,IAAI,mBAAmB,GAAG,CAAC,CAAA;gBAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;oBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBACtD,mBAAmB,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,IAAI,mBAAmB,GAAG,CAAC,CAAA;gBAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;oBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBACtD,mBAAmB,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAClB,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAElB,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAErC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;gBAEzC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAErC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBAE1B,KAAK,CAAC,kBAAkB,EAAE,CAAA;gBAE1B,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;YAEzC,CAAC,CAAC,aAAa,EAAE,CAAA;YAEjB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YAEpB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE5B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,kCAAkC,CAChE,qGAAqG,CACtG,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;QAElB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAY,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACvD,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CACvB,CAAC,GAAG,EAAE,EAAE;YACN,gBAAgB,CAAC,IAAI,EAAE,CAAA;YACvB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC,EACD,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAEnE,uBAAuB;QACvB,gBAAgB;QAChB,aAAa;QACb,gCAAgC;QAChC,UAAU;QACV,WAAW;QACX,YAAY;QACZ,aAAa;QACb,cAAc;QACd,iBAAiB;QAEjB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEhC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACtD,CAAC,CAAA;IAED,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;QAC3D,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACpB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAA;QACxD,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,aAAa,EAAE,CAAA;QACjB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE9C,uEAAuE;QACvE,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAEzB,kDAAkD;QAClD,uDAAuD;QACvD,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,KAAK,CAAC,IAAI,EAAE,CAAA;YACZ,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;QAEF,OAAO;QACP,OAAO;QACP,QAAQ;QACR,OAAO;QACP,cAAc;QAEd,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEhC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;IACrC,CAAC,CAAA;IAED,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QACzC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,wEAAwE;IACxE,qCAAqC;IACrC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,aAAa,EAAE,CAAA;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,CAAC,CAAC,aAAa,EAAE,CAAA;QACjB,CAAC,CAAC,aAAa,EAAE,CAAA,CAAC,2DAA2D;QAC7E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnD,sBAAsB;QACtB,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,UAAU;QACV,WAAW;QACX,YAAY;QACZ,cAAc;QACd,eAAe;QACf,iBAAiB;QAEjB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEhC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACjC,CAAC,CAAA;IAED,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,kCAAkC,CAChE,2EAA2E,CAC5E,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,59 @@
1
+ import type { QueryInfo, QueryInfoNone } from '@livestore/common';
2
+ import type * as otel from '@opentelemetry/api';
3
+ import { type Atom, type GetAtom, ReactiveGraph, type Thunk } from '../reactive.js';
4
+ import type { QueryDebugInfo, RefreshReason, Store } from '../store.js';
5
+ import type { StackInfo } from '../utils/stack-info.js';
6
+ export type ReactivityGraph = ReactiveGraph<RefreshReason, QueryDebugInfo, QueryContext>;
7
+ export declare const makeReactivityGraph: () => ReactivityGraph;
8
+ export type QueryContext = {
9
+ store: Store;
10
+ otelTracer: otel.Tracer;
11
+ rootOtelContext: otel.Context;
12
+ effectsWrapper: (run: () => void) => void;
13
+ };
14
+ export type UnsubscribeQuery = () => void;
15
+ export type GetResult<TQuery extends LiveQueryAny> = TQuery extends LiveQuery<infer TResult, infer _1> ? TResult : unknown;
16
+ export type LiveQueryAny = LiveQuery<any, QueryInfo>;
17
+ export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfoNone> {
18
+ id: number;
19
+ _tag: 'js' | 'sql' | 'graphql';
20
+ /** This should only be used on a type-level and doesn't hold any value during runtime */
21
+ '__result!': TResult;
22
+ /** A reactive thunk representing the query results */
23
+ results$: Thunk<TResult, QueryContext, RefreshReason>;
24
+ label: string;
25
+ run: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
26
+ runAndDestroy: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
27
+ destroy(): void;
28
+ subscribe(onNewValue: (value: TResult) => void, onUnsubsubscribe?: () => void, options?: {
29
+ label?: string;
30
+ otelContext?: otel.Context;
31
+ }): () => void;
32
+ activeSubscriptions: Set<StackInfo>;
33
+ queryInfo: TQueryInfo;
34
+ runs: number;
35
+ executionTimes: number[];
36
+ }
37
+ export declare abstract class LiveStoreQueryBase<TResult, TQueryInfo extends QueryInfo> implements LiveQuery<TResult, TQueryInfo> {
38
+ '__result!': TResult;
39
+ id: number;
40
+ abstract _tag: 'js' | 'sql' | 'graphql';
41
+ /** Human-readable label for the query for debugging */
42
+ abstract label: string;
43
+ abstract results$: Thunk<TResult, QueryContext, RefreshReason>;
44
+ activeSubscriptions: Set<StackInfo>;
45
+ protected abstract reactivityGraph: ReactivityGraph;
46
+ abstract queryInfo: TQueryInfo;
47
+ get runs(): number;
48
+ executionTimes: number[];
49
+ abstract destroy: () => void;
50
+ run: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
51
+ runAndDestroy: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
52
+ subscribe: (onNewValue: (value: TResult) => void, onUnsubsubscribe?: () => void, options?: {
53
+ label?: string;
54
+ otelContext?: otel.Context;
55
+ } | undefined) => (() => void);
56
+ }
57
+ export type GetAtomResult = <T>(atom: Atom<T, any, RefreshReason> | LiveQuery<T, any>) => T;
58
+ export declare const makeGetAtomResult: (get: GetAtom, otelContext: otel.Context) => GetAtomResult;
59
+ //# sourceMappingURL=base-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/base-class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ReactiveGraph, throwContextNotSetError } from '../reactive.js';
2
+ export const makeReactivityGraph = () => new ReactiveGraph();
3
+ let queryIdCounter = 0;
4
+ export class LiveStoreQueryBase {
5
+ '__result!';
6
+ id = queryIdCounter++;
7
+ activeSubscriptions = new Set();
8
+ get runs() {
9
+ return this.results$.recomputations;
10
+ }
11
+ executionTimes = [];
12
+ run = (otelContext, debugRefreshReason) => this.results$.computeResult(otelContext, debugRefreshReason);
13
+ runAndDestroy = (otelContext, debugRefreshReason) => {
14
+ const result = this.run(otelContext, debugRefreshReason);
15
+ this.destroy();
16
+ return result;
17
+ };
18
+ subscribe = (onNewValue, onUnsubsubscribe, options) => this.reactivityGraph.context?.store.subscribe(this, onNewValue, onUnsubsubscribe, options) ??
19
+ throwContextNotSetError(this.reactivityGraph);
20
+ }
21
+ export const makeGetAtomResult = (get, otelContext) => {
22
+ const getAtom = (atom) => {
23
+ if (atom._tag === 'thunk' || atom._tag === 'ref')
24
+ return get(atom, otelContext);
25
+ return get(atom.results$, otelContext);
26
+ };
27
+ return getAtom;
28
+ };
29
+ //# sourceMappingURL=base-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/reactiveQueries/base-class.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,aAAa,EAAE,uBAAuB,EAAc,MAAM,gBAAgB,CAAA;AAM5G,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAoB,EAAE,CACvD,IAAI,aAAa,EAA+C,CAAA;AAclE,IAAI,cAAc,GAAG,CAAC,CAAA;AAqCtB,MAAM,OAAgB,kBAAkB;IAGtC,WAAW,CAAU;IACrB,EAAE,GAAG,cAAc,EAAE,CAAA;IAQrB,mBAAmB,GAAmB,IAAI,GAAG,EAAE,CAAA;IAM/C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAA;IACrC,CAAC;IAED,cAAc,GAAa,EAAE,CAAA;IAI7B,GAAG,GAAG,CAAC,WAA0B,EAAE,kBAAkC,EAAW,EAAE,CAChF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;IAE9D,aAAa,GAAG,CAAC,WAA0B,EAAE,kBAAkC,EAAW,EAAE;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,SAAS,GAAG,CACV,UAAoC,EACpC,gBAA6B,EAC7B,OAAoE,EACtD,EAAE,CAChB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAC1F,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;CAChD;AAID,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAY,EAAE,WAAyB,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAkB,CAAC,IAAI,EAAE,EAAE;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC/E,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1,52 @@
1
+ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
2
+ import type { QueryInfoNone } from '@livestore/common';
3
+ import { Schema } from '@livestore/utils/effect';
4
+ import * as otel from '@opentelemetry/api';
5
+ import * as graphql from 'graphql';
6
+ import { type Thunk } from '../reactive.js';
7
+ import type { BaseGraphQLContext, RefreshReason, Store } from '../store.js';
8
+ import type { GetAtomResult, LiveQuery, QueryContext, ReactivityGraph } from './base-class.js';
9
+ import { LiveStoreQueryBase } from './base-class.js';
10
+ export type MapResult<To, From> = ((res: From, get: GetAtomResult) => To) | Schema.Schema<To, From>;
11
+ export declare const queryGraphQL: <TResult extends Record<string, any>, TVariableValues extends Record<string, any>, TResultMapped extends Record<string, any> = TResult>(document: DocumentNode<TResult, TVariableValues>, genVariableValues: TVariableValues | ((get: GetAtomResult) => TVariableValues), { label, reactivityGraph, map, }?: {
12
+ label?: string;
13
+ reactivityGraph?: ReactivityGraph;
14
+ map?: MapResult<TResultMapped, TResult>;
15
+ }) => LiveQuery<TResultMapped, QueryInfoNone>;
16
+ export declare class LiveStoreGraphQLQuery<TResult extends Record<string, any>, TVariableValues extends Record<string, any>, TContext extends BaseGraphQLContext, TResultMapped extends Record<string, any> = TResult> extends LiveStoreQueryBase<TResultMapped, QueryInfoNone> {
17
+ _tag: 'graphql';
18
+ /** The abstract GraphQL query */
19
+ document: DocumentNode<TResult, TVariableValues>;
20
+ /** A reactive thunk representing the query results */
21
+ results$: Thunk<TResultMapped, QueryContext, RefreshReason>;
22
+ variableValues$: Thunk<TVariableValues, QueryContext, RefreshReason> | undefined;
23
+ label: string;
24
+ protected reactivityGraph: ReactivityGraph;
25
+ queryInfo: QueryInfoNone;
26
+ private mapResult;
27
+ constructor({ document, label, genVariableValues, reactivityGraph, map, }: {
28
+ document: DocumentNode<TResult, TVariableValues>;
29
+ genVariableValues: TVariableValues | ((get: GetAtomResult) => TVariableValues);
30
+ label?: string;
31
+ reactivityGraph?: ReactivityGraph;
32
+ map?: MapResult<TResultMapped, TResult>;
33
+ });
34
+ /**
35
+ * Returns a new reactive query that contains the result of
36
+ * running an arbitrary JS computation on the results of this SQL query.
37
+ */
38
+ queryOnce: ({ document, otelContext, otelTracer, variableValues, store, get, }: {
39
+ document: graphql.DocumentNode;
40
+ otelContext: otel.Context;
41
+ otelTracer: otel.Tracer;
42
+ variableValues: TVariableValues;
43
+ store: Store<TContext>;
44
+ get: GetAtomResult;
45
+ }) => {
46
+ result: TResultMapped;
47
+ queriedTables: string[];
48
+ durationMs: number;
49
+ };
50
+ destroy: () => void;
51
+ }
52
+ //# sourceMappingURL=graphql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/graphql.ts"],"names":[],"mappings":"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"}