react-native-nitro-storage 0.11.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 (36) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +71 -11
  3. package/SECURITY.md +2 -2
  4. package/android/build.gradle +5 -0
  5. package/android/src/main/cpp/AndroidStorageAdapterCpp.cpp +12 -13
  6. package/android/src/main/cpp/JniSize.hpp +21 -0
  7. package/android/src/main/java/com/nitrostorage/AndroidStorageAdapter.kt +124 -16
  8. package/android/src/main/java/com/nitrostorage/DiskSqliteStore.kt +160 -43
  9. package/cpp/bindings/HybridStorage.cpp +12 -4
  10. package/cpp/core/SqliteDiskStore.cpp +191 -33
  11. package/cpp/core/SqliteDiskStore.hpp +11 -1
  12. package/docs/api-reference.md +11 -10
  13. package/docs/native-libraries.md +28 -0
  14. package/ios/IOSStorageAdapterCpp.mm +89 -22
  15. package/lib/commonjs/index.web.js +2 -1
  16. package/lib/commonjs/index.web.js.map +1 -1
  17. package/lib/commonjs/storage-core.js +26 -6
  18. package/lib/commonjs/storage-core.js.map +1 -1
  19. package/lib/commonjs/storage-runtime.js +1 -1
  20. package/lib/commonjs/storage-runtime.js.map +1 -1
  21. package/lib/module/index.web.js +2 -1
  22. package/lib/module/index.web.js.map +1 -1
  23. package/lib/module/storage-core.js +26 -6
  24. package/lib/module/storage-core.js.map +1 -1
  25. package/lib/module/storage-runtime.js +1 -1
  26. package/lib/module/storage-runtime.js.map +1 -1
  27. package/lib/typescript/index.d.ts.map +1 -1
  28. package/lib/typescript/index.web.d.ts.map +1 -1
  29. package/lib/typescript/storage-core.d.ts.map +1 -1
  30. package/lib/typescript/storage-runtime.d.ts +1 -1
  31. package/lib/typescript/storage-runtime.d.ts.map +1 -1
  32. package/lib/typescript/testing.d.ts.map +1 -1
  33. package/package.json +2 -1
  34. package/src/index.web.ts +5 -1
  35. package/src/storage-core.ts +26 -6
  36. package/src/storage-runtime.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"storage-runtime.d.ts","sourceRoot":"","sources":["../../src/storage-runtime.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,yBAAyB,GACzB,iBAAiB,GACjB,oBAAoB,GACpB,6BAA6B,GAC7B,uBAAuB,GACvB,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC3B,aAAa,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,wBAAwB,CAAC;QACpC,aAAa,EAAE,wBAAwB,CAAC;QACxC,mBAAmB,EAAE,wBAAwB,CAAC;QAC9C,cAAc,EAAE,wBAAwB,CAAC;KAC1C,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,wBAAwB,CAAC;QAClC,MAAM,EAAE,wBAAwB,CAAC;QACjC,YAAY,EAAE,wBAAwB,CAAC;QACvC,kBAAkB,EAAE,wBAAwB,CAAC;KAC9C,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,wBAAwB,CAAC;IACpC,cAAc,EAAE,wBAAwB,CAAC;IACzC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,KAAK,CAAC;CACrB,CAAC;AAeF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,GACX,gBAAgB,GAAG,SAAS,CAe9B;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAE5E;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GACjC,OAAO,CAMT"}
1
+ {"version":3,"file":"storage-runtime.d.ts","sourceRoot":"","sources":["../../src/storage-runtime.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,yBAAyB,GACzB,iBAAiB,GACjB,oBAAoB,GACpB,cAAc,GACd,6BAA6B,GAC7B,uBAAuB,GACvB,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC3B,aAAa,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,wBAAwB,CAAC;QACpC,aAAa,EAAE,wBAAwB,CAAC;QACxC,mBAAmB,EAAE,wBAAwB,CAAC;QAC9C,cAAc,EAAE,wBAAwB,CAAC;KAC1C,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,wBAAwB,CAAC;QAClC,MAAM,EAAE,wBAAwB,CAAC;QACjC,YAAY,EAAE,wBAAwB,CAAC;QACvC,kBAAkB,EAAE,wBAAwB,CAAC;KAC9C,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,wBAAwB,CAAC;IACpC,cAAc,EAAE,wBAAwB,CAAC;IACzC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,KAAK,CAAC;CACrB,CAAC;AAgBF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,GACX,gBAAgB,GAAG,SAAS,CAe9B;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAE5E;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GACjC,OAAO,CAMT"}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-storage",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "Synchronous React Native storage powered by Nitro Modules and JSI: typed Memory, Disk, Keychain/Android Keystore secure storage, biometric auth, MMKV migration, Expo, Zustand/Jotai persistence, and web IndexedDB support.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -54,6 +54,7 @@
54
54
  "!cpp/build",
55
55
  "!android/build",
56
56
  "!android/.cxx",
57
+ "!android/src/test",
57
58
  "!scripts"
58
59
  ],
59
60
  "sideEffects": false,
package/src/index.web.ts CHANGED
@@ -165,8 +165,12 @@ function createWebStorageError(
165
165
  const backendName = getBackendName(scope, backend);
166
166
  const message =
167
167
  error instanceof Error ? error.message : String(error ?? "Unknown error");
168
+ const tag =
169
+ error instanceof Error && error.name === "QuotaExceededError"
170
+ ? "[nitro-error:storage_full] "
171
+ : "";
168
172
  const wrapped = new Error(
169
- `NitroStorage(web): ${operation} failed for ${backendName}: ${message}`,
173
+ `${tag}NitroStorage(web): ${operation} failed for ${backendName}: ${message}`,
170
174
  );
171
175
  Object.defineProperty(wrapped, "cause", {
172
176
  configurable: true,
@@ -574,8 +574,9 @@ export function createStorageCore(
574
574
  operation: StorageChangeOperation,
575
575
  source: StorageChangeSource,
576
576
  changes: StorageKeyChangeEvent[],
577
+ emitWhenEmpty = false,
577
578
  ): void {
578
- if (changes.length === 0) {
579
+ if (changes.length === 0 && !emitWhenEmpty) {
579
580
  return;
580
581
  }
581
582
 
@@ -1024,9 +1025,18 @@ export function createStorageCore(
1024
1025
  return;
1025
1026
  }
1026
1027
  measureOperation("storage:clear", scope, () => {
1027
- const previousValues = shouldReadPreviousEventValues(scope)
1028
- ? storage.getAll(scope)
1029
- : {};
1028
+ let previousValues: Record<string, string> = {};
1029
+ let previousValuesUnreadable = false;
1030
+ if (shouldReadPreviousEventValues(scope)) {
1031
+ try {
1032
+ previousValues = storage.getAll(scope);
1033
+ } catch (error) {
1034
+ if (scope !== StorageScope.Disk) {
1035
+ throw error;
1036
+ }
1037
+ previousValuesUnreadable = true;
1038
+ }
1039
+ }
1030
1040
  if (scope === StorageScope.Memory) {
1031
1041
  memoryStore.clear();
1032
1042
  memoryExpirationDeadlines.clear();
@@ -1049,9 +1059,15 @@ export function createStorageCore(
1049
1059
  return;
1050
1060
  }
1051
1061
 
1062
+ let diskFlushFailed = false;
1052
1063
  if (scope === StorageScope.Disk) {
1053
- flushDiskWrites();
1054
- durability.clearAllPendingDiskWrites();
1064
+ try {
1065
+ flushDiskWrites();
1066
+ durability.clearAllPendingDiskWrites();
1067
+ } catch {
1068
+ diskFlushFailed = true;
1069
+ previousValuesUnreadable = shouldReadPreviousEventValues(scope);
1070
+ }
1055
1071
  }
1056
1072
 
1057
1073
  if (scope === StorageScope.Secure) {
@@ -1061,6 +1077,9 @@ export function createStorageCore(
1061
1077
 
1062
1078
  clearScopeRawCache(scope);
1063
1079
  adapter.backend.clear(scope);
1080
+ if (diskFlushFailed) {
1081
+ durability.clearAllPendingDiskWrites();
1082
+ }
1064
1083
  emitBatchChange(
1065
1084
  scope,
1066
1085
  "clear",
@@ -1075,6 +1094,7 @@ export function createStorageCore(
1075
1094
  adapter.changeSource,
1076
1095
  ),
1077
1096
  ),
1097
+ previousValuesUnreadable,
1078
1098
  );
1079
1099
  });
1080
1100
  },
@@ -3,6 +3,7 @@ export type StorageErrorCode =
3
3
  | "authentication_required"
4
4
  | "key_invalidated"
5
5
  | "storage_corruption"
6
+ | "storage_full"
6
7
  | "storage_compensation_failed"
7
8
  | "biometric_unavailable"
8
9
  | "unsupported"
@@ -63,6 +64,7 @@ const STORAGE_ERROR_CODES = new Set<StorageErrorCode>([
63
64
  "authentication_required",
64
65
  "key_invalidated",
65
66
  "storage_corruption",
67
+ "storage_full",
66
68
  "storage_compensation_failed",
67
69
  "biometric_unavailable",
68
70
  "unsupported",