@amplitude/analytics-react-native 0.5.1 → 0.6.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/lib/commonjs/config.js +6 -2
- package/lib/commonjs/config.js.map +1 -1
- package/lib/commonjs/plugins/context.js +0 -17
- package/lib/commonjs/plugins/context.js.map +1 -1
- package/lib/commonjs/react-native-client.js +132 -19
- package/lib/commonjs/react-native-client.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/config.js +6 -2
- package/lib/module/config.js.map +1 -1
- package/lib/module/plugins/context.js +0 -17
- package/lib/module/plugins/context.js.map +1 -1
- package/lib/module/react-native-client.js +128 -19
- package/lib/module/react-native-client.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/__mocks__/@react-native-async-storage/async-storage.d.ts +3 -0
- package/lib/typescript/__mocks__/@react-native-async-storage/async-storage.d.ts.map +1 -0
- package/lib/typescript/{config.d.ts → src/config.d.ts} +3 -0
- package/lib/typescript/src/config.d.ts.map +1 -0
- package/lib/typescript/{cookie-migration → src/cookie-migration}/index.d.ts +0 -0
- package/lib/typescript/src/cookie-migration/index.d.ts.map +1 -0
- package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/{plugins → src/plugins}/context.d.ts +0 -1
- package/lib/typescript/src/plugins/context.d.ts.map +1 -0
- package/lib/typescript/{react-native-client.d.ts → src/react-native-client.d.ts} +13 -2
- package/lib/typescript/src/react-native-client.d.ts.map +1 -0
- package/lib/typescript/{storage → src/storage}/local-storage.d.ts +0 -0
- package/lib/typescript/src/storage/local-storage.d.ts.map +1 -0
- package/lib/typescript/{utils → src/utils}/platform.d.ts +0 -0
- package/lib/typescript/src/utils/platform.d.ts.map +1 -0
- package/lib/typescript/src/version.d.ts +2 -0
- package/lib/typescript/src/version.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/config.ts +3 -0
- package/src/plugins/context.ts +0 -15
- package/src/react-native-client.ts +113 -17
- package/src/version.ts +1 -1
- package/lib/typescript/config.d.ts.map +0 -1
- package/lib/typescript/cookie-migration/index.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/plugins/context.d.ts.map +0 -1
- package/lib/typescript/react-native-client.d.ts.map +0 -1
- package/lib/typescript/storage/local-storage.d.ts.map +0 -1
- package/lib/typescript/utils/platform.d.ts.map +0 -1
- package/lib/typescript/version.d.ts +0 -2
- package/lib/typescript/version.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amplitude/analytics-react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Official React Native SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"analytics",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@amplitude/analytics-client-common": "^0.4.
|
|
61
|
-
"@amplitude/analytics-core": "^0.10.
|
|
62
|
-
"@amplitude/analytics-types": "^0.
|
|
60
|
+
"@amplitude/analytics-client-common": "^0.4.1",
|
|
61
|
+
"@amplitude/analytics-core": "^0.10.1",
|
|
62
|
+
"@amplitude/analytics-types": "^0.13.0",
|
|
63
63
|
"@amplitude/ua-parser-js": "^0.7.31",
|
|
64
64
|
"@react-native-async-storage/async-storage": "^1.17.7",
|
|
65
65
|
"tslib": "^2.3.1"
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
]
|
|
90
90
|
]
|
|
91
91
|
},
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "c67ec6c06b029eaeaa01ffbe14852334bee9370c"
|
|
93
93
|
}
|
package/src/config.ts
CHANGED
|
@@ -43,6 +43,7 @@ export const getDefaultConfig = () => {
|
|
|
43
43
|
storageProvider: new MemoryStorage<Event[]>(),
|
|
44
44
|
trackingOptions,
|
|
45
45
|
transportProvider: new FetchTransport(),
|
|
46
|
+
trackingSessionEvents: false,
|
|
46
47
|
};
|
|
47
48
|
};
|
|
48
49
|
|
|
@@ -58,6 +59,7 @@ export class ReactNativeConfig extends Config implements IReactNativeConfig {
|
|
|
58
59
|
sessionTimeout: number;
|
|
59
60
|
trackingOptions: ReactNativeTrackingOptions;
|
|
60
61
|
sessionManager: ISessionManager;
|
|
62
|
+
trackingSessionEvents: boolean;
|
|
61
63
|
|
|
62
64
|
constructor(apiKey: string, userId?: string, options?: ReactNativeOptions) {
|
|
63
65
|
const defaultConfig = getDefaultConfig();
|
|
@@ -87,6 +89,7 @@ export class ReactNativeConfig extends Config implements IReactNativeConfig {
|
|
|
87
89
|
this.sessionId = options?.sessionId;
|
|
88
90
|
this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;
|
|
89
91
|
this.userId = userId;
|
|
92
|
+
this.trackingSessionEvents = options?.trackingSessionEvents ?? defaultConfig.trackingSessionEvents;
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
get deviceId() {
|
package/src/plugins/context.ts
CHANGED
|
@@ -55,15 +55,6 @@ export class Context implements BeforePlugin {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
async execute(context: Event): Promise<Event> {
|
|
58
|
-
/**
|
|
59
|
-
* Manages user session triggered by new events
|
|
60
|
-
*/
|
|
61
|
-
if (!this.isSessionValid()) {
|
|
62
|
-
// Creates new session
|
|
63
|
-
this.config.sessionId = Date.now();
|
|
64
|
-
} // else use previously creates session
|
|
65
|
-
// Updates last event time to extend time-based session
|
|
66
|
-
this.config.lastEventTime = Date.now();
|
|
67
58
|
const time = new Date().getTime();
|
|
68
59
|
const nativeContext = await this.nativeModule?.getApplicationContext();
|
|
69
60
|
const appVersion = nativeContext?.version || this.config.appVersion;
|
|
@@ -106,10 +97,4 @@ export class Context implements BeforePlugin {
|
|
|
106
97
|
};
|
|
107
98
|
return event;
|
|
108
99
|
}
|
|
109
|
-
|
|
110
|
-
isSessionValid() {
|
|
111
|
-
const lastEventTime = this.config.lastEventTime || Date.now();
|
|
112
|
-
const timeSinceLastEvent = Date.now() - lastEventTime;
|
|
113
|
-
return timeSinceLastEvent < this.config.sessionTimeout;
|
|
114
|
-
}
|
|
115
100
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AppState, AppStateStatus } from 'react-native';
|
|
1
2
|
import {
|
|
2
3
|
AmplitudeCore,
|
|
3
4
|
Destination,
|
|
@@ -16,19 +17,28 @@ import {
|
|
|
16
17
|
ReactNativeClient,
|
|
17
18
|
Identify as IIdentify,
|
|
18
19
|
EventOptions,
|
|
20
|
+
Event,
|
|
21
|
+
Result,
|
|
19
22
|
} from '@amplitude/analytics-types';
|
|
20
23
|
import { Context } from './plugins/context';
|
|
21
24
|
import { useReactNativeConfig, createFlexibleStorage } from './config';
|
|
22
25
|
import { parseOldCookies } from './cookie-migration';
|
|
23
26
|
import { isNative } from './utils/platform';
|
|
24
27
|
|
|
28
|
+
const START_SESSION_EVENT = 'session_start';
|
|
29
|
+
const END_SESSION_EVENT = 'session_end';
|
|
30
|
+
|
|
25
31
|
export class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
32
|
+
appState: AppStateStatus = 'background';
|
|
33
|
+
explicitSessionId: number | undefined;
|
|
34
|
+
|
|
26
35
|
async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {
|
|
27
36
|
// Step 0: Block concurrent initialization
|
|
28
37
|
if (this.initializing) {
|
|
29
38
|
return;
|
|
30
39
|
}
|
|
31
40
|
this.initializing = true;
|
|
41
|
+
this.explicitSessionId = options?.sessionId;
|
|
32
42
|
|
|
33
43
|
// Step 1: Read cookies stored by old SDK
|
|
34
44
|
const oldCookies = await parseOldCookies(apiKey, options);
|
|
@@ -37,25 +47,12 @@ export class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
|
37
47
|
const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {
|
|
38
48
|
...options,
|
|
39
49
|
deviceId: oldCookies.deviceId ?? options?.deviceId,
|
|
40
|
-
sessionId: oldCookies.sessionId
|
|
50
|
+
sessionId: oldCookies.sessionId,
|
|
41
51
|
optOut: options?.optOut ?? oldCookies.optOut,
|
|
42
52
|
lastEventTime: oldCookies.lastEventTime,
|
|
43
53
|
});
|
|
44
54
|
await super._init(reactNativeOptions);
|
|
45
55
|
|
|
46
|
-
// Step 3: Manage session
|
|
47
|
-
let isNewSession = !this.config.lastEventTime;
|
|
48
|
-
if (
|
|
49
|
-
!this.config.sessionId ||
|
|
50
|
-
(this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)
|
|
51
|
-
) {
|
|
52
|
-
// Either
|
|
53
|
-
// 1) No previous session; or
|
|
54
|
-
// 2) Previous session expired
|
|
55
|
-
this.setSessionId(Date.now());
|
|
56
|
-
isNewSession = true;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
56
|
// Set up the analytics connector to integrate with the experiment SDK.
|
|
60
57
|
// Send events from the experiment SDK and forward identifies to the
|
|
61
58
|
// identity store.
|
|
@@ -68,27 +65,36 @@ export class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
|
68
65
|
deviceId: this.config.deviceId,
|
|
69
66
|
});
|
|
70
67
|
|
|
71
|
-
// Step
|
|
68
|
+
// Step 3: Install plugins
|
|
72
69
|
// Do not track any events before this
|
|
73
70
|
await this.add(new Context());
|
|
74
71
|
await this.add(new IdentityEventSender());
|
|
75
72
|
await this.add(new Destination());
|
|
76
73
|
|
|
74
|
+
// Step 4: Manage session
|
|
75
|
+
this.appState = AppState.currentState;
|
|
76
|
+
const isNewSession = this.startNewSessionIfNeeded();
|
|
77
|
+
AppState.addEventListener('change', this.handleAppStateChange);
|
|
78
|
+
|
|
77
79
|
this.initializing = false;
|
|
78
80
|
|
|
79
81
|
// Step 5: Track attributions
|
|
80
82
|
await this.runAttributionStrategy(options?.attribution, isNewSession);
|
|
81
83
|
|
|
82
|
-
// Step 6: Run queued
|
|
84
|
+
// Step 6: Run queued functions
|
|
83
85
|
await this.runQueuedFunctions('dispatchQ');
|
|
84
86
|
}
|
|
85
87
|
|
|
88
|
+
shutdown() {
|
|
89
|
+
AppState.removeEventListener('change', this.handleAppStateChange);
|
|
90
|
+
}
|
|
91
|
+
|
|
86
92
|
async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {
|
|
87
93
|
if (isNative()) {
|
|
88
94
|
return;
|
|
89
95
|
}
|
|
90
96
|
const track = this.track.bind(this);
|
|
91
|
-
const onNewCampaign = this.setSessionId.bind(this,
|
|
97
|
+
const onNewCampaign = this.setSessionId.bind(this, this.currentTimeMillis());
|
|
92
98
|
|
|
93
99
|
const storage = await createFlexibleStorage<Campaign>(this.config);
|
|
94
100
|
const campaignTracker = new CampaignTracker(this.config.apiKey, {
|
|
@@ -161,8 +167,98 @@ export class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
|
161
167
|
this.q.push(this.setSessionId.bind(this, sessionId));
|
|
162
168
|
return;
|
|
163
169
|
}
|
|
170
|
+
|
|
171
|
+
this.explicitSessionId = sessionId;
|
|
172
|
+
void this.setSessionIdInternal(sessionId, this.currentTimeMillis());
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
private setSessionIdInternal(sessionId: number, eventTime: number) {
|
|
176
|
+
const previousSessionId = this.config.sessionId;
|
|
177
|
+
if (previousSessionId === sessionId) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
164
181
|
this.config.sessionId = sessionId;
|
|
182
|
+
|
|
183
|
+
if (this.config.trackingSessionEvents) {
|
|
184
|
+
if (previousSessionId !== undefined) {
|
|
185
|
+
const sessionEndEvent: Event = {
|
|
186
|
+
event_type: END_SESSION_EVENT,
|
|
187
|
+
time: this.config.lastEventTime !== undefined ? this.config.lastEventTime + 1 : sessionId, // increment lastEventTime to sort events properly in UI - session_end should be the last event in a session
|
|
188
|
+
session_id: previousSessionId,
|
|
189
|
+
};
|
|
190
|
+
void this.track(sessionEndEvent);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const sessionStartEvent: Event = {
|
|
194
|
+
event_type: START_SESSION_EVENT,
|
|
195
|
+
time: eventTime,
|
|
196
|
+
session_id: sessionId,
|
|
197
|
+
};
|
|
198
|
+
void this.track(sessionStartEvent);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
this.config.lastEventTime = eventTime;
|
|
165
202
|
}
|
|
203
|
+
|
|
204
|
+
async process(event: Event): Promise<Result> {
|
|
205
|
+
if (!this.config.optOut) {
|
|
206
|
+
const eventTime = event.time ?? this.currentTimeMillis();
|
|
207
|
+
if (event.time === undefined) {
|
|
208
|
+
event = { ...event, time: eventTime };
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (event.event_type != START_SESSION_EVENT && event.event_type != END_SESSION_EVENT) {
|
|
212
|
+
if (this.appState !== 'active') {
|
|
213
|
+
this.startNewSessionIfNeeded(eventTime);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
this.config.lastEventTime = eventTime;
|
|
217
|
+
|
|
218
|
+
if (event.session_id == undefined) {
|
|
219
|
+
event.session_id = this.getSessionId();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return super.process(event);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
currentTimeMillis() {
|
|
227
|
+
return Date.now();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
private startNewSessionIfNeeded(eventTime?: number): boolean {
|
|
231
|
+
eventTime = eventTime ?? this.currentTimeMillis();
|
|
232
|
+
const sessionId = this.explicitSessionId ?? eventTime;
|
|
233
|
+
|
|
234
|
+
if (
|
|
235
|
+
this.inSession() &&
|
|
236
|
+
(this.explicitSessionId === this.config.sessionId ||
|
|
237
|
+
(this.explicitSessionId === undefined && this.isWithinMinTimeBetweenSessions(sessionId)))
|
|
238
|
+
) {
|
|
239
|
+
this.config.lastEventTime = eventTime;
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
this.setSessionIdInternal(sessionId, eventTime);
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
private isWithinMinTimeBetweenSessions(eventTime: number) {
|
|
248
|
+
return eventTime - (this.config.lastEventTime ?? 0) < this.config.sessionTimeout;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
private inSession() {
|
|
252
|
+
return this.config.sessionId != undefined;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
private readonly handleAppStateChange = (nextAppState: AppStateStatus) => {
|
|
256
|
+
const currentAppState = this.appState;
|
|
257
|
+
this.appState = nextAppState;
|
|
258
|
+
if (currentAppState !== nextAppState && nextAppState === 'active') {
|
|
259
|
+
this.startNewSessionIfNeeded();
|
|
260
|
+
}
|
|
261
|
+
};
|
|
166
262
|
}
|
|
167
263
|
|
|
168
264
|
export const createInstance = (): ReactNativeClient => {
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.
|
|
1
|
+
export const VERSION = '0.6.0';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,kBAAkB,EAClB,iBAAiB,IAAI,kBAAkB,EACvC,OAAO,EACP,0BAA0B,EAC1B,WAAW,EACX,cAAc,IAAI,eAAe,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAIL,cAAc,EACd,cAAc,EACf,MAAM,oCAAoC,CAAC;AAI5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CA0B5B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,MAAO,YAAW,kBAAkB;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,0BAA0B,CAAC;IAC5C,cAAc,EAAE,eAAe,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IA8BzE,IAAI,QAAQ,IAIW,MAAM,GAAG,SAAS,CAFxC;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAExC;IAED,IAAI,MAAM,IAIS,MAAM,GAAG,SAAS,CAFpC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,IAAI,SAAS,IAIY,MAAM,GAAG,SAAS,CAF1C;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAE1C;IAED,IAAI,MAAM,IAIS,OAAO,CAFzB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAEzB;IAED,IAAI,aAAa,IAIgB,MAAM,GAAG,SAAS,CAFlD;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAElD;CACF;AAED,eAAO,MAAM,oBAAoB,WACvB,MAAM,4EAGb,QAAQ,kBAAkB,CAqB5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;MAG7B,QAAQ,QAAQ,WAAW,CAAC,CAO9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAsB,kBAAkB,wBAczE,CAAC;AAEF,eAAO,MAAM,mBAAmB,kDAA2C,QAAQ,QAAQ,KAAK,EAAE,CAAC,GAAG,SAAS,CAe9G,CAAC;AAEF,eAAO,MAAM,cAAc,4HAE1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,+CA0B7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cookie-migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAW,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIlF,eAAO,MAAM,eAAe,WAAkB,MAAM,2CAA6B,QAAQ,WAAW,CA6BnG,CAAC;AAEF,eAAO,MAAM,SAAS,QAAS,MAAM,uBAMpC,CAAC;AAEF,eAAO,MAAM,MAAM,kCAAqB,MAAM,GAAG,SAShD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,eAAO,MACL,GAAG,yDACH,KAAK,qCACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,qKACb,QAAQ,oHACR,IAAI,gIACJ,QAAQ,mLACR,MAAM,uDACN,KAAK,cACL,OAAO,kHACP,WAAW,8BACX,QAAQ,2IACR,SAAS,6BACT,YAAY,+BACZ,SAAS,wCACT,KAAK,iLACG,CAAC;AACX,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAS/C,aAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,SAAa;IACjB,IAAI,oBAA8B;IAKlC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,SAAK;IACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC3B,YAAY,EAAE,oBAAoB,GAAG,SAAS,CAEhC;IACd,OAAO,SAA0C;;IAWjD,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAK9C,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAqD7C,cAAc;CAKf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-native-client.d.ts","sourceRoot":"","sources":["../../src/react-native-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,IAAI,SAAS,EACrB,YAAY,EACb,MAAM,4BAA4B,CAAC;AAMpC,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IAClE,IAAI,CAAC,MAAM,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IA4D/D,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,YAAY,UAAQ;IAkBzF,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAcpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAc5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAUzD,KAAK;IAKL,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;CAO/B;AAED,eAAO,MAAM,cAAc,QAAO,iBAgHjC,CAAC;;AAEF,wBAAgC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/local-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAC1C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/utils/platform.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,QAAO,OAExB,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,OAE3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
|