react-native-mparticle 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +252 -94
  2. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  3. package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  4. package/android/gradle.properties +26 -0
  5. package/android/gradlew +160 -0
  6. package/android/gradlew.bat +90 -0
  7. package/android/libs/java-json.jar +0 -0
  8. package/android/src/main/java/com/mparticle/react/MParticleModule.kt +2 -2
  9. package/android/src/test/java/com/mparticle/react/IdentityApiTest.java +230 -0
  10. package/android/src/test/java/com/mparticle/react/MParticleUserTest.java +173 -0
  11. package/android/src/test/java/com/mparticle/react/testutils/MockMParticleUser.java +109 -0
  12. package/android/src/test/java/com/mparticle/react/testutils/MockMap.java +203 -0
  13. package/android/src/test/java/com/mparticle/react/testutils/MockReadableArray.java +68 -0
  14. package/android/src/test/java/com/mparticle/react/testutils/MockWritableMap.java +4 -0
  15. package/android/src/test/java/com/mparticle/react/testutils/Mutable.java +13 -0
  16. package/app.plugin.js +1 -0
  17. package/ios/RNMParticle/RNMPRokt.mm +25 -11
  18. package/ios/RNMParticle/RNMParticle.mm +38 -28
  19. package/js/codegenSpecs/NativeMParticle.ts +3 -4
  20. package/js/rokt/rokt-layout-view.android.tsx +2 -1
  21. package/lib/codegenSpecs/NativeMParticle.d.ts +3 -4
  22. package/lib/codegenSpecs/NativeMParticle.js.map +1 -1
  23. package/lib/rokt/rokt-layout-view.android.js +1 -0
  24. package/lib/rokt/rokt-layout-view.android.js.map +1 -1
  25. package/package.json +28 -4
  26. package/plugin/build/withMParticle.d.ts +60 -0
  27. package/plugin/build/withMParticle.js +30 -0
  28. package/plugin/build/withMParticleAndroid.d.ts +6 -0
  29. package/plugin/build/withMParticleAndroid.js +266 -0
  30. package/plugin/build/withMParticleIOS.d.ts +6 -0
  31. package/plugin/build/withMParticleIOS.js +362 -0
  32. package/plugin/src/withMParticle.ts +106 -0
  33. package/plugin/src/withMParticleAndroid.ts +359 -0
  34. package/plugin/src/withMParticleIOS.ts +459 -0
  35. package/plugin/tsconfig.json +8 -0
  36. package/react-native-mparticle.podspec +11 -0
  37. package/SECURITY.md +0 -9
