jazz-tools 0.18.38 → 0.19.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.d.ts +8 -8
- package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -1
- package/.svelte-kit/__package__/jazz.class.svelte.js +39 -14
- package/.svelte-kit/__package__/media/image.svelte +6 -5
- package/.svelte-kit/__package__/media/image.svelte.d.ts.map +1 -1
- package/.svelte-kit/__package__/tests/AccountCoState.svelte.test-d.d.ts +2 -0
- package/.svelte-kit/__package__/tests/AccountCoState.svelte.test-d.d.ts.map +1 -0
- package/.svelte-kit/__package__/tests/AccountCoState.svelte.test-d.js +19 -0
- package/.svelte-kit/__package__/tests/CoState.svelte.test-d.d.ts +2 -0
- package/.svelte-kit/__package__/tests/CoState.svelte.test-d.d.ts.map +1 -0
- package/.svelte-kit/__package__/tests/CoState.svelte.test-d.js +16 -0
- package/.svelte-kit/__package__/tests/CoState.svelte.test.d.ts +2 -0
- package/.svelte-kit/__package__/tests/CoState.svelte.test.d.ts.map +1 -0
- package/.svelte-kit/__package__/tests/CoState.svelte.test.js +42 -0
- package/.svelte-kit/__package__/tests/TestCoStateWrapper.svelte +23 -0
- package/.svelte-kit/__package__/tests/TestCoStateWrapper.svelte.d.ts +12 -0
- package/.svelte-kit/__package__/tests/TestCoStateWrapper.svelte.d.ts.map +1 -0
- package/.turbo/turbo-build.log +62 -62
- package/CHANGELOG.md +32 -0
- package/dist/better-auth/database-adapter/index.js +14 -11
- package/dist/better-auth/database-adapter/index.js.map +1 -1
- package/dist/better-auth/database-adapter/repository/generic.d.ts +1 -1
- package/dist/better-auth/database-adapter/repository/generic.d.ts.map +1 -1
- package/dist/better-auth/database-adapter/repository/user.d.ts.map +1 -1
- package/dist/{chunk-OSQ7S47Q.js → chunk-NCNM6UDZ.js} +563 -252
- package/dist/chunk-NCNM6UDZ.js.map +1 -0
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/dist/media/{chunk-K6GCHLQU.js → chunk-3LKBM3G3.js} +23 -15
- package/dist/media/chunk-3LKBM3G3.js.map +1 -0
- package/dist/media/create-image/browser.d.ts +2 -2
- package/dist/media/create-image/react-native.d.ts +2 -2
- package/dist/media/create-image/server.d.ts +2 -2
- package/dist/media/create-image-factory.d.ts +2 -2
- package/dist/media/index.browser.js +1 -1
- package/dist/media/index.js +1 -1
- package/dist/media/index.native.js +1 -1
- package/dist/media/index.server.js +1 -1
- package/dist/media/utils.d.ts.map +1 -1
- package/dist/react/hooks.d.ts +1 -1
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +31 -15
- package/dist/react/index.js.map +1 -1
- package/dist/react/media/image.d.ts.map +1 -1
- package/dist/react-core/hooks.d.ts +126 -224
- package/dist/react-core/hooks.d.ts.map +1 -1
- package/dist/react-core/index.js +65 -63
- package/dist/react-core/index.js.map +1 -1
- package/dist/react-core/subscription-provider.d.ts.map +1 -1
- package/dist/react-core/tests/createCoValueSubscriptionContext.test.d.ts +2 -0
- package/dist/react-core/tests/createCoValueSubscriptionContext.test.d.ts.map +1 -0
- package/dist/react-core/tests/useAccount.selector.test.d.ts +2 -0
- package/dist/react-core/tests/useAccount.selector.test.d.ts.map +1 -0
- package/dist/react-core/tests/useCoState.selector.test.d.ts +2 -0
- package/dist/react-core/tests/useCoState.selector.test.d.ts.map +1 -0
- 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 +7 -5
- package/dist/react-native-core/index.js.map +1 -1
- package/dist/react-native-core/media/image.d.ts.map +1 -1
- package/dist/svelte/jazz.class.svelte.d.ts +8 -8
- package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
- package/dist/svelte/jazz.class.svelte.js +39 -14
- package/dist/svelte/media/image.svelte +6 -5
- package/dist/svelte/media/image.svelte.d.ts.map +1 -1
- package/dist/svelte/tests/AccountCoState.svelte.test-d.d.ts +2 -0
- package/dist/svelte/tests/AccountCoState.svelte.test-d.d.ts.map +1 -0
- package/dist/svelte/tests/AccountCoState.svelte.test-d.js +19 -0
- package/dist/svelte/tests/CoState.svelte.test-d.d.ts +2 -0
- package/dist/svelte/tests/CoState.svelte.test-d.d.ts.map +1 -0
- package/dist/svelte/tests/CoState.svelte.test-d.js +16 -0
- package/dist/svelte/tests/CoState.svelte.test.d.ts +2 -0
- package/dist/svelte/tests/CoState.svelte.test.d.ts.map +1 -0
- package/dist/svelte/tests/CoState.svelte.test.js +42 -0
- package/dist/svelte/tests/TestCoStateWrapper.svelte +23 -0
- package/dist/svelte/tests/TestCoStateWrapper.svelte.d.ts +12 -0
- package/dist/svelte/tests/TestCoStateWrapper.svelte.d.ts.map +1 -0
- package/dist/testing.js +3 -1
- package/dist/testing.js.map +1 -1
- package/dist/tools/coValues/CoValueBase.d.ts +4 -1
- package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
- package/dist/tools/coValues/account.d.ts +6 -6
- package/dist/tools/coValues/account.d.ts.map +1 -1
- package/dist/tools/coValues/coFeed.d.ts +5 -5
- package/dist/tools/coValues/coFeed.d.ts.map +1 -1
- package/dist/tools/coValues/coList.d.ts +9 -8
- package/dist/tools/coValues/coList.d.ts.map +1 -1
- package/dist/tools/coValues/coMap.d.ts +17 -17
- package/dist/tools/coValues/coMap.d.ts.map +1 -1
- package/dist/tools/coValues/coPlainText.d.ts +3 -3
- package/dist/tools/coValues/coPlainText.d.ts.map +1 -1
- package/dist/tools/coValues/coVector.d.ts +3 -3
- package/dist/tools/coValues/coVector.d.ts.map +1 -1
- package/dist/tools/coValues/deepLoading.d.ts +71 -40
- package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
- package/dist/tools/coValues/extensions/imageDef.d.ts +1 -1
- package/dist/tools/coValues/extensions/imageDef.d.ts.map +1 -1
- package/dist/tools/coValues/group.d.ts +2 -2
- 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 +17 -9
- package/dist/tools/coValues/interfaces.d.ts.map +1 -1
- package/dist/tools/coValues/request.d.ts.map +1 -1
- package/dist/tools/coValues/schemaUnion.d.ts +6 -9
- package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
- package/dist/tools/exports.d.ts +3 -3
- package/dist/tools/exports.d.ts.map +1 -1
- package/dist/tools/implementation/refs.d.ts +3 -3
- package/dist/tools/implementation/refs.d.ts.map +1 -1
- package/dist/tools/implementation/schema.d.ts +2 -2
- package/dist/tools/implementation/schema.d.ts.map +1 -1
- package/dist/tools/implementation/schemaUtils.d.ts +8 -0
- package/dist/tools/implementation/schemaUtils.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +33 -18
- package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts +19 -7
- package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +23 -12
- package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +29 -18
- package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +39 -22
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts +1 -0
- package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +30 -19
- package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts +5 -0
- package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.d.ts +6 -5
- package/dist/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +3 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/GroupSchema.d.ts +3 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/GroupSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +3 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +3 -2
- package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +3 -0
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesMaybeLoaded.d.ts +22 -0
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesMaybeLoaded.d.ts.map +1 -0
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts +4 -0
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesMaybeLoaded.d.ts +9 -0
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesMaybeLoaded.d.ts.map +1 -0
- package/dist/tools/implementation/zodSchema/unionUtils.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/zodSchema.d.ts +7 -6
- package/dist/tools/implementation/zodSchema/zodSchema.d.ts.map +1 -1
- package/dist/tools/internal.d.ts +3 -3
- package/dist/tools/internal.d.ts.map +1 -1
- package/dist/tools/lib/utils.d.ts +14 -0
- package/dist/tools/lib/utils.d.ts.map +1 -0
- package/dist/tools/lib/utils.test.d.ts +2 -0
- package/dist/tools/lib/utils.test.d.ts.map +1 -0
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts +3 -2
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -1
- package/dist/tools/subscribe/JazzError.d.ts +4 -3
- package/dist/tools/subscribe/JazzError.d.ts.map +1 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts +7 -5
- package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/dist/tools/subscribe/index.d.ts.map +1 -1
- package/dist/tools/subscribe/types.d.ts +23 -3
- package/dist/tools/subscribe/types.d.ts.map +1 -1
- package/dist/tools/subscribe/utils.d.ts.map +1 -1
- package/dist/tools/testing.d.ts +3 -2
- package/dist/tools/testing.d.ts.map +1 -1
- package/dist/tools/tests/schema.resolved.test.d.ts +2 -0
- package/dist/tools/tests/schema.resolved.test.d.ts.map +1 -0
- package/dist/tools/tests/utils.d.ts +2 -1
- package/dist/tools/tests/utils.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/better-auth/database-adapter/index.ts +2 -2
- package/src/better-auth/database-adapter/repository/account.ts +3 -3
- package/src/better-auth/database-adapter/repository/generic.ts +9 -6
- package/src/better-auth/database-adapter/repository/user.ts +6 -2
- package/src/better-auth/database-adapter/schema.ts +1 -1
- package/src/better-auth/database-adapter/tests/index.test.ts +3 -4
- package/src/inspector/tests/viewer/history-view.test.tsx +6 -2
- package/src/media/utils.test.ts +5 -0
- package/src/media/utils.ts +25 -16
- package/src/react/hooks.tsx +2 -2
- package/src/react/index.ts +2 -2
- package/src/react/media/image.tsx +10 -2
- package/src/react/tests/useAcceptInvite.test.ts +3 -1
- package/src/react-core/hooks.ts +226 -304
- package/src/react-core/subscription-provider.tsx +14 -7
- package/src/react-core/tests/createCoValueSubscriptionContext.test.tsx +233 -0
- package/src/react-core/tests/subscription.bench.tsx +32 -15
- package/src/react-core/tests/{useAccountWithSelector.test.ts → useAccount.selector.test.ts} +72 -24
- package/src/react-core/tests/useAccount.test.ts +92 -106
- package/src/react-core/tests/{useCoStateWithSelector.test.ts → useCoState.selector.test.ts} +23 -8
- package/src/react-core/tests/useCoState.test.ts +173 -49
- package/src/react-core/tests/useInboxSender.test.ts +3 -1
- package/src/react-core/tests/usePassPhraseAuth.test.ts +11 -82
- package/src/react-core/tests/useSubscriptionSelector.test.ts +48 -14
- package/src/react-native-core/hooks.tsx +2 -2
- package/src/react-native-core/media/image.tsx +3 -1
- package/src/svelte/jazz.class.svelte.ts +103 -27
- package/src/svelte/media/image.svelte +6 -5
- package/src/svelte/tests/AccountCoState.svelte.test-d.ts +23 -0
- package/src/svelte/tests/CoState.svelte.test-d.ts +20 -0
- package/src/svelte/tests/CoState.svelte.test.ts +57 -0
- package/src/svelte/tests/TestCoStateWrapper.svelte +23 -0
- package/src/tools/coValues/CoValueBase.ts +12 -0
- package/src/tools/coValues/account.ts +17 -12
- package/src/tools/coValues/coFeed.ts +38 -15
- package/src/tools/coValues/coList.ts +17 -12
- package/src/tools/coValues/coMap.ts +15 -14
- package/src/tools/coValues/coPlainText.ts +6 -3
- package/src/tools/coValues/coVector.ts +6 -5
- package/src/tools/coValues/deepLoading.ts +147 -86
- package/src/tools/coValues/group.ts +3 -2
- package/src/tools/coValues/inbox.ts +11 -10
- package/src/tools/coValues/interfaces.ts +52 -30
- package/src/tools/coValues/request.ts +8 -6
- package/src/tools/coValues/schemaUnion.ts +20 -14
- package/src/tools/exports.ts +11 -1
- package/src/tools/implementation/refs.ts +19 -13
- package/src/tools/implementation/schema.ts +5 -4
- package/src/tools/implementation/schemaUtils.ts +15 -0
- package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +4 -4
- package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +131 -95
- package/src/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.ts +86 -16
- package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +73 -22
- package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +86 -28
- package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +204 -148
- package/src/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.ts +1 -0
- package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +71 -27
- package/src/tools/implementation/zodSchema/schemaTypes/CoValueSchema.ts +7 -0
- package/src/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.ts +8 -6
- package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +4 -1
- package/src/tools/implementation/zodSchema/schemaTypes/GroupSchema.ts +4 -1
- package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +4 -1
- package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +4 -1
- package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +3 -0
- package/src/tools/implementation/zodSchema/typeConverters/{InstanceOfSchemaCoValuesNullable.ts → InstanceOfSchemaCoValuesMaybeLoaded.ts} +47 -39
- package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.ts +4 -0
- package/src/tools/implementation/zodSchema/typeConverters/{InstanceOrPrimitiveOfSchemaCoValuesNullable.ts → InstanceOrPrimitiveOfSchemaCoValuesMaybeLoaded.ts} +7 -3
- package/src/tools/implementation/zodSchema/unionUtils.ts +35 -4
- package/src/tools/implementation/zodSchema/zodSchema.ts +15 -7
- package/src/tools/internal.ts +3 -3
- package/src/tools/lib/utils.test.ts +56 -0
- package/src/tools/lib/utils.ts +32 -0
- package/src/tools/subscribe/CoValueCoreSubscription.ts +13 -8
- package/src/tools/subscribe/JazzError.ts +8 -2
- package/src/tools/subscribe/SubscriptionScope.ts +57 -57
- package/src/tools/subscribe/index.ts +12 -4
- package/src/tools/subscribe/types.ts +36 -2
- package/src/tools/subscribe/utils.ts +2 -1
- package/src/tools/testing.ts +5 -0
- package/src/tools/tests/CoValueCoreSubscription.test.ts +10 -4
- package/src/tools/tests/ContextManager.test.ts +12 -5
- package/src/tools/tests/account.test.ts +22 -12
- package/src/tools/tests/coDiscriminatedUnion.test.ts +354 -8
- package/src/tools/tests/coFeed.branch.test.ts +48 -32
- package/src/tools/tests/coFeed.test-d.ts +17 -10
- package/src/tools/tests/coFeed.test.ts +52 -30
- package/src/tools/tests/coList.branch.test.ts +21 -21
- package/src/tools/tests/coList.test-d.ts +39 -23
- package/src/tools/tests/coList.test.ts +51 -25
- package/src/tools/tests/coList.unique.test.ts +34 -29
- package/src/tools/tests/coMap.branch.test.ts +20 -21
- package/src/tools/tests/coMap.record.test-d.ts +28 -26
- package/src/tools/tests/coMap.record.test.ts +30 -20
- package/src/tools/tests/coMap.test-d.ts +31 -29
- package/src/tools/tests/coMap.test.ts +67 -40
- package/src/tools/tests/coMap.unique.test.ts +25 -24
- package/src/tools/tests/coVector.test.ts +29 -15
- package/src/tools/tests/createContext.test.ts +5 -3
- package/src/tools/tests/deepLoading.test.ts +369 -176
- package/src/tools/tests/exportImport.test.ts +16 -15
- package/src/tools/tests/groupsAndAccounts.test.ts +39 -16
- package/src/tools/tests/inbox.test.ts +3 -1
- package/src/tools/tests/load.test.ts +29 -23
- package/src/tools/tests/patterns/quest.test.ts +3 -2
- package/src/tools/tests/patterns/requestToJoin.test.ts +17 -17
- package/src/tools/tests/request.test.ts +12 -2
- package/src/tools/tests/schema.resolved.test.ts +792 -0
- package/src/tools/tests/schemaUnion.test.ts +7 -3
- package/src/tools/tests/subscribe.test.ts +39 -21
- package/src/tools/tests/testing.test.ts +3 -2
- package/src/tools/tests/utils.ts +15 -2
- package/dist/chunk-OSQ7S47Q.js.map +0 -1
- package/dist/media/chunk-K6GCHLQU.js.map +0 -1
- package/dist/react-core/tests/useAccountWithSelector.test.d.ts +0 -2
- package/dist/react-core/tests/useAccountWithSelector.test.d.ts.map +0 -1
- package/dist/react-core/tests/useCoStateWithSelector.test.d.ts +0 -2
- package/dist/react-core/tests/useCoStateWithSelector.test.d.ts.map +0 -1
- package/dist/tools/implementation/errors.d.ts +0 -2
- package/dist/tools/implementation/errors.d.ts.map +0 -1
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +0 -19
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +0 -1
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts +0 -5
- package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +0 -1
- package/dist/tools/lib/id.d.ts +0 -2
- package/dist/tools/lib/id.d.ts.map +0 -1
- package/src/tools/implementation/errors.ts +0 -1
- package/src/tools/lib/id.ts +0 -3
|
@@ -4,7 +4,7 @@ import { assert, beforeEach, describe, expect, test, vi } from "vitest";
|
|
|
4
4
|
import { Group, co, subscribeToCoValue, z } from "../exports.js";
|
|
5
5
|
|
|
6
6
|
import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
|
|
7
|
-
import { waitFor } from "./utils.js";
|
|
7
|
+
import { assertLoaded, waitFor } from "./utils.js";
|
|
8
8
|
|
|
9
9
|
beforeEach(async () => {
|
|
10
10
|
cojsonInternals.CO_VALUE_LOADING_CONFIG.RETRY_DELAY = 1000;
|
|
@@ -45,7 +45,7 @@ describe("CoMap Branching", async () => {
|
|
|
45
45
|
unstable_branch: { name: "feature-branch" },
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
assertLoaded(branchPerson);
|
|
49
49
|
|
|
50
50
|
// Edit the branch
|
|
51
51
|
branchPerson.$jazz.applyDiff({
|
|
@@ -107,7 +107,7 @@ describe("CoMap Branching", async () => {
|
|
|
107
107
|
unstable_branch: { name: "feature-branch" },
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
assertLoaded(branchPerson);
|
|
111
111
|
|
|
112
112
|
// Edit the branch
|
|
113
113
|
branchPerson.$jazz.applyDiff({
|
|
@@ -161,7 +161,7 @@ describe("CoMap Branching", async () => {
|
|
|
161
161
|
unstable_branch: { name: "no-changes-branch" },
|
|
162
162
|
});
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
assertLoaded(branchPerson);
|
|
165
165
|
|
|
166
166
|
// Verify branch has same values as original
|
|
167
167
|
expect(branchPerson.name).toBe("John Doe");
|
|
@@ -201,7 +201,7 @@ describe("CoMap Branching", async () => {
|
|
|
201
201
|
unstable_branch: { name: "shared-branch" },
|
|
202
202
|
});
|
|
203
203
|
|
|
204
|
-
|
|
204
|
+
assertLoaded(branch1);
|
|
205
205
|
|
|
206
206
|
branch1.$jazz.applyDiff({
|
|
207
207
|
name: "John Smith",
|
|
@@ -213,7 +213,7 @@ describe("CoMap Branching", async () => {
|
|
|
213
213
|
unstable_branch: { name: "shared-branch" },
|
|
214
214
|
});
|
|
215
215
|
|
|
216
|
-
|
|
216
|
+
assertLoaded(branch2);
|
|
217
217
|
|
|
218
218
|
// Both branches should have the same changes
|
|
219
219
|
expect(branch1.name).toBe("John Smith");
|
|
@@ -267,7 +267,7 @@ describe("CoMap Branching", async () => {
|
|
|
267
267
|
loadAs: alice,
|
|
268
268
|
});
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
assertLoaded(branch1);
|
|
271
271
|
|
|
272
272
|
originalPerson.$jazz.applyDiff({
|
|
273
273
|
name: "John Smith",
|
|
@@ -280,7 +280,7 @@ describe("CoMap Branching", async () => {
|
|
|
280
280
|
loadAs: bob,
|
|
281
281
|
});
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
assertLoaded(branch2);
|
|
284
284
|
|
|
285
285
|
// Both branches should have the same changes
|
|
286
286
|
expect(branch1.name).toBe("John Doe");
|
|
@@ -337,7 +337,7 @@ describe("CoMap Branching", async () => {
|
|
|
337
337
|
unstable_branch: { name: "double-merge-branch" },
|
|
338
338
|
});
|
|
339
339
|
|
|
340
|
-
|
|
340
|
+
assertLoaded(branch);
|
|
341
341
|
|
|
342
342
|
branch.$jazz.applyDiff({
|
|
343
343
|
name: "John Smith",
|
|
@@ -392,7 +392,7 @@ describe("CoMap Branching", async () => {
|
|
|
392
392
|
loadAs: alice,
|
|
393
393
|
});
|
|
394
394
|
|
|
395
|
-
|
|
395
|
+
assertLoaded(branch1);
|
|
396
396
|
|
|
397
397
|
branch1.$jazz.applyDiff({
|
|
398
398
|
name: "John Smith",
|
|
@@ -404,7 +404,7 @@ describe("CoMap Branching", async () => {
|
|
|
404
404
|
loadAs: bob,
|
|
405
405
|
});
|
|
406
406
|
|
|
407
|
-
|
|
407
|
+
assertLoaded(branch2);
|
|
408
408
|
|
|
409
409
|
branch2.$jazz.applyDiff({
|
|
410
410
|
age: 31,
|
|
@@ -464,8 +464,7 @@ describe("CoMap Branching", async () => {
|
|
|
464
464
|
unstable_branch: { name: "load-by-id-branch" },
|
|
465
465
|
});
|
|
466
466
|
|
|
467
|
-
|
|
468
|
-
|
|
467
|
+
assertLoaded(branch);
|
|
469
468
|
expect(branch.$jazz.id).toBe(originalPerson.$jazz.id);
|
|
470
469
|
});
|
|
471
470
|
|
|
@@ -492,7 +491,7 @@ describe("CoMap Branching", async () => {
|
|
|
492
491
|
unstable_branch: { name: "conflict-branch" },
|
|
493
492
|
});
|
|
494
493
|
|
|
495
|
-
|
|
494
|
+
assertLoaded(branch);
|
|
496
495
|
|
|
497
496
|
// User 1 creates a branch and makes changes
|
|
498
497
|
branch.$jazz.applyDiff({
|
|
@@ -544,7 +543,7 @@ describe("CoMap Branching", async () => {
|
|
|
544
543
|
unstable_branch: { name: "align-branch" },
|
|
545
544
|
});
|
|
546
545
|
|
|
547
|
-
|
|
546
|
+
assertLoaded(branch);
|
|
548
547
|
|
|
549
548
|
branch.$jazz.applyDiff({
|
|
550
549
|
name: "John Smith",
|
|
@@ -565,7 +564,7 @@ describe("CoMap Branching", async () => {
|
|
|
565
564
|
unstable_branch: { name: "align-branch" },
|
|
566
565
|
});
|
|
567
566
|
|
|
568
|
-
|
|
567
|
+
assertLoaded(loadedBranch);
|
|
569
568
|
|
|
570
569
|
expect(loadedBranch.name).toBe("John Smith");
|
|
571
570
|
expect(loadedBranch.age).toBe(30);
|
|
@@ -623,7 +622,7 @@ describe("CoMap Branching", async () => {
|
|
|
623
622
|
unstable_branch: { name: "large-doc-edit" },
|
|
624
623
|
});
|
|
625
624
|
|
|
626
|
-
|
|
625
|
+
assertLoaded(branch);
|
|
627
626
|
|
|
628
627
|
// Make extensive changes to the branch
|
|
629
628
|
branch.$jazz.applyDiff({
|
|
@@ -646,7 +645,7 @@ describe("CoMap Branching", async () => {
|
|
|
646
645
|
},
|
|
647
646
|
});
|
|
648
647
|
|
|
649
|
-
|
|
648
|
+
assertLoaded(loadedLargeDoc);
|
|
650
649
|
|
|
651
650
|
// Verify original is unchanged
|
|
652
651
|
expect(loadedLargeDoc.title).toBe("Large Document");
|
|
@@ -703,7 +702,7 @@ describe("CoMap Branching", async () => {
|
|
|
703
702
|
unstable_branch: { name: "subscribe-branch" },
|
|
704
703
|
});
|
|
705
704
|
|
|
706
|
-
|
|
705
|
+
assertLoaded(branch);
|
|
707
706
|
|
|
708
707
|
const spy = vi.fn();
|
|
709
708
|
branch.$jazz.subscribe(
|
|
@@ -774,7 +773,7 @@ describe("CoMap Branching", async () => {
|
|
|
774
773
|
unstable_branch: { name: "ensure-loaded-branch" },
|
|
775
774
|
});
|
|
776
775
|
|
|
777
|
-
|
|
776
|
+
assertLoaded(branch);
|
|
778
777
|
|
|
779
778
|
branch.$jazz.applyDiff({
|
|
780
779
|
name: "John Smith",
|
|
@@ -834,7 +833,7 @@ describe("CoMap Branching", async () => {
|
|
|
834
833
|
unstable_branch: { name: "schema-subscribe-branch" },
|
|
835
834
|
});
|
|
836
835
|
|
|
837
|
-
|
|
836
|
+
assertLoaded(branch);
|
|
838
837
|
|
|
839
838
|
branch.$jazz.applyDiff({
|
|
840
839
|
name: "John Smith",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { describe, expectTypeOf, test } from "vitest";
|
|
2
2
|
import { Group, co, z } from "../exports.js";
|
|
3
3
|
import { Account } from "../index.js";
|
|
4
|
-
import { Loaded } from "../internal.js";
|
|
4
|
+
import { Loaded, MaybeLoaded, LoadedAndRequired } from "../internal.js";
|
|
5
|
+
import { assertLoaded } from "./utils.js";
|
|
5
6
|
|
|
6
7
|
describe("CoMap.Record", () => {
|
|
7
8
|
describe("init", () => {
|
|
@@ -180,9 +181,9 @@ describe("CoMap.Record", () => {
|
|
|
180
181
|
},
|
|
181
182
|
});
|
|
182
183
|
|
|
183
|
-
type ExpectedType = {
|
|
184
|
+
type ExpectedType = MaybeLoaded<{
|
|
184
185
|
[key: string]: Loaded<typeof Dog>;
|
|
185
|
-
}
|
|
186
|
+
}>;
|
|
186
187
|
|
|
187
188
|
function matches(value: ExpectedType) {
|
|
188
189
|
return value;
|
|
@@ -210,17 +211,16 @@ describe("CoMap.Record", () => {
|
|
|
210
211
|
},
|
|
211
212
|
});
|
|
212
213
|
|
|
213
|
-
type Expect =
|
|
214
|
+
type Expect = LoadedAndRequired<typeof loadedPerson> extends never
|
|
214
215
|
? "error: is never"
|
|
215
216
|
: "ok";
|
|
216
217
|
|
|
217
218
|
expectTypeOf("ok" as const).toEqualTypeOf<Expect>();
|
|
218
219
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
Loaded<typeof Dog> | undefined | null
|
|
220
|
+
assertLoaded(loadedPerson);
|
|
221
|
+
expectTypeOf(loadedPerson.pet1).toEqualTypeOf<Loaded<typeof Dog>>();
|
|
222
|
+
expectTypeOf(loadedPerson.pet3).branded.toEqualTypeOf<
|
|
223
|
+
MaybeLoaded<Loaded<typeof Dog>> | undefined
|
|
224
224
|
>();
|
|
225
225
|
});
|
|
226
226
|
|
|
@@ -245,25 +245,26 @@ describe("CoMap.Record", () => {
|
|
|
245
245
|
[userId]: true,
|
|
246
246
|
pet2: true,
|
|
247
247
|
[userId2]: {
|
|
248
|
-
$onError:
|
|
248
|
+
$onError: "catch",
|
|
249
249
|
},
|
|
250
250
|
},
|
|
251
251
|
});
|
|
252
252
|
|
|
253
|
-
type Expect =
|
|
253
|
+
type Expect = LoadedAndRequired<typeof loadedPerson> extends never
|
|
254
254
|
? "error: is never"
|
|
255
255
|
: "ok";
|
|
256
256
|
|
|
257
257
|
expectTypeOf("ok" as const).toEqualTypeOf<Expect>();
|
|
258
258
|
|
|
259
|
-
|
|
260
|
-
|
|
259
|
+
assertLoaded(loadedPerson);
|
|
260
|
+
expectTypeOf(loadedPerson.pet1).branded.toEqualTypeOf<
|
|
261
|
+
MaybeLoaded<Loaded<typeof Dog>> | undefined
|
|
261
262
|
>();
|
|
262
|
-
expectTypeOf(loadedPerson
|
|
263
|
-
Loaded<typeof Dog
|
|
263
|
+
expectTypeOf(loadedPerson.pet2).branded.toEqualTypeOf<
|
|
264
|
+
MaybeLoaded<Loaded<typeof Dog>> | undefined
|
|
264
265
|
>();
|
|
265
|
-
expectTypeOf(loadedPerson
|
|
266
|
-
Loaded<typeof Dog
|
|
266
|
+
expectTypeOf(loadedPerson.pet3).branded.toEqualTypeOf<
|
|
267
|
+
MaybeLoaded<Loaded<typeof Dog>> | undefined
|
|
267
268
|
>();
|
|
268
269
|
});
|
|
269
270
|
|
|
@@ -282,17 +283,18 @@ describe("CoMap.Record", () => {
|
|
|
282
283
|
|
|
283
284
|
const loadedPerson = await Person.load(person.$jazz.id);
|
|
284
285
|
|
|
285
|
-
type Expect =
|
|
286
|
+
type Expect = LoadedAndRequired<typeof loadedPerson> extends never
|
|
286
287
|
? "error: is never"
|
|
287
288
|
: "ok";
|
|
288
289
|
|
|
289
290
|
expectTypeOf("ok" as const).toEqualTypeOf<Expect>();
|
|
290
291
|
|
|
291
|
-
|
|
292
|
-
|
|
292
|
+
assertLoaded(loadedPerson);
|
|
293
|
+
expectTypeOf(loadedPerson.pet1).branded.toEqualTypeOf<
|
|
294
|
+
MaybeLoaded<Loaded<typeof Dog>> | undefined
|
|
293
295
|
>();
|
|
294
|
-
expectTypeOf(loadedPerson
|
|
295
|
-
Loaded<typeof Dog
|
|
296
|
+
expectTypeOf(loadedPerson.pet3).branded.toEqualTypeOf<
|
|
297
|
+
MaybeLoaded<Loaded<typeof Dog>> | undefined
|
|
296
298
|
>();
|
|
297
299
|
});
|
|
298
300
|
|
|
@@ -311,13 +313,13 @@ describe("CoMap.Record", () => {
|
|
|
311
313
|
|
|
312
314
|
const loadedPerson = await Person.load(person.$jazz.id, {
|
|
313
315
|
resolve: {
|
|
314
|
-
$each: { $onError:
|
|
316
|
+
$each: { $onError: "catch" },
|
|
315
317
|
},
|
|
316
318
|
});
|
|
317
319
|
|
|
318
|
-
type ExpectedType = {
|
|
319
|
-
[key: string]: Loaded<typeof Dog
|
|
320
|
-
}
|
|
320
|
+
type ExpectedType = MaybeLoaded<{
|
|
321
|
+
[key: string]: MaybeLoaded<Loaded<typeof Dog>>;
|
|
322
|
+
}>;
|
|
321
323
|
|
|
322
324
|
function matches(value: ExpectedType) {
|
|
323
325
|
return value;
|
|
@@ -12,8 +12,8 @@ import { FileStream, Group, co, z } from "../exports.js";
|
|
|
12
12
|
import { Loaded } from "../implementation/zodSchema/zodSchema.js";
|
|
13
13
|
import { Account } from "../index.js";
|
|
14
14
|
import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
|
|
15
|
-
import { waitFor } from "./utils.js";
|
|
16
|
-
import { TypeSym } from "../internal.js";
|
|
15
|
+
import { assertLoaded, waitFor } from "./utils.js";
|
|
16
|
+
import { CoValueLoadingState, TypeSym } from "../internal.js";
|
|
17
17
|
|
|
18
18
|
const Crypto = await WasmCrypto.create();
|
|
19
19
|
|
|
@@ -216,7 +216,7 @@ describe("CoMap.Record", async () => {
|
|
|
216
216
|
},
|
|
217
217
|
});
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
assertLoaded(loadedPerson);
|
|
220
220
|
expect(loadedPerson.pet1?.name).toEqual("Rex");
|
|
221
221
|
expect(loadedPerson.pet2?.name).toEqual("Fido");
|
|
222
222
|
});
|
|
@@ -240,7 +240,7 @@ describe("CoMap.Record", async () => {
|
|
|
240
240
|
},
|
|
241
241
|
});
|
|
242
242
|
|
|
243
|
-
|
|
243
|
+
assertLoaded(loadedPerson);
|
|
244
244
|
expect(loadedPerson.pet1?.name).toEqual("Rex");
|
|
245
245
|
});
|
|
246
246
|
|
|
@@ -263,7 +263,9 @@ describe("CoMap.Record", async () => {
|
|
|
263
263
|
},
|
|
264
264
|
});
|
|
265
265
|
|
|
266
|
-
expect(loadedPerson).
|
|
266
|
+
expect(loadedPerson.$jazz.loadingState).toBe(
|
|
267
|
+
CoValueLoadingState.UNAVAILABLE,
|
|
268
|
+
);
|
|
267
269
|
});
|
|
268
270
|
|
|
269
271
|
test("loading a locally available record using autoload for the refs", async () => {
|
|
@@ -281,8 +283,12 @@ describe("CoMap.Record", async () => {
|
|
|
281
283
|
|
|
282
284
|
const loadedPerson = await Person.load(person.$jazz.id);
|
|
283
285
|
|
|
284
|
-
|
|
286
|
+
assertLoaded(loadedPerson);
|
|
287
|
+
assert(loadedPerson.pet1);
|
|
288
|
+
assertLoaded(loadedPerson.pet1);
|
|
285
289
|
expect(loadedPerson.pet1?.name).toEqual("Rex");
|
|
290
|
+
assert(loadedPerson.pet2);
|
|
291
|
+
assertLoaded(loadedPerson.pet2);
|
|
286
292
|
expect(loadedPerson.pet2?.name).toEqual("Fido");
|
|
287
293
|
});
|
|
288
294
|
|
|
@@ -484,12 +490,13 @@ describe("CoRecord unique methods", () => {
|
|
|
484
490
|
"test-record",
|
|
485
491
|
group.$jazz.id,
|
|
486
492
|
);
|
|
493
|
+
assertLoaded(foundRecord);
|
|
487
494
|
expect(foundRecord).toEqual(originalRecord);
|
|
488
|
-
expect(foundRecord
|
|
489
|
-
expect(foundRecord
|
|
495
|
+
expect(foundRecord.item1).toBe(1);
|
|
496
|
+
expect(foundRecord.item2).toBe(2);
|
|
490
497
|
});
|
|
491
498
|
|
|
492
|
-
test("loadUnique returns
|
|
499
|
+
test("loadUnique returns 'unavailable' for non-existent record", async () => {
|
|
493
500
|
const ItemRecord = co.record(z.string(), z.number());
|
|
494
501
|
const group = Group.create();
|
|
495
502
|
|
|
@@ -497,7 +504,9 @@ describe("CoRecord unique methods", () => {
|
|
|
497
504
|
"non-existent",
|
|
498
505
|
group.$jazz.id,
|
|
499
506
|
);
|
|
500
|
-
expect(foundRecord).
|
|
507
|
+
expect(foundRecord.$jazz.loadingState).toBe(
|
|
508
|
+
CoValueLoadingState.UNAVAILABLE,
|
|
509
|
+
);
|
|
501
510
|
});
|
|
502
511
|
|
|
503
512
|
test("upsertUnique creates new record when none exists", async () => {
|
|
@@ -512,10 +521,10 @@ describe("CoRecord unique methods", () => {
|
|
|
512
521
|
owner: group,
|
|
513
522
|
});
|
|
514
523
|
|
|
515
|
-
|
|
516
|
-
expect(result
|
|
517
|
-
expect(result
|
|
518
|
-
expect(result
|
|
524
|
+
assertLoaded(result);
|
|
525
|
+
expect(result.item1).toBe(1);
|
|
526
|
+
expect(result.item2).toBe(2);
|
|
527
|
+
expect(result.item3).toBe(3);
|
|
519
528
|
});
|
|
520
529
|
|
|
521
530
|
test("upsertUnique updates existing record", async () => {
|
|
@@ -535,10 +544,11 @@ describe("CoRecord unique methods", () => {
|
|
|
535
544
|
owner: group,
|
|
536
545
|
});
|
|
537
546
|
|
|
547
|
+
assertLoaded(updatedRecord);
|
|
538
548
|
expect(updatedRecord).toEqual(originalRecord); // Should be the same instance
|
|
539
|
-
expect(updatedRecord
|
|
540
|
-
expect(updatedRecord
|
|
541
|
-
expect(updatedRecord
|
|
549
|
+
expect(updatedRecord.updated1).toBe(10);
|
|
550
|
+
expect(updatedRecord.updated2).toBe(20);
|
|
551
|
+
expect(updatedRecord.updated3).toBe(30);
|
|
542
552
|
});
|
|
543
553
|
|
|
544
554
|
test("upsertUnique with CoValue items", async () => {
|
|
@@ -561,9 +571,9 @@ describe("CoRecord unique methods", () => {
|
|
|
561
571
|
resolve: { first: true, second: true },
|
|
562
572
|
});
|
|
563
573
|
|
|
564
|
-
|
|
565
|
-
expect(result
|
|
566
|
-
expect(result
|
|
574
|
+
assertLoaded(result);
|
|
575
|
+
expect(result.first?.name).toBe("First");
|
|
576
|
+
expect(result.second?.name).toBe("Second");
|
|
567
577
|
});
|
|
568
578
|
|
|
569
579
|
test("findUnique returns correct ID", async () => {
|
|
@@ -2,7 +2,8 @@ import { assert, describe, expectTypeOf, test } from "vitest";
|
|
|
2
2
|
import { ZodNumber, ZodOptional, ZodString } from "zod/v4";
|
|
3
3
|
import { Group, co, z } from "../exports.js";
|
|
4
4
|
import { Account } from "../index.js";
|
|
5
|
-
import { CoMap, Loaded } from "../internal.js";
|
|
5
|
+
import { CoMap, Loaded, MaybeLoaded } from "../internal.js";
|
|
6
|
+
import { assertLoaded } from "./utils.js";
|
|
6
7
|
|
|
7
8
|
describe("CoMap", async () => {
|
|
8
9
|
describe("init", () => {
|
|
@@ -562,12 +563,12 @@ describe("CoMap resolution", async () => {
|
|
|
562
563
|
},
|
|
563
564
|
});
|
|
564
565
|
|
|
565
|
-
type ExpectedType = {
|
|
566
|
+
type ExpectedType = MaybeLoaded<{
|
|
566
567
|
name: string;
|
|
567
568
|
age: number;
|
|
568
569
|
dog1: Loaded<typeof Dog>;
|
|
569
|
-
dog2: Loaded<typeof Dog
|
|
570
|
-
}
|
|
570
|
+
dog2: MaybeLoaded<Loaded<typeof Dog>>;
|
|
571
|
+
}>;
|
|
571
572
|
|
|
572
573
|
function matches(value: ExpectedType) {
|
|
573
574
|
return value;
|
|
@@ -575,11 +576,11 @@ describe("CoMap resolution", async () => {
|
|
|
575
576
|
|
|
576
577
|
matches(loadedPerson);
|
|
577
578
|
|
|
578
|
-
|
|
579
|
+
assertLoaded(loadedPerson);
|
|
579
580
|
expectTypeOf<typeof loadedPerson.dog1.name>().toEqualTypeOf<string>();
|
|
580
|
-
expectTypeOf<typeof loadedPerson.dog2>().toEqualTypeOf<
|
|
581
|
-
typeof Dog
|
|
582
|
-
>
|
|
581
|
+
expectTypeOf<typeof loadedPerson.dog2>().branded.toEqualTypeOf<
|
|
582
|
+
MaybeLoaded<Loaded<typeof Dog>>
|
|
583
|
+
>();
|
|
583
584
|
});
|
|
584
585
|
|
|
585
586
|
test("partial loading a map with string resolve", async () => {
|
|
@@ -610,12 +611,12 @@ describe("CoMap resolution", async () => {
|
|
|
610
611
|
},
|
|
611
612
|
});
|
|
612
613
|
|
|
613
|
-
type ExpectedType = {
|
|
614
|
+
type ExpectedType = MaybeLoaded<{
|
|
614
615
|
name: string;
|
|
615
616
|
age: number;
|
|
616
|
-
dog1: Loaded<typeof Dog
|
|
617
|
-
dog2: Loaded<typeof Dog
|
|
618
|
-
}
|
|
617
|
+
dog1: MaybeLoaded<Loaded<typeof Dog>>;
|
|
618
|
+
dog2: MaybeLoaded<Loaded<typeof Dog>>;
|
|
619
|
+
}>;
|
|
619
620
|
|
|
620
621
|
function matches(value: ExpectedType) {
|
|
621
622
|
return value;
|
|
@@ -623,13 +624,13 @@ describe("CoMap resolution", async () => {
|
|
|
623
624
|
|
|
624
625
|
matches(loadedPerson);
|
|
625
626
|
|
|
626
|
-
|
|
627
|
-
expectTypeOf<typeof loadedPerson.dog1>().toEqualTypeOf<
|
|
628
|
-
typeof Dog
|
|
629
|
-
>
|
|
630
|
-
expectTypeOf<typeof loadedPerson.dog2>().toEqualTypeOf<
|
|
631
|
-
typeof Dog
|
|
632
|
-
>
|
|
627
|
+
assertLoaded(loadedPerson);
|
|
628
|
+
expectTypeOf<typeof loadedPerson.dog1>().branded.toEqualTypeOf<
|
|
629
|
+
MaybeLoaded<Loaded<typeof Dog>>
|
|
630
|
+
>();
|
|
631
|
+
expectTypeOf<typeof loadedPerson.dog2>().branded.toEqualTypeOf<
|
|
632
|
+
MaybeLoaded<Loaded<typeof Dog>>
|
|
633
|
+
>();
|
|
633
634
|
});
|
|
634
635
|
|
|
635
636
|
test("loading a map with deep resolve and $onError", async () => {
|
|
@@ -655,16 +656,16 @@ describe("CoMap resolution", async () => {
|
|
|
655
656
|
const loadedPerson = await Person.load(person.$jazz.id, {
|
|
656
657
|
resolve: {
|
|
657
658
|
dog1: true,
|
|
658
|
-
dog2: { $onError:
|
|
659
|
+
dog2: { $onError: "catch" },
|
|
659
660
|
},
|
|
660
661
|
});
|
|
661
662
|
|
|
662
|
-
type ExpectedType = {
|
|
663
|
+
type ExpectedType = MaybeLoaded<{
|
|
663
664
|
name: string;
|
|
664
665
|
age: number;
|
|
665
666
|
dog1: Loaded<typeof Dog>;
|
|
666
|
-
dog2: Loaded<typeof Dog
|
|
667
|
-
}
|
|
667
|
+
dog2: MaybeLoaded<Loaded<typeof Dog>>;
|
|
668
|
+
}>;
|
|
668
669
|
|
|
669
670
|
function matches(value: ExpectedType) {
|
|
670
671
|
return value;
|
|
@@ -672,11 +673,11 @@ describe("CoMap resolution", async () => {
|
|
|
672
673
|
|
|
673
674
|
matches(loadedPerson);
|
|
674
675
|
|
|
675
|
-
|
|
676
|
+
assertLoaded(loadedPerson);
|
|
676
677
|
expectTypeOf<typeof loadedPerson.dog1.name>().toEqualTypeOf<string>();
|
|
677
|
-
expectTypeOf<typeof loadedPerson.dog2>().branded.toEqualTypeOf<
|
|
678
|
-
typeof Dog
|
|
679
|
-
>
|
|
678
|
+
expectTypeOf<typeof loadedPerson.dog2>().branded.toEqualTypeOf<
|
|
679
|
+
MaybeLoaded<Loaded<typeof Dog>>
|
|
680
|
+
>();
|
|
680
681
|
});
|
|
681
682
|
|
|
682
683
|
test("loading a map with a nullable field", async () => {
|
|
@@ -698,11 +699,12 @@ describe("CoMap resolution", async () => {
|
|
|
698
699
|
|
|
699
700
|
const loadedPerson = await Person.load(person.$jazz.id);
|
|
700
701
|
|
|
701
|
-
|
|
702
|
+
assertLoaded(loadedPerson);
|
|
703
|
+
expectTypeOf(loadedPerson).branded.toEqualTypeOf<
|
|
702
704
|
{
|
|
703
705
|
readonly name: string;
|
|
704
706
|
readonly age: number | null;
|
|
705
|
-
readonly dog: Loaded<typeof Dog
|
|
707
|
+
readonly dog: MaybeLoaded<Loaded<typeof Dog>>;
|
|
706
708
|
} & CoMap
|
|
707
709
|
>();
|
|
708
710
|
});
|