@amplitude/analytics-react-native 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.kt +101 -0
  2. package/android/src/main/java/com/amplitude/reactnative/LegacyDatabaseStorage.kt +313 -0
  3. package/ios/AmplitudeReactNative.m +3 -0
  4. package/ios/AmplitudeReactNative.swift +74 -0
  5. package/ios/AmplitudeReactNative.xcodeproj/project.pbxproj +9 -17
  6. package/ios/LegacyDatabaseStorage.swift +224 -0
  7. package/lib/commonjs/config.js +19 -7
  8. package/lib/commonjs/config.js.map +1 -1
  9. package/lib/commonjs/migration/remnant-data-migration.js +170 -0
  10. package/lib/commonjs/migration/remnant-data-migration.js.map +1 -0
  11. package/lib/commonjs/react-native-client.js +46 -27
  12. package/lib/commonjs/react-native-client.js.map +1 -1
  13. package/lib/commonjs/version.js +1 -1
  14. package/lib/module/config.js +18 -7
  15. package/lib/module/config.js.map +1 -1
  16. package/lib/module/migration/remnant-data-migration.js +163 -0
  17. package/lib/module/migration/remnant-data-migration.js.map +1 -0
  18. package/lib/module/react-native-client.js +46 -27
  19. package/lib/module/react-native-client.js.map +1 -1
  20. package/lib/module/version.js +1 -1
  21. package/lib/typescript/config.d.ts.map +1 -1
  22. package/lib/typescript/migration/remnant-data-migration.d.ts +20 -0
  23. package/lib/typescript/migration/remnant-data-migration.d.ts.map +1 -0
  24. package/lib/typescript/react-native-client.d.ts +3 -0
  25. package/lib/typescript/react-native-client.d.ts.map +1 -1
  26. package/lib/typescript/version.d.ts +1 -1
  27. package/package.json +5 -5
  28. package/src/config.ts +26 -7
  29. package/src/migration/remnant-data-migration.ts +168 -0
  30. package/src/react-native-client.ts +50 -26
  31. package/src/version.ts +1 -1
