jazz-tools 0.19.20 → 0.19.22
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.
- package/.svelte-kit/__package__/server.d.ts.map +1 -1
- package/.svelte-kit/__package__/server.js +9 -7
- package/.turbo/turbo-build.log +56 -56
- package/CHANGELOG.md +15 -0
- package/dist/better-auth/auth/server.d.ts.map +1 -1
- package/dist/better-auth/auth/server.js +4 -4
- package/dist/better-auth/auth/server.js.map +1 -1
- package/dist/better-auth/database-adapter/index.js.map +1 -1
- package/dist/better-auth/database-adapter/repository/generic.d.ts +3 -3
- package/dist/better-auth/database-adapter/repository/session.d.ts +2 -2
- package/dist/better-auth/database-adapter/schema.d.ts +3 -3
- package/dist/better-auth/database-adapter/schema.d.ts.map +1 -1
- package/dist/{chunk-MI24YFCY.js → chunk-QCTQH5RS.js} +1 -1
- package/dist/chunk-QCTQH5RS.js.map +1 -0
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/media/{chunk-3LKBM3G3.js → chunk-IRL3KNPO.js} +2 -2
- package/dist/media/{chunk-3LKBM3G3.js.map → chunk-IRL3KNPO.js.map} +1 -1
- package/dist/media/create-image/react-native.d.ts +1 -1
- package/dist/media/create-image/react-native.d.ts.map +1 -1
- package/dist/media/index.browser.js +1 -1
- package/dist/media/index.js +1 -1
- package/dist/media/index.native.js +5 -5
- package/dist/media/index.native.js.map +1 -1
- package/dist/media/index.server.js +1 -1
- package/dist/react/hooks.d.ts +1 -2
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/index.js +7 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react-core/hooks.d.ts +92 -1
- package/dist/react-core/hooks.d.ts.map +1 -1
- package/dist/react-core/index.js +126 -57
- package/dist/react-core/index.js.map +1 -1
- package/dist/react-core/tests/useCoStates.test.d.ts +2 -0
- package/dist/react-core/tests/useCoStates.test.d.ts.map +1 -0
- package/dist/react-native/index.js +4 -0
- package/dist/react-native/index.js.map +1 -1
- package/dist/react-native-core/hooks.d.ts +1 -1
- package/dist/react-native-core/hooks.d.ts.map +1 -1
- package/dist/react-native-core/index.js +4 -0
- package/dist/react-native-core/index.js.map +1 -1
- package/dist/svelte/auth/ClerkAuth.svelte.d.ts +38 -0
- package/dist/svelte/auth/ClerkAuth.svelte.d.ts.map +1 -0
- package/dist/svelte/auth/ClerkAuth.svelte.js +47 -0
- package/dist/svelte/auth/JazzSvelteProviderWithClerk.svelte +156 -0
- package/dist/svelte/auth/JazzSvelteProviderWithClerk.svelte.d.ts +67 -0
- package/dist/svelte/auth/JazzSvelteProviderWithClerk.svelte.d.ts.map +1 -0
- package/dist/svelte/auth/RegisterClerkAuth.svelte +27 -0
- package/dist/svelte/auth/RegisterClerkAuth.svelte.d.ts +17 -0
- package/dist/svelte/auth/RegisterClerkAuth.svelte.d.ts.map +1 -0
- package/dist/svelte/auth/index.d.ts +2 -0
- package/dist/svelte/auth/index.d.ts.map +1 -1
- package/dist/svelte/auth/index.js +2 -0
- package/dist/svelte/tests/ClerkAuth.svelte.test.d.ts +2 -0
- package/dist/svelte/tests/ClerkAuth.svelte.test.d.ts.map +1 -0
- package/dist/svelte/tests/ClerkAuth.svelte.test.js +202 -0
- package/dist/svelte/tests/TestClerkAuthWrapper.svelte +16 -0
- package/dist/svelte/tests/TestClerkAuthWrapper.svelte.d.ts +8 -0
- package/dist/svelte/tests/TestClerkAuthWrapper.svelte.d.ts.map +1 -0
- package/dist/svelte/tests/testUtils.d.ts +1 -0
- package/dist/svelte/tests/testUtils.d.ts.map +1 -1
- package/dist/svelte/tests/testUtils.js +3 -1
- package/dist/testing.js +1 -1
- package/dist/tools/auth/clerk/index.d.ts +1 -1
- package/dist/tools/auth/clerk/types.d.ts +1 -1
- package/dist/tools/auth/clerk/types.d.ts.map +1 -1
- package/dist/tools/exports.d.ts +1 -0
- package/dist/tools/exports.d.ts.map +1 -1
- package/dist/tools/subscribe/types.d.ts +1 -1
- package/dist/tools/subscribe/types.d.ts.map +1 -1
- package/dist/worker/JazzMessageChannel.d.ts +36 -0
- package/dist/worker/JazzMessageChannel.d.ts.map +1 -0
- package/dist/worker/index.d.ts +7 -1
- package/dist/worker/index.d.ts.map +1 -1
- package/dist/worker/index.js +28 -17
- package/dist/worker/index.js.map +1 -1
- package/package.json +4 -4
- package/src/better-auth/auth/server.ts +9 -7
- package/src/better-auth/database-adapter/repository/generic.ts +3 -3
- package/src/better-auth/database-adapter/repository/session.ts +2 -2
- package/src/better-auth/database-adapter/schema.ts +5 -5
- package/src/media/create-image/react-native.ts +9 -7
- package/src/media/create-image-factory.test.ts +1 -1
- package/src/media/create-image-factory.ts +1 -1
- package/src/react/hooks.tsx +4 -2
- package/src/react-core/hooks.ts +321 -76
- package/src/react-core/tests/testUtils.tsx +2 -2
- package/src/react-core/tests/useCoState.selector.test.ts +309 -22
- package/src/react-core/tests/useCoStates.test.tsx +414 -0
- package/src/react-native-core/hooks.tsx +2 -0
- package/src/svelte/auth/ClerkAuth.svelte.ts +67 -0
- package/src/svelte/auth/JazzSvelteProviderWithClerk.svelte +156 -0
- package/src/svelte/auth/RegisterClerkAuth.svelte +27 -0
- package/src/svelte/auth/index.ts +2 -0
- package/src/svelte/tests/ClerkAuth.svelte.test.ts +305 -0
- package/src/svelte/tests/TestClerkAuthWrapper.svelte +16 -0
- package/src/svelte/tests/testUtils.ts +4 -1
- package/src/tools/auth/clerk/types.ts +1 -1
- package/src/tools/exports.ts +5 -0
- package/src/tools/subscribe/types.ts +1 -1
- package/src/tools/tests/inbox.test.ts +7 -7
- package/src/tools/tests/testStorage.ts +2 -2
- package/src/worker/JazzMessageChannel.ts +73 -0
- package/src/worker/index.ts +36 -17
- package/dist/chunk-MI24YFCY.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @vitest-environment happy-dom
|
|
2
2
|
|
|
3
3
|
import { cojsonInternals } from "cojson";
|
|
4
|
-
import { Account, co,
|
|
4
|
+
import { Account, co, z } from "jazz-tools";
|
|
5
5
|
import { beforeEach, describe, expect, expectTypeOf, it } from "vitest";
|
|
6
|
-
import { useCoState } from "../index.js";
|
|
6
|
+
import { useCoState, useCoStates, useSuspenseCoStates } from "../index.js";
|
|
7
7
|
import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
|
|
8
|
-
import { renderHook, waitFor } from "./testUtils.js";
|
|
9
|
-
import { useRef } from "react";
|
|
8
|
+
import { act, renderHook, waitFor } from "./testUtils.js";
|
|
9
|
+
import React, { Suspense, useRef } from "react";
|
|
10
10
|
|
|
11
11
|
beforeEach(async () => {
|
|
12
12
|
await setupJazzTestSync();
|
|
@@ -28,15 +28,15 @@ const useRenderCount = <T>(hook: () => T) => {
|
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
const TestMap = co.map({
|
|
32
|
+
value: z.string(),
|
|
33
|
+
get nested() {
|
|
34
|
+
return TestMap.optional();
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
|
|
31
38
|
describe("useCoState", () => {
|
|
32
39
|
it("should not re-render when a nested coValue is updated and not selected", async () => {
|
|
33
|
-
const TestMap = co.map({
|
|
34
|
-
value: z.string(),
|
|
35
|
-
get nested() {
|
|
36
|
-
return TestMap.optional();
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
|
|
40
40
|
const map = TestMap.create({
|
|
41
41
|
value: "1",
|
|
42
42
|
nested: TestMap.create({
|
|
@@ -74,13 +74,6 @@ describe("useCoState", () => {
|
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
it("should re-render when a nested coValue is updated and selected", async () => {
|
|
77
|
-
const TestMap = co.map({
|
|
78
|
-
value: z.string(),
|
|
79
|
-
get nested() {
|
|
80
|
-
return TestMap.optional();
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
|
|
84
77
|
const map = TestMap.create({
|
|
85
78
|
value: "1",
|
|
86
79
|
nested: TestMap.create({
|
|
@@ -122,6 +115,42 @@ describe("useCoState", () => {
|
|
|
122
115
|
});
|
|
123
116
|
|
|
124
117
|
it("should not re-render when equalityFn always returns true", async () => {
|
|
118
|
+
const map = TestMap.create({
|
|
119
|
+
value: "1",
|
|
120
|
+
nested: TestMap.create({
|
|
121
|
+
value: "1",
|
|
122
|
+
}),
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const { result } = renderHook(() =>
|
|
126
|
+
useRenderCount(() =>
|
|
127
|
+
useCoState(TestMap, map.$jazz.id, {
|
|
128
|
+
resolve: {
|
|
129
|
+
nested: true,
|
|
130
|
+
},
|
|
131
|
+
select: (v) => {
|
|
132
|
+
if (!v.$isLoaded) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
return v.nested?.value;
|
|
136
|
+
},
|
|
137
|
+
equalityFn: () => true,
|
|
138
|
+
}),
|
|
139
|
+
),
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
for (let i = 1; i <= 100; i++) {
|
|
143
|
+
map.nested!.$jazz.set("value", `${i}`);
|
|
144
|
+
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
expect(result.current.result).toEqual("1");
|
|
148
|
+
expect(result.current.renderCount).toEqual(1);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
describe("useCoStates", () => {
|
|
153
|
+
it("should not re-render when a nested coValue is updated and not selected", async () => {
|
|
125
154
|
const TestMap = co.map({
|
|
126
155
|
value: z.string(),
|
|
127
156
|
get nested() {
|
|
@@ -129,16 +158,114 @@ describe("useCoState", () => {
|
|
|
129
158
|
},
|
|
130
159
|
});
|
|
131
160
|
|
|
132
|
-
const
|
|
161
|
+
const map1 = TestMap.create({
|
|
133
162
|
value: "1",
|
|
134
163
|
nested: TestMap.create({
|
|
135
164
|
value: "1",
|
|
136
165
|
}),
|
|
137
166
|
});
|
|
167
|
+
const map2 = TestMap.create({
|
|
168
|
+
value: "2",
|
|
169
|
+
nested: TestMap.create({
|
|
170
|
+
value: "2",
|
|
171
|
+
}),
|
|
172
|
+
});
|
|
138
173
|
|
|
139
174
|
const { result } = renderHook(() =>
|
|
140
175
|
useRenderCount(() =>
|
|
141
|
-
|
|
176
|
+
useCoStates(TestMap, [map1.$jazz.id, map2.$jazz.id], {
|
|
177
|
+
resolve: {
|
|
178
|
+
nested: true,
|
|
179
|
+
},
|
|
180
|
+
select: (v) => {
|
|
181
|
+
if (!v.$isLoaded) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
return v.value;
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
187
|
+
),
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
await waitFor(() => {
|
|
191
|
+
expect(result.current.result).not.toBeUndefined();
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
for (let i = 1; i <= 100; i++) {
|
|
195
|
+
map1.nested!.$jazz.set("value", `${i}`);
|
|
196
|
+
map2.nested!.$jazz.set("value", `${i}`);
|
|
197
|
+
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
expect(result.current.result).toEqual(["1", "2"]);
|
|
201
|
+
expect(result.current.renderCount).toEqual(1);
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
it("should re-render when a nested coValue is updated and selected", async () => {
|
|
205
|
+
const map1 = TestMap.create({
|
|
206
|
+
value: "1",
|
|
207
|
+
nested: TestMap.create({
|
|
208
|
+
value: "1",
|
|
209
|
+
}),
|
|
210
|
+
});
|
|
211
|
+
const map2 = TestMap.create({
|
|
212
|
+
value: "1",
|
|
213
|
+
nested: TestMap.create({
|
|
214
|
+
value: "1",
|
|
215
|
+
}),
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
const { result } = renderHook(() =>
|
|
219
|
+
useRenderCount(() =>
|
|
220
|
+
useCoStates(TestMap, [map1.$jazz.id, map2.$jazz.id], {
|
|
221
|
+
resolve: {
|
|
222
|
+
nested: true,
|
|
223
|
+
},
|
|
224
|
+
select: (v) => {
|
|
225
|
+
if (!v.$isLoaded) {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
return v.nested?.value;
|
|
229
|
+
},
|
|
230
|
+
}),
|
|
231
|
+
),
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
await waitFor(() => {
|
|
235
|
+
expect(result.current.result).not.toBeUndefined();
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
for (let i = 1; i <= 100; i++) {
|
|
239
|
+
map1.nested!.$jazz.set("value", `${i}`);
|
|
240
|
+
map2.nested!.$jazz.set("value", `${i}`);
|
|
241
|
+
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
expect(result.current.result).toEqual(["100", "100"]);
|
|
245
|
+
|
|
246
|
+
// skips re-render on i = 1, only re-renders on i = [2,100], so initial render + 99 renders = 100
|
|
247
|
+
expect(result.current.renderCount).toEqual(100);
|
|
248
|
+
|
|
249
|
+
expectTypeOf(result.current.result).toEqualTypeOf<(string | undefined)[]>();
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
it("should not re-render when equalityFn always returns true", async () => {
|
|
253
|
+
const map1 = TestMap.create({
|
|
254
|
+
value: "1",
|
|
255
|
+
nested: TestMap.create({
|
|
256
|
+
value: "1",
|
|
257
|
+
}),
|
|
258
|
+
});
|
|
259
|
+
const map2 = TestMap.create({
|
|
260
|
+
value: "1",
|
|
261
|
+
nested: TestMap.create({
|
|
262
|
+
value: "1",
|
|
263
|
+
}),
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
const { result } = renderHook(() =>
|
|
267
|
+
useRenderCount(() =>
|
|
268
|
+
useCoStates(TestMap, [map1.$jazz.id, map2.$jazz.id], {
|
|
142
269
|
resolve: {
|
|
143
270
|
nested: true,
|
|
144
271
|
},
|
|
@@ -154,11 +281,171 @@ describe("useCoState", () => {
|
|
|
154
281
|
);
|
|
155
282
|
|
|
156
283
|
for (let i = 1; i <= 100; i++) {
|
|
157
|
-
|
|
284
|
+
map1.nested!.$jazz.set("value", `${i}`);
|
|
285
|
+
map2.nested!.$jazz.set("value", `${i}`);
|
|
158
286
|
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
159
287
|
}
|
|
160
288
|
|
|
161
|
-
expect(result.current.result).toEqual("1");
|
|
289
|
+
expect(result.current.result).toEqual(["1", "1"]);
|
|
290
|
+
expect(result.current.renderCount).toEqual(1);
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
describe("useSuspenseCoStates", () => {
|
|
295
|
+
it("should not re-render when a nested coValue is updated and not selected", async () => {
|
|
296
|
+
const map1 = TestMap.create({
|
|
297
|
+
value: "1",
|
|
298
|
+
nested: TestMap.create({
|
|
299
|
+
value: "1",
|
|
300
|
+
}),
|
|
301
|
+
});
|
|
302
|
+
const map2 = TestMap.create({
|
|
303
|
+
value: "2",
|
|
304
|
+
nested: TestMap.create({
|
|
305
|
+
value: "2",
|
|
306
|
+
}),
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
const wrapper = ({ children }: { children: React.ReactNode }) =>
|
|
310
|
+
React.createElement(
|
|
311
|
+
Suspense,
|
|
312
|
+
{ fallback: React.createElement("div", null, "Loading...") },
|
|
313
|
+
children,
|
|
314
|
+
);
|
|
315
|
+
|
|
316
|
+
const { result } = await act(async () => {
|
|
317
|
+
return renderHook(
|
|
318
|
+
() =>
|
|
319
|
+
useRenderCount(() =>
|
|
320
|
+
useSuspenseCoStates(TestMap, [map1.$jazz.id, map2.$jazz.id], {
|
|
321
|
+
resolve: {
|
|
322
|
+
nested: true,
|
|
323
|
+
},
|
|
324
|
+
select: (v) => v.value,
|
|
325
|
+
}),
|
|
326
|
+
),
|
|
327
|
+
{
|
|
328
|
+
wrapper,
|
|
329
|
+
},
|
|
330
|
+
);
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
await waitFor(() => {
|
|
334
|
+
expect(result.current.result).not.toBeUndefined();
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
for (let i = 1; i <= 100; i++) {
|
|
338
|
+
map1.nested!.$jazz.set("value", `${i}`);
|
|
339
|
+
map2.nested!.$jazz.set("value", `${i}`);
|
|
340
|
+
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
expect(result.current.result).toEqual(["1", "2"]);
|
|
344
|
+
expect(result.current.renderCount).toEqual(1);
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
it("should re-render when a nested coValue is updated and selected", async () => {
|
|
348
|
+
const map1 = TestMap.create({
|
|
349
|
+
value: "1",
|
|
350
|
+
nested: TestMap.create({
|
|
351
|
+
value: "1",
|
|
352
|
+
}),
|
|
353
|
+
});
|
|
354
|
+
const map2 = TestMap.create({
|
|
355
|
+
value: "1",
|
|
356
|
+
nested: TestMap.create({
|
|
357
|
+
value: "1",
|
|
358
|
+
}),
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
const wrapper = ({ children }: { children: React.ReactNode }) =>
|
|
362
|
+
React.createElement(
|
|
363
|
+
Suspense,
|
|
364
|
+
{ fallback: React.createElement("div", null, "Loading...") },
|
|
365
|
+
children,
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
const { result } = await act(async () => {
|
|
369
|
+
return renderHook(
|
|
370
|
+
() =>
|
|
371
|
+
useRenderCount(() =>
|
|
372
|
+
useSuspenseCoStates(TestMap, [map1.$jazz.id, map2.$jazz.id], {
|
|
373
|
+
resolve: {
|
|
374
|
+
nested: true,
|
|
375
|
+
},
|
|
376
|
+
select: (v) => v.nested?.value,
|
|
377
|
+
}),
|
|
378
|
+
),
|
|
379
|
+
{
|
|
380
|
+
wrapper,
|
|
381
|
+
},
|
|
382
|
+
);
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
await waitFor(() => {
|
|
386
|
+
expect(result.current.result).not.toBeUndefined();
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
for (let i = 1; i <= 100; i++) {
|
|
390
|
+
map1.nested!.$jazz.set("value", `${i}`);
|
|
391
|
+
map2.nested!.$jazz.set("value", `${i}`);
|
|
392
|
+
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
expect(result.current.result).toEqual(["100", "100"]);
|
|
396
|
+
|
|
397
|
+
// skips re-render on i = 1, only re-renders on i = [2,100], so initial render + 99 renders = 100
|
|
398
|
+
expect(result.current.renderCount).toEqual(100);
|
|
399
|
+
|
|
400
|
+
expectTypeOf(result.current.result).toEqualTypeOf<(string | undefined)[]>();
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
it("should not re-render when equalityFn always returns true", async () => {
|
|
404
|
+
const map1 = TestMap.create({
|
|
405
|
+
value: "1",
|
|
406
|
+
nested: TestMap.create({
|
|
407
|
+
value: "1",
|
|
408
|
+
}),
|
|
409
|
+
});
|
|
410
|
+
const map2 = TestMap.create({
|
|
411
|
+
value: "1",
|
|
412
|
+
nested: TestMap.create({
|
|
413
|
+
value: "1",
|
|
414
|
+
}),
|
|
415
|
+
});
|
|
416
|
+
|
|
417
|
+
const wrapper = ({ children }: { children: React.ReactNode }) =>
|
|
418
|
+
React.createElement(
|
|
419
|
+
Suspense,
|
|
420
|
+
{ fallback: React.createElement("div", null, "Loading...") },
|
|
421
|
+
children,
|
|
422
|
+
);
|
|
423
|
+
|
|
424
|
+
const { result } = await act(async () => {
|
|
425
|
+
return renderHook(
|
|
426
|
+
() =>
|
|
427
|
+
useRenderCount(() =>
|
|
428
|
+
useSuspenseCoStates(TestMap, [map1.$jazz.id, map2.$jazz.id], {
|
|
429
|
+
resolve: {
|
|
430
|
+
nested: true,
|
|
431
|
+
},
|
|
432
|
+
select: (v) => v.nested?.value,
|
|
433
|
+
equalityFn: () => true,
|
|
434
|
+
}),
|
|
435
|
+
),
|
|
436
|
+
{
|
|
437
|
+
wrapper,
|
|
438
|
+
},
|
|
439
|
+
);
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
for (let i = 1; i <= 100; i++) {
|
|
443
|
+
map1.nested!.$jazz.set("value", `${i}`);
|
|
444
|
+
map2.nested!.$jazz.set("value", `${i}`);
|
|
445
|
+
await Account.getMe().$jazz.waitForAllCoValuesSync();
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
expect(result.current.result).toEqual(["1", "1"]);
|
|
162
449
|
expect(result.current.renderCount).toEqual(1);
|
|
163
450
|
});
|
|
164
451
|
});
|