@@ -0,0 +1,109 @@
1
+ package com.mparticle.react.testutils;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
5
+
6
+ import com.mparticle.MParticle;
7
+ import com.mparticle.UserAttributeListenerType;
8
+ import com.mparticle.consent.ConsentState;
9
+ import com.mparticle.identity.MParticleUser;
10
+ import com.mparticle.audience.AudienceTask;
11
+ import com.mparticle.audience.AudienceResponse;
12
+
13
+ import java.util.Map;
14
+
15
+ public class MockMParticleUser implements MParticleUser {
16
+ Long mpid = 0L;
17
+
18
+ public MockMParticleUser() {}
19
+
20
+ public MockMParticleUser(Long mpid) {
21
+ this.mpid = mpid;
22
+ }
23
+
24
+ @NonNull
25
+ @Override
26
+ public long getId() {
27
+ return mpid;
28
+ }
29
+
30
+ @NonNull
31
+ @Override
32
+ public Map<String, Object> getUserAttributes() {
33
+ return null;
34
+ }
35
+
36
+ @Nullable
37
+ @Override
38
+ public Map<String, Object> getUserAttributes(@Nullable UserAttributeListenerType userAttributeListener) {
39
+ return null;
40
+ }
41
+
42
+ @Override
43
+ public boolean setUserAttributes(@NonNull Map<String, Object> map) {
44
+ return false;
45
+ }
46
+
47
+ @NonNull
48
+ @Override
49
+ public Map<MParticle.IdentityType, String> getUserIdentities() {
50
+ return null;
51
+ }
52
+
53
+ @Override
54
+ public boolean setUserAttribute(@NonNull String s, @NonNull Object o) {
55
+ return false;
56
+ }
57
+
58
+ @Override
59
+ public boolean setUserAttributeList(@NonNull String s, @NonNull Object o) {
60
+ return false;
61
+ }
62
+
63
+ @Override
64
+ public boolean incrementUserAttribute(@NonNull String s, Number i) {
65
+ return false;
66
+ }
67
+
68
+ @Override
69
+ public boolean removeUserAttribute(@NonNull String s) {
70
+ return false;
71
+ }
72
+
73
+ @Override
74
+ public boolean setUserTag(@NonNull String s) {
75
+ return false;
76
+ }
77
+
78
+ @NonNull
79
+ @Override
80
+ public ConsentState getConsentState() {
81
+ return null;
82
+ }
83
+
84
+ @Override
85
+ public void setConsentState(@Nullable ConsentState consentState) {
86
+
87
+ }
88
+
89
+ @Override
90
+ public boolean isLoggedIn() {
91
+ return false;
92
+ }
93
+
94
+ @Override
95
+ public long getFirstSeenTime() {
96
+ return 0;
97
+ }
98
+
99
+ @Override
100
+ public long getLastSeenTime() {
101
+ return 0;
102
+ }
103
+
104
+ @Override
105
+ public AudienceTask<AudienceResponse> getUserAudiences() {
106
+ return null;
107
+ }
108
+ }
109
+
@@ -0,0 +1,203 @@
1
+ package com.mparticle.react.testutils;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.facebook.react.bridge.Dynamic;
6
+ import com.facebook.react.bridge.DynamicFromObject;
7
+ import com.facebook.react.bridge.ReadableArray;
8
+ import com.facebook.react.bridge.ReadableMap;
9
+ import com.facebook.react.bridge.ReadableMapKeySetIterator;
10
+ import com.facebook.react.bridge.ReadableType;
11
+ import com.facebook.react.bridge.WritableMap;
12
+
13
+ import org.json.JSONException;
14
+ import org.json.JSONObject;
15
+
16
+ import java.util.ArrayList;
17
+ import java.util.Collection;
18
+ import java.util.HashMap;
19
+ import java.util.Iterator;
20
+ import java.util.List;
21
+ import java.util.Map;
22
+
23
+ public class MockMap implements WritableMap {
24
+ private Map map = new HashMap();
25
+
26
+ public MockMap() {}
27
+
28
+ public MockMap(JSONObject jsonObject) throws JSONException {
29
+ Map map = new HashMap();
30
+ Iterator<String> keys = jsonObject.keys();
31
+ while(keys.hasNext()) {
32
+ String key = keys.next();
33
+ map.put(key, jsonObject.get(key));
34
+ }
35
+ this.map = map;
36
+ }
37
+
38
+ public MockMap(Map map) {
39
+ this.map = map;
40
+ }
41
+
42
+ @Override
43
+ public boolean hasKey(String name) {
44
+ return map.containsKey(name);
45
+ }
46
+
47
+ @Override
48
+ public boolean isNull(String name) {
49
+ return map.get(name) == null;
50
+ }
51
+
52
+ @Override
53
+ public boolean getBoolean(String name) {
54
+ return (boolean) map.get(name);
55
+ }
56
+
57
+ @Override
58
+ public double getDouble(String name) {
59
+ return (double) map.get(name);
60
+ }
61
+
62
+ @Override
63
+ public int getInt(String name) {
64
+ return (int) map.get(name);
65
+ }
66
+
67
+ @Override
68
+ public long getLong(String name) {
69
+ return (long) map.get(name);
70
+ }
71
+
72
+ @Override
73
+ public String getString(String name) {
74
+ return (String) map.get(name);
75
+ }
76
+
77
+ @Override
78
+ public ReadableArray getArray(String name) {
79
+ return null;
80
+ }
81
+
82
+ @Override
83
+ public ReadableMap getMap(String name) {
84
+ return new MockMap((Map) map.get(name));
85
+ }
86
+
87
+ @Override
88
+ public ReadableType getType(String name) {
89
+ Object obj = map.get(name);
90
+ if (obj instanceof String) {
91
+ return ReadableType.String;
92
+ }
93
+ if (obj instanceof Number) {
94
+ return ReadableType.Number;
95
+ }
96
+ if (obj instanceof Collection) {
97
+ return ReadableType.Array;
98
+ }
99
+ if (obj instanceof Map) {
100
+ return ReadableType.Map;
101
+ }
102
+ if (obj instanceof Boolean) {
103
+ return ReadableType.Boolean;
104
+ }
105
+ if (obj == null) {
106
+ return ReadableType.Null;
107
+ }
108
+ return null;
109
+ }
110
+
111
+ @Override
112
+ public ReadableMapKeySetIterator keySetIterator() {
113
+ return new MockReadableMapKeySetIterator(map.keySet());
114
+ }
115
+
116
+ @Override
117
+ public java.util.HashMap<String, Object> toHashMap() {
118
+ return new java.util.HashMap<>(map);
119
+ }
120
+
121
+ @Override
122
+ public void putNull(String key) {
123
+ map.put(key, null);
124
+ }
125
+
126
+ @Override
127
+ public void putBoolean(String key, boolean value) {
128
+ map.put(key, value);
129
+ }
130
+
131
+ @Override
132
+ public void putDouble(String key, double value) {
133
+ map.put(key, value);
134
+ }
135
+
136
+ @Override
137
+ public void putInt(String key, int value) {
138
+ map.put(key, value);
139
+ }
140
+
141
+ @Override
142
+ public void putLong(String key, long value) {
143
+ map.put(key, value);
144
+ }
145
+
146
+ @Override
147
+ public void putString(String key, String value) {
148
+ map.put(key, value);
149
+ }
150
+
151
+ @Override
152
+ public void putArray(String key, ReadableArray value) {
153
+ map.put(key, value);
154
+ }
155
+
156
+ @Override
157
+ public void putMap(String key, ReadableMap value) {
158
+ map.put(key, value);
159
+ }
160
+
161
+ @Override
162
+ public void merge(ReadableMap source) {
163
+ throw new RuntimeException("Not Implemented");
164
+ }
165
+
166
+ @Override
167
+ public WritableMap copy() {
168
+ return new MockMap(new java.util.HashMap<>(map));
169
+ }
170
+
171
+ @NonNull
172
+ @Override
173
+ public Iterator<Map.Entry<String, Object>> getEntryIterator() {
174
+ return map.entrySet().iterator();
175
+ }
176
+
177
+ @NonNull
178
+ @Override
179
+ public Dynamic getDynamic(@NonNull String s) {
180
+ return new DynamicFromObject(map.get(s));
181
+ }
182
+
183
+ class MockReadableMapKeySetIterator implements ReadableMapKeySetIterator {
184
+ List<String> keys;
185
+ int index = 0;
186
+
187
+ MockReadableMapKeySetIterator(Collection<String> keys) {
188
+ this.keys = new ArrayList(keys);
189
+ }
190
+
191
+ @Override
192
+ public boolean hasNextKey() {
193
+ return index < keys.size();
194
+ }
195
+
196
+ @Override
197
+ public String nextKey() {
198
+ String val = keys.get(index);
199
+ index++;
200
+ return val;
201
+ }
202
+ }
203
+ }
@@ -0,0 +1,68 @@
1
+ package com.mparticle.react.testutils;
2
+
3
+ import com.facebook.react.bridge.ReadableArray;
4
+ import com.facebook.react.bridge.ReadableMap;
5
+ import com.facebook.react.bridge.ReadableType;
6
+
7
+ public class MockReadableArray implements ReadableArray {
8
+
9
+ @Override
10
+ public int size() {
11
+ return 0;
12
+ }
13
+
14
+ @Override
15
+ public boolean isNull(int index) {
16
+ return false;
17
+ }
18
+
19
+ @Override
20
+ public boolean getBoolean(int index) {
21
+ return false;
22
+ }
23
+
24
+ @Override
25
+ public double getDouble(int index) {
26
+ return 0;
27
+ }
28
+
29
+ @Override
30
+ public int getInt(int index) {
31
+ return 0;
32
+ }
33
+
34
+ @Override
35
+ public long getLong(int index) {
36
+ return 0;
37
+ }
38
+
39
+ @Override
40
+ public String getString(int index) {
41
+ return null;
42
+ }
43
+
44
+ @Override
45
+ public ReadableArray getArray(int index) {
46
+ return null;
47
+ }
48
+
49
+ @Override
50
+ public ReadableMap getMap(int index) {
51
+ return null;
52
+ }
53
+
54
+ @Override
55
+ public ReadableType getType(int index) {
56
+ return null;
57
+ }
58
+
59
+ @Override
60
+ public com.facebook.react.bridge.Dynamic getDynamic(int index) {
61
+ return null;
62
+ }
63
+
64
+ @Override
65
+ public java.util.ArrayList<Object> toArrayList() {
66
+ return new java.util.ArrayList<>();
67
+ }
68
+ }
@@ -0,0 +1,4 @@
1
+ package com.mparticle.react.testutils;
2
+
3
+ public class MockWritableMap {
4
+ }
@@ -0,0 +1,13 @@
1
+ package com.mparticle.react.testutils;
2
+
3
+ public class Mutable<T> {
4
+ public T value;
5
+
6
+ public Mutable() {
7
+ value = null;
8
+ }
9
+
10
+ public Mutable(T t) {
11
+ this.value = t;
12
+ }
13
+ }
package/app.plugin.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./plugin/build/withMParticle');
@@ -58,18 +58,17 @@ RCT_EXTERN void RCTRegisterModule(Class);
58
58
  }