@@ -0,0 +1,224 @@
1
+ import Foundation
2
+ import SQLite3
3
+
4
+ class LegacyDatabaseStorage {
5
+ private static let DATABASE_NAME = "com.amplitude.database"
6
+ private static let EVENT_TABLE_NAME = "events"
7
+ private static let IDENTIFY_TABLE_NAME = "identifys"
8
+ private static let INTERCEPTED_IDENTIFY_TABLE_NAME = "intercepted_identifys"
9
+ private static let STORE_TABLE_NAME = "store"
10
+ private static let LONG_STORE_TABLE_NAME = "long_store"
11
+ private static let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
12
+
13
+ private static var instances: [String: LegacyDatabaseStorage] = [:]
14
+ private static let instanceQueue = DispatchQueue(label: "legacyDatabaseStorage.amplitude.com")
15
+
16
+ let databasePath: String
17
+
18
+ public static func getStorage(_ instanceName: String?) -> LegacyDatabaseStorage {
19
+ instanceQueue.sync {
20
+ var normalizedInstanceName = instanceName?.lowercased() ?? ""
21
+ if normalizedInstanceName == "default_instance" {
22
+ normalizedInstanceName = ""
23
+ }
24
+ if let storage = instances[normalizedInstanceName] {
25
+ return storage
26
+ }
27
+ let storage = LegacyDatabaseStorage(getDatabasePath(normalizedInstanceName).path)
28
+ instances[normalizedInstanceName] = storage
29
+ return storage
30
+ }
31
+ }
32
+
33
+ static func getDatabasePath(_ instanceName: String) -> URL {
34
+ #if os(tvOS)
35
+ let searchPathDirectory = FileManager.SearchPathDirectory.cachesDirectory
36
+ #else
37
+ let searchPathDirectory = FileManager.SearchPathDirectory.libraryDirectory
38
+ #endif
39
+
40
+ let urls = FileManager.default.urls(for: searchPathDirectory, in: .userDomainMask)
41
+ var databaseUrl = urls[0]
42
+
43
+ var databaseName = DATABASE_NAME
44
+ if instanceName != "" {
45
+ databaseName += "_\(instanceName)"
46
+ }
47
+ databaseUrl.appendPathComponent(databaseName)
48
+ return databaseUrl
49
+ }
50
+
51
+ public init(_ databasePath: String) {
52
+ self.databasePath = databasePath
53
+ }
54
+
55
+ func getValue(_ key: String) -> String? {
56
+ getValueFromTable(LegacyDatabaseStorage.STORE_TABLE_NAME, key) as? String
57
+ }
58
+
59
+ func getLongValue(_ key: String) -> Int64? {
60
+ getValueFromTable(LegacyDatabaseStorage.LONG_STORE_TABLE_NAME, key) as? Int64
61
+ }
62
+
63
+ private func getValueFromTable(_ table: String, _ key: String) -> Any? {
64
+ let query = "SELECT key, value FROM \(table) WHERE key = ?;"
65
+ return executeQuery(query) { stmt in
66
+ let bindResult = sqlite3_bind_text(stmt, 1, key, -1, LegacyDatabaseStorage.SQLITE_TRANSIENT)
67
+ if bindResult != SQLITE_OK {
68
+ print("bind query parameter failed with result: \(bindResult)")
69
+ return
70
+ }
71
+
72
+ let stepResult = sqlite3_step(stmt)
73
+ if stepResult != SQLITE_ROW {
74
+ print("execute query '\(query)' failed with result: \(stepResult)")
75
+ return
76
+ }
77
+
78
+ if sqlite3_column_type(stmt, 1) != SQLITE_NULL {
79
+ if table == LegacyDatabaseStorage.STORE_TABLE_NAME {
80
+ guard let rawValue = sqlite3_column_text(stmt, 1) else {
81
+ return
82
+ }
83
+ return String(cString: rawValue)
84
+ } else {
85
+ return sqlite3_column_int64(stmt, 1)
86
+ }
87
+ } else {
88
+ return
89
+ }
90
+ }
91
+ }
92
+
93
+ func getLastEventId() -> Int64? {
94
+ let query = "select coalesce(max(seq), -1) from sqlite_sequence where name = 'events';"
95
+ let lastId = executeQuery(query) { stmt in
96
+ let stepResult = sqlite3_step(stmt)
97
+ if stepResult != SQLITE_ROW {
98
+ print("execute query '\(query)' failed with result: \(stepResult)")
99
+ return -1 as Int64
100
+ }
101
+
102
+ if sqlite3_column_type(stmt, 0) != SQLITE_NULL {
103
+ let value = sqlite3_column_int64(stmt, 0)
104
+ return value
105
+ } else {
106
+ return -1 as Int64
107
+ }
108
+ }
109
+ return lastId != nil && lastId! >= 0 ? lastId : nil
110
+ }
111
+
112
+ func removeValue(_ key: String) {
113
+ removeValueFromTable(LegacyDatabaseStorage.STORE_TABLE_NAME, key)
114
+ }
115
+
116
+ func removeLongValue(_ key: String) {
117
+ removeValueFromTable(LegacyDatabaseStorage.LONG_STORE_TABLE_NAME, key)
118
+ }
119
+
120
+ private func removeValueFromTable(_ table: String, _ key: String) {
121
+ let query = "DELETE FROM \(table) WHERE key = ?;"
122
+ _ = executeQuery(query) { stmt in
123
+ let bindResult = sqlite3_bind_text(stmt, 1, key, -1, LegacyDatabaseStorage.SQLITE_TRANSIENT)
124
+ if bindResult != SQLITE_OK {
125
+ print("bind query parameter failed with result: \(bindResult)")
126
+ return
127
+ }
128
+
129
+ let stepResult = sqlite3_step(stmt)
130
+ if stepResult != SQLITE_DONE {
131
+ print("execute query '\(query)' failed with result: \(stepResult)")
132
+ return
133
+ }
134
+ }
135
+ }
136
+
137
+ func removeEvent(_ eventId: Int64) {
138
+ removeEventFromTable(LegacyDatabaseStorage.EVENT_TABLE_NAME, eventId)
139
+ }
140
+
141
+ func removeIdentify(_ eventId: Int64) {
142
+ removeEventFromTable(LegacyDatabaseStorage.IDENTIFY_TABLE_NAME, eventId)
143
+ }
144
+
145
+ func removeInterceptedIdentify(_ eventId: Int64) {
146
+ removeEventFromTable(LegacyDatabaseStorage.INTERCEPTED_IDENTIFY_TABLE_NAME, eventId)
147
+ }
148
+
149
+ private func removeEventFromTable(_ table: String, _ eventId: Int64) {
150
+ let query = "DELETE FROM \(table) WHERE id = ?;"
151
+ _ = executeQuery(query) { stmt in
152
+ let bindResult = sqlite3_bind_int64(stmt, 1, eventId)
153
+ if bindResult != SQLITE_OK {
154
+ print("bind query parameter failed with result: \(bindResult)")
155
+ return
156
+ }
157
+
158
+ let stepResult = sqlite3_step(stmt)
159
+ if stepResult != SQLITE_DONE {
160
+ print("execute query '\(query)' failed with result: \(stepResult)")
161
+ return
162
+ }
163
+ }
164
+ }
165
+
166
+ func readEvents() -> [[String: Any]] {
167
+ readEventsFromTable(LegacyDatabaseStorage.EVENT_TABLE_NAME)
168
+ }
169
+
170
+ func readIdentifies() -> [[String: Any]] {
171
+ readEventsFromTable(LegacyDatabaseStorage.IDENTIFY_TABLE_NAME)
172
+ }
173
+
174
+ func readInterceptedIdentifies() -> [[String: Any]] {
175
+ readEventsFromTable(LegacyDatabaseStorage.INTERCEPTED_IDENTIFY_TABLE_NAME)
176
+ }
177
+
178
+ private func readEventsFromTable(_ table: String) -> [[String: Any]] {
179
+ let query = "SELECT id, event FROM \(table) ORDER BY id;"
180
+ return executeQuery(query) { stmt in
181
+ var events: [[String: Any]] = []
182
+ while sqlite3_step(stmt) == SQLITE_ROW {
183
+ let eventId = sqlite3_column_int64(stmt, 0)
184
+ let rawEventData = sqlite3_column_text(stmt, 1)
185
+ if rawEventData != nil {
186
+ let eventData = String(cString: rawEventData!).data(using: .utf8)
187
+ if eventData != nil && eventData!.count > 0 {
188
+ let event = try? JSONSerialization.jsonObject(with: eventData!, options: []) as? [String: Any]
189
+ if var event {
190
+ event["event_id"] = eventId
191
+ events.append(event)
192
+ }
193
+ }
194
+ }
195
+ }
196
+ return events
197
+ } ?? []
198
+ }
199
+
200
+ private func executeQuery<T>(_ query: String, _ block: (_ stmt: OpaquePointer) -> T) -> T? {
201
+ if !FileManager.default.fileExists(atPath: databasePath) {
202
+ return nil
203
+ }
204
+
205
+ var db: OpaquePointer?
206
+ let openResult = sqlite3_open(databasePath, &db)
207
+ if openResult != SQLITE_OK {
208
+ print("open database failed with result: \(openResult)")
209
+ sqlite3_close(db)
210
+ return nil
211
+ }
212
+
213
+ var stmt: OpaquePointer?
214
+ let prepareResult = sqlite3_prepare(db, query, -1, &stmt, nil)
215
+ if prepareResult != SQLITE_OK {
216
+ print("prepare query failed with result: \(prepareResult)")
217
+ return nil
218
+ }
219
+ let value = block(stmt!)
220
+ sqlite3_finalize(stmt)
221
+ sqlite3_close(db)
222
+ return value
223
+ }
224
+ }
@@ -7,6 +7,8 @@ exports.useReactNativeConfig = exports.getTopLevelDomain = exports.getDefaultCon
7
7
  var _analyticsCore = require("@amplitude/analytics-core");
