jazz-tools 0.17.10 → 0.17.12
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/.turbo/turbo-build.log +43 -43
- package/CHANGELOG.md +25 -0
- package/dist/{chunk-33NYHM7D.js → chunk-SFP5PBPX.js} +6 -2
- package/dist/chunk-SFP5PBPX.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/testing.js +7 -1
- package/dist/testing.js.map +1 -1
- package/dist/tools/coValues/coList.d.ts.map +1 -1
- package/dist/tools/coValues/deepLoading.d.ts +1 -1
- package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
- package/dist/tools/testing.d.ts +2 -0
- package/dist/tools/testing.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/tools/coValues/coList.ts +5 -1
- package/src/tools/coValues/deepLoading.ts +1 -1
- package/src/tools/testing.ts +10 -0
- package/src/tools/tests/coList.test-d.ts +47 -1
- package/src/tools/tests/coList.test.ts +65 -1
- package/src/tools/tests/coMap.test.ts +40 -0
- package/dist/chunk-33NYHM7D.js.map +0 -1
package/dist/index.js
CHANGED
package/dist/testing.js
CHANGED
@@ -6,7 +6,7 @@ import {
|
|
6
6
|
createAnonymousJazzContext,
|
7
7
|
createJazzContext,
|
8
8
|
randomSessionProvider
|
9
|
-
} from "./chunk-
|
9
|
+
} from "./chunk-SFP5PBPX.js";
|
10
10
|
|
11
11
|
// src/tools/testing.ts
|
12
12
|
import { LocalNode } from "cojson";
|
@@ -106,6 +106,12 @@ function runWithoutActiveAccount(callback) {
|
|
106
106
|
const me = Account.getMe();
|
107
107
|
activeAccountContext.set(null);
|
108
108
|
const result = callback();
|
109
|
+
if (result instanceof Promise) {
|
110
|
+
return result.finally(() => {
|
111
|
+
activeAccountContext.set(me);
|
112
|
+
return result;
|
113
|
+
});
|
114
|
+
}
|
109
115
|
activeAccountContext.set(me);
|
110
116
|
return result;
|
111
117
|
}
|
package/dist/testing.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/tools/testing.ts"],"sourcesContent":["import { LocalNode } from \"cojson\";\nimport { cojsonInternals } from \"cojson\";\nimport { PureJSCrypto } from \"cojson/dist/crypto/PureJSCrypto\";\nimport {\n Account,\n AccountClass,\n type AnonymousJazzAgent,\n AuthCredentials,\n CoValueFromRaw,\n CoreAccountSchema,\n InstanceOfSchema,\n JazzContextManager,\n JazzContextManagerAuthProps,\n JazzContextManagerBaseProps,\n activeAccountContext,\n coValueClassFromCoValueClassOrSchema,\n createAnonymousJazzContext,\n createJazzContext,\n randomSessionProvider,\n} from \"./internal.js\";\n\nconst syncServer: { current: LocalNode | null; asyncPeers: boolean } = {\n current: null,\n asyncPeers: false,\n};\n\nexport class TestJSCrypto extends PureJSCrypto {\n static async create() {\n if (\"navigator\" in globalThis && navigator.userAgent?.includes(\"jsdom\")) {\n // Mocking crypto seal & encrypt to make it work with JSDom. Getting \"Error: Uint8Array expected\" there\n const crypto = new PureJSCrypto();\n\n crypto.seal = (options) =>\n `sealed_U${cojsonInternals.stableStringify(options.message)}` as any;\n crypto.unseal = (sealed) =>\n JSON.parse(sealed.substring(\"sealed_U\".length));\n crypto.encrypt = (message) =>\n `encrypted_U${cojsonInternals.stableStringify(message)}` as any;\n crypto.decryptRaw = (encrypted) =>\n encrypted.substring(\"encrypted_U\".length) as any;\n\n return crypto;\n }\n\n // For non-jsdom environments, we use the real crypto\n return new PureJSCrypto();\n }\n}\n\nexport function getPeerConnectedToTestSyncServer() {\n if (!syncServer.current) {\n throw new Error(\"Sync server not initialized\");\n }\n\n const [aPeer, bPeer] = cojsonInternals.connectedPeers(\n Math.random().toString(),\n Math.random().toString(),\n {\n peer1role: \"server\",\n peer2role: \"server\",\n },\n );\n\n if (syncServer.asyncPeers) {\n const push = aPeer.outgoing.push;\n\n aPeer.outgoing.push = (message) => {\n setTimeout(() => {\n push.call(aPeer.outgoing, message);\n });\n };\n\n bPeer.outgoing.push = (message) => {\n setTimeout(() => {\n push.call(bPeer.outgoing, message);\n });\n };\n }\n\n syncServer.current.syncManager.addPeer(aPeer);\n\n return bPeer;\n}\n\nconst SecretSeedMap = new Map<string, Uint8Array>();\nlet isMigrationActive = false;\n\nexport async function createJazzTestAccount<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | CoreAccountSchema,\n>(options?: {\n isCurrentActiveAccount?: boolean;\n AccountSchema?: S;\n creationProps?: Record<string, unknown>;\n}): Promise<InstanceOfSchema<S>> {\n const AccountClass = options?.AccountSchema\n ? coValueClassFromCoValueClassOrSchema(options.AccountSchema)\n : Account;\n const peers = [];\n if (syncServer.current) {\n peers.push(getPeerConnectedToTestSyncServer());\n }\n\n const crypto = await TestJSCrypto.create();\n const secretSeed = crypto.newRandomSecretSeed();\n\n const { node } = await LocalNode.withNewlyCreatedAccount({\n creationProps: {\n name: \"Test Account\",\n ...options?.creationProps,\n },\n initialAgentSecret: crypto.agentSecretFromSecretSeed(secretSeed),\n crypto,\n peersToLoadFrom: peers,\n migration: async (rawAccount, _node, creationProps) => {\n if (isMigrationActive) {\n throw new Error(\n \"It is not possible to create multiple accounts in parallel inside the test environment.\",\n );\n }\n\n isMigrationActive = true;\n\n // @ts-expect-error - AccountClass doesn't infer the fromRaw static method\n const account = AccountClass.fromRaw(rawAccount) as InstanceOfSchema<S>;\n\n // We need to set the account as current because the migration\n // will probably rely on the global me\n const prevActiveAccount = activeAccountContext.maybeGet();\n activeAccountContext.set(account);\n\n await account.applyMigration?.(creationProps);\n\n if (!options?.isCurrentActiveAccount) {\n activeAccountContext.set(prevActiveAccount);\n }\n\n isMigrationActive = false;\n },\n });\n\n const account = AccountClass.fromNode(node);\n SecretSeedMap.set(account.id, secretSeed);\n\n if (options?.isCurrentActiveAccount) {\n activeAccountContext.set(account);\n }\n\n return account as InstanceOfSchema<S>;\n}\n\nexport function setActiveAccount(account: Account) {\n activeAccountContext.set(account);\n}\n\n/**\n * Run a callback without an active account.\n *\n * Takes care of restoring the active account after the callback is run.\n *\n * @param callback - The callback to run.\n * @returns The result of the callback.\n */\nexport function runWithoutActiveAccount<Result>(\n callback: () => Result,\n): Result {\n const me = Account.getMe();\n activeAccountContext.set(null);\n const result = callback();\n activeAccountContext.set(me);\n return result;\n}\n\nexport async function createJazzTestGuest() {\n const ctx = await createAnonymousJazzContext({\n crypto: await PureJSCrypto.create(),\n peersToLoadFrom: [],\n });\n\n return {\n guest: ctx.agent,\n };\n}\n\nexport type TestJazzContextManagerProps<Acc extends Account> =\n JazzContextManagerBaseProps<Acc> & {\n defaultProfileName?: string;\n AccountSchema?: AccountClass<Acc> & CoValueFromRaw<Acc>;\n isAuthenticated?: boolean;\n };\n\nexport class TestJazzContextManager<\n Acc extends Account,\n> extends JazzContextManager<Acc, TestJazzContextManagerProps<Acc>> {\n static fromAccountOrGuest<Acc extends Account>(\n account?: Acc | { guest: AnonymousJazzAgent },\n props?: TestJazzContextManagerProps<Acc>,\n ) {\n if (account && \"guest\" in account) {\n return this.fromGuest<Acc>(account, props);\n }\n\n return this.fromAccount<Acc>(account ?? (Account.getMe() as Acc), props);\n }\n\n static fromAccount<Acc extends Account>(\n account: Acc,\n props?: TestJazzContextManagerProps<Acc>,\n ) {\n const context = new TestJazzContextManager<Acc>();\n\n const provider = props?.isAuthenticated ? \"testProvider\" : \"anonymous\";\n const storage = context.getAuthSecretStorage();\n const node = account._raw.core.node;\n\n const credentials = {\n accountID: account.id,\n accountSecret: node.getCurrentAgent().agentSecret,\n secretSeed: SecretSeedMap.get(account.id),\n provider,\n } satisfies AuthCredentials;\n\n storage.set(credentials);\n\n context.updateContext(\n {\n AccountSchema: account.constructor as AccountClass<Acc> &\n CoValueFromRaw<Acc>,\n ...props,\n },\n {\n me: account,\n node,\n done: () => {\n node.gracefulShutdown();\n },\n logOut: async () => {\n await storage.clear();\n node.gracefulShutdown();\n },\n },\n {\n credentials,\n },\n );\n\n return context;\n }\n\n static fromGuest<Acc extends Account>(\n { guest }: { guest: AnonymousJazzAgent },\n props: TestJazzContextManagerProps<Acc> = {},\n ) {\n const context = new TestJazzContextManager<Acc>();\n const node = guest.node;\n\n context.updateContext(props, {\n guest,\n node,\n done: () => {\n node.gracefulShutdown();\n },\n logOut: async () => {\n node.gracefulShutdown();\n },\n });\n\n return context;\n }\n\n async getNewContext(\n props: TestJazzContextManagerProps<Acc>,\n authProps?: JazzContextManagerAuthProps,\n ) {\n if (!syncServer.current) {\n throw new Error(\n \"You need to setup a test sync server with setupJazzTestSync to use the Auth functions\",\n );\n }\n\n const context = await createJazzContext({\n credentials: authProps?.credentials,\n defaultProfileName: props.defaultProfileName,\n newAccountProps: authProps?.newAccountProps,\n peersToLoadFrom: [getPeerConnectedToTestSyncServer()],\n crypto: await TestJSCrypto.create(),\n sessionProvider: randomSessionProvider,\n authSecretStorage: this.getAuthSecretStorage(),\n AccountSchema: props.AccountSchema,\n });\n\n return {\n me: context.account,\n node: context.node,\n done: () => {\n context.done();\n },\n logOut: () => {\n return context.logOut();\n },\n };\n }\n}\n\nexport async function linkAccounts(\n a: Account,\n b: Account,\n aRole: \"server\" | \"client\" = \"server\",\n bRole: \"server\" | \"client\" = \"server\",\n) {\n const [aPeer, bPeer] = cojsonInternals.connectedPeers(b.id, a.id, {\n peer1role: aRole,\n peer2role: bRole,\n });\n\n a._raw.core.node.syncManager.addPeer(aPeer);\n b._raw.core.node.syncManager.addPeer(bPeer);\n\n await a.waitForAllCoValuesSync();\n await b.waitForAllCoValuesSync();\n}\n\nexport async function setupJazzTestSync({\n asyncPeers = false,\n}: {\n asyncPeers?: boolean;\n} = {}) {\n if (syncServer.current) {\n syncServer.current.gracefulShutdown();\n }\n\n const account = await Account.create({\n creationProps: {\n name: \"Test Account\",\n },\n crypto: await TestJSCrypto.create(),\n });\n\n syncServer.current = account._raw.core.node;\n syncServer.asyncPeers = asyncPeers;\n\n return account;\n}\n"],"mappings":"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","names":["AccountClass","account"]}
|
1
|
+
{"version":3,"sources":["../src/tools/testing.ts"],"sourcesContent":["import { LocalNode } from \"cojson\";\nimport { cojsonInternals } from \"cojson\";\nimport { PureJSCrypto } from \"cojson/dist/crypto/PureJSCrypto\";\nimport {\n Account,\n AccountClass,\n type AnonymousJazzAgent,\n AuthCredentials,\n CoValueFromRaw,\n CoreAccountSchema,\n InstanceOfSchema,\n JazzContextManager,\n JazzContextManagerAuthProps,\n JazzContextManagerBaseProps,\n activeAccountContext,\n coValueClassFromCoValueClassOrSchema,\n createAnonymousJazzContext,\n createJazzContext,\n randomSessionProvider,\n} from \"./internal.js\";\n\nconst syncServer: { current: LocalNode | null; asyncPeers: boolean } = {\n current: null,\n asyncPeers: false,\n};\n\nexport class TestJSCrypto extends PureJSCrypto {\n static async create() {\n if (\"navigator\" in globalThis && navigator.userAgent?.includes(\"jsdom\")) {\n // Mocking crypto seal & encrypt to make it work with JSDom. Getting \"Error: Uint8Array expected\" there\n const crypto = new PureJSCrypto();\n\n crypto.seal = (options) =>\n `sealed_U${cojsonInternals.stableStringify(options.message)}` as any;\n crypto.unseal = (sealed) =>\n JSON.parse(sealed.substring(\"sealed_U\".length));\n crypto.encrypt = (message) =>\n `encrypted_U${cojsonInternals.stableStringify(message)}` as any;\n crypto.decryptRaw = (encrypted) =>\n encrypted.substring(\"encrypted_U\".length) as any;\n\n return crypto;\n }\n\n // For non-jsdom environments, we use the real crypto\n return new PureJSCrypto();\n }\n}\n\nexport function getPeerConnectedToTestSyncServer() {\n if (!syncServer.current) {\n throw new Error(\"Sync server not initialized\");\n }\n\n const [aPeer, bPeer] = cojsonInternals.connectedPeers(\n Math.random().toString(),\n Math.random().toString(),\n {\n peer1role: \"server\",\n peer2role: \"server\",\n },\n );\n\n if (syncServer.asyncPeers) {\n const push = aPeer.outgoing.push;\n\n aPeer.outgoing.push = (message) => {\n setTimeout(() => {\n push.call(aPeer.outgoing, message);\n });\n };\n\n bPeer.outgoing.push = (message) => {\n setTimeout(() => {\n push.call(bPeer.outgoing, message);\n });\n };\n }\n\n syncServer.current.syncManager.addPeer(aPeer);\n\n return bPeer;\n}\n\nconst SecretSeedMap = new Map<string, Uint8Array>();\nlet isMigrationActive = false;\n\nexport async function createJazzTestAccount<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | CoreAccountSchema,\n>(options?: {\n isCurrentActiveAccount?: boolean;\n AccountSchema?: S;\n creationProps?: Record<string, unknown>;\n}): Promise<InstanceOfSchema<S>> {\n const AccountClass = options?.AccountSchema\n ? coValueClassFromCoValueClassOrSchema(options.AccountSchema)\n : Account;\n const peers = [];\n if (syncServer.current) {\n peers.push(getPeerConnectedToTestSyncServer());\n }\n\n const crypto = await TestJSCrypto.create();\n const secretSeed = crypto.newRandomSecretSeed();\n\n const { node } = await LocalNode.withNewlyCreatedAccount({\n creationProps: {\n name: \"Test Account\",\n ...options?.creationProps,\n },\n initialAgentSecret: crypto.agentSecretFromSecretSeed(secretSeed),\n crypto,\n peersToLoadFrom: peers,\n migration: async (rawAccount, _node, creationProps) => {\n if (isMigrationActive) {\n throw new Error(\n \"It is not possible to create multiple accounts in parallel inside the test environment.\",\n );\n }\n\n isMigrationActive = true;\n\n // @ts-expect-error - AccountClass doesn't infer the fromRaw static method\n const account = AccountClass.fromRaw(rawAccount) as InstanceOfSchema<S>;\n\n // We need to set the account as current because the migration\n // will probably rely on the global me\n const prevActiveAccount = activeAccountContext.maybeGet();\n activeAccountContext.set(account);\n\n await account.applyMigration?.(creationProps);\n\n if (!options?.isCurrentActiveAccount) {\n activeAccountContext.set(prevActiveAccount);\n }\n\n isMigrationActive = false;\n },\n });\n\n const account = AccountClass.fromNode(node);\n SecretSeedMap.set(account.id, secretSeed);\n\n if (options?.isCurrentActiveAccount) {\n activeAccountContext.set(account);\n }\n\n return account as InstanceOfSchema<S>;\n}\n\nexport function setActiveAccount(account: Account) {\n activeAccountContext.set(account);\n}\n\n/**\n * Run a callback without an active account.\n *\n * Takes care of restoring the active account after the callback is run.\n *\n * If the callback returns a promise, waits for it before restoring the active account.\n *\n * @param callback - The callback to run.\n * @returns The result of the callback.\n */\nexport function runWithoutActiveAccount<Result>(\n callback: () => Result,\n): Result {\n const me = Account.getMe();\n activeAccountContext.set(null);\n const result = callback();\n\n if (result instanceof Promise) {\n return result.finally(() => {\n activeAccountContext.set(me);\n return result;\n }) as Result;\n }\n\n activeAccountContext.set(me);\n return result;\n}\n\nexport async function createJazzTestGuest() {\n const ctx = await createAnonymousJazzContext({\n crypto: await PureJSCrypto.create(),\n peersToLoadFrom: [],\n });\n\n return {\n guest: ctx.agent,\n };\n}\n\nexport type TestJazzContextManagerProps<Acc extends Account> =\n JazzContextManagerBaseProps<Acc> & {\n defaultProfileName?: string;\n AccountSchema?: AccountClass<Acc> & CoValueFromRaw<Acc>;\n isAuthenticated?: boolean;\n };\n\nexport class TestJazzContextManager<\n Acc extends Account,\n> extends JazzContextManager<Acc, TestJazzContextManagerProps<Acc>> {\n static fromAccountOrGuest<Acc extends Account>(\n account?: Acc | { guest: AnonymousJazzAgent },\n props?: TestJazzContextManagerProps<Acc>,\n ) {\n if (account && \"guest\" in account) {\n return this.fromGuest<Acc>(account, props);\n }\n\n return this.fromAccount<Acc>(account ?? (Account.getMe() as Acc), props);\n }\n\n static fromAccount<Acc extends Account>(\n account: Acc,\n props?: TestJazzContextManagerProps<Acc>,\n ) {\n const context = new TestJazzContextManager<Acc>();\n\n const provider = props?.isAuthenticated ? \"testProvider\" : \"anonymous\";\n const storage = context.getAuthSecretStorage();\n const node = account._raw.core.node;\n\n const credentials = {\n accountID: account.id,\n accountSecret: node.getCurrentAgent().agentSecret,\n secretSeed: SecretSeedMap.get(account.id),\n provider,\n } satisfies AuthCredentials;\n\n storage.set(credentials);\n\n context.updateContext(\n {\n AccountSchema: account.constructor as AccountClass<Acc> &\n CoValueFromRaw<Acc>,\n ...props,\n },\n {\n me: account,\n node,\n done: () => {\n node.gracefulShutdown();\n },\n logOut: async () => {\n await storage.clear();\n node.gracefulShutdown();\n },\n },\n {\n credentials,\n },\n );\n\n return context;\n }\n\n static fromGuest<Acc extends Account>(\n { guest }: { guest: AnonymousJazzAgent },\n props: TestJazzContextManagerProps<Acc> = {},\n ) {\n const context = new TestJazzContextManager<Acc>();\n const node = guest.node;\n\n context.updateContext(props, {\n guest,\n node,\n done: () => {\n node.gracefulShutdown();\n },\n logOut: async () => {\n node.gracefulShutdown();\n },\n });\n\n return context;\n }\n\n async getNewContext(\n props: TestJazzContextManagerProps<Acc>,\n authProps?: JazzContextManagerAuthProps,\n ) {\n if (!syncServer.current) {\n throw new Error(\n \"You need to setup a test sync server with setupJazzTestSync to use the Auth functions\",\n );\n }\n\n const context = await createJazzContext({\n credentials: authProps?.credentials,\n defaultProfileName: props.defaultProfileName,\n newAccountProps: authProps?.newAccountProps,\n peersToLoadFrom: [getPeerConnectedToTestSyncServer()],\n crypto: await TestJSCrypto.create(),\n sessionProvider: randomSessionProvider,\n authSecretStorage: this.getAuthSecretStorage(),\n AccountSchema: props.AccountSchema,\n });\n\n return {\n me: context.account,\n node: context.node,\n done: () => {\n context.done();\n },\n logOut: () => {\n return context.logOut();\n },\n };\n }\n}\n\nexport async function linkAccounts(\n a: Account,\n b: Account,\n aRole: \"server\" | \"client\" = \"server\",\n bRole: \"server\" | \"client\" = \"server\",\n) {\n const [aPeer, bPeer] = cojsonInternals.connectedPeers(b.id, a.id, {\n peer1role: aRole,\n peer2role: bRole,\n });\n\n a._raw.core.node.syncManager.addPeer(aPeer);\n b._raw.core.node.syncManager.addPeer(bPeer);\n\n await a.waitForAllCoValuesSync();\n await b.waitForAllCoValuesSync();\n}\n\nexport async function setupJazzTestSync({\n asyncPeers = false,\n}: {\n asyncPeers?: boolean;\n} = {}) {\n if (syncServer.current) {\n syncServer.current.gracefulShutdown();\n }\n\n const account = await Account.create({\n creationProps: {\n name: \"Test Account\",\n },\n crypto: await TestJSCrypto.create(),\n });\n\n syncServer.current = account._raw.core.node;\n syncServer.asyncPeers = asyncPeers;\n\n return account;\n}\n"],"mappings":"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","names":["AccountClass","account"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coList.d.ts","sourceRoot":"","sources":["../../../src/tools/coValues/coList.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"coList.d.ts","sourceRoot":"","sources":["../../../src/tools/coValues/coList.ts"],"names":[],"mappings":"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"}
|
@@ -16,7 +16,7 @@ export type NotNull<T> = Exclude<T, null>;
|
|
16
16
|
*/
|
17
17
|
type IsUnion<T, U = T> = (T extends any ? (x: T) => void : never) extends (x: U) => void ? false : true;
|
18
18
|
export type RefsToResolve<V, DepthLimit extends number = 10, CurrentDepth extends number[] = []> = boolean | (DepthLimit extends CurrentDepth["length"] ? any : IsUnion<NonNullable<V>> extends true ? true : V extends Array<infer Item> ? {
|
19
|
-
$each
|
19
|
+
$each?: RefsToResolve<NotNull<Item>, DepthLimit, [
|
20
20
|
0,
|
21
21
|
...CurrentDepth
|
22
22
|
]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"deepLoading.d.ts","sourceRoot":"","sources":["../../../src/tools/coValues/deepLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE1C;;;;;GAKG;AACH,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CACxE,CAAC,EAAE,CAAC,KACD,IAAI,GACL,KAAK,GACL,IAAI,CAAC;AAET,MAAM,MAAM,aAAa,CACvB,CAAC,EACD,UAAU,SAAS,MAAM,GAAG,EAAE,EAC9B,YAAY,SAAS,MAAM,EAAE,GAAG,EAAE,IAEhC,OAAO,GACP,CAAC,UAAU,SAAS,YAAY,CAAC,QAAQ,CAAC,GAEtC,GAAG,GACH,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAClC,IAAI,GAEJ,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,CAAC,GAErB;IACE,KAAK,EAAE,aAAa,
|
1
|
+
{"version":3,"file":"deepLoading.d.ts","sourceRoot":"","sources":["../../../src/tools/coValues/deepLoading.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/testing.d.ts
CHANGED
@@ -16,6 +16,8 @@ export declare function setActiveAccount(account: Account): void;
|
|
16
16
|
*
|
17
17
|
* Takes care of restoring the active account after the callback is run.
|
18
18
|
*
|
19
|
+
* If the callback returns a promise, waits for it before restoring the active account.
|
20
|
+
*
|
19
21
|
* @param callback - The callback to run.
|
20
22
|
* @returns The result of the callback.
|
21
23
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/tools/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,kBAAkB,EAEvB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAM5B,MAAM,eAAe,CAAC;AAOvB,qBAAa,YAAa,SAAQ,YAAY;WAC/B,MAAM;CAoBpB;AAED,wBAAgB,gCAAgC,0BAiC/C;AAKD,wBAAsB,qBAAqB,CACzC,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,iBAAiB,EACrB,OAAO,CAAC,EAAE;IACV,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAuD/B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAEhD;AAED
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/tools/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,kBAAkB,EAEvB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAM5B,MAAM,eAAe,CAAC;AAOvB,qBAAa,YAAa,SAAQ,YAAY;WAC/B,MAAM;CAoBpB;AAED,wBAAgB,gCAAgC,0BAiC/C;AAKD,wBAAsB,qBAAqB,CACzC,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,iBAAiB,EACrB,OAAO,CAAC,EAAE;IACV,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAuD/B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAEhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAC5C,QAAQ,EAAE,MAAM,MAAM,GACrB,MAAM,CAcR;AAED,wBAAsB,mBAAmB;;GASxC;AAED,MAAM,MAAM,2BAA2B,CAAC,GAAG,SAAS,OAAO,IACzD,2BAA2B,CAAC,GAAG,CAAC,GAAG;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEJ,qBAAa,sBAAsB,CACjC,GAAG,SAAS,OAAO,CACnB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,CAAC,kBAAkB,CAAC,GAAG,SAAS,OAAO,EAC3C,OAAO,CAAC,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,kBAAkB,CAAA;KAAE,EAC7C,KAAK,CAAC,EAAE,2BAA2B,CAAC,GAAG,CAAC;IAS1C,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,OAAO,EACpC,OAAO,EAAE,GAAG,EACZ,KAAK,CAAC,EAAE,2BAA2B,CAAC,GAAG,CAAC;IA0C1C,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,OAAO,EAClC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,kBAAkB,CAAA;KAAE,EACxC,KAAK,GAAE,2BAA2B,CAAC,GAAG,CAAM;IAmBxC,aAAa,CACjB,KAAK,EAAE,2BAA2B,CAAC,GAAG,CAAC,EACvC,SAAS,CAAC,EAAE,2BAA2B;;uBAuE0wJ,cAAc;;;;;;;;CAzCl0J;AAED,wBAAsB,YAAY,CAChC,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,KAAK,GAAE,QAAQ,GAAG,QAAmB,EACrC,KAAK,GAAE,QAAQ,GAAG,QAAmB,iBAYtC;AAED,wBAAsB,iBAAiB,CAAC,EACtC,UAAkB,GACnB,GAAE;IACD,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,oBAgBL"}
|
package/package.json
CHANGED
@@ -140,7 +140,7 @@
|
|
140
140
|
},
|
141
141
|
"type": "module",
|
142
142
|
"license": "MIT",
|
143
|
-
"version": "0.17.
|
143
|
+
"version": "0.17.12",
|
144
144
|
"dependencies": {
|
145
145
|
"@manuscripts/prosemirror-recreate-steps": "^0.1.4",
|
146
146
|
"@scure/base": "1.2.1",
|
@@ -156,9 +156,9 @@
|
|
156
156
|
"prosemirror-state": "^1.4.3",
|
157
157
|
"prosemirror-transform": "^1.9.0",
|
158
158
|
"zod": "3.25.76",
|
159
|
-
"cojson": "0.17.
|
160
|
-
"cojson
|
161
|
-
"cojson-
|
159
|
+
"cojson-transport-ws": "0.17.12",
|
160
|
+
"cojson": "0.17.12",
|
161
|
+
"cojson-storage-indexeddb": "0.17.12"
|
162
162
|
},
|
163
163
|
"devDependencies": {
|
164
164
|
"@scure/bip39": "^1.3.0",
|
@@ -181,18 +181,18 @@
|
|
181
181
|
},
|
182
182
|
"peerDependencies": {
|
183
183
|
"@bam.tech/react-native-image-resizer": "*",
|
184
|
-
"@op-engineering/op-sqlite": "
|
184
|
+
"@op-engineering/op-sqlite": "*",
|
185
185
|
"@react-native-community/netinfo": "*",
|
186
186
|
"expo-file-system": "*",
|
187
187
|
"expo-secure-store": "*",
|
188
|
-
"expo-sqlite": "
|
188
|
+
"expo-sqlite": "*",
|
189
189
|
"react": "*",
|
190
190
|
"react-dom": "*",
|
191
191
|
"react-native": "*",
|
192
192
|
"react-native-fast-encoder": "^0.2.0",
|
193
|
-
"react-native-mmkv": "^3.
|
194
|
-
"react-native-nitro-modules": "0.
|
195
|
-
"react-native-quick-crypto": "1.0.0-beta.
|
193
|
+
"react-native-mmkv": "^3.3.0",
|
194
|
+
"react-native-nitro-modules": "^0.26.4",
|
195
|
+
"react-native-quick-crypto": "^1.0.0-beta.18",
|
196
196
|
"svelte": "^5.0.0"
|
197
197
|
},
|
198
198
|
"peerDependenciesMeta": {
|
@@ -621,7 +621,11 @@ export class CoList<out Item = any> extends Array<Item> implements CoValue {
|
|
621
621
|
resolve?: RefsToResolveStrict<L, R>;
|
622
622
|
},
|
623
623
|
): Promise<Resolved<L, R> | null> {
|
624
|
-
|
624
|
+
const listId = CoList._findUnique(
|
625
|
+
options.unique,
|
626
|
+
options.owner.id,
|
627
|
+
options.owner._loadedAs,
|
628
|
+
);
|
625
629
|
let list: Resolved<L, R> | null = await loadCoValueWithoutMe(this, listId, {
|
626
630
|
...options,
|
627
631
|
loadAs: options.owner._loadedAs,
|
package/src/tools/testing.ts
CHANGED
@@ -159,6 +159,8 @@ export function setActiveAccount(account: Account) {
|
|
159
159
|
*
|
160
160
|
* Takes care of restoring the active account after the callback is run.
|
161
161
|
*
|
162
|
+
* If the callback returns a promise, waits for it before restoring the active account.
|
163
|
+
*
|
162
164
|
* @param callback - The callback to run.
|
163
165
|
* @returns The result of the callback.
|
164
166
|
*/
|
@@ -168,6 +170,14 @@ export function runWithoutActiveAccount<Result>(
|
|
168
170
|
const me = Account.getMe();
|
169
171
|
activeAccountContext.set(null);
|
170
172
|
const result = callback();
|
173
|
+
|
174
|
+
if (result instanceof Promise) {
|
175
|
+
return result.finally(() => {
|
176
|
+
activeAccountContext.set(me);
|
177
|
+
return result;
|
178
|
+
}) as Result;
|
179
|
+
}
|
180
|
+
|
171
181
|
activeAccountContext.set(me);
|
172
182
|
return result;
|
173
183
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { assert, 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 { CoList, CoMap, Loaded } from "../internal.js";
|
5
5
|
|
6
6
|
describe("CoList", () => {
|
7
7
|
describe("init", () => {
|
@@ -270,5 +270,51 @@ describe("CoList", () => {
|
|
270
270
|
assert(firstDog);
|
271
271
|
expectTypeOf(firstDog.name).toEqualTypeOf<string>();
|
272
272
|
});
|
273
|
+
|
274
|
+
test("loading a nested list with deep resolve and $onError", async () => {
|
275
|
+
const Dog = co.map({
|
276
|
+
name: z.string(),
|
277
|
+
breed: z.string(),
|
278
|
+
});
|
279
|
+
|
280
|
+
const Person = co.map({
|
281
|
+
name: z.string(),
|
282
|
+
age: z.number(),
|
283
|
+
dogs: co.list(Dog),
|
284
|
+
});
|
285
|
+
|
286
|
+
const person = Person.create({
|
287
|
+
name: "John",
|
288
|
+
age: 20,
|
289
|
+
dogs: [
|
290
|
+
{ name: "Rex", breed: "Labrador" },
|
291
|
+
{ name: "Fido", breed: "Poodle" },
|
292
|
+
],
|
293
|
+
});
|
294
|
+
|
295
|
+
const loadedPerson = await Person.load(person.id, {
|
296
|
+
resolve: { dogs: { $onError: null } },
|
297
|
+
});
|
298
|
+
|
299
|
+
type ExpectedType =
|
300
|
+
| ({
|
301
|
+
name: string;
|
302
|
+
age: number;
|
303
|
+
dogs: CoList<
|
304
|
+
| ({
|
305
|
+
name: string;
|
306
|
+
breed: string;
|
307
|
+
} & CoMap)
|
308
|
+
| null
|
309
|
+
> | null;
|
310
|
+
} & CoMap)
|
311
|
+
| null;
|
312
|
+
|
313
|
+
function matches(value: ExpectedType) {
|
314
|
+
return value;
|
315
|
+
}
|
316
|
+
|
317
|
+
matches(loadedPerson);
|
318
|
+
});
|
273
319
|
});
|
274
320
|
});
|
@@ -3,10 +3,15 @@ import { assert, beforeEach, describe, expect, test, vi } from "vitest";
|
|
3
3
|
import { Account, Group, subscribeToCoValue, z } from "../index.js";
|
4
4
|
import {
|
5
5
|
Loaded,
|
6
|
+
activeAccountContext,
|
6
7
|
co,
|
7
8
|
coValueClassFromCoValueClassOrSchema,
|
8
9
|
} from "../internal.js";
|
9
|
-
import {
|
10
|
+
import {
|
11
|
+
createJazzTestAccount,
|
12
|
+
runWithoutActiveAccount,
|
13
|
+
setupJazzTestSync,
|
14
|
+
} from "../testing.js";
|
10
15
|
import { waitFor } from "./utils.js";
|
11
16
|
|
12
17
|
const Crypto = await WasmCrypto.create();
|
@@ -861,6 +866,42 @@ describe("CoList subscription", async () => {
|
|
861
866
|
|
862
867
|
expect(spy).toHaveBeenCalledTimes(2);
|
863
868
|
});
|
869
|
+
|
870
|
+
test("loading a nested list with deep resolve and $onError", async () => {
|
871
|
+
const Dog = co.map({
|
872
|
+
name: z.string(),
|
873
|
+
breed: z.string(),
|
874
|
+
});
|
875
|
+
|
876
|
+
const Person = co.map({
|
877
|
+
name: z.string(),
|
878
|
+
age: z.number(),
|
879
|
+
dogs: co.list(Dog),
|
880
|
+
});
|
881
|
+
|
882
|
+
const person = Person.create(
|
883
|
+
{
|
884
|
+
name: "John",
|
885
|
+
age: 20,
|
886
|
+
dogs: Person.shape.dogs.create([
|
887
|
+
{ name: "Rex", breed: "Labrador" },
|
888
|
+
{ name: "Fido", breed: "Poodle" },
|
889
|
+
]),
|
890
|
+
},
|
891
|
+
Group.create().makePublic(),
|
892
|
+
);
|
893
|
+
|
894
|
+
const bob = await createJazzTestAccount();
|
895
|
+
|
896
|
+
const loadedPerson = await Person.load(person.id, {
|
897
|
+
resolve: { dogs: { $onError: null } },
|
898
|
+
loadAs: bob,
|
899
|
+
});
|
900
|
+
|
901
|
+
assert(loadedPerson);
|
902
|
+
expect(loadedPerson.name).toBe("John");
|
903
|
+
expect(loadedPerson.dogs).toBeNull();
|
904
|
+
});
|
864
905
|
});
|
865
906
|
|
866
907
|
describe("CoList unique methods", () => {
|
@@ -906,6 +947,29 @@ describe("CoList unique methods", () => {
|
|
906
947
|
expect(result?.[2]).toBe("item3");
|
907
948
|
});
|
908
949
|
|
950
|
+
test("upsertUnique without an active account", async () => {
|
951
|
+
const account = activeAccountContext.get();
|
952
|
+
const ItemList = co.list(z.string());
|
953
|
+
|
954
|
+
const sourceData = ["item1", "item2", "item3"];
|
955
|
+
|
956
|
+
const result = await runWithoutActiveAccount(() => {
|
957
|
+
return ItemList.upsertUnique({
|
958
|
+
value: sourceData,
|
959
|
+
unique: "new-list",
|
960
|
+
owner: account,
|
961
|
+
});
|
962
|
+
});
|
963
|
+
|
964
|
+
expect(result).not.toBeNull();
|
965
|
+
expect(result?.length).toBe(3);
|
966
|
+
expect(result?.[0]).toBe("item1");
|
967
|
+
expect(result?.[1]).toBe("item2");
|
968
|
+
expect(result?.[2]).toBe("item3");
|
969
|
+
|
970
|
+
expect(result?._owner).toEqual(account);
|
971
|
+
});
|
972
|
+
|
909
973
|
test("upsertUnique updates existing list", async () => {
|
910
974
|
const ItemList = co.list(z.string());
|
911
975
|
const group = Group.create();
|
@@ -1548,6 +1548,46 @@ describe("Creating and finding unique CoMaps", async () => {
|
|
1548
1548
|
});
|
1549
1549
|
});
|
1550
1550
|
|
1551
|
+
test("upserting without an active account", async () => {
|
1552
|
+
const account = activeAccountContext.get();
|
1553
|
+
|
1554
|
+
// Schema
|
1555
|
+
const Event = co.map({
|
1556
|
+
title: z.string(),
|
1557
|
+
identifier: z.string(),
|
1558
|
+
external_id: z.string(),
|
1559
|
+
});
|
1560
|
+
|
1561
|
+
// Data
|
1562
|
+
const sourceData = {
|
1563
|
+
title: "Test Event Title",
|
1564
|
+
identifier: "test-event-identifier",
|
1565
|
+
_id: "test-event-external-id",
|
1566
|
+
};
|
1567
|
+
|
1568
|
+
const activeEvent = await runWithoutActiveAccount(() => {
|
1569
|
+
return Event.upsertUnique({
|
1570
|
+
value: {
|
1571
|
+
title: sourceData.title,
|
1572
|
+
identifier: sourceData.identifier,
|
1573
|
+
external_id: sourceData._id,
|
1574
|
+
},
|
1575
|
+
unique: sourceData.identifier,
|
1576
|
+
owner: account,
|
1577
|
+
});
|
1578
|
+
});
|
1579
|
+
|
1580
|
+
expect(activeEvent).toEqual({
|
1581
|
+
title: sourceData.title,
|
1582
|
+
identifier: sourceData.identifier,
|
1583
|
+
external_id: sourceData._id,
|
1584
|
+
});
|
1585
|
+
|
1586
|
+
assert(activeEvent);
|
1587
|
+
|
1588
|
+
expect(activeEvent._owner).toEqual(account);
|
1589
|
+
});
|
1590
|
+
|
1551
1591
|
test("upserting an existing value", async () => {
|
1552
1592
|
// Schema
|
1553
1593
|
const Event = co.map({
|