59
59
 
60
60
  #ifdef RCT_NEW_ARCH_ENABLED
61
- // New Architecture Implementation
62
- - (void)selectPlacements:(NSString *)identifer
63
- attributes:(NSDictionary *)attributes
64
- placeholders:(NSDictionary *)placeholders
65
- roktConfig:(JS::NativeMPRokt::RoktConfigType &)roktConfig
66
- fontFilesMap:(NSDictionary *)fontFilesMap
67
- {
68
- NSMutableDictionary *finalAttributes = [self convertToMutableDictionaryOfStrings:attributes];
69
-
70
- // Convert JS struct to NSDictionary for internal use
61
+ // Extracts roktConfig fields into an NSDictionary, returning nil when the
62
+ // TurboModule bridge passes a null C++ reference for an omitted optional param.
63
+ // __attribute__((optnone)) is required: &ref != nullptr is UB in C++ and the
64
+ // compiler removes the check at -O2, causing a SIGSEGV in Release builds.
65
+ static NSDictionary * __attribute__((optnone)) safeExtractRoktConfigDict(
66
+ JS::NativeMPRokt::RoktConfigType &roktConfig) {
67
+ if (&roktConfig == nullptr) {
68
+ return nil;
69
+ }
71
70
  NSMutableDictionary *roktConfigDict = [[NSMutableDictionary alloc] init];
72
- if (&roktConfig != nullptr && roktConfig.cacheConfig().has_value()) {
71
+ if (roktConfig.cacheConfig().has_value()) {
73
72
  NSMutableDictionary *cacheConfigDict = [[NSMutableDictionary alloc] init];
74
73
  auto cacheConfig = roktConfig.cacheConfig().value();
75
74
  if (cacheConfig.cacheDurationInSeconds().has_value()) {
@@ -80,7 +79,19 @@ RCT_EXTERN void RCTRegisterModule(Class);
80
79
  }
81
80
  roktConfigDict[@"cacheConfig"] = cacheConfigDict;
82
81
  }
82
+ return roktConfigDict;
83
+ }
83
84
 
85
+ // New Architecture Implementation
86
+ - (void)selectPlacements:(NSString *)identifer
87
+ attributes:(NSDictionary *)attributes
88
+ placeholders:(NSDictionary *)placeholders
89
+ roktConfig:(JS::NativeMPRokt::RoktConfigType &)roktConfig
90
+ fontFilesMap:(NSDictionary *)fontFilesMap
91
+ {
92
+ NSMutableDictionary *finalAttributes = [self convertToMutableDictionaryOfStrings:attributes];
93
+
94
+ NSDictionary *roktConfigDict = safeExtractRoktConfigDict(roktConfig);
84
95
  MPRoktConfig *config = [self buildRoktConfigFromDict:roktConfigDict];
85
96
  #else
86
97
  // Old Architecture Implementation
@@ -117,6 +128,9 @@ RCT_EXPORT_METHOD(selectPlacements:(NSString *) identifer attributes:(NSDictiona
117
128
  [self.eventManager onWidgetHeightChanges:height placement:placementId];
118
129
  };
119
130
 
131
+ if (self.bridge == nil || self.bridge.uiManager == nil) {
132
+ NSLog(@"[mParticle-Rokt] addUIBlock skipped: self.bridge%@ is nil. selectPlacements will not be called. This can occur in New Architecture bridgeless production builds.", self.bridge == nil ? @"" : @".uiManager");
133
+ }
120
134
  [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
121
135
  NSMutableDictionary *nativePlaceholders = [self getNativePlaceholders:placeholders viewRegistry:viewRegistry];
122
136
 
@@ -163,7 +163,8 @@ RCT_EXPORT_METHOD(getUserAttributes:(NSString *)mpid callback:(RCTResponseSender
163
163
  {
164
164
  MParticleUser *selectedUser = [[MParticleUser alloc] init];
165
165
  selectedUser.userId = [NSNumber numberWithLong:mpid.longLongValue];
166
- callback(@[[NSNull null], [selectedUser userAttributes]]);
166
+ NSDictionary *attributes = [selectedUser userAttributes] ?: @{};
167
+ callback(@[[NSNull null], attributes]);
167
168
  }
168
169
 
169
170
  RCT_EXPORT_METHOD(setUserTag:(NSString *)mpid tag:(NSString *)tag)
@@ -651,23 +652,21 @@ RCT_EXPORT_METHOD(setCCPAConsentState:(MPCCPAConsent *)consent)
651
652
  }
652
653
  MPIdentityApiRequest *request = [MPIdentityApiRequest requestWithEmptyUser];
653
654
 
654
- if (dict[@"userIdentities"] && dict[@"userIdentities"] != [NSNull null]) {
655
- NSDictionary *identities = dict[@"userIdentities"];
656
- for (NSString *key in identities) {
655
+ for (NSString *key in dict) {
656
+ id value = dict[key];
657
+ if (value == [NSNull null]) {
658
+ continue;
659
+ }
660
+
661
+ if ([key isEqualToString:@"email"]) {
662
+ request.email = (NSString *)value;
663
+ } else if ([key isEqualToString:@"customerId"]) {
664
+ request.customerId = (NSString *)value;
665
+ } else if ([RNMParticle isNumericIdentityKey:key]) {
657
666
  MPIdentity identityType = (MPIdentity)[key integerValue];
658
- NSString *value = identities[key];
659
- [request setIdentity:value identityType:identityType];
667
+ [request setIdentity:(NSString *)value identityType:identityType];
660
668
  }
661
669
  }
662
-
663
- if (dict[@"customerId"] && dict[@"customerId"] != [NSNull null]) {
664
- request.customerId = dict[@"customerId"];
665
- }
666
-
667
- if (dict[@"email"] && dict[@"email"] != [NSNull null]) {
668
- request.email = dict[@"email"];
669
- }
670
-
671
670
  return request;
672
671
  }
673
672
 
@@ -727,6 +726,17 @@ RCT_EXPORT_METHOD(setCCPAConsentState:(MPCCPAConsent *)consent)
727
726
  }
728
727
  #endif
729
728
 
729
+ + (BOOL)isNumericIdentityKey:(NSString *)key {
730
+ static NSCharacterSet *numericSet = nil;
731
+ static dispatch_once_t onceToken;
732
+ dispatch_once(&onceToken, ^{
733
+ numericSet = [NSCharacterSet decimalDigitCharacterSet];
734
+ });
735
+
736
+ NSCharacterSet *keyCharacterSet = [NSCharacterSet characterSetWithCharactersInString:key];
737
+ return [numericSet isSupersetOfSet:keyCharacterSet];
738
+ }
739
+
730
740
  @end
731
741
 
732
742
  // RCTConvert category methods for mParticle types
@@ -1087,27 +1097,27 @@ typedef NS_ENUM(NSUInteger, MPReactCommerceEventAction) {
1087
1097
  return action;
1088
1098
  }
1089
1099
 
1100
+
1090
1101
  + (MPIdentityApiRequest *)MPIdentityApiRequest:(id)json {
1091
1102
  NSDictionary *dict = json;
1092
1103
  MPIdentityApiRequest *request = [MPIdentityApiRequest requestWithEmptyUser];
1093
1104
 
1094
- if (dict[@"userIdentities"] && dict[@"userIdentities"] != [NSNull null]) {
1095
- NSDictionary *identities = dict[@"userIdentities"];
1096
- for (NSString *key in identities) {
1105
+ for (NSString *key in dict) {
1106
+ id value = dict[key];
1107
+ if (value == [NSNull null]) {
1108
+ continue;
1109
+ }
1110
+
1111
+ if ([key isEqualToString:@"email"]) {
1112
+ request.email = (NSString *)value;
1113
+ } else if ([key isEqualToString:@"customerId"]) {
1114
+ request.customerId = (NSString *)value;
1115
+ } else if ([RNMParticle isNumericIdentityKey:key]) {
1097
1116
  MPIdentity identityType = (MPIdentity)[key integerValue];
1098
- NSString *value = identities[key];
1099
- [request setIdentity:value identityType:identityType];
1117
+ [request setIdentity:(NSString *)value identityType:identityType];
1100
1118
  }
1101
1119
  }
1102
1120
 
1103
- if (dict[@"customerId"] && dict[@"customerId"] != [NSNull null]) {
1104
- request.customerId = dict[@"customerId"];
1105
- }
1106
-
1107
- if (dict[@"email"] && dict[@"email"] != [NSNull null]) {
1108
- request.email = dict[@"email"];
1109
- }
1110
-
1111
1121
  return request;
1112
1122
  }
1113
1123
 
@@ -1,10 +1,9 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  import { TurboModuleRegistry } from 'react-native';
3
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
4
 
4
5
  export type CustomAttributes = { [key: string]: string | number | boolean };
5
- export type UserAttributes = {
6
- [key: string]: string | string[] | number | boolean | null;
7
- };
6
+ export type UserAttributes = UnsafeObject;
8
7
  export type UserIdentities = { [key: string]: string };
9
8
 
10
9
  export interface Product {
@@ -153,7 +152,7 @@ export interface Spec extends TurboModule {
153
152
  mpid: string,
154
153
  callback: (
155
154
  error: CallbackError | null,
156
- result: UserAttributes | null
155
+ result: UserAttributes
157
156
  ) => void
158
157
  ): void;
159
158
  setUserTag(mpid: string, tag: string): void;
@@ -103,9 +103,10 @@ export class RoktLayoutView extends Component<
103
103
 
104
104
  // Return the native component with the props
105
105
  // Cast to React.ComponentType to make it compatible with JSX
106
+ // Using 'unknown' intermediate cast for compatibility with different @types/react versions
106
107
  const RoktComponent =
107
108
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
- RoktNativeLayoutComponent as React.ComponentType<any>;
109
+ RoktNativeLayoutComponent as unknown as React.ComponentType<any>;
109
110
  return (
110
111
  <RoktComponent
111
112
  placeholderName={placeholderName}
@@ -1,10 +1,9 @@
1
1
  import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
2
3
  export type CustomAttributes = {
3
4
  [key: string]: string | number | boolean;
4
5
  };
5
- export type UserAttributes = {
6
- [key: string]: string | string[] | number | boolean | null;
7
- };
6
+ export type UserAttributes = UnsafeObject;
8
7
  export type UserIdentities = {
9
8
  [key: string]: string;
10
9
  };
@@ -130,7 +129,7 @@ export interface Spec extends TurboModule {
130
129
  setLocation(latitude: number, longitude: number): void;
131
130
  setUserAttribute(mpid: string, key: string, value: string): void;
132
131
  setUserAttributeArray(mpid: string, key: string, value: Array<string>): void;
133
- getUserAttributes(mpid: string, callback: (error: CallbackError | null, result: UserAttributes | null) => void): void;
132
+ getUserAttributes(mpid: string, callback: (error: CallbackError | null, result: UserAttributes) => void): void;
134
133
  setUserTag(mpid: string, tag: string): void;
135
134
  incrementUserAttribute(mpid: string, key: string, value: number): void;
136
135
  removeUserAttribute(mpid: string, key: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeMParticle.js","sourceRoot":"","sources":["../../js/codegenSpecs/NativeMParticle.ts"],"names":[],"mappings":";;AACA,+CAAmD;AAoNnD,kBAAe,kCAAmB,CAAC,YAAY,CAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"NativeMParticle.js","sourceRoot":"","sources":["../../js/codegenSpecs/NativeMParticle.ts"],"names":[],"mappings":";;AACA,+CAAmD;AAmNnD,kBAAe,kCAAmB,CAAC,YAAY,CAAO,aAAa,CAAC,CAAC"}
@@ -84,6 +84,7 @@ class RoktLayoutView extends react_1.Component {
84
84
  const { placeholderName } = this.props;
85
85
  // Return the native component with the props
86
86
  // Cast to React.ComponentType to make it compatible with JSX
87
+ // Using 'unknown' intermediate cast for compatibility with different @types/react versions
87
88
  const RoktComponent =
88
89
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
90
  RoktLayoutNativeComponent_1.default;
@@ -1 +1 @@
1
- {"version":3,"file":"rokt-layout-view.android.js","sourceRoot":"","sources":["../../js/rokt/rokt-layout-view.android.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,+CAAyC;AACzC,+GAAuF;AAwCvF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,aAAa;KAC/B;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAa,cAAe,SAAQ,iBAGnC;IACC,YAAY,KAA0B;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAWf;;;WAGG;QACK,wBAAmB,GAAG,CAAC,KAAyB,EAAE,EAAE;YAC1D,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC/D;QACH,CAAC,CAAC;QAEF;;;WAGG;QACK,wBAAmB,GAAG,CAAC,KAAyB,EAAE,EAAE;YAC1D,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;gBAC9B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GACxD,KAAK,CAAC,WAAW,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC;oBACZ,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC;oBACrC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAC;oBACvC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC;oBACzC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC;iBAC5C,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;QAnCA,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,CAAC;YACT,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;YAC3C,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;IACJ,CAAC;IA6BQ,MAAM;QACb,IAAI;YACF,qCAAqC;YACrC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvC,6CAA6C;YAC7C,6DAA6D;YAC7D,MAAM,aAAa;YACjB,8DAA8D;YAC9D,mCAAqD,CAAC;YACxD,OAAO,CACL,CAAC,aAAa,CACZ,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,KAAK,CAAC,CAAC;oBACL,MAAM,CAAC,MAAM;oBACb;wBACE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;wBACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;wBAC/B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;wBACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;wBACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;qBACtC;iBACF,CAAC,CACF,qBAAqB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAChD,qBAAqB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAChD,CACH,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CACF;AA3ED,wCA2EC;AAED,kBAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"rokt-layout-view.android.js","sourceRoot":"","sources":["../../js/rokt/rokt-layout-view.android.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,+CAAyC;AACzC,+GAAuF;AAwCvF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,aAAa;KAC/B;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAa,cAAe,SAAQ,iBAGnC;IACC,YAAY,KAA0B;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAWf;;;WAGG;QACK,wBAAmB,GAAG,CAAC,KAAyB,EAAE,EAAE;YAC1D,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC/D;QACH,CAAC,CAAC;QAEF;;;WAGG;QACK,wBAAmB,GAAG,CAAC,KAAyB,EAAE,EAAE;YAC1D,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;gBAC9B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GACxD,KAAK,CAAC,WAAW,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC;oBACZ,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC;oBACrC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAC;oBACvC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC;oBACzC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC;iBAC5C,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;QAnCA,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,CAAC;YACT,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;YAC3C,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;IACJ,CAAC;IA6BQ,MAAM;QACb,IAAI;YACF,qCAAqC;YACrC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvC,6CAA6C;YAC7C,6DAA6D;YAC7D,2FAA2F;YAC3F,MAAM,aAAa;YACjB,8DAA8D;YAC9D,mCAAgE,CAAC;YACnE,OAAO,CACL,CAAC,aAAa,CACZ,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,KAAK,CAAC,CAAC;oBACL,MAAM,CAAC,MAAM;oBACb;wBACE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;wBACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;wBAC/B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;wBACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;wBACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;qBACtC;iBACF,CAAC,CACF,qBAAqB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAChD,qBAAqB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAChD,CACH,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CACF;AA5ED,wCA4EC;AAED,kBAAe,cAAc,CAAC"}