jazz-tools 0.17.14 → 0.18.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.
- package/.svelte-kit/__package__/jazz.class.svelte.js +1 -1
- package/.svelte-kit/__package__/media/image.svelte +3 -9
- package/.svelte-kit/__package__/media/image.svelte.d.ts +1 -6
- package/.svelte-kit/__package__/media/image.svelte.d.ts.map +1 -1
- package/.svelte-kit/__package__/media/image.types.d.ts +7 -0
- package/.svelte-kit/__package__/media/image.types.d.ts.map +1 -0
- package/.svelte-kit/__package__/media/image.types.js +1 -0
- package/.svelte-kit/__package__/tests/media/image.svelte.test.js +31 -31
- package/.turbo/turbo-build.log +50 -50
- package/CHANGELOG.md +31 -0
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/{chunk-LZOF6WP5.js → chunk-HJ3GTGY7.js} +1320 -1018
- package/dist/chunk-HJ3GTGY7.js.map +1 -0
- package/dist/index.js +18 -18
- package/dist/index.js.map +1 -1
- package/dist/inspector/{custom-element-ZSNTCECD.js → custom-element-WCY6D3QJ.js} +3 -3
- package/dist/inspector/{custom-element-ZSNTCECD.js.map → custom-element-WCY6D3QJ.js.map} +1 -1
- package/dist/inspector/index.js +1 -1
- package/dist/inspector/index.js.map +1 -1
- package/dist/inspector/register-custom-element.js +1 -1
- package/dist/media/{chunk-E5J3WLQW.js → chunk-KR2V6X2N.js} +14 -9
- package/dist/media/chunk-KR2V6X2N.js.map +1 -0
- package/dist/media/create-image.d.ts +6 -6
- package/dist/media/index.browser.d.ts +6 -6
- package/dist/media/index.browser.js +1 -1
- package/dist/media/index.d.ts +1 -1
- package/dist/media/index.js +1 -1
- package/dist/media/index.native.d.ts +6 -6
- package/dist/media/index.native.js +1 -1
- package/dist/media/utils.d.ts.map +1 -1
- package/dist/prosemirror/index.js +2 -2
- package/dist/prosemirror/index.js.map +1 -1
- package/dist/react/index.js +7 -5
- package/dist/react/index.js.map +1 -1
- package/dist/react-core/hooks.d.ts.map +1 -1
- package/dist/react-core/index.js +4658 -23
- package/dist/react-core/index.js.map +1 -1
- package/dist/react-native-core/index.js +1 -1
- package/dist/react-native-core/index.js.map +1 -1
- package/dist/svelte/jazz.class.svelte.js +1 -1
- package/dist/svelte/media/image.svelte +3 -9
- package/dist/svelte/media/image.svelte.d.ts +1 -6
- package/dist/svelte/media/image.svelte.d.ts.map +1 -1
- package/dist/svelte/media/image.types.d.ts +7 -0
- package/dist/svelte/media/image.types.d.ts.map +1 -0
- package/dist/svelte/media/image.types.js +1 -0
- package/dist/svelte/tests/media/image.svelte.test.js +31 -31
- package/dist/testing.js +18 -14
- package/dist/testing.js.map +1 -1
- package/dist/tools/coValues/CoFieldInit.d.ts +13 -0
- package/dist/tools/coValues/CoFieldInit.d.ts.map +1 -0
- package/dist/tools/coValues/CoValueBase.d.ts +18 -15
- package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
- package/dist/tools/coValues/account.d.ts +100 -46
- package/dist/tools/coValues/account.d.ts.map +1 -1
- package/dist/tools/coValues/coFeed.d.ts +78 -62
- package/dist/tools/coValues/coFeed.d.ts.map +1 -1
- package/dist/tools/coValues/coList.d.ts +212 -99
- package/dist/tools/coValues/coList.d.ts.map +1 -1
- package/dist/tools/coValues/coMap.d.ts +200 -192
- package/dist/tools/coValues/coMap.d.ts.map +1 -1
- package/dist/tools/coValues/coPlainText.d.ts +30 -22
- package/dist/tools/coValues/coPlainText.d.ts.map +1 -1
- package/dist/tools/coValues/deepLoading.d.ts +13 -13
- package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
- package/dist/tools/coValues/extensions/imageDef.d.ts +1 -1
- package/dist/tools/coValues/group.d.ts +32 -32
- package/dist/tools/coValues/group.d.ts.map +1 -1
- package/dist/tools/coValues/inbox.d.ts.map +1 -1
- package/dist/tools/coValues/interfaces.d.ts +18 -17
- package/dist/tools/coValues/interfaces.d.ts.map +1 -1
- package/dist/tools/coValues/profile.d.ts +6 -5
- package/dist/tools/coValues/profile.d.ts.map +1 -1
- package/dist/tools/coValues/schemaUnion.d.ts +3 -3
- package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
- package/dist/tools/exports.d.ts +1 -1
- package/dist/tools/exports.d.ts.map +1 -1
- package/dist/tools/implementation/anonymousJazzAgent.d.ts +2 -1
- package/dist/tools/implementation/anonymousJazzAgent.d.ts.map +1 -1
- package/dist/tools/implementation/schema.d.ts +5 -5
- package/dist/tools/implementation/schema.d.ts.map +1 -1
- package/dist/tools/implementation/symbols.d.ts +2 -0
- package/dist/tools/implementation/symbols.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +2 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +6 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +8 -3
- package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +12 -7
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +13 -7
- package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +11 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +4 -0
- package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +4 -0
- package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/typeConverters/{CoFieldInit.d.ts → CoFieldSchemaInit.d.ts} +7 -7
- package/dist/tools/implementation/zodSchema/typeConverters/CoFieldSchemaInit.d.ts.map +1 -0
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +4 -4
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +4 -4
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/zodCo.d.ts +2 -2
- package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
- package/dist/tools/internal.d.ts +2 -1
- package/dist/tools/internal.d.ts.map +1 -1
- package/dist/tools/lib/migration.d.ts +1 -1
- package/dist/tools/lib/migration.d.ts.map +1 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/dist/tools/subscribe/index.d.ts +1 -1
- package/dist/tools/subscribe/index.d.ts.map +1 -1
- package/dist/tools/subscribe/utils.d.ts +2 -2
- package/dist/tools/subscribe/utils.d.ts.map +1 -1
- package/dist/tools/testing.d.ts.map +1 -1
- package/dist/tools/tests/utils.d.ts +2 -6
- package/dist/tools/tests/utils.d.ts.map +1 -1
- package/dist/worker/index.js +3 -3
- package/dist/worker/index.js.map +1 -1
- package/package.json +4 -4
- package/src/browser/auth/PasskeyAuth.ts +2 -2
- package/src/browser/createBrowserContext.ts +2 -2
- package/src/browser/tests/PasskeyAuth.test.ts +2 -2
- package/src/inspector/custom-element.tsx +2 -2
- package/src/inspector/viewer/new-app.tsx +1 -1
- package/src/media/create-image.test.ts +7 -7
- package/src/media/create-image.ts +5 -3
- package/src/media/index.ts +1 -1
- package/src/media/utils.test.ts +72 -66
- package/src/media/utils.ts +9 -6
- package/src/prosemirror/lib/plugin.ts +1 -1
- package/src/prosemirror/lib/sync.ts +1 -1
- package/src/prosemirror/tests/plugin.test.ts +4 -4
- package/src/react/media/image.tsx +2 -2
- package/src/react/tests/media/image.test.tsx +52 -32
- package/src/react-core/hooks.ts +11 -5
- package/src/react-core/tests/useAccount.test.ts +16 -22
- package/src/react-core/tests/useCoState.test.ts +19 -19
- package/src/react-core/tests/useInboxSender.test.ts +5 -2
- package/src/react-core/tests/usePassPhraseAuth.test.ts +6 -6
- package/src/react-native-core/media/image.tsx +1 -1
- package/src/svelte/jazz.class.svelte.ts +1 -1
- package/src/svelte/media/image.svelte +3 -9
- package/src/svelte/media/image.types.ts +7 -0
- package/src/svelte/tests/media/image.svelte.test.ts +34 -32
- package/src/tools/auth/DemoAuth.ts +2 -2
- package/src/tools/auth/PassphraseAuth.ts +2 -2
- package/src/tools/auth/clerk/index.ts +2 -2
- package/src/tools/auth/clerk/tests/JazzClerkAuth.test.ts +1 -1
- package/src/tools/coValues/CoFieldInit.ts +20 -0
- package/src/tools/coValues/CoValueBase.ts +40 -60
- package/src/tools/coValues/account.ts +306 -232
- package/src/tools/coValues/coFeed.ts +185 -153
- package/src/tools/coValues/coList.ts +507 -334
- package/src/tools/coValues/coMap.ts +420 -286
- package/src/tools/coValues/coPlainText.ts +94 -110
- package/src/tools/coValues/deepLoading.ts +13 -13
- package/src/tools/coValues/group.ts +100 -114
- package/src/tools/coValues/inbox.ts +16 -14
- package/src/tools/coValues/interfaces.ts +49 -31
- package/src/tools/coValues/profile.ts +8 -6
- package/src/tools/coValues/request.ts +9 -9
- package/src/tools/coValues/schemaUnion.ts +11 -5
- package/src/tools/exports.ts +1 -1
- package/src/tools/implementation/ContextManager.ts +4 -4
- package/src/tools/implementation/anonymousJazzAgent.ts +2 -1
- package/src/tools/implementation/createContext.ts +1 -1
- package/src/tools/implementation/devtoolsFormatters.ts +9 -9
- package/src/tools/implementation/invites.ts +2 -2
- package/src/tools/implementation/schema.ts +7 -7
- package/src/tools/implementation/symbols.ts +3 -0
- package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +2 -2
- package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +11 -2
- package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +18 -7
- package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +17 -7
- package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +20 -11
- package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +19 -2
- package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +6 -0
- package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +6 -0
- package/src/tools/implementation/zodSchema/typeConverters/{CoFieldInit.ts → CoFieldSchemaInit.ts} +11 -11
- package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +4 -4
- package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.ts +4 -4
- package/src/tools/implementation/zodSchema/zodCo.ts +2 -2
- package/src/tools/internal.ts +2 -1
- package/src/tools/lib/migration.ts +5 -5
- package/src/tools/subscribe/SubscriptionScope.ts +32 -24
- package/src/tools/subscribe/index.ts +4 -4
- package/src/tools/subscribe/utils.ts +11 -11
- package/src/tools/testing.ts +17 -13
- package/src/tools/tests/ContextManager.test.ts +68 -57
- package/src/tools/tests/PassphraseAuth.test.ts +2 -2
- package/src/tools/tests/account.test.ts +139 -69
- package/src/tools/tests/coDiscriminatedUnion.test-d.ts +12 -6
- package/src/tools/tests/coDiscriminatedUnion.test.ts +26 -17
- package/src/tools/tests/coFeed.test-d.ts +18 -17
- package/src/tools/tests/coFeed.test.ts +108 -97
- package/src/tools/tests/coList.test-d.ts +18 -23
- package/src/tools/tests/coList.test.ts +350 -165
- package/src/tools/tests/coMap.record.test-d.ts +9 -13
- package/src/tools/tests/coMap.record.test.ts +37 -23
- package/src/tools/tests/coMap.test-d.ts +43 -21
- package/src/tools/tests/coMap.test.ts +360 -182
- package/src/tools/tests/coOptional.test.ts +28 -13
- package/src/tools/tests/coPlainText.test.ts +15 -15
- package/src/tools/tests/createContext.test.ts +14 -14
- package/src/tools/tests/deepLoading.test.ts +95 -94
- package/src/tools/tests/exportImport.test.ts +61 -41
- package/src/tools/tests/groupsAndAccounts.test.ts +333 -116
- package/src/tools/tests/inbox.test.ts +22 -17
- package/src/tools/tests/interfaces.test.ts +12 -11
- package/src/tools/tests/invites.test.ts +6 -4
- package/src/tools/tests/load.test.ts +20 -18
- package/src/tools/tests/patterns/notifications.test.ts +6 -6
- package/src/tools/tests/patterns/quest.test.ts +3 -3
- package/src/tools/tests/patterns/requestToJoin.test.ts +22 -22
- package/src/tools/tests/request.test.ts +38 -39
- package/src/tools/tests/schemaUnion.test.ts +64 -10
- package/src/tools/tests/subscribe.test.ts +64 -64
- package/src/tools/tests/testing.test.ts +5 -9
- package/src/tools/tests/utils.ts +3 -3
- package/src/tools/tests/zod.test.ts +3 -3
- package/src/worker/index.ts +3 -3
- package/dist/chunk-LZOF6WP5.js.map +0 -1
- package/dist/media/chunk-E5J3WLQW.js.map +0 -1
- package/dist/tools/implementation/zodSchema/typeConverters/CoFieldInit.d.ts.map +0 -1
@@ -24,12 +24,12 @@ describe("CoMap.Record", () => {
|
|
24
24
|
matches(person);
|
25
25
|
});
|
26
26
|
|
27
|
-
test("has the
|
27
|
+
test("has the owner property", () => {
|
28
28
|
const Person = co.record(z.string(), z.string());
|
29
29
|
|
30
30
|
const person = Person.create({ name: "John" }, Account.getMe());
|
31
31
|
|
32
|
-
expectTypeOf(person.
|
32
|
+
expectTypeOf(person.$jazz.owner).toEqualTypeOf<Group>();
|
33
33
|
});
|
34
34
|
|
35
35
|
test("Record with reference", () => {
|
@@ -128,7 +128,7 @@ describe("CoMap.Record", () => {
|
|
128
128
|
pet1: Dog.create({ name: "Rex" }),
|
129
129
|
});
|
130
130
|
|
131
|
-
person.pet1
|
131
|
+
person.pet1!.$jazz.set("owner", person);
|
132
132
|
|
133
133
|
type ExpectedType = {
|
134
134
|
[key: string]: Loaded<typeof Dog> | undefined;
|
@@ -156,7 +156,7 @@ describe("CoMap.Record", () => {
|
|
156
156
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
157
157
|
});
|
158
158
|
|
159
|
-
const loadedPerson = await Person.load(person.id, {
|
159
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
160
160
|
resolve: {
|
161
161
|
$each: true,
|
162
162
|
},
|
@@ -186,7 +186,7 @@ describe("CoMap.Record", () => {
|
|
186
186
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
187
187
|
});
|
188
188
|
|
189
|
-
const loadedPerson = await Person.load(person.id, {
|
189
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
190
190
|
resolve: {
|
191
191
|
pet1: true,
|
192
192
|
},
|
@@ -222,7 +222,7 @@ describe("CoMap.Record", () => {
|
|
222
222
|
const userId: string = "pet1";
|
223
223
|
const userId2: string = "pet3";
|
224
224
|
|
225
|
-
const loadedPerson = await Person.load(person.id, {
|
225
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
226
226
|
resolve: {
|
227
227
|
[userId]: true,
|
228
228
|
pet2: true,
|
@@ -262,7 +262,7 @@ describe("CoMap.Record", () => {
|
|
262
262
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
263
263
|
});
|
264
264
|
|
265
|
-
const loadedPerson = await Person.load(person.id);
|
265
|
+
const loadedPerson = await Person.load(person.$jazz.id);
|
266
266
|
|
267
267
|
type Expect = NonNullable<typeof loadedPerson> extends never
|
268
268
|
? "error: is never"
|
@@ -291,18 +291,14 @@ describe("CoMap.Record", () => {
|
|
291
291
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
292
292
|
});
|
293
293
|
|
294
|
-
const loadedPerson = await Person.load(person.id, {
|
294
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
295
295
|
resolve: {
|
296
296
|
$each: { $onError: null },
|
297
297
|
},
|
298
298
|
});
|
299
299
|
|
300
300
|
type ExpectedType = {
|
301
|
-
[key: string]:
|
302
|
-
| (Loaded<typeof Dog> & {
|
303
|
-
$onError: never;
|
304
|
-
})
|
305
|
-
| null;
|
301
|
+
[key: string]: Loaded<typeof Dog> | null;
|
306
302
|
} | null;
|
307
303
|
|
308
304
|
function matches(value: ExpectedType) {
|
@@ -13,6 +13,7 @@ import { Loaded } from "../implementation/zodSchema/zodSchema.js";
|
|
13
13
|
import { Account } from "../index.js";
|
14
14
|
import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
|
15
15
|
import { waitFor } from "./utils.js";
|
16
|
+
import { TypeSym } from "../internal.js";
|
16
17
|
|
17
18
|
const Crypto = await WasmCrypto.create();
|
18
19
|
|
@@ -54,7 +55,7 @@ describe("CoMap.Record", async () => {
|
|
54
55
|
test("create a Record with nullable values", () => {
|
55
56
|
const Person = co.record(z.string(), z.string().nullable());
|
56
57
|
const person = Person.create({ name: "John", age: null });
|
57
|
-
person.bio
|
58
|
+
person.$jazz.set("bio", null);
|
58
59
|
expect(person.name).toEqual("John");
|
59
60
|
expect(person.age).toEqual(null);
|
60
61
|
expect(person.bio).toEqual(null);
|
@@ -75,7 +76,7 @@ describe("CoMap.Record", async () => {
|
|
75
76
|
const person = Person.create({ name: "John" }, Account.getMe());
|
76
77
|
|
77
78
|
expect(person.name).toEqual("John");
|
78
|
-
expect(person.
|
79
|
+
expect(person.$jazz.raw.get("name")).toEqual("John");
|
79
80
|
});
|
80
81
|
|
81
82
|
test("create a Record with a group as owner", () => {
|
@@ -84,7 +85,7 @@ describe("CoMap.Record", async () => {
|
|
84
85
|
const person = Person.create({ name: "John" }, Group.create());
|
85
86
|
|
86
87
|
expect(person.name).toEqual("John");
|
87
|
-
expect(person.
|
88
|
+
expect(person.$jazz.raw.get("name")).toEqual("John");
|
88
89
|
});
|
89
90
|
|
90
91
|
test("Empty schema", () => {
|
@@ -120,7 +121,7 @@ describe("CoMap.Record", async () => {
|
|
120
121
|
|
121
122
|
const person = Person.create({ name: "John" });
|
122
123
|
|
123
|
-
person.name
|
124
|
+
person.$jazz.set("name", "Jane");
|
124
125
|
|
125
126
|
expect(person.name).toEqual("Jane");
|
126
127
|
});
|
@@ -130,14 +131,15 @@ describe("CoMap.Record", async () => {
|
|
130
131
|
|
131
132
|
const person = Person.create({ name: "John", age: "20" });
|
132
133
|
|
133
|
-
|
134
|
+
// Deleting a non-existent property does nothing
|
135
|
+
person.$jazz.delete("nonExistentProperty");
|
136
|
+
|
137
|
+
person.$jazz.delete("age");
|
134
138
|
|
135
139
|
expect(person.name).toEqual("John");
|
136
140
|
expect("age" in person).toEqual(false);
|
137
141
|
|
138
142
|
expect(person.toJSON()).toEqual({
|
139
|
-
_type: "CoMap",
|
140
|
-
id: person.id,
|
141
143
|
name: "John",
|
142
144
|
});
|
143
145
|
});
|
@@ -153,21 +155,21 @@ describe("CoMap.Record", async () => {
|
|
153
155
|
pet1: Dog.create({ name: "Rex" }),
|
154
156
|
});
|
155
157
|
|
156
|
-
person.pet1
|
158
|
+
person.$jazz.set("pet1", Dog.create({ name: "Fido" }));
|
157
159
|
|
158
160
|
expect(person.pet1?.name).toEqual("Fido");
|
159
161
|
});
|
160
162
|
|
161
|
-
test("changes should be listed in
|
163
|
+
test("changes should be listed in getEdits()", () => {
|
162
164
|
const Person = co.record(z.string(), z.string());
|
163
165
|
|
164
166
|
const person = Person.create({ name: "John" });
|
165
167
|
|
166
168
|
const me = Account.getMe();
|
167
169
|
|
168
|
-
person.name
|
170
|
+
person.$jazz.set("name", "Jane");
|
169
171
|
|
170
|
-
const edits = person.
|
172
|
+
const edits = person.$jazz.getEdits().name?.all;
|
171
173
|
expect(edits).toEqual([
|
172
174
|
expect.objectContaining({
|
173
175
|
value: "John",
|
@@ -182,8 +184,14 @@ describe("CoMap.Record", async () => {
|
|
182
184
|
madeAt: expect.any(Date),
|
183
185
|
}),
|
184
186
|
]);
|
185
|
-
expect(edits?.[0]?.by).toMatchObject({
|
186
|
-
|
187
|
+
expect(edits?.[0]?.by).toMatchObject({
|
188
|
+
[TypeSym]: "Account",
|
189
|
+
$jazz: expect.objectContaining({ id: me.$jazz.id }),
|
190
|
+
});
|
191
|
+
expect(edits?.[1]?.by).toMatchObject({
|
192
|
+
[TypeSym]: "Account",
|
193
|
+
$jazz: expect.objectContaining({ id: me.$jazz.id }),
|
194
|
+
});
|
187
195
|
});
|
188
196
|
});
|
189
197
|
|
@@ -201,7 +209,7 @@ describe("CoMap.Record", async () => {
|
|
201
209
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
202
210
|
});
|
203
211
|
|
204
|
-
const loadedPerson = await Person.load(person.id, {
|
212
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
205
213
|
resolve: {
|
206
214
|
$each: true,
|
207
215
|
},
|
@@ -225,7 +233,7 @@ describe("CoMap.Record", async () => {
|
|
225
233
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
226
234
|
});
|
227
235
|
|
228
|
-
const loadedPerson = await Person.load(person.id, {
|
236
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
229
237
|
resolve: {
|
230
238
|
pet1: true,
|
231
239
|
},
|
@@ -248,7 +256,7 @@ describe("CoMap.Record", async () => {
|
|
248
256
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
249
257
|
});
|
250
258
|
|
251
|
-
const loadedPerson = await Person.load(person.id, {
|
259
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
252
260
|
resolve: {
|
253
261
|
pet3: true,
|
254
262
|
},
|
@@ -270,7 +278,7 @@ describe("CoMap.Record", async () => {
|
|
270
278
|
pet2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
271
279
|
});
|
272
280
|
|
273
|
-
const loadedPerson = await Person.load(person.id);
|
281
|
+
const loadedPerson = await Person.load(person.$jazz.id);
|
274
282
|
|
275
283
|
assert(loadedPerson);
|
276
284
|
expect(loadedPerson.pet1?.name).toEqual("Rex");
|
@@ -293,7 +301,7 @@ describe("CoMap.Record", async () => {
|
|
293
301
|
const spy = vi.fn((person) => updates.push(person));
|
294
302
|
|
295
303
|
Person.subscribe(
|
296
|
-
person.id,
|
304
|
+
person.$jazz.id,
|
297
305
|
{
|
298
306
|
resolve: {
|
299
307
|
$each: true,
|
@@ -310,7 +318,7 @@ describe("CoMap.Record", async () => {
|
|
310
318
|
|
311
319
|
expect(updates[0]?.pet1?.name).toEqual("Rex");
|
312
320
|
|
313
|
-
person.pet1
|
321
|
+
person.$jazz.set("pet1", Dog.create({ name: "Fido", breed: "Poodle" }));
|
314
322
|
|
315
323
|
await waitFor(() => expect(spy).toHaveBeenCalledTimes(2));
|
316
324
|
|
@@ -471,7 +479,10 @@ describe("CoRecord unique methods", () => {
|
|
471
479
|
{ owner: group, unique: "test-record" },
|
472
480
|
);
|
473
481
|
|
474
|
-
const foundRecord = await ItemRecord.loadUnique(
|
482
|
+
const foundRecord = await ItemRecord.loadUnique(
|
483
|
+
"test-record",
|
484
|
+
group.$jazz.id,
|
485
|
+
);
|
475
486
|
expect(foundRecord).toEqual(originalRecord);
|
476
487
|
expect(foundRecord?.item1).toBe(1);
|
477
488
|
expect(foundRecord?.item2).toBe(2);
|
@@ -481,7 +492,10 @@ describe("CoRecord unique methods", () => {
|
|
481
492
|
const ItemRecord = co.record(z.string(), z.number());
|
482
493
|
const group = Group.create();
|
483
494
|
|
484
|
-
const foundRecord = await ItemRecord.loadUnique(
|
495
|
+
const foundRecord = await ItemRecord.loadUnique(
|
496
|
+
"non-existent",
|
497
|
+
group.$jazz.id,
|
498
|
+
);
|
485
499
|
expect(foundRecord).toBeNull();
|
486
500
|
});
|
487
501
|
|
@@ -560,7 +574,7 @@ describe("CoRecord unique methods", () => {
|
|
560
574
|
{ owner: group, unique: "find-test" },
|
561
575
|
);
|
562
576
|
|
563
|
-
const foundId = ItemRecord.findUnique("find-test", group.id);
|
564
|
-
expect(foundId).toBe(originalRecord.id);
|
577
|
+
const foundId = ItemRecord.findUnique("find-test", group.$jazz.id);
|
578
|
+
expect(foundId).toBe(originalRecord.$jazz.id);
|
565
579
|
});
|
566
580
|
});
|
@@ -45,14 +45,14 @@ describe("CoMap", async () => {
|
|
45
45
|
matches(john);
|
46
46
|
});
|
47
47
|
|
48
|
-
test("has the
|
48
|
+
test("has the owner property", () => {
|
49
49
|
const Person = co.map({
|
50
50
|
name: z.string(),
|
51
51
|
});
|
52
52
|
|
53
53
|
const john = Person.create({ name: "John" }, Account.getMe());
|
54
54
|
|
55
|
-
expectTypeOf(john.
|
55
|
+
expectTypeOf(john.$jazz.owner).toEqualTypeOf<Group>();
|
56
56
|
});
|
57
57
|
|
58
58
|
test("create CoMap with reference using CoValue", () => {
|
@@ -99,10 +99,10 @@ describe("CoMap", async () => {
|
|
99
99
|
},
|
100
100
|
});
|
101
101
|
|
102
|
+
// @ts-expect-error - Object literal may only specify known properties
|
102
103
|
const person = Person.create({
|
103
104
|
// @ts-expect-error - breed is missing
|
104
105
|
dog1: { name: "Rex", items },
|
105
|
-
// @ts-expect-error - Object literal may only specify known properties
|
106
106
|
dog2: { name: "Fido", breed: "Labrador", extra: "extra" },
|
107
107
|
friend: {
|
108
108
|
dog1: {
|
@@ -278,7 +278,29 @@ describe("CoMap", async () => {
|
|
278
278
|
dog: Dog.create({ name: "Rex" }),
|
279
279
|
});
|
280
280
|
|
281
|
-
john.dog
|
281
|
+
john.$jazz.set("dog", Dog.create({ name: "Fido" }));
|
282
|
+
});
|
283
|
+
|
284
|
+
test("cannot update a non-existing key", () => {
|
285
|
+
const Person = co.map({
|
286
|
+
name: z.string(),
|
287
|
+
});
|
288
|
+
|
289
|
+
const john = Person.create({ name: "John" });
|
290
|
+
|
291
|
+
// @ts-expect-error - Argument of type '"non-existing-key"' is not assignable to parameter of type '"name"'
|
292
|
+
john.$jazz.set("non-existing-key", "Jane");
|
293
|
+
});
|
294
|
+
|
295
|
+
test("cannot set a value with an incorrect type", () => {
|
296
|
+
const Person = co.map({
|
297
|
+
name: z.string(),
|
298
|
+
});
|
299
|
+
|
300
|
+
const john = Person.create({ name: "John" });
|
301
|
+
|
302
|
+
// @ts-expect-error - Argument of type 'number' is not assignable to parameter of type 'string'
|
303
|
+
john.$jazz.set("name", 12);
|
282
304
|
});
|
283
305
|
|
284
306
|
test("update a reference on a loaded value", () => {
|
@@ -301,10 +323,13 @@ describe("CoMap", async () => {
|
|
301
323
|
dog: Dog.create({ name: "Rex", siblings: co.list(Dog).create([]) }),
|
302
324
|
}) as Loaded<typeof Person, { dog: { siblings: true } }>;
|
303
325
|
|
304
|
-
john.
|
305
|
-
|
306
|
-
|
307
|
-
|
326
|
+
john.$jazz.set(
|
327
|
+
"dog",
|
328
|
+
Dog.create({
|
329
|
+
name: "Fido",
|
330
|
+
siblings: co.list(Dog).create([]),
|
331
|
+
}),
|
332
|
+
);
|
308
333
|
});
|
309
334
|
});
|
310
335
|
|
@@ -516,7 +541,7 @@ describe("CoMap resolution", async () => {
|
|
516
541
|
dog2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
517
542
|
});
|
518
543
|
|
519
|
-
const loadedPerson = await Person.load(person.id, {
|
544
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
520
545
|
resolve: {
|
521
546
|
dog1: true,
|
522
547
|
},
|
@@ -564,7 +589,7 @@ describe("CoMap resolution", async () => {
|
|
564
589
|
|
565
590
|
const userId: string = "dog1";
|
566
591
|
|
567
|
-
const loadedPerson = await Person.load(person.id, {
|
592
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
568
593
|
resolve: {
|
569
594
|
[userId]: true,
|
570
595
|
},
|
@@ -612,7 +637,7 @@ describe("CoMap resolution", async () => {
|
|
612
637
|
dog2: Dog.create({ name: "Fido", breed: "Poodle" }),
|
613
638
|
});
|
614
639
|
|
615
|
-
const loadedPerson = await Person.load(person.id, {
|
640
|
+
const loadedPerson = await Person.load(person.$jazz.id, {
|
616
641
|
resolve: {
|
617
642
|
dog1: true,
|
618
643
|
dog2: { $onError: null },
|
@@ -634,12 +659,9 @@ describe("CoMap resolution", async () => {
|
|
634
659
|
|
635
660
|
assert(loadedPerson);
|
636
661
|
expectTypeOf<typeof loadedPerson.dog1.name>().toEqualTypeOf<string>();
|
637
|
-
expectTypeOf<typeof loadedPerson.dog2>().toEqualTypeOf<
|
638
|
-
|
639
|
-
|
640
|
-
})
|
641
|
-
| null
|
642
|
-
>();
|
662
|
+
expectTypeOf<typeof loadedPerson.dog2>().branded.toEqualTypeOf<Loaded<
|
663
|
+
typeof Dog
|
664
|
+
> | null>();
|
643
665
|
});
|
644
666
|
|
645
667
|
test("loading a map with a nullable field", async () => {
|
@@ -659,13 +681,13 @@ describe("CoMap resolution", async () => {
|
|
659
681
|
dog: Dog.create({ name: "Rex", breed: "Labrador" }),
|
660
682
|
});
|
661
683
|
|
662
|
-
const loadedPerson = await Person.load(person.id);
|
684
|
+
const loadedPerson = await Person.load(person.$jazz.id);
|
663
685
|
|
664
686
|
expectTypeOf(loadedPerson!).toEqualTypeOf<
|
665
687
|
{
|
666
|
-
name: string;
|
667
|
-
age: number | null;
|
668
|
-
dog: Loaded<typeof Dog> | null;
|
688
|
+
readonly name: string;
|
689
|
+
readonly age: number | null;
|
690
|
+
readonly dog: Loaded<typeof Dog> | null;
|
669
691
|
} & CoMap
|
670
692
|
>();
|
671
693
|
});
|