react-native-nitro-storage 0.10.4 → 0.12.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/CHANGELOG.md +86 -14
- package/README.md +149 -41
- package/SECURITY.md +16 -6
- package/android/build.gradle +0 -1
- package/android/consumer-rules.pro +0 -3
- package/android/src/main/cpp/AndroidStorageAdapterCpp.cpp +1 -4
- package/android/src/main/cpp/AndroidStorageAdapterCpp.hpp +3 -3
- package/android/src/main/java/com/nitrostorage/AndroidStorageAdapter.kt +107 -36
- package/android/src/main/java/com/nitrostorage/DiskSqliteStore.kt +32 -13
- package/app.plugin.js +51 -51
- package/cpp/bindings/HybridStorage.cpp +25 -6
- package/cpp/core/NativeStorageAdapter.hpp +14 -1
- package/cpp/core/SqliteDiskStore.cpp +105 -20
- package/cpp/core/SqliteDiskStore.hpp +11 -0
- package/docs/api-reference.md +74 -28
- package/docs/benchmarks.md +4 -12
- package/docs/mmkv-migration.md +3 -1
- package/docs/native-libraries.md +10 -4
- package/docs/secure-storage.md +26 -12
- package/docs/web-backends.md +6 -2
- package/indexeddb-backend/package.json +6 -0
- package/ios/IOSStorageAdapterCpp.hpp +4 -0
- package/ios/IOSStorageAdapterCpp.mm +96 -18
- package/lib/commonjs/capabilities.js +3 -8
- package/lib/commonjs/capabilities.js.map +1 -1
- package/lib/commonjs/index.js +23 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +63 -20
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/indexeddb-backend.js +21 -37
- package/lib/commonjs/indexeddb-backend.js.map +1 -1
- package/lib/commonjs/internal.js +6 -0
- package/lib/commonjs/internal.js.map +1 -1
- package/lib/commonjs/storage-core.js +35 -11
- package/lib/commonjs/storage-core.js.map +1 -1
- package/lib/commonjs/storage-runtime.js +1 -1
- package/lib/commonjs/storage-runtime.js.map +1 -1
- package/lib/commonjs/testing.js +68 -23
- package/lib/commonjs/testing.js.map +1 -1
- package/lib/commonjs/web-backend-contract.js +6 -2
- package/lib/commonjs/web-backend-contract.js.map +1 -1
- package/lib/module/capabilities.js +3 -8
- package/lib/module/capabilities.js.map +1 -1
- package/lib/module/index.js +14 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +63 -13
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/indexeddb-backend.js +21 -37
- package/lib/module/indexeddb-backend.js.map +1 -1
- package/lib/module/internal.js +5 -0
- package/lib/module/internal.js.map +1 -1
- package/lib/module/storage-core.js +36 -12
- package/lib/module/storage-core.js.map +1 -1
- package/lib/module/storage-runtime.js +1 -1
- package/lib/module/storage-runtime.js.map +1 -1
- package/lib/module/testing.js +59 -16
- package/lib/module/testing.js.map +1 -1
- package/lib/module/web-backend-contract.js +5 -2
- package/lib/module/web-backend-contract.js.map +1 -1
- package/lib/typescript/capabilities.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +8 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/index.web.d.ts +7 -1
- package/lib/typescript/index.web.d.ts.map +1 -1
- package/lib/typescript/indexeddb-backend.d.ts.map +1 -1
- package/lib/typescript/internal.d.ts +1 -0
- package/lib/typescript/internal.d.ts.map +1 -1
- package/lib/typescript/storage-core.d.ts +1 -1
- package/lib/typescript/storage-core.d.ts.map +1 -1
- package/lib/typescript/storage-runtime.d.ts +1 -1
- package/lib/typescript/storage-runtime.d.ts.map +1 -1
- package/lib/typescript/testing.d.ts +15 -2
- package/lib/typescript/testing.d.ts.map +1 -1
- package/lib/typescript/web-backend-contract.d.ts +1 -0
- package/lib/typescript/web-backend-contract.d.ts.map +1 -1
- package/package.json +14 -5
- package/react-native-nitro-storage.podspec +4 -2
- package/src/capabilities.ts +4 -9
- package/src/index.ts +19 -5
- package/src/index.web.ts +91 -20
- package/src/indexeddb-backend.ts +20 -42
- package/src/internal.ts +8 -0
- package/src/storage-core.ts +52 -19
- package/src/storage-runtime.ts +5 -1
- package/src/testing.ts +91 -18
- package/src/web-backend-contract.ts +6 -2
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
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 (
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
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:
|
|
12
|
-
secure:
|
|
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":["
|
|
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":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -21,13 +21,14 @@ Object.defineProperty(exports, "StorageScope", {
|
|
|
21
21
|
return _Storage.StorageScope;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
-
|
|
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
|
|
28
|
+
return _webBackendContract.describeWebBackendCapabilities;
|
|
28
29
|
}
|
|
29
30
|
});
|
|
30
|
-
exports.diskItem =
|
|
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: "
|
|
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":"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","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
|
-
|
|
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:
|
|
137
|
-
includeKey: key => !
|
|
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:
|
|
143
|
-
includeKey:
|
|
141
|
+
name: DEFAULT_SECURE_BACKEND_NAME,
|
|
142
|
+
includeKey: isSecureWebStorageKey
|
|
144
143
|
});
|
|
145
144
|
}
|
|
146
145
|
let webDiskStorageBackend = createDefaultDiskBackend();
|
|
@@ -157,7 +156,8 @@ function getWebSecureEncryptionStatus(backend) {
|
|
|
157
156
|
function createWebStorageError(scope, operation, error, backend) {
|
|
158
157
|
const backendName = getBackendName(scope, backend);
|
|
159
158
|
const message = error instanceof Error ? error.message : String(error ?? "Unknown error");
|
|
160
|
-
const
|
|
159
|
+
const tag = error instanceof Error && error.name === "QuotaExceededError" ? "[nitro-error:storage_full] " : "";
|
|
160
|
+
const wrapped = new Error(`${tag}NitroStorage(web): ${operation} failed for ${backendName}: ${message}`);
|
|
161
161
|
Object.defineProperty(wrapped, "cause", {
|
|
162
162
|
configurable: true,
|
|
163
163
|
enumerable: false,
|
|
@@ -201,7 +201,9 @@ function replaceWebScopeKeyIndex(scope, keys) {
|
|
|
201
201
|
keyIndex.clear();
|
|
202
202
|
for (const key of keys) {
|
|
203
203
|
if (scope === _Storage.StorageScope.Disk) {
|
|
204
|
-
|
|
204
|
+
if (!isSecureWebStorageKey(key)) {
|
|
205
|
+
keyIndex.add(key);
|
|
206
|
+
}
|
|
205
207
|
continue;
|
|
206
208
|
}
|
|
207
209
|
if (key.startsWith(SECURE_WEB_PREFIX)) {
|
|
@@ -312,18 +314,28 @@ function applyExternalChangeEvent(scope, key, newValue) {
|
|
|
312
314
|
(0, _shared.notifyKeyListeners)(getInternals().getScopedListeners(scope), key);
|
|
313
315
|
getInternals().emitKeyChange(scope, key, oldValue === undefined ? undefined : (0, _internal.unescapeCollidingRawValue)(oldValue), newValue === null ? undefined : (0, _internal.unescapeCollidingRawValue)(newValue), "external", "external");
|
|
314
316
|
}
|
|
317
|
+
function usesDefaultLocalStorageBackend(scope) {
|
|
318
|
+
return getWebBackend(scope)?.name === (scope === _Storage.StorageScope.Disk ? DEFAULT_DISK_BACKEND_NAME : DEFAULT_SECURE_BACKEND_NAME);
|
|
319
|
+
}
|
|
315
320
|
function handleWebStorageEvent(event) {
|
|
321
|
+
if (typeof globalThis.localStorage === "undefined" || event.storageArea !== globalThis.localStorage) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
316
324
|
const key = event.key;
|
|
317
325
|
if (key === null) {
|
|
318
|
-
|
|
319
|
-
|
|
326
|
+
if (usesDefaultLocalStorageBackend(_Storage.StorageScope.Disk)) {
|
|
327
|
+
applyExternalChangeEvent(_Storage.StorageScope.Disk, null, null);
|
|
328
|
+
}
|
|
329
|
+
if (usesDefaultLocalStorageBackend(_Storage.StorageScope.Secure)) {
|
|
330
|
+
applyExternalChangeEvent(_Storage.StorageScope.Secure, null, null);
|
|
331
|
+
}
|
|
320
332
|
return;
|
|
321
333
|
}
|
|
322
|
-
|
|
323
|
-
|
|
334
|
+
const scope = isSecureWebStorageKey(key) ? _Storage.StorageScope.Secure : _Storage.StorageScope.Disk;
|
|
335
|
+
if (!usesDefaultLocalStorageBackend(scope)) {
|
|
324
336
|
return;
|
|
325
337
|
}
|
|
326
|
-
applyExternalChangeEvent(
|
|
338
|
+
applyExternalChangeEvent(scope, key, event.newValue);
|
|
327
339
|
}
|
|
328
340
|
function subscribeToBackendChanges(scope) {
|
|
329
341
|
if (externalSyncUnsubscribers.has(scope)) {
|
|
@@ -334,6 +346,20 @@ function subscribeToBackendChanges(scope) {
|
|
|
334
346
|
return;
|
|
335
347
|
}
|
|
336
348
|
const unsubscribe = backend.subscribe(event => {
|
|
349
|
+
if (webDiskStorageBackend !== webSecureStorageBackend) {
|
|
350
|
+
applyExternalChangeEvent(scope, event.key, event.newValue);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (event.key === null) {
|
|
354
|
+
getInternals().clearScopeRawCache(scope);
|
|
355
|
+
reconcileWebScopeKeyIndex(scope);
|
|
356
|
+
(0, _shared.notifyAllListeners)(getInternals().getScopedListeners(scope));
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
const eventScope = isSecureWebStorageKey(event.key) ? _Storage.StorageScope.Secure : _Storage.StorageScope.Disk;
|
|
360
|
+
if (eventScope !== scope) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
337
363
|
applyExternalChangeEvent(scope, event.key, event.newValue);
|
|
338
364
|
});
|
|
339
365
|
externalSyncUnsubscribers.set(scope, unsubscribe);
|
|
@@ -428,7 +454,18 @@ const WebStorage = {
|
|
|
428
454
|
}
|
|
429
455
|
try {
|
|
430
456
|
withWebBackendOperation(scope, "clear", backend => {
|
|
431
|
-
|
|
457
|
+
if (webDiskStorageBackend !== webSecureStorageBackend) {
|
|
458
|
+
backend.clear();
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
const ownedKeys = backend.getAllKeys().filter(key => scope === _Storage.StorageScope.Secure ? isSecureWebStorageKey(key) : !isSecureWebStorageKey(key));
|
|
462
|
+
if (backend.removeMany) {
|
|
463
|
+
backend.removeMany(ownedKeys);
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
ownedKeys.forEach(key => {
|
|
467
|
+
backend.removeItem(key);
|
|
468
|
+
});
|
|
432
469
|
});
|
|
433
470
|
} catch (error) {
|
|
434
471
|
throwAfterWebMutationFailure(scope, "clear", error);
|
|
@@ -814,4 +851,10 @@ async function flushWebStorageBackends() {
|
|
|
814
851
|
throw failure.reason;
|
|
815
852
|
}
|
|
816
853
|
}
|
|
854
|
+
/**
|
|
855
|
+
* @deprecated Import `createIndexedDBBackend` from
|
|
856
|
+
* `react-native-nitro-storage/indexeddb-backend` instead. The root export
|
|
857
|
+
* will be removed in a future minor release.
|
|
858
|
+
*/
|
|
859
|
+
const createIndexedDBBackend = exports.createIndexedDBBackend = _indexeddbBackend.createIndexedDBBackend;
|
|
817
860
|
//# sourceMappingURL=index.web.js.map
|