react-native-nitro-storage 0.13.0 → 0.15.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 (69) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +260 -7
  3. package/cpp/bindings/HybridStorage.cpp +21 -0
  4. package/cpp/bindings/HybridStorage.hpp +2 -0
  5. package/cpp/core/NativeStorageAdapter.hpp +6 -0
  6. package/docs/api-reference.md +68 -43
  7. package/docs/batch-transactions-migrations.md +7 -0
  8. package/docs/qa/agent-device-replay.md +106 -0
  9. package/docs/secure-storage.md +12 -6
  10. package/ios/IOSStorageAdapterCpp.hpp +12 -0
  11. package/ios/IOSStorageAdapterCpp.mm +180 -2
  12. package/lib/commonjs/Storage.types.js +4 -2
  13. package/lib/commonjs/Storage.types.js.map +1 -1
  14. package/lib/commonjs/core/durability.js +30 -2
  15. package/lib/commonjs/core/durability.js.map +1 -1
  16. package/lib/commonjs/index.js +16 -1
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/index.web.js +10 -1
  19. package/lib/commonjs/index.web.js.map +1 -1
  20. package/lib/commonjs/shared.js +6 -0
  21. package/lib/commonjs/shared.js.map +1 -1
  22. package/lib/commonjs/storage-core.js +116 -3
  23. package/lib/commonjs/storage-core.js.map +1 -1
  24. package/lib/commonjs/testing.js +32 -2
  25. package/lib/commonjs/testing.js.map +1 -1
  26. package/lib/module/Storage.types.js +4 -2
  27. package/lib/module/Storage.types.js.map +1 -1
  28. package/lib/module/core/durability.js +30 -2
  29. package/lib/module/core/durability.js.map +1 -1
  30. package/lib/module/index.js +16 -1
  31. package/lib/module/index.js.map +1 -1
  32. package/lib/module/index.web.js +10 -1
  33. package/lib/module/index.web.js.map +1 -1
  34. package/lib/module/shared.js +5 -0
  35. package/lib/module/shared.js.map +1 -1
  36. package/lib/module/storage-core.js +117 -4
  37. package/lib/module/storage-core.js.map +1 -1
  38. package/lib/module/testing.js +31 -1
  39. package/lib/module/testing.js.map +1 -1
  40. package/lib/typescript/Storage.nitro.d.ts +2 -0
  41. package/lib/typescript/Storage.nitro.d.ts.map +1 -1
  42. package/lib/typescript/Storage.types.d.ts +4 -2
  43. package/lib/typescript/Storage.types.d.ts.map +1 -1
  44. package/lib/typescript/core/durability.d.ts +7 -1
  45. package/lib/typescript/core/durability.d.ts.map +1 -1
  46. package/lib/typescript/index.d.ts +8 -3
  47. package/lib/typescript/index.d.ts.map +1 -1
  48. package/lib/typescript/index.web.d.ts +8 -3
  49. package/lib/typescript/index.web.d.ts.map +1 -1
  50. package/lib/typescript/shared.d.ts +9 -1
  51. package/lib/typescript/shared.d.ts.map +1 -1
  52. package/lib/typescript/storage-core.d.ts +34 -4
  53. package/lib/typescript/storage-core.d.ts.map +1 -1
  54. package/lib/typescript/storage-platform.d.ts +2 -0
  55. package/lib/typescript/storage-platform.d.ts.map +1 -1
  56. package/lib/typescript/testing.d.ts +16 -5
  57. package/lib/typescript/testing.d.ts.map +1 -1
  58. package/nitrogen/generated/shared/c++/HybridStorageSpec.cpp +2 -0
  59. package/nitrogen/generated/shared/c++/HybridStorageSpec.hpp +2 -0
  60. package/package.json +2 -2
  61. package/src/Storage.nitro.ts +2 -0
  62. package/src/Storage.types.ts +4 -2
  63. package/src/core/durability.ts +46 -2
  64. package/src/index.ts +24 -0
  65. package/src/index.web.ts +18 -0
  66. package/src/shared.ts +27 -1
  67. package/src/storage-core.ts +182 -8
  68. package/src/storage-platform.ts +2 -0
  69. package/src/testing.ts +42 -0
