@evolu/react-native 12.0.1-preview.3 → 12.0.1-preview.5

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,4 +1,3 @@
1
- import { CreateAppState, EvoluDeps } from "@evolu/common/evolu";
2
- export declare const createAppState: CreateAppState;
1
+ import { EvoluDeps } from "@evolu/common/evolu";
3
2
  export declare const evoluReactNativeDeps: EvoluDeps;
4
3
  //# sourceMappingURL=expo-sqlite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expo-sqlite.d.ts","sourceRoot":"","sources":["../src/expo-sqlite.ts"],"names":[],"mappings":"AASA,OAAO,EACL,cAAc,EAId,SAAS,EACV,MAAM,qBAAqB,CAAC;AAS7B,eAAO,MAAM,cAAc,EAAE,cAI3B,CAAC;AAkBH,eAAO,MAAM,oBAAoB,EAAE,SAMlC,CAAC"}
1
+ {"version":3,"file":"expo-sqlite.d.ts","sourceRoot":"","sources":["../src/expo-sqlite.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,SAAS,EAEV,MAAM,qBAAqB,CAAC;AA+B7B,eAAO,MAAM,oBAAoB,EAAE,SAOlC,CAAC"}
@@ -1,31 +1,33 @@
1
- import { createConsole, createEnglishMnemonic, createNanoIdLib, createRandom, createRandomBytes, createTime, } from "@evolu/common";
2
- import { createDbWorkerForPlatform, createWebSocketSync, } from "@evolu/common/evolu";
1
+ import { createConsole, createLocalAuth, createRandom, createRandomBytes, createTime, createWebSocket, } from "@evolu/common";
2
+ import { createDbWorkerForPlatform, } from "@evolu/common/evolu";
3
3
  import * as Expo from "expo";
4
+ import { SensitiveInfo } from "react-native-sensitive-info";
4
5
  import { createExpoSqliteDriver } from "./providers/ExpoSqliteDriver.js";
5
6
  import { polyfillHermes } from "./utils/Hermes.js";
6
7
  polyfillHermes();
7
- export const createAppState = () => ({
8
- reset: () => {
9
- void Expo.reloadAppAsync();
10
- },
11
- });
12
- const nanoIdLib = createNanoIdLib();
13
8
  const console = createConsole();
14
9
  const time = createTime();
10
+ const randomBytes = createRandomBytes();
11
+ const localAuth = createLocalAuth({
12
+ randomBytes: randomBytes,
13
+ secureStorage: SensitiveInfo,
14
+ });
15
15
  const createDbWorker = () => createDbWorkerForPlatform({
16
- createSqliteDriver: createExpoSqliteDriver,
17
- createSync: createWebSocketSync,
18
16
  console,
19
- time,
17
+ createSqliteDriver: createExpoSqliteDriver,
18
+ createWebSocket,
20
19
  random: createRandom(),
21
- nanoIdLib,
22
- createMnemonic: createEnglishMnemonic,
23
- createRandomBytes,
20
+ randomBytes,
21
+ time,
24
22
  });
23
+ const reloadApp = () => {
24
+ void Expo.reloadAppAsync();
25
+ };
25
26
  export const evoluReactNativeDeps = {
26
- time,
27
- nanoIdLib,
28
27
  console,
29
- createAppState,
30
28
  createDbWorker,
29
+ randomBytes,
30
+ localAuth,
31
+ reloadApp,
32
+ time,
31
33
  };
@@ -1,4 +1,3 @@
1
- import { CreateAppState, EvoluDeps } from "@evolu/common/evolu";
2
- export declare const createAppState: CreateAppState;
1
+ import { EvoluDeps } from "@evolu/common/evolu";
3
2
  export declare const evoluReactNativeDeps: EvoluDeps;
4
3
  //# sourceMappingURL=op-sqlite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"op-sqlite.d.ts","sourceRoot":"","sources":["../src/op-sqlite.ts"],"names":[],"mappings":"AASA,OAAO,EACL,cAAc,EAId,SAAS,EACV,MAAM,qBAAqB,CAAC;AAQ7B,eAAO,MAAM,cAAc,EAAE,cAQ3B,CAAC;AAkBH,eAAO,MAAM,oBAAoB,EAAE,SAMlC,CAAC"}
1
+ {"version":3,"file":"op-sqlite.d.ts","sourceRoot":"","sources":["../src/op-sqlite.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,SAAS,EAEV,MAAM,qBAAqB,CAAC;AAmC7B,eAAO,MAAM,oBAAoB,EAAE,SAOlC,CAAC"}
package/dist/op-sqlite.js CHANGED
@@ -1,36 +1,38 @@
1
- import { createConsole, createEnglishMnemonic, createNanoIdLib, createRandom, createRandomBytes, createTime, } from "@evolu/common";
2
- import { createDbWorkerForPlatform, createWebSocketSync, } from "@evolu/common/evolu";
1
+ import { createConsole, createLocalAuth, createRandom, createRandomBytes, createTime, createWebSocket, } from "@evolu/common";
2
+ import { createDbWorkerForPlatform, } from "@evolu/common/evolu";
3
3
  import { DevSettings } from "react-native";
4
+ import { SensitiveInfo } from "react-native-sensitive-info";
4
5
  import { createOpSqliteDriver } from "./providers/OpSqliteDriver.js";
5
6
  import { polyfillHermes } from "./utils/Hermes.js";
6
7
  polyfillHermes();
7
- export const createAppState = () => ({
8
- reset: () => {
9
- if (process.env.NODE_ENV === "development") {
10
- DevSettings.reload();
11
- }
12
- else {
13
- // TODO: reload not implemented for bare rn
14
- }
15
- },
16
- });
17
- const nanoIdLib = createNanoIdLib();
18
8
  const console = createConsole();
19
9
  const time = createTime();
10
+ const randomBytes = createRandomBytes();
11
+ const localAuth = createLocalAuth({
12
+ randomBytes: randomBytes,
13
+ secureStorage: SensitiveInfo,
14
+ });
20
15
  const createDbWorker = () => createDbWorkerForPlatform({
21
- createSqliteDriver: createOpSqliteDriver,
22
- createSync: createWebSocketSync,
23
16
  console,
24
- time,
17
+ createSqliteDriver: createOpSqliteDriver,
18
+ createWebSocket,
25
19
  random: createRandom(),
26
- nanoIdLib,
27
- createMnemonic: createEnglishMnemonic,
28
- createRandomBytes,
20
+ randomBytes,
21
+ time,
29
22
  });
23
+ const reloadApp = () => {
24
+ if (process.env.NODE_ENV === "development") {
25
+ DevSettings.reload();
26
+ }
27
+ else {
28
+ // TODO: reload not implemented for bare rn
29
+ }
30
+ };
30
31
  export const evoluReactNativeDeps = {
31
- time,
32
- nanoIdLib,
33
32
  console,
34
- createAppState,
35
33
  createDbWorker,
34
+ randomBytes,
35
+ localAuth,
36
+ reloadApp,
37
+ time,
36
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoSqliteDriver.d.ts","sourceRoot":"","sources":["../../src/providers/ExpoSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGnB,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,sBAAsB,EAAE,kBAiDpC,CAAC"}
1
+ {"version":3,"file":"ExpoSqliteDriver.d.ts","sourceRoot":"","sources":["../../src/providers/ExpoSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAInB,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,sBAAsB,EAAE,kBAwDpC,CAAC"}
@@ -1,7 +1,14 @@
1
- import { createPreparedStatementsCache, } from "@evolu/common";
1
+ import { createPreparedStatementsCache, bytesToHex, } from "@evolu/common";
2
2
  import { openDatabaseSync } from "expo-sqlite";
3
3
  export const createExpoSqliteDriver = (name, options) => {
4
4
  const db = openDatabaseSync(options?.memory ? ":memory:" : `evolu1-${name}.db`);
5
+ if (options?.encryptionKey) {
6
+ db.execSync(`
7
+ PRAGMA cipher = 'sqlcipher';
8
+ PRAGMA legacy = 4;
9
+ PRAGMA key = "x'${bytesToHex(options.encryptionKey)}'";
10
+ `);
11
+ }
5
12
  let isDisposed = false;
6
13
  const cache = createPreparedStatementsCache((sql) => db.prepareSync(sql), (statement) => {
7
14
  statement.finalizeSync();
@@ -1 +1 @@
1
- {"version":3,"file":"OpSqliteDriver.d.ts","sourceRoot":"","sources":["../../src/providers/OpSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAGnB,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,oBAAoB,EAAE,kBAyDlC,CAAC"}
1
+ {"version":3,"file":"OpSqliteDriver.d.ts","sourceRoot":"","sources":["../../src/providers/OpSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAInB,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,oBAAoB,EAAE,kBA8DlC,CAAC"}
@@ -1,10 +1,15 @@
1
- import { constVoid, createPreparedStatementsCache, isSqlMutation, } from "@evolu/common";
1
+ import { constVoid, createPreparedStatementsCache, isSqlMutation, bytesToHex, } from "@evolu/common";
2
2
  import { open } from "@op-engineering/op-sqlite";
3
3
  export const createOpSqliteDriver = (name, options) => {
4
4
  // https://op-engineering.github.io/op-sqlite/docs/configuration#in-memory
5
5
  const db = open(options?.memory
6
6
  ? { name: `inMemoryDb`, location: ":memory:" }
7
- : { name: `evolu1-${name}.db` });
7
+ : {
8
+ name: `evolu1-${name}.db`,
9
+ ...(options?.encryptionKey && {
10
+ encryptionKey: `x'${bytesToHex(options.encryptionKey)}'`,
11
+ }),
12
+ });
8
13
  let isDisposed = false;
9
14
  const cache = createPreparedStatementsCache((sql) => db.prepareStatement(sql),
10
15
  // op-sqlite doesn't have API for that
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evolu/react-native",
3
- "version": "12.0.1-preview.3",
3
+ "version": "12.0.1-preview.5",
4
4
  "description": "Evolu for React Native and Expo",
5
5
  "keywords": [
6
6
  "evolu",
@@ -48,23 +48,28 @@
48
48
  "README.md"
49
49
  ],
50
50
  "devDependencies": {
51
- "@op-engineering/op-sqlite": "^14.0.3",
52
- "expo": "^53.0.11",
53
- "expo-sqlite": "~15.2.12",
54
- "react-native": "^0.79.3",
55
- "typescript": "^5.8.3",
56
- "vitest": "^3.2.3",
57
- "@evolu/common": "6.0.1-preview.10",
58
- "@evolu/react": "9.0.1-preview.2",
51
+ "@op-engineering/op-sqlite": "^15.0.3",
52
+ "expo": "^54.0.10",
53
+ "expo-sqlite": "~16.0.8",
54
+ "react-native": "^0.81.4",
55
+ "react-native-nitro-modules": "^0.31.2",
56
+ "react-native-sensitive-info": "^6.0.0-rc.4",
57
+ "shx": "^0.4.0",
58
+ "typescript": "^5.9.2",
59
+ "vitest": "^4.0.4",
60
+ "@evolu/common": "6.0.1-preview.20",
61
+ "@evolu/react": "9.0.1-preview.5",
59
62
  "@evolu/tsconfig": "0.0.2"
60
63
  },
61
64
  "peerDependencies": {
62
- "@evolu/common": "^6.0.1-preview.10",
63
- "@evolu/react": "^9.0.1-preview.2",
65
+ "@evolu/common": "^6.0.1-preview.20",
66
+ "@evolu/react": "^9.0.1-preview.5",
64
67
  "@op-engineering/op-sqlite": ">=12",
65
- "expo": ">=52",
68
+ "expo": ">=54",
66
69
  "expo-sqlite": ">=15",
67
- "react-native": ">=0.76"
70
+ "react-native": ">=0.81",
71
+ "react-native-nitro-modules": ">=0.31",
72
+ "react-native-sensitive-info": ">=6"
68
73
  },
69
74
  "peerDependenciesMeta": {
70
75
  "@op-engineering/op-sqlite": {
@@ -75,6 +80,12 @@
75
80
  },
76
81
  "expo-sqlite": {
77
82
  "optional": true
83
+ },
84
+ "react-native-nitro-modules": {
85
+ "optional": true
86
+ },
87
+ "react-native-sensitive-info": {
88
+ "optional": true
78
89
  }
79
90
  },
80
91
  "publishConfig": {
@@ -1,53 +1,53 @@
1
1
  import {
2
2
  createConsole,
3
- createEnglishMnemonic,
4
- createNanoIdLib,
3
+ createLocalAuth,
5
4
  createRandom,
6
5
  createRandomBytes,
7
6
  createTime,
7
+ createWebSocket,
8
8
  } from "@evolu/common";
9
9
 
10
10
  import {
11
- CreateAppState,
12
11
  CreateDbWorker,
13
12
  createDbWorkerForPlatform,
14
- createWebSocketSync,
15
13
  EvoluDeps,
14
+ ReloadApp,
16
15
  } from "@evolu/common/evolu";
17
16
 
18
17
  import * as Expo from "expo";
19
-
18
+ import { SensitiveInfo } from "react-native-sensitive-info";
20
19
  import { createExpoSqliteDriver } from "./providers/ExpoSqliteDriver.js";
21
20
  import { polyfillHermes } from "./utils/Hermes.js";
22
21
 
23
22
  polyfillHermes();
24
23
 
25
- export const createAppState: CreateAppState = () => ({
26
- reset: () => {
27
- void Expo.reloadAppAsync();
28
- },
29
- });
30
-
31
- const nanoIdLib = createNanoIdLib();
32
24
  const console = createConsole();
33
25
  const time = createTime();
26
+ const randomBytes = createRandomBytes();
27
+ const localAuth = createLocalAuth({
28
+ randomBytes: randomBytes,
29
+ secureStorage: SensitiveInfo,
30
+ });
34
31
 
35
32
  const createDbWorker: CreateDbWorker = () =>
36
33
  createDbWorkerForPlatform({
37
- createSqliteDriver: createExpoSqliteDriver,
38
- createSync: createWebSocketSync,
39
34
  console,
40
- time,
35
+ createSqliteDriver: createExpoSqliteDriver,
36
+ createWebSocket,
41
37
  random: createRandom(),
42
- nanoIdLib,
43
- createMnemonic: createEnglishMnemonic,
44
- createRandomBytes,
38
+ randomBytes,
39
+ time,
45
40
  });
46
41
 
42
+ const reloadApp: ReloadApp = () => {
43
+ void Expo.reloadAppAsync();
44
+ };
45
+
47
46
  export const evoluReactNativeDeps: EvoluDeps = {
48
- time,
49
- nanoIdLib,
50
47
  console,
51
- createAppState,
52
48
  createDbWorker,
49
+ randomBytes,
50
+ localAuth,
51
+ reloadApp,
52
+ time,
53
53
  };
package/src/op-sqlite.ts CHANGED
@@ -1,56 +1,57 @@
1
1
  import {
2
2
  createConsole,
3
- createEnglishMnemonic,
4
- createNanoIdLib,
3
+ createLocalAuth,
5
4
  createRandom,
6
5
  createRandomBytes,
7
6
  createTime,
7
+ createWebSocket,
8
8
  } from "@evolu/common";
9
9
 
10
10
  import {
11
- CreateAppState,
12
11
  CreateDbWorker,
13
12
  createDbWorkerForPlatform,
14
- createWebSocketSync,
15
13
  EvoluDeps,
14
+ ReloadApp,
16
15
  } from "@evolu/common/evolu";
17
16
 
18
17
  import { DevSettings } from "react-native";
18
+ import { SensitiveInfo } from "react-native-sensitive-info";
19
19
  import { createOpSqliteDriver } from "./providers/OpSqliteDriver.js";
20
20
  import { polyfillHermes } from "./utils/Hermes.js";
21
21
 
22
22
  polyfillHermes();
23
23
 
24
- export const createAppState: CreateAppState = () => ({
25
- reset: () => {
26
- if (process.env.NODE_ENV === "development") {
27
- DevSettings.reload();
28
- } else {
29
- // TODO: reload not implemented for bare rn
30
- }
31
- },
32
- });
33
-
34
- const nanoIdLib = createNanoIdLib();
35
24
  const console = createConsole();
36
25
  const time = createTime();
26
+ const randomBytes = createRandomBytes();
27
+ const localAuth = createLocalAuth({
28
+ randomBytes: randomBytes,
29
+ secureStorage: SensitiveInfo,
30
+ });
37
31
 
38
32
  const createDbWorker: CreateDbWorker = () =>
39
33
  createDbWorkerForPlatform({
40
- createSqliteDriver: createOpSqliteDriver,
41
- createSync: createWebSocketSync,
42
34
  console,
43
- time,
35
+ createSqliteDriver: createOpSqliteDriver,
36
+ createWebSocket,
44
37
  random: createRandom(),
45
- nanoIdLib,
46
- createMnemonic: createEnglishMnemonic,
47
- createRandomBytes,
38
+ randomBytes,
39
+ time,
48
40
  });
49
41
 
42
+ const reloadApp: ReloadApp = () => {
43
+ if (process.env.NODE_ENV === "development") {
44
+ DevSettings.reload();
45
+ } else {
46
+ // TODO: reload not implemented for bare rn
47
+ }
48
+ };
49
+
50
50
  export const evoluReactNativeDeps: EvoluDeps = {
51
- time,
52
- nanoIdLib,
53
51
  console,
54
- createAppState,
55
52
  createDbWorker,
53
+ randomBytes,
54
+ localAuth,
55
+ reloadApp,
56
+ time,
56
57
  };
@@ -3,6 +3,7 @@ import {
3
3
  CreateSqliteDriver,
4
4
  SqliteDriver,
5
5
  SqliteRow,
6
+ bytesToHex,
6
7
  } from "@evolu/common";
7
8
 
8
9
  import { openDatabaseSync, SQLiteStatement } from "expo-sqlite";
@@ -11,6 +12,13 @@ export const createExpoSqliteDriver: CreateSqliteDriver = (name, options) => {
11
12
  const db = openDatabaseSync(
12
13
  options?.memory ? ":memory:" : `evolu1-${name}.db`,
13
14
  );
15
+ if (options?.encryptionKey) {
16
+ db.execSync(`
17
+ PRAGMA cipher = 'sqlcipher';
18
+ PRAGMA legacy = 4;
19
+ PRAGMA key = "x'${bytesToHex(options.encryptionKey)}'";
20
+ `);
21
+ }
14
22
  let isDisposed = false;
15
23
 
16
24
  const cache = createPreparedStatementsCache<SQLiteStatement>(
@@ -5,6 +5,7 @@ import {
5
5
  CreateSqliteDriver,
6
6
  SqliteDriver,
7
7
  SqliteRow,
8
+ bytesToHex,
8
9
  } from "@evolu/common";
9
10
 
10
11
  import { open, PreparedStatement } from "@op-engineering/op-sqlite";
@@ -14,7 +15,12 @@ export const createOpSqliteDriver: CreateSqliteDriver = (name, options) => {
14
15
  const db = open(
15
16
  options?.memory
16
17
  ? { name: `inMemoryDb`, location: ":memory:" }
17
- : { name: `evolu1-${name}.db` },
18
+ : {
19
+ name: `evolu1-${name}.db`,
20
+ ...(options?.encryptionKey && {
21
+ encryptionKey: `x'${bytesToHex(options.encryptionKey)}'`,
22
+ }),
23
+ },
18
24
  );
19
25
  let isDisposed = false;
20
26