8
8
  var _analyticsClientCommon = require("@amplitude/analytics-client-common");
9
9
  var _localStorage = require("./storage/local-storage");
10
+ var _remnantDataMigration = _interopRequireDefault(require("./migration/remnant-data-migration"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
12
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
13
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
14
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -175,20 +177,30 @@ const useReactNativeConfig = async (apiKey, options) => {
175
177
  const queryParams = (0, _analyticsClientCommon.getQueryParams)();
176
178
 
177
179
  // reconcile user session
178
- const deviceId = (options === null || options === void 0 ? void 0 : options.deviceId) ?? queryParams.deviceId ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId) ?? (0, _analyticsCore.UUID)();
179
- const lastEventTime = (options === null || options === void 0 ? void 0 : options.lastEventTime) ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime);
180
+ let deviceId = (options === null || options === void 0 ? void 0 : options.deviceId) ?? queryParams.deviceId ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId);
181
+ let lastEventTime = (options === null || options === void 0 ? void 0 : options.lastEventTime) ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime);
180
182
  const optOut = (options === null || options === void 0 ? void 0 : options.optOut) ?? Boolean(previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.optOut);
181
- const sessionId = (options === null || options === void 0 ? void 0 : options.sessionId) ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId);
182
- const userId = (options === null || options === void 0 ? void 0 : options.userId) ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId);
183
+ let sessionId = (options === null || options === void 0 ? void 0 : options.sessionId) ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId);
184
+ let userId = (options === null || options === void 0 ? void 0 : options.userId) ?? (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId);
185
+ let lastEventId = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventId;
186
+ const storageProvider = (options === null || options === void 0 ? void 0 : options.storageProvider) ?? (await createEventsStorage(options));
187
+ if ((options === null || options === void 0 ? void 0 : options.migrateLegacyData) !== false) {
188
+ const legacySessionData = await new _remnantDataMigration.default(apiKey, options === null || options === void 0 ? void 0 : options.instanceName, storageProvider, (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime) === undefined, options === null || options === void 0 ? void 0 : options.loggerProvider).execute();
189
+ deviceId = deviceId ?? legacySessionData.deviceId;
190
+ userId = userId ?? legacySessionData.userId;
191
+ sessionId = sessionId ?? legacySessionData.sessionId;
192
+ lastEventTime = lastEventTime ?? legacySessionData.lastEventTime;
193
+ lastEventId = lastEventId ?? legacySessionData.lastEventId;
194
+ }
183
195
  const config = new ReactNativeConfig(apiKey, {
184
196
  ...options,
185
197
  cookieStorage,
186
- deviceId,
198
+ deviceId: deviceId ?? (0, _analyticsCore.UUID)(),
187
199
  domain,
188
200
  lastEventTime,
189
201
  optOut,
190
202
  sessionId,
191
- storageProvider: await createEventsStorage(options),
203
+ storageProvider,
192
204
  trackingOptions: {
193
205
  ...defaultConfig.trackingOptions,
194
206
  ...(options === null || options === void 0 ? void 0 : options.trackingOptions)
@@ -196,7 +208,7 @@ const useReactNativeConfig = async (apiKey, options) => {
196
208
  transportProvider: (options === null || options === void 0 ? void 0 : options.transportProvider) ?? new _analyticsClientCommon.FetchTransport(),
197
209
  userId
198
210
  });
199
- config.lastEventId = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventId;
211
+ config.lastEventId = lastEventId;
200
212
  (_config$loggerProvide = config.loggerProvider) === null || _config$loggerProvide === void 0 ? void 0 : _config$loggerProvide.log(`Init: storage=${cookieStorage.constructor.name} restoredSessionId = ${(previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId) ?? 'undefined'}, optionsSessionId = ${(options === null || options === void 0 ? void 0 : options.sessionId) ?? 'undefined'}`);
201
213
  return config;
202
214
  };
@@ -1 +1 @@
1
- {"version":3,"names":["getDefaultConfig","cookieStorage","MemoryStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","appSetId","idfv","cookieExpiration","cookieSameSite","cookieSecure","cookieUpgrade","disableCookies","domain","sessionTimeout","storageProvider","trackingSessionEvents","transportProvider","FetchTransport","ReactNativeConfig","Config","constructor","apiKey","options","defaultConfig","flushIntervalMillis","flushMaxRetries","flushQueueSize","deviceId","lastEventTime","optOut","Boolean","sessionId","userId","appVersion","partnerId","_deviceId","updateStorage","_userId","_sessionId","_optOut","_lastEventTime","lastEventId","_lastEventId","cache","set","getCookieName","useReactNativeConfig","getTopLevelDomain","createCookieStorage","previousCookies","get","queryParams","getQueryParams","UUID","config","createEventsStorage","loggerProvider","log","name","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","CookieStorage","expirationDays","sameSite","secure","LocalStorage","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","undefined","url","location","host","hostname","parts","split","levels","storageKey","i","length","push","slice","join","value","remove"],"sourceRoot":"../../src","sources":["config.ts"],"mappings":"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"}
1
+ {"version":3,"names":["getDefaultConfig","cookieStorage","MemoryStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","appSetId","idfv","cookieExpiration","cookieSameSite","cookieSecure","cookieUpgrade","disableCookies","domain","sessionTimeout","storageProvider","trackingSessionEvents","transportProvider","FetchTransport","ReactNativeConfig","Config","constructor","apiKey","options","defaultConfig","flushIntervalMillis","flushMaxRetries","flushQueueSize","deviceId","lastEventTime","optOut","Boolean","sessionId","userId","appVersion","partnerId","_deviceId","updateStorage","_userId","_sessionId","_optOut","_lastEventTime","lastEventId","_lastEventId","cache","set","getCookieName","useReactNativeConfig","getTopLevelDomain","createCookieStorage","previousCookies","get","queryParams","getQueryParams","createEventsStorage","migrateLegacyData","legacySessionData","RemnantDataMigration","instanceName","undefined","loggerProvider","execute","config","UUID","log","name","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","CookieStorage","expirationDays","sameSite","secure","LocalStorage","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","url","location","host","hostname","parts","split","levels","storageKey","i","length","push","slice","join","value","remove"],"sourceRoot":"../../src","sources":["config.ts"],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
10
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
11
+ class RemnantDataMigration {
12
+ constructor(apiKey, instanceName, storage, firstRunSinceUpgrade, logger) {
13
+ this.apiKey = apiKey;
14
+ this.instanceName = instanceName;
15
+ this.storage = storage;
16
+ this.firstRunSinceUpgrade = firstRunSinceUpgrade;
17
+ this.logger = logger;
18
+ _defineProperty(this, "eventsStorageKey", void 0);
19
+ _defineProperty(this, "nativeModule", void 0);
20
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
21
+ this.eventsStorageKey = `AMP_unsent_${this.apiKey.substring(0, 10)}`; // TODO Use StoragePrefix when it will be exported
22
+ this.nativeModule = _reactNative.NativeModules.AmplitudeReactNative;
23
+ }
24
+ async execute() {
25
+ if (!this.nativeModule) {
26
+ return {};
27
+ }
28
+ if (this.firstRunSinceUpgrade) {
29
+ await this.moveIdentifies();
30
+ await this.moveInterceptedIdentifies();
31
+ }
32
+ await this.moveEvents();
33
+ const sessionData = await this.callNativeFunction(() => this.nativeModule.getLegacySessionData(this.instanceName));
34
+ return sessionData ?? {};
35
+ }
36
+ async moveEvents() {
37
+ await this.moveLegacyEvents('event');
38
+ }
39
+ async moveIdentifies() {
40
+ await this.moveLegacyEvents('identify');
41
+ }
42
+ async moveInterceptedIdentifies() {
43
+ await this.moveLegacyEvents('interceptedIdentify');
44
+ }
45
+ async callNativeFunction(action) {
46
+ try {
47
+ return await action();
48
+ } catch (e) {
49
+ var _this$logger;
50
+ (_this$logger = this.logger) === null || _this$logger === void 0 ? void 0 : _this$logger.error(`can't call native function: ${String(e)}`);
51
+ return undefined;
52
+ }
53
+ }
54
+ callNativeAction(action) {
55
+ try {
56
+ action();
57
+ } catch (e) {
58
+ var _this$logger2;
59
+ (_this$logger2 = this.logger) === null || _this$logger2 === void 0 ? void 0 : _this$logger2.error(`can't call native function: ${String(e)}`);
60
+ }
61
+ }
62
+ async moveLegacyEvents(eventKind) {
63
+ const legacyJsonEvents = await this.callNativeFunction(() => this.nativeModule.getLegacyEvents(this.instanceName, eventKind));
64
+ if (!this.storage || !legacyJsonEvents || legacyJsonEvents.length === 0) {
65
+ return;
66
+ }
67
+ const events = (await this.storage.get(this.eventsStorageKey)) ?? [];
68
+ const eventIds = [];
69
+ legacyJsonEvents.forEach(jsonEvent => {
70
+ const event = this.convertLegacyEvent(jsonEvent);
71
+ if (event) {
72
+ events.push(event);
73
+ if (event.event_id !== undefined) {
74
+ eventIds.push(event.event_id);
75
+ }
76
+ }
77
+ });
78
+ await this.storage.set(this.eventsStorageKey, events);
79
+ eventIds.forEach(eventId => this.callNativeAction(() => this.nativeModule.removeLegacyEvent(this.instanceName, eventKind, eventId)));
80
+ }
81
+
82
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */
83
+ convertLegacyEvent(legacyJsonEvent) {
84
+ try {
85
+ const event = JSON.parse(legacyJsonEvent);
86
+ const {
87
+ library,
88
+ timestamp,
89
+ uuid,
90
+ api_properties
91
+ } = event;
92
+ if (library !== undefined) {
93
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
94
+ event.library = `${library.name}/${library.version}`;
95
+ }
96
+ if (timestamp !== undefined) {
97
+ event.time = timestamp;
98
+ }
99
+ if (uuid !== undefined) {
100
+ event.insert_id = uuid;
101
+ }
102
+ if (api_properties) {
103
+ const {
104
+ androidADID,
105
+ android_app_set_id,
106
+ ios_idfa,
107
+ ios_idfv,
108
+ productId,
109
+ quantity,
110
+ price,
111
+ location
112
+ } = api_properties;
113
+ if (androidADID !== undefined) {
114
+ event.adid = androidADID;
115
+ }
116
+ if (android_app_set_id !== undefined) {
117
+ event.android_app_set_id = android_app_set_id;
118
+ }
119
+ if (ios_idfa !== undefined) {
120
+ event.idfa = ios_idfa;
121
+ }
122
+ if (ios_idfv !== undefined) {
123
+ event.idfv = ios_idfv;
124
+ }
125
+ if (productId !== undefined) {
126
+ event.productId = productId;
127
+ }
128
+ if (quantity !== undefined) {
129
+ event.quantity = quantity;
130
+ }
131
+ if (price !== undefined) {
132
+ event.price = price;
133
+ }
134
+ if (location !== undefined) {
135
+ const {
136
+ lat,
137
+ lng
138
+ } = location;
139
+ event.location_lat = lat;
140
+ event.location_lng = lng;
141
+ }
142
+ }
143
+ const {
144
+ $productId: productId,
145
+ $quantity: quantity,
146
+ $price: price,
147
+ $revenueType: revenueType
148
+ } = event;
149
+ if (productId !== undefined) {
150
+ event.productId = productId;
151
+ }
152
+ if (quantity !== undefined) {
153
+ event.quantity = quantity;
154
+ }
155
+ if (price !== undefined) {
156
+ event.price = price;
157
+ }
158
+ if (revenueType !== undefined) {
159
+ event.revenueType = revenueType;
160
+ }
161
+ return event;
162
+ } catch {
163
+ // skip invalid events
164
+ return null;
165
+ }
166
+ }
167
+ // eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
168
+ }
169
+ exports.default = RemnantDataMigration;
170
+ //# sourceMappingURL=remnant-data-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RemnantDataMigration","constructor","apiKey","instanceName","storage","firstRunSinceUpgrade","logger","eventsStorageKey","substring","nativeModule","NativeModules","AmplitudeReactNative","execute","moveIdentifies","moveInterceptedIdentifies","moveEvents","sessionData","callNativeFunction","getLegacySessionData","moveLegacyEvents","action","e","error","String","undefined","callNativeAction","eventKind","legacyJsonEvents","getLegacyEvents","length","events","get","eventIds","forEach","jsonEvent","event","convertLegacyEvent","push","event_id","set","eventId","removeLegacyEvent","legacyJsonEvent","JSON","parse","library","timestamp","uuid","api_properties","name","version","time","insert_id","androidADID","android_app_set_id","ios_idfa","ios_idfv","productId","quantity","price","location","adid","idfa","idfv","lat","lng","location_lat","location_lng","$productId","$quantity","$price","$revenueType","revenueType"],"sourceRoot":"../../src","sources":["remnant-data-migration.ts"],"mappings":"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"}
@@ -26,10 +26,13 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
26
26
  _defineProperty(this, "handleAppStateChange", nextAppState => {
27
27
  const currentAppState = this.appState;
28
28
  this.appState = nextAppState;
29
- if (currentAppState !== nextAppState && nextAppState === 'active') {
30
- var _this$config$loggerPr;
31
- (_this$config$loggerPr = this.config.loggerProvider) === null || _this$config$loggerPr === void 0 ? void 0 : _this$config$loggerPr.log('App Activated');
32
- this.startNewSessionIfNeeded();
29
+ if (currentAppState !== nextAppState) {
30
+ const timestamp = this.currentTimeMillis();
31
+ if (nextAppState == 'active') {
32
+ this.enterForeground(timestamp);
33
+ } else {
34
+ this.exitForeground(timestamp);
35
+ }
33
36
  }
34
37
  });
35
38
  }
@@ -44,7 +47,7 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
44
47
  }));
