jazz-tools 0.17.14 → 0.18.1
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 +60 -46
- package/CHANGELOG.md +41 -0
- package/dist/better-auth/auth/client.d.ts +29 -0
- package/dist/better-auth/auth/client.d.ts.map +1 -0
- package/dist/better-auth/auth/client.js +127 -0
- package/dist/better-auth/auth/client.js.map +1 -0
- package/dist/better-auth/auth/react.d.ts +2170 -0
- package/dist/better-auth/auth/react.d.ts.map +1 -0
- package/dist/better-auth/auth/react.js +40 -0
- package/dist/better-auth/auth/react.js.map +1 -0
- package/dist/better-auth/auth/server.d.ts +14 -0
- package/dist/better-auth/auth/server.d.ts.map +1 -0
- package/dist/better-auth/auth/server.js +198 -0
- package/dist/better-auth/auth/server.js.map +1 -0
- package/dist/better-auth/auth/tests/client.test.d.ts +2 -0
- package/dist/better-auth/auth/tests/client.test.d.ts.map +1 -0
- package/dist/better-auth/auth/tests/server.test.d.ts +2 -0
- package/dist/better-auth/auth/tests/server.test.d.ts.map +1 -0
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/{chunk-LZOF6WP5.js → chunk-IERUTUXB.js} +1336 -1017
- package/dist/chunk-IERUTUXB.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 +4675 -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 +101 -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 +210 -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 +3 -3
- 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 +23 -4
- package/src/better-auth/auth/client.ts +169 -0
- package/src/better-auth/auth/react.tsx +105 -0
- package/src/better-auth/auth/server.ts +250 -0
- package/src/better-auth/auth/tests/client.test.ts +249 -0
- package/src/better-auth/auth/tests/server.test.ts +226 -0
- 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 +311 -232
- package/src/tools/coValues/coFeed.ts +185 -153
- package/src/tools/coValues/coList.ts +507 -334
- package/src/tools/coValues/coMap.ts +434 -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 +3 -3
- 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 +70 -59
- package/src/tools/tests/PassphraseAuth.test.ts +2 -2
- package/src/tools/tests/account.test.ts +188 -67
- 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 +459 -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 +7 -7
- 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 +7 -11
- 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/tsup.config.ts +9 -0
- 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
package/src/media/utils.test.ts
CHANGED
@@ -28,104 +28,104 @@ describe("highestResAvailable", async () => {
|
|
28
28
|
});
|
29
29
|
|
30
30
|
it("returns original if progressive is false", async () => {
|
31
|
-
const original = await createFileStream(account.
|
31
|
+
const original = await createFileStream(account.$jazz.owner);
|
32
32
|
const imageDef = ImageDefinition.create(
|
33
33
|
{
|
34
34
|
originalSize: [1920, 1080],
|
35
35
|
progressive: false,
|
36
36
|
original,
|
37
37
|
},
|
38
|
-
{ owner: account.
|
38
|
+
{ owner: account.$jazz.owner },
|
39
39
|
);
|
40
40
|
|
41
|
-
imageDef
|
41
|
+
imageDef.$jazz.set("1920x1080", original);
|
42
42
|
|
43
43
|
const result = highestResAvailable(imageDef, 256, 256);
|
44
|
-
expect(result?.image.id).toBe(original.id);
|
44
|
+
expect(result?.image.$jazz.id).toBe(original.$jazz.id);
|
45
45
|
});
|
46
46
|
|
47
47
|
it("returns original if progressive is true but no resizes present", async () => {
|
48
|
-
const original = await createFileStream(account.
|
48
|
+
const original = await createFileStream(account.$jazz.owner, 1);
|
49
49
|
const imageDef = ImageDefinition.create(
|
50
50
|
{
|
51
51
|
originalSize: [1920, 1080],
|
52
52
|
progressive: true,
|
53
53
|
original,
|
54
54
|
},
|
55
|
-
{ owner: account.
|
55
|
+
{ owner: account.$jazz.owner },
|
56
56
|
);
|
57
57
|
|
58
|
-
imageDef
|
58
|
+
imageDef.$jazz.set("1920x1080", original);
|
59
59
|
|
60
60
|
const result = highestResAvailable(imageDef, 256, 256);
|
61
|
-
expect(result?.image.id).toBe(original.id);
|
61
|
+
expect(result?.image.$jazz.id).toBe(original.$jazz.id);
|
62
62
|
});
|
63
63
|
|
64
64
|
it("returns closest available resize if progressive is true", async () => {
|
65
|
-
const original = await createFileStream(account.
|
66
|
-
const resize256 = await createFileStream(account.
|
65
|
+
const original = await createFileStream(account.$jazz.owner);
|
66
|
+
const resize256 = await createFileStream(account.$jazz.owner, 1);
|
67
67
|
const imageDef = ImageDefinition.create(
|
68
68
|
{
|
69
69
|
originalSize: [1920, 1080],
|
70
70
|
progressive: true,
|
71
71
|
original,
|
72
72
|
},
|
73
|
-
{ owner: account.
|
73
|
+
{ owner: account.$jazz.owner },
|
74
74
|
);
|
75
75
|
|
76
|
-
imageDef
|
77
|
-
imageDef
|
76
|
+
imageDef.$jazz.set("1920x1080", original);
|
77
|
+
imageDef.$jazz.set("256x256", resize256);
|
78
78
|
|
79
79
|
const result = highestResAvailable(imageDef, 256, 256);
|
80
|
-
expect(result?.image.id).toBe(resize256.id);
|
80
|
+
expect(result?.image.$jazz.id).toBe(resize256.$jazz.id);
|
81
81
|
});
|
82
82
|
|
83
83
|
it("returns original if wanted size matches original size", async () => {
|
84
|
-
const original = await createFileStream(account.
|
84
|
+
const original = await createFileStream(account.$jazz.owner);
|
85
85
|
const imageDef = ImageDefinition.create(
|
86
86
|
{
|
87
87
|
originalSize: [1024, 1024],
|
88
88
|
progressive: true,
|
89
89
|
original,
|
90
90
|
},
|
91
|
-
{ owner: account.
|
91
|
+
{ owner: account.$jazz.owner },
|
92
92
|
);
|
93
93
|
|
94
|
-
imageDef
|
94
|
+
imageDef.$jazz.set("1024x1024", original);
|
95
95
|
|
96
96
|
const result = highestResAvailable(imageDef, 1024, 1024);
|
97
|
-
expect(result?.image.id).toBe(original.id);
|
97
|
+
expect(result?.image.$jazz.id).toBe(original.$jazz.id);
|
98
98
|
});
|
99
99
|
|
100
100
|
it("returns best fit among multiple resizes", async () => {
|
101
|
-
const original = await createFileStream(account.
|
102
|
-
const resize256 = await createFileStream(account.
|
103
|
-
const resize1024 = await createFileStream(account.
|
104
|
-
const resize2048 = await createFileStream(account.
|
101
|
+
const original = await createFileStream(account.$jazz.owner);
|
102
|
+
const resize256 = await createFileStream(account.$jazz.owner, 1);
|
103
|
+
const resize1024 = await createFileStream(account.$jazz.owner, 1);
|
104
|
+
const resize2048 = await createFileStream(account.$jazz.owner, 1);
|
105
105
|
const imageDef = ImageDefinition.create(
|
106
106
|
{
|
107
107
|
originalSize: [2048, 2048],
|
108
108
|
progressive: true,
|
109
109
|
original,
|
110
110
|
},
|
111
|
-
{ owner: account.
|
111
|
+
{ owner: account.$jazz.owner },
|
112
112
|
);
|
113
113
|
|
114
|
-
imageDef
|
115
|
-
imageDef
|
116
|
-
imageDef
|
114
|
+
imageDef.$jazz.set("256x256", resize256);
|
115
|
+
imageDef.$jazz.set("1024x1024", resize1024);
|
116
|
+
imageDef.$jazz.set("2048x2048", resize2048);
|
117
117
|
|
118
118
|
// Closest to 900x900 is 1024
|
119
119
|
const result = highestResAvailable(imageDef, 900, 900);
|
120
|
-
expect(result?.image.id).toBe(resize1024.id);
|
120
|
+
expect(result?.image.$jazz.id).toBe(resize1024.$jazz.id);
|
121
121
|
});
|
122
122
|
|
123
123
|
it("returns the best fit resolution", async () => {
|
124
|
-
const original = await createFileStream(account.
|
125
|
-
const resize256 = await createFileStream(account.
|
126
|
-
const resize2048 = await createFileStream(account.
|
124
|
+
const original = await createFileStream(account.$jazz.owner, 1);
|
125
|
+
const resize256 = await createFileStream(account.$jazz.owner, 1);
|
126
|
+
const resize2048 = await createFileStream(account.$jazz.owner, 1);
|
127
127
|
// 1024 is not loaded yet
|
128
|
-
const resize1024 = FileStream.create({ owner: account.
|
128
|
+
const resize1024 = FileStream.create({ owner: account.$jazz.owner });
|
129
129
|
resize1024.start({ mimeType: "image/jpeg" });
|
130
130
|
// Don't end resize1024, so it has no chunks
|
131
131
|
|
@@ -135,42 +135,42 @@ describe("highestResAvailable", async () => {
|
|
135
135
|
progressive: true,
|
136
136
|
original,
|
137
137
|
},
|
138
|
-
{ owner: account.
|
138
|
+
{ owner: account.$jazz.owner },
|
139
139
|
);
|
140
|
-
imageDef
|
141
|
-
imageDef
|
142
|
-
imageDef
|
140
|
+
imageDef.$jazz.set("256x256", resize256);
|
141
|
+
imageDef.$jazz.set("1024x1024", resize1024);
|
142
|
+
imageDef.$jazz.set("2048x2048", resize2048);
|
143
143
|
|
144
144
|
// Closest to 900x900 is 1024
|
145
145
|
const result = highestResAvailable(imageDef, 900, 900);
|
146
|
-
expect(result?.image.id).toBe(resize2048.id);
|
146
|
+
expect(result?.image.$jazz.id).toBe(resize2048.$jazz.id);
|
147
147
|
});
|
148
148
|
|
149
149
|
it("returns original if no resizes are loaded (missing chunks)", async () => {
|
150
|
-
const original = await createFileStream(account.
|
150
|
+
const original = await createFileStream(account.$jazz.owner);
|
151
151
|
const imageDef = ImageDefinition.create(
|
152
152
|
{
|
153
153
|
originalSize: [256, 256],
|
154
154
|
progressive: true,
|
155
155
|
original,
|
156
156
|
},
|
157
|
-
{ owner: account.
|
157
|
+
{ owner: account.$jazz.owner },
|
158
158
|
);
|
159
159
|
|
160
|
-
imageDef
|
160
|
+
imageDef.$jazz.set("256x256", original);
|
161
161
|
// 1024 is not loaded yet
|
162
|
-
const resize1024 = FileStream.create({ owner: account.
|
162
|
+
const resize1024 = FileStream.create({ owner: account.$jazz.owner });
|
163
163
|
resize1024.start({ mimeType: "image/jpeg" });
|
164
164
|
// Don't end resize1024, so it has no chunks
|
165
|
-
imageDef
|
165
|
+
imageDef.$jazz.set("1024x1024", resize1024);
|
166
166
|
|
167
167
|
const result = highestResAvailable(imageDef, 1024, 1024);
|
168
168
|
// Only original is valid
|
169
|
-
expect(result?.image.id).toBe(original.id);
|
169
|
+
expect(result?.image.$jazz.id).toBe(original.$jazz.id);
|
170
170
|
});
|
171
171
|
|
172
172
|
it("returns the first loaded resize if original is not loaded yet(missing chunks)", async () => {
|
173
|
-
const original = FileStream.create({ owner: account.
|
173
|
+
const original = FileStream.create({ owner: account.$jazz.owner });
|
174
174
|
original.start({ mimeType: "image/jpeg" });
|
175
175
|
// Don't call .end(), so it has no chunks
|
176
176
|
|
@@ -180,18 +180,21 @@ describe("highestResAvailable", async () => {
|
|
180
180
|
progressive: true,
|
181
181
|
original,
|
182
182
|
},
|
183
|
-
{ owner: account.
|
183
|
+
{ owner: account.$jazz.owner },
|
184
184
|
);
|
185
185
|
|
186
|
-
imageDef
|
186
|
+
imageDef.$jazz.set(
|
187
|
+
"256x256",
|
188
|
+
await createFileStream(account.$jazz.owner, 1),
|
189
|
+
);
|
187
190
|
|
188
191
|
const result = highestResAvailable(imageDef, 1024, 1024);
|
189
192
|
// Only original is valid
|
190
|
-
expect(result?.image.id).toBe(imageDef["256x256"].id);
|
193
|
+
expect(result?.image.$jazz.id).toBe(imageDef["256x256"]!.$jazz.id);
|
191
194
|
});
|
192
195
|
|
193
196
|
it("returns the highest resolution if no good match is found", async () => {
|
194
|
-
const original = await createFileStream(account.
|
197
|
+
const original = await createFileStream(account.$jazz.owner, 1);
|
195
198
|
|
196
199
|
const imageDef = ImageDefinition.create(
|
197
200
|
{
|
@@ -199,14 +202,17 @@ describe("highestResAvailable", async () => {
|
|
199
202
|
progressive: true,
|
200
203
|
original,
|
201
204
|
},
|
202
|
-
{ owner: account.
|
205
|
+
{ owner: account.$jazz.owner },
|
203
206
|
);
|
204
207
|
|
205
|
-
imageDef
|
206
|
-
|
208
|
+
imageDef.$jazz.set(
|
209
|
+
"256x256",
|
210
|
+
await createFileStream(account.$jazz.owner, 1),
|
211
|
+
);
|
212
|
+
imageDef.$jazz.set("300x300", original);
|
207
213
|
|
208
214
|
const result = highestResAvailable(imageDef, 1024, 1024);
|
209
|
-
expect(result?.image.id).toBe(original.id);
|
215
|
+
expect(result?.image.$jazz.id).toBe(original.$jazz.id);
|
210
216
|
});
|
211
217
|
});
|
212
218
|
|
@@ -237,12 +243,12 @@ describe("loadImageBySize", async () => {
|
|
237
243
|
},
|
238
244
|
{ owner },
|
239
245
|
);
|
240
|
-
imageDef
|
246
|
+
imageDef.$jazz.set(`${originalSize[0]}x${originalSize[1]}`, original);
|
241
247
|
|
242
248
|
for (const size of sizes) {
|
243
249
|
if (!size) continue;
|
244
250
|
const [w, h] = size;
|
245
|
-
imageDef
|
251
|
+
imageDef.$jazz.set(`${w}x${h}`, await createFileStream(owner, 1));
|
246
252
|
}
|
247
253
|
return imageDef;
|
248
254
|
};
|
@@ -250,7 +256,7 @@ describe("loadImageBySize", async () => {
|
|
250
256
|
it("returns original if progressive is false", async () => {
|
251
257
|
const imageDef = await createImageDef([[1920, 1080]], false);
|
252
258
|
const result = await loadImageBySize(imageDef, 256, 256);
|
253
|
-
expect(result?.image.id).toBe(imageDef["1920x1080"]
|
259
|
+
expect(result?.image.$jazz.id).toBe(imageDef["1920x1080"]!.$jazz.id);
|
254
260
|
});
|
255
261
|
|
256
262
|
it("returns the original image already loaded", async () => {
|
@@ -266,20 +272,20 @@ describe("loadImageBySize", async () => {
|
|
266
272
|
setActiveAccount(account2);
|
267
273
|
|
268
274
|
const result = await loadImageBySize(imageDef, 256, 256);
|
269
|
-
expect(result?.image.id).toBe(imageDef["1920x1080"]
|
275
|
+
expect(result?.image.$jazz.id).toBe(imageDef["1920x1080"]!.$jazz.id);
|
270
276
|
expect(result?.image.isBinaryStreamEnded()).toBe(true);
|
271
277
|
expect(result?.image.asBase64()).toStrictEqual(expect.any(String));
|
272
278
|
});
|
273
279
|
|
274
280
|
it("returns null if no sizes are available", async () => {
|
275
|
-
const original = await createFileStream(account.
|
281
|
+
const original = await createFileStream(account.$jazz.owner, 1);
|
276
282
|
const imageDef = ImageDefinition.create(
|
277
283
|
{
|
278
284
|
originalSize: [1920, 1080],
|
279
285
|
progressive: true,
|
280
286
|
original,
|
281
287
|
},
|
282
|
-
{ owner: account.
|
288
|
+
{ owner: account.$jazz.owner },
|
283
289
|
);
|
284
290
|
const result = await loadImageBySize(imageDef, 256, 256);
|
285
291
|
expect(result).toBeNull();
|
@@ -290,8 +296,8 @@ describe("loadImageBySize", async () => {
|
|
290
296
|
[256, 256],
|
291
297
|
[1920, 1080],
|
292
298
|
]);
|
293
|
-
const result = await loadImageBySize(imageDef.id, 256, 256);
|
294
|
-
expect(result?.image.id).toBe(imageDef["256x256"]
|
299
|
+
const result = await loadImageBySize(imageDef.$jazz.id, 256, 256);
|
300
|
+
expect(result?.image.$jazz.id).toBe(imageDef["256x256"]!.$jazz.id);
|
295
301
|
expect(result?.width).toBe(256);
|
296
302
|
expect(result?.height).toBe(256);
|
297
303
|
});
|
@@ -303,7 +309,7 @@ describe("loadImageBySize", async () => {
|
|
303
309
|
[2048, 2048],
|
304
310
|
]);
|
305
311
|
const result = await loadImageBySize(imageDef, 900, 900);
|
306
|
-
expect(result?.image.id).toBe(imageDef["1024x1024"]
|
312
|
+
expect(result?.image.$jazz.id).toBe(imageDef["1024x1024"]!.$jazz.id);
|
307
313
|
expect(result?.width).toBe(1024);
|
308
314
|
expect(result?.height).toBe(1024);
|
309
315
|
});
|
@@ -314,20 +320,20 @@ describe("loadImageBySize", async () => {
|
|
314
320
|
[300, 300],
|
315
321
|
]);
|
316
322
|
const result = await loadImageBySize(imageDef, 1024, 1024);
|
317
|
-
expect(result?.image.id).toBe(imageDef["300x300"]
|
323
|
+
expect(result?.image.$jazz.id).toBe(imageDef["300x300"]!.$jazz.id);
|
318
324
|
expect(result?.width).toBe(300);
|
319
325
|
expect(result?.height).toBe(300);
|
320
326
|
});
|
321
327
|
|
322
328
|
it("returns null if the best target is not loaded", async () => {
|
323
|
-
const original = await createFileStream(account.
|
329
|
+
const original = await createFileStream(account.$jazz.owner, 1);
|
324
330
|
const imageDef = ImageDefinition.create(
|
325
331
|
{
|
326
332
|
originalSize: [256, 256],
|
327
333
|
progressive: true,
|
328
334
|
original,
|
329
335
|
},
|
330
|
-
{ owner: account.
|
336
|
+
{ owner: account.$jazz.owner },
|
331
337
|
);
|
332
338
|
// No resizes added
|
333
339
|
const result = await loadImageBySize(imageDef, 1024, 1024);
|
@@ -340,7 +346,7 @@ describe("loadImageBySize", async () => {
|
|
340
346
|
[1024, 1024],
|
341
347
|
]);
|
342
348
|
const result = await loadImageBySize(imageDef, 1024, 1024);
|
343
|
-
expect(result?.image.id).toBe(imageDef["1024x1024"]
|
349
|
+
expect(result?.image.$jazz.id).toBe(imageDef["1024x1024"]!.$jazz.id);
|
344
350
|
expect(result?.width).toBe(1024);
|
345
351
|
expect(result?.height).toBe(1024);
|
346
352
|
});
|
@@ -365,9 +371,9 @@ describe("loadImageBySize", async () => {
|
|
365
371
|
const account2 = await createJazzTestAccount();
|
366
372
|
setActiveAccount(account2);
|
367
373
|
|
368
|
-
const result = await loadImageBySize(imageDef.id, 1024, 1024);
|
374
|
+
const result = await loadImageBySize(imageDef.$jazz.id, 1024, 1024);
|
369
375
|
expect(result).not.toBeNull();
|
370
|
-
expect(result?.image.id).toBe(imageDef["1024x1024"]
|
376
|
+
expect(result?.image.$jazz.id).toBe(imageDef["1024x1024"]!.$jazz.id);
|
371
377
|
expect(result?.image.isBinaryStreamEnded()).toBe(true);
|
372
378
|
expect(result?.image.asBase64()).toStrictEqual(expect.any(String));
|
373
379
|
});
|
package/src/media/utils.ts
CHANGED
@@ -6,7 +6,7 @@ export function highestResAvailable(
|
|
6
6
|
wantedWidth: number,
|
7
7
|
wantedHeight: number,
|
8
8
|
): { width: number; height: number; image: FileStream } | null {
|
9
|
-
const availableSizes: [number, number, string][] = image.
|
9
|
+
const availableSizes: [number, number, string][] = image.$jazz.raw
|
10
10
|
.keys()
|
11
11
|
.filter((key) => /^\d+x\d+$/.test(key))
|
12
12
|
.map((key) => {
|
@@ -29,7 +29,9 @@ export function highestResAvailable(
|
|
29
29
|
return {
|
30
30
|
size,
|
31
31
|
match: sizesMatchWanted(size[0], size[1], wantedWidth, wantedHeight),
|
32
|
-
isLoaded: isLoaded(
|
32
|
+
isLoaded: isLoaded(
|
33
|
+
image.$jazz.raw.get(size[2]) as CoID<any> | undefined,
|
34
|
+
),
|
33
35
|
};
|
34
36
|
})
|
35
37
|
.sort((a, b) => a.match - b.match);
|
@@ -102,7 +104,7 @@ function isLoaded(id: CoID<any> | null | undefined): boolean {
|
|
102
104
|
return false;
|
103
105
|
}
|
104
106
|
|
105
|
-
return !!Account.getMe().
|
107
|
+
return !!Account.getMe().$jazz.localNode.getLoaded(id);
|
106
108
|
}
|
107
109
|
|
108
110
|
export async function loadImage(
|
@@ -131,7 +133,7 @@ export async function loadImage(
|
|
131
133
|
return null;
|
132
134
|
}
|
133
135
|
|
134
|
-
const loadedOriginal = await FileStream.load(imageOrId.original.id);
|
136
|
+
const loadedOriginal = await FileStream.load(imageOrId.original.$jazz.id);
|
135
137
|
|
136
138
|
if (!loadedOriginal) {
|
137
139
|
console.warn("Unable to find the original image");
|
@@ -150,6 +152,7 @@ export async function loadImageBySize(
|
|
150
152
|
wantedWidth: number,
|
151
153
|
wantedHeight: number,
|
152
154
|
): Promise<{ width: number; height: number; image: FileStream } | null> {
|
155
|
+
// @ts-expect-error The resolved type for CoMap does not include catchall properties
|
153
156
|
const image: ImageDefinition | null =
|
154
157
|
typeof imageOrId === "string"
|
155
158
|
? await ImageDefinition.load(imageOrId)
|
@@ -163,7 +166,7 @@ export async function loadImageBySize(
|
|
163
166
|
return loadImage(imageOrId);
|
164
167
|
}
|
165
168
|
|
166
|
-
const availableSizes: [number, number, string][] = image.
|
169
|
+
const availableSizes: [number, number, string][] = image.$jazz.raw
|
167
170
|
.keys()
|
168
171
|
.filter((key) => /^\d+x\d+$/.test(key))
|
169
172
|
.map((key) => {
|
@@ -189,7 +192,7 @@ export async function loadImageBySize(
|
|
189
192
|
// image[bestTarget.size[2]] returns undefined if FileStream hasn't loaded yet.
|
190
193
|
// Since we only need the file's ID to fetch it later, we check the raw _refs
|
191
194
|
// which contain only the linked covalue's ID.
|
192
|
-
const file = image.
|
195
|
+
const file = image.$jazz.refs[bestTarget.size[2]];
|
193
196
|
|
194
197
|
if (!file) {
|
195
198
|
return null;
|
@@ -109,7 +109,7 @@ export function createSyncHandlers(coRichText: CoRichText | undefined) {
|
|
109
109
|
const str = proseMirrorToHtml(tr.doc);
|
110
110
|
localChange = true;
|
111
111
|
try {
|
112
|
-
coRichText.applyDiff(str);
|
112
|
+
coRichText.$jazz.applyDiff(str);
|
113
113
|
} finally {
|
114
114
|
localChange = false;
|
115
115
|
}
|
@@ -64,7 +64,7 @@ describe("createJazzPlugin", () => {
|
|
64
64
|
const { coRichText, view } = await setupTest();
|
65
65
|
|
66
66
|
// Update CoRichText content
|
67
|
-
coRichText.applyDiff("<p>Updated content</p>");
|
67
|
+
coRichText.$jazz.applyDiff("<p>Updated content</p>");
|
68
68
|
|
69
69
|
// Wait for the next tick to allow the update to propagate
|
70
70
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
@@ -135,7 +135,7 @@ describe("createJazzPlugin", () => {
|
|
135
135
|
expect(view.state.selection.to).toBe(5);
|
136
136
|
|
137
137
|
// Update CoRichText content
|
138
|
-
coRichText.applyDiff("<p>Hello world</p>");
|
138
|
+
coRichText.$jazz.applyDiff("<p>Hello world</p>");
|
139
139
|
|
140
140
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
141
141
|
|
@@ -153,7 +153,7 @@ describe("createJazzPlugin", () => {
|
|
153
153
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
154
154
|
|
155
155
|
// Update CoRichText content
|
156
|
-
coRichText.applyDiff(
|
156
|
+
coRichText.$jazz.applyDiff(
|
157
157
|
"<ol><li><p>A <strong>hu</strong><em><strong>man</strong></em>.</p></li></ol>",
|
158
158
|
);
|
159
159
|
|
@@ -171,7 +171,7 @@ describe("createJazzPlugin", () => {
|
|
171
171
|
);
|
172
172
|
|
173
173
|
// Update CoRichText content
|
174
|
-
coRichText.applyDiff("<p>A human💪</p>");
|
174
|
+
coRichText.$jazz.applyDiff("<p>A human💪</p>");
|
175
175
|
|
176
176
|
// Wait for the next tick to allow the update to propagate
|
177
177
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
@@ -149,7 +149,7 @@ export const Image = forwardRef<HTMLImageElement, ImageProps>(function Image(
|
|
149
149
|
);
|
150
150
|
|
151
151
|
if (!bestImage) return image.placeholderDataURL;
|
152
|
-
if (lastBestImage.current?.[0] === bestImage.image.id)
|
152
|
+
if (lastBestImage.current?.[0] === bestImage.image.$jazz.id)
|
153
153
|
return lastBestImage.current?.[1];
|
154
154
|
|
155
155
|
const blob = bestImage.image.toBlob();
|
@@ -157,7 +157,7 @@ export const Image = forwardRef<HTMLImageElement, ImageProps>(function Image(
|
|
157
157
|
if (blob) {
|
158
158
|
const url = URL.createObjectURL(blob);
|
159
159
|
revokeObjectURL(lastBestImage.current?.[1]);
|
160
|
-
lastBestImage.current = [bestImage.image.id, url];
|
160
|
+
lastBestImage.current = [bestImage.image.$jazz.id, url];
|
161
161
|
return url;
|
162
162
|
}
|
163
163
|
|