@formo/analytics-react-native 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +302 -0
- package/lib/commonjs/FormoAnalytics.js +526 -0
- package/lib/commonjs/FormoAnalytics.js.map +1 -0
- package/lib/commonjs/FormoAnalyticsProvider.js +265 -0
- package/lib/commonjs/FormoAnalyticsProvider.js.map +1 -0
- package/lib/commonjs/constants/config.js +69 -0
- package/lib/commonjs/constants/config.js.map +1 -0
- package/lib/commonjs/constants/events.js +30 -0
- package/lib/commonjs/constants/events.js.map +1 -0
- package/lib/commonjs/constants/index.js +39 -0
- package/lib/commonjs/constants/index.js.map +1 -0
- package/lib/commonjs/constants/storage.js +23 -0
- package/lib/commonjs/constants/storage.js.map +1 -0
- package/lib/commonjs/index.js +65 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/lib/consent/index.js +56 -0
- package/lib/commonjs/lib/consent/index.js.map +1 -0
- package/lib/commonjs/lib/event/EventFactory.js +493 -0
- package/lib/commonjs/lib/event/EventFactory.js.map +1 -0
- package/lib/commonjs/lib/event/EventManager.js +46 -0
- package/lib/commonjs/lib/event/EventManager.js.map +1 -0
- package/lib/commonjs/lib/event/EventQueue.js +290 -0
- package/lib/commonjs/lib/event/EventQueue.js.map +1 -0
- package/lib/commonjs/lib/event/index.js +50 -0
- package/lib/commonjs/lib/event/index.js.map +1 -0
- package/lib/commonjs/lib/event/types.js +6 -0
- package/lib/commonjs/lib/event/types.js.map +1 -0
- package/lib/commonjs/lib/lifecycle/index.js +196 -0
- package/lib/commonjs/lib/lifecycle/index.js.map +1 -0
- package/lib/commonjs/lib/logger/index.js +48 -0
- package/lib/commonjs/lib/logger/index.js.map +1 -0
- package/lib/commonjs/lib/session/index.js +109 -0
- package/lib/commonjs/lib/session/index.js.map +1 -0
- package/lib/commonjs/lib/storage/AsyncStorageAdapter.js +164 -0
- package/lib/commonjs/lib/storage/AsyncStorageAdapter.js.map +1 -0
- package/lib/commonjs/lib/storage/MemoryStorage.js +41 -0
- package/lib/commonjs/lib/storage/MemoryStorage.js.map +1 -0
- package/lib/commonjs/lib/storage/StorageBlueprint.js +24 -0
- package/lib/commonjs/lib/storage/StorageBlueprint.js.map +1 -0
- package/lib/commonjs/lib/storage/StorageManager.js +126 -0
- package/lib/commonjs/lib/storage/StorageManager.js.map +1 -0
- package/lib/commonjs/lib/storage/index.js +49 -0
- package/lib/commonjs/lib/storage/index.js.map +1 -0
- package/lib/commonjs/lib/storage/types.js +2 -0
- package/lib/commonjs/lib/storage/types.js.map +1 -0
- package/lib/commonjs/lib/wagmi/WagmiEventHandler.js +445 -0
- package/lib/commonjs/lib/wagmi/WagmiEventHandler.js.map +1 -0
- package/lib/commonjs/lib/wagmi/index.js +28 -0
- package/lib/commonjs/lib/wagmi/index.js.map +1 -0
- package/lib/commonjs/lib/wagmi/types.js +2 -0
- package/lib/commonjs/lib/wagmi/types.js.map +1 -0
- package/lib/commonjs/types/base.js +6 -0
- package/lib/commonjs/types/base.js.map +1 -0
- package/lib/commonjs/types/events.js +22 -0
- package/lib/commonjs/types/events.js.map +1 -0
- package/lib/commonjs/types/index.js +28 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/utils/address.js +82 -0
- package/lib/commonjs/utils/address.js.map +1 -0
- package/lib/commonjs/utils/hash.js +30 -0
- package/lib/commonjs/utils/hash.js.map +1 -0
- package/lib/commonjs/utils/helpers.js +116 -0
- package/lib/commonjs/utils/helpers.js.map +1 -0
- package/lib/commonjs/utils/index.js +61 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/timestamp.js +34 -0
- package/lib/commonjs/utils/timestamp.js.map +1 -0
- package/lib/commonjs/utils/trafficSource.js +147 -0
- package/lib/commonjs/utils/trafficSource.js.map +1 -0
- package/lib/commonjs/version.js +10 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/FormoAnalytics.js +519 -0
- package/lib/module/FormoAnalytics.js.map +1 -0
- package/lib/module/FormoAnalyticsProvider.js +256 -0
- package/lib/module/FormoAnalyticsProvider.js.map +1 -0
- package/lib/module/constants/config.js +62 -0
- package/lib/module/constants/config.js.map +1 -0
- package/lib/module/constants/events.js +24 -0
- package/lib/module/constants/events.js.map +1 -0
- package/lib/module/constants/index.js +4 -0
- package/lib/module/constants/index.js.map +1 -0
- package/lib/module/constants/storage.js +17 -0
- package/lib/module/constants/storage.js.map +1 -0
- package/lib/module/index.js +51 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/lib/consent/index.js +49 -0
- package/lib/module/lib/consent/index.js.map +1 -0
- package/lib/module/lib/event/EventFactory.js +488 -0
- package/lib/module/lib/event/EventFactory.js.map +1 -0
- package/lib/module/lib/event/EventManager.js +41 -0
- package/lib/module/lib/event/EventManager.js.map +1 -0
- package/lib/module/lib/event/EventQueue.js +283 -0
- package/lib/module/lib/event/EventQueue.js.map +1 -0
- package/lib/module/lib/event/index.js +5 -0
- package/lib/module/lib/event/index.js.map +1 -0
- package/lib/module/lib/event/types.js +2 -0
- package/lib/module/lib/event/types.js.map +1 -0
- package/lib/module/lib/lifecycle/index.js +190 -0
- package/lib/module/lib/lifecycle/index.js.map +1 -0
- package/lib/module/lib/logger/index.js +42 -0
- package/lib/module/lib/logger/index.js.map +1 -0
- package/lib/module/lib/session/index.js +92 -0
- package/lib/module/lib/session/index.js.map +1 -0
- package/lib/module/lib/storage/AsyncStorageAdapter.js +158 -0
- package/lib/module/lib/storage/AsyncStorageAdapter.js.map +1 -0
- package/lib/module/lib/storage/MemoryStorage.js +35 -0
- package/lib/module/lib/storage/MemoryStorage.js.map +1 -0
- package/lib/module/lib/storage/StorageBlueprint.js +18 -0
- package/lib/module/lib/storage/StorageBlueprint.js.map +1 -0
- package/lib/module/lib/storage/StorageManager.js +115 -0
- package/lib/module/lib/storage/StorageManager.js.map +1 -0
- package/lib/module/lib/storage/index.js +5 -0
- package/lib/module/lib/storage/index.js.map +1 -0
- package/lib/module/lib/storage/types.js +2 -0
- package/lib/module/lib/storage/types.js.map +1 -0
- package/lib/module/lib/wagmi/WagmiEventHandler.js +439 -0
- package/lib/module/lib/wagmi/WagmiEventHandler.js.map +1 -0
- package/lib/module/lib/wagmi/index.js +3 -0
- package/lib/module/lib/wagmi/index.js.map +1 -0
- package/lib/module/lib/wagmi/types.js +2 -0
- package/lib/module/lib/wagmi/types.js.map +1 -0
- package/lib/module/types/base.js +2 -0
- package/lib/module/types/base.js.map +1 -0
- package/lib/module/types/events.js +17 -0
- package/lib/module/types/events.js.map +1 -0
- package/lib/module/types/index.js +3 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/utils/address.js +74 -0
- package/lib/module/utils/address.js.map +1 -0
- package/lib/module/utils/hash.js +24 -0
- package/lib/module/utils/hash.js.map +1 -0
- package/lib/module/utils/helpers.js +105 -0
- package/lib/module/utils/helpers.js.map +1 -0
- package/lib/module/utils/index.js +6 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/timestamp.js +26 -0
- package/lib/module/utils/timestamp.js.map +1 -0
- package/lib/module/utils/trafficSource.js +137 -0
- package/lib/module/utils/trafficSource.js.map +1 -0
- package/lib/module/version.js +4 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/FormoAnalytics.d.ts +163 -0
- package/lib/typescript/FormoAnalytics.d.ts.map +1 -0
- package/lib/typescript/FormoAnalyticsProvider.d.ts +29 -0
- package/lib/typescript/FormoAnalyticsProvider.d.ts.map +1 -0
- package/lib/typescript/constants/config.d.ts +8 -0
- package/lib/typescript/constants/config.d.ts.map +1 -0
- package/lib/typescript/constants/events.d.ts +23 -0
- package/lib/typescript/constants/events.d.ts.map +1 -0
- package/lib/typescript/constants/index.d.ts +4 -0
- package/lib/typescript/constants/index.d.ts.map +1 -0
- package/lib/typescript/constants/storage.d.ts +10 -0
- package/lib/typescript/constants/storage.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +44 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/lib/consent/index.d.ts +13 -0
- package/lib/typescript/lib/consent/index.d.ts.map +1 -0
- package/lib/typescript/lib/event/EventFactory.d.ts +61 -0
- package/lib/typescript/lib/event/EventFactory.d.ts.map +1 -0
- package/lib/typescript/lib/event/EventManager.d.ts +17 -0
- package/lib/typescript/lib/event/EventManager.d.ts.map +1 -0
- package/lib/typescript/lib/event/EventQueue.d.ts +74 -0
- package/lib/typescript/lib/event/EventQueue.d.ts.map +1 -0
- package/lib/typescript/lib/event/index.d.ts +5 -0
- package/lib/typescript/lib/event/index.d.ts.map +1 -0
- package/lib/typescript/lib/event/types.d.ts +23 -0
- package/lib/typescript/lib/event/types.d.ts.map +1 -0
- package/lib/typescript/lib/lifecycle/index.d.ts +46 -0
- package/lib/typescript/lib/lifecycle/index.d.ts.map +1 -0
- package/lib/typescript/lib/logger/index.d.ts +19 -0
- package/lib/typescript/lib/logger/index.d.ts.map +1 -0
- package/lib/typescript/lib/session/index.d.ts +41 -0
- package/lib/typescript/lib/session/index.d.ts.map +1 -0
- package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts +48 -0
- package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts.map +1 -0
- package/lib/typescript/lib/storage/MemoryStorage.d.ts +18 -0
- package/lib/typescript/lib/storage/MemoryStorage.d.ts.map +1 -0
- package/lib/typescript/lib/storage/StorageBlueprint.d.ts +21 -0
- package/lib/typescript/lib/storage/StorageBlueprint.d.ts.map +1 -0
- package/lib/typescript/lib/storage/StorageManager.d.ts +45 -0
- package/lib/typescript/lib/storage/StorageManager.d.ts.map +1 -0
- package/lib/typescript/lib/storage/index.d.ts +5 -0
- package/lib/typescript/lib/storage/index.d.ts.map +1 -0
- package/lib/typescript/lib/storage/types.d.ts +22 -0
- package/lib/typescript/lib/storage/types.d.ts.map +1 -0
- package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts +104 -0
- package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts.map +1 -0
- package/lib/typescript/lib/wagmi/index.d.ts +3 -0
- package/lib/typescript/lib/wagmi/index.d.ts.map +1 -0
- package/lib/typescript/lib/wagmi/types.d.ts +54 -0
- package/lib/typescript/lib/wagmi/types.d.ts.map +1 -0
- package/lib/typescript/types/base.d.ts +219 -0
- package/lib/typescript/types/base.d.ts.map +1 -0
- package/lib/typescript/types/events.d.ts +111 -0
- package/lib/typescript/types/events.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +3 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/utils/address.d.ts +25 -0
- package/lib/typescript/utils/address.d.ts.map +1 -0
- package/lib/typescript/utils/hash.d.ts +10 -0
- package/lib/typescript/utils/hash.d.ts.map +1 -0
- package/lib/typescript/utils/helpers.d.ts +26 -0
- package/lib/typescript/utils/helpers.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +6 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/lib/typescript/utils/timestamp.d.ts +13 -0
- package/lib/typescript/utils/timestamp.d.ts.map +1 -0
- package/lib/typescript/utils/trafficSource.d.ts +30 -0
- package/lib/typescript/utils/trafficSource.d.ts.map +1 -0
- package/lib/typescript/version.d.ts +2 -0
- package/lib/typescript/version.d.ts.map +1 -0
- package/package.json +143 -0
- package/src/FormoAnalytics.ts +685 -0
- package/src/FormoAnalyticsProvider.tsx +296 -0
- package/src/constants/config.ts +62 -0
- package/src/constants/events.ts +26 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/storage.ts +16 -0
- package/src/index.ts +55 -0
- package/src/lib/consent/index.ts +52 -0
- package/src/lib/event/EventFactory.ts +682 -0
- package/src/lib/event/EventManager.ts +50 -0
- package/src/lib/event/EventQueue.ts +371 -0
- package/src/lib/event/index.ts +4 -0
- package/src/lib/event/types.ts +107 -0
- package/src/lib/lifecycle/index.ts +215 -0
- package/src/lib/logger/index.ts +56 -0
- package/src/lib/session/index.ts +103 -0
- package/src/lib/storage/AsyncStorageAdapter.ts +173 -0
- package/src/lib/storage/MemoryStorage.ts +43 -0
- package/src/lib/storage/StorageBlueprint.ts +30 -0
- package/src/lib/storage/StorageManager.ts +121 -0
- package/src/lib/storage/index.ts +4 -0
- package/src/lib/storage/types.ts +23 -0
- package/src/lib/wagmi/WagmiEventHandler.ts +574 -0
- package/src/lib/wagmi/index.ts +2 -0
- package/src/lib/wagmi/types.ts +71 -0
- package/src/types/base.ts +287 -0
- package/src/types/events.ts +140 -0
- package/src/types/index.ts +2 -0
- package/src/utils/address.ts +84 -0
- package/src/utils/hash.ts +23 -0
- package/src/utils/helpers.ts +139 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/timestamp.ts +25 -0
- package/src/utils/trafficSource.ts +153 -0
- package/src/version.ts +3 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FormoAnalyticsSession = void 0;
|
|
7
|
+
Object.defineProperty(exports, "SESSION_WALLET_DETECTED_KEY", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _constants.SESSION_WALLET_DETECTED_KEY;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "SESSION_WALLET_IDENTIFIED_KEY", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _constants.SESSION_WALLET_IDENTIFIED_KEY;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _constants = require("../../constants");
|
|
20
|
+
var _storage = require("../storage");
|
|
21
|
+
var _logger = require("../logger");
|
|
22
|
+
/**
|
|
23
|
+
* Session manager for tracking wallet detection and identification
|
|
24
|
+
* Persists to session storage to avoid duplicate detection/identification events
|
|
25
|
+
* within the same session
|
|
26
|
+
*/
|
|
27
|
+
class FormoAnalyticsSession {
|
|
28
|
+
detectedWallets = new Set();
|
|
29
|
+
identifiedWallets = new Set();
|
|
30
|
+
constructor() {
|
|
31
|
+
this.loadFromStorage();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Load session state from storage
|
|
36
|
+
*/
|
|
37
|
+
loadFromStorage() {
|
|
38
|
+
try {
|
|
39
|
+
const detected = (0, _storage.storage)().get(_constants.SESSION_WALLET_DETECTED_KEY);
|
|
40
|
+
if (detected) {
|
|
41
|
+
const parsed = JSON.parse(detected);
|
|
42
|
+
this.detectedWallets = new Set(parsed);
|
|
43
|
+
}
|
|
44
|
+
const identified = (0, _storage.storage)().get(_constants.SESSION_WALLET_IDENTIFIED_KEY);
|
|
45
|
+
if (identified) {
|
|
46
|
+
const parsed = JSON.parse(identified);
|
|
47
|
+
this.identifiedWallets = new Set(parsed);
|
|
48
|
+
}
|
|
49
|
+
} catch (error) {
|
|
50
|
+
_logger.logger.debug("Session: Failed to load from storage", error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Save session state to storage
|
|
56
|
+
*/
|
|
57
|
+
saveToStorage() {
|
|
58
|
+
try {
|
|
59
|
+
(0, _storage.storage)().set(_constants.SESSION_WALLET_DETECTED_KEY, JSON.stringify(Array.from(this.detectedWallets)));
|
|
60
|
+
(0, _storage.storage)().set(_constants.SESSION_WALLET_IDENTIFIED_KEY, JSON.stringify(Array.from(this.identifiedWallets)));
|
|
61
|
+
} catch (error) {
|
|
62
|
+
_logger.logger.debug("Session: Failed to save to storage", error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Check if a wallet has been detected in this session
|
|
68
|
+
*/
|
|
69
|
+
isWalletDetected(rdns) {
|
|
70
|
+
return this.detectedWallets.has(rdns);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Mark a wallet as detected
|
|
75
|
+
*/
|
|
76
|
+
markWalletDetected(rdns) {
|
|
77
|
+
this.detectedWallets.add(rdns);
|
|
78
|
+
this.saveToStorage();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Check if a wallet + address combination has been identified
|
|
83
|
+
*/
|
|
84
|
+
isWalletIdentified(address, rdns) {
|
|
85
|
+
const key = `${address.toLowerCase()}:${rdns}`;
|
|
86
|
+
return this.identifiedWallets.has(key);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Mark a wallet + address combination as identified
|
|
91
|
+
*/
|
|
92
|
+
markWalletIdentified(address, rdns) {
|
|
93
|
+
const key = `${address.toLowerCase()}:${rdns}`;
|
|
94
|
+
this.identifiedWallets.add(key);
|
|
95
|
+
this.saveToStorage();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Clear all session data
|
|
100
|
+
*/
|
|
101
|
+
clear() {
|
|
102
|
+
this.detectedWallets.clear();
|
|
103
|
+
this.identifiedWallets.clear();
|
|
104
|
+
(0, _storage.storage)().remove(_constants.SESSION_WALLET_DETECTED_KEY);
|
|
105
|
+
(0, _storage.storage)().remove(_constants.SESSION_WALLET_IDENTIFIED_KEY);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.FormoAnalyticsSession = FormoAnalyticsSession;
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_constants","require","_storage","_logger","FormoAnalyticsSession","detectedWallets","Set","identifiedWallets","constructor","loadFromStorage","detected","storage","get","SESSION_WALLET_DETECTED_KEY","parsed","JSON","parse","identified","SESSION_WALLET_IDENTIFIED_KEY","error","logger","debug","saveToStorage","set","stringify","Array","from","isWalletDetected","rdns","has","markWalletDetected","add","isWalletIdentified","address","key","toLowerCase","markWalletIdentified","clear","remove","exports"],"sourceRoot":"../../../../src","sources":["lib/session/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _StorageBlueprint = _interopRequireDefault(require("./StorageBlueprint"));
|
|
8
|
+
var _logger = require("../logger");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/**
|
|
11
|
+
* AsyncStorage adapter for React Native
|
|
12
|
+
* Provides persistent storage across app restarts
|
|
13
|
+
*/
|
|
14
|
+
class AsyncStorageAdapter extends _StorageBlueprint.default {
|
|
15
|
+
asyncStorage = null;
|
|
16
|
+
cache = new Map();
|
|
17
|
+
constructor(writeKey, asyncStorage) {
|
|
18
|
+
super(writeKey);
|
|
19
|
+
if (asyncStorage) {
|
|
20
|
+
this.asyncStorage = asyncStorage;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Initialize with AsyncStorage instance and preload all Formo keys
|
|
26
|
+
* This ensures consent flags and other critical data are available synchronously
|
|
27
|
+
*/
|
|
28
|
+
async initialize(asyncStorage) {
|
|
29
|
+
this.asyncStorage = asyncStorage;
|
|
30
|
+
|
|
31
|
+
// Preload all Formo keys into cache for synchronous access
|
|
32
|
+
// This is critical for consent checks on cold start (GDPR compliance)
|
|
33
|
+
try {
|
|
34
|
+
const allKeys = await asyncStorage.getAllKeys();
|
|
35
|
+
// getKey("") returns "formo_rn_{writeKey}_" - use this exact prefix
|
|
36
|
+
// to avoid matching keys from other instances (e.g., "abc" matching "abc123")
|
|
37
|
+
const formoPrefix = this.getKey("");
|
|
38
|
+
|
|
39
|
+
// Filter to only our keys (exact prefix match including trailing underscore)
|
|
40
|
+
const formoKeys = allKeys.filter(key => key.startsWith(formoPrefix));
|
|
41
|
+
if (formoKeys.length > 0) {
|
|
42
|
+
const pairs = await asyncStorage.multiGet(formoKeys);
|
|
43
|
+
for (const [key, value] of pairs) {
|
|
44
|
+
if (value !== null) {
|
|
45
|
+
this.cache.set(key, value);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
_logger.logger.debug(`AsyncStorageAdapter: Preloaded ${formoKeys.length} keys into cache`);
|
|
49
|
+
}
|
|
50
|
+
} catch (error) {
|
|
51
|
+
_logger.logger.error("AsyncStorageAdapter: Failed to preload keys", error);
|
|
52
|
+
}
|
|
53
|
+
_logger.logger.debug("AsyncStorageAdapter: Initialized");
|
|
54
|
+
}
|
|
55
|
+
isAvailable() {
|
|
56
|
+
return this.asyncStorage !== null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Synchronous get from cache (may return stale data)
|
|
61
|
+
* Use getAsync for guaranteed fresh data
|
|
62
|
+
*/
|
|
63
|
+
get(key) {
|
|
64
|
+
const cachedValue = this.cache.get(this.getKey(key));
|
|
65
|
+
if (cachedValue !== undefined) {
|
|
66
|
+
return cachedValue;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Trigger async fetch to populate cache
|
|
70
|
+
this.getAsync(key).catch(() => {
|
|
71
|
+
// Ignore errors in background fetch
|
|
72
|
+
});
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Async get from storage
|
|
78
|
+
*/
|
|
79
|
+
async getAsync(key) {
|
|
80
|
+
if (!this.asyncStorage) {
|
|
81
|
+
return this.cache.get(this.getKey(key)) ?? null;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const fullKey = this.getKey(key);
|
|
85
|
+
const value = await this.asyncStorage.getItem(fullKey);
|
|
86
|
+
if (value !== null) {
|
|
87
|
+
this.cache.set(fullKey, value);
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
_logger.logger.error("AsyncStorageAdapter: Failed to get item", error);
|
|
92
|
+
return this.cache.get(this.getKey(key)) ?? null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Synchronous set (writes to cache immediately, persists async)
|
|
98
|
+
*/
|
|
99
|
+
set(key, value) {
|
|
100
|
+
const fullKey = this.getKey(key);
|
|
101
|
+
this.cache.set(fullKey, value);
|
|
102
|
+
|
|
103
|
+
// Persist asynchronously
|
|
104
|
+
this.setAsync(key, value).catch(error => {
|
|
105
|
+
_logger.logger.error("AsyncStorageAdapter: Failed to persist item", error);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Async set to storage
|
|
111
|
+
*/
|
|
112
|
+
async setAsync(key, value) {
|
|
113
|
+
const fullKey = this.getKey(key);
|
|
114
|
+
this.cache.set(fullKey, value);
|
|
115
|
+
if (!this.asyncStorage) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
await this.asyncStorage.setItem(fullKey, value);
|
|
120
|
+
} catch (error) {
|
|
121
|
+
_logger.logger.error("AsyncStorageAdapter: Failed to set item", error);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Synchronous remove (removes from cache immediately, persists async)
|
|
128
|
+
*/
|
|
129
|
+
remove(key) {
|
|
130
|
+
const fullKey = this.getKey(key);
|
|
131
|
+
this.cache.delete(fullKey);
|
|
132
|
+
|
|
133
|
+
// Persist asynchronously
|
|
134
|
+
this.removeAsync(key).catch(error => {
|
|
135
|
+
_logger.logger.error("AsyncStorageAdapter: Failed to remove item", error);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Async remove from storage
|
|
141
|
+
*/
|
|
142
|
+
async removeAsync(key) {
|
|
143
|
+
const fullKey = this.getKey(key);
|
|
144
|
+
this.cache.delete(fullKey);
|
|
145
|
+
if (!this.asyncStorage) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
await this.asyncStorage.removeItem(fullKey);
|
|
150
|
+
} catch (error) {
|
|
151
|
+
_logger.logger.error("AsyncStorageAdapter: Failed to remove item", error);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Clear all cached data
|
|
158
|
+
*/
|
|
159
|
+
clearCache() {
|
|
160
|
+
this.cache.clear();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
var _default = exports.default = AsyncStorageAdapter;
|
|
164
|
+
//# sourceMappingURL=AsyncStorageAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_StorageBlueprint","_interopRequireDefault","require","_logger","e","__esModule","default","AsyncStorageAdapter","StorageBlueprint","asyncStorage","cache","Map","constructor","writeKey","initialize","allKeys","getAllKeys","formoPrefix","getKey","formoKeys","filter","key","startsWith","length","pairs","multiGet","value","set","logger","debug","error","isAvailable","get","cachedValue","undefined","getAsync","catch","fullKey","getItem","setAsync","setItem","remove","delete","removeAsync","removeItem","clearCache","clear","_default","exports"],"sourceRoot":"../../../../src","sources":["lib/storage/AsyncStorageAdapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _StorageBlueprint = _interopRequireDefault(require("./StorageBlueprint"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
/**
|
|
10
|
+
* In-memory storage fallback
|
|
11
|
+
* Data is lost when the app is closed
|
|
12
|
+
*/
|
|
13
|
+
class MemoryStorage extends _StorageBlueprint.default {
|
|
14
|
+
storage = new Map();
|
|
15
|
+
isAvailable() {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
get(key) {
|
|
19
|
+
return this.storage.get(this.getKey(key)) ?? null;
|
|
20
|
+
}
|
|
21
|
+
async getAsync(key) {
|
|
22
|
+
return this.get(key);
|
|
23
|
+
}
|
|
24
|
+
set(key, value) {
|
|
25
|
+
this.storage.set(this.getKey(key), value);
|
|
26
|
+
}
|
|
27
|
+
async setAsync(key, value) {
|
|
28
|
+
this.set(key, value);
|
|
29
|
+
}
|
|
30
|
+
remove(key) {
|
|
31
|
+
this.storage.delete(this.getKey(key));
|
|
32
|
+
}
|
|
33
|
+
async removeAsync(key) {
|
|
34
|
+
this.remove(key);
|
|
35
|
+
}
|
|
36
|
+
clear() {
|
|
37
|
+
this.storage.clear();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
var _default = exports.default = MemoryStorage;
|
|
41
|
+
//# sourceMappingURL=MemoryStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_StorageBlueprint","_interopRequireDefault","require","e","__esModule","default","MemoryStorage","StorageBlueprint","storage","Map","isAvailable","get","key","getKey","getAsync","set","value","setAsync","remove","delete","removeAsync","clear","_default","exports"],"sourceRoot":"../../../../src","sources":["lib/storage/MemoryStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAElD;AACA;AACA;AACA;AACA,MAAMG,aAAa,SAASC,yBAAgB,CAAC;EACnCC,OAAO,GAAwB,IAAIC,GAAG,CAAC,CAAC;EAEzCC,WAAWA,CAAA,EAAY;IAC5B,OAAO,IAAI;EACb;EAEOC,GAAGA,CAACC,GAAW,EAAiB;IACrC,OAAO,IAAI,CAACJ,OAAO,CAACG,GAAG,CAAC,IAAI,CAACE,MAAM,CAACD,GAAG,CAAC,CAAC,IAAI,IAAI;EACnD;EAEA,MAAaE,QAAQA,CAACF,GAAW,EAA0B;IACzD,OAAO,IAAI,CAACD,GAAG,CAACC,GAAG,CAAC;EACtB;EAEOG,GAAGA,CAACH,GAAW,EAAEI,KAAa,EAAQ;IAC3C,IAAI,CAACR,OAAO,CAACO,GAAG,CAAC,IAAI,CAACF,MAAM,CAACD,GAAG,CAAC,EAAEI,KAAK,CAAC;EAC3C;EAEA,MAAaC,QAAQA,CAACL,GAAW,EAAEI,KAAa,EAAiB;IAC/D,IAAI,CAACD,GAAG,CAACH,GAAG,EAAEI,KAAK,CAAC;EACtB;EAEOE,MAAMA,CAACN,GAAW,EAAQ;IAC/B,IAAI,CAACJ,OAAO,CAACW,MAAM,CAAC,IAAI,CAACN,MAAM,CAACD,GAAG,CAAC,CAAC;EACvC;EAEA,MAAaQ,WAAWA,CAACR,GAAW,EAAiB;IACnD,IAAI,CAACM,MAAM,CAACN,GAAG,CAAC;EAClB;EAEOS,KAAKA,CAAA,EAAS;IACnB,IAAI,CAACb,OAAO,CAACa,KAAK,CAAC,CAAC;EACtB;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAlB,OAAA,GAEcC,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _constants = require("../../constants");
|
|
8
|
+
/**
|
|
9
|
+
* Base storage class with key prefixing
|
|
10
|
+
*/
|
|
11
|
+
class StorageBlueprint {
|
|
12
|
+
constructor(writeKey) {
|
|
13
|
+
this.writeKey = writeKey;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Generate storage key with prefix
|
|
18
|
+
*/
|
|
19
|
+
getKey(key) {
|
|
20
|
+
return `${_constants.STORAGE_PREFIX}${this.writeKey}_${key}`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
var _default = exports.default = StorageBlueprint;
|
|
24
|
+
//# sourceMappingURL=StorageBlueprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_constants","require","StorageBlueprint","constructor","writeKey","getKey","key","STORAGE_PREFIX","_default","exports","default"],"sourceRoot":"../../../../src","sources":["lib/storage/StorageBlueprint.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA,MAAeC,gBAAgB,CAAqB;EAGlDC,WAAWA,CAACC,QAAgB,EAAE;IAC5B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;;EAEA;AACF;AACA;EACSC,MAAMA,CAACC,GAAW,EAAU;IACjC,OAAO,GAAGC,yBAAc,GAAG,IAAI,CAACH,QAAQ,IAAIE,GAAG,EAAE;EACnD;AASF;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StorageManager = void 0;
|
|
7
|
+
exports.getStorageManager = getStorageManager;
|
|
8
|
+
exports.initStorageManager = initStorageManager;
|
|
9
|
+
exports.storage = storage;
|
|
10
|
+
var _logger = require("../logger");
|
|
11
|
+
var _AsyncStorageAdapter = _interopRequireDefault(require("./AsyncStorageAdapter"));
|
|
12
|
+
var _MemoryStorage = _interopRequireDefault(require("./MemoryStorage"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
/**
|
|
15
|
+
* Storage manager for React Native SDK
|
|
16
|
+
* Uses AsyncStorage as primary storage with MemoryStorage fallback
|
|
17
|
+
*/
|
|
18
|
+
class StorageManager {
|
|
19
|
+
storages = new Map();
|
|
20
|
+
constructor(writeKey) {
|
|
21
|
+
this.writeKey = writeKey;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Initialize with AsyncStorage instance
|
|
26
|
+
* This should be called during SDK initialization
|
|
27
|
+
*/
|
|
28
|
+
async initialize(asyncStorage) {
|
|
29
|
+
// Create and initialize the AsyncStorage adapter directly.
|
|
30
|
+
// We bypass getStorage() here because it checks isAvailable() which
|
|
31
|
+
// returns false on an uninitialized adapter and would fall back to
|
|
32
|
+
// MemoryStorage, causing a crash when we call adapter.initialize().
|
|
33
|
+
const adapter = new _AsyncStorageAdapter.default(this.writeKey);
|
|
34
|
+
await adapter.initialize(asyncStorage);
|
|
35
|
+
this.storages.set("asyncStorage", adapter);
|
|
36
|
+
_logger.logger.debug("StorageManager: Initialized with AsyncStorage");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Get storage instance by type
|
|
41
|
+
*/
|
|
42
|
+
getStorage(type) {
|
|
43
|
+
if (!this.storages.has(type)) {
|
|
44
|
+
const storage = this.createStorage(type);
|
|
45
|
+
|
|
46
|
+
// If storage is not available, fallback to memory and cache the fallback
|
|
47
|
+
if (!storage.isAvailable() && type !== "memoryStorage") {
|
|
48
|
+
_logger.logger.warn(`Storage ${type} is not available, falling back to memoryStorage`);
|
|
49
|
+
const fallback = this.getStorage("memoryStorage");
|
|
50
|
+
this.storages.set(type, fallback);
|
|
51
|
+
return fallback;
|
|
52
|
+
}
|
|
53
|
+
this.storages.set(type, storage);
|
|
54
|
+
}
|
|
55
|
+
return this.storages.get(type);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Create storage instance
|
|
60
|
+
*/
|
|
61
|
+
createStorage(type) {
|
|
62
|
+
switch (type) {
|
|
63
|
+
case "asyncStorage":
|
|
64
|
+
return new _AsyncStorageAdapter.default(this.writeKey);
|
|
65
|
+
case "memoryStorage":
|
|
66
|
+
default:
|
|
67
|
+
return new _MemoryStorage.default(this.writeKey);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Get primary storage (AsyncStorage with fallback)
|
|
73
|
+
*/
|
|
74
|
+
getPrimaryStorage() {
|
|
75
|
+
const asyncStorage = this.getStorage("asyncStorage");
|
|
76
|
+
if (asyncStorage.isAvailable()) {
|
|
77
|
+
return asyncStorage;
|
|
78
|
+
}
|
|
79
|
+
return this.getStorage("memoryStorage");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Check if persistent storage (AsyncStorage) has been initialized.
|
|
84
|
+
* Returns false if only MemoryStorage is available.
|
|
85
|
+
*/
|
|
86
|
+
hasPersistentStorage() {
|
|
87
|
+
const stored = this.storages.get("asyncStorage");
|
|
88
|
+
return stored instanceof _AsyncStorageAdapter.default && stored.isAvailable();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Global storage manager instance
|
|
93
|
+
exports.StorageManager = StorageManager;
|
|
94
|
+
let storageManagerInstance = null;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Initialize global storage manager
|
|
98
|
+
*/
|
|
99
|
+
function initStorageManager(writeKey) {
|
|
100
|
+
if (!storageManagerInstance || storageManagerInstance["writeKey"] !== writeKey) {
|
|
101
|
+
// Clean up old instance before creating new one
|
|
102
|
+
if (storageManagerInstance) {
|
|
103
|
+
_logger.logger.debug("StorageManager: Replacing instance with new writeKey");
|
|
104
|
+
}
|
|
105
|
+
storageManagerInstance = new StorageManager(writeKey);
|
|
106
|
+
}
|
|
107
|
+
return storageManagerInstance;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Get global storage manager instance
|
|
112
|
+
*/
|
|
113
|
+
function getStorageManager() {
|
|
114
|
+
return storageManagerInstance;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Get primary storage
|
|
119
|
+
*/
|
|
120
|
+
function storage() {
|
|
121
|
+
if (!storageManagerInstance) {
|
|
122
|
+
throw new Error("StorageManager not initialized. Call initStorageManager first.");
|
|
123
|
+
}
|
|
124
|
+
return storageManagerInstance.getPrimaryStorage();
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=StorageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_logger","require","_AsyncStorageAdapter","_interopRequireDefault","_MemoryStorage","e","__esModule","default","StorageManager","storages","Map","constructor","writeKey","initialize","asyncStorage","adapter","AsyncStorageAdapter","set","logger","debug","getStorage","type","has","storage","createStorage","isAvailable","warn","fallback","get","MemoryStorage","getPrimaryStorage","hasPersistentStorage","stored","exports","storageManagerInstance","initStorageManager","getStorageManager","Error"],"sourceRoot":"../../../../src","sources":["lib/storage/StorageManager.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA4C,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG5C;AACA;AACA;AACA;AACO,MAAMG,cAAc,CAAC;EAClBC,QAAQ,GAA+B,IAAIC,GAAG,CAAC,CAAC;EAExDC,WAAWA,CAAkBC,QAAgB,EAAE;IAAA,KAAlBA,QAAgB,GAAhBA,QAAgB;EAAG;;EAEhD;AACF;AACA;AACA;EACE,MAAaC,UAAUA,CAACC,YAAmC,EAAiB;IAC1E;IACA;IACA;IACA;IACA,MAAMC,OAAO,GAAG,IAAIC,4BAAmB,CAAC,IAAI,CAACJ,QAAQ,CAAC;IACtD,MAAMG,OAAO,CAACF,UAAU,CAACC,YAAY,CAAC;IACtC,IAAI,CAACL,QAAQ,CAACQ,GAAG,CAAC,cAAc,EAAEF,OAAO,CAAC;IAE1CG,cAAM,CAACC,KAAK,CAAC,+CAA+C,CAAC;EAC/D;;EAEA;AACF;AACA;EACSC,UAAUA,CAACC,IAAiB,EAAY;IAC7C,IAAI,CAAC,IAAI,CAACZ,QAAQ,CAACa,GAAG,CAACD,IAAI,CAAC,EAAE;MAC5B,MAAME,OAAO,GAAG,IAAI,CAACC,aAAa,CAACH,IAAI,CAAC;;MAExC;MACA,IAAI,CAACE,OAAO,CAACE,WAAW,CAAC,CAAC,IAAIJ,IAAI,KAAK,eAAe,EAAE;QACtDH,cAAM,CAACQ,IAAI,CACT,WAAWL,IAAI,kDACjB,CAAC;QACD,MAAMM,QAAQ,GAAG,IAAI,CAACP,UAAU,CAAC,eAAe,CAAC;QACjD,IAAI,CAACX,QAAQ,CAACQ,GAAG,CAACI,IAAI,EAAEM,QAAQ,CAAC;QACjC,OAAOA,QAAQ;MACjB;MAEA,IAAI,CAAClB,QAAQ,CAACQ,GAAG,CAACI,IAAI,EAAEE,OAAO,CAAC;IAClC;IAEA,OAAO,IAAI,CAACd,QAAQ,CAACmB,GAAG,CAACP,IAAI,CAAC;EAChC;;EAEA;AACF;AACA;EACUG,aAAaA,CAACH,IAAiB,EAAY;IACjD,QAAQA,IAAI;MACV,KAAK,cAAc;QACjB,OAAO,IAAIL,4BAAmB,CAAC,IAAI,CAACJ,QAAQ,CAAC;MAE/C,KAAK,eAAe;MACpB;QACE,OAAO,IAAIiB,sBAAa,CAAC,IAAI,CAACjB,QAAQ,CAAC;IAC3C;EACF;;EAEA;AACF;AACA;EACSkB,iBAAiBA,CAAA,EAAa;IACnC,MAAMhB,YAAY,GAAG,IAAI,CAACM,UAAU,CAAC,cAAc,CAAC;IACpD,IAAIN,YAAY,CAACW,WAAW,CAAC,CAAC,EAAE;MAC9B,OAAOX,YAAY;IACrB;IACA,OAAO,IAAI,CAACM,UAAU,CAAC,eAAe,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACSW,oBAAoBA,CAAA,EAAY;IACrC,MAAMC,MAAM,GAAG,IAAI,CAACvB,QAAQ,CAACmB,GAAG,CAAC,cAAc,CAAC;IAChD,OAAOI,MAAM,YAAYhB,4BAAmB,IAAIgB,MAAM,CAACP,WAAW,CAAC,CAAC;EACtE;AACF;;AAEA;AAAAQ,OAAA,CAAAzB,cAAA,GAAAA,cAAA;AACA,IAAI0B,sBAA6C,GAAG,IAAI;;AAExD;AACA;AACA;AACO,SAASC,kBAAkBA,CAACvB,QAAgB,EAAkB;EACnE,IAAI,CAACsB,sBAAsB,IAAIA,sBAAsB,CAAC,UAAU,CAAC,KAAKtB,QAAQ,EAAE;IAC9E;IACA,IAAIsB,sBAAsB,EAAE;MAC1BhB,cAAM,CAACC,KAAK,CAAC,sDAAsD,CAAC;IACtE;IACAe,sBAAsB,GAAG,IAAI1B,cAAc,CAACI,QAAQ,CAAC;EACvD;EACA,OAAOsB,sBAAsB;AAC/B;;AAEA;AACA;AACA;AACO,SAASE,iBAAiBA,CAAA,EAA0B;EACzD,OAAOF,sBAAsB;AAC/B;;AAEA;AACA;AACA;AACO,SAASX,OAAOA,CAAA,EAAa;EAClC,IAAI,CAACW,sBAAsB,EAAE;IAC3B,MAAM,IAAIG,KAAK,CAAC,gEAAgE,CAAC;EACnF;EACA,OAAOH,sBAAsB,CAACJ,iBAAiB,CAAC,CAAC;AACnD","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
AsyncStorageAdapter: true,
|
|
8
|
+
MemoryStorage: true
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "AsyncStorageAdapter", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _AsyncStorageAdapter.default;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "MemoryStorage", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return _MemoryStorage.default;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var _StorageManager = require("./StorageManager");
|
|
23
|
+
Object.keys(_StorageManager).forEach(function (key) {
|
|
24
|
+
if (key === "default" || key === "__esModule") return;
|
|
25
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
26
|
+
if (key in exports && exports[key] === _StorageManager[key]) return;
|
|
27
|
+
Object.defineProperty(exports, key, {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function () {
|
|
30
|
+
return _StorageManager[key];
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
var _types = require("./types");
|
|
35
|
+
Object.keys(_types).forEach(function (key) {
|
|
36
|
+
if (key === "default" || key === "__esModule") return;
|
|
37
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
38
|
+
if (key in exports && exports[key] === _types[key]) return;
|
|
39
|
+
Object.defineProperty(exports, key, {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function () {
|
|
42
|
+
return _types[key];
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
var _AsyncStorageAdapter = _interopRequireDefault(require("./AsyncStorageAdapter"));
|
|
47
|
+
var _MemoryStorage = _interopRequireDefault(require("./MemoryStorage"));
|
|
48
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_StorageManager","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_types","_AsyncStorageAdapter","_interopRequireDefault","_MemoryStorage","e","__esModule","default"],"sourceRoot":"../../../../src","sources":["lib/storage/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,eAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,eAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,eAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,oBAAA,GAAAC,sBAAA,CAAAf,OAAA;AACA,IAAAgB,cAAA,GAAAD,sBAAA,CAAAf,OAAA;AAA2D,SAAAe,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["lib/storage/types.ts"],"mappings":"","ignoreList":[]}
|