jazz-react-native 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +43 -0
  3. package/README.md +3 -229
  4. package/dist/index.d.ts +3 -6
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -6
  7. package/dist/index.js.map +1 -1
  8. package/dist/provider.d.ts +2 -13
  9. package/dist/provider.d.ts.map +1 -1
  10. package/dist/provider.js +8 -48
  11. package/dist/provider.js.map +1 -1
  12. package/dist/storage/mmkv-store-adapter.d.ts +8 -0
  13. package/dist/storage/mmkv-store-adapter.d.ts.map +1 -0
  14. package/dist/storage/mmkv-store-adapter.js +19 -0
  15. package/dist/storage/mmkv-store-adapter.js.map +1 -0
  16. package/dist/storage/op-sqlite-adapter.d.ts +18 -0
  17. package/dist/storage/op-sqlite-adapter.d.ts.map +1 -0
  18. package/dist/storage/op-sqlite-adapter.js +127 -0
  19. package/dist/storage/op-sqlite-adapter.js.map +1 -0
  20. package/dist/testing.d.ts +1 -1
  21. package/dist/testing.d.ts.map +1 -1
  22. package/dist/testing.js +1 -1
  23. package/dist/testing.js.map +1 -1
  24. package/package.json +10 -18
  25. package/src/index.ts +4 -7
  26. package/src/provider.tsx +12 -91
  27. package/src/storage/mmkv-store-adapter.ts +24 -0
  28. package/src/storage/op-sqlite-adapter.ts +168 -0
  29. package/src/testing.ts +1 -0
  30. package/dist/ReactNativeContextManager.d.ts +0 -30
  31. package/dist/ReactNativeContextManager.d.ts.map +0 -1
  32. package/dist/ReactNativeContextManager.js +0 -39
  33. package/dist/ReactNativeContextManager.js.map +0 -1
  34. package/dist/auth/DemoAuthUI.d.ts +0 -8
  35. package/dist/auth/DemoAuthUI.d.ts.map +0 -1
  36. package/dist/auth/DemoAuthUI.js +0 -156
  37. package/dist/auth/DemoAuthUI.js.map +0 -1
  38. package/dist/auth/auth.d.ts +0 -3
  39. package/dist/auth/auth.d.ts.map +0 -1
  40. package/dist/auth/auth.js +0 -12
  41. package/dist/auth/auth.js.map +0 -1
  42. package/dist/crypto/RNQuickCrypto.d.ts +0 -14
  43. package/dist/crypto/RNQuickCrypto.d.ts.map +0 -1
  44. package/dist/crypto/RNQuickCrypto.js +0 -31
  45. package/dist/crypto/RNQuickCrypto.js.map +0 -1
  46. package/dist/crypto/index.d.ts +0 -2
  47. package/dist/crypto/index.d.ts.map +0 -1
  48. package/dist/crypto/index.js +0 -2
  49. package/dist/crypto/index.js.map +0 -1
  50. package/dist/hooks.d.ts +0 -14
  51. package/dist/hooks.d.ts.map +0 -1
  52. package/dist/hooks.js +0 -35
  53. package/dist/hooks.js.map +0 -1
  54. package/dist/media.d.ts +0 -24
  55. package/dist/media.d.ts.map +0 -1
  56. package/dist/media.js +0 -61
  57. package/dist/media.js.map +0 -1
  58. package/dist/platform.d.ts +0 -46
  59. package/dist/platform.d.ts.map +0 -1
  60. package/dist/platform.js +0 -155
  61. package/dist/platform.js.map +0 -1
  62. package/dist/storage/expo-secure-store-adapter.d.ts +0 -8
  63. package/dist/storage/expo-secure-store-adapter.d.ts.map +0 -1
  64. package/dist/storage/expo-secure-store-adapter.js +0 -25
  65. package/dist/storage/expo-secure-store-adapter.js.map +0 -1
  66. package/dist/storage/kv-store-context.d.ts +0 -17
  67. package/dist/storage/kv-store-context.d.ts.map +0 -1
  68. package/dist/storage/kv-store-context.js +0 -27
  69. package/dist/storage/kv-store-context.js.map +0 -1
  70. package/src/ReactNativeContextManager.ts +0 -70
  71. package/src/auth/DemoAuthUI.tsx +0 -202
  72. package/src/auth/auth.ts +0 -14
  73. package/src/crypto/RNQuickCrypto.ts +0 -59
  74. package/src/crypto/index.ts +0 -1
  75. package/src/hooks.tsx +0 -72
  76. package/src/media.tsx +0 -92
  77. package/src/platform.ts +0 -238
  78. package/src/storage/expo-secure-store-adapter.ts +0 -29
  79. package/src/storage/kv-store-context.ts +0 -39
  80. package/src/testing.tsx +0 -1