@@ -0,0 +1,106 @@
1
+ # Storage agent-device replay
2
+
3
+ Run these flows only against an already installed release example that matches
4
+ the source revision under test. Select the platform and exact device every time:
5
+
6
+ ```sh
7
+ bun run example:replay --platform ios --udid <exact-udid>
8
+ bun run example:replay --platform android --serial <exact-serial>
9
+ ```
10
+
11
+ To run selected manifest suites, pass `--flow <id>`. The runner accepts this
12
+ option more than once for distinct suite IDs:
13
+
14
+ ```sh
15
+ bun run example:replay --platform ios --udid <exact-udid> --flow integrity
16
+ bun run example:replay --platform android --serial <exact-serial> --flow keychain --flow persistence-relaunch
17
+ ```
18
+
19
+ Use an installed release build from the source being checked. The replay does
20
+ not start Metro, prebuild, or build an app. A development client, a different
21
+ source revision, an inferred device, or a run without the exact platform and
22
+ device selector is not release replay evidence. The task owner must separately
23
+ authorize device work after the required package implementations are ready.
24
+
25
+ Before replay, check that the example source and replay manifest match the
26
+ committed source lock. If a flow, status ID, or expected value changes, update
27
+ `e2e/storage-replay-coverage.json` and refresh that lock with the repository's
28
+ replay maintenance command. Run the checker again before the device command:
29
+
30
+ ```sh
31
+ bun run example:replay:refresh
32
+ bun run example:replay:check
33
+ bun run example:replay:test
34
+ ```
35
+
36
+ The runner supplies a fresh UUID as `RUN_ID` to each replay. The persistence
37
+ flow writes one `RUN_ID`-scoped Disk key, closes and relaunches the installed
38
+ app with the same ID, compares the stored value with the expected value, and
39
+ deletes that key. Other smoke and lab cases use reserved QA keys and clean only
40
+ those keys. Only the final `clear-all` suite clears whole scopes.
41
+
42
+ The `clear-all` suite (`e2e/qa-clear-all.ad`) seeds one reserved key in Memory,
43
+ Disk, and Secure, then calls `storage.clearAll()`. This wipes all example
44
+ storage in every scope on the target install, not only QA keys. It is the last
45
+ suite in the manifest, and the runner passes suites to `agent-device test` in
46
+ manifest order, so it runs after every other suite. Run it only on a disposable
47
+ example install. Use `--flow` to skip it when the install holds data you need.
48
+
49
+ The `api-extended` suite (`e2e/qa-api-extended.ad`) opens a run-on-load screen
50
+ and asserts its results through the on-screen `e2e-ext-results` label, which
51
+ joins one `;`-terminated token per check. It covers item `merge` and
52
+ `setOrDelete`, Set `toggle` and `values`, `clearGroup`, TTL `onExpired` and
53
+ `subscribeExpired`, Secure metadata and export inventory, default access
54
+ control, coalesced Secure writes, the `invalid_key` error, scoped metrics,
55
+ native Disk key events, the React hooks, and `createSecureAuthStorage` TTL. It
56
+ uses reserved `__e2e_ext_`, `__e2e_inv_`, and `__e2e_auth` keys and restores the
57
+ default access control to `WhenUnlocked` after each access-control check. Its
58
+ passcode access-control row is a gating probe for later iOS biometric work: the
59
+ flow asserts only that a `passcode-acl=` result rendered. A device without a
60
+ passcode can reject that write, and the row is not a pass for passcode-protected
61
+ storage.
62
+
63
+ The `biometric-ios` suite (`e2e/qa-biometric-ios.ad`) runs only with
64
+ `--platform ios`; its manifest entry sets `platforms: ["ios"]`, the runner skips
65
+ it for Android, and `--flow biometric-ios` with `--platform android` fails before
66
+ any device command. It enrolls simulator Face ID, opens the run-on-load
67
+ `e2e-biometric` route with `RUN_ID`, and writes one `__e2e_bio_<RUN_ID>` item
68
+ with `biometric: true` and the default level. The `e2e-biometric-results` label
69
+ then shows the seed and metadata tokens and `bio:read=prompting;`. After a fixed
70
+ 1500 ms wait, `settings faceid match` resolves the blocked read, and the flow
71
+ expects `bio:read=value-matched;` and `bio:cleanup=missing;` before it unenrolls
72
+ Face ID. Cleanup calls `storage.clearBiometric()`, which removes every
73
+ biometric Secure item in the example install. This is simulator evidence only,
74
+ not Secure Enclave hardware evidence. Android biometrics and iOS nonmatch or
75
+ cancel outcomes remain pending.
76
+
77
+ Each run uses a unique session and an artifact directory under the OS temporary
78
+ directory. `agent-device test` closes each attempt session itself, including
79
+ on failure.
80
+
81
+ A replay passes only when each suite reaches its finished status and every
82
+ required status ID contains its expected public API value. A `fail=0` summary by
83
+ itself is not sufficient. Smoke and integrity rows are asserted through the
84
+ on-screen `smoke-results` and `e2e-integrity-results` labels because
85
+ agent-device `.ad` waits only see on-screen elements. The keychain suite runs one no-prompt Secure
86
+ roundtrip and keeps biometric, lock, corruption, and hardware-backed checks
87
+ explicitly pending; only the iOS simulator Face ID match path is asserted, by
88
+ `biometric-ios`. The smoke test's constructed `storage_full` error is read
89
+ through the public `/testing` entrypoint; it proves error-code classification
90
+ at that test adapter boundary only.
91
+
92
+ The native smoke flow requires 39 passing cases out of 41, zero failures, and
93
+ the two expected web-only skips. Update that expected summary when cases change;
94
+ do not accept a new native skip as coverage. The integrity flow also checks that
95
+ a Promise-returning transaction rolls back and closes its context on Memory,
96
+ Disk, and Secure.
97
+
98
+ Native replay rows identify the public runtime platform and backend capability,
99
+ then assert values returned through the default package entrypoint. This
100
+ supports installed-app Disk and Secure behavior claims for that target. Apart
101
+ from the iOS simulator Face ID match in `biometric-ios`, it does not prove
102
+ hardware-backed keys, biometrics, locked-device behavior, corruption
103
+ recovery, or a native Disk/Secure write failure. Those checks need controlled
104
+ native or hardware prerequisites and remain pending in the coverage manifest.
105
+ Unit tests for an injected adapter boundary are useful logic evidence, but they
106
+ do not close a native-runtime prerequisite.
@@ -206,12 +206,18 @@ refreshTokenItem.set("opaque-refresh-token");
206
206
  ```
207
207
 
208
208
  Coalesced secure item writes remain in a last-write-wins queue until the next
209
- microtask or an explicit `flushSecureWrites()`. A failed flush throws and keeps
210
- failed and unattempted writes queued for a later retry. Call
211
- `flushSecureWrites()` before assertions, namespace clears, or any boundary that
212
- requires deterministic persistence. `storage.clearBiometric()` is also a
213
- durability barrier: it flushes pending Secure writes before clearing biometric
214
- entries, and surfaces native clear failures.
209
+ microtask or an explicit `flushSecureWrites()`. An explicit flush failure throws
210
+ and keeps failed and unattempted writes queued for retry. Scheduled failures
211
+ propagate unless `storage.setScheduledFlushErrorObserver()` is installed; it
212
+ receives `{ scope, error }` while the failed writes remain queued.
213
+
214
+ `flushSecureWrites()` drains the JavaScript queue into the backend. It does not
215
+ wait for Android `apply()` persistence. Use the default synchronous mode or
216
+ select `storage.setSecureWritesAsync(false)` before writes that need synchronous
217
+ native persistence. Changing the mode is not a barrier for earlier `apply()`
218
+ calls. `storage.clearBiometric()` drains pending Secure writes before clearing
219
+ biometric entries and surfaces native clear failures; it also cannot wait for
220
+ earlier Android `apply()` calls.
215
221
 
216
222
  ## iOS Legacy Disk Migration
217
223
 
@@ -2,6 +2,9 @@
2
2
 
3
3
  #include "../core/NativeStorageAdapter.hpp"
4
4
  #include <atomic>
5
+ #include <functional>
6
+ #include <optional>
7
+ #include <memory>
5
8
  #include <mutex>
6
9
  #include <unordered_set>
7
10
 
@@ -9,7 +12,10 @@ namespace NitroStorage {
9
12
 
10
13
  class IOSStorageAdapterCpp : public NativeStorageAdapter {
11
14
  public:
15
+ using ProtectedDataReader = std::function<std::optional<bool>()>;
16
+
12
17
  IOSStorageAdapterCpp();
18
+ explicit IOSStorageAdapterCpp(ProtectedDataReader protectedDataReader);
13
19
  ~IOSStorageAdapterCpp() override;
14
20
 
15
21
  void setDisk(const std::string& key, const std::string& value) override;
@@ -48,7 +54,13 @@ public:
48
54
  bool hasSecureBiometric(const std::string& key) override;
49
55
  void clearSecureBiometric() override;
50
56
 
57
+ bool isProtectedDataAvailable() override;
58
+ std::function<void()> addProtectedDataAvailableListener(std::function<void()> listener) override;
59
+
51
60
  private:
61
+ struct ProtectedDataState;
62
+ std::shared_ptr<ProtectedDataState> protectedData_;
63
+
52
64
  int accessControlLevel_ = 0;
53
65
  std::string keychainAccessGroup_;
54
66
  mutable std::mutex secureKeysMutex_;
@@ -2,13 +2,19 @@
2
2
  #import <Foundation/Foundation.h>
3
3
  #import <Security/Security.h>
4
4
  #import <LocalAuthentication/LocalAuthentication.h>
5
+ #if TARGET_OS_IPHONE
6
+ #import <UIKit/UIKit.h>
7
+ #endif
5
8
 
6
9
  #include "SqliteDiskStore.hpp"
7
10
 
11
+ #include <chrono>
8
12
  #include <unordered_set>
9
13
  #include <utility>
10
14
  #include <vector>
11
15
 
16
+ #import <objc/message.h>
17
+
12
18
  namespace NitroStorage {
13
19
 
14
20
  // Storage strings are length-delimited; C-string conversion aliases keys at NUL.
@@ -318,8 +324,180 @@ static CFStringRef accessControlAttr(int level) {
318
324
  }
319
325
  }
320
326
 
321
- IOSStorageAdapterCpp::IOSStorageAdapterCpp() = default;
322
- IOSStorageAdapterCpp::~IOSStorageAdapterCpp() {}
327
+ #if TARGET_OS_IPHONE
328
+ static NSNotificationName const kProtectedDataBecameAvailable = UIApplicationProtectedDataDidBecomeAvailable;
329
+ static NSNotificationName const kProtectedDataWillBecomeUnavailable = UIApplicationProtectedDataWillBecomeUnavailable;
330
+ static NSNotificationName const kApplicationDidBecomeActive = UIApplicationDidBecomeActiveNotification;
331
+ static NSNotificationName const kApplicationWillEnterForeground = UIApplicationWillEnterForegroundNotification;
332
+ #else
333
+ static NSNotificationName const kProtectedDataBecameAvailable = @"UIApplicationProtectedDataDidBecomeAvailable";
334
+ static NSNotificationName const kProtectedDataWillBecomeUnavailable = @"UIApplicationProtectedDataWillBecomeUnavailable";
335
+ static NSNotificationName const kApplicationDidBecomeActive = @"UIApplicationDidBecomeActiveNotification";
336
+ static NSNotificationName const kApplicationWillEnterForeground = @"UIApplicationWillEnterForegroundNotification";
337
+ #endif
338
+
339
+ struct IOSStorageAdapterCpp::ProtectedDataState {
340
+ struct Listener {
341
+ size_t id;
342
+ std::function<void()> callback;
343
+ };
344
+
345
+ // Unknown until the first read on the main thread. Unknown reports
346
+ // unavailable so a locked device never looks open; a transition to
347
+ // available from Unknown or Unavailable notifies listeners.
348
+ enum Value : int { Unknown = 0, Available = 1, Unavailable = 2 };
349
+
350
+ std::atomic<int> value{Unknown};
351
+ std::mutex mutex;
352
+ std::vector<Listener> listeners;
353
+ size_t nextListenerId = 0;
354
+ NSArray<id>* observers = nil;
355
+ ProtectedDataReader reader;
356
+
357
+ bool isAvailable() const {
358
+ return value.load(std::memory_order_acquire) == Available;
359
+ }
360
+
361
+ void notifyBecameAvailable() {
362
+ std::vector<Listener> snapshot;
363
+ {
364
+ std::lock_guard<std::mutex> lock(mutex);
365
+ snapshot = listeners;
366
+ }
367
+ for (const auto& listener : snapshot) {
368
+ listener.callback();
369
+ }
370
+ }
371
+
372
+ void update(bool available) {
373
+ const int previous = value.exchange(available ? Available : Unavailable, std::memory_order_acq_rel);
374
+ if (!available || previous == Available) {
375
+ return;
376
+ }
377
+ notifyBecameAvailable();
378
+ }
379
+
380
+ // The seed only resolves Unknown. A notification delivered before the
381
+ // queued seed runs is newer than the read and must not be overwritten.
382
+ void seed(std::optional<bool> available) {
383
+ if (!available.has_value()) {
384
+ return;
385
+ }
386
+ int expected = Unknown;
387
+ if (value.compare_exchange_strong(expected, *available ? Available : Unavailable, std::memory_order_acq_rel)) {
388
+ if (*available) {
389
+ notifyBecameAvailable();
390
+ }
391
+ }
392
+ }
393
+
394
+ void reread(std::optional<bool> available) {
395
+ if (available.has_value()) {
396
+ update(*available);
397
+ }
398
+ }
399
+
400
+ static void refreshOnMain(const std::shared_ptr<ProtectedDataState>& state, bool seedOnly) {
401
+ if ([NSThread isMainThread]) {
402
+ seedOnly ? state->seed(state->reader()) : state->reread(state->reader());
403
+ return;
404
+ }
405
+ std::weak_ptr<ProtectedDataState> weakState = state;
406
+ dispatch_async(dispatch_get_main_queue(), ^{
407
+ if (auto alive = weakState.lock()) {
408
+ seedOnly ? alive->seed(alive->reader()) : alive->reread(alive->reader());
409
+ }
410
+ });
411
+ }
412
+ };
413
+
414
+ static std::optional<bool> readApplicationProtectedDataAvailability() {
415
+ if ([[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]) {
416
+ return true;
417
+ }
418
+ Class applicationClass = NSClassFromString(@"UIApplication");
419
+ if (applicationClass == nil || ![applicationClass respondsToSelector:@selector(sharedApplication)]) {
420
+ return true;
421
+ }
422
+ id application = ((id (*)(Class, SEL))objc_msgSend)(applicationClass, @selector(sharedApplication));
423
+ if (application == nil) {
424
+ return std::nullopt;
425
+ }
426
+ if (![application respondsToSelector:@selector(isProtectedDataAvailable)]) {
427
+ return true;
428
+ }
429
+ return ((BOOL (*)(id, SEL))objc_msgSend)(application, @selector(isProtectedDataAvailable));
430
+ }
431
+
432
+ IOSStorageAdapterCpp::IOSStorageAdapterCpp()
433
+ : IOSStorageAdapterCpp(&readApplicationProtectedDataAvailability) {}
434
+
435
+ IOSStorageAdapterCpp::IOSStorageAdapterCpp(ProtectedDataReader protectedDataReader)
436
+ : protectedData_(std::make_shared<ProtectedDataState>()) {
437
+ protectedData_->reader = std::move(protectedDataReader);
438
+ std::weak_ptr<ProtectedDataState> weakState = protectedData_;
439
+ NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
440
+ id available = [center addObserverForName:kProtectedDataBecameAvailable
441
+ object:nil
442
+ queue:nil
443
+ usingBlock:^(NSNotification*) {
444
+ if (auto state = weakState.lock()) {
445
+ state->update(true);
446
+ }
447
+ }];
448
+ id unavailable = [center addObserverForName:kProtectedDataWillBecomeUnavailable
449
+ object:nil
450
+ queue:nil
451
+ usingBlock:^(NSNotification*) {
452
+ if (auto state = weakState.lock()) {
453
+ state->update(false);
454
+ }
455
+ }];
456
+ // DidBecomeAvailable is not guaranteed after WillBecomeUnavailable when the
457
+ // user unlocks inside the grace window, so foregrounding re-reads the truth.
458
+ auto refresh = ^(NSNotification*) {
459
+ if (auto state = weakState.lock()) {
460
+ ProtectedDataState::refreshOnMain(state, false);
461
+ }
462
+ };
463
+ id active = [center addObserverForName:kApplicationDidBecomeActive object:nil queue:nil usingBlock:refresh];
464
+ id foreground = [center addObserverForName:kApplicationWillEnterForeground object:nil queue:nil usingBlock:refresh];
465
+ protectedData_->observers = @[available, unavailable, active, foreground];
466
+
467
+ ProtectedDataState::refreshOnMain(protectedData_, true);
468
+ }
469
+
470
+ IOSStorageAdapterCpp::~IOSStorageAdapterCpp() {
471
+ for (id observer in protectedData_->observers) {
472
+ [[NSNotificationCenter defaultCenter] removeObserver:observer];
473
+ }
474
+ }
475
+
476
+ bool IOSStorageAdapterCpp::isProtectedDataAvailable() {
477
+ return protectedData_->isAvailable();
478
+ }
479
+
480
+ std::function<void()> IOSStorageAdapterCpp::addProtectedDataAvailableListener(std::function<void()> listener) {
481
+ size_t id;
482
+ {
483
+ std::lock_guard<std::mutex> lock(protectedData_->mutex);
484
+ id = protectedData_->nextListenerId++;
485
+ protectedData_->listeners.push_back({id, std::move(listener)});
486
+ }
487
+ std::weak_ptr<ProtectedDataState> weakState = protectedData_;
488
+ return [weakState, id]() {
489
+ auto state = weakState.lock();
490
+ if (!state) return;
491
+ std::lock_guard<std::mutex> lock(state->mutex);
492
+ auto& listeners = state->listeners;
493
+ for (auto it = listeners.begin(); it != listeners.end(); ++it) {
494
+ if (it->id == id) {
495
+ listeners.erase(it);
496
+ return;
497
+ }
498
+ }
499
+ };
500
+ }
323
501
 
324
502
  void IOSStorageAdapterCpp::ensureDiskMigrated() {
325
503
  if (diskMigrated_.load(std::memory_order_acquire)) {
@@ -26,9 +26,11 @@ let AccessControl = exports.AccessControl = /*#__PURE__*/function (AccessControl
26
26
  let BiometricLevel = exports.BiometricLevel = /*#__PURE__*/function (BiometricLevel) {
27
27
  /** No biometric requirement (default). */
28
28
  BiometricLevel[BiometricLevel["None"] = 0] = "None";
29
- /** Require biometric or passcode for each access. */
29
+ /** iOS: Keychain user presence. Android: recent authentication when opening
30
+ * the protected store; later access uses its cached keyset. Web: no biometric enforcement. */
30
31
  BiometricLevel[BiometricLevel["BiometryOrPasscode"] = 1] = "BiometryOrPasscode";
31
- /** Require biometric only (no passcode fallback). */
32
+ /** Biometric-only Keychain/Keystore policy, without passcode fallback.
33
+ * Android authenticates when opening the store, not each access. Web: no biometric enforcement. */
32
34
  BiometricLevel[BiometricLevel["BiometryOnly"] = 2] = "BiometryOnly";
33
35
  return BiometricLevel;
34
36
  }({});
@@ -1 +1 @@
1
- {"version":3,"names":["StorageScope","exports","AccessControl","BiometricLevel"],"sourceRoot":"../../src","sources":["Storage.types.ts"],"mappings":";;;;;;IAAYA,YAAY,GAAAC,OAAA,CAAAD,YAAA,0BAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAMZE,aAAa,GAAAD,OAAA,CAAAC,aAAA,0BAAbA,aAAa;EACvB;EADUA,aAAa,CAAbA,aAAa;EAGvB;EAHUA,aAAa,CAAbA,aAAa;EAKvB;EALUA,aAAa,CAAbA,aAAa;EAOvB;EAPUA,aAAa,CAAbA,aAAa;EASvB;EATUA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAabC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EACxB;EADUA,cAAc,CAAdA,cAAc;EAGxB;EAHUA,cAAc,CAAdA,cAAc;EAKxB;EALUA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["StorageScope","exports","AccessControl","BiometricLevel"],"sourceRoot":"../../src","sources":["Storage.types.ts"],"mappings":";;;;;;IAAYA,YAAY,GAAAC,OAAA,CAAAD,YAAA,0BAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAMZE,aAAa,GAAAD,OAAA,CAAAC,aAAA,0BAAbA,aAAa;EACvB;EADUA,aAAa,CAAbA,aAAa;EAGvB;EAHUA,aAAa,CAAbA,aAAa;EAKvB;EALUA,aAAa,CAAbA,aAAa;EAOvB;EAPUA,aAAa,CAAbA,aAAa;EASvB;EATUA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAabC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EACxB;EADUA,cAAc,CAAdA,cAAc;EAGxB;AACF;EAJYA,cAAc,CAAdA,cAAc;EAMxB;AACF;EAPYA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
@@ -11,6 +11,7 @@ function createDurabilityCoordinator(options) {
11
11
  let nextGeneration = 0;
12
12
  let diskFlushScheduled = false;
13
13
  let diskWritesAsync = false;
14
+ let scheduledFlushErrorObserver;
14
15
  const pendingSecureWrites = new Map();
15
16
  let secureFlushScheduled = false;
16
17
  const securePromotionsInProgress = new Set();
@@ -114,6 +115,30 @@ function createDurabilityCoordinator(options) {
114
115
  clearPendingWrites(pendingSecureWrites, removeWrites);
115
116
  }
116
117
  }
118
+ function reportScheduledFlushError(scope, error) {
119
+ const observer = scheduledFlushErrorObserver;
120
+ if (observer === undefined) {
121
+ throw error;
122
+ }
123
+ observer({
124
+ scope,
125
+ error
126
+ });
127
+ }
128
+ function flushScheduledDiskWrites() {
129
+ try {
130
+ flushDiskWrites();
131
+ } catch (error) {
132
+ reportScheduledFlushError(_Storage.StorageScope.Disk, error);
133
+ }
134
+ }
135
+ function flushScheduledSecureWrites() {
136
+ try {
137
+ flushSecureWrites();
138
+ } catch (error) {
139
+ reportScheduledFlushError(_Storage.StorageScope.Secure, error);
140
+ }
141
+ }
117
142
  function scheduleDiskWrite(key, value) {
118
143
  const pendingWrite = {
119
144
  key,
@@ -125,7 +150,7 @@ function createDurabilityCoordinator(options) {
125
150
  return pendingWrite;
126
151
  }
127
152
  diskFlushScheduled = true;
128
- (0, _shared.runMicrotask)(flushDiskWrites);
153
+ (0, _shared.runMicrotask)(flushScheduledDiskWrites);
129
154
  return pendingWrite;
130
155
  }
131
156
  function scheduleSecureWrite(key, value, accessControl) {
@@ -142,7 +167,7 @@ function createDurabilityCoordinator(options) {
142
167
  return pendingWrite;
143
168
  }
144
169
  secureFlushScheduled = true;
145
- (0, _shared.runMicrotask)(flushSecureWrites);
170
+ (0, _shared.runMicrotask)(flushScheduledSecureWrites);
146
171
  return pendingWrite;
147
172
  }
148
173
  function runSecurePromotion(key, promotion) {
@@ -160,6 +185,9 @@ function createDurabilityCoordinator(options) {
160
185
  }
161
186
  }
162
187
  return {
188
+ setScheduledFlushErrorObserver(observer) {
189
+ scheduledFlushErrorObserver = observer;
190
+ },
163
191
  setDiskWritesAsync(enabled) {
164
192
  diskWritesAsync = enabled;
165
193
  if (!enabled) {
@@ -1 +1 @@
1
- {"version":3,"names":["_shared","require","_Storage","createDurabilityCoordinator","options","pendingDiskWrites","Map","nextGeneration","diskFlushScheduled","diskWritesAsync","pendingSecureWrites","secureFlushScheduled","securePromotionsInProgress","Set","clearPendingWrites","pendingWrites","writes","forEach","write","get","key","delete","restorePendingWrites","has","set","flushDiskWrites","size","Array","from","values","setWrites","filter","value","undefined","removeWrites","length","backend","setBatch","map","StorageScope","Disk","error","removeBatch","flushSecureWrites","groupedSetWrites","accessControl","push","resolvedAccessControl","resolveSecureDefaultAccessControl","existingGroup","group","setSecureAccessControl","Secure","scheduleDiskWrite","pendingWrite","generation","runMicrotask","scheduleSecureWrite","runSecurePromotion","promotion","Error","add","setDiskWritesAsync","enabled","isDiskWritesAsync","hasPendingDiskWrite","hasPendingSecureWrite","getPendingDiskWrite","getPendingSecureWrite","clearPendingDiskWrite","clearPendingSecureWrite","clearPendingDiskWriteIf","clearPendingSecureWriteIf","clearAllPendingDiskWrites","clear","clearAllPendingSecureWrites"],"sourceRoot":"../../../src","sources":["core/durability.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAiCO,SAASE,2BAA2BA,CAACC,OAG3C,EAAyB;EAGxB,MAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAA2B,CAAC;EAC7D,IAAIC,cAAc,GAAG,CAAC;EACtB,IAAIC,kBAAkB,GAAG,KAAK;EAC9B,IAAIC,eAAe,GAAG,KAAK;EAC3B,MAAMC,mBAAmB,GAAG,IAAIJ,GAAG,CAA6B,CAAC;EACjE,IAAIK,oBAAoB,GAAG,KAAK;EAChC,MAAMC,0BAA0B,GAAG,IAAIC,GAAG,CAAS,CAAC;EAEpD,SAASC,kBAAkBA,CACzBC,aAA6B,EAC7BC,MAAoB,EACd;IACNA,MAAM,CAACC,OAAO,CAAEC,KAAK,IAAK;MACxB,IAAIH,aAAa,CAACI,GAAG,CAACD,KAAK,CAACE,GAAG,CAAC,KAAKF,KAAK,EAAE;QAC1CH,aAAa,CAACM,MAAM,CAACH,KAAK,CAACE,GAAG,CAAC;MACjC;IACF,CAAC,CAAC;EACJ;EAEA,SAASE,oBAAoBA,CAC3BP,aAA6B,EAC7BC,MAAoB,EACd;IACNA,MAAM,CAACC,OAAO,CAAEC,KAAK,IAAK;MACxB,IAAI,CAACH,aAAa,CAACQ,GAAG,CAACL,KAAK,CAACE,GAAG,CAAC,EAAE;QACjCL,aAAa,CAACS,GAAG,CAACN,KAAK,CAACE,GAAG,EAAEF,KAAK,CAAC;MACrC;IACF,CAAC,CAAC;EACJ;EAEA,SAASO,eAAeA,CAAA,EAAS;IAC/BjB,kBAAkB,GAAG,KAAK;IAE1B,IAAIH,iBAAiB,CAACqB,IAAI,KAAK,CAAC,EAAE;MAChC;IACF;IAEA,MAAMV,MAAM,GAAGW,KAAK,CAACC,IAAI,CAACvB,iBAAiB,CAACwB,MAAM,CAAC,CAAC,CAAC;IAErD,MAAMC,SAAS,GAAGd,MAAM,CAACe,MAAM,CAAEb,KAAK,IAAKA,KAAK,CAACc,KAAK,KAAKC,SAAS,CAAC;IACrE,MAAMC,YAAY,GAAGlB,MAAM,CAACe,MAAM,CAAEb,KAAK,IAAKA,KAAK,CAACc,KAAK,KAAKC,SAAS,CAAC;IAExE,IAAIH,SAAS,CAACK,MAAM,GAAG,CAAC,EAAE;MACxB,IAAI;QACF/B,OAAO,CAACgC,OAAO,CAACC,QAAQ,CACtBP,SAAS,CAACQ,GAAG,CAAC,CAAC;UAAElB;QAAI,CAAC,KAAKA,GAAG,CAAC,EAC/BU,SAAS,CAACQ,GAAG,CAAC,CAAC;UAAEN;QAAM,CAAC,KAAKA,KAAe,CAAC,EAC7CO,qBAAY,CAACC,IACf,CAAC;MACH,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdnB,oBAAoB,CAACjB,iBAAiB,EAAEyB,SAAS,CAAC;QAClD,MAAMW,KAAK;MACb;MACA3B,kBAAkB,CAACT,iBAAiB,EAAEyB,SAAS,CAAC;IAClD;IAEA,IAAII,YAAY,CAACC,MAAM,GAAG,CAAC,EAAE;MAC3B,IAAI;QACF/B,OAAO,CAACgC,OAAO,CAACM,WAAW,CACzBR,YAAY,CAACI,GAAG,CAAC,CAAC;UAAElB;QAAI,CAAC,KAAKA,GAAG,CAAC,EAClCmB,qBAAY,CAACC,IACf,CAAC;MACH,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdnB,oBAAoB,CAACjB,iBAAiB,EAAE6B,YAAY,CAAC;QACrD,MAAMO,KAAK;MACb;MACA3B,kBAAkB,CAACT,iBAAiB,EAAE6B,YAAY,CAAC;IACrD;EACF;EAEA,SAASS,iBAAiBA,CAAA,EAAS;IACjChC,oBAAoB,GAAG,KAAK;IAE5B,IAAID,mBAAmB,CAACgB,IAAI,KAAK,CAAC,EAAE;MAClC;IACF;IAEA,MAAMV,MAAM,GAAGW,KAAK,CAACC,IAAI,CAAClB,mBAAmB,CAACmB,MAAM,CAAC,CAAC,CAAC;IAEvD,MAAMe,gBAAgB,GAAG,IAAItC,GAAG,CAG9B,CAAC;IACH,MAAM4B,YAAkC,GAAG,EAAE;IAE7ClB,MAAM,CAACC,OAAO,CAAEC,KAAK,IAAK;MACxB,MAAM;QAAEc,KAAK;QAAEa;MAAc,CAAC,GAAG3B,KAAK;MACtC,IAAIc,KAAK,KAAKC,SAAS,EAAE;QACvBC,YAAY,CAACY,IAAI,CAAC5B,KAAK,CAAC;MAC1B,CAAC,MAAM;QACL,MAAM6B,qBAAqB,GACzBF,aAAa,IAAIzC,OAAO,CAAC4C,iCAAiC,CAAC,CAAC;QAC9D,MAAMC,aAAa,GAAGL,gBAAgB,CAACzB,GAAG,CAAC4B,qBAAqB,CAAC;QACjE,MAAMG,KAAK,GAAGD,aAAa,IAAI;UAAEjC,MAAM,EAAE;QAAG,CAAC;QAC7CkC,KAAK,CAAClC,MAAM,CAAC8B,IAAI,CAAC5B,KAAK,CAAC;QACxB,IAAI,CAAC+B,aAAa,EAAE;UAClBL,gBAAgB,CAACpB,GAAG,CAACuB,qBAAqB,EAAEG,KAAK,CAAC;QACpD;MACF;IACF,CAAC,CAAC;IAEF,KAAK,MAAM,CAACL,aAAa,EAAEK,KAAK,CAAC,IAAIN,gBAAgB,EAAE;MACrD,IAAI;QACFxC,OAAO,CAACgC,OAAO,CAACe,sBAAsB,CAACN,aAAa,CAAC;QACrDzC,OAAO,CAACgC,OAAO,CAACC,QAAQ,CACtBa,KAAK,CAAClC,MAAM,CAACsB,GAAG,CAAC,CAAC;UAAElB;QAAI,CAAC,KAAKA,GAAG,CAAC,EAClC8B,KAAK,CAAClC,MAAM,CAACsB,GAAG,CAAC,CAAC;UAAEN;QAAM,CAAC,KAAKA,KAAe,CAAC,EAChDO,qBAAY,CAACa,MACf,CAAC;MACH,CAAC,CAAC,OAAOX,KAAK,EAAE;QACdnB,oBAAoB,CAACZ,mBAAmB,EAAEwC,KAAK,CAAClC,MAAM,CAAC;QACvD,MAAMyB,KAAK;MACb;MACA3B,kBAAkB,CAACJ,mBAAmB,EAAEwC,KAAK,CAAClC,MAAM,CAAC;IACvD;IAEA,IAAIkB,YAAY,CAACC,MAAM,GAAG,CAAC,EAAE;MAC3B,IAAI;QACF/B,OAAO,CAACgC,OAAO,CAACM,WAAW,CACzBR,YAAY,CAACI,GAAG,CAAC,CAAC;UAAElB;QAAI,CAAC,KAAKA,GAAG,CAAC,EAClCmB,qBAAY,CAACa,MACf,CAAC;MACH,CAAC,CAAC,OAAOX,KAAK,EAAE;QACdnB,oBAAoB,CAACZ,mBAAmB,EAAEwB,YAAY,CAAC;QACvD,MAAMO,KAAK;MACb;MACA3B,kBAAkB,CAACJ,mBAAmB,EAAEwB,YAAY,CAAC;IACvD;EACF;EAEA,SAASmB,iBAAiBA,CACxBjC,GAAW,EACXY,KAAyB,EACP;IAClB,MAAMsB,YAA8B,GAAG;MACrClC,GAAG;MACHY,KAAK;MACLuB,UAAU,EAAE,EAAEhD;IAChB,CAAC;IACDF,iBAAiB,CAACmB,GAAG,CAACJ,GAAG,EAAEkC,YAAY,CAAC;IACxC,IAAI9C,kBAAkB,EAAE;MACtB,OAAO8C,YAAY;IACrB;IACA9C,kBAAkB,GAAG,IAAI;IACzB,IAAAgD,oBAAY,EAAC/B,eAAe,CAAC;IAC7B,OAAO6B,YAAY;EACrB;EAEA,SAASG,mBAAmBA,CAC1BrC,GAAW,EACXY,KAAyB,EACzBa,aAA6B,EACT;IACpB,MAAMS,YAAgC,GAAG;MACvClC,GAAG;MACHY,KAAK;MACLuB,UAAU,EAAE,EAAEhD;IAChB,CAAC;IACD,IAAIsC,aAAa,KAAKZ,SAAS,EAAE;MAC/BqB,YAAY,CAACT,aAAa,GAAGA,aAAa;IAC5C;IACAnC,mBAAmB,CAACc,GAAG,CAACJ,GAAG,EAAEkC,YAAY,CAAC;IAC1C,IAAI3C,oBAAoB,EAAE;MACxB,OAAO2C,YAAY;IACrB;IACA3C,oBAAoB,GAAG,IAAI;IAC3B,IAAA6C,oBAAY,EAACb,iBAAiB,CAAC;IAC/B,OAAOW,YAAY;EACrB;EAEA,SAASI,kBAAkBA,CAAItC,GAAW,EAAEuC,SAAkB,EAAK;IACjE,IAAI/C,0BAA0B,CAACW,GAAG,CAACH,GAAG,CAAC,EAAE;MACvC,MAAM,IAAIwC,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IAEAhD,0BAA0B,CAACiD,GAAG,CAACzC,GAAG,CAAC;IACnC,IAAI;MACF,IAAIV,mBAAmB,CAACa,GAAG,CAACH,GAAG,CAAC,EAAE;QAChCuB,iBAAiB,CAAC,CAAC;MACrB;MACA,OAAOgB,SAAS,CAAC,CAAC;IACpB,CAAC,SAAS;MACR/C,0BAA0B,CAACS,MAAM,CAACD,GAAG,CAAC;IACxC;EACF;EAEA,OAAO;IACL0C,kBAAkBA,CAACC,OAAO,EAAE;MAC1BtD,eAAe,GAAGsD,OAAO;MACzB,IAAI,CAACA,OAAO,EAAE;QACZtC,eAAe,CAAC,CAAC;MACnB;IACF,CAAC;IACDuC,iBAAiB,EAAEA,CAAA,KAAMvD,eAAe;IACxCwD,mBAAmB,EAAG7C,GAAG,IAAKf,iBAAiB,CAACkB,GAAG,CAACH,GAAG,CAAC;IACxD8C,qBAAqB,EAAG9C,GAAG,IAAKV,mBAAmB,CAACa,GAAG,CAACH,GAAG,CAAC;IAC5D+C,mBAAmB,EAAG/C,GAAG,IAAKf,iBAAiB,CAACc,GAAG,CAACC,GAAG,CAAC;IACxDgD,qBAAqB,EAAGhD,GAAG,IAAKV,mBAAmB,CAACS,GAAG,CAACC,GAAG,CAAC;IAC5DiD,qBAAqB,EAAGjD,GAAG,IAAK;MAC9Bf,iBAAiB,CAACgB,MAAM,CAACD,GAAG,CAAC;IAC/B,CAAC;IACDkD,uBAAuB,EAAGlD,GAAG,IAAK;MAChCV,mBAAmB,CAACW,MAAM,CAACD,GAAG,CAAC;IACjC,CAAC;IACDmD,uBAAuB,EAAGrD,KAAK,IAAK;MAClC,IAAIb,iBAAiB,CAACc,GAAG,CAACD,KAAK,CAACE,GAAG,CAAC,KAAKF,KAAK,EAAE;QAC9Cb,iBAAiB,CAACgB,MAAM,CAACH,KAAK,CAACE,GAAG,CAAC;MACrC;IACF,CAAC;IACDoD,yBAAyB,EAAGtD,KAAK,IAAK;MACpC,IAAIR,mBAAmB,CAACS,GAAG,CAACD,KAAK,CAACE,GAAG,CAAC,KAAKF,KAAK,EAAE;QAChDR,mBAAmB,CAACW,MAAM,CAACH,KAAK,CAACE,GAAG,CAAC;MACvC;IACF,CAAC;IACDqD,yBAAyB,EAAEA,CAAA,KAAM;MAC/BpE,iBAAiB,CAACqE,KAAK,CAAC,CAAC;IAC3B,CAAC;IACDC,2BAA2B,EAAEA,CAAA,KAAM;MACjCjE,mBAAmB,CAACgE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACDrB,iBAAiB;IACjBI,mBAAmB;IACnBhC,eAAe;IACfkB,iBAAiB;IACjBe;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_shared","require","_Storage","createDurabilityCoordinator","options","pendingDiskWrites","Map","nextGeneration","diskFlushScheduled","diskWritesAsync","scheduledFlushErrorObserver","pendingSecureWrites","secureFlushScheduled","securePromotionsInProgress","Set","clearPendingWrites","pendingWrites","writes","forEach","write","get","key","delete","restorePendingWrites","has","set","flushDiskWrites","size","Array","from","values","setWrites","filter","value","undefined","removeWrites","length","backend","setBatch","map","StorageScope","Disk","error","removeBatch","flushSecureWrites","groupedSetWrites","accessControl","push","resolvedAccessControl","resolveSecureDefaultAccessControl","existingGroup","group","setSecureAccessControl","Secure","reportScheduledFlushError","scope","observer","flushScheduledDiskWrites","flushScheduledSecureWrites","scheduleDiskWrite","pendingWrite","generation","runMicrotask","scheduleSecureWrite","runSecurePromotion","promotion","Error","add","setScheduledFlushErrorObserver","setDiskWritesAsync","enabled","isDiskWritesAsync","hasPendingDiskWrite","hasPendingSecureWrite","getPendingDiskWrite","getPendingSecureWrite","clearPendingDiskWrite","clearPendingSecureWrite","clearPendingDiskWriteIf","clearPendingSecureWriteIf","clearAllPendingDiskWrites","clear","clearAllPendingSecureWrites"],"sourceRoot":"../../../src","sources":["core/durability.ts"],"mappings":"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","ignoreList":[]}
@@ -64,7 +64,7 @@ Object.defineProperty(exports, "migrateFromMMKV", {
64
64
  return _migration.migrateFromMMKV;
65
65
  }
66
66
  });
67
- exports.setBatch = exports.secureItem = exports.runTransaction = exports.removeBatch = exports.registerMigration = exports.migrateToLatest = void 0;
67
+ exports.setBatch = exports.secureItem = exports.runTransaction = exports.removeBatch = exports.registerMigration = exports.migrateToLatest = exports.migrateSecureAccessControl = void 0;
68
68
  exports.setWebDiskStorageBackend = setWebDiskStorageBackend;
69
69
  exports.setWebSecureStorageBackend = setWebSecureStorageBackend;
70
70
  exports.storage = void 0;
@@ -236,6 +236,7 @@ function buildNativeAdapter(internals) {
236
236
  backend: nativeBackend,
237
237
  changeSource: "native",
238
238
  applyAccessControlOnSecureRawWrite: true,
239
+ supportsSecureAccessControlMigration: () => _reactNative.Platform.OS === "ios",
239
240
  ensureScopeSubscription: ensureNativeScopeSubscription,
240
241
  maybeCleanupScopeSubscription: maybeCleanupNativeScopeSubscription,
241
242
  onWillEmitChanges: (scope, keys, operation, source) => {
@@ -266,6 +267,19 @@ const storage = exports.storage = {
266
267
  getStorageModule().setSecureAccessControl(level);
267
268
  });
268
269
  },
270
+ isProtectedDataAvailable: () => {
271
+ const module = getStorageModule();
272
+ return typeof module.isProtectedDataAvailable === "function" ? module.isProtectedDataAvailable() : true;
273
+ },
274
+ onProtectedDataAvailable: listener => {
275
+ (0, _shared.assertProtectedDataListener)(listener);
276
+ const module = getStorageModule();
277
+ if (typeof module.onProtectedDataAvailable !== "function") {
278
+ return () => {};
279
+ }
280
+ const unsubscribe = module.onProtectedDataAvailable(listener);
281
+ return typeof unsubscribe === "function" ? unsubscribe : () => {};
282
+ },
269
283
  setSecureWritesAsync: enabled => {
270
284
  internals.measureOperation("storage:setSecureWritesAsync", _Storage.StorageScope.Secure, () => {
271
285
  getStorageModule().setSecureWritesAsync(enabled);
@@ -318,6 +332,7 @@ const setBatch = exports.setBatch = core.setBatch;
318
332
  const removeBatch = exports.removeBatch = core.removeBatch;
319
333
  const registerMigration = exports.registerMigration = core.registerMigration;
320
334
  const migrateToLatest = exports.migrateToLatest = core.migrateToLatest;
335
+ const migrateSecureAccessControl = exports.migrateSecureAccessControl = core.migrateSecureAccessControl;
321
336
  const runTransaction = exports.runTransaction = core.runTransaction;
322
337
  const createSecureAuthStorage = exports.createSecureAuthStorage = core.createSecureAuthStorage;
323
338
  function setWebSecureStorageBackend(_backend) {
@@ -1 +1 @@
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAIA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAMA,IAAAM,YAAA,GAAAN,OAAA;AAYA,IAAAO,QAAA,GAAAP,OAAA;AA4BA,IAAAQ,UAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AAkCA,IAAAU,mBAAA,GAAAV,OAAA;AAiTA,IAAAW,aAAA,GAAAX,OAAA;AA1SA,IAAIY,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,IAAIiC,4BAA4B,CAACjC,KAAK,EAAED,GAAG,CAAC,EAAE;QAC5C,IAAAgD,0BAAkB,EAACvB,SAAS,CAACsB,kBAAkB,CAAC9C,KAAK,CAAC,EAAED,GAAG,CAAC;QAC5D;MACF;MACA,MAAMiD,QAAQ,GACZhD,KAAK,KAAK4B,qBAAY,CAACE,MAAM,GACzBK,SAAS,GACTX,SAAS,CAACyB,kBAAkB,CAACjD,KAAK,EAAED,GAAG,CAAC;MAC9C,IAAIC,KAAK,KAAK4B,qBAAY,CAACE,MAAM,EAAE;QACjCN,SAAS,CAAC0B,kBAAkB,CAAClD,KAAK,EAAED,GAAG,CAAC;MAC1C,CAAC,MAAM;QACLyB,SAAS,CAAC2B,aAAa,CAACnD,KAAK,EAAED,GAAG,EAAEG,KAAK,CAAC;MAC5C;MACA,IAAA6C,0BAAkB,EAACvB,SAAS,CAACsB,kBAAkB,CAAC9C,KAAK,CAAC,EAAED,GAAG,CAAC;MAC5DyB,SAAS,CAAC4B,aAAa,CACrBpD,KAAK,EACLD,GAAG,EACHiD,QAAQ,KAAKb,SAAS,GAClBA,SAAS,GACT,IAAAkB,mCAAyB,EAACL,QAAQ,CAAC,EACvC9C,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,QAAQ;MACdC,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;AAWF;AACA;AACA;AACA;AACA;AACO,MAAMC,sBAAgE,GAAA7C,OAAA,CAAA6C,sBAAA,GAC3EC,wCAAiC","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","supportsSecureAccessControlMigration","Platform","OS","ensureScopeSubscription","maybeCleanupScopeSubscription","onWillEmitChanges","operation","source","Memory","forEach","getSecureMetadataProfile","encrypted","hardwareBacked","core","createStorageCore","secureWritesBuffered","DEFAULT_SECURE_WRITES_ASYNC","storage","exports","setAccessControl","measureOperation","assertAccessControlLevel","setSecureDefaultAccessControl","isProtectedDataAvailable","module","onProtectedDataAvailable","listener","assertProtectedDataListener","setSecureWritesAsync","enabled","setKeychainAccessGroup","group","getCapabilities","platform","disk","secure","writeBuffering","resolveNativeWriteBuffering","errorClassification","getSecurityCapabilities","secureStorage","accessControl","keychainAccessGroup","biometric","prompt","biometryOnly","biometryOrPasscode","metadata","perKey","listsWithoutValues","persistsTimestamps","createStorageItem","memoryItem","diskItem","secureItem","createSetItem","registerMigration","migrateToLatest","migrateSecureAccessControl","runTransaction","createSecureAuthStorage","setWebSecureStorageBackend","_backend","getWebSecureStorageBackend","setWebDiskStorageBackend","getWebDiskStorageBackend","flushWebStorageBackends","createIndexedDBBackend","createIndexedDBBackendFromSubpath"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}