45
48
  }
46
49
  async _init(options) {
47
- var _this$config$loggerPr2;
50
+ var _this$config$loggerPr;
48
51
  // Step 0: Block concurrent initialization
49
52
  if (this.initializing) {
50
53
  return;
@@ -58,11 +61,11 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
58
61
  // Step 2: Create react native config
59
62
  const reactNativeOptions = await (0, _config.useReactNativeConfig)(options.apiKey, {
60
63
  ...options,
61
- deviceId: oldCookies.deviceId ?? options.deviceId,
64
+ deviceId: options.deviceId ?? oldCookies.deviceId,
62
65
  sessionId: oldCookies.sessionId,
63
66
  optOut: options.optOut ?? oldCookies.optOut,
64
67
  lastEventTime: oldCookies.lastEventTime,
65
- userId: options.userId || oldCookies.userId
68
+ userId: options.userId ?? oldCookies.userId
66
69
  });
67
70
  await super._init(reactNativeOptions);
68
71
 
@@ -83,8 +86,8 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
83
86
 
84
87
  // Step 4: Manage session
85
88
  this.appState = _reactNative.AppState.currentState;
86
- const isNewSession = this.startNewSessionIfNeeded();
87
- (_this$config$loggerPr2 = this.config.loggerProvider) === null || _this$config$loggerPr2 === void 0 ? void 0 : _this$config$loggerPr2.log(`Init: startNewSessionIfNeeded = ${isNewSession ? 'yes' : 'no'}, sessionId = ${this.getSessionId() ?? 'undefined'}`);
89
+ const isNewSession = this.startNewSessionIfNeeded(this.currentTimeMillis());
90
+ (_this$config$loggerPr = this.config.loggerProvider) === null || _this$config$loggerPr === void 0 ? void 0 : _this$config$loggerPr.log(`Init: startNewSessionIfNeeded = ${isNewSession ? 'yes' : 'no'}, sessionId = ${this.getSessionId() ?? 'undefined'}`);
88
91
  this.appStateChangeHandler = _reactNative.AppState.addEventListener('change', this.handleAppStateChange);
89
92
  this.initializing = false;
90
93
 
@@ -185,8 +188,8 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
185
188
  }
186
189
  this.config.sessionId = sessionId;
187
190
  if (this.config.trackingSessionEvents) {
188
- var _this$config$loggerPr3, _this$config$loggerPr4;
189
- (_this$config$loggerPr3 = this.config.loggerProvider) === null || _this$config$loggerPr3 === void 0 ? void 0 : _this$config$loggerPr3.log(`SESSION_END event: previousSessionId = ${previousSessionId ?? 'undefined'}`);
191
+ var _this$config$loggerPr2, _this$config$loggerPr3;
192
+ (_this$config$loggerPr2 = this.config.loggerProvider) === null || _this$config$loggerPr2 === void 0 ? void 0 : _this$config$loggerPr2.log(`SESSION_END event: previousSessionId = ${previousSessionId ?? 'undefined'}`);
190
193
  if (previousSessionId !== undefined) {
191
194
  const sessionEndEvent = {
192
195
  event_type: END_SESSION_EVENT,
@@ -196,7 +199,7 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
196
199
  };
197
200
  void this.track(sessionEndEvent);
198
201
  }
199
- (_this$config$loggerPr4 = this.config.loggerProvider) === null || _this$config$loggerPr4 === void 0 ? void 0 : _this$config$loggerPr4.log(`SESSION_START event: sessionId = ${sessionId}`);
202
+ (_this$config$loggerPr3 = this.config.loggerProvider) === null || _this$config$loggerPr3 === void 0 ? void 0 : _this$config$loggerPr3.log(`SESSION_START event: sessionId = ${sessionId}`);
200
203
  const sessionStartEvent = {
201
204
  event_type: START_SESSION_EVENT,
202
205
  time: eventTime,
@@ -215,17 +218,21 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
215
218
  time: eventTime
216
219
  };
217
220
  }
218
- if (event.event_type != START_SESSION_EVENT && event.event_type != END_SESSION_EVENT) {
219
- if (this.appState !== 'active') {
220
- this.startNewSessionIfNeeded(eventTime);
221
+ const isSessionEvent = event.event_type === START_SESSION_EVENT || event.event_type === END_SESSION_EVENT;
222
+ const isCustomEventSessionId = !isSessionEvent && event.session_id != undefined && event.session_id !== this.getSessionId();
223
+ if (!isCustomEventSessionId) {
224
+ if (!isSessionEvent) {
225
+ if (this.appState !== 'active') {
226
+ this.startNewSessionIfNeeded(eventTime);
227
+ }
221
228
  }
229
+ this.config.lastEventTime = eventTime;
222
230
  }
223
- this.config.lastEventTime = eventTime;
224
231
  if (event.session_id == undefined) {
225
232
  event.session_id = this.getSessionId();
226
233
  }
227
234
  if (event.event_id === undefined) {
228
- const eventId = (this.config.lastEventId ?? -1) + 1;
235
+ const eventId = (this.config.lastEventId ?? 0) + 1;
229
236
  event = {
230
237
  ...event,
231
238
  event_id: eventId
@@ -238,22 +245,34 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
238
245
  currentTimeMillis() {
239
246
  return Date.now();
240
247
  }
241
- startNewSessionIfNeeded(eventTime) {
242
- eventTime = eventTime ?? this.currentTimeMillis();
243
- const sessionId = this.explicitSessionId ?? eventTime;
244
- if (this.inSession() && (this.explicitSessionId === this.config.sessionId || this.explicitSessionId === undefined && this.isWithinMinTimeBetweenSessions(sessionId))) {
245
- this.config.lastEventTime = eventTime;
246
- return false;
248
+ startNewSessionIfNeeded(timestamp) {
249
+ const sessionId = this.explicitSessionId ?? timestamp;
250
+ const shouldStartNewSession = this.shouldStartNewSession(timestamp);
251
+ if (shouldStartNewSession) {
252
+ this.setSessionIdInternal(sessionId, timestamp);
253
+ } else {
254
+ this.config.lastEventTime = timestamp;
247
255
  }
248
- this.setSessionIdInternal(sessionId, eventTime);
249
- return true;
256
+ return shouldStartNewSession;
257
+ }
258
+ shouldStartNewSession(timestamp) {
259
+ const sessionId = this.explicitSessionId ?? timestamp;
260
+ return !this.inSession() || this.explicitSessionId !== this.config.sessionId && (this.explicitSessionId !== undefined || !this.isWithinMinTimeBetweenSessions(sessionId));
250
261
  }
251
- isWithinMinTimeBetweenSessions(eventTime) {
252
- return eventTime - (this.config.lastEventTime ?? 0) < this.config.sessionTimeout;
262
+ isWithinMinTimeBetweenSessions(timestamp) {
263
+ return timestamp - (this.config.lastEventTime ?? 0) < this.config.sessionTimeout;
253
264
  }
254
265
  inSession() {
255
266
  return this.config.sessionId != undefined;
256
267
  }
268
+ enterForeground(timestamp) {
269
+ var _this$config$loggerPr4;
270
+ (_this$config$loggerPr4 = this.config.loggerProvider) === null || _this$config$loggerPr4 === void 0 ? void 0 : _this$config$loggerPr4.log('App Activated');
271
+ return this.startNewSessionIfNeeded(timestamp);
272
+ }
273
+ exitForeground(timestamp) {
274
+ this.config.lastEventTime = timestamp;
275
+ }
257
276
  }
258
277
  exports.AmplitudeReactNative = AmplitudeReactNative;
259
278
  const createInstance = () => {