@attentive-mobile/attentive-react-native-sdk 2.0.0-beta.3 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +4 -0
- package/android/src/main/kotlin/com/attentivereactnativesdk/AttentiveReactNativeSdkModule.kt +357 -57
- package/android/src/main/kotlin/com/attentivereactnativesdk/debug/NetworkingHelper.kt +220 -0
- package/ios/AttentiveReactNativeSdk.mm +1 -0
- package/ios/AttentiveReactNativeSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/AttentiveReactNativeSdk.xcodeproj/project.xcworkspace/xcuserdata/zheref.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/AttentiveReactNativeSdk.xcodeproj/xcuserdata/zheref.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/ios/Bridging/ATTNNativeSDK.swift +47 -6
- package/lib/commonjs/NativeAttentiveReactNativeSdk.js.map +1 -1
- package/lib/commonjs/eventTypes.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeAttentiveReactNativeSdk.js.map +1 -1
- package/lib/module/eventTypes.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/package.json +1 -1
- package/ios/AttentiveReactNativeSdk.xcworkspace/contents.xcworkspacedata +0 -10
package/android/build.gradle
CHANGED
|
@@ -85,6 +85,10 @@ dependencies {
|
|
|
85
85
|
implementation 'com.attentive:attentive-android-sdk:1.0.1'
|
|
86
86
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.10"
|
|
87
87
|
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.9.10"))
|
|
88
|
+
|
|
89
|
+
// OkHttp for networking debugging (optional, only used when debugging is enabled)
|
|
90
|
+
implementation "com.squareup.okhttp3:okhttp:4.12.0"
|
|
91
|
+
implementation "com.squareup.okhttp3:logging-interceptor:4.12.0"
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
if (isNewArchitectureEnabled()) {
|
package/android/src/main/kotlin/com/attentivereactnativesdk/AttentiveReactNativeSdkModule.kt
CHANGED
|
@@ -22,6 +22,7 @@ import com.facebook.react.bridge.ReadableArray
|
|
|
22
22
|
import com.facebook.react.bridge.ReadableMap
|
|
23
23
|
import com.facebook.react.bridge.UiThreadUtil
|
|
24
24
|
import com.facebook.react.bridge.Promise
|
|
25
|
+
import com.facebook.react.bridge.Callback
|
|
25
26
|
import com.attentivereactnativesdk.debug.AttentiveDebugHelper
|
|
26
27
|
import java.math.BigDecimal
|
|
27
28
|
import java.security.InvalidParameterException
|
|
@@ -236,69 +237,356 @@ class AttentiveReactNativeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
236
237
|
}
|
|
237
238
|
|
|
238
239
|
// ==========================================================================
|
|
239
|
-
// MARK: - Push Notification Methods (Android Implementation
|
|
240
|
+
// MARK: - Push Notification Methods (Android Implementation)
|
|
240
241
|
// ==========================================================================
|
|
241
242
|
//
|
|
242
|
-
// These methods
|
|
243
|
-
//
|
|
244
|
-
//
|
|
243
|
+
// These methods provide Android push notification support.
|
|
244
|
+
//
|
|
245
|
+
// IMPORTANT NOTE: The Attentive Android SDK version 1.0.1 has limited push notification
|
|
246
|
+
// support compared to version 2.x. These methods provide logging and debugging infrastructure
|
|
247
|
+
// but may require SDK upgrade or custom implementation for full functionality.
|
|
245
248
|
//
|
|
246
|
-
//
|
|
247
|
-
// - Integrate with Firebase Cloud Messaging (FCM)
|
|
248
|
-
// - Register FCM token with Attentive backend
|
|
249
|
-
// - Handle push notification opens and foreground notifications
|
|
250
|
-
// - Consider using the attentive-android-sdk's push notification features if available
|
|
251
|
-
//
|
|
252
|
-
// Reference: The iOS implementation uses:
|
|
253
|
-
// - registerForPushNotifications() - Request permission
|
|
254
|
-
// - registerDeviceToken() - Send token to backend
|
|
255
|
-
// - handlePushOpened() - Track push open events
|
|
256
|
-
// - handleForegroundNotification() - Handle foreground push display
|
|
249
|
+
// The iOS implementation uses APNs; Android uses Firebase Cloud Messaging (FCM).
|
|
257
250
|
// ==========================================================================
|
|
258
251
|
|
|
259
252
|
/**
|
|
260
253
|
* Request push notification permission from the user.
|
|
261
254
|
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
255
|
+
* Note: For Android 13+ (API 33+), you need to request POST_NOTIFICATIONS permission
|
|
256
|
+
* in your app's AndroidManifest.xml and request it at runtime.
|
|
257
|
+
* For older versions, permissions are granted at install time.
|
|
258
|
+
*
|
|
259
|
+
* This method is currently a logging placeholder for parity with iOS.
|
|
260
|
+
* Actual permission handling should be done in the host app.
|
|
266
261
|
*/
|
|
267
262
|
override fun registerForPushNotifications() {
|
|
268
|
-
Log.i(TAG, "[
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
263
|
+
Log.i(TAG, "📱 [AttentiveSDK] registerForPushNotifications called (Android)")
|
|
264
|
+
Log.i(TAG, " Note: Push notification permissions should be requested in your host app")
|
|
265
|
+
Log.i(TAG, " For Android 13+, request POST_NOTIFICATIONS permission at runtime")
|
|
266
|
+
|
|
267
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
268
|
+
val debugData = mutableMapOf<String, Any>()
|
|
269
|
+
debugData["platform"] = "Android"
|
|
270
|
+
debugData["sdk_version"] = "1.0.1"
|
|
271
|
+
debugData["note"] = "Permission handling should be done in host app"
|
|
272
|
+
debugHelper.showDebugInfo("Push Registration Requested", debugData)
|
|
273
|
+
}
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
/**
|
|
277
|
-
* Register the device token with the Attentive backend.
|
|
277
|
+
* Register the device token (FCM token) with the Attentive backend.
|
|
278
278
|
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
* - Token format and registration endpoint may differ
|
|
279
|
+
* This method attempts to register the FCM push token with the Attentive SDK.
|
|
280
|
+
* Note: The exact API for push token registration may vary by SDK version.
|
|
282
281
|
*
|
|
283
|
-
* @param token The FCM registration token
|
|
284
|
-
* @param authorizationStatus Push authorization status (
|
|
282
|
+
* @param token The FCM registration token from Firebase
|
|
283
|
+
* @param authorizationStatus Push authorization status (used for consistency with iOS)
|
|
285
284
|
*/
|
|
286
285
|
override fun registerDeviceToken(token: String, authorizationStatus: String) {
|
|
287
|
-
Log.i(TAG, "[
|
|
288
|
-
Log.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
286
|
+
Log.i(TAG, "🎫 [AttentiveSDK] registerDeviceToken called (Android)")
|
|
287
|
+
Log.i(TAG, " Token (preview): ${token.take(16)}...")
|
|
288
|
+
Log.i(TAG, " Token length: ${token.length}")
|
|
289
|
+
Log.i(TAG, " Authorization status: $authorizationStatus")
|
|
290
|
+
|
|
291
|
+
try {
|
|
292
|
+
// Note: Attentive Android SDK 1.0.1 may not have direct push token registration
|
|
293
|
+
// For SDK version 2.x, use: AttentiveConfig.setDeviceToken() or similar
|
|
294
|
+
// For now, we log the token and make it available for custom implementation
|
|
295
|
+
|
|
296
|
+
Log.i(TAG, "⚠️ [AttentiveSDK] Push token registration requires manual implementation")
|
|
297
|
+
Log.i(TAG, " FCM token available: ${token.take(16)}...")
|
|
298
|
+
Log.i(TAG, " Store this token and register it with Attentive backend manually")
|
|
299
|
+
Log.i(TAG, " Or upgrade to Attentive Android SDK 2.x for built-in support")
|
|
300
|
+
|
|
301
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
302
|
+
val debugData = mutableMapOf<String, Any>()
|
|
303
|
+
debugData["token_preview"] = "${token.take(16)}..."
|
|
304
|
+
debugData["token_length"] = token.length.toString()
|
|
305
|
+
debugData["authorization_status"] = authorizationStatus
|
|
306
|
+
debugData["sdk_version"] = "1.0.1"
|
|
307
|
+
debugData["implementation_status"] = "manual_required"
|
|
308
|
+
debugHelper.showDebugInfo("Device Token (Android)", debugData)
|
|
309
|
+
}
|
|
310
|
+
} catch (e: Exception) {
|
|
311
|
+
Log.e(TAG, "❌ [AttentiveSDK] Error in registerDeviceToken: ${e.message}", e)
|
|
312
|
+
|
|
313
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
314
|
+
val debugData = mutableMapOf<String, Any>()
|
|
315
|
+
debugData["error"] = e.message ?: "Unknown error"
|
|
316
|
+
debugData["error_type"] = e.javaClass.simpleName
|
|
317
|
+
debugHelper.showDebugInfo("Device Token Registration Error", debugData)
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Register the device token with callback for network response tracking.
|
|
324
|
+
*
|
|
325
|
+
* Note: The Android SDK version 1.0.1 doesn't provide a callback mechanism for
|
|
326
|
+
* push token registration. This method logs the token and invokes the callback
|
|
327
|
+
* immediately for consistency with the iOS API.
|
|
328
|
+
*
|
|
329
|
+
* @param token The FCM registration token
|
|
330
|
+
* @param authorizationStatus Push authorization status
|
|
331
|
+
* @param callback Callback invoked after registration attempt
|
|
332
|
+
*/
|
|
333
|
+
override fun registerDeviceTokenWithCallback(
|
|
334
|
+
token: String,
|
|
335
|
+
authorizationStatus: String,
|
|
336
|
+
callback: Callback
|
|
337
|
+
) {
|
|
338
|
+
Log.i(TAG, "🎫 [AttentiveSDK] registerDeviceTokenWithCallback called (Android)")
|
|
339
|
+
Log.i(TAG, " Token (preview): ${token.take(16)}...")
|
|
340
|
+
Log.i(TAG, " Authorization status: $authorizationStatus")
|
|
341
|
+
|
|
342
|
+
try {
|
|
343
|
+
// Register using the standard method (which logs the token)
|
|
344
|
+
registerDeviceToken(token, authorizationStatus)
|
|
345
|
+
|
|
346
|
+
// Invoke callback immediately with success response
|
|
347
|
+
val responseData = mapOf(
|
|
348
|
+
"success" to true,
|
|
349
|
+
"token" to "${token.take(16)}...",
|
|
350
|
+
"platform" to "Android",
|
|
351
|
+
"sdk_version" to "1.0.1",
|
|
352
|
+
"note" to "Manual push token registration required"
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
// Invoke callback with: data, url, response, error
|
|
356
|
+
callback.invoke(
|
|
357
|
+
responseData, // data
|
|
358
|
+
null, // url (not available in Android SDK)
|
|
359
|
+
mapOf("statusCode" to 200), // response
|
|
360
|
+
null // error
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
Log.i(TAG, "📥 [AttentiveSDK] Callback invoked with success response")
|
|
364
|
+
|
|
365
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
366
|
+
val debugData = mutableMapOf<String, Any>()
|
|
367
|
+
debugData["token_preview"] = "${token.take(16)}..."
|
|
368
|
+
debugData["authorization_status"] = authorizationStatus
|
|
369
|
+
debugData["callback_invoked"] = "true"
|
|
370
|
+
debugHelper.showDebugInfo("Device Token (with callback)", debugData)
|
|
371
|
+
}
|
|
372
|
+
} catch (e: Exception) {
|
|
373
|
+
Log.e(TAG, "❌ [AttentiveSDK] Error in registerDeviceTokenWithCallback: ${e.message}", e)
|
|
374
|
+
|
|
375
|
+
val errorData = mapOf(
|
|
376
|
+
"code" to 0,
|
|
377
|
+
"message" to (e.message ?: "Unknown error"),
|
|
378
|
+
"type" to e.javaClass.simpleName
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
// Invoke callback with error
|
|
382
|
+
callback.invoke(null, null, null, errorData)
|
|
383
|
+
|
|
384
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
385
|
+
val debugData = mutableMapOf<String, Any>()
|
|
386
|
+
debugData["error"] = e.message ?: "Unknown error"
|
|
387
|
+
debugData["error_type"] = e.javaClass.simpleName
|
|
388
|
+
debugHelper.showDebugInfo("Device Token Error (callback)", debugData)
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Handle regular/direct app open (not from a push notification).
|
|
395
|
+
*
|
|
396
|
+
* This tracks app open events using the Attentive SDK's event tracking system.
|
|
397
|
+
*
|
|
398
|
+
* @param authorizationStatus Current push authorization status
|
|
399
|
+
*/
|
|
400
|
+
override fun handleRegularOpen(authorizationStatus: String) {
|
|
401
|
+
Log.i(TAG, "🌉 [AttentiveSDK] handleRegularOpen called (Android)")
|
|
402
|
+
Log.i(TAG, " Authorization status: $authorizationStatus")
|
|
403
|
+
Log.i(TAG, " Tracking regular app open event...")
|
|
404
|
+
|
|
405
|
+
try {
|
|
406
|
+
// Attentive Android SDK 1.0.1 doesn't have a built-in handleRegularOpen method
|
|
407
|
+
// We can track this as a custom event or use AttentiveEventTracker
|
|
408
|
+
|
|
409
|
+
// Option 1: Track as custom event
|
|
410
|
+
val properties = mapOf(
|
|
411
|
+
"event_type" to "app_open",
|
|
412
|
+
"authorization_status" to authorizationStatus,
|
|
413
|
+
"platform" to "Android"
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
try {
|
|
417
|
+
val customEvent = com.attentive.androidsdk.events.CustomEvent.Builder(
|
|
418
|
+
"app_open",
|
|
419
|
+
properties
|
|
420
|
+
).build()
|
|
421
|
+
|
|
422
|
+
AttentiveEventTracker.getInstance().recordEvent(customEvent)
|
|
423
|
+
|
|
424
|
+
Log.i(TAG, "✅ [AttentiveSDK] handleRegularOpen completed (tracked as custom event)")
|
|
425
|
+
Log.i(TAG, " Event sent to Attentive backend")
|
|
426
|
+
} catch (e: Exception) {
|
|
427
|
+
Log.w(TAG, "⚠️ [AttentiveSDK] Could not track app open as custom event: ${e.message}")
|
|
428
|
+
Log.i(TAG, " App open tracking requires manual implementation or SDK upgrade")
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
432
|
+
val debugData = mutableMapOf<String, Any>()
|
|
433
|
+
debugData["authorization_status"] = authorizationStatus
|
|
434
|
+
debugData["event_type"] = "regular_open"
|
|
435
|
+
debugData["platform"] = "Android"
|
|
436
|
+
debugData["sdk_version"] = "1.0.1"
|
|
437
|
+
debugHelper.showDebugInfo("Regular Open Event", debugData)
|
|
438
|
+
}
|
|
439
|
+
} catch (e: Exception) {
|
|
440
|
+
Log.e(TAG, "❌ [AttentiveSDK] Error in handleRegularOpen: ${e.message}", e)
|
|
441
|
+
|
|
442
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
443
|
+
val debugData = mutableMapOf<String, Any>()
|
|
444
|
+
debugData["error"] = e.message ?: "Unknown error"
|
|
445
|
+
debugData["error_type"] = e.javaClass.simpleName
|
|
446
|
+
debugHelper.showDebugInfo("Regular Open Error", debugData)
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Handle when a push notification is opened by the user (app in background/inactive state).
|
|
453
|
+
*
|
|
454
|
+
* This tracks push notification open events using the Attentive SDK's event tracking system.
|
|
455
|
+
*
|
|
456
|
+
* @param userInfo The notification payload
|
|
457
|
+
* @param authorizationStatus Current push authorization status
|
|
458
|
+
*/
|
|
459
|
+
override fun handlePushOpen(userInfo: ReadableMap, authorizationStatus: String) {
|
|
460
|
+
Log.i(TAG, "🔔 [AttentiveSDK] handlePushOpen called (Android)")
|
|
461
|
+
Log.i(TAG, " Authorization status: $authorizationStatus")
|
|
462
|
+
Log.i(TAG, " User opened push notification while app was in background/inactive")
|
|
463
|
+
|
|
464
|
+
try {
|
|
465
|
+
// Convert ReadableMap to HashMap for processing
|
|
466
|
+
val payload = userInfo.toHashMap()
|
|
467
|
+
|
|
468
|
+
Log.d(TAG, " Notification payload: $payload")
|
|
469
|
+
|
|
470
|
+
// Track push open as custom event
|
|
471
|
+
val properties = mutableMapOf<String, String>()
|
|
472
|
+
properties["event_type"] = "push_open"
|
|
473
|
+
properties["authorization_status"] = authorizationStatus
|
|
474
|
+
properties["platform"] = "Android"
|
|
475
|
+
|
|
476
|
+
// Add notification payload to properties (converting to strings)
|
|
477
|
+
payload.forEach { (key, value) ->
|
|
478
|
+
properties["notification_$key"] = value?.toString() ?: "null"
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
try {
|
|
482
|
+
val customEvent = com.attentive.androidsdk.events.CustomEvent.Builder(
|
|
483
|
+
"push_open",
|
|
484
|
+
properties
|
|
485
|
+
).build()
|
|
486
|
+
|
|
487
|
+
AttentiveEventTracker.getInstance().recordEvent(customEvent)
|
|
488
|
+
|
|
489
|
+
Log.i(TAG, "✅ [AttentiveSDK] handlePushOpen completed (tracked as custom event)")
|
|
490
|
+
Log.i(TAG, " Push open event sent to Attentive backend")
|
|
491
|
+
} catch (e: Exception) {
|
|
492
|
+
Log.w(TAG, "⚠️ [AttentiveSDK] Could not track push open as custom event: ${e.message}")
|
|
493
|
+
Log.i(TAG, " Push open tracking requires manual implementation or SDK upgrade")
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
497
|
+
val debugData = mutableMapOf<String, Any>()
|
|
498
|
+
debugData["authorization_status"] = authorizationStatus
|
|
499
|
+
debugData["event_type"] = "push_open"
|
|
500
|
+
debugData["platform"] = "Android"
|
|
501
|
+
debugData["payload_keys"] = payload.keys.joinToString(", ")
|
|
502
|
+
debugData["sdk_version"] = "1.0.1"
|
|
503
|
+
debugHelper.showDebugInfo("Push Open Event", debugData)
|
|
504
|
+
}
|
|
505
|
+
} catch (e: Exception) {
|
|
506
|
+
Log.e(TAG, "❌ [AttentiveSDK] Error in handlePushOpen: ${e.message}", e)
|
|
507
|
+
|
|
508
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
509
|
+
val debugData = mutableMapOf<String, Any>()
|
|
510
|
+
debugData["error"] = e.message ?: "Unknown error"
|
|
511
|
+
debugData["error_type"] = e.javaClass.simpleName
|
|
512
|
+
debugHelper.showDebugInfo("Push Open Error", debugData)
|
|
513
|
+
}
|
|
514
|
+
}
|
|
292
515
|
}
|
|
293
516
|
|
|
294
517
|
/**
|
|
295
|
-
* Handle
|
|
518
|
+
* Handle a push notification when the app is in the foreground (active state).
|
|
296
519
|
*
|
|
297
|
-
*
|
|
298
|
-
* - Track push open events with Attentive
|
|
299
|
-
* - Handle deep linking if present in payload
|
|
520
|
+
* This tracks foreground push notification events using the Attentive SDK's event tracking system.
|
|
300
521
|
*
|
|
301
|
-
* @param userInfo The notification payload
|
|
522
|
+
* @param userInfo The notification payload
|
|
523
|
+
* @param authorizationStatus Current push authorization status
|
|
524
|
+
*/
|
|
525
|
+
override fun handleForegroundPush(userInfo: ReadableMap, authorizationStatus: String) {
|
|
526
|
+
Log.i(TAG, "📱 [AttentiveSDK] handleForegroundPush called (Android)")
|
|
527
|
+
Log.i(TAG, " Authorization status: $authorizationStatus")
|
|
528
|
+
Log.i(TAG, " Push received while app was in foreground (active)")
|
|
529
|
+
|
|
530
|
+
try {
|
|
531
|
+
// Convert ReadableMap to HashMap for processing
|
|
532
|
+
val payload = userInfo.toHashMap()
|
|
533
|
+
|
|
534
|
+
Log.d(TAG, " Notification payload: $payload")
|
|
535
|
+
|
|
536
|
+
// Track foreground push as custom event
|
|
537
|
+
val properties = mutableMapOf<String, String>()
|
|
538
|
+
properties["event_type"] = "foreground_push"
|
|
539
|
+
properties["authorization_status"] = authorizationStatus
|
|
540
|
+
properties["platform"] = "Android"
|
|
541
|
+
|
|
542
|
+
// Add notification payload to properties (converting to strings)
|
|
543
|
+
payload.forEach { (key, value) ->
|
|
544
|
+
properties["notification_$key"] = value?.toString() ?: "null"
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
try {
|
|
548
|
+
val customEvent = com.attentive.androidsdk.events.CustomEvent.Builder(
|
|
549
|
+
"foreground_push",
|
|
550
|
+
properties
|
|
551
|
+
).build()
|
|
552
|
+
|
|
553
|
+
AttentiveEventTracker.getInstance().recordEvent(customEvent)
|
|
554
|
+
|
|
555
|
+
Log.i(TAG, "✅ [AttentiveSDK] handleForegroundPush completed (tracked as custom event)")
|
|
556
|
+
Log.i(TAG, " Foreground push event sent to Attentive backend")
|
|
557
|
+
} catch (e: Exception) {
|
|
558
|
+
Log.w(TAG, "⚠️ [AttentiveSDK] Could not track foreground push as custom event: ${e.message}")
|
|
559
|
+
Log.i(TAG, " Foreground push tracking requires manual implementation or SDK upgrade")
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
563
|
+
val debugData = mutableMapOf<String, Any>()
|
|
564
|
+
debugData["authorization_status"] = authorizationStatus
|
|
565
|
+
debugData["event_type"] = "foreground_push"
|
|
566
|
+
debugData["platform"] = "Android"
|
|
567
|
+
debugData["payload_keys"] = payload.keys.joinToString(", ")
|
|
568
|
+
debugData["sdk_version"] = "1.0.1"
|
|
569
|
+
debugHelper.showDebugInfo("Foreground Push Event", debugData)
|
|
570
|
+
}
|
|
571
|
+
} catch (e: Exception) {
|
|
572
|
+
Log.e(TAG, "❌ [AttentiveSDK] Error in handleForegroundPush: ${e.message}", e)
|
|
573
|
+
|
|
574
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
575
|
+
val debugData = mutableMapOf<String, Any>()
|
|
576
|
+
debugData["error"] = e.message ?: "Unknown error"
|
|
577
|
+
debugData["error_type"] = e.javaClass.simpleName
|
|
578
|
+
debugHelper.showDebugInfo("Foreground Push Error", debugData)
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Handle when a push notification is opened by the user (legacy method).
|
|
585
|
+
*
|
|
586
|
+
* This is kept for backward compatibility with the iOS implementation.
|
|
587
|
+
* For new code, prefer using handlePushOpen or handleForegroundPush based on app state.
|
|
588
|
+
*
|
|
589
|
+
* @param userInfo The notification payload
|
|
302
590
|
* @param applicationState App state when notification was opened
|
|
303
591
|
* @param authorizationStatus Push authorization status
|
|
304
592
|
*/
|
|
@@ -307,30 +595,42 @@ class AttentiveReactNativeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
307
595
|
applicationState: String,
|
|
308
596
|
authorizationStatus: String
|
|
309
597
|
) {
|
|
310
|
-
Log.i(TAG, "[
|
|
311
|
-
Log.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
//
|
|
315
|
-
|
|
598
|
+
Log.i(TAG, "🔔 [AttentiveSDK] handlePushOpened called (Android - legacy method)")
|
|
599
|
+
Log.i(TAG, " App state: $applicationState")
|
|
600
|
+
Log.i(TAG, " Authorization status: $authorizationStatus")
|
|
601
|
+
|
|
602
|
+
// Route to the appropriate method based on application state
|
|
603
|
+
when (applicationState.lowercase()) {
|
|
604
|
+
"active" -> {
|
|
605
|
+
Log.i(TAG, " Routing to handleForegroundPush")
|
|
606
|
+
handleForegroundPush(userInfo, authorizationStatus)
|
|
607
|
+
}
|
|
608
|
+
"background", "inactive" -> {
|
|
609
|
+
Log.i(TAG, " Routing to handlePushOpen")
|
|
610
|
+
handlePushOpen(userInfo, authorizationStatus)
|
|
611
|
+
}
|
|
612
|
+
else -> {
|
|
613
|
+
Log.w(TAG, " Unknown application state, defaulting to handlePushOpen")
|
|
614
|
+
handlePushOpen(userInfo, authorizationStatus)
|
|
615
|
+
}
|
|
616
|
+
}
|
|
316
617
|
}
|
|
317
618
|
|
|
318
619
|
/**
|
|
319
|
-
* Handle when a push notification arrives while the app is in foreground.
|
|
620
|
+
* Handle when a push notification arrives while the app is in foreground (legacy method).
|
|
320
621
|
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
* - By default, FCM data messages don't show UI in foreground
|
|
324
|
-
* - Need to create NotificationCompat.Builder to show notification
|
|
622
|
+
* This is kept for backward compatibility with the iOS implementation.
|
|
623
|
+
* For new code, prefer using handleForegroundPush.
|
|
325
624
|
*
|
|
326
625
|
* @param userInfo The notification payload
|
|
327
626
|
*/
|
|
328
627
|
override fun handleForegroundNotification(userInfo: ReadableMap) {
|
|
329
|
-
Log.i(TAG, "[
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
//
|
|
333
|
-
//
|
|
628
|
+
Log.i(TAG, "📱 [AttentiveSDK] handleForegroundNotification called (Android - legacy method)")
|
|
629
|
+
Log.i(TAG, " Routing to handleForegroundPush with default authorization status")
|
|
630
|
+
|
|
631
|
+
// Route to handleForegroundPush with a default authorization status
|
|
632
|
+
// Note: Authorization status is less relevant on Android than iOS
|
|
633
|
+
handleForegroundPush(userInfo, "authorized")
|
|
334
634
|
}
|
|
335
635
|
|
|
336
636
|
private fun convertToStringMap(inputMap: Map<String, Any?>): Map<String, String> {
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
package com.attentivereactnativesdk.debug
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import okhttp3.*
|
|
5
|
+
import okhttp3.logging.HttpLoggingInterceptor
|
|
6
|
+
import java.io.IOException
|
|
7
|
+
import java.util.concurrent.TimeUnit
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Networking helper for debugging HTTP requests made by the Attentive SDK.
|
|
11
|
+
*
|
|
12
|
+
* This class provides:
|
|
13
|
+
* - HTTP request/response logging
|
|
14
|
+
* - Network call tracking for debugging
|
|
15
|
+
* - Integration with the debug overlay
|
|
16
|
+
*
|
|
17
|
+
* Note: This is for debugging purposes only and should be disabled in production builds.
|
|
18
|
+
*/
|
|
19
|
+
class NetworkingHelper(private val debugHelper: AttentiveDebugHelper) {
|
|
20
|
+
|
|
21
|
+
companion object {
|
|
22
|
+
private const val TAG = "AttentiveNetworking"
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Creates an OkHttpClient with logging interceptor for debugging network calls.
|
|
26
|
+
* This can be used to wrap network requests and log all traffic.
|
|
27
|
+
*
|
|
28
|
+
* @param enableLogging Whether to enable detailed HTTP logging
|
|
29
|
+
* @return Configured OkHttpClient instance
|
|
30
|
+
*/
|
|
31
|
+
fun createDebugClient(enableLogging: Boolean = true): OkHttpClient {
|
|
32
|
+
val builder = OkHttpClient.Builder()
|
|
33
|
+
.connectTimeout(30, TimeUnit.SECONDS)
|
|
34
|
+
.readTimeout(30, TimeUnit.SECONDS)
|
|
35
|
+
.writeTimeout(30, TimeUnit.SECONDS)
|
|
36
|
+
|
|
37
|
+
if (enableLogging) {
|
|
38
|
+
val loggingInterceptor = HttpLoggingInterceptor { message ->
|
|
39
|
+
Log.d(TAG, "🌐 [HTTP] $message")
|
|
40
|
+
}.apply {
|
|
41
|
+
level = HttpLoggingInterceptor.Level.BODY
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
builder.addInterceptor(loggingInterceptor)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return builder.build()
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Logs a network request for debugging purposes.
|
|
53
|
+
*
|
|
54
|
+
* @param url The request URL
|
|
55
|
+
* @param method The HTTP method (GET, POST, etc.)
|
|
56
|
+
* @param headers Request headers
|
|
57
|
+
* @param body Request body (if any)
|
|
58
|
+
*/
|
|
59
|
+
fun logRequest(
|
|
60
|
+
url: String,
|
|
61
|
+
method: String,
|
|
62
|
+
headers: Map<String, String>? = null,
|
|
63
|
+
body: String? = null
|
|
64
|
+
) {
|
|
65
|
+
Log.i(TAG, "📤 [Network Request]")
|
|
66
|
+
Log.i(TAG, " Method: $method")
|
|
67
|
+
Log.i(TAG, " URL: $url")
|
|
68
|
+
|
|
69
|
+
headers?.let {
|
|
70
|
+
Log.d(TAG, " Headers:")
|
|
71
|
+
it.forEach { (key, value) ->
|
|
72
|
+
Log.d(TAG, " $key: $value")
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
body?.let {
|
|
77
|
+
Log.d(TAG, " Body: $it")
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
81
|
+
val debugData = mutableMapOf<String, Any>()
|
|
82
|
+
debugData["request_method"] = method
|
|
83
|
+
debugData["request_url"] = url
|
|
84
|
+
headers?.let { debugData["headers_count"] = it.size.toString() }
|
|
85
|
+
body?.let { debugData["body_length"] = it.length.toString() }
|
|
86
|
+
|
|
87
|
+
debugHelper.showDebugInfo("Network Request", debugData)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Logs a network response for debugging purposes.
|
|
93
|
+
*
|
|
94
|
+
* @param url The request URL
|
|
95
|
+
* @param statusCode HTTP status code
|
|
96
|
+
* @param headers Response headers
|
|
97
|
+
* @param body Response body (if any)
|
|
98
|
+
* @param durationMs Request duration in milliseconds
|
|
99
|
+
*/
|
|
100
|
+
fun logResponse(
|
|
101
|
+
url: String,
|
|
102
|
+
statusCode: Int,
|
|
103
|
+
headers: Map<String, String>? = null,
|
|
104
|
+
body: String? = null,
|
|
105
|
+
durationMs: Long? = null
|
|
106
|
+
) {
|
|
107
|
+
val statusEmoji = when {
|
|
108
|
+
statusCode in 200..299 -> "✅"
|
|
109
|
+
statusCode in 300..399 -> "↪️"
|
|
110
|
+
statusCode in 400..499 -> "⚠️"
|
|
111
|
+
statusCode >= 500 -> "❌"
|
|
112
|
+
else -> "❓"
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
Log.i(TAG, "📥 [Network Response] $statusEmoji")
|
|
116
|
+
Log.i(TAG, " URL: $url")
|
|
117
|
+
Log.i(TAG, " Status: $statusCode")
|
|
118
|
+
durationMs?.let { Log.i(TAG, " Duration: ${it}ms") }
|
|
119
|
+
|
|
120
|
+
headers?.let {
|
|
121
|
+
Log.d(TAG, " Headers:")
|
|
122
|
+
it.forEach { (key, value) ->
|
|
123
|
+
Log.d(TAG, " $key: $value")
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
body?.let {
|
|
128
|
+
Log.d(TAG, " Body: ${it.take(500)}${if (it.length > 500) "..." else ""}")
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
132
|
+
val debugData = mutableMapOf<String, Any>()
|
|
133
|
+
debugData["response_status"] = statusCode.toString()
|
|
134
|
+
debugData["response_url"] = url
|
|
135
|
+
debugData["status_emoji"] = statusEmoji
|
|
136
|
+
headers?.let { debugData["headers_count"] = it.size.toString() }
|
|
137
|
+
body?.let { debugData["body_length"] = it.length.toString() }
|
|
138
|
+
durationMs?.let { debugData["duration_ms"] = it.toString() }
|
|
139
|
+
|
|
140
|
+
debugHelper.showDebugInfo("Network Response", debugData)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Logs a network error for debugging purposes.
|
|
146
|
+
*
|
|
147
|
+
* @param url The request URL
|
|
148
|
+
* @param error The error that occurred
|
|
149
|
+
* @param durationMs Request duration in milliseconds (if applicable)
|
|
150
|
+
*/
|
|
151
|
+
fun logError(
|
|
152
|
+
url: String,
|
|
153
|
+
error: Throwable,
|
|
154
|
+
durationMs: Long? = null
|
|
155
|
+
) {
|
|
156
|
+
Log.e(TAG, "❌ [Network Error]")
|
|
157
|
+
Log.e(TAG, " URL: $url")
|
|
158
|
+
Log.e(TAG, " Error: ${error.message}")
|
|
159
|
+
durationMs?.let { Log.e(TAG, " Duration: ${it}ms") }
|
|
160
|
+
Log.e(TAG, " Exception:", error)
|
|
161
|
+
|
|
162
|
+
if (debugHelper.isDebuggingEnabled()) {
|
|
163
|
+
val debugData = mutableMapOf<String, Any>()
|
|
164
|
+
debugData["error_url"] = url
|
|
165
|
+
debugData["error_message"] = error.message ?: "Unknown error"
|
|
166
|
+
debugData["error_type"] = error.javaClass.simpleName
|
|
167
|
+
durationMs?.let { debugData["duration_ms"] = it.toString() }
|
|
168
|
+
|
|
169
|
+
debugHelper.showDebugInfo("Network Error", debugData)
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Creates an interceptor that can be added to OkHttpClient for automatic logging.
|
|
175
|
+
* This is useful for transparently logging all SDK network calls.
|
|
176
|
+
*
|
|
177
|
+
* @return An OkHttp Interceptor for network logging
|
|
178
|
+
*/
|
|
179
|
+
fun createLoggingInterceptor(): Interceptor {
|
|
180
|
+
return Interceptor { chain ->
|
|
181
|
+
val request = chain.request()
|
|
182
|
+
val startTime = System.currentTimeMillis()
|
|
183
|
+
|
|
184
|
+
// Log request
|
|
185
|
+
logRequest(
|
|
186
|
+
url = request.url.toString(),
|
|
187
|
+
method = request.method,
|
|
188
|
+
headers = request.headers.toMultimap().mapValues { it.value.firstOrNull() ?: "" },
|
|
189
|
+
body = request.body?.toString()
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
try {
|
|
193
|
+
val response = chain.proceed(request)
|
|
194
|
+
val duration = System.currentTimeMillis() - startTime
|
|
195
|
+
|
|
196
|
+
// Log response
|
|
197
|
+
logResponse(
|
|
198
|
+
url = request.url.toString(),
|
|
199
|
+
statusCode = response.code,
|
|
200
|
+
headers = response.headers.toMultimap().mapValues { it.value.firstOrNull() ?: "" },
|
|
201
|
+
body = response.peekBody(1024).string(),
|
|
202
|
+
durationMs = duration
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
response
|
|
206
|
+
} catch (e: IOException) {
|
|
207
|
+
val duration = System.currentTimeMillis() - startTime
|
|
208
|
+
|
|
209
|
+
// Log error
|
|
210
|
+
logError(
|
|
211
|
+
url = request.url.toString(),
|
|
212
|
+
error = e,
|
|
213
|
+
durationMs = duration
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
throw e
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SchemeUserState</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>AttentiveReactNativeSdk.xcscheme_^#shared#^_</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>orderHint</key>
|
|
10
|
+
<integer>0</integer>
|
|
11
|
+
</dict>
|
|
12
|
+
</dict>
|
|
13
|
+
</dict>
|
|
14
|
+
</plist>
|
|
@@ -124,9 +124,20 @@ struct DebugEvent {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/// Called from the native bridge when destroyCreative is invoked; shows debug overlay when debug mode is on.
|
|
128
|
+
@objc
|
|
129
|
+
public func notifyCreativeDestroyed() {
|
|
130
|
+
if debuggingEnabled {
|
|
131
|
+
showDebugInfo(event: "Creative Destroyed", data: ["action": "destroyCreative"])
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
127
135
|
@objc(updateDomain:)
|
|
128
136
|
public func updateDomain(domain: String) {
|
|
129
137
|
sdk.update(domain:domain)
|
|
138
|
+
if debuggingEnabled {
|
|
139
|
+
showDebugInfo(event: "Domain Updated", data: ["domain": domain])
|
|
140
|
+
}
|
|
130
141
|
}
|
|
131
142
|
|
|
132
143
|
@objc(identify:)
|
|
@@ -136,6 +147,10 @@ struct DebugEvent {
|
|
|
136
147
|
|
|
137
148
|
sdk.identify(identifiers)
|
|
138
149
|
|
|
150
|
+
if debuggingEnabled {
|
|
151
|
+
showDebugInfo(event: "User Identified", data: ["identifiers": identifiers])
|
|
152
|
+
}
|
|
153
|
+
|
|
139
154
|
print("✅ [AttentiveSDK] identify completed")
|
|
140
155
|
print(" User is now identified with the SDK")
|
|
141
156
|
print(" SDK can now make network calls")
|
|
@@ -144,6 +159,9 @@ struct DebugEvent {
|
|
|
144
159
|
@objc
|
|
145
160
|
public func clearUser() {
|
|
146
161
|
sdk.clearUser()
|
|
162
|
+
if debuggingEnabled {
|
|
163
|
+
showDebugInfo(event: "User Cleared", data: ["action": "clearUser"])
|
|
164
|
+
}
|
|
147
165
|
}
|
|
148
166
|
|
|
149
167
|
// MARK: - Push Notification Methods
|
|
@@ -628,13 +646,19 @@ public extension ATTNNativeSDK {
|
|
|
628
646
|
|
|
629
647
|
@objc
|
|
630
648
|
func recordPurchaseEvent(_ attributes: [String: Any]) {
|
|
631
|
-
|
|
632
|
-
|
|
649
|
+
// React Native bridge sends top-level "orderId"; legacy format used "order"["id"]
|
|
650
|
+
let orderId = (attributes["orderId"] as? String)
|
|
651
|
+
?? (attributes["order"] as? [String: String])?["id"]
|
|
652
|
+
guard let orderId = orderId else { return }
|
|
633
653
|
let order = ATTNOrder(orderId: orderId)
|
|
634
654
|
let items = parseItems(attributes["items"] as? [[String : Any]] ?? [])
|
|
635
655
|
let event = ATTNPurchaseEvent(items: items, order: order)
|
|
656
|
+
|
|
657
|
+
#if DEBUG
|
|
658
|
+
print("[Attentive]", event.debugDescription)
|
|
659
|
+
#endif
|
|
636
660
|
ATTNEventTracker.sharedInstance()?.record(event: event)
|
|
637
|
-
|
|
661
|
+
|
|
638
662
|
if debuggingEnabled {
|
|
639
663
|
// Enhanced debug data to show parsed item details
|
|
640
664
|
var debugData: [String: Any] = [
|
|
@@ -727,18 +751,35 @@ private extension ATTNNativeSDK {
|
|
|
727
751
|
debugHistory.append(debugEvent)
|
|
728
752
|
|
|
729
753
|
DispatchQueue.main.async {
|
|
730
|
-
// Create debug overlay with history
|
|
731
754
|
guard let keyWindow = UIApplication.shared.connectedScenes
|
|
732
755
|
.compactMap({ $0 as? UIWindowScene })
|
|
733
756
|
.first?.windows
|
|
734
|
-
.first(where: { $0.isKeyWindow })
|
|
757
|
+
.first(where: { $0.isKeyWindow }),
|
|
758
|
+
let rootVC = keyWindow.rootViewController else { return }
|
|
759
|
+
|
|
760
|
+
// Present from the topmost view controller so the debug window always appears on top
|
|
761
|
+
let topmost = self.topmostViewController(from: rootVC)
|
|
735
762
|
|
|
736
763
|
let debugVC = DebugOverlayViewController(currentEvent: event, currentData: data, history: self.debugHistory)
|
|
737
764
|
debugVC.modalPresentationStyle = .overFullScreen
|
|
738
765
|
debugVC.modalTransitionStyle = .crossDissolve
|
|
739
766
|
|
|
740
|
-
|
|
767
|
+
topmost.present(debugVC, animated: true)
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
/// Returns the topmost view controller so the debug overlay is presented on top of any existing modals.
|
|
772
|
+
func topmostViewController(from base: UIViewController) -> UIViewController {
|
|
773
|
+
if let presented = base.presentedViewController {
|
|
774
|
+
return topmostViewController(from: presented)
|
|
775
|
+
}
|
|
776
|
+
if let nav = base as? UINavigationController, let visible = nav.visibleViewController {
|
|
777
|
+
return topmostViewController(from: visible)
|
|
778
|
+
}
|
|
779
|
+
if let tab = base as? UITabBarController, let selected = tab.selectedViewController {
|
|
780
|
+
return topmostViewController(from: selected)
|
|
741
781
|
}
|
|
782
|
+
return base
|
|
742
783
|
}
|
|
743
784
|
}
|
|
744
785
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","TurboModuleRegistry","get","NativeModules","AttentiveReactNativeSdk","_default","exports","default"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AA8IA;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAM,CAASC,kBAAkB,IAAI,IAAI;AAEvE,MAAMC,6BAA6B,GAAGH,oBAAoB,GACtDI,gCAAmB,CAACC,GAAG,CAAO,yBAAyB,CAAC,GACxDC,0BAAa,CAACC,uBAAuB;AAAC,IAAAC,QAAA,GAE3BL,6BAA6B;AAAAM,OAAA,CAAAC,OAAA,GAAAF,QAAA"
|
|
1
|
+
{"version":3,"names":["_reactNative","require","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","TurboModuleRegistry","get","NativeModules","AttentiveReactNativeSdk","_default","exports","default"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AA8IA;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAM,CAASC,kBAAkB,IAAI,IAAI;AAEvE,MAAMC,6BAA6B,GAAGH,oBAAoB,GACtDI,gCAAmB,CAACC,GAAG,CAAO,yBAAyB,CAAC,GACxDC,0BAAa,CAACC,uBAAuB;AAAC,IAAAC,QAAA,GAE3BL,6BAA6B;AAAAM,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":""
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_NativeAttentiveReactNativeSdk","_interopRequireDefault","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","AttentiveReactNativeSdk","NativeAttentiveReactNativeSdkModule","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAcA,IAAAC,8BAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEwC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,MAAMG,aAAa,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeAttentiveReactNativeSdk","_interopRequireDefault","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","AttentiveReactNativeSdk","NativeAttentiveReactNativeSdkModule","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAcA,IAAAC,8BAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEwC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,MAAMG,aAAa,GAChB,qFAAoF,GACrFC,qBAAQ,CAACC,MAAM,CAAC;EACdC,GAAG,EAAE,gCAAgC;EACrCJ,OAAO,EAAE;AACX,CAAC,CAAC,GACF,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMK,uBAAuB,GAC3BC,sCAAmC,GAC/BA,sCAAmC,GACnC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CAAC,CAEA;;AAET;AACA;AACA;AACA;AACA,SAASS,UAAUA,CAACC,aAAwC,EAAE;EAC5DN,uBAAuB,CAACK,UAAU,CAChCC,aAAa,CAACC,eAAe,EAC7BD,aAAa,CAACE,IAAI,EAClBF,aAAa,CAACG,sBAAsB,IAAI,KAAK,EAC7CH,aAAa,CAACI,cAAc,IAAI,KAAK,CACtC;AACH;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACC,UAAmB,EAAE;EAC5CZ,uBAAuB,CAACW,eAAe,CAACC,UAAU,CAAC;AACrD;;AAEA;AACA;AACA;AACA,SAASC,eAAeA,CAAA,EAAG;EACzBb,uBAAuB,CAACa,eAAe,EAAE;AAC3C;;AAEA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACC,MAAc,EAAE;EACpCf,uBAAuB,CAACc,YAAY,CAACC,MAAM,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACC,WAA4B,EAAE;EAC9CjB,uBAAuB,CAACgB,QAAQ,CAC9BC,WAAW,CAACC,KAAK,EACjBD,WAAW,CAACE,KAAK,EACjBF,WAAW,CAACG,SAAS,EACrBH,WAAW,CAACI,SAAS,EACrBJ,WAAW,CAACK,YAAY,EACxBL,WAAW,CAACM,iBAAiB,CAC9B;AACH;;AAEA;AACA;AACA;AACA,SAASC,SAASA,CAAA,EAAG;EACnBxB,uBAAuB,CAACwB,SAAS,EAAE;AACrC;;AAEA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAACC,KAAgB,EAAE;EAC9C1B,uBAAuB,CAACyB,oBAAoB,CAACC,KAAK,CAACC,KAAK,EAAED,KAAK,CAACE,QAAQ,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAACH,KAAkB,EAAE;EAClD1B,uBAAuB,CAAC6B,sBAAsB,CAACH,KAAK,CAACC,KAAK,EAAED,KAAK,CAACE,QAAQ,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAACJ,KAAe,EAAE;EAC5C1B,uBAAuB,CAAC8B,mBAAmB,CACzCJ,KAAK,CAACC,KAAK,EACXD,KAAK,CAACK,OAAO,EACbL,KAAK,CAACM,MAAM,EACZN,KAAK,CAACO,UAAU,CACjB;AACH;;AAEA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACR,KAAkB,EAAE;EAC7C1B,uBAAuB,CAACkC,iBAAiB,CAACR,KAAK,CAACS,IAAI,EAAET,KAAK,CAACU,UAAU,CAAC;AACzE;;AAEA;AACA;AACA;AACA,SAASC,0BAA0BA,CAAA,EAAG;EACpCrC,uBAAuB,CAACqC,0BAA0B,EAAE;AACtD;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAAA,EAAoB;EAC1C,OAAOtC,uBAAuB,CAACsC,eAAe,EAAE;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,4BAA4BA,CAAA,EAAS;EAC5CvC,uBAAuB,CAACuC,4BAA4B,EAAE;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAC1BC,KAAa,EACbC,mBAA4C,EACtC;EACN1C,uBAAuB,CAACwC,mBAAmB,CAACC,KAAK,EAAEC,mBAAmB,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,+BAA+BA,CACtCF,KAAa,EACbC,mBAA4C,EAC5CE,QAKS,EACH;EACN5C,uBAAuB,CAAC2C,+BAA+B,CACrDF,KAAK,EACLC,mBAAmB,EACnBE,QAAQ,CACT;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACH,mBAA4C,EAAQ;EAC7EI,OAAO,CAACC,GAAG,CAAC,6DAA6D,CAAC;EAC1ED,OAAO,CAACC,GAAG,CAAE,4BAA2BL,mBAAoB,EAAC,CAAC;EAC9DI,OAAO,CAACC,GAAG,CACT,mEAAmE,CACpE;EAED/C,uBAAuB,CAAC6C,iBAAiB,CAACH,mBAAmB,CAAC;EAE9DI,OAAO,CAACC,GAAG,CAAC,mDAAmD,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CACvBC,QAAkC,EAClCC,gBAAkC,EAClCR,mBAA4C,EACtC;EACN1C,uBAAuB,CAACgD,gBAAgB,CACtCC,QAAQ,EACRC,gBAAgB,EAChBR,mBAAmB,CACpB;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,4BAA4BA,CACnCF,QAAkC,EAC5B;EACNjD,uBAAuB,CAACmD,4BAA4B,CAACF,QAAQ,CAAW;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,oBAAoBA,CAC3BH,QAAkC,EAClCP,mBAA4C,EACtC;EACN1C,uBAAuB,CAACoD,oBAAoB,CAC1CH,QAAQ,EACRP,mBAAmB,CACpB;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,cAAcA,CACrBJ,QAAkC,EAClCP,mBAA4C,EACtC;EACN1C,uBAAuB,CAACqD,cAAc,CACpCJ,QAAQ,EACRP,mBAAmB,CACpB;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","NativeModules","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","get","AttentiveReactNativeSdk"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":"AACA,SAASA,mBAAmB,EAAEC,aAAa,QAAQ,cAAc;AA8IjE;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAM,CAASC,kBAAkB,IAAI,IAAI;AAEvE,MAAMC,6BAA6B,GAAGH,oBAAoB,GACtDF,mBAAmB,CAACM,GAAG,CAAO,yBAAyB,CAAC,GACxDL,aAAa,CAACM,uBAAuB;AAEzC,eAAeF,6BAA6B"
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","NativeModules","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","get","AttentiveReactNativeSdk"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":"AACA,SAASA,mBAAmB,EAAEC,aAAa,QAAQ,cAAc;AA8IjE;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAM,CAASC,kBAAkB,IAAI,IAAI;AAEvE,MAAMC,6BAA6B,GAAGH,oBAAoB,GACtDF,mBAAmB,CAACM,GAAG,CAAO,yBAAyB,CAAC,GACxDL,aAAa,CAACM,uBAAuB;AAEzC,eAAeF,6BAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":""
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":""}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","NativeAttentiveReactNativeSdkModule","LINKING_ERROR","select","ios","default","AttentiveReactNativeSdk","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAcvC,OAAOC,mCAAmC,MAEnC,iCAAiC;AAExC,MAAMC,aAAa,
|
|
1
|
+
{"version":3,"names":["Platform","NativeAttentiveReactNativeSdkModule","LINKING_ERROR","select","ios","default","AttentiveReactNativeSdk","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAcvC,OAAOC,mCAAmC,MAEnC,iCAAiC;AAExC,MAAMC,aAAa,GAChB,qFAAoF,GACrFF,QAAQ,CAACG,MAAM,CAAC;EACdC,GAAG,EAAE,gCAAgC;EACrCC,OAAO,EAAE;AACX,CAAC,CAAC,GACF,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,uBAAuB,GAC3BL,mCAAmC,GAC/BA,mCAAmC,GACnC,IAAIM,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CAAC,CAEA;;AAET;AACA;AACA;AACA;AACA,SAASQ,UAAUA,CAACC,aAAwC,EAAE;EAC5DL,uBAAuB,CAACI,UAAU,CAChCC,aAAa,CAACC,eAAe,EAC7BD,aAAa,CAACE,IAAI,EAClBF,aAAa,CAACG,sBAAsB,IAAI,KAAK,EAC7CH,aAAa,CAACI,cAAc,IAAI,KAAK,CACtC;AACH;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACC,UAAmB,EAAE;EAC5CX,uBAAuB,CAACU,eAAe,CAACC,UAAU,CAAC;AACrD;;AAEA;AACA;AACA;AACA,SAASC,eAAeA,CAAA,EAAG;EACzBZ,uBAAuB,CAACY,eAAe,EAAE;AAC3C;;AAEA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACC,MAAc,EAAE;EACpCd,uBAAuB,CAACa,YAAY,CAACC,MAAM,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACC,WAA4B,EAAE;EAC9ChB,uBAAuB,CAACe,QAAQ,CAC9BC,WAAW,CAACC,KAAK,EACjBD,WAAW,CAACE,KAAK,EACjBF,WAAW,CAACG,SAAS,EACrBH,WAAW,CAACI,SAAS,EACrBJ,WAAW,CAACK,YAAY,EACxBL,WAAW,CAACM,iBAAiB,CAC9B;AACH;;AAEA;AACA;AACA;AACA,SAASC,SAASA,CAAA,EAAG;EACnBvB,uBAAuB,CAACuB,SAAS,EAAE;AACrC;;AAEA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAACC,KAAgB,EAAE;EAC9CzB,uBAAuB,CAACwB,oBAAoB,CAACC,KAAK,CAACC,KAAK,EAAED,KAAK,CAACE,QAAQ,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAACH,KAAkB,EAAE;EAClDzB,uBAAuB,CAAC4B,sBAAsB,CAACH,KAAK,CAACC,KAAK,EAAED,KAAK,CAACE,QAAQ,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAACJ,KAAe,EAAE;EAC5CzB,uBAAuB,CAAC6B,mBAAmB,CACzCJ,KAAK,CAACC,KAAK,EACXD,KAAK,CAACK,OAAO,EACbL,KAAK,CAACM,MAAM,EACZN,KAAK,CAACO,UAAU,CACjB;AACH;;AAEA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACR,KAAkB,EAAE;EAC7CzB,uBAAuB,CAACiC,iBAAiB,CAACR,KAAK,CAACS,IAAI,EAAET,KAAK,CAACU,UAAU,CAAC;AACzE;;AAEA;AACA;AACA;AACA,SAASC,0BAA0BA,CAAA,EAAG;EACpCpC,uBAAuB,CAACoC,0BAA0B,EAAE;AACtD;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAAA,EAAoB;EAC1C,OAAOrC,uBAAuB,CAACqC,eAAe,EAAE;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,4BAA4BA,CAAA,EAAS;EAC5CtC,uBAAuB,CAACsC,4BAA4B,EAAE;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAC1BC,KAAa,EACbC,mBAA4C,EACtC;EACNzC,uBAAuB,CAACuC,mBAAmB,CAACC,KAAK,EAAEC,mBAAmB,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,+BAA+BA,CACtCF,KAAa,EACbC,mBAA4C,EAC5CE,QAKS,EACH;EACN3C,uBAAuB,CAAC0C,+BAA+B,CACrDF,KAAK,EACLC,mBAAmB,EACnBE,QAAQ,CACT;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACH,mBAA4C,EAAQ;EAC7EI,OAAO,CAACC,GAAG,CAAC,6DAA6D,CAAC;EAC1ED,OAAO,CAACC,GAAG,CAAE,4BAA2BL,mBAAoB,EAAC,CAAC;EAC9DI,OAAO,CAACC,GAAG,CACT,mEAAmE,CACpE;EAED9C,uBAAuB,CAAC4C,iBAAiB,CAACH,mBAAmB,CAAC;EAE9DI,OAAO,CAACC,GAAG,CAAC,mDAAmD,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CACvBC,QAAkC,EAClCC,gBAAkC,EAClCR,mBAA4C,EACtC;EACNzC,uBAAuB,CAAC+C,gBAAgB,CACtCC,QAAQ,EACRC,gBAAgB,EAChBR,mBAAmB,CACpB;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,4BAA4BA,CACnCF,QAAkC,EAC5B;EACNhD,uBAAuB,CAACkD,4BAA4B,CAACF,QAAQ,CAAW;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,oBAAoBA,CAC3BH,QAAkC,EAClCP,mBAA4C,EACtC;EACNzC,uBAAuB,CAACmD,oBAAoB,CAC1CH,QAAQ,EACRP,mBAAmB,CACpB;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,cAAcA,CACrBJ,QAAkC,EAClCP,mBAA4C,EACtC;EACNzC,uBAAuB,CAACoD,cAAc,CACpCJ,QAAQ,EACRP,mBAAmB,CACpB;AACH;AAEA,SACErC,UAAU,EACVM,eAAe,EACfE,eAAe,EACfC,YAAY,EACZE,QAAQ,EACRQ,SAAS,EACTC,oBAAoB,EACpBI,sBAAsB,EACtBC,mBAAmB,EACnBI,iBAAiB,EACjBG,0BAA0B,EAC1BC,eAAe;AACf;AACAC,4BAA4B,EAC5BC,mBAAmB,EACnBG,+BAA+B,EAC/BE,iBAAiB,EACjBG,gBAAgB,EAChBG,4BAA4B,EAC5BC,oBAAoB,EACpBC,cAAc"}
|
package/package.json
CHANGED