@@ -1,14 +0,0 @@
1
- import { JsonValue } from "cojson";
2
- import { CojsonInternalTypes } from "cojson";
3
- import { PureJSCrypto } from "cojson/dist/crypto/PureJSCrypto";
4
- import { Ed } from "react-native-quick-crypto";
5
- export declare class RNQuickCrypto extends PureJSCrypto {
6
- ed: Ed;
7
- constructor();
8
- static create(): Promise<RNQuickCrypto>;
9
- newEd25519SigningKey(): Uint8Array;
10
- getSignerID(secret: CojsonInternalTypes.SignerSecret): CojsonInternalTypes.SignerID;
11
- sign(secret: CojsonInternalTypes.SignerSecret, message: JsonValue): CojsonInternalTypes.Signature;
12
- verify(signature: CojsonInternalTypes.Signature, message: JsonValue, id: CojsonInternalTypes.SignerID): boolean;
13
- }
14
- //# sourceMappingURL=RNQuickCrypto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RNQuickCrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/RNQuickCrypto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAmB,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAK/C,qBAAa,aAAc,SAAQ,YAAY;IAC7C,EAAE,EAAE,EAAE,CAAC;;WAOM,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;IAI7C,oBAAoB,IAAI,UAAU;IAKlC,WAAW,CACT,MAAM,EAAE,mBAAmB,CAAC,YAAY,GACvC,mBAAmB,CAAC,QAAQ;IAM/B,IAAI,CACF,MAAM,EAAE,mBAAmB,CAAC,YAAY,EACxC,OAAO,EAAE,SAAS,GACjB,mBAAmB,CAAC,SAAS;IAUhC,MAAM,CACJ,SAAS,EAAE,mBAAmB,CAAC,SAAS,EACxC,OAAO,EAAE,SAAS,EAClB,EAAE,EAAE,mBAAmB,CAAC,QAAQ,GAC/B,OAAO;CAOX"}
@@ -1,31 +0,0 @@
1
- import { base58 } from "@scure/base";
2
- import { cojsonInternals } from "cojson";
3
- import { PureJSCrypto } from "cojson/dist/crypto/PureJSCrypto"; // Importing from dist to not rely on the exports field
4
- import { Ed } from "react-native-quick-crypto";
5
- const { stableStringify } = cojsonInternals;
6
- const textEncoder = new TextEncoder();
7
- export class RNQuickCrypto extends PureJSCrypto {
8
- ed;
9
- constructor() {
10
- super();
11
- this.ed = new Ed("ed25519", {});
12
- }
13
- static async create() {
14
- return new RNQuickCrypto();
15
- }
16
- newEd25519SigningKey() {
17
- this.ed.generateKeyPairSync();
18
- return new Uint8Array(this.ed.getPrivateKey());
19
- }
20
- getSignerID(secret) {
21
- return `signer_z${base58.encode(base58.decode(secret.substring("signerSecret_z".length)))}`;
22
- }
23
- sign(secret, message) {
24
- const signature = new Uint8Array(this.ed.signSync(textEncoder.encode(stableStringify(message)), base58.decode(secret.substring("signerSecret_z".length))));
25
- return `signature_z${base58.encode(signature)}`;
26
- }
27
- verify(signature, message, id) {
28
- return this.ed.verifySync(base58.decode(signature.substring("signature_z".length)), textEncoder.encode(stableStringify(message)), base58.decode(id.substring("signer_z".length)));
29
- }
30
- }
31
- //# sourceMappingURL=RNQuickCrypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RNQuickCrypto.js","sourceRoot":"","sources":["../../src/crypto/RNQuickCrypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAuB,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC,CAAC,uDAAuD;AACvH,OAAO,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAC/C,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;AAE5C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,EAAE,CAAK;IAEP;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;QAC9B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CACT,MAAwC;QAExC,OAAO,WAAW,MAAM,CAAC,MAAM,CAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CACzD,EAAE,CAAC;IACN,CAAC;IAED,IAAI,CACF,MAAwC,EACxC,OAAkB;QAElB,MAAM,SAAS,GAAG,IAAI,UAAU,CAC9B,IAAI,CAAC,EAAE,CAAC,QAAQ,CACd,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CACzD,CACF,CAAC;QACF,OAAO,cAAc,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,CACJ,SAAwC,EACxC,OAAkB,EAClB,EAAgC;QAEhC,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CACvB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EACxD,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export { RNQuickCrypto } from "./RNQuickCrypto.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { RNQuickCrypto } from "./RNQuickCrypto.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/hooks.d.ts DELETED
@@ -1,14 +0,0 @@
1
- import { CoValue, CoValueClass, ID } from "jazz-tools";
2
- import { RegisteredAccount } from "./provider.js";
3
- export { useCoState, experimental_useInboxSender, useDemoAuth, usePassphraseAuth, useJazzContext, useAuthSecretStorage, useIsAuthenticated, useAccount, useAccountOrGuest, } from "jazz-react-core";
4
- declare module "jazz-react-core" {
5
- interface Register {
6
- Account: RegisteredAccount;
7
- }
8
- }
9
- export declare function useAcceptInvite<V extends CoValue>({ invitedObjectSchema, onAccept, forValueHint, }: {
10
- invitedObjectSchema: CoValueClass<V>;
11
- onAccept: (projectID: ID<V>) => void;
12
- forValueHint?: string;
13
- }): void;
14
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAmB,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAiB,QAAQ;QACvB,OAAO,EAAE,iBAAiB,CAAC;KAC5B;CACF;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,EACjD,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,EAAE;IACD,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAsCP"}
package/dist/hooks.js DELETED
@@ -1,35 +0,0 @@
1
- import { useEffect } from "react";
2
- import { useJazzContext } from "jazz-react-core";
3
- import { parseInviteLink } from "jazz-tools";
4
- import { Linking } from "react-native";
5
- export { useCoState, experimental_useInboxSender, useDemoAuth, usePassphraseAuth, useJazzContext, useAuthSecretStorage, useIsAuthenticated, useAccount, useAccountOrGuest, } from "jazz-react-core";
6
- export function useAcceptInvite({ invitedObjectSchema, onAccept, forValueHint, }) {
7
- const context = useJazzContext();
8
- if (!("me" in context)) {
9
- throw new Error("useAcceptInvite can't be used in a JazzProvider with auth === 'guest'.");
10
- }
11
- useEffect(() => {
12
- const handleDeepLink = ({ url }) => {
13
- const result = parseInviteLink(url);
14
- if (result && result.valueHint === forValueHint) {
15
- context.me
16
- .acceptInvite(result.valueID, result.inviteSecret, invitedObjectSchema)
17
- .then(() => {
18
- onAccept(result.valueID);
19
- })
20
- .catch((e) => {
21
- console.error("Failed to accept invite", e);
22
- });
23
- }
24
- };
25
- const linkingListener = Linking.addEventListener("url", handleDeepLink);
26
- void Linking.getInitialURL().then((url) => {
27
- if (url)
28
- handleDeepLink({ url });
29
- });
30
- return () => {
31
- linkingListener.remove();
32
- };
33
- }, [context, onAccept, invitedObjectSchema, forValueHint]);
34
- }
35
- //# sourceMappingURL=hooks.js.map
package/dist/hooks.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAA6B,eAAe,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAQzB,MAAM,UAAU,eAAe,CAAoB,EACjD,mBAAmB,EACnB,QAAQ,EACR,YAAY,GAKb;IACC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,EAAmB,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,eAAe,CAAI,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;gBAChD,OAAO,CAAC,EAAE;qBACP,YAAY,CACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,YAAY,EACnB,mBAAmB,CACpB;qBACA,IAAI,CAAC,GAAG,EAAE;oBACT,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAExE,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG;gBAAE,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7D,CAAC"}
package/dist/media.d.ts DELETED
@@ -1,24 +0,0 @@
1
- import { ImageDefinition } from "jazz-tools";
2
- import React from "react";
3
- /** @category Media */
4
- export declare function useProgressiveImg({ image, maxWidth, targetWidth, }: {
5
- image: ImageDefinition | null | undefined;
6
- maxWidth?: number;
7
- targetWidth?: number;
8
- }): {
9
- src: string | undefined;
10
- res: "placeholder" | `${number}x${number}` | undefined;
11
- originalSize: import("jazz-tools").co<[number, number]> | undefined;
12
- };
13
- /** @category Media */
14
- export declare function ProgressiveImg({ children, image, maxWidth, targetWidth, }: {
15
- children: (result: {
16
- src: string | undefined;
17
- res: `${number}x${number}` | "placeholder" | undefined;
18
- originalSize: readonly [number, number] | undefined;
19
- }) => React.ReactNode;
20
- image: ImageDefinition | null | undefined;
21
- maxWidth?: number;
22
- targetWidth?: number;
23
- }): React.ReactNode;
24
- //# sourceMappingURL=media.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,sBAAsB;AACtB,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;EA2DA;AAED,sBAAsB;AACtB,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,aAAa,GAAG,SAAS,CAAC;QACvD,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KACrD,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,mBAGA"}
package/dist/media.js DELETED
@@ -1,61 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- /** @category Media */
3
- export function useProgressiveImg({ image, maxWidth, targetWidth, }) {
4
- const [current, setCurrent] = useState(undefined);
5
- useEffect(() => {
6
- let lastHighestRes;
7
- if (!image)
8
- return;
9
- const unsub = image.subscribe({}, (update) => {
10
- const highestRes = update?.highestResAvailable({ maxWidth, targetWidth });
11
- if (highestRes && highestRes.res !== lastHighestRes) {
12
- lastHighestRes = highestRes.res;
13
- // use the base64 data directly
14
- const chunks = highestRes.stream.getChunks();
15
- if (chunks?.chunks && chunks.chunks.length > 0) {
16
- // convert chunks to base64
17
- const totalLength = chunks.chunks.reduce((acc, chunk) => acc + chunk.length, 0);
18
- const combinedArray = new Uint8Array(totalLength);
19
- let offset = 0;
20
- chunks.chunks.forEach((chunk) => {
21
- combinedArray.set(chunk, offset);
22
- offset += chunk.length;
23
- });
24
- // Create data URL
25
- const base64 = Buffer.from(combinedArray).toString("base64");
26
- const dataUrl = `data:${chunks.mimeType};base64,${base64}`;
27
- setCurrent({
28
- src: dataUrl,
29
- res: highestRes.res,
30
- });
31
- }
32
- else {
33
- // Fallback to placeholder if chunks aren't available
34
- console.warn("No chunks available for image", image.id);
35
- setCurrent({
36
- src: update?.placeholderDataURL,
37
- res: "placeholder",
38
- });
39
- }
40
- }
41
- else if (!highestRes) {
42
- setCurrent({
43
- src: update?.placeholderDataURL,
44
- res: "placeholder",
45
- });
46
- }
47
- });
48
- return unsub;
49
- }, [image?.id, maxWidth]);
50
- return {
51
- src: current?.src,
52
- res: current?.res,
53
- originalSize: image?.originalSize,
54
- };
55
- }
56
- /** @category Media */
57
- export function ProgressiveImg({ children, image, maxWidth, targetWidth, }) {
58
- const result = useProgressiveImg({ image, maxWidth, targetWidth });
59
- return result && children(result);
60
- }
61
- //# sourceMappingURL=media.js.map
package/dist/media.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.tsx"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { LocalNode, RawAccountID } from "cojson";
2
- import { PureJSCrypto } from "cojson/dist/crypto/PureJSCrypto";
3
- import { Account, AgentID, AuthCredentials, AuthSecretStorage, CoValue, CoValueClass, CryptoProvider, ID, NewAccountProps, SessionID, SyncConfig } from "jazz-tools";
4
- import type { RNQuickCrypto } from "./crypto/RNQuickCrypto.js";
5
- import { ExpoSecureStoreAdapter } from "./storage/expo-secure-store-adapter.js";
6
- export type BaseReactNativeContextOptions = {
7
- sync: SyncConfig;
8
- reconnectionTimeout?: number;
9
- storage?: "sqlite" | "disabled";
10
- CryptoProvider?: typeof PureJSCrypto | typeof RNQuickCrypto;
11
- authSecretStorage: AuthSecretStorage;
12
- };
13
- export declare function createJazzReactNativeGuestContext(options: BaseReactNativeContextOptions): Promise<{
14
- guest: import("jazz-tools").AnonymousJazzAgent;
15
- node: LocalNode;
16
- done: () => void;
17
- logOut: () => Promise<void>;
18
- }>;
19
- export type ReactNativeContextOptions<Acc extends Account> = {
20
- credentials?: AuthCredentials;
21
- AccountSchema?: CoValueClass<Acc> & {
22
- fromNode: (typeof Account)["fromNode"];
23
- };
24
- newAccountProps?: NewAccountProps;
25
- defaultProfileName?: string;
26
- } & BaseReactNativeContextOptions;
27
- export declare function createJazzReactNativeContext<Acc extends Account>(options: ReactNativeContextOptions<Acc>): Promise<{
28
- me: Acc;
29
- node: LocalNode;
30
- authSecretStorage: AuthSecretStorage;
31
- done: () => void;
32
- logOut: () => Promise<void>;
33
- }>;
34
- /** @category Auth Providers */
35
- export type SessionProvider = (accountID: ID<Account> | AgentID) => Promise<SessionID>;
36
- export declare function provideLockSession(accountID: ID<Account> | AgentID, crypto: CryptoProvider): Promise<{
37
- sessionID: `sealer_z${string}/signer_z${string}_session_z${string}` | `${RawAccountID}_session_z${string}`;
38
- sessionDone: () => void;
39
- }>;
40
- /** @category Invite Links */
41
- export declare function createInviteLink<C extends CoValue>(value: C, role: "reader" | "writer" | "admin", { baseURL, valueHint }?: {
42
- baseURL?: string;
43
- valueHint?: string;
44
- }): string;
45
- export declare function setupKvStore(kvStore?: ExpoSecureStoreAdapter): ExpoSecureStoreAdapter;
46
- //# sourceMappingURL=platform.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAQ,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,EAAE,EACF,eAAe,EACf,SAAS,EACT,UAAU,EAIX,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGhF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,UAAU,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,YAAY,GAAG,OAAO,aAAa,CAAC;IAC5D,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,CAAC;AAyEF,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,6BAA6B;;;;;GA0BvC;AAED,MAAM,MAAM,yBAAyB,CAAC,GAAG,SAAS,OAAO,IAAI;IAC3D,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,aAAa,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG;QAClC,QAAQ,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;KACxC,CAAC;IACF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,6BAA6B,CAAC;AAElC,wBAAsB,4BAA4B,CAAC,GAAG,SAAS,OAAO,EACpE,OAAO,EAAE,yBAAyB,CAAC,GAAG,CAAC;;;;;;GAsDxC;AAED,+BAA+B;AAC/B,MAAM,MAAM,eAAe,GAAG,CAC5B,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,KAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,EAChC,MAAM,EAAE,cAAc;;;GAevB;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,EACnC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACpE,MAAM,CAER;AAED,wBAAgB,YAAY,CAAC,OAAO,yBAA+B,0BAIlE"}
package/dist/platform.js DELETED
@@ -1,155 +0,0 @@
1
- import NetInfo from "@react-native-community/netinfo";
2
- import { SQLiteStorage } from "cojson-storage-rn-sqlite";
3
- import { PureJSCrypto } from "cojson/dist/crypto/PureJSCrypto"; // Importing from dist to not rely on the exports field
4
- import { createInviteLink as baseCreateInviteLink, createAnonymousJazzContext, createJazzContext, } from "jazz-tools";
5
- import { WebSocketPeerWithReconnection } from "cojson-transport-ws";
6
- import { ExpoSecureStoreAdapter } from "./storage/expo-secure-store-adapter.js";
7
- import { KvStoreContext } from "./storage/kv-store-context.js";
8
- class ReactNativeWebSocketPeerWithReconnection extends WebSocketPeerWithReconnection {
9
- onNetworkChange(callback) {
10
- return NetInfo.addEventListener((state) => callback(state.isConnected ?? false));
11
- }
12
- }
13
- async function setupPeers(options) {
14
- const CryptoProvider = options.CryptoProvider || PureJSCrypto;
15
- const crypto = await CryptoProvider.create();
16
- let node = undefined;
17
- const peersToLoadFrom = [];
18
- if (options.storage === "sqlite") {
19
- const storage = await SQLiteStorage.asPeer({
20
- filename: "jazz-storage",
21
- trace: false,
22
- });
23
- peersToLoadFrom.push(storage);
24
- }
25
- if (options.sync.when === "never") {
26
- return {
27
- toggleNetwork: () => { },
28
- peersToLoadFrom,
29
- setNode: () => { },
30
- crypto,
31
- };
32
- }
33
- const wsPeer = new ReactNativeWebSocketPeerWithReconnection({
34
- peer: options.sync.peer,
35
- reconnectionTimeout: options.reconnectionTimeout,
36
- addPeer: (peer) => {
37
- if (node) {
38
- node.syncManager.addPeer(peer);
39
- }
40
- else {
41
- peersToLoadFrom.push(peer);
42
- }
43
- },
44
- removePeer: (peer) => {
45
- peersToLoadFrom.splice(peersToLoadFrom.indexOf(peer), 1);
46
- },
47
- });
48
- function toggleNetwork(enabled) {
49
- if (enabled) {
50
- wsPeer.enable();
51
- }
52
- else {
53
- wsPeer.disable();
54
- }
55
- }
56
- function setNode(value) {
57
- node = value;
58
- }
59
- if (options.sync.when === "always" || !options.sync.when) {
60
- toggleNetwork(true);
61
- }
62
- return {
63
- toggleNetwork,
64
- peersToLoadFrom,
65
- setNode,
66
- crypto,
67
- };
68
- }
69
- export async function createJazzReactNativeGuestContext(options) {
70
- const { toggleNetwork, peersToLoadFrom, setNode, crypto } = await setupPeers(options);
71
- const context = await createAnonymousJazzContext({
72
- crypto,
73
- peersToLoadFrom,
74
- });
75
- setNode(context.agent.node);
76
- options.authSecretStorage.emitUpdate(null);
77
- return {
78
- guest: context.agent,
79
- node: context.agent.node,
80
- done: () => {
81
- // TODO: Sync all the covalues before closing the connection & context
82
- toggleNetwork(false);
83
- context.done();
84
- },
85
- logOut: () => {
86
- return context.logOut();
87
- },
88
- };
89
- }
90
- export async function createJazzReactNativeContext(options) {
91
- const { toggleNetwork, peersToLoadFrom, setNode, crypto } = await setupPeers(options);
92
- let unsubscribeAuthUpdate = () => { };
93
- if (options.sync.when === "signedUp") {
94
- const authSecretStorage = options.authSecretStorage;
95
- const credentials = options.credentials ?? (await authSecretStorage.get());
96
- // To update the internal state with the current credentials
97
- authSecretStorage.emitUpdate(credentials);
98
- function handleAuthUpdate(isAuthenticated) {
99
- if (isAuthenticated) {
100
- toggleNetwork(true);
101
- }
102
- else {
103
- toggleNetwork(false);
104
- }
105
- }
106
- unsubscribeAuthUpdate = authSecretStorage.onUpdate(handleAuthUpdate);
107
- handleAuthUpdate(authSecretStorage.isAuthenticated);
108
- }
109
- const context = await createJazzContext({
110
- credentials: options.credentials,
111
- newAccountProps: options.newAccountProps,
112
- peersToLoadFrom,
113
- crypto,
114
- defaultProfileName: options.defaultProfileName,
115
- AccountSchema: options.AccountSchema,
116
- sessionProvider: provideLockSession,
117
- authSecretStorage: options.authSecretStorage,
118
- });
119
- setNode(context.node);
120
- return {
121
- me: context.account,
122
- node: context.node,
123
- authSecretStorage: context.authSecretStorage,
124
- done: () => {
125
- // TODO: Sync all the covalues before closing the connection & context
126
- toggleNetwork(false);
127
- unsubscribeAuthUpdate();
128
- context.done();
129
- },
130
- logOut: () => {
131
- unsubscribeAuthUpdate();
132
- return context.logOut();
133
- },
134
- };
135
- }
136
- export async function provideLockSession(accountID, crypto) {
137
- const sessionDone = () => { };
138
- const kvStore = KvStoreContext.getInstance().getStorage();
139
- const sessionID = (await kvStore.get(accountID)) ||
140
- crypto.newRandomSessionID(accountID);
141
- await kvStore.set(accountID, sessionID);
142
- return Promise.resolve({
143
- sessionID,
144
- sessionDone,
145
- });
146
- }
147
- /** @category Invite Links */
148
- export function createInviteLink(value, role, { baseURL, valueHint } = {}) {
149
- return baseCreateInviteLink(value, role, baseURL ?? "", valueHint);
150
- }
151
- export function setupKvStore(kvStore = new ExpoSecureStoreAdapter()) {
152
- KvStoreContext.getInstance().initialize(kvStore);
153
- return kvStore;
154
- }
155
- //# sourceMappingURL=platform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { KvStore } from "./kv-store-context.js";
2
- export declare class ExpoSecureStoreAdapter implements KvStore {
3
- get(key: string): Promise<string | null>;
4
- set(key: string, value: string): Promise<void>;
5
- delete(key: string): Promise<void>;
6
- clearAll(): Promise<void>;
7
- }
8
- //# sourceMappingURL=expo-secure-store-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expo-secure-store-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/expo-secure-store-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,sBAAuB,YAAW,OAAO;IACpD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
@@ -1,25 +0,0 @@
1
- import * as SecureStore from "expo-secure-store";
2
- export class ExpoSecureStoreAdapter {
3
- get(key) {
4
- return SecureStore.getItemAsync(key, {
5
- requireAuthentication: false,
6
- keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
7
- });
8
- }
9
- async set(key, value) {
10
- return SecureStore.setItemAsync(key, value, {
11
- requireAuthentication: false,
12
- keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
13
- });
14
- }
15
- async delete(key) {
16
- return SecureStore.deleteItemAsync(key, {
17
- requireAuthentication: false,
18
- keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
19
- });
20
- }
21
- async clearAll() {
22
- throw new Error("Not implemented");
23
- }
24
- }
25
- //# sourceMappingURL=expo-secure-store-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expo-secure-store-adapter.js","sourceRoot":"","sources":["../../src/storage/expo-secure-store-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAGjD,MAAM,OAAO,sBAAsB;IACjC,GAAG,CAAC,GAAW;QACb,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE;YACnC,qBAAqB,EAAE,KAAK;YAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;YAC1C,qBAAqB,EAAE,KAAK;YAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,WAAW,CAAC,eAAe,CAAC,GAAG,EAAE;YACtC,qBAAqB,EAAE,KAAK;YAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1,17 +0,0 @@
1
- export interface KvStore {
2
- get(key: string): Promise<string | null>;
3
- set(key: string, value: string): Promise<void>;
4
- delete(key: string): Promise<void>;
5
- clearAll(): Promise<void>;
6
- }
7
- export declare class KvStoreContext {
8
- private static instance;
9
- private storageInstance;
10
- private constructor();
11
- static getInstance(): KvStoreContext;
12
- isInitialized(): boolean;
13
- initialize(store: KvStore): void;
14
- getStorage(): KvStore;
15
- }
16
- export default KvStoreContext;
17
- //# sourceMappingURL=kv-store-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kv-store-context.d.ts","sourceRoot":"","sources":["../../src/storage/kv-store-context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAwB;IAE/C,OAAO;WAEO,WAAW,IAAI,cAAc;IAOpC,aAAa,IAAI,OAAO;IAIxB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAMhC,UAAU,IAAI,OAAO;CAM7B;AAED,eAAe,cAAc,CAAC"}
@@ -1,27 +0,0 @@
1
- export class KvStoreContext {
2
- static instance;
3
- storageInstance = null;
4
- constructor() { }
5
- static getInstance() {
6
- if (!KvStoreContext.instance) {
7
- KvStoreContext.instance = new KvStoreContext();
8
- }
9
- return KvStoreContext.instance;
10
- }
11
- isInitialized() {
12
- return this.storageInstance !== null;
13
- }
14
- initialize(store) {
15
- if (!this.storageInstance) {
16
- this.storageInstance = store;
17
- }
18
- }
19
- getStorage() {
20
- if (!this.storageInstance) {
21
- throw new Error("Storage instance is not initialized.");
22
- }
23
- return this.storageInstance;
24
- }
25
- }
26
- export default KvStoreContext;
27
- //# sourceMappingURL=kv-store-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kv-store-context.js","sourceRoot":"","sources":["../../src/storage/kv-store-context.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,QAAQ,CAAiB;IAChC,eAAe,GAAmB,IAAI,CAAC;IAE/C,gBAAuB,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7B,cAAc,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,KAAc;QAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,eAAe,cAAc,CAAC"}
@@ -1,70 +0,0 @@
1
- import {
2
- Account,
3
- AccountClass,
4
- JazzContextManager,
5
- KvStore,
6
- SyncConfig,
7
- } from "jazz-tools";
8
- import { JazzContextManagerAuthProps } from "jazz-tools";
9
- import {
10
- BaseReactNativeContextOptions,
11
- createJazzReactNativeContext,
12
- createJazzReactNativeGuestContext,
13
- } from "./platform.js";
14
- import { KvStoreContext } from "./storage/kv-store-context.js";
15
-
16
- export type JazzContextManagerProps<Acc extends Account> = {
17
- guestMode?: boolean;
18
- sync: SyncConfig;
19
- onLogOut?: () => void;
20
- storage?: BaseReactNativeContextOptions["storage"];
21
- AccountSchema?: AccountClass<Acc>;
22
- defaultProfileName?: string;
23
- onAnonymousAccountDiscarded?: (anonymousAccount: Acc) => Promise<void>;
24
- CryptoProvider?: BaseReactNativeContextOptions["CryptoProvider"];
25
- };
26
-
27
- export class ReactNativeContextManager<
28
- Acc extends Account,
29
- > extends JazzContextManager<Acc, JazzContextManagerProps<Acc>> {
30
- async getNewContext(
31
- props: JazzContextManagerProps<Acc>,
32
- authProps?: JazzContextManagerAuthProps,
33
- ) {
34
- if (props.guestMode) {
35
- return createJazzReactNativeGuestContext({
36
- sync: props.sync,
37
- storage: props.storage,
38
- authSecretStorage: this.authSecretStorage,
39
- CryptoProvider: props.CryptoProvider,
40
- });
41
- } else {
42
- return createJazzReactNativeContext<Acc>({
43
- sync: props.sync,
44
- storage: props.storage,
45
- AccountSchema: props.AccountSchema,
46
- credentials: authProps?.credentials,
47
- newAccountProps: authProps?.newAccountProps,
48
- defaultProfileName: props.defaultProfileName,
49
- authSecretStorage: this.authSecretStorage,
50
- CryptoProvider: props.CryptoProvider,
51
- });
52
- }
53
- }
54
-
55
- getKvStore(): KvStore {
56
- return KvStoreContext.getInstance().getStorage();
57
- }
58
-
59
- propsChanged(props: JazzContextManagerProps<Acc>) {
60
- if (!this.props) {
61
- return true;
62
- }
63
-
64
- return (
65
- this.props.sync.when !== props.sync.when ||
66
- this.props.sync.peer !== props.sync.peer ||
67
- this.props.guestMode !== props.guestMode
68
- );
69
- }
70
- }