jazz-react-native 0.8.51 → 0.9.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.
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAEL,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAevB,gCAAgC;AAChC,MAAM,UAAU,YAAY,CAA0C,EACpE,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,aAAa,GAAG,OAAuC,EACvD,cAAc,GACS;IACvB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAoC,CAAC;IAEnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,iFAAiF;QACjF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAE9B,2EAA2E;YAC3E,0EAA0E;YAC1E,EAAE;YACF,qDAAqD;YACrD,MAAM,eAAe,GAAG,GAAG,CAAC;YAE5B,IAAI,eAAe,EAAE,CAAC;gBACpB,eAAe,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,UAAU,aAAa;YAC1B,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAC9C,IAAI,KAAK,OAAO;gBACd,CAAC,CAAC;oBACE,IAAI;oBACJ,cAAc;iBACf;gBACH,CAAC,CAAC;oBACE,aAAa;oBACb,IAAI,EAAE,IAAI;oBACV,IAAI;oBACJ,cAAc;iBACf,CACN,CAAC;YAEF,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,cAAc,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClB,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBAElC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;oBAC3C,yDAAyD;oBACzD,uCAAuC;oBACvC,cAAc,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,CAAC;gBACL,GAAG,cAAc;gBACjB,aAAa;gBACb,MAAM;aACP,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,2EAA2E;QAC3E,0EAA0E;QAC1E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,OAAO,GAAG,EAAE;YACV,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,OAAO,CACL,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAC3E,CAAC;AACJ,CAAC"}
@@ -9,6 +9,7 @@ export declare class KvStoreContext {
9
9
  private storageInstance;
10
10
  private constructor();
11
11
  static getInstance(): KvStoreContext;
12
+ isInitialized(): boolean;
12
13
  initialize(store: KvStore): void;
13
14
  getStorage(): KvStore;
14
15
  }
@@ -8,6 +8,9 @@ export class KvStoreContext {
8
8
  }
9
9
  return KvStoreContext.instance;
10
10
  }
11
+ isInitialized() {
12
+ return this.storageInstance !== null;
13
+ }
11
14
  initialize(store) {
12
15
  if (!this.storageInstance) {
13
16
  this.storageInstance = store;
@@ -1 +1 @@
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,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
+ {"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"}
@@ -0,0 +1 @@
1
+ export * from "jazz-react-core/testing";
@@ -0,0 +1,2 @@
1
+ export * from "jazz-react-core/testing";
2
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.tsx"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -1,15 +1,25 @@
1
1
  import { beforeEach, describe, expect, it, vi } from "vitest";
2
- import { RNDemoAuth } from "../auth/DemoAuthMethod";
2
+ import { RNDemoAuth, encodeUsername } from "../auth/DemoAuthMethod";
3
3
  import { KvStoreContext } from "../storage/kv-store-context";
4
4
  // Initialize mock storage
5
5
  const mockStorage = {};
6
+ function validateKey(key) {
7
+ if (key.includes("+") || key.includes("/") || key.includes("=")) {
8
+ throw new Error("Invalid key");
9
+ }
10
+ }
6
11
  // Mock KvStore implementation
7
12
  const mockKvStore = {
8
- get: vi.fn(async (key) => mockStorage[key] || null),
13
+ get: vi.fn(async (key) => {
14
+ validateKey(key);
15
+ return mockStorage[key] || null;
16
+ }),
9
17
  set: vi.fn(async (key, value) => {
18
+ validateKey(key);
10
19
  mockStorage[key] = value;
11
20
  }),
12
21
  delete: vi.fn(async (key) => {
22
+ validateKey(key);
13
23
  delete mockStorage[key];
14
24
  }),
15
25
  clearAll: vi.fn(async () => {
@@ -45,7 +55,7 @@ describe("RNDemoAuth", () => {
45
55
  };
46
56
  await RNDemoAuth.init(mockDriver, seedAccounts);
47
57
  expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users", "testUser");
48
- expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + btoa("testUser"), expect.any(String));
58
+ expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + encodeUsername("testUser"), expect.any(String));
49
59
  });
50
60
  });
51
61
  describe("authentication", () => {
@@ -60,6 +70,17 @@ describe("RNDemoAuth", () => {
60
70
  expect(result.type).toBe("new");
61
71
  expect(result.saveCredentials).toBeDefined();
62
72
  });
73
+ it("should convert unsupported chars from base64 to a valid key", async () => {
74
+ const { mockDriver } = setup();
75
+ mockDriver.onReady = vi.fn(({ signUp }) => {
76
+ signUp(atob("+/=="));
77
+ });
78
+ const auth = await RNDemoAuth.init(mockDriver);
79
+ const result = await auth.start();
80
+ expect(mockDriver.onReady).toHaveBeenCalled();
81
+ expect(result.type).toBe("new");
82
+ expect(result.saveCredentials).toBeDefined();
83
+ });
63
84
  it("should handle existing user login", async () => {
64
85
  const { mockStorage, mockDriver } = setup();
65
86
  // Set up existing user in storage
@@ -105,7 +126,7 @@ describe("RNDemoAuth", () => {
105
126
  accountID: "test-account-id",
106
127
  secret: "test-secret",
107
128
  });
108
- expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + btoa("testUser"), expect.any(String));
129
+ expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + encodeUsername("testUser"), expect.any(String));
109
130
  expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users", "testUser");
110
131
  expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-logged-in-secret", expect.any(String));
111
132
  });
@@ -115,7 +136,7 @@ describe("RNDemoAuth", () => {
115
136
  accountID: "test-account-id",
116
137
  accountSecret: "test-secret",
117
138
  };
118
- mockStorage["demo-auth-existing-users-" + btoa("testUser")] =
139
+ mockStorage["demo-auth-existing-users-" + encodeUsername("testUser")] =
119
140
  JSON.stringify(credentials);
120
141
  mockDriver.onReady = vi.fn(({ logInAs }) => {
121
142
  return logInAs("testUser");
@@ -146,7 +167,7 @@ describe("RNDemoAuth", () => {
146
167
  accountID: "test-account-id",
147
168
  secret: "test-secret",
148
169
  });
149
- expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + btoa("testUser-2"), expect.any(String));
170
+ expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + encodeUsername("testUser-2"), expect.any(String));
150
171
  expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users", "testUser,testUser-2");
151
172
  });
152
173
  it("should retrieve existing users", async () => {
@@ -177,7 +198,7 @@ describe("RNDemoAuth", () => {
177
198
  mockStorage["demo-auth-existing-users"] = "testUser";
178
199
  mockStorage["demo-auth-existing-users-testUser"] = value;
179
200
  await RNDemoAuth.init(mockDriver);
180
- expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + btoa("testUser"), value);
201
+ expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-existing-users-" + encodeUsername("testUser"), value);
181
202
  expect(mockKvStore.set).toHaveBeenCalledWith("demo-auth-storage-version", "2");
182
203
  expect(mockKvStore.delete).toHaveBeenCalledWith("demo-auth-existing-users-testUser");
183
204
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DemoAuthMethod.test.js","sourceRoot":"","sources":["../../src/tests/DemoAuthMethod.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DemoAuthMethod.test.js","sourceRoot":"","sources":["../../src/tests/DemoAuthMethod.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jazz-react-native",
3
- "version": "0.8.51",
3
+ "version": "0.9.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -16,16 +16,21 @@
16
16
  "react-native": "./dist/crypto/index.js",
17
17
  "types": "./dist/crypto/index.d.ts",
18
18
  "default": "./dist/crypto/index.js"
19
+ },
20
+ "./testing": {
21
+ "react-native": "./dist/testing.js",
22
+ "types": "./dist/testing.d.ts",
23
+ "default": "./dist/testing.js"
19
24
  }
20
25
  },
21
26
  "license": "MIT",
22
27
  "dependencies": {
23
28
  "@scure/base": "1.2.1",
24
- "@scure/bip39": "^1.3.0",
25
29
  "react-native-quick-crypto": "1.0.0-beta.9",
26
- "cojson": "0.8.50",
27
- "cojson-transport-ws": "0.8.50",
28
- "jazz-tools": "0.8.51"
30
+ "jazz-react-core": "0.8.46",
31
+ "cojson": "0.9.0",
32
+ "cojson-transport-ws": "0.9.0",
33
+ "jazz-tools": "0.9.0"
29
34
  },
30
35
  "peerDependencies": {
31
36
  "@react-native-community/netinfo": "*",
@@ -23,8 +23,15 @@ export namespace RNDemoAuth {
23
23
 
24
24
  const localStorageKey = "demo-auth-logged-in-secret";
25
25
 
26
+ export function encodeUsername(username: string) {
27
+ return btoa(username)
28
+ .replace(/=/g, "-")
29
+ .replace(/\+/g, "_")
30
+ .replace(/\//g, ".");
31
+ }
32
+
26
33
  function getUserStorageKey(username: string) {
27
- return `demo-auth-existing-users-${btoa(username)}`;
34
+ return `demo-auth-existing-users-${encodeUsername(username)}`;
28
35
  }
29
36
 
30
37
  function getLegacyUserStorageKey(username: string) {
@@ -102,7 +109,21 @@ export class RNDemoAuth implements AuthMethod {
102
109
  },
103
110
  store?: KvStore | undefined,
104
111
  ) {
105
- const kvStore = store ? store : KvStoreContext.getInstance().getStorage();
112
+ let kvStore = store;
113
+
114
+ if (!kvStore) {
115
+ const kvStoreContext = KvStoreContext.getInstance();
116
+
117
+ if (!kvStoreContext.isInitialized()) {
118
+ const { ExpoSecureStoreAdapter } = await import(
119
+ "../storage/expo-secure-store-adapter.js"
120
+ );
121
+
122
+ kvStoreContext.initialize(new ExpoSecureStoreAdapter());
123
+ }
124
+
125
+ kvStore = kvStoreContext.getStorage();
126
+ }
106
127
 
107
128
  await migrateExistingUsersKeys(kvStore);
108
129
 
@@ -133,6 +154,7 @@ export class RNDemoAuth implements AuthMethod {
133
154
  this.driver.onSignedIn({ logOut });
134
155
  },
135
156
  onError: (error: string | Error) => {
157
+ this.kvStore.delete(localStorageKey);
136
158
  this.driver.onError(error);
137
159
  },
138
160
  logOut: async () => {
@@ -181,8 +203,6 @@ export class RNDemoAuth implements AuthMethod {
181
203
  this.driver.onSignedIn({ logOut });
182
204
  },
183
205
  onError: (error: string | Error) => {
184
- // @ts-expect-error asd
185
- console.error("onError", error.cause);
186
206
  this.driver.onError(error);
187
207
  },
188
208
  logOut: async () => {
@@ -54,13 +54,13 @@ export function useDemoAuth({
54
54
  {
55
55
  onReady: async ({ signUp, getExistingUsers, logInAs }) => {
56
56
  const existingUsers = await getExistingUsers();
57
- setState({
57
+ setState((current) => ({
58
58
  state: "ready",
59
59
  signUp,
60
60
  existingUsers,
61
61
  logInAs,
62
- errors: [],
63
- });
62
+ errors: current.errors,
63
+ }));
64
64
  },
65
65
  onSignedIn: ({ logOut }) => {
66
66
  setState({ state: "signedIn", logOut, errors: [] });
@@ -68,14 +68,14 @@ export function useDemoAuth({
68
68
  onError: (error) => {
69
69
  setState((current) => ({
70
70
  ...current,
71
- errors: [...current.errors, error.toString()],
71
+ errors: [error.toString()],
72
72
  }));
73
73
  },
74
74
  },
75
75
  seedAccounts,
76
76
  store,
77
77
  );
78
- }, [seedAccounts]);
78
+ }, [seedAccounts, state.errors]); // We reset the auth method when getting an error
79
79
 
80
80
  useEffect(() => {
81
81
  async function init() {
@@ -126,7 +126,14 @@ export const DemoAuthBasicUI = ({
126
126
  ]}
127
127
  >
128
128
  {state.state === "loading" ? (
129
- <Text style={styles.loadingText}>Loading...</Text>
129
+ <>
130
+ <Text style={styles.loadingText}>Loading...</Text>
131
+ {state.errors.map((error, index) => (
132
+ <Text key={index} style={styles.errorText}>
133
+ {error}
134
+ </Text>
135
+ ))}
136
+ </>
130
137
  ) : state.state === "ready" ? (
131
138
  <View style={styles.formContainer}>
132
139
  <Text
package/src/hooks.tsx ADDED
@@ -0,0 +1,60 @@
1
+ import { useEffect } from "react";
2
+
3
+ import { createUseAccountHooks, useJazzContext } from "jazz-react-core";
4
+ import { CoValue, CoValueClass, ID } from "jazz-tools";
5
+ import { Linking } from "react-native";
6
+ import { parseInviteLink } from "./platform.js";
7
+ import { RegisteredAccount } from "./provider.js";
8
+
9
+ export { useCoState, experimental_useInboxSender } from "jazz-react-core";
10
+
11
+ export const { useAccount, useAccountOrGuest } =
12
+ createUseAccountHooks<RegisteredAccount>();
13
+
14
+ export function useAcceptInvite<V extends CoValue>({
15
+ invitedObjectSchema,
16
+ onAccept,
17
+ forValueHint,
18
+ }: {
19
+ invitedObjectSchema: CoValueClass<V>;
20
+ onAccept: (projectID: ID<V>) => void;
21
+ forValueHint?: string;
22
+ }): void {
23
+ const context = useJazzContext();
24
+
25
+ if (!("me" in context)) {
26
+ throw new Error(
27
+ "useAcceptInvite can't be used in a JazzProvider with auth === 'guest'.",
28
+ );
29
+ }
30
+
31
+ useEffect(() => {
32
+ const handleDeepLink = ({ url }: { url: string }) => {
33
+ const result = parseInviteLink<V>(url);
34
+ if (result && result.valueHint === forValueHint) {
35
+ context.me
36
+ .acceptInvite(
37
+ result.valueID,
38
+ result.inviteSecret,
39
+ invitedObjectSchema,
40
+ )
41
+ .then(() => {
42
+ onAccept(result.valueID);
43
+ })
44
+ .catch((e) => {
45
+ console.error("Failed to accept invite", e);
46
+ });
47
+ }
48
+ };
49
+
50
+ const linkingListener = Linking.addEventListener("url", handleDeepLink);
51
+
52
+ void Linking.getInitialURL().then((url) => {
53
+ if (url) handleDeepLink({ url });
54
+ });
55
+
56
+ return () => {
57
+ linkingListener.remove();
58
+ };
59
+ }, [context, onAccept, invitedObjectSchema, forValueHint]);
60
+ }
package/src/index.ts CHANGED
@@ -1,243 +1,6 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
- import {
4
- Account,
5
- AgentID,
6
- AnonymousJazzAgent,
7
- AuthMethod,
8
- CoValue,
9
- CoValueClass,
10
- CryptoProvider,
11
- ID,
12
- InviteSecret,
13
- SessionID,
14
- cojsonInternals,
15
- createJazzContext,
16
- } from "jazz-tools";
17
-
18
- import { RawAccountID } from "cojson";
19
-
20
- export { RNDemoAuth } from "./auth/DemoAuthMethod.js";
21
-
22
- import { PureJSCrypto } from "cojson/native";
23
- import { createWebSocketPeerWithReconnection } from "./createWebSocketPeerWithReconnection.js";
24
- import type { RNQuickCrypto } from "./crypto/RNQuickCrypto.js";
25
- import { KvStoreContext } from "./storage/kv-store-context.js";
26
-
27
- /** @category Context Creation */
28
- export type ReactNativeContext<Acc extends Account> = {
29
- me: Acc;
30
- logOut: () => void;
31
- // TODO: Symbol.dispose?
32
- done: () => void;
33
- };
34
-
35
- export type ReactNativeGuestContext = {
36
- guest: AnonymousJazzAgent;
37
- logOut: () => void;
38
- done: () => void;
39
- };
40
-
41
- export type ReactNativeContextOptions<Acc extends Account> = {
42
- auth: AuthMethod;
43
- AccountSchema: CoValueClass<Acc> & {
44
- fromNode: (typeof Account)["fromNode"];
45
- };
46
- } & BaseReactNativeContextOptions;
47
-
48
- export type BaseReactNativeContextOptions = {
49
- peer: `wss://${string}` | `ws://${string}`;
50
- reconnectionTimeout?: number;
51
- storage?: "indexedDB" | "singleTabOPFS";
52
- CryptoProvider?: typeof PureJSCrypto | typeof RNQuickCrypto;
53
- };
54
-
55
- /** @category Context Creation */
56
- export async function createJazzRNContext<Acc extends Account>(
57
- options: ReactNativeContextOptions<Acc>,
58
- ): Promise<ReactNativeContext<Acc>>;
59
- export async function createJazzRNContext(
60
- options: BaseReactNativeContextOptions,
61
- ): Promise<ReactNativeGuestContext>;
62
- export async function createJazzRNContext<Acc extends Account>(
63
- options: ReactNativeContextOptions<Acc> | BaseReactNativeContextOptions,
64
- ): Promise<ReactNativeContext<Acc> | ReactNativeGuestContext>;
65
- export async function createJazzRNContext<Acc extends Account>(
66
- options: ReactNativeContextOptions<Acc> | BaseReactNativeContextOptions,
67
- ): Promise<ReactNativeContext<Acc> | ReactNativeGuestContext> {
68
- const websocketPeer = createWebSocketPeerWithReconnection(
69
- options.peer,
70
- options.reconnectionTimeout,
71
- (peer) => {
72
- node.syncManager.addPeer(peer);
73
- },
74
- );
75
-
76
- const CryptoProvider = options.CryptoProvider || PureJSCrypto;
77
-
78
- const context =
79
- "auth" in options
80
- ? await createJazzContext({
81
- AccountSchema: options.AccountSchema,
82
- auth: options.auth,
83
- crypto: await CryptoProvider.create(),
84
- peersToLoadFrom: [websocketPeer.peer],
85
- sessionProvider: provideLockSession,
86
- })
87
- : await createJazzContext({
88
- crypto: await CryptoProvider.create(),
89
- peersToLoadFrom: [websocketPeer.peer],
90
- });
91
-
92
- const node =
93
- "account" in context ? context.account._raw.core.node : context.agent.node;
94
-
95
- return "account" in context
96
- ? {
97
- me: context.account,
98
- done: () => {
99
- websocketPeer.done();
100
- context.done();
101
- },
102
- logOut: () => {
103
- context.logOut();
104
- },
105
- }
106
- : {
107
- guest: context.agent,
108
- done: () => {
109
- websocketPeer.done();
110
- context.done();
111
- },
112
- logOut: () => {
113
- context.logOut();
114
- },
115
- };
116
- }
117
-
118
- /** @category Auth Providers */
119
- export type SessionProvider = (
120
- accountID: ID<Account> | AgentID,
121
- ) => Promise<SessionID>;
122
-
123
- export async function provideLockSession(
124
- accountID: ID<Account> | AgentID,
125
- crypto: CryptoProvider,
126
- ) {
127
- const sessionDone = () => {};
128
-
129
- const kvStore = KvStoreContext.getInstance().getStorage();
130
-
131
- const sessionID =
132
- ((await kvStore.get(accountID)) as SessionID) ||
133
- crypto.newRandomSessionID(accountID as RawAccountID | AgentID);
134
- await kvStore.set(accountID, sessionID);
135
-
136
- return Promise.resolve({
137
- sessionID,
138
- sessionDone,
139
- });
140
- }
141
-
142
- /** @category Invite Links */
143
- export function createInviteLink<C extends CoValue>(
144
- value: C,
145
- role: "reader" | "writer" | "admin",
146
- { baseURL, valueHint }: { baseURL?: string; valueHint?: string } = {},
147
- ): string {
148
- const coValueCore = value._raw.core;
149
- let currentCoValue = coValueCore;
150
-
151
- while (currentCoValue.header.ruleset.type === "ownedByGroup") {
152
- currentCoValue = currentCoValue.getGroup().core;
153
- }
154
-
155
- if (currentCoValue.header.ruleset.type !== "group") {
156
- throw new Error("Can't create invite link for object without group");
157
- }
158
-
159
- const group = cojsonInternals.expectGroup(currentCoValue.getCurrentContent());
160
- const inviteSecret = group.createInvite(role);
161
-
162
- return `${baseURL}/invite/${valueHint ? valueHint + "/" : ""}${
163
- value.id
164
- }/${inviteSecret}`;
165
- }
166
-
167
- /** @category Invite Links */
168
- // TODO: copied from jazz-browser, should be shared
169
- export function parseInviteLink<C extends CoValue>(
170
- inviteURL: string,
171
- ):
172
- | {
173
- valueID: ID<C>;
174
- valueHint?: string;
175
- inviteSecret: InviteSecret;
176
- }
177
- | undefined {
178
- const url = new URL(inviteURL);
179
- const parts = url.hash.split("/");
180
-
181
- let valueHint: string | undefined;
182
- let valueID: ID<C> | undefined;
183
- let inviteSecret: InviteSecret | undefined;
184
-
185
- if (parts[0] === "#" && parts[1] === "invite") {
186
- if (parts.length === 5) {
187
- valueHint = parts[2];
188
- valueID = parts[3] as ID<C>;
189
- inviteSecret = parts[4] as InviteSecret;
190
- } else if (parts.length === 4) {
191
- valueID = parts[2] as ID<C>;
192
- inviteSecret = parts[3] as InviteSecret;
193
- }
194
-
195
- if (!valueID || !inviteSecret) {
196
- return undefined;
197
- }
198
- return { valueID, inviteSecret, valueHint };
199
- }
200
- }
201
-
202
- // getting out of the `expo` business 🤞
203
- // export function parseInviteLink<C extends CoValue>(
204
- // inviteURL: string,
205
- // ):
206
- // | {
207
- // valueID: ID<C>;
208
- // valueHint?: string;
209
- // inviteSecret: InviteSecret;
210
- // }
211
- // | undefined {
212
- // const url = Linking.parse(inviteURL);
213
- // const parts = url.path?.split("/");
214
-
215
- // if (!parts || parts[0] !== "invite") {
216
- // return undefined;
217
- // }
218
-
219
- // let valueHint: string | undefined;
220
- // let valueID: ID<C> | undefined;
221
- // let inviteSecret: InviteSecret | undefined;
222
-
223
- // if (parts.length === 4) {
224
- // valueHint = parts[1];
225
- // valueID = parts[2] as ID<C>;
226
- // inviteSecret = parts[3] as InviteSecret;
227
- // } else if (parts.length === 3) {
228
- // valueID = parts[1] as ID<C>;
229
- // inviteSecret = parts[2] as InviteSecret;
230
- // }
231
-
232
- // if (!valueID || !inviteSecret) {
233
- // return undefined;
234
- // }
235
-
236
- // return { valueID, inviteSecret, valueHint };
237
- // }
238
-
239
- /////////
240
-
241
1
  export * from "./provider.js";
242
2
  export * from "./auth/auth.js";
243
3
  export * from "./storage/kv-store-context.js";
4
+ export * from "./hooks.js";
5
+
6
+ export { parseInviteLink, createInviteLink, setupKvStore } from "./platform.js";