@legendapp/state 3.0.0-beta.23 → 3.0.0-beta.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/state",
3
- "version": "3.0.0-beta.23",
3
+ "version": "3.0.0-beta.24",
4
4
  "description": "legend-state",
5
5
  "sideEffects": false,
6
6
  "private": false,
@@ -13,6 +13,14 @@
13
13
  "dependencies": {
14
14
  "use-sync-external-store": "^1.2.2"
15
15
  },
16
+ "peerDependencies": {
17
+ "expo-sqlite": "^15.0.0"
18
+ },
19
+ "peerDependenciesMeta": {
20
+ "expo-sqlite": {
21
+ "optional": true
22
+ }
23
+ },
16
24
  "author": "Legend <contact@legendapp.com> (https://github.com/LegendApp)",
17
25
  "keywords": [
18
26
  "react",
@@ -249,6 +257,11 @@
249
257
  "require": "./persist-plugins/local-storage.js",
250
258
  "types": "./persist-plugins/local-storage.d.ts"
251
259
  },
260
+ "./persist-plugins/expo-sqlite": {
261
+ "import": "./persist-plugins/expo-sqlite.mjs",
262
+ "require": "./persist-plugins/expo-sqlite.js",
263
+ "types": "./persist-plugins/expo-sqlite.d.ts"
264
+ },
252
265
  "./persist-plugins/async-storage": {
253
266
  "import": "./persist-plugins/async-storage.mjs",
254
267
  "require": "./persist-plugins/async-storage.js",
@@ -0,0 +1,19 @@
1
+ import { Change } from '@legendapp/state';
2
+ import { ObservablePersistPlugin, PersistMetadata } from '@legendapp/state/sync';
3
+ import { SQLiteStorage } from 'expo-sqlite/kv-store';
4
+
5
+ declare class ObservablePersistSqlite implements ObservablePersistPlugin {
6
+ private data;
7
+ private storage;
8
+ constructor(storage: SQLiteStorage);
9
+ getTable(table: string, init: any): any;
10
+ getMetadata(table: string): PersistMetadata;
11
+ set(table: string, changes: Change[]): void;
12
+ setMetadata(table: string, metadata: PersistMetadata): void;
13
+ deleteTable(table: string): undefined;
14
+ deleteMetadata(table: string): void;
15
+ private save;
16
+ }
17
+ declare function observablePersistSqlite(storage: SQLiteStorage): ObservablePersistSqlite;
18
+
19
+ export { ObservablePersistSqlite, observablePersistSqlite };
@@ -0,0 +1,19 @@
1
+ import { Change } from '@legendapp/state';
2
+ import { ObservablePersistPlugin, PersistMetadata } from '@legendapp/state/sync';
3
+ import { SQLiteStorage } from 'expo-sqlite/kv-store';
4
+
5
+ declare class ObservablePersistSqlite implements ObservablePersistPlugin {
6
+ private data;
7
+ private storage;
8
+ constructor(storage: SQLiteStorage);
9
+ getTable(table: string, init: any): any;
10
+ getMetadata(table: string): PersistMetadata;
11
+ set(table: string, changes: Change[]): void;
12
+ setMetadata(table: string, metadata: PersistMetadata): void;
13
+ deleteTable(table: string): undefined;
14
+ deleteMetadata(table: string): void;
15
+ private save;
16
+ }
17
+ declare function observablePersistSqlite(storage: SQLiteStorage): ObservablePersistSqlite;
18
+
19
+ export { ObservablePersistSqlite, observablePersistSqlite };
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ var state = require('@legendapp/state');
4
+
5
+ // src/persist-plugins/expo-sqlite.ts
6
+ var { safeParse, safeStringify } = state.internal;
7
+ var MetadataSuffix = "__m";
8
+ var ObservablePersistSqlite = class {
9
+ constructor(storage) {
10
+ this.data = {};
11
+ console.error(
12
+ "[legend-state] ObservablePersistSqlite failed to initialize. You need to pass the SQLiteStorage instance."
13
+ );
14
+ this.storage = storage;
15
+ }
16
+ getTable(table, init) {
17
+ if (!this.storage)
18
+ return void 0;
19
+ if (this.data[table] === void 0) {
20
+ try {
21
+ const value = this.storage.getItemSync(table);
22
+ this.data[table] = value ? safeParse(value) : init;
23
+ } catch (e) {
24
+ console.error("[legend-state] ObservablePersistSqlite failed to parse", table);
25
+ }
26
+ }
27
+ return this.data[table];
28
+ }
29
+ getMetadata(table) {
30
+ return this.getTable(table + MetadataSuffix, {});
31
+ }
32
+ set(table, changes) {
33
+ if (!this.data[table]) {
34
+ this.data[table] = {};
35
+ }
36
+ this.data[table] = state.applyChanges(this.data[table], changes);
37
+ this.save(table);
38
+ }
39
+ setMetadata(table, metadata) {
40
+ table = table + MetadataSuffix;
41
+ this.data[table] = metadata;
42
+ this.save(table);
43
+ }
44
+ deleteTable(table) {
45
+ if (!this.storage)
46
+ return void 0;
47
+ delete this.data[table];
48
+ this.storage.removeItemSync(table);
49
+ }
50
+ deleteMetadata(table) {
51
+ this.deleteTable(table + MetadataSuffix);
52
+ }
53
+ // Private
54
+ save(table) {
55
+ if (!this.storage)
56
+ return void 0;
57
+ const v = this.data[table];
58
+ if (v !== void 0 && v !== null) {
59
+ this.storage.setItemSync(table, safeStringify(v));
60
+ } else {
61
+ this.storage.removeItemSync(table);
62
+ }
63
+ }
64
+ };
65
+ function observablePersistSqlite(storage) {
66
+ return new ObservablePersistSqlite(storage);
67
+ }
68
+
69
+ exports.ObservablePersistSqlite = ObservablePersistSqlite;
70
+ exports.observablePersistSqlite = observablePersistSqlite;
@@ -0,0 +1,67 @@
1
+ import { applyChanges, internal } from '@legendapp/state';
2
+
3
+ // src/persist-plugins/expo-sqlite.ts
4
+ var { safeParse, safeStringify } = internal;
5
+ var MetadataSuffix = "__m";
6
+ var ObservablePersistSqlite = class {
7
+ constructor(storage) {
8
+ this.data = {};
9
+ console.error(
10
+ "[legend-state] ObservablePersistSqlite failed to initialize. You need to pass the SQLiteStorage instance."
11
+ );
12
+ this.storage = storage;
13
+ }
14
+ getTable(table, init) {
15
+ if (!this.storage)
16
+ return void 0;
17
+ if (this.data[table] === void 0) {
18
+ try {
19
+ const value = this.storage.getItemSync(table);
20
+ this.data[table] = value ? safeParse(value) : init;
21
+ } catch (e) {
22
+ console.error("[legend-state] ObservablePersistSqlite failed to parse", table);
23
+ }
24
+ }
25
+ return this.data[table];
26
+ }
27
+ getMetadata(table) {
28
+ return this.getTable(table + MetadataSuffix, {});
29
+ }
30
+ set(table, changes) {
31
+ if (!this.data[table]) {
32
+ this.data[table] = {};
33
+ }
34
+ this.data[table] = applyChanges(this.data[table], changes);
35
+ this.save(table);
36
+ }
37
+ setMetadata(table, metadata) {
38
+ table = table + MetadataSuffix;
39
+ this.data[table] = metadata;
40
+ this.save(table);
41
+ }
42
+ deleteTable(table) {
43
+ if (!this.storage)
44
+ return void 0;
45
+ delete this.data[table];
46
+ this.storage.removeItemSync(table);
47
+ }
48
+ deleteMetadata(table) {
49
+ this.deleteTable(table + MetadataSuffix);
50
+ }
51
+ // Private
52
+ save(table) {
53
+ if (!this.storage)
54
+ return void 0;
55
+ const v = this.data[table];
56
+ if (v !== void 0 && v !== null) {
57
+ this.storage.setItemSync(table, safeStringify(v));
58
+ } else {
59
+ this.storage.removeItemSync(table);
60
+ }
61
+ }
62
+ };
63
+ function observablePersistSqlite(storage) {
64
+ return new ObservablePersistSqlite(storage);
65
+ }
66
+
67
+ export { ObservablePersistSqlite, observablePersistSqlite };