react-native-nitro-storage 0.10.2 → 0.10.4
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 +45 -0
- package/README.md +38 -8
- package/android/CMakeLists.txt +2 -0
- package/android/src/main/cpp/AndroidStorageAdapterCpp.cpp +47 -29
- package/android/src/main/java/com/nitrostorage/AndroidStorageAdapter.kt +12 -25
- package/android/src/main/java/com/nitrostorage/DiskSqliteStore.kt +174 -0
- package/cpp/core/SqliteDiskStore.cpp +416 -0
- package/cpp/core/SqliteDiskStore.hpp +69 -0
- package/docs/api-reference.md +4 -1
- package/docs/benchmarks.md +37 -0
- package/docs/native-libraries.md +30 -0
- package/docs/secure-storage.md +5 -0
- package/ios/IOSStorageAdapterCpp.mm +146 -52
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/shared.js.map +1 -1
- package/lib/commonjs/storage-core.js +57 -11
- package/lib/commonjs/storage-core.js.map +1 -1
- package/lib/commonjs/testing.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/shared.js.map +1 -1
- package/lib/module/storage-core.js +57 -11
- package/lib/module/storage-core.js.map +1 -1
- package/lib/module/testing.js.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/index.web.d.ts +2 -1
- package/lib/typescript/index.web.d.ts.map +1 -1
- package/lib/typescript/shared.d.ts +6 -0
- package/lib/typescript/shared.d.ts.map +1 -1
- package/lib/typescript/storage-core.d.ts +2 -1
- package/lib/typescript/storage-core.d.ts.map +1 -1
- package/lib/typescript/testing.d.ts +3 -1
- package/lib/typescript/testing.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native-nitro-storage.podspec +2 -0
- package/src/index.ts +1 -0
- package/src/index.web.ts +1 -0
- package/src/shared.ts +7 -0
- package/src/storage-core.ts +65 -14
- package/src/testing.ts +1 -0
|
@@ -3,12 +3,32 @@
|
|
|
3
3
|
#import <Security/Security.h>
|
|
4
4
|
#import <LocalAuthentication/LocalAuthentication.h>
|
|
5
5
|
|
|
6
|
+
#include "SqliteDiskStore.hpp"
|
|
7
|
+
|
|
6
8
|
#include <unordered_set>
|
|
7
9
|
#include <utility>
|
|
8
10
|
#include <vector>
|
|
9
11
|
|
|
10
12
|
namespace NitroStorage {
|
|
11
13
|
|
|
14
|
+
// Storage strings are length-delimited; C-string conversion aliases keys at NUL.
|
|
15
|
+
static NSString* nsStringFromStdString(const std::string& value) {
|
|
16
|
+
NSString* result = [[NSString alloc] initWithBytes:value.data()
|
|
17
|
+
length:value.size() encoding:NSUTF8StringEncoding];
|
|
18
|
+
if (!result) {
|
|
19
|
+
throw std::runtime_error("NitroStorage: String is not valid UTF-8");
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static std::string stdStringFromNSString(NSString* value) {
|
|
25
|
+
const char* bytes = [value UTF8String];
|
|
26
|
+
if (!bytes) {
|
|
27
|
+
throw std::runtime_error("NitroStorage: String cannot be encoded as UTF-8");
|
|
28
|
+
}
|
|
29
|
+
return std::string(bytes, [value lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
|
|
30
|
+
}
|
|
31
|
+
|
|
12
32
|
static NSString* const kKeychainService = @"com.nitrostorage.keychain";
|
|
13
33
|
static NSString* const kBiometricKeychainService = @"com.nitrostorage.biometric";
|
|
14
34
|
static NSString* const kDiskSuiteName = @"com.nitrostorage.disk";
|
|
@@ -88,6 +108,50 @@ static void unregisterLegacyDiskKeys(NSArray<NSString*>* keys) {
|
|
|
88
108
|
static NSString* const kLegacyDiskMigrationMarkerKey =
|
|
89
109
|
@"__nitro_storage_legacy_disk_migration_v1__";
|
|
90
110
|
|
|
111
|
+
static std::string NitroDiskStorePath() {
|
|
112
|
+
NSArray<NSURL*>* urls = [[NSFileManager defaultManager]
|
|
113
|
+
URLsForDirectory:NSApplicationSupportDirectory
|
|
114
|
+
inDomains:NSUserDomainMask];
|
|
115
|
+
NSURL* directory = urls.firstObject;
|
|
116
|
+
if (directory == nil) {
|
|
117
|
+
return NitroStorage::SqliteDiskStore::defaultPath();
|
|
118
|
+
}
|
|
119
|
+
[[NSFileManager defaultManager]
|
|
120
|
+
createDirectoryAtURL:directory
|
|
121
|
+
withIntermediateDirectories:YES
|
|
122
|
+
attributes:nil
|
|
123
|
+
error:nil];
|
|
124
|
+
NSString* path = [[directory URLByAppendingPathComponent:@"nitro-storage-disk.sqlite"] path];
|
|
125
|
+
return stdStringFromNSString(path);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
static NitroStorage::SqliteDiskStore& NitroSqliteDiskStore() {
|
|
129
|
+
return NitroStorage::SqliteDiskStore::shared(NitroDiskStorePath());
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
static bool isInternalDiskKey(NSString* key) {
|
|
133
|
+
return [key isEqualToString:kLegacyDiskKeysRegistryKey] ||
|
|
134
|
+
[key isEqualToString:kLegacyDiskMigrationMarkerKey];
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static void migrateSuiteIntoSqlite() {
|
|
138
|
+
NSDictionary<NSString*, id>* entries =
|
|
139
|
+
[NitroDiskDefaults() persistentDomainForName:kDiskSuiteName] ?: @{};
|
|
140
|
+
std::vector<std::pair<std::string, std::string>> pairs;
|
|
141
|
+
pairs.reserve(entries.count);
|
|
142
|
+
for (NSString* key in entries) {
|
|
143
|
+
if (isInternalDiskKey(key)) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
id value = entries[key];
|
|
147
|
+
if (![value isKindOfClass:[NSString class]]) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
pairs.emplace_back(stdStringFromNSString(key), stdStringFromNSString((NSString*)value));
|
|
151
|
+
}
|
|
152
|
+
NitroSqliteDiskStore().migrateIfAbsent(pairs);
|
|
153
|
+
}
|
|
154
|
+
|
|
91
155
|
static void runLegacyDiskMigrationCutover(
|
|
92
156
|
NSUserDefaults* defaults,
|
|
93
157
|
NSUserDefaults* standard
|
|
@@ -247,16 +311,27 @@ IOSStorageAdapterCpp::IOSStorageAdapterCpp() {
|
|
|
247
311
|
NitroDiskDefaults(),
|
|
248
312
|
[NSUserDefaults standardUserDefaults]
|
|
249
313
|
);
|
|
314
|
+
migrateSuiteIntoSqlite();
|
|
250
315
|
}
|
|
251
316
|
IOSStorageAdapterCpp::~IOSStorageAdapterCpp() {}
|
|
252
317
|
|
|
318
|
+
#ifdef NITRO_STORAGE_TESTING
|
|
319
|
+
void resetSqliteDiskStoreForTesting() {
|
|
320
|
+
SqliteDiskStore::resetShared();
|
|
321
|
+
NSString* path = nsStringFromStdString(NitroDiskStorePath());
|
|
322
|
+
NSFileManager* files = [NSFileManager defaultManager];
|
|
323
|
+
[files removeItemAtPath:path error:nil];
|
|
324
|
+
[files removeItemAtPath:[path stringByAppendingString:@"-wal"] error:nil];
|
|
325
|
+
[files removeItemAtPath:[path stringByAppendingString:@"-shm"] error:nil];
|
|
326
|
+
}
|
|
327
|
+
#endif
|
|
328
|
+
|
|
253
329
|
// --- Disk ---
|
|
254
330
|
|
|
255
331
|
void IOSStorageAdapterCpp::setDisk(const std::string& key, const std::string& value) {
|
|
256
|
-
|
|
257
|
-
NSString*
|
|
332
|
+
NitroSqliteDiskStore().set(key, value);
|
|
333
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
258
334
|
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
259
|
-
[defaults setObject:nsValue forKey:nsKey];
|
|
260
335
|
NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
|
|
261
336
|
if (defaults != standard && [standard objectForKey:nsKey] != nil) {
|
|
262
337
|
[standard removeObjectForKey:nsKey];
|
|
@@ -265,14 +340,20 @@ void IOSStorageAdapterCpp::setDisk(const std::string& key, const std::string& va
|
|
|
265
340
|
}
|
|
266
341
|
|
|
267
342
|
std::optional<std::string> IOSStorageAdapterCpp::getDisk(const std::string& key) {
|
|
268
|
-
|
|
343
|
+
if (auto stored = NitroSqliteDiskStore().get(key)) {
|
|
344
|
+
return stored;
|
|
345
|
+
}
|
|
346
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
269
347
|
NSString* result = migrateLegacyDiskValue(nsKey);
|
|
270
348
|
if (!result) return std::nullopt;
|
|
271
|
-
|
|
349
|
+
const std::string value = stdStringFromNSString(result);
|
|
350
|
+
NitroSqliteDiskStore().set(key, value);
|
|
351
|
+
return value;
|
|
272
352
|
}
|
|
273
353
|
|
|
274
354
|
void IOSStorageAdapterCpp::deleteDisk(const std::string& key) {
|
|
275
|
-
|
|
355
|
+
NitroSqliteDiskStore().remove(key);
|
|
356
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
276
357
|
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
277
358
|
[defaults removeObjectForKey:nsKey];
|
|
278
359
|
NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
|
|
@@ -283,7 +364,10 @@ void IOSStorageAdapterCpp::deleteDisk(const std::string& key) {
|
|
|
283
364
|
}
|
|
284
365
|
|
|
285
366
|
bool IOSStorageAdapterCpp::hasDisk(const std::string& key) {
|
|
286
|
-
|
|
367
|
+
if (NitroSqliteDiskStore().has(key)) {
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
287
371
|
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
288
372
|
if ([defaults objectForKey:nsKey] != nil) {
|
|
289
373
|
return true;
|
|
@@ -296,20 +380,22 @@ bool IOSStorageAdapterCpp::hasDisk(const std::string& key) {
|
|
|
296
380
|
}
|
|
297
381
|
|
|
298
382
|
std::vector<std::string> IOSStorageAdapterCpp::getAllKeysDisk() {
|
|
383
|
+
std::unordered_set<std::string> combined;
|
|
384
|
+
for (const auto& key : NitroSqliteDiskStore().getAllKeys()) {
|
|
385
|
+
combined.insert(key);
|
|
386
|
+
}
|
|
299
387
|
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
300
388
|
NSDictionary<NSString*, id>* entries = [defaults persistentDomainForName:kDiskSuiteName] ?: @{};
|
|
301
389
|
NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
|
|
302
|
-
std::unordered_set<std::string> combined;
|
|
303
390
|
for (NSString* key in entries) {
|
|
304
|
-
if (!
|
|
305
|
-
|
|
306
|
-
combined.insert(std::string([key UTF8String]));
|
|
391
|
+
if (!isInternalDiskKey(key)) {
|
|
392
|
+
combined.insert(stdStringFromNSString(key));
|
|
307
393
|
}
|
|
308
394
|
}
|
|
309
395
|
for (NSString* key in [registeredLegacyDiskKeys() allObjects]) {
|
|
310
396
|
if ([entries objectForKey:key] == nil &&
|
|
311
397
|
[standard stringForKey:key] != nil) {
|
|
312
|
-
combined.insert(
|
|
398
|
+
combined.insert(stdStringFromNSString(key));
|
|
313
399
|
}
|
|
314
400
|
}
|
|
315
401
|
std::vector<std::string> keys;
|
|
@@ -321,14 +407,20 @@ std::vector<std::string> IOSStorageAdapterCpp::getAllKeysDisk() {
|
|
|
321
407
|
}
|
|
322
408
|
|
|
323
409
|
std::vector<std::string> IOSStorageAdapterCpp::getKeysByPrefixDisk(const std::string& prefix) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
410
|
+
std::unordered_set<std::string> combined;
|
|
411
|
+
for (const auto& key : NitroSqliteDiskStore().getKeysByPrefix(prefix)) {
|
|
412
|
+
combined.insert(key);
|
|
413
|
+
}
|
|
414
|
+
for (const auto& key : getAllKeysDisk()) {
|
|
328
415
|
if (key.rfind(prefix, 0) == 0) {
|
|
329
|
-
|
|
416
|
+
combined.insert(key);
|
|
330
417
|
}
|
|
331
418
|
}
|
|
419
|
+
std::vector<std::string> filtered;
|
|
420
|
+
filtered.reserve(combined.size());
|
|
421
|
+
for (const auto& key : combined) {
|
|
422
|
+
filtered.push_back(key);
|
|
423
|
+
}
|
|
332
424
|
return filtered;
|
|
333
425
|
}
|
|
334
426
|
|
|
@@ -340,13 +432,12 @@ void IOSStorageAdapterCpp::setDiskBatch(
|
|
|
340
432
|
const std::vector<std::string>& keys,
|
|
341
433
|
const std::vector<std::string>& values
|
|
342
434
|
) {
|
|
435
|
+
NitroSqliteDiskStore().setBatch(keys, values);
|
|
343
436
|
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
344
437
|
NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
|
|
345
438
|
NSMutableArray* legacyKeysToRemove = [NSMutableArray array];
|
|
346
439
|
for (size_t i = 0; i < keys.size() && i < values.size(); ++i) {
|
|
347
|
-
NSString* nsKey =
|
|
348
|
-
NSString* nsValue = [NSString stringWithUTF8String:values[i].c_str()];
|
|
349
|
-
[defaults setObject:nsValue forKey:nsKey];
|
|
440
|
+
NSString* nsKey = nsStringFromStdString(keys[i]);
|
|
350
441
|
if (defaults != standard && [standard objectForKey:nsKey] != nil) {
|
|
351
442
|
[legacyKeysToRemove addObject:nsKey];
|
|
352
443
|
}
|
|
@@ -369,18 +460,26 @@ std::vector<std::optional<std::string>> IOSStorageAdapterCpp::getDiskBatch(
|
|
|
369
460
|
}
|
|
370
461
|
|
|
371
462
|
void IOSStorageAdapterCpp::deleteDiskBatch(const std::vector<std::string>& keys) {
|
|
463
|
+
NitroSqliteDiskStore().removeBatch(keys);
|
|
372
464
|
for (const auto& key : keys) {
|
|
373
|
-
|
|
465
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
466
|
+
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
467
|
+
[defaults removeObjectForKey:nsKey];
|
|
468
|
+
NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
|
|
469
|
+
if (defaults != standard && [standard objectForKey:nsKey] != nil) {
|
|
470
|
+
[standard removeObjectForKey:nsKey];
|
|
471
|
+
}
|
|
472
|
+
unregisterLegacyDiskKeys(@[nsKey]);
|
|
374
473
|
}
|
|
375
474
|
}
|
|
376
475
|
|
|
377
476
|
void IOSStorageAdapterCpp::clearDisk() {
|
|
477
|
+
NitroSqliteDiskStore().clear();
|
|
378
478
|
NSUserDefaults* defaults = NitroDiskDefaults();
|
|
379
479
|
NSDictionary<NSString*, id>* entries = [defaults persistentDomainForName:kDiskSuiteName] ?: @{};
|
|
380
480
|
NSMutableSet* legacyKeys = [registeredLegacyDiskKeys() mutableCopy];
|
|
381
481
|
for (NSString* key in entries) {
|
|
382
|
-
if (
|
|
383
|
-
[key isEqualToString:kLegacyDiskMigrationMarkerKey]) {
|
|
482
|
+
if (isInternalDiskKey(key)) {
|
|
384
483
|
continue;
|
|
385
484
|
}
|
|
386
485
|
[defaults removeObjectForKey:key];
|
|
@@ -388,8 +487,7 @@ void IOSStorageAdapterCpp::clearDisk() {
|
|
|
388
487
|
NSUserDefaults* standard = [NSUserDefaults standardUserDefaults];
|
|
389
488
|
if (defaults != standard) {
|
|
390
489
|
for (NSString* key in entries) {
|
|
391
|
-
if (
|
|
392
|
-
[key isEqualToString:kLegacyDiskMigrationMarkerKey]) {
|
|
490
|
+
if (isInternalDiskKey(key)) {
|
|
393
491
|
continue;
|
|
394
492
|
}
|
|
395
493
|
[standard removeObjectForKey:key];
|
|
@@ -472,7 +570,7 @@ static BiometricKeychainSnapshot captureBiometricValue(
|
|
|
472
570
|
throw std::runtime_error("NitroStorage: Biometric snapshot value is not UTF-8");
|
|
473
571
|
}
|
|
474
572
|
snapshot.present = true;
|
|
475
|
-
snapshot.value =
|
|
573
|
+
snapshot.value = stdStringFromNSString(stringValue);
|
|
476
574
|
snapshot.accessControl = (SecAccessControlRef)CFRetain((__bridge CFTypeRef)accessControl);
|
|
477
575
|
CFRelease(result);
|
|
478
576
|
return snapshot;
|
|
@@ -491,10 +589,6 @@ static NSMutableDictionary* allAccountsQuery(NSString* service, NSString* access
|
|
|
491
589
|
return query;
|
|
492
590
|
}
|
|
493
591
|
|
|
494
|
-
static NSString* nsStringFromStdString(const std::string& value) {
|
|
495
|
-
return [NSString stringWithUTF8String:value.c_str()];
|
|
496
|
-
}
|
|
497
|
-
|
|
498
592
|
static NSData* nsDataFromStdString(const std::string& value) {
|
|
499
593
|
return [nsStringFromStdString(value) dataUsingEncoding:NSUTF8StringEncoding];
|
|
500
594
|
}
|
|
@@ -553,7 +647,7 @@ static std::optional<std::string> getSecureValue(NSString* nsKey, NSString* grou
|
|
|
553
647
|
if (status == errSecSuccess && result) {
|
|
554
648
|
NSData* data = (__bridge_transfer NSData*)result;
|
|
555
649
|
NSString* str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
|
556
|
-
if (str) return
|
|
650
|
+
if (str) return stdStringFromNSString(str);
|
|
557
651
|
}
|
|
558
652
|
if (status == errSecInteractionNotAllowed) {
|
|
559
653
|
throw taggedStorageError(
|
|
@@ -647,7 +741,7 @@ static std::vector<std::string> keychainAccountsForService(NSString* service, NS
|
|
|
647
741
|
for (NSDictionary* item in itemArray) {
|
|
648
742
|
NSString* account = item[(__bridge id)kSecAttrAccount];
|
|
649
743
|
if (account) {
|
|
650
|
-
keys.push_back(
|
|
744
|
+
keys.push_back(stdStringFromNSString(account));
|
|
651
745
|
}
|
|
652
746
|
}
|
|
653
747
|
}
|
|
@@ -665,7 +759,7 @@ void IOSStorageAdapterCpp::setSecure(const std::string& key, const std::string&
|
|
|
665
759
|
groupStr = keychainAccessGroup_;
|
|
666
760
|
accessControlLevel = accessControlLevel_;
|
|
667
761
|
}
|
|
668
|
-
NSString* group = groupStr.empty() ? nil :
|
|
762
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
669
763
|
setSecureValue(nsKey, data, group, accessControlLevel);
|
|
670
764
|
markSecureKeySet(key);
|
|
671
765
|
}
|
|
@@ -677,7 +771,7 @@ std::optional<std::string> IOSStorageAdapterCpp::getSecure(const std::string& ke
|
|
|
677
771
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
678
772
|
groupStr = keychainAccessGroup_;
|
|
679
773
|
}
|
|
680
|
-
NSString* group = groupStr.empty() ? nil :
|
|
774
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
681
775
|
return getSecureValue(nsKey, group);
|
|
682
776
|
}
|
|
683
777
|
|
|
@@ -688,20 +782,20 @@ void IOSStorageAdapterCpp::deleteSecure(const std::string& key) {
|
|
|
688
782
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
689
783
|
groupStr = keychainAccessGroup_;
|
|
690
784
|
}
|
|
691
|
-
NSString* group = groupStr.empty() ? nil :
|
|
785
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
692
786
|
deleteSecureValue(nsKey, group);
|
|
693
787
|
markSecureKeyRemoved(key);
|
|
694
788
|
markBiometricKeyRemoved(key);
|
|
695
789
|
}
|
|
696
790
|
|
|
697
791
|
bool IOSStorageAdapterCpp::hasSecure(const std::string& key) {
|
|
698
|
-
NSString* nsKey =
|
|
792
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
699
793
|
std::string groupStr;
|
|
700
794
|
{
|
|
701
795
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
702
796
|
groupStr = keychainAccessGroup_;
|
|
703
797
|
}
|
|
704
|
-
NSString* group = groupStr.empty() ? nil :
|
|
798
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
705
799
|
NSMutableDictionary* secureQuery = baseKeychainQuery(nsKey, kKeychainService, group);
|
|
706
800
|
disableKeychainInteraction(secureQuery);
|
|
707
801
|
if (SecItemCopyMatching((__bridge CFDictionaryRef)secureQuery, NULL) == errSecSuccess) {
|
|
@@ -756,7 +850,7 @@ void IOSStorageAdapterCpp::setSecureBatch(
|
|
|
756
850
|
groupStr = keychainAccessGroup_;
|
|
757
851
|
accessControlLevel = accessControlLevel_;
|
|
758
852
|
}
|
|
759
|
-
NSString* group = groupStr.empty() ? nil :
|
|
853
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
760
854
|
for (size_t i = 0; i < keys.size() && i < values.size(); ++i) {
|
|
761
855
|
setSecureValue(
|
|
762
856
|
nsStringFromStdString(keys[i]),
|
|
@@ -776,7 +870,7 @@ std::vector<std::optional<std::string>> IOSStorageAdapterCpp::getSecureBatch(
|
|
|
776
870
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
777
871
|
groupStr = keychainAccessGroup_;
|
|
778
872
|
}
|
|
779
|
-
NSString* group = groupStr.empty() ? nil :
|
|
873
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
780
874
|
std::vector<std::optional<std::string>> results;
|
|
781
875
|
results.reserve(keys.size());
|
|
782
876
|
for (const auto& key : keys) {
|
|
@@ -791,7 +885,7 @@ void IOSStorageAdapterCpp::deleteSecureBatch(const std::vector<std::string>& key
|
|
|
791
885
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
792
886
|
groupStr = keychainAccessGroup_;
|
|
793
887
|
}
|
|
794
|
-
NSString* group = groupStr.empty() ? nil :
|
|
888
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
795
889
|
for (const auto& key : keys) {
|
|
796
890
|
deleteSecureValue(nsStringFromStdString(key), group);
|
|
797
891
|
markSecureKeyRemoved(key);
|
|
@@ -805,7 +899,7 @@ void IOSStorageAdapterCpp::clearSecure() {
|
|
|
805
899
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
806
900
|
groupStr = keychainAccessGroup_;
|
|
807
901
|
}
|
|
808
|
-
NSString* group = groupStr.empty() ? nil :
|
|
902
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
809
903
|
NSMutableDictionary* secureQuery = [@{
|
|
810
904
|
(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
|
|
811
905
|
(__bridge id)kSecAttrService: kKeychainService
|
|
@@ -874,7 +968,7 @@ void IOSStorageAdapterCpp::setSecureBiometricWithLevel(const std::string& key, c
|
|
|
874
968
|
if (level < 0 || level > 2) {
|
|
875
969
|
throw std::runtime_error("NitroStorage: Invalid biometric level");
|
|
876
970
|
}
|
|
877
|
-
NSString* nsKey =
|
|
971
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
878
972
|
NSData* data = nsDataFromStdString(value);
|
|
879
973
|
std::string groupStr;
|
|
880
974
|
int accessControlLevel;
|
|
@@ -883,7 +977,7 @@ void IOSStorageAdapterCpp::setSecureBiometricWithLevel(const std::string& key, c
|
|
|
883
977
|
groupStr = keychainAccessGroup_;
|
|
884
978
|
accessControlLevel = accessControlLevel_;
|
|
885
979
|
}
|
|
886
|
-
NSString* group = groupStr.empty() ? nil :
|
|
980
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
887
981
|
|
|
888
982
|
const BiometricKeychainSnapshot previousBiometric = captureBiometricValue(nsKey, group);
|
|
889
983
|
const std::optional<std::string> previousPlain = getSecureValue(nsKey, group);
|
|
@@ -984,13 +1078,13 @@ void IOSStorageAdapterCpp::setSecureBiometricWithLevel(const std::string& key, c
|
|
|
984
1078
|
}
|
|
985
1079
|
|
|
986
1080
|
std::optional<std::string> IOSStorageAdapterCpp::getSecureBiometric(const std::string& key) {
|
|
987
|
-
NSString* nsKey =
|
|
1081
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
988
1082
|
std::string groupStr;
|
|
989
1083
|
{
|
|
990
1084
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
991
1085
|
groupStr = keychainAccessGroup_;
|
|
992
1086
|
}
|
|
993
|
-
NSString* group = groupStr.empty() ? nil :
|
|
1087
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
994
1088
|
NSMutableDictionary* query = baseKeychainQuery(nsKey, kBiometricKeychainService, group);
|
|
995
1089
|
query[(__bridge id)kSecReturnData] = @YES;
|
|
996
1090
|
query[(__bridge id)kSecMatchLimit] = (__bridge id)kSecMatchLimitOne;
|
|
@@ -1000,7 +1094,7 @@ std::optional<std::string> IOSStorageAdapterCpp::getSecureBiometric(const std::s
|
|
|
1000
1094
|
if (status == errSecSuccess && result) {
|
|
1001
1095
|
NSData* data = (__bridge_transfer NSData*)result;
|
|
1002
1096
|
NSString* str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
|
1003
|
-
if (str) return
|
|
1097
|
+
if (str) return stdStringFromNSString(str);
|
|
1004
1098
|
}
|
|
1005
1099
|
if (status == errSecInteractionNotAllowed) {
|
|
1006
1100
|
throw taggedStorageError(
|
|
@@ -1022,13 +1116,13 @@ std::optional<std::string> IOSStorageAdapterCpp::getSecureBiometric(const std::s
|
|
|
1022
1116
|
}
|
|
1023
1117
|
|
|
1024
1118
|
void IOSStorageAdapterCpp::deleteSecureBiometric(const std::string& key) {
|
|
1025
|
-
NSString* nsKey =
|
|
1119
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
1026
1120
|
std::string groupStr;
|
|
1027
1121
|
{
|
|
1028
1122
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
1029
1123
|
groupStr = keychainAccessGroup_;
|
|
1030
1124
|
}
|
|
1031
|
-
NSString* group = groupStr.empty() ? nil :
|
|
1125
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
1032
1126
|
NSMutableDictionary* query = baseKeychainQuery(nsKey, kBiometricKeychainService, group);
|
|
1033
1127
|
const OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query);
|
|
1034
1128
|
throwIfDeleteFailed(status, "Biometric delete");
|
|
@@ -1036,13 +1130,13 @@ void IOSStorageAdapterCpp::deleteSecureBiometric(const std::string& key) {
|
|
|
1036
1130
|
}
|
|
1037
1131
|
|
|
1038
1132
|
bool IOSStorageAdapterCpp::hasSecureBiometric(const std::string& key) {
|
|
1039
|
-
NSString* nsKey =
|
|
1133
|
+
NSString* nsKey = nsStringFromStdString(key);
|
|
1040
1134
|
std::string groupStr;
|
|
1041
1135
|
{
|
|
1042
1136
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
1043
1137
|
groupStr = keychainAccessGroup_;
|
|
1044
1138
|
}
|
|
1045
|
-
NSString* group = groupStr.empty() ? nil :
|
|
1139
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
1046
1140
|
NSMutableDictionary* query = baseKeychainQuery(nsKey, kBiometricKeychainService, group);
|
|
1047
1141
|
disableKeychainInteraction(query);
|
|
1048
1142
|
const OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, NULL);
|
|
@@ -1063,7 +1157,7 @@ void IOSStorageAdapterCpp::clearSecureBiometric() {
|
|
|
1063
1157
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
1064
1158
|
groupStr = keychainAccessGroup_;
|
|
1065
1159
|
}
|
|
1066
|
-
NSString* group = groupStr.empty() ? nil :
|
|
1160
|
+
NSString* group = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
1067
1161
|
NSMutableDictionary* query = [@{
|
|
1068
1162
|
(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
|
|
1069
1163
|
(__bridge id)kSecAttrService: kBiometricKeychainService
|
|
@@ -1099,7 +1193,7 @@ void IOSStorageAdapterCpp::ensureSecureKeyCacheHydrated() {
|
|
|
1099
1193
|
std::lock_guard<std::mutex> lock(accessGroupMutex_);
|
|
1100
1194
|
groupStr = keychainAccessGroup_;
|
|
1101
1195
|
}
|
|
1102
|
-
NSString* nsGroup = groupStr.empty() ? nil :
|
|
1196
|
+
NSString* nsGroup = groupStr.empty() ? nil : nsStringFromStdString(groupStr);
|
|
1103
1197
|
|
|
1104
1198
|
// These can throw errSecInteractionNotAllowed — let the exception propagate
|
|
1105
1199
|
// so the cache is NOT marked hydrated (will be retried on next access)
|
|
@@ -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;AA2BA,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","_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":[]}
|