react-native-nitro-storage 0.10.4 → 0.11.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 (87) hide show
  1. package/CHANGELOG.md +71 -14
  2. package/README.md +127 -41
  3. package/SECURITY.md +16 -6
  4. package/android/build.gradle +0 -1
  5. package/android/consumer-rules.pro +0 -3
  6. package/android/src/main/cpp/AndroidStorageAdapterCpp.cpp +1 -4
  7. package/android/src/main/cpp/AndroidStorageAdapterCpp.hpp +3 -3
  8. package/android/src/main/java/com/nitrostorage/AndroidStorageAdapter.kt +73 -23
  9. package/android/src/main/java/com/nitrostorage/DiskSqliteStore.kt +15 -0
  10. package/app.plugin.js +51 -51
  11. package/cpp/bindings/HybridStorage.cpp +25 -6
  12. package/cpp/core/NativeStorageAdapter.hpp +14 -1
  13. package/cpp/core/SqliteDiskStore.cpp +84 -11
  14. package/cpp/core/SqliteDiskStore.hpp +10 -0
  15. package/docs/api-reference.md +73 -28
  16. package/docs/benchmarks.md +4 -12
  17. package/docs/mmkv-migration.md +3 -1
  18. package/docs/native-libraries.md +10 -4
  19. package/docs/secure-storage.md +26 -12
  20. package/docs/web-backends.md +6 -2
  21. package/indexeddb-backend/package.json +6 -0
  22. package/ios/IOSStorageAdapterCpp.hpp +4 -0
  23. package/ios/IOSStorageAdapterCpp.mm +96 -18
  24. package/lib/commonjs/capabilities.js +3 -8
  25. package/lib/commonjs/capabilities.js.map +1 -1
  26. package/lib/commonjs/index.js +23 -8
  27. package/lib/commonjs/index.js.map +1 -1
  28. package/lib/commonjs/index.web.js +61 -19
  29. package/lib/commonjs/index.web.js.map +1 -1
  30. package/lib/commonjs/indexeddb-backend.js +21 -37
  31. package/lib/commonjs/indexeddb-backend.js.map +1 -1
  32. package/lib/commonjs/internal.js +6 -0
  33. package/lib/commonjs/internal.js.map +1 -1
  34. package/lib/commonjs/storage-core.js +35 -11
  35. package/lib/commonjs/storage-core.js.map +1 -1
  36. package/lib/commonjs/storage-runtime.js +1 -1
  37. package/lib/commonjs/storage-runtime.js.map +1 -1
  38. package/lib/commonjs/testing.js +68 -23
  39. package/lib/commonjs/testing.js.map +1 -1
  40. package/lib/commonjs/web-backend-contract.js +6 -2
  41. package/lib/commonjs/web-backend-contract.js.map +1 -1
  42. package/lib/module/capabilities.js +3 -8
  43. package/lib/module/capabilities.js.map +1 -1
  44. package/lib/module/index.js +14 -5
  45. package/lib/module/index.js.map +1 -1
  46. package/lib/module/index.web.js +61 -12
  47. package/lib/module/index.web.js.map +1 -1
  48. package/lib/module/indexeddb-backend.js +21 -37
  49. package/lib/module/indexeddb-backend.js.map +1 -1
  50. package/lib/module/internal.js +5 -0
  51. package/lib/module/internal.js.map +1 -1
  52. package/lib/module/storage-core.js +36 -12
  53. package/lib/module/storage-core.js.map +1 -1
  54. package/lib/module/storage-runtime.js +1 -1
  55. package/lib/module/storage-runtime.js.map +1 -1
  56. package/lib/module/testing.js +59 -16
  57. package/lib/module/testing.js.map +1 -1
  58. package/lib/module/web-backend-contract.js +5 -2
  59. package/lib/module/web-backend-contract.js.map +1 -1
  60. package/lib/typescript/capabilities.d.ts.map +1 -1
  61. package/lib/typescript/index.d.ts +8 -1
  62. package/lib/typescript/index.d.ts.map +1 -1
  63. package/lib/typescript/index.web.d.ts +7 -1
  64. package/lib/typescript/index.web.d.ts.map +1 -1
  65. package/lib/typescript/indexeddb-backend.d.ts.map +1 -1
  66. package/lib/typescript/internal.d.ts +1 -0
  67. package/lib/typescript/internal.d.ts.map +1 -1
  68. package/lib/typescript/storage-core.d.ts +1 -1
  69. package/lib/typescript/storage-core.d.ts.map +1 -1
  70. package/lib/typescript/storage-runtime.d.ts +1 -1
  71. package/lib/typescript/storage-runtime.d.ts.map +1 -1
  72. package/lib/typescript/testing.d.ts +15 -2
  73. package/lib/typescript/testing.d.ts.map +1 -1
  74. package/lib/typescript/web-backend-contract.d.ts +1 -0
  75. package/lib/typescript/web-backend-contract.d.ts.map +1 -1
  76. package/package.json +14 -5
  77. package/react-native-nitro-storage.podspec +4 -2
  78. package/src/capabilities.ts +4 -9
  79. package/src/index.ts +19 -5
  80. package/src/index.web.ts +86 -19
  81. package/src/indexeddb-backend.ts +20 -42
  82. package/src/internal.ts +8 -0
  83. package/src/storage-core.ts +52 -19
  84. package/src/storage-runtime.ts +3 -1
  85. package/src/testing.ts +91 -18
  86. package/src/web-backend-contract.ts +6 -2
  87. package/testing/package.json +8 -0
@@ -100,7 +100,7 @@ static void unregisterLegacyDiskKeys(NSArray<NSString*>* keys) {
100
100
 
101
101
  // --- Legacy disk key migration ---
102
102
  // Versions before the suite domain stored Disk values in standardUserDefaults.
103
- // A conservative, retryable cutover runs at adapter initialization. A valid
103
+ // A conservative, retryable cutover runs before the first Disk operation. A valid
104
104
  // registry is copied into the suite domain and each source is removed only
105
105
  // after a target readback confirms the copy. Malformed registries, fallback
106
106
  // domains, and persistence failures remain untouched for a later retry.
@@ -108,7 +108,7 @@ static void unregisterLegacyDiskKeys(NSArray<NSString*>* keys) {
108
108
  static NSString* const kLegacyDiskMigrationMarkerKey =
109
109
  @"__nitro_storage_legacy_disk_migration_v1__";
110
110
 
111
- static std::string NitroDiskStorePath() {
111
+ static std::string ResolveNitroDiskStorePath() {
112
112
  NSArray<NSURL*>* urls = [[NSFileManager defaultManager]
113
113
  URLsForDirectory:NSApplicationSupportDirectory
114
114
  inDomains:NSUserDomainMask];
@@ -125,6 +125,11 @@ static std::string NitroDiskStorePath() {
125
125
  return stdStringFromNSString(path);
126
126
  }
127
127
 
128
+ static const std::string& NitroDiskStorePath() {
129
+ static const std::string path = ResolveNitroDiskStorePath();
130
+ return path;
131
+ }
132
+
128
133
  static NitroStorage::SqliteDiskStore& NitroSqliteDiskStore() {
129
134
  return NitroStorage::SqliteDiskStore::shared(NitroDiskStorePath());
130
135
  }
@@ -134,7 +139,14 @@ static bool isInternalDiskKey(NSString* key) {
134
139
  [key isEqualToString:kLegacyDiskMigrationMarkerKey];
135
140
  }
136
141
 
142
+ static NSString* const kSuiteSqliteMigrationMarker = @"suite_v1";
143
+
137
144
  static void migrateSuiteIntoSqlite() {
145
+ auto& store = NitroSqliteDiskStore();
146
+ const std::string marker = stdStringFromNSString(kSuiteSqliteMigrationMarker);
147
+ if (store.hasMigrationMarker(marker)) {
148
+ return;
149
+ }
138
150
  NSDictionary<NSString*, id>* entries =
139
151
  [NitroDiskDefaults() persistentDomainForName:kDiskSuiteName] ?: @{};
140
152
  std::vector<std::pair<std::string, std::string>> pairs;
@@ -149,7 +161,7 @@ static void migrateSuiteIntoSqlite() {
149
161
  }
150
162
  pairs.emplace_back(stdStringFromNSString(key), stdStringFromNSString((NSString*)value));
151
163
  }
152
- NitroSqliteDiskStore().migrateIfAbsent(pairs);
164
+ store.migrateOnce(marker, pairs);
153
165
  }
154
166
 
155
167
  static void runLegacyDiskMigrationCutover(
@@ -306,14 +318,24 @@ static CFStringRef accessControlAttr(int level) {
306
318
  }
307
319
  }
308
320
 
309
- IOSStorageAdapterCpp::IOSStorageAdapterCpp() {
321
+ IOSStorageAdapterCpp::IOSStorageAdapterCpp() = default;
322
+ IOSStorageAdapterCpp::~IOSStorageAdapterCpp() {}
323
+
324
+ void IOSStorageAdapterCpp::ensureDiskMigrated() {
325
+ if (diskMigrated_.load(std::memory_order_acquire)) {
326
+ return;
327
+ }
328
+ std::lock_guard<std::mutex> lock(diskMigrationMutex_);
329
+ if (diskMigrated_.load(std::memory_order_relaxed)) {
330
+ return;
331
+ }
310
332
  runLegacyDiskMigrationCutover(
311
333
  NitroDiskDefaults(),
312
334
  [NSUserDefaults standardUserDefaults]
313
335
  );
314
336
  migrateSuiteIntoSqlite();
337
+ diskMigrated_.store(true, std::memory_order_release);
315
338
  }
316
- IOSStorageAdapterCpp::~IOSStorageAdapterCpp() {}
317
339
 
318
340
  #ifdef NITRO_STORAGE_TESTING
319
341
  void resetSqliteDiskStoreForTesting() {
@@ -324,11 +346,24 @@ void resetSqliteDiskStoreForTesting() {
324
346
  [files removeItemAtPath:[path stringByAppendingString:@"-wal"] error:nil];
325
347
  [files removeItemAtPath:[path stringByAppendingString:@"-shm"] error:nil];
326
348
  }
349
+
350
+ void resetSharedSqliteDiskStoreForTesting() {
351
+ SqliteDiskStore::resetShared();
352
+ }
353
+
354
+ bool sqliteDiskStoreHasKeyForTesting(const std::string& key) {
355
+ return NitroSqliteDiskStore().has(key);
356
+ }
357
+
358
+ std::string diskStorePathForTesting() {
359
+ return NitroDiskStorePath();
360
+ }
327
361
  #endif
328
362
 
329
363
  // --- Disk ---
330
364
 
331
365
  void IOSStorageAdapterCpp::setDisk(const std::string& key, const std::string& value) {
366
+ ensureDiskMigrated();
332
367
  NitroSqliteDiskStore().set(key, value);
333
368
  NSString* nsKey = nsStringFromStdString(key);
334
369
  NSUserDefaults* defaults = NitroDiskDefaults();
@@ -340,6 +375,7 @@ void IOSStorageAdapterCpp::setDisk(const std::string& key, const std::string& va
340
375
  }
341
376
 
342
377
  std::optional<std::string> IOSStorageAdapterCpp::getDisk(const std::string& key) {
378
+ ensureDiskMigrated();
343
379
  if (auto stored = NitroSqliteDiskStore().get(key)) {
344
380
  return stored;
345
381
  }
@@ -352,6 +388,7 @@ std::optional<std::string> IOSStorageAdapterCpp::getDisk(const std::string& key)
352
388
  }
353
389
 
354
390
  void IOSStorageAdapterCpp::deleteDisk(const std::string& key) {
391
+ ensureDiskMigrated();
355
392
  NitroSqliteDiskStore().remove(key);
356
393
  NSString* nsKey = nsStringFromStdString(key);
357
394
  NSUserDefaults* defaults = NitroDiskDefaults();
@@ -364,6 +401,7 @@ void IOSStorageAdapterCpp::deleteDisk(const std::string& key) {
364
401
  }
365
402
 
366
403
  bool IOSStorageAdapterCpp::hasDisk(const std::string& key) {
404
+ ensureDiskMigrated();
367
405
  if (NitroSqliteDiskStore().has(key)) {
368
406
  return true;
369
407
  }
@@ -380,6 +418,7 @@ bool IOSStorageAdapterCpp::hasDisk(const std::string& key) {
380
418
  }
381
419
 
382
420
  std::vector<std::string> IOSStorageAdapterCpp::getAllKeysDisk() {
421
+ ensureDiskMigrated();
383
422
  std::unordered_set<std::string> combined;
384
423
  for (const auto& key : NitroSqliteDiskStore().getAllKeys()) {
385
424
  combined.insert(key);
@@ -407,6 +446,7 @@ std::vector<std::string> IOSStorageAdapterCpp::getAllKeysDisk() {
407
446
  }
408
447
 
409
448
  std::vector<std::string> IOSStorageAdapterCpp::getKeysByPrefixDisk(const std::string& prefix) {
449
+ ensureDiskMigrated();
410
450
  std::unordered_set<std::string> combined;
411
451
  for (const auto& key : NitroSqliteDiskStore().getKeysByPrefix(prefix)) {
412
452
  combined.insert(key);
@@ -425,6 +465,7 @@ std::vector<std::string> IOSStorageAdapterCpp::getKeysByPrefixDisk(const std::st
425
465
  }
426
466
 
427
467
  size_t IOSStorageAdapterCpp::sizeDisk() {
468
+ ensureDiskMigrated();
428
469
  return getAllKeysDisk().size();
429
470
  }
430
471
 
@@ -432,6 +473,7 @@ void IOSStorageAdapterCpp::setDiskBatch(
432
473
  const std::vector<std::string>& keys,
433
474
  const std::vector<std::string>& values
434
475
  ) {
476
+ ensureDiskMigrated();
435
477
  NitroSqliteDiskStore().setBatch(keys, values);
436
478
  NSUserDefaults* defaults = NitroDiskDefaults();
437
479
  NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
@@ -451,6 +493,7 @@ void IOSStorageAdapterCpp::setDiskBatch(
451
493
  std::vector<std::optional<std::string>> IOSStorageAdapterCpp::getDiskBatch(
452
494
  const std::vector<std::string>& keys
453
495
  ) {
496
+ ensureDiskMigrated();
454
497
  std::vector<std::optional<std::string>> results;
455
498
  results.reserve(keys.size());
456
499
  for (const auto& key : keys) {
@@ -460,6 +503,7 @@ std::vector<std::optional<std::string>> IOSStorageAdapterCpp::getDiskBatch(
460
503
  }
461
504
 
462
505
  void IOSStorageAdapterCpp::deleteDiskBatch(const std::vector<std::string>& keys) {
506
+ ensureDiskMigrated();
463
507
  NitroSqliteDiskStore().removeBatch(keys);
464
508
  for (const auto& key : keys) {
465
509
  NSString* nsKey = nsStringFromStdString(key);
@@ -474,6 +518,7 @@ void IOSStorageAdapterCpp::deleteDiskBatch(const std::vector<std::string>& keys)
474
518
  }
475
519
 
476
520
  void IOSStorageAdapterCpp::clearDisk() {
521
+ ensureDiskMigrated();
477
522
  NitroSqliteDiskStore().clear();
478
523
  NSUserDefaults* defaults = NitroDiskDefaults();
479
524
  NSDictionary<NSString*, id>* entries = [defaults persistentDomainForName:kDiskSuiteName] ?: @{};
@@ -527,6 +572,19 @@ static void throwIfDeleteFailed(OSStatus status, const std::string& operation) {
527
572
  throw keychainStatusError(status, operation);
528
573
  }
529
574
 
575
+ static void throwIfLookupFailed(OSStatus status, const std::string& operation) {
576
+ if (status == errSecSuccess || status == errSecItemNotFound) {
577
+ return;
578
+ }
579
+ if (status == errSecInteractionNotAllowed) {
580
+ throw taggedStorageError(
581
+ "keychain_locked",
582
+ "NitroStorage: Keychain is locked (errSecInteractionNotAllowed) during " + operation
583
+ );
584
+ }
585
+ throw keychainStatusError(status, operation);
586
+ }
587
+
530
588
  static BiometricKeychainSnapshot captureBiometricValue(
531
589
  NSString* nsKey,
532
590
  NSString* group
@@ -601,7 +659,8 @@ static void setSecureValue(
601
659
  ) {
602
660
  NSMutableDictionary* query = baseKeychainQuery(nsKey, kKeychainService, group);
603
661
  NSDictionary* updateAttributes = @{
604
- (__bridge id)kSecValueData: data
662
+ (__bridge id)kSecValueData: data,
663
+ (__bridge id)kSecAttrAccessible: (__bridge id)accessControlAttr(accessControlLevel)
605
664
  };
606
665
 
607
666
  OSStatus status = SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)updateAttributes);
@@ -728,6 +787,10 @@ static std::vector<std::string> keychainAccountsForService(NSString* service, NS
728
787
  "The item is not accessible until the device is unlocked."
729
788
  );
730
789
  }
790
+ if (status != errSecSuccess && status != errSecItemNotFound) {
791
+ if (result) CFRelease(result);
792
+ throw keychainStatusError(status, "Secure key enumeration");
793
+ }
731
794
  if (status == errSecSuccess && result) {
732
795
  id items = (__bridge_transfer id)result;
733
796
  NSArray* itemArray = nil;
@@ -798,12 +861,19 @@ bool IOSStorageAdapterCpp::hasSecure(const std::string& key) {
798
861
  NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
799
862
  NSMutableDictionary* secureQuery = baseKeychainQuery(nsKey, kKeychainService, group);
800
863
  disableKeychainInteraction(secureQuery);
801
- if (SecItemCopyMatching((__bridge CFDictionaryRef)secureQuery, NULL) == errSecSuccess) {
864
+ const OSStatus secureStatus = SecItemCopyMatching((__bridge CFDictionaryRef)secureQuery, NULL);
865
+ if (secureStatus == errSecSuccess) {
802
866
  return true;
803
867
  }
868
+ throwIfLookupFailed(secureStatus, "Secure has");
804
869
  NSMutableDictionary* biometricQuery = baseKeychainQuery(nsKey, kBiometricKeychainService, group);
805
870
  disableKeychainInteraction(biometricQuery);
806
- return SecItemCopyMatching((__bridge CFDictionaryRef)biometricQuery, NULL) == errSecSuccess;
871
+ const OSStatus biometricStatus = SecItemCopyMatching((__bridge CFDictionaryRef)biometricQuery, NULL);
872
+ if (biometricStatus == errSecSuccess || biometricStatus == errSecInteractionNotAllowed) {
873
+ return true;
874
+ }
875
+ throwIfLookupFailed(biometricStatus, "Secure has");
876
+ return false;
807
877
  }
808
878
 
809
879
  std::vector<std::string> IOSStorageAdapterCpp::getAllKeysSecure() {
@@ -852,12 +922,16 @@ void IOSStorageAdapterCpp::setSecureBatch(
852
922
  }
853
923
  NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
854
924
  for (size_t i = 0; i < keys.size() && i < values.size(); ++i) {
855
- setSecureValue(
856
- nsStringFromStdString(keys[i]),
857
- nsDataFromStdString(values[i]),
858
- group,
859
- accessControlLevel
860
- );
925
+ try {
926
+ setSecureValue(
927
+ nsStringFromStdString(keys[i]),
928
+ nsDataFromStdString(values[i]),
929
+ group,
930
+ accessControlLevel
931
+ );
932
+ } catch (const std::exception& error) {
933
+ throw PartialBatchError(i, error.what());
934
+ }
861
935
  markSecureKeySet(keys[i]);
862
936
  }
863
937
  }
@@ -886,10 +960,14 @@ void IOSStorageAdapterCpp::deleteSecureBatch(const std::vector<std::string>& key
886
960
  groupStr = keychainAccessGroup_;
887
961
  }
888
962
  NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
889
- for (const auto& key : keys) {
890
- deleteSecureValue(nsStringFromStdString(key), group);
891
- markSecureKeyRemoved(key);
892
- markBiometricKeyRemoved(key);
963
+ for (size_t i = 0; i < keys.size(); ++i) {
964
+ try {
965
+ deleteSecureValue(nsStringFromStdString(keys[i]), group);
966
+ } catch (const std::exception& error) {
967
+ throw PartialBatchError(i, error.what());
968
+ }
969
+ markSecureKeyRemoved(keys[i]);
970
+ markBiometricKeyRemoved(keys[i]);
893
971
  }
894
972
  }
895
973
 
@@ -6,18 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.DEFAULT_SECURE_WRITES_ASYNC = void 0;
7
7
  exports.resolveNativeWriteBuffering = resolveNativeWriteBuffering;
8
8
  exports.resolveWebWriteBuffering = resolveWebWriteBuffering;
9
+ var _webBackendContract = require("./web-backend-contract");
9
10
  function resolveWebWriteBuffering(diskBackendName, secureBackendName) {
10
11
  return {
11
- disk: isIndexedDBWebBackendByName(diskBackendName),
12
- secure: isIndexedDBWebBackendByName(secureBackendName)
12
+ disk: (0, _webBackendContract.isIndexedDBBackendName)(diskBackendName),
13
+ secure: (0, _webBackendContract.isIndexedDBBackendName)(secureBackendName)
13
14
  };
14
15
  }
15
- function isIndexedDBWebBackendByName(backendName) {
16
- if (!backendName) {
17
- return false;
18
- }
19
- return backendName.startsWith("indexeddb:");
20
- }
21
16
  const DEFAULT_SECURE_WRITES_ASYNC = exports.DEFAULT_SECURE_WRITES_ASYNC = false;
22
17
  function resolveNativeWriteBuffering(platform, secureWritesAsync = DEFAULT_SECURE_WRITES_ASYNC) {
23
18
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["resolveWebWriteBuffering","diskBackendName","secureBackendName","disk","isIndexedDBWebBackendByName","secure","backendName","startsWith","DEFAULT_SECURE_WRITES_ASYNC","exports","resolveNativeWriteBuffering","platform","secureWritesAsync"],"sourceRoot":"../../src","sources":["capabilities.ts"],"mappings":";;;;;;;;AAUO,SAASA,wBAAwBA,CACtCC,eAAmC,EACnCC,iBAAqC,EACrB;EAChB,OAAO;IACLC,IAAI,EAAEC,2BAA2B,CAACH,eAAe,CAAC;IAClDI,MAAM,EAAED,2BAA2B,CAACF,iBAAiB;EACvD,CAAC;AACH;AAEA,SAASE,2BAA2BA,CAACE,WAA+B,EAAW;EAC7E,IAAI,CAACA,WAAW,EAAE;IAChB,OAAO,KAAK;EACd;EACA,OAAOA,WAAW,CAACC,UAAU,CAAC,YAAY,CAAC;AAC7C;AAEO,MAAMC,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,KAAK;AAEzC,SAASE,2BAA2BA,CACzCC,QAA2B,EAC3BC,iBAA0B,GAAGJ,2BAA2B,EACxC;EAChB,OAAO;IACLL,IAAI,EAAE,IAAI;IACVE,MAAM,EAAEM,QAAQ,KAAK,SAAS,GAAGC,iBAAiB,GAAG;EACvD,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_webBackendContract","require","resolveWebWriteBuffering","diskBackendName","secureBackendName","disk","isIndexedDBBackendName","secure","DEFAULT_SECURE_WRITES_ASYNC","exports","resolveNativeWriteBuffering","platform","secureWritesAsync"],"sourceRoot":"../../src","sources":["capabilities.ts"],"mappings":";;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAYO,SAASC,wBAAwBA,CACtCC,eAAmC,EACnCC,iBAAqC,EACrB;EAChB,OAAO;IACLC,IAAI,EAAE,IAAAC,0CAAsB,EAACH,eAAe,CAAC;IAC7CI,MAAM,EAAE,IAAAD,0CAAsB,EAACF,iBAAiB;EAClD,CAAC;AACH;AAEO,MAAMI,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,KAAK;AAEzC,SAASE,2BAA2BA,CACzCC,QAA2B,EAC3BC,iBAA0B,GAAGJ,2BAA2B,EACxC;EAChB,OAAO;IACLH,IAAI,EAAE,IAAI;IACVE,MAAM,EAAEI,QAAQ,KAAK,SAAS,GAAGC,iBAAiB,GAAG;EACvD,CAAC;AACH","ignoreList":[]}
@@ -21,13 +21,14 @@ Object.defineProperty(exports, "StorageScope", {
21
21
  return _Storage.StorageScope;
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "createIndexedDBBackend", {
24
+ exports.createStorageItem = exports.createSetItem = exports.createSecureAuthStorage = exports.createIndexedDBBackend = void 0;
25
+ Object.defineProperty(exports, "describeWebBackendCapabilities", {
25
26
  enumerable: true,
26
27
  get: function () {
27
- return _indexeddbBackend.createIndexedDBBackend;
28
+ return _webBackendContract.describeWebBackendCapabilities;
28
29
  }
29
30
  });
30
- exports.diskItem = exports.createStorageItem = exports.createSetItem = exports.createSecureAuthStorage = void 0;
31
+ exports.diskItem = void 0;
31
32
  exports.flushWebStorageBackends = flushWebStorageBackends;
32
33
  exports.getBatch = void 0;
33
34
  Object.defineProperty(exports, "getStorageErrorCode", {
@@ -38,6 +39,12 @@ Object.defineProperty(exports, "getStorageErrorCode", {
38
39
  });
39
40
  exports.getWebDiskStorageBackend = getWebDiskStorageBackend;
40
41
  exports.getWebSecureStorageBackend = getWebSecureStorageBackend;
42
+ Object.defineProperty(exports, "isIndexedDBWebBackend", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _webBackendContract.isIndexedDBWebBackend;
46
+ }
47
+ });
41
48
  Object.defineProperty(exports, "isKeychainLockedError", {
42
49
  enumerable: true,
43
50
  get: function () {
@@ -94,14 +101,15 @@ Object.defineProperty(exports, "useStorageValue", {
94
101
  var _reactNative = require("react-native");
95
102
  var _reactNativeNitroModules = require("react-native-nitro-modules");
96
103
  var _capabilities = require("./capabilities");
104
+ var _indexeddbBackend = require("./indexeddb-backend");
97
105
  var _internal = require("./internal");
98
106
  var _shared = require("./shared");
99
107
  var _storageCore = require("./storage-core");
100
108
  var _Storage = require("./Storage.types");
101
109
  var _migration = require("./migration");
102
110
  var _storageRuntime = require("./storage-runtime");
111
+ var _webBackendContract = require("./web-backend-contract");
103
112
  var _storageHooks = require("./storage-hooks");
104
- var _indexeddbBackend = require("./indexeddb-backend");
105
113
  let _storageModule = null;
106
114
  function getStorageModule() {
107
115
  if (!_storageModule) {
@@ -197,6 +205,10 @@ function buildNativeAdapter(internals) {
197
205
  (0, _shared.notifyAllListeners)(internals.getScopedListeners(scope));
198
206
  return;
199
207
  }
208
+ if (consumeSuppressedNativeEvent(scope, key)) {
209
+ (0, _shared.notifyKeyListeners)(internals.getScopedListeners(scope), key);
210
+ return;
211
+ }
200
212
  const oldValue = scope === _Storage.StorageScope.Secure ? undefined : internals.readCachedRawValue(scope, key);
201
213
  if (scope === _Storage.StorageScope.Secure) {
202
214
  internals.invalidateRawCache(scope, key);
@@ -204,9 +216,6 @@ function buildNativeAdapter(internals) {
204
216
  internals.cacheRawValue(scope, key, value);
205
217
  }
206
218
  (0, _shared.notifyKeyListeners)(internals.getScopedListeners(scope), key);
207
- if (consumeSuppressedNativeEvent(scope, key)) {
208
- return;
209
- }
210
219
  internals.emitKeyChange(scope, key, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), value === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(value), "external", "native");
211
220
  });
212
221
  scopedUnsubscribers.set(scope, typeof unsubscribe === "function" ? unsubscribe : () => {});
@@ -271,7 +280,7 @@ const storage = exports.storage = {
271
280
  getCapabilities: () => ({
272
281
  platform: "native",
273
282
  backend: {
274
- disk: "platform-preferences",
283
+ disk: "sqlite",
275
284
  secure: nativeSecureBackend
276
285
  },
277
286
  writeBuffering: (0, _capabilities.resolveNativeWriteBuffering)(_reactNative.Platform.OS === "android" ? "android" : "ios", secureWritesBuffered),
@@ -326,4 +335,10 @@ function getWebDiskStorageBackend() {
326
335
  async function flushWebStorageBackends() {
327
336
  // Native platforms do not use web storage backends.
328
337
  }
338
+ /**
339
+ * @deprecated Import `createIndexedDBBackend` from
340
+ * `react-native-nitro-storage/indexeddb-backend` instead. The root export
341
+ * will be removed in a future minor release.
342
+ */
343
+ const createIndexedDBBackend = exports.createIndexedDBBackend = _indexeddbBackend.createIndexedDBBackend;
329
344
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeNitroModules","_capabilities","_internal","_shared","_storageCore","_Storage","_migration","_storageRuntime","_storageHooks","_indexeddbBackend","_storageModule","getStorageModule","NitroModules","createHybridObject","nativeSecureBackend","nativeBackend","get","key","scope","set","value","remove","clear","has","getAllKeys","getKeysByPrefix","prefix","size","setBatch","keys","values","getBatch","removeBatch","removeByPrefix","setSecureAccessControl","level","getSecureBiometric","setSecureBiometricWithLevel","deleteSecureBiometric","hasSecureBiometric","clearSecureBiometric","buildNativeAdapter","internals","scopedUnsubscribers","Map","suppressedNativeEvents","StorageScope","Disk","Secure","suppressNativeEvent","suppressedEvents","consumeSuppressedNativeEvent","count","undefined","delete","ensureNativeScopeSubscription","unsubscribe","addOnChange","clearAllPendingDiskWrites","clearPendingDiskWrite","clearAllPendingSecureWrites","clearPendingSecureWrite","clearScopeRawCache","notifyAllListeners","getScopedListeners","oldValue","readCachedRawValue","invalidateRawCache","cacheRawValue","notifyKeyListeners","emitKeyChange","unescapeCollidingRawValue","maybeCleanupNativeScopeSubscription","listeners","hasScopeEventListeners","hasEventObserver","backend","changeSource","applyAccessControlOnSecureRawWrite","ensureScopeSubscription","maybeCleanupScopeSubscription","onWillEmitChanges","operation","source","Memory","forEach","getSecureMetadataProfile","encrypted","hardwareBacked","core","createStorageCore","secureWritesBuffered","DEFAULT_SECURE_WRITES_ASYNC","storage","exports","setAccessControl","measureOperation","assertAccessControlLevel","setSecureDefaultAccessControl","setSecureWritesAsync","enabled","setKeychainAccessGroup","group","getCapabilities","platform","disk","secure","writeBuffering","resolveNativeWriteBuffering","Platform","OS","errorClassification","getSecurityCapabilities","secureStorage","accessControl","keychainAccessGroup","biometric","prompt","biometryOnly","biometryOrPasscode","metadata","perKey","listsWithoutValues","persistsTimestamps","createStorageItem","memoryItem","diskItem","secureItem","createSetItem","registerMigration","migrateToLatest","runTransaction","createSecureAuthStorage","setWebSecureStorageBackend","_backend","getWebSecureStorageBackend","setWebDiskStorageBackend","getWebDiskStorageBackend","flushWebStorageBackends"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAIA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAMA,IAAAK,YAAA,GAAAL,OAAA;AAYA,IAAAM,QAAA,GAAAN,OAAA;AA4BA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AA6UA,IAAAS,aAAA,GAAAT,OAAA;AAOA,IAAAU,iBAAA,GAAAV,OAAA;AAhTA,IAAIW,cAA8B,GAAG,IAAI;AAEzC,SAASC,gBAAgBA,CAAA,EAAY;EACnC,IAAI,CAACD,cAAc,EAAE;IACnBA,cAAc,GAAGE,qCAAY,CAACC,kBAAkB,CAAU,SAAS,CAAC;EACtE;EACA,OAAOH,cAAc;AACvB;AAEA,MAAMI,mBAAmB,GAAG,yBAAyB;AAErD,MAAMC,aAAiC,GAAG;EACxCC,GAAG,EAAEA,CAACC,GAAG,EAAEC,KAAK,KAAKP,gBAAgB,CAAC,CAAC,CAACK,GAAG,CAACC,GAAG,EAAEC,KAAK,CAAC;EACvDC,GAAG,EAAEA,CAACF,GAAG,EAAEG,KAAK,EAAEF,KAAK,KAAK;IAC1BP,gBAAgB,CAAC,CAAC,CAACQ,GAAG,CAACF,GAAG,EAAEG,KAAK,EAAEF,KAAK,CAAC;EAC3C,CAAC;EACDG,MAAM,EAAEA,CAACJ,GAAG,EAAEC,KAAK,KAAK;IACtBP,gBAAgB,CAAC,CAAC,CAACU,MAAM,CAACJ,GAAG,EAAEC,KAAK,CAAC;EACvC,CAAC;EACDI,KAAK,EAAGJ,KAAK,IAAK;IAChBP,gBAAgB,CAAC,CAAC,CAACW,KAAK,CAACJ,KAAK,CAAC;EACjC,CAAC;EACDK,GAAG,EAAEA,CAACN,GAAG,EAAEC,KAAK,KAAKP,gBAAgB,CAAC,CAAC,CAACY,GAAG,CAACN,GAAG,EAAEC,KAAK,CAAC;EACvDM,UAAU,EAAGN,KAAK,IAAKP,gBAAgB,CAAC,CAAC,CAACa,UAAU,CAACN,KAAK,CAAC,IAAI,EAAE;EACjEO,eAAe,EAAEA,CAACC,MAAM,EAAER,KAAK,KAC7BP,gBAAgB,CAAC,CAAC,CAACc,eAAe,CAACC,MAAM,EAAER,KAAK,CAAC,IAAI,EAAE;EACzDS,IAAI,EAAGT,KAAK,IAAKP,gBAAgB,CAAC,CAAC,CAACgB,IAAI,CAACT,KAAK,CAAC;EAC/CU,QAAQ,EAAEA,CAACC,IAAI,EAAEC,MAAM,EAAEZ,KAAK,KAAK;IACjCP,gBAAgB,CAAC,CAAC,CAACiB,QAAQ,CAACC,IAAI,EAAEC,MAAM,EAAEZ,KAAK,CAAC;EAClD,CAAC;EACDa,QAAQ,EAAEA,CAACF,IAAI,EAAEX,KAAK,KAAKP,gBAAgB,CAAC,CAAC,CAACoB,QAAQ,CAACF,IAAI,EAAEX,KAAK,CAAC,IAAI,EAAE;EACzEc,WAAW,EAAEA,CAACH,IAAI,EAAEX,KAAK,KAAK;IAC5BP,gBAAgB,CAAC,CAAC,CAACqB,WAAW,CAACH,IAAI,EAAEX,KAAK,CAAC;EAC7C,CAAC;EACDe,cAAc,EAAEA,CAACP,MAAM,EAAER,KAAK,KAAK;IACjCP,gBAAgB,CAAC,CAAC,CAACsB,cAAc,CAACP,MAAM,EAAER,KAAK,CAAC;EAClD,CAAC;EACDgB,sBAAsB,EAAGC,KAAK,IAAK;IACjCxB,gBAAgB,CAAC,CAAC,CAACuB,sBAAsB,CAACC,KAAK,CAAC;EAClD,CAAC;EACDC,kBAAkB,EAAGnB,GAAG,IAAKN,gBAAgB,CAAC,CAAC,CAACyB,kBAAkB,CAACnB,GAAG,CAAC;EACvEoB,2BAA2B,EAAEA,CAACpB,GAAG,EAAEG,KAAK,EAAEe,KAAK,KAAK;IAClDxB,gBAAgB,CAAC,CAAC,CAAC0B,2BAA2B,CAACpB,GAAG,EAAEG,KAAK,EAAEe,KAAK,CAAC;EACnE,CAAC;EACDG,qBAAqB,EAAGrB,GAAG,IAAK;IAC9BN,gBAAgB,CAAC,CAAC,CAAC2B,qBAAqB,CAACrB,GAAG,CAAC;EAC/C,CAAC;EACDsB,kBAAkB,EAAGtB,GAAG,IAAKN,gBAAgB,CAAC,CAAC,CAAC4B,kBAAkB,CAACtB,GAAG,CAAC;EACvEuB,oBAAoB,EAAEA,CAAA,KAAM;IAC1B7B,gBAAgB,CAAC,CAAC,CAAC6B,oBAAoB,CAAC,CAAC;EAC3C;AACF,CAAC;AAED,SAASC,kBAAkBA,CACzBC,SAA+B,EACX;EACpB,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAA6B,CAAC;EACjE,MAAMC,sBAAmE,GAAG;IAC1E,CAACC,qBAAY,CAACC,IAAI,GAAG,IAAIH,GAAG,CAAC,CAAC;IAC9B,CAACE,qBAAY,CAACE,MAAM,GAAG,IAAIJ,GAAG,CAAC;EACjC,CAAC;EAED,SAASK,mBAAmBA,CAAC/B,KAAqB,EAAED,GAAW,EAAQ;IACrE,MAAMiC,gBAAgB,GAAGL,sBAAsB,CAAC3B,KAAK,CAAC;IACtDgC,gBAAgB,CAAC/B,GAAG,CAACF,GAAG,EAAE,CAACiC,gBAAgB,CAAClC,GAAG,CAACC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjE;EAEA,SAASkC,4BAA4BA,CACnCjC,KAAqB,EACrBD,GAAW,EACF;IACT,MAAMiC,gBAAgB,GAAGL,sBAAsB,CAAC3B,KAAK,CAAC;IACtD,MAAMkC,KAAK,GAAGF,gBAAgB,CAAClC,GAAG,CAACC,GAAG,CAAC;IACvC,IAAImC,KAAK,KAAKC,SAAS,EAAE;MACvB,OAAO,KAAK;IACd;IACA,IAAID,KAAK,IAAI,CAAC,EAAE;MACdF,gBAAgB,CAACI,MAAM,CAACrC,GAAG,CAAC;IAC9B,CAAC,MAAM;MACLiC,gBAAgB,CAAC/B,GAAG,CAACF,GAAG,EAAEmC,KAAK,GAAG,CAAC,CAAC;IACtC;IACA,OAAO,IAAI;EACb;EAEA,SAASG,6BAA6BA,CAACrC,KAAqB,EAAQ;IAClE,IAAIyB,mBAAmB,CAACpB,GAAG,CAACL,KAAK,CAAC,EAAE;MAClC;IACF;IAEA,MAAMsC,WAAW,GAAG7C,gBAAgB,CAAC,CAAC,CAAC8C,WAAW,CAACvC,KAAK,EAAE,CAACD,GAAG,EAAEG,KAAK,KAAK;MACxE,IAAIF,KAAK,KAAK4B,qBAAY,CAACC,IAAI,EAAE;QAC/B,IAAI9B,GAAG,KAAK,EAAE,EAAE;UACdyB,SAAS,CAACgB,yBAAyB,CAAC,CAAC;QACvC,CAAC,MAAM;UACLhB,SAAS,CAACiB,qBAAqB,CAAC1C,GAAG,CAAC;QACtC;MACF;MAEA,IAAIC,KAAK,KAAK4B,qBAAY,CAACE,MAAM,EAAE;QACjC,IAAI/B,GAAG,KAAK,EAAE,EAAE;UACdyB,SAAS,CAACkB,2BAA2B,CAAC,CAAC;QACzC,CAAC,MAAM;UACLlB,SAAS,CAACmB,uBAAuB,CAAC5C,GAAG,CAAC;QACxC;MACF;MAEA,IAAIA,GAAG,KAAK,EAAE,EAAE;QACdyB,SAAS,CAACoB,kBAAkB,CAAC5C,KAAK,CAAC;QACnC,IAAA6C,0BAAkB,EAACrB,SAAS,CAACsB,kBAAkB,CAAC9C,KAAK,CAAC,CAAC;QACvD;MACF;MAEA,MAAM+C,QAAQ,GACZ/C,KAAK,KAAK4B,qBAAY,CAACE,MAAM,GACzBK,SAAS,GACTX,SAAS,CAACwB,kBAAkB,CAAChD,KAAK,EAAED,GAAG,CAAC;MAC9C,IAAIC,KAAK,KAAK4B,qBAAY,CAACE,MAAM,EAAE;QACjCN,SAAS,CAACyB,kBAAkB,CAACjD,KAAK,EAAED,GAAG,CAAC;MAC1C,CAAC,MAAM;QACLyB,SAAS,CAAC0B,aAAa,CAAClD,KAAK,EAAED,GAAG,EAAEG,KAAK,CAAC;MAC5C;MACA,IAAAiD,0BAAkB,EAAC3B,SAAS,CAACsB,kBAAkB,CAAC9C,KAAK,CAAC,EAAED,GAAG,CAAC;MAC5D,IAAIkC,4BAA4B,CAACjC,KAAK,EAAED,GAAG,CAAC,EAAE;QAC5C;MACF;MACAyB,SAAS,CAAC4B,aAAa,CACrBpD,KAAK,EACLD,GAAG,EACHgD,QAAQ,KAAKZ,SAAS,GAClBA,SAAS,GACT,IAAAkB,mCAAyB,EAACN,QAAQ,CAAC,EACvC7C,KAAK,KAAKiC,SAAS,GAAGA,SAAS,GAAG,IAAAkB,mCAAyB,EAACnD,KAAK,CAAC,EAClE,UAAU,EACV,QACF,CAAC;IACH,CAAC,CAAC;IACFuB,mBAAmB,CAACxB,GAAG,CACrBD,KAAK,EACL,OAAOsC,WAAW,KAAK,UAAU,GAAGA,WAAW,GAAG,MAAM,CAAC,CAC3D,CAAC;EACH;EAEA,SAASgB,mCAAmCA,CAACtD,KAAqB,EAAQ;IACxE,MAAMuD,SAAS,GAAG/B,SAAS,CAACsB,kBAAkB,CAAC9C,KAAK,CAAC;IACrD,IACEuD,SAAS,CAAC9C,IAAI,GAAG,CAAC,IAClBe,SAAS,CAACgC,sBAAsB,CAACxD,KAAK,CAAC,IACvCwB,SAAS,CAACiC,gBAAgB,CAAC,CAAC,EAC5B;MACA;IACF;IAEA,MAAMnB,WAAW,GAAGb,mBAAmB,CAAC3B,GAAG,CAACE,KAAK,CAAC;IAClD,IAAI,CAACsC,WAAW,EAAE;MAChB;IACF;IAEAA,WAAW,CAAC,CAAC;IACbb,mBAAmB,CAACW,MAAM,CAACpC,KAAK,CAAC;EACnC;EAEA,OAAO;IACL0D,OAAO,EAAE7D,aAAa;IACtB8D,YAAY,EAAE,QAAQ;IACtBC,kCAAkC,EAAE,IAAI;IACxCC,uBAAuB,EAAExB,6BAA6B;IACtDyB,6BAA6B,EAAER,mCAAmC;IAClES,iBAAiB,EAAEA,CAAC/D,KAAK,EAAEW,IAAI,EAAEqD,SAAS,EAAEC,MAAM,KAAK;MACrD,IACEA,MAAM,KAAK,QAAQ,IACnBD,SAAS,KAAK,UAAU,IACxBhE,KAAK,KAAK4B,qBAAY,CAACsC,MAAM,IAC7BzC,mBAAmB,CAACpB,GAAG,CAACL,KAAK,CAAC,EAC9B;QACAW,IAAI,CAACwD,OAAO,CAAEpE,GAAG,IAAK;UACpBgC,mBAAmB,CAAC/B,KAAK,EAAED,GAAG,CAAC;QACjC,CAAC,CAAC;MACJ;IACF,CAAC;IACDqE,wBAAwB,EAAEA,CAAA,MAAO;MAC/BV,OAAO,EAAE9D,mBAAmB;MAC5ByE,SAAS,EAAE,WAAW;MACtBC,cAAc,EAAE;IAClB,CAAC;EACH,CAAC;AACH;AAEA,MAAMC,IAAI,GAAG,IAAAC,8BAAiB,EAACjD,kBAAkB,CAAC;AAClD,MAAM;EAAEC;AAAU,CAAC,GAAG+C,IAAI;AAE1B,IAAIE,oBAAoB,GAAGC,yCAA2B;AAE/C,MAAMC,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG;EACrB,GAAGJ,IAAI,CAACI,OAAO;EACfE,gBAAgB,EAAG5D,KAAoB,IAAK;IAC1CO,SAAS,CAACsD,gBAAgB,CACxB,0BAA0B,EAC1BlD,qBAAY,CAACE,MAAM,EACnB,MAAM;MACJ,IAAAiD,gCAAwB,EAAC9D,KAAK,CAAC;MAC/BO,SAAS,CAACwD,6BAA6B,CAAC/D,KAAK,CAAC;MAC9CxB,gBAAgB,CAAC,CAAC,CAACuB,sBAAsB,CAACC,KAAK,CAAC;IAClD,CACF,CAAC;EACH,CAAC;EACDgE,oBAAoB,EAAGC,OAAgB,IAAK;IAC1C1D,SAAS,CAACsD,gBAAgB,CACxB,8BAA8B,EAC9BlD,qBAAY,CAACE,MAAM,EACnB,MAAM;MACJrC,gBAAgB,CAAC,CAAC,CAACwF,oBAAoB,CAACC,OAAO,CAAC;MAChDT,oBAAoB,GAAGS,OAAO;IAChC,CACF,CAAC;EACH,CAAC;EACDC,sBAAsB,EAAGC,KAAa,IAAK;IACzC5D,SAAS,CAACsD,gBAAgB,CACxB,gCAAgC,EAChClD,qBAAY,CAACE,MAAM,EACnB,MAAM;MACJrC,gBAAgB,CAAC,CAAC,CAAC0F,sBAAsB,CAACC,KAAK,CAAC;IAClD,CACF,CAAC;EACH,CAAC;EACDC,eAAe,EAAEA,CAAA,MAA4B;IAC3CC,QAAQ,EAAE,QAAQ;IAClB5B,OAAO,EAAE;MACP6B,IAAI,EAAE,sBAAsB;MAC5BC,MAAM,EAAE5F;IACV,CAAC;IACD6F,cAAc,EAAE,IAAAC,yCAA2B,EACzCC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK,EAC7CnB,oBACF,CAAC;IACDoB,mBAAmB,EAAE;EACvB,CAAC,CAAC;EACFC,uBAAuB,EAAEA,CAAA,MAA6B;IACpDR,QAAQ,EAAE,QAAQ;IAClBS,aAAa,EAAE;MACbrC,OAAO,EAAE9D,mBAAmB;MAC5ByE,SAAS,EAAE,WAAW;MACtB2B,aAAa,EAAE,SAAS;MACxBC,mBAAmB,EAAE,SAAS;MAC9B3B,cAAc,EAAE;IAClB,CAAC;IACD4B,SAAS,EAAE;MACTvB,OAAO,EAAE,SAAS;MAClBwB,MAAM,EAAE,SAAS;MACjBC,YAAY,EAAE,SAAS;MACvBC,kBAAkB,EAAE;IACtB,CAAC;IACDC,QAAQ,EAAE;MACRC,MAAM,EAAE,IAAI;MACZC,kBAAkB,EAAE,IAAI;MACxBC,kBAAkB,EAAE;IACtB;EACF,CAAC;AACH,CAAC;AAEM,MAAMC,iBAAiB,GAAA9B,OAAA,CAAA8B,iBAAA,GAAGnC,IAAI,CAACmC,iBAAiB;AAChD,MAAMC,UAAU,GAAA/B,OAAA,CAAA+B,UAAA,GAAGpC,IAAI,CAACoC,UAAU;AAClC,MAAMC,QAAQ,GAAAhC,OAAA,CAAAgC,QAAA,GAAGrC,IAAI,CAACqC,QAAQ;AAC9B,MAAMC,UAAU,GAAAjC,OAAA,CAAAiC,UAAA,GAAGtC,IAAI,CAACsC,UAAU;AAClC,MAAMC,aAAa,GAAAlC,OAAA,CAAAkC,aAAA,GAAGvC,IAAI,CAACuC,aAAa;AACxC,MAAMjG,QAAQ,GAAA+D,OAAA,CAAA/D,QAAA,GAAG0D,IAAI,CAAC1D,QAAQ;AAC9B,MAAMH,QAAQ,GAAAkE,OAAA,CAAAlE,QAAA,GAAG6D,IAAI,CAAC7D,QAAQ;AAC9B,MAAMI,WAAW,GAAA8D,OAAA,CAAA9D,WAAA,GAAGyD,IAAI,CAACzD,WAAW;AACpC,MAAMiG,iBAAiB,GAAAnC,OAAA,CAAAmC,iBAAA,GAAGxC,IAAI,CAACwC,iBAAiB;AAChD,MAAMC,eAAe,GAAApC,OAAA,CAAAoC,eAAA,GAAGzC,IAAI,CAACyC,eAAe;AAC5C,MAAMC,cAAc,GAAArC,OAAA,CAAAqC,cAAA,GAAG1C,IAAI,CAAC0C,cAAc;AAC1C,MAAMC,uBAAuB,GAAAtC,OAAA,CAAAsC,uBAAA,GAAG3C,IAAI,CAAC2C,uBAAuB;AAE5D,SAASC,0BAA0BA,CACxCC,QAAkC,EAC5B;EACN;AAAA;AAGK,SAASC,0BAA0BA,CAAA,EACJ;EACpC,OAAOlF,SAAS;AAClB;AAEO,SAASmF,wBAAwBA,CACtCF,QAAgC,EAC1B;EACN;AAAA;AAGK,SAASG,wBAAwBA,CAAA,EAAsC;EAC5E,OAAOpF,SAAS;AAClB;AAEO,eAAeqF,uBAAuBA,CAAA,EAAkB;EAC7D;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeNitroModules","_capabilities","_indexeddbBackend","_internal","_shared","_storageCore","_Storage","_migration","_storageRuntime","_webBackendContract","_storageHooks","_storageModule","getStorageModule","NitroModules","createHybridObject","nativeSecureBackend","nativeBackend","get","key","scope","set","value","remove","clear","has","getAllKeys","getKeysByPrefix","prefix","size","setBatch","keys","values","getBatch","removeBatch","removeByPrefix","setSecureAccessControl","level","getSecureBiometric","setSecureBiometricWithLevel","deleteSecureBiometric","hasSecureBiometric","clearSecureBiometric","buildNativeAdapter","internals","scopedUnsubscribers","Map","suppressedNativeEvents","StorageScope","Disk","Secure","suppressNativeEvent","suppressedEvents","consumeSuppressedNativeEvent","count","undefined","delete","ensureNativeScopeSubscription","unsubscribe","addOnChange","clearAllPendingDiskWrites","clearPendingDiskWrite","clearAllPendingSecureWrites","clearPendingSecureWrite","clearScopeRawCache","notifyAllListeners","getScopedListeners","notifyKeyListeners","oldValue","readCachedRawValue","invalidateRawCache","cacheRawValue","emitKeyChange","unescapeCollidingRawValue","maybeCleanupNativeScopeSubscription","listeners","hasScopeEventListeners","hasEventObserver","backend","changeSource","applyAccessControlOnSecureRawWrite","ensureScopeSubscription","maybeCleanupScopeSubscription","onWillEmitChanges","operation","source","Memory","forEach","getSecureMetadataProfile","encrypted","hardwareBacked","core","createStorageCore","secureWritesBuffered","DEFAULT_SECURE_WRITES_ASYNC","storage","exports","setAccessControl","measureOperation","assertAccessControlLevel","setSecureDefaultAccessControl","setSecureWritesAsync","enabled","setKeychainAccessGroup","group","getCapabilities","platform","disk","secure","writeBuffering","resolveNativeWriteBuffering","Platform","OS","errorClassification","getSecurityCapabilities","secureStorage","accessControl","keychainAccessGroup","biometric","prompt","biometryOnly","biometryOrPasscode","metadata","perKey","listsWithoutValues","persistsTimestamps","createStorageItem","memoryItem","diskItem","secureItem","createSetItem","registerMigration","migrateToLatest","runTransaction","createSecureAuthStorage","setWebSecureStorageBackend","_backend","getWebSecureStorageBackend","setWebDiskStorageBackend","getWebDiskStorageBackend","flushWebStorageBackends","createIndexedDBBackend","createIndexedDBBackendFromSubpath"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -21,13 +21,7 @@ Object.defineProperty(exports, "StorageScope", {
21
21
  return _Storage.StorageScope;
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "createIndexedDBBackend", {
25
- enumerable: true,
26
- get: function () {
27
- return _indexeddbBackend.createIndexedDBBackend;
28
- }
29
- });
30
- exports.createStorageItem = exports.createSetItem = exports.createSecureAuthStorage = void 0;
24
+ exports.createStorageItem = exports.createSetItem = exports.createSecureAuthStorage = exports.createIndexedDBBackend = void 0;
31
25
  Object.defineProperty(exports, "describeWebBackendCapabilities", {
32
26
  enumerable: true,
33
27
  get: function () {
@@ -105,6 +99,7 @@ Object.defineProperty(exports, "useStorageValue", {
105
99
  }
106
100
  });
107
101
  var _capabilities = require("./capabilities");
102
+ var _indexeddbBackend = require("./indexeddb-backend");
108
103
  var _internal = require("./internal");
109
104
  var _shared = require("./shared");
110
105
  var _storageCore = require("./storage-core");
@@ -114,7 +109,6 @@ var _migration = require("./migration");
114
109
  var _storageRuntime = require("./storage-runtime");
115
110
  var _webBackendContract = require("./web-backend-contract");
116
111
  var _storageHooks = require("./storage-hooks");
117
- var _indexeddbBackend = require("./indexeddb-backend");
118
112
  const webScopeKeyIndex = {
119
113
  [_Storage.StorageScope.Disk]: new Set(),
120
114
  [_Storage.StorageScope.Secure]: new Set()
@@ -131,16 +125,21 @@ function getInternals() {
131
125
  }
132
126
  return internals;
133
127
  }
128
+ const DEFAULT_DISK_BACKEND_NAME = "localStorage:disk";
129
+ const DEFAULT_SECURE_BACKEND_NAME = "localStorage:secure";
130
+ function isSecureWebStorageKey(key) {
131
+ return key.startsWith(SECURE_WEB_PREFIX) || key.startsWith(BIOMETRIC_WEB_PREFIX);
132
+ }
134
133
  function createDefaultDiskBackend() {
135
134
  return (0, _webStorageBackend.createLocalStorageWebBackend)({
136
- name: "localStorage:disk",
137
- includeKey: key => !key.startsWith(SECURE_WEB_PREFIX) && !key.startsWith(BIOMETRIC_WEB_PREFIX)
135
+ name: DEFAULT_DISK_BACKEND_NAME,
136
+ includeKey: key => !isSecureWebStorageKey(key)
138
137
  });
139
138
  }
140
139
  function createDefaultSecureBackend() {
141
140
  return (0, _webStorageBackend.createLocalStorageWebBackend)({
142
- name: "localStorage:secure",
143
- includeKey: key => key.startsWith(SECURE_WEB_PREFIX) || key.startsWith(BIOMETRIC_WEB_PREFIX)
141
+ name: DEFAULT_SECURE_BACKEND_NAME,
142
+ includeKey: isSecureWebStorageKey
144
143
  });
145
144
  }
146
145
  let webDiskStorageBackend = createDefaultDiskBackend();
@@ -201,7 +200,9 @@ function replaceWebScopeKeyIndex(scope, keys) {
201
200
  keyIndex.clear();
202
201
  for (const key of keys) {
203
202
  if (scope === _Storage.StorageScope.Disk) {
204
- keyIndex.add(key);
203
+ if (!isSecureWebStorageKey(key)) {
204
+ keyIndex.add(key);
205
+ }
205
206
  continue;
206
207
  }
207
208
  if (key.startsWith(SECURE_WEB_PREFIX)) {
@@ -312,18 +313,28 @@ function applyExternalChangeEvent(scope, key, newValue) {
312
313
  (0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(scope), key);
313
314
  getInternals().emitKeyChange(scope, key, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), newValue === null ? undefined : (0, _internal.unescapeCollidingRawValue)(newValue), "external", "external");
314
315
  }
316
+ function usesDefaultLocalStorageBackend(scope) {
317
+ return getWebBackend(scope)?.name === (scope === _Storage.StorageScope.Disk ? DEFAULT_DISK_BACKEND_NAME : DEFAULT_SECURE_BACKEND_NAME);
318
+ }
315
319
  function handleWebStorageEvent(event) {
320
+ if (typeof globalThis.localStorage === "undefined" || event.storageArea !== globalThis.localStorage) {
321
+ return;
322
+ }
316
323
  const key = event.key;
317
324
  if (key === null) {
318
- applyExternalChangeEvent(_Storage.StorageScope.Disk, null, null);
319
- applyExternalChangeEvent(_Storage.StorageScope.Secure, null, null);
325
+ if (usesDefaultLocalStorageBackend(_Storage.StorageScope.Disk)) {
326
+ applyExternalChangeEvent(_Storage.StorageScope.Disk, null, null);
327
+ }
328
+ if (usesDefaultLocalStorageBackend(_Storage.StorageScope.Secure)) {
329
+ applyExternalChangeEvent(_Storage.StorageScope.Secure, null, null);
330
+ }
320
331
  return;
321
332
  }
322
- if (key.startsWith(SECURE_WEB_PREFIX) || key.startsWith(BIOMETRIC_WEB_PREFIX)) {
323
- applyExternalChangeEvent(_Storage.StorageScope.Secure, key, event.newValue);
333
+ const scope = isSecureWebStorageKey(key) ? _Storage.StorageScope.Secure : _Storage.StorageScope.Disk;
334
+ if (!usesDefaultLocalStorageBackend(scope)) {
324
335
  return;
325
336
  }
326
- applyExternalChangeEvent(_Storage.StorageScope.Disk, key, event.newValue);
337
+ applyExternalChangeEvent(scope, key, event.newValue);
327
338
  }
328
339
  function subscribeToBackendChanges(scope) {
329
340
  if (externalSyncUnsubscribers.has(scope)) {
@@ -334,6 +345,20 @@ function subscribeToBackendChanges(scope) {
334
345
  return;
335
346
  }
336
347
  const unsubscribe = backend.subscribe(event => {
348
+ if (webDiskStorageBackend !== webSecureStorageBackend) {
349
+ applyExternalChangeEvent(scope, event.key, event.newValue);
350
+ return;
351
+ }
352
+ if (event.key === null) {
353
+ getInternals().clearScopeRawCache(scope);
354
+ reconcileWebScopeKeyIndex(scope);
355
+ (0, _shared.notifyAllListeners)(getInternals().getScopedListeners(scope));
356
+ return;
357
+ }
358
+ const eventScope = isSecureWebStorageKey(event.key) ? _Storage.StorageScope.Secure : _Storage.StorageScope.Disk;
359
+ if (eventScope !== scope) {
360
+ return;
361
+ }
337
362
  applyExternalChangeEvent(scope, event.key, event.newValue);
338
363
  });
339
364
  externalSyncUnsubscribers.set(scope, unsubscribe);
@@ -428,7 +453,18 @@ const WebStorage = {
428
453
  }
429
454
  try {
430
455
  withWebBackendOperation(scope, "clear", backend => {
431
- backend.clear();
456
+ if (webDiskStorageBackend !== webSecureStorageBackend) {
457
+ backend.clear();
458
+ return;
459
+ }
460
+ const ownedKeys = backend.getAllKeys().filter(key => scope === _Storage.StorageScope.Secure ? isSecureWebStorageKey(key) : !isSecureWebStorageKey(key));
461
+ if (backend.removeMany) {
462
+ backend.removeMany(ownedKeys);
463
+ return;
464
+ }
465
+ ownedKeys.forEach(key => {
466
+ backend.removeItem(key);
467
+ });
432
468
  });
433
469
  } catch (error) {
434
470
  throwAfterWebMutationFailure(scope, "clear", error);
@@ -814,4 +850,10 @@ async function flushWebStorageBackends() {
814
850
  throw failure.reason;
815
851
  }
816
852
  }
853
+ /**
854
+ * @deprecated Import `createIndexedDBBackend` from
855
+ * `react-native-nitro-storage/indexeddb-backend` instead. The root export
856
+ * will be removed in a future minor release.
857
+ */
858
+ const createIndexedDBBackend = exports.createIndexedDBBackend = _indexeddbBackend.createIndexedDBBackend;
817
859
  //# sourceMappingURL=index.web.js.map