@multiplatform.one/store 8.5.0 → 9.0.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.
- package/dist/cjs/storage/index.native.js +7 -1
- package/dist/cjs/storage/index.native.js.map +1 -1
- package/dist/esm/storage/index.native.js +7 -1
- package/dist/esm/storage/index.native.js.map +1 -1
- package/package.json +9 -6
- package/src/storage/index.native.ts +7 -1
- package/src/storage/nativePeers.spec.ts +69 -0
- package/types/storage/index.native.d.ts.map +1 -1
|
@@ -45,7 +45,13 @@ var defaultLoaders = {
|
|
|
45
45
|
// crash). Lazy so a genuinely missing native module throws HERE — inside
|
|
46
46
|
// the try/catch — instead of at bundle evaluation.
|
|
47
47
|
loadMMKV: function loadMMKV() {
|
|
48
|
-
|
|
48
|
+
try {
|
|
49
|
+
return require("react-native-mmkv");
|
|
50
|
+
} catch (error) {
|
|
51
|
+
throw new Error("react-native-mmkv is not installed", {
|
|
52
|
+
cause: error
|
|
53
|
+
});
|
|
54
|
+
}
|
|
49
55
|
},
|
|
50
56
|
loadAsyncStorage: function loadAsyncStorage() {
|
|
51
57
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["index_native_exports","__export","logNativeStorageResolution","resolveNativeStorage","storage","module","exports","__toCommonJS","_instanceof","left","right","Symbol","hasInstance","defaultLoaders","loadMMKV","require","
|
|
1
|
+
{"version":3,"names":["index_native_exports","__export","logNativeStorageResolution","resolveNativeStorage","storage","module","exports","__toCommonJS","_instanceof","left","right","Symbol","hasInstance","defaultLoaders","loadMMKV","require","error","Error","cause","loadAsyncStorage","loaders","arguments","length","errors","mmkvModule","createMMKV","mmkv","backend","getItem","name","_mmkv_getString","getString","setItem","value","set","removeItem","remove","err","asyncStorageModule","asyncStorage","default","map","Map","_map_get","get","delete","describeError","message","String","resolution2","logger","console","info","causes","push","warn","join","resolution","process","env","NODE_ENV"],"sources":["../../../src/storage/index.native.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,13 @@ var defaultLoaders = {
|
|
|
14
14
|
// crash). Lazy so a genuinely missing native module throws HERE — inside
|
|
15
15
|
// the try/catch — instead of at bundle evaluation.
|
|
16
16
|
loadMMKV: function loadMMKV() {
|
|
17
|
-
|
|
17
|
+
try {
|
|
18
|
+
return require("react-native-mmkv");
|
|
19
|
+
} catch (error) {
|
|
20
|
+
throw new Error("react-native-mmkv is not installed", {
|
|
21
|
+
cause: error
|
|
22
|
+
});
|
|
23
|
+
}
|
|
18
24
|
},
|
|
19
25
|
loadAsyncStorage: function loadAsyncStorage() {
|
|
20
26
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_instanceof","left","right","Symbol","hasInstance","defaultLoaders","loadMMKV","require","
|
|
1
|
+
{"version":3,"names":["_instanceof","left","right","Symbol","hasInstance","defaultLoaders","loadMMKV","require","error","Error","cause","loadAsyncStorage","resolveNativeStorage","loaders","arguments","length","errors","mmkvModule","createMMKV","mmkv","backend","storage","getItem","name","_mmkv_getString","getString","setItem","value","set","removeItem","remove","err","asyncStorageModule","asyncStorage","default","map","Map","_map_get","get","delete","describeError","message","String","logNativeStorageResolution","resolution2","logger","console","info","causes","push","warn","join","resolution","process","env","NODE_ENV"],"sources":["../../../src/storage/index.native.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/store",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"description": "multiplatform.one TanStack Store with cross-platform persistent storage",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -54,12 +54,11 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@tanstack/react-store": "^0.11.0",
|
|
57
|
-
"@tanstack/store": "^0.11.0"
|
|
58
|
-
"react-native-mmkv": "^4.3.2"
|
|
57
|
+
"@tanstack/store": "^0.11.0"
|
|
59
58
|
},
|
|
60
59
|
"devDependencies": {
|
|
61
|
-
"@multiplatform.one/config": "
|
|
62
|
-
"@multiplatform.one/test-utils": "
|
|
60
|
+
"@multiplatform.one/config": "9.0.0",
|
|
61
|
+
"@multiplatform.one/test-utils": "9.0.0",
|
|
63
62
|
"@tamagui/build": "2.7.6",
|
|
64
63
|
"@testing-library/jest-dom": "^7.0.1",
|
|
65
64
|
"@testing-library/react": "^16.3.3",
|
|
@@ -73,11 +72,15 @@
|
|
|
73
72
|
},
|
|
74
73
|
"peerDependencies": {
|
|
75
74
|
"@react-native-async-storage/async-storage": "*",
|
|
76
|
-
"react": "^19.1.0"
|
|
75
|
+
"react": "^19.1.0",
|
|
76
|
+
"react-native-mmkv": ">=4.0.0"
|
|
77
77
|
},
|
|
78
78
|
"peerDependenciesMeta": {
|
|
79
79
|
"@react-native-async-storage/async-storage": {
|
|
80
80
|
"optional": true
|
|
81
|
+
},
|
|
82
|
+
"react-native-mmkv": {
|
|
83
|
+
"optional": true
|
|
81
84
|
}
|
|
82
85
|
},
|
|
83
86
|
"optionalDependencies": {
|
|
@@ -52,7 +52,13 @@ const defaultLoaders: NativeStorageLoaders = {
|
|
|
52
52
|
// passed-around `require` reference would survive as a bare identifier and
|
|
53
53
|
// crash). Lazy so a genuinely missing native module throws HERE — inside
|
|
54
54
|
// the try/catch — instead of at bundle evaluation.
|
|
55
|
-
loadMMKV: () =>
|
|
55
|
+
loadMMKV: () => {
|
|
56
|
+
try {
|
|
57
|
+
return require("react-native-mmkv");
|
|
58
|
+
} catch (error) {
|
|
59
|
+
throw new Error("react-native-mmkv is not installed", { cause: error });
|
|
60
|
+
}
|
|
61
|
+
},
|
|
56
62
|
loadAsyncStorage: () => {
|
|
57
63
|
try {
|
|
58
64
|
return require("@react-native-async-storage/async-storage");
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { resolveNativeStorage } from "./index.native";
|
|
5
|
+
|
|
6
|
+
const manifest = JSON.parse(
|
|
7
|
+
readFileSync(join(import.meta.dirname, "..", "..", "package.json"), "utf8"),
|
|
8
|
+
) as {
|
|
9
|
+
dependencies?: Record<string, string>;
|
|
10
|
+
peerDependencies?: Record<string, string>;
|
|
11
|
+
peerDependenciesMeta?: Record<string, { optional?: boolean }>;
|
|
12
|
+
};
|
|
13
|
+
const source = readFileSync(join(import.meta.dirname, "index.native.ts"), "utf8");
|
|
14
|
+
|
|
15
|
+
// FZ-10637. A dependency on react-native-mmkv put a second native module, at
|
|
16
|
+
// store's version, into every host app. As an optional peer the host's copy is
|
|
17
|
+
// the only copy, and an app without one still persists.
|
|
18
|
+
describe("react-native-mmkv is the host app's to install", () => {
|
|
19
|
+
it("is an optional peer of store, never a dependency", () => {
|
|
20
|
+
expect(manifest.dependencies ?? {}).not.toHaveProperty("react-native-mmkv");
|
|
21
|
+
expect(manifest.peerDependencies).toHaveProperty("react-native-mmkv");
|
|
22
|
+
expect(manifest.peerDependenciesMeta?.["react-native-mmkv"]?.optional).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("is loaded from inside a try block, so Metro bundles an app that leaves it out", () => {
|
|
26
|
+
expect(source).toMatch(/try \{\s*return require\("react-native-mmkv"\);/);
|
|
27
|
+
expect(source).toMatch(
|
|
28
|
+
/try \{\s*return require\("@react-native-async-storage\/async-storage"\);/,
|
|
29
|
+
);
|
|
30
|
+
expect(source).not.toMatch(/^import[^;]*from "react-native-mmkv"/m);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("an app without it persists through AsyncStorage", async () => {
|
|
34
|
+
const data = new Map<string, string>();
|
|
35
|
+
const resolution = resolveNativeStorage({
|
|
36
|
+
loadMMKV: () => {
|
|
37
|
+
throw new Error("react-native-mmkv is not installed");
|
|
38
|
+
},
|
|
39
|
+
loadAsyncStorage: () => ({
|
|
40
|
+
default: {
|
|
41
|
+
getItem: async (key: string) => data.get(key) ?? null,
|
|
42
|
+
setItem: async (key: string, value: string) => {
|
|
43
|
+
data.set(key, value);
|
|
44
|
+
},
|
|
45
|
+
removeItem: async (key: string) => {
|
|
46
|
+
data.delete(key);
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
expect(resolution.backend).toBe("async-storage");
|
|
52
|
+
expect(String(resolution.errors.mmkv)).toContain("react-native-mmkv is not installed");
|
|
53
|
+
await resolution.storage.setItem("theme", "dark");
|
|
54
|
+
await expect(resolution.storage.getItem("theme")).resolves.toBe("dark");
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("an app with neither backend still gets a storage that works until restart", async () => {
|
|
58
|
+
const missing = (name: string) => () => {
|
|
59
|
+
throw new Error(`${name} is not installed`);
|
|
60
|
+
};
|
|
61
|
+
const resolution = resolveNativeStorage({
|
|
62
|
+
loadMMKV: missing("react-native-mmkv"),
|
|
63
|
+
loadAsyncStorage: missing("@react-native-async-storage/async-storage"),
|
|
64
|
+
});
|
|
65
|
+
expect(resolution.backend).toBe("memory");
|
|
66
|
+
await resolution.storage.setItem("theme", "dark");
|
|
67
|
+
expect(await resolution.storage.getItem("theme")).toBe("dark");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/storage/index.native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,eAAe,GAAG,QAAQ,CAAC;AAevE,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,QAAQ,IAAI,OAAO,CAAC;IACpB,gFAAgF;IAChF,gBAAgB,IAAI,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,2EAA2E;IAC3E,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACpD;
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/storage/index.native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,eAAe,GAAG,QAAQ,CAAC;AAevE,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,QAAQ,IAAI,OAAO,CAAC;IACpB,gFAAgF;IAChF,gBAAgB,IAAI,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,2EAA2E;IAC3E,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACpD;AA0BD,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,oBAAqC,GAC7C,uBAAuB,CA+DzB;AAMD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,uBAAuB,EACnC,MAAM,GAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAW,GAC/C,IAAI,CAcN;AASD,eAAO,MAAM,OAAO,EAAE,OAA4B,CAAC"}
|