@snowplow/react-native-tracker 1.4.0 → 2.0.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 (239) hide show
  1. package/.editorconfig +15 -0
  2. package/.eslintignore +6 -0
  3. package/.gitattributes +3 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. package/.github/actions/setup/action.yml +28 -0
  7. package/.github/workflows/build.yml +150 -0
  8. package/.github/workflows/deploy.yml +98 -0
  9. package/.github/workflows/e2e-android.yml +121 -0
  10. package/.github/workflows/e2e-ios.yml +90 -0
  11. package/.github/workflows/snyk.yml +21 -0
  12. package/.gitignore +70 -0
  13. package/.npmignore +60 -0
  14. package/.nvmrc +1 -0
  15. package/.watchmanconfig +1 -0
  16. package/.yarnrc +3 -0
  17. package/CHANGELOG +166 -0
  18. package/CONTRIBUTING.md +80 -0
  19. package/README.md +23 -110
  20. package/android/build.gradle +93 -37
  21. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  22. package/android/gradle/wrapper/gradle-wrapper.properties +1 -2
  23. package/android/gradle.properties +5 -2
  24. package/android/gradlew +172 -110
  25. package/android/gradlew.bat +24 -19
  26. package/android/src/main/AndroidManifest.xml +1 -3
  27. package/android/src/main/AndroidManifestNew.xml +2 -0
  28. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerModule.kt +704 -0
  29. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerPackage.kt +17 -0
  30. package/android/src/main/java/com/snowplow/reactnativetracker/util/ConfigUtil.kt +271 -0
  31. package/android/src/main/java/com/snowplow/reactnativetracker/util/EventUtil.kt +213 -0
  32. package/android/src/main/java/com/snowplow/reactnativetracker/util/TrackerVersion.kt +5 -0
  33. package/babel.config.js +3 -0
  34. package/example/.watchmanconfig +1 -0
  35. package/example/Gemfile +6 -0
  36. package/example/android/app/build.gradle +129 -0
  37. package/example/android/app/debug.keystore +0 -0
  38. package/example/android/app/proguard-rules.pro +10 -0
  39. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTest.java +36 -0
  40. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTestAppJUnitRunner.java +21 -0
  41. package/example/android/app/src/debug/AndroidManifest.xml +13 -0
  42. package/example/android/app/src/debug/java/com/reactnativetrackerexample/ReactNativeFlipper.java +75 -0
  43. package/example/android/app/src/main/AndroidManifest.xml +26 -0
  44. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainActivity.java +32 -0
  45. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainApplication.java +62 -0
  46. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  47. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  48. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  49. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  50. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  51. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  52. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  53. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  54. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  55. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  56. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  57. package/example/android/app/src/main/res/values/strings.xml +3 -0
  58. package/example/android/app/src/main/res/values/styles.xml +9 -0
  59. package/example/android/app/src/release/java/com/reactnativetrackerexample/ReactNativeFlipper.java +20 -0
  60. package/example/android/build.gradle +31 -0
  61. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  62. package/example/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  63. package/example/android/gradle.properties +44 -0
  64. package/example/android/gradlew +244 -0
  65. package/example/android/gradlew.bat +92 -0
  66. package/example/android/settings.gradle +4 -0
  67. package/example/app.json +4 -0
  68. package/example/babel.config.js +17 -0
  69. package/example/detox.config.js +92 -0
  70. package/example/e2e/config.json +10 -0
  71. package/example/e2e/emitEvents.e2e.detox.js +108 -0
  72. package/example/e2e/environment.js +23 -0
  73. package/example/e2e/helpers/microCommands.js +153 -0
  74. package/example/e2e/helpers/microHelpers.js +346 -0
  75. package/example/e2e/helpers/microHelpers.test.js +308 -0
  76. package/example/e2e/helpers/schemas.js +62 -0
  77. package/example/e2e/jest.config.js +16 -0
  78. package/example/e2e/setup.js +4 -0
  79. package/example/e2e/testEvents.micro.test.js +300 -0
  80. package/example/index.js +5 -0
  81. package/example/ios/.xcode.env +11 -0
  82. package/example/ios/Podfile +64 -0
  83. package/example/ios/Podfile.lock +737 -0
  84. package/example/ios/ReactNativeTrackerExample/AppDelegate.h +6 -0
  85. package/example/ios/ReactNativeTrackerExample/AppDelegate.mm +26 -0
  86. package/example/ios/ReactNativeTrackerExample/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  87. package/example/ios/ReactNativeTrackerExample/Images.xcassets/Contents.json +6 -0
  88. package/example/ios/ReactNativeTrackerExample/Info.plist +55 -0
  89. package/example/ios/ReactNativeTrackerExample/LaunchScreen.storyboard +47 -0
  90. package/example/ios/ReactNativeTrackerExample/main.m +10 -0
  91. package/example/ios/ReactNativeTrackerExample-Bridging-Header.h +3 -0
  92. package/example/ios/ReactNativeTrackerExample.xcodeproj/project.pbxproj +722 -0
  93. package/{ios/RNSnowplowTracker.xcodeproj/xcshareddata/xcschemes/RNSnowplowTracker.xcscheme → example/ios/ReactNativeTrackerExample.xcodeproj/xcshareddata/xcschemes/ReactNativeTrackerExample.xcscheme} +29 -21
  94. package/example/ios/ReactNativeTrackerExample.xcworkspace/contents.xcworkspacedata +10 -0
  95. package/example/ios/ReactNativeTrackerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  96. package/example/ios/ReactNativeTrackerExampleTests/Info.plist +24 -0
  97. package/example/ios/ReactNativeTrackerExampleTests/ReactNativeTrackerExampleTests.m +66 -0
  98. package/example/metro.config.js +45 -0
  99. package/example/package.json +54 -0
  100. package/example/react-native.config.js +10 -0
  101. package/example/src/App.js +557 -0
  102. package/example/tsconfig.json +5 -0
  103. package/example/yarn.lock +7379 -0
  104. package/ios/ReactNativeTracker-Bridging-Header.h +2 -0
  105. package/ios/ReactNativeTracker.mm +165 -0
  106. package/ios/ReactNativeTracker.swift +757 -0
  107. package/ios/{RNSnowplowTracker.xcodeproj → ReactNativeTracker.xcodeproj}/project.pbxproj +55 -79
  108. package/ios/Util/ConfigUtils.swift +206 -0
  109. package/ios/Util/TrackerVersion.swift +3 -0
  110. package/ios/Util/Utilities.swift +37 -0
  111. package/lefthook.yml +11 -0
  112. package/lib/commonjs/api.js +475 -0
  113. package/lib/commonjs/api.js.map +1 -0
  114. package/lib/commonjs/configurations.js +209 -0
  115. package/lib/commonjs/configurations.js.map +1 -0
  116. package/lib/commonjs/constants.js +85 -0
  117. package/lib/commonjs/constants.js.map +1 -0
  118. package/lib/commonjs/events.js +256 -0
  119. package/lib/commonjs/events.js.map +1 -0
  120. package/lib/commonjs/index.js +141 -0
  121. package/lib/commonjs/index.js.map +1 -0
  122. package/lib/commonjs/jsCore.js +393 -0
  123. package/lib/commonjs/jsCore.js.map +1 -0
  124. package/lib/commonjs/native.js +29 -0
  125. package/lib/commonjs/native.js.map +1 -0
  126. package/lib/commonjs/subject.js +248 -0
  127. package/lib/commonjs/subject.js.map +1 -0
  128. package/lib/commonjs/tracker.js +221 -0
  129. package/lib/commonjs/tracker.js.map +1 -0
  130. package/lib/commonjs/types.js +2 -0
  131. package/lib/commonjs/types.js.map +1 -0
  132. package/lib/commonjs/utils.js +85 -0
  133. package/lib/commonjs/utils.js.map +1 -0
  134. package/lib/commonjs/webViewInterface.js +79 -0
  135. package/lib/commonjs/webViewInterface.js.map +1 -0
  136. package/lib/module/api.js +439 -0
  137. package/lib/module/api.js.map +1 -0
  138. package/lib/module/configurations.js +197 -0
  139. package/lib/module/configurations.js.map +1 -0
  140. package/lib/module/constants.js +80 -0
  141. package/lib/module/constants.js.map +1 -0
  142. package/lib/module/events.js +240 -0
  143. package/lib/module/events.js.map +1 -0
  144. package/lib/module/index.js +129 -0
  145. package/lib/module/index.js.map +1 -0
  146. package/lib/module/jsCore.js +390 -0
  147. package/lib/module/jsCore.js.map +1 -0
  148. package/lib/module/native.js +25 -0
  149. package/lib/module/native.js.map +1 -0
  150. package/lib/module/subject.js +235 -0
  151. package/lib/module/subject.js.map +1 -0
  152. package/lib/module/tracker.js +209 -0
  153. package/lib/module/tracker.js.map +1 -0
  154. package/lib/module/types.js +2 -0
  155. package/lib/module/types.js.map +1 -0
  156. package/lib/module/utils.js +79 -0
  157. package/lib/module/utils.js.map +1 -0
  158. package/lib/module/webViewInterface.js +75 -0
  159. package/lib/module/webViewInterface.js.map +1 -0
  160. package/lib/typescript/__tests__/api.test.d.ts +2 -0
  161. package/lib/typescript/__tests__/api.test.d.ts.map +1 -0
  162. package/lib/typescript/__tests__/configurations.test.d.ts +2 -0
  163. package/lib/typescript/__tests__/configurations.test.d.ts.map +1 -0
  164. package/lib/typescript/__tests__/events.test.d.ts +2 -0
  165. package/lib/typescript/__tests__/events.test.d.ts.map +1 -0
  166. package/lib/typescript/__tests__/index.test.d.ts +2 -0
  167. package/lib/typescript/__tests__/index.test.d.ts.map +1 -0
  168. package/lib/typescript/__tests__/jsCore.test.d.ts +2 -0
  169. package/lib/typescript/__tests__/jsCore.test.d.ts.map +1 -0
  170. package/lib/typescript/__tests__/utils.test.d.ts +2 -0
  171. package/lib/typescript/__tests__/utils.test.d.ts.map +1 -0
  172. package/lib/typescript/api.d.ts +226 -0
  173. package/lib/typescript/api.d.ts.map +1 -0
  174. package/lib/typescript/configurations.d.ts +73 -0
  175. package/lib/typescript/configurations.d.ts.map +1 -0
  176. package/lib/typescript/constants.d.ts +59 -0
  177. package/lib/typescript/constants.d.ts.map +1 -0
  178. package/lib/typescript/events.d.ts +101 -0
  179. package/lib/typescript/events.d.ts.map +1 -0
  180. package/lib/typescript/index.d.ts +27 -0
  181. package/lib/typescript/index.d.ts.map +1 -0
  182. package/lib/typescript/jsCore.d.ts +140 -0
  183. package/lib/typescript/jsCore.d.ts.map +1 -0
  184. package/lib/typescript/native.d.ts +4 -0
  185. package/lib/typescript/native.d.ts.map +1 -0
  186. package/lib/typescript/subject.d.ts +91 -0
  187. package/lib/typescript/subject.d.ts.map +1 -0
  188. package/lib/typescript/tracker.d.ts +93 -0
  189. package/lib/typescript/tracker.d.ts.map +1 -0
  190. package/{dist/index.d.ts → lib/typescript/types.d.ts} +188 -75
  191. package/lib/typescript/types.d.ts.map +1 -0
  192. package/lib/typescript/utils.d.ts +35 -0
  193. package/lib/typescript/utils.d.ts.map +1 -0
  194. package/lib/typescript/webViewInterface.d.ts +15 -0
  195. package/lib/typescript/webViewInterface.d.ts.map +1 -0
  196. package/package.json +134 -52
  197. package/scripts/bootstrap.js +29 -0
  198. package/snowplow-react-native-tracker.podspec +42 -0
  199. package/src/__mocks__/react-native.js +7 -0
  200. package/src/__tests__/api.test.ts +34 -0
  201. package/src/__tests__/configurations.test.ts +620 -0
  202. package/src/__tests__/events.test.ts +749 -0
  203. package/src/__tests__/index.test.ts +27 -0
  204. package/src/__tests__/jsCore.test.ts +169 -0
  205. package/src/__tests__/utils.test.ts +23 -0
  206. package/src/api.ts +535 -0
  207. package/src/configurations.ts +337 -0
  208. package/src/constants.ts +102 -0
  209. package/src/events.ts +330 -0
  210. package/src/index.ts +189 -0
  211. package/src/jsCore.ts +553 -0
  212. package/src/native.ts +34 -0
  213. package/src/subject.ts +315 -0
  214. package/src/tracker.ts +330 -0
  215. package/src/types.ts +1087 -0
  216. package/src/utils.ts +78 -0
  217. package/src/webViewInterface.ts +105 -0
  218. package/tsconfig.build.json +5 -0
  219. package/tsconfig.json +28 -0
  220. package/turbo.json +34 -0
  221. package/yarn.lock +9333 -0
  222. package/RNSnowplowTracker.podspec +0 -24
  223. package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerModule.java +0 -750
  224. package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerPackage.java +0 -29
  225. package/android/src/main/java/com/snowplowanalytics/react/util/ConfigUtil.java +0 -351
  226. package/android/src/main/java/com/snowplowanalytics/react/util/EventUtil.java +0 -339
  227. package/android/src/main/java/com/snowplowanalytics/react/util/TrackerVersion.java +0 -7
  228. package/dist/index.js +0 -2026
  229. package/dist/index.js.map +0 -1
  230. package/ios/RNSnowplowTracker.h +0 -34
  231. package/ios/RNSnowplowTracker.m +0 -911
  232. package/ios/Util/NSDictionary+RNSP_TypeMethods.h +0 -33
  233. package/ios/Util/NSDictionary+RNSP_TypeMethods.m +0 -40
  234. package/ios/Util/RNConfigUtils.h +0 -44
  235. package/ios/Util/RNConfigUtils.m +0 -209
  236. package/ios/Util/RNTrackerVersion.h +0 -27
  237. package/ios/Util/RNTrackerVersion.m +0 -27
  238. package/ios/Util/RNUtilities.h +0 -32
  239. package/ios/Util/RNUtilities.m +0 -68
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.
3
+ *
4
+ * This program is licensed to you under the Apache License Version 2.0,
5
+ * and you may not use this file except in compliance with the Apache License Version 2.0.
6
+ * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
7
+ *
8
+ * Unless required by applicable law or agreed to in writing,
9
+ * software distributed under the Apache License Version 2.0 is distributed on an
10
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
12
+ */
13
+
14
+ 'use strict';
15
+
16
+ const logMessages = {
17
+ // configuration errors
18
+ namespace: 'namespace parameter is required to be set',
19
+ endpoint: 'endpoint parameter is required to be set',
20
+ network: 'networkConfig is invalid',
21
+ tracker: 'trackerConfig is invalid',
22
+ session: 'sessionConfig is invalid',
23
+ emitter: 'emitterConfig is invalid',
24
+ subject: 'subjectConfig is invalid',
25
+ gdpr: 'gdprConfig is invalid',
26
+ gc: 'gcConfig is invalid',
27
+ // event errors
28
+ context: 'invalid contexts parameter',
29
+ selfDesc: 'selfDescribing event requires schema and data parameters to be set',
30
+ evType: 'event argument can only be an object',
31
+ screenViewReq: 'screenView event requires name as string parameter to be set',
32
+ structuredReq: 'structured event requires category and action parameters to be set',
33
+ pageviewReq: 'pageView event requires pageUrl parameter to be set',
34
+ timingReq: 'timing event requires category, variable and timing parameters to be set',
35
+ consentGReq: 'consentGranted event requires expiry, documentId and version parameters to be set',
36
+ consentWReq: 'consentWithdrawn event requires all, documentId and version parameters to be set',
37
+ ecomReq: 'ecommerceTransaction event requires orderId, totalValue to be set and items to be an array of valid ecommerceItems',
38
+ deepLinkReq: 'deepLinkReceived event requires the url parameter to be set',
39
+ messageNotificationReq: 'messageNotification event requires title, body, and trigger parameters to be set',
40
+ // global contexts errors
41
+ gcTagType: 'tag argument is required to be a string',
42
+ gcType: 'global context argument is invalid',
43
+ // api error prefix
44
+ createTracker: 'createTracker:',
45
+ removeTracker: 'removeTracker: trackerNamespace can only be a string',
46
+ // methods
47
+ trackSelfDesc: 'trackSelfDescribingEvent:',
48
+ trackScreenView: 'trackScreenViewEvent:',
49
+ trackStructured: 'trackStructuredEvent:',
50
+ trackPageView: 'trackPageViewEvent:',
51
+ trackTiming: 'trackTimingEvent:',
52
+ trackConsentGranted: 'trackConsentGranted:',
53
+ trackConsentWithdrawn: 'trackConsentWithdrawn:',
54
+ trackEcommerceTransaction: 'trackEcommerceTransaction:',
55
+ trackDeepLinkReceived: 'trackDeepLinkReceivedEvent:',
56
+ trackMessageNotification: 'trackMessageNotificationEvent:',
57
+ removeGlobalContexts: 'removeGlobalContexts:',
58
+ addGlobalContexts: 'addGlobalContexts:',
59
+ // setters
60
+ setUserId: 'setUserId: userId can only be a string or null',
61
+ setNetworkUserId: 'setNetworkUserId: networkUserId can only be a string(UUID) or null',
62
+ setDomainUserId: 'setDomainUserId: domainUserId can only be a string(UUID) or null',
63
+ setIpAddress: 'setIpAddress: ipAddress can only be a string or null',
64
+ setUseragent: 'setUseragent: useragent can only be a string or null',
65
+ setTimezone: 'setTimezone: timezone can only be a string or null',
66
+ setLanguage: 'setLanguage: language can only be a string or null',
67
+ setScreenResolution: 'setScreenResolution: screenResolution can only be of ScreenSize type or null',
68
+ setScreenViewport: 'setScreenViewport: screenViewport can only be of ScreenSize type or null',
69
+ setColorDepth: 'setColorDepth: colorDepth can only be a number(integer) or null',
70
+ setSubjectData: 'setSubjectData:'
71
+ };
72
+ const schemas = {
73
+ payloadData: 'iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4',
74
+ timingSchema: 'iglu:com.snowplowanalytics.snowplow/timing/jsonschema/1-0-0',
75
+ deepLinkReceivedSchema: 'iglu:com.snowplowanalytics.mobile/deep_link_received/jsonschema/1-0-0',
76
+ messageNotificationSchema: 'iglu:com.snowplowanalytics.mobile/message_notification/jsonschema/1-0-0',
77
+ screenViewSchema: 'iglu:com.snowplowanalytics.mobile/screen_view/jsonschema/1-0-0'
78
+ };
79
+ export { logMessages, schemas };
80
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["logMessages","namespace","endpoint","network","tracker","session","emitter","subject","gdpr","gc","context","selfDesc","evType","screenViewReq","structuredReq","pageviewReq","timingReq","consentGReq","consentWReq","ecomReq","deepLinkReq","messageNotificationReq","gcTagType","gcType","createTracker","removeTracker","trackSelfDesc","trackScreenView","trackStructured","trackPageView","trackTiming","trackConsentGranted","trackConsentWithdrawn","trackEcommerceTransaction","trackDeepLinkReceived","trackMessageNotification","removeGlobalContexts","addGlobalContexts","setUserId","setNetworkUserId","setDomainUserId","setIpAddress","setUseragent","setTimezone","setLanguage","setScreenResolution","setScreenViewport","setColorDepth","setSubjectData","schemas","payloadData","timingSchema","deepLinkReceivedSchema","messageNotificationSchema","screenViewSchema"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,MAAMA,WAAW,GAAG;EAClB;EACAC,SAAS,EAAE,2CAA2C;EACtDC,QAAQ,EAAE,0CAA0C;EACpDC,OAAO,EAAE,0BAA0B;EACnCC,OAAO,EAAE,0BAA0B;EACnCC,OAAO,EAAE,0BAA0B;EACnCC,OAAO,EAAE,0BAA0B;EACnCC,OAAO,EAAE,0BAA0B;EACnCC,IAAI,EAAE,uBAAuB;EAC7BC,EAAE,EAAE,qBAAqB;EAEzB;EACAC,OAAO,EAAE,4BAA4B;EACrCC,QAAQ,EACN,oEAAoE;EACtEC,MAAM,EAAE,sCAAsC;EAC9CC,aAAa,EAAE,8DAA8D;EAC7EC,aAAa,EACX,oEAAoE;EACtEC,WAAW,EAAE,qDAAqD;EAClEC,SAAS,EACP,0EAA0E;EAC5EC,WAAW,EACT,mFAAmF;EACrFC,WAAW,EACT,kFAAkF;EACpFC,OAAO,EACL,oHAAoH;EACtHC,WAAW,EAAE,6DAA6D;EAC1EC,sBAAsB,EACpB,kFAAkF;EAEpF;EACAC,SAAS,EAAE,yCAAyC;EACpDC,MAAM,EAAE,oCAAoC;EAE5C;EACAC,aAAa,EAAE,gBAAgB;EAC/BC,aAAa,EAAE,sDAAsD;EAErE;EACAC,aAAa,EAAE,2BAA2B;EAC1CC,eAAe,EAAE,uBAAuB;EACxCC,eAAe,EAAE,uBAAuB;EACxCC,aAAa,EAAE,qBAAqB;EACpCC,WAAW,EAAE,mBAAmB;EAChCC,mBAAmB,EAAE,sBAAsB;EAC3CC,qBAAqB,EAAE,wBAAwB;EAC/CC,yBAAyB,EAAE,4BAA4B;EACvDC,qBAAqB,EAAE,6BAA6B;EACpDC,wBAAwB,EAAE,gCAAgC;EAC1DC,oBAAoB,EAAE,uBAAuB;EAC7CC,iBAAiB,EAAE,oBAAoB;EAEvC;EACAC,SAAS,EAAE,gDAAgD;EAC3DC,gBAAgB,EACd,oEAAoE;EACtEC,eAAe,EACb,kEAAkE;EACpEC,YAAY,EAAE,sDAAsD;EACpEC,YAAY,EAAE,sDAAsD;EACpEC,WAAW,EAAE,oDAAoD;EACjEC,WAAW,EAAE,oDAAoD;EACjEC,mBAAmB,EACjB,8EAA8E;EAChFC,iBAAiB,EACf,0EAA0E;EAC5EC,aAAa,EACX,iEAAiE;EACnEC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,OAAO,GAAG;EACdC,WAAW,EACT,mEAAmE;EACrEC,YAAY,EAAE,6DAA6D;EAC3EC,sBAAsB,EACpB,uEAAuE;EACzEC,yBAAyB,EACvB,yEAAyE;EAC3EC,gBAAgB,EACd;AACJ,CAAC;AAED,SAAStD,WAAW,EAAEiD,OAAO"}
@@ -0,0 +1,240 @@
1
+ /*
2
+ * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.
3
+ *
4
+ * This program is licensed to you under the Apache License Version 2.0,
5
+ * and you may not use this file except in compliance with the Apache License Version 2.0.
6
+ * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
7
+ *
8
+ * Unless required by applicable law or agreed to in writing,
9
+ * software distributed under the Apache License Version 2.0 is distributed on an
10
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
12
+ */
13
+
14
+ 'use strict';
15
+
16
+ import { isObject } from './utils';
17
+ import { logMessages } from './constants';
18
+ /**
19
+ * Validates whether an object is valid self-describing
20
+ *
21
+ * @param sd {Object} - the object to validate
22
+ * @returns - boolean
23
+ */
24
+ function isValidSD(sd) {
25
+ return isObject(sd) && typeof sd.schema === 'string' && isObject(sd.data);
26
+ }
27
+
28
+ /**
29
+ * Validates whether an object is a valid array of contexts
30
+ *
31
+ * @param contexts {Object} - the object to validate
32
+ * @returns - boolean promise
33
+ */
34
+ function validateContexts(contexts) {
35
+ const isValid = Object.prototype.toString.call(contexts) === '[object Array]' && contexts.map(c => isValidSD(c)).reduce((acc, curr) => acc !== false && curr, true);
36
+ if (!isValid) {
37
+ return Promise.reject(new Error(logMessages.context));
38
+ }
39
+ return Promise.resolve(true);
40
+ }
41
+
42
+ /**
43
+ * Validates whether an object is valid self describing
44
+ *
45
+ * @param argmap {Object} - the object to validate
46
+ * @returns - boolean promise
47
+ */
48
+ function validateSelfDesc(argmap) {
49
+ if (!isValidSD(argmap)) {
50
+ return Promise.reject(new Error(logMessages.selfDesc));
51
+ }
52
+ return Promise.resolve(true);
53
+ }
54
+
55
+ /**
56
+ * Validates a screen view event
57
+ *
58
+ * @param argmap {Object} - the object to validate
59
+ * @returns - boolean promise
60
+ */
61
+ function validateScreenView(argmap) {
62
+ // validate type
63
+ if (!isObject(argmap)) {
64
+ return Promise.reject(new Error(logMessages.evType));
65
+ }
66
+ // validate required props
67
+ if (typeof argmap.name !== 'string') {
68
+ return Promise.reject(new Error(logMessages.screenViewReq));
69
+ }
70
+ return Promise.resolve(true);
71
+ }
72
+
73
+ /**
74
+ * Validates a structured event
75
+ *
76
+ * @param argmap {Object} - the object to validate
77
+ * @returns - boolean promise
78
+ */
79
+ function validateStructured(argmap) {
80
+ // validate type
81
+ if (!isObject(argmap)) {
82
+ return Promise.reject(new Error(logMessages.evType));
83
+ }
84
+ // validate required props
85
+ if (typeof argmap.category !== 'string' || typeof argmap.action !== 'string') {
86
+ return Promise.reject(new Error(logMessages.structuredReq));
87
+ }
88
+ return Promise.resolve(true);
89
+ }
90
+
91
+ /**
92
+ * Validates a page-view event
93
+ *
94
+ * @param argmap {Object} - the object to validate
95
+ * @returns - boolean promise
96
+ */
97
+ function validatePageView(argmap) {
98
+ // validate type
99
+ if (!isObject(argmap)) {
100
+ return Promise.reject(new Error(logMessages.evType));
101
+ }
102
+ // validate required props
103
+ if (typeof argmap.pageUrl !== 'string') {
104
+ return Promise.reject(new Error(logMessages.pageviewReq));
105
+ }
106
+ return Promise.resolve(true);
107
+ }
108
+
109
+ /**
110
+ * Validates a timing event
111
+ *
112
+ * @param argmap {Object} - the object to validate
113
+ * @returns - boolean promise
114
+ */
115
+ function validateTiming(argmap) {
116
+ // validate type
117
+ if (!isObject(argmap)) {
118
+ return Promise.reject(new Error(logMessages.evType));
119
+ }
120
+ // validate required props
121
+ if (typeof argmap.category !== 'string' || typeof argmap.variable !== 'string' || typeof argmap.timing !== 'number') {
122
+ return Promise.reject(new Error(logMessages.timingReq));
123
+ }
124
+ return Promise.resolve(true);
125
+ }
126
+
127
+ /**
128
+ * Validates a consent-granted event
129
+ *
130
+ * @param argmap {Object} - the object to validate
131
+ * @returns - boolean promise
132
+ */
133
+ function validateConsentGranted(argmap) {
134
+ // validate type
135
+ if (!isObject(argmap)) {
136
+ return Promise.reject(new Error(logMessages.evType));
137
+ }
138
+ // validate required props
139
+ if (typeof argmap.expiry !== 'string' || typeof argmap.documentId !== 'string' || typeof argmap.version !== 'string') {
140
+ return Promise.reject(new Error(logMessages.consentGReq));
141
+ }
142
+ return Promise.resolve(true);
143
+ }
144
+
145
+ /**
146
+ * Validates a consent-withdrawn event
147
+ *
148
+ * @param argmap {Object} - the object to validate
149
+ * @returns - boolean promise
150
+ */
151
+ function validateConsentWithdrawn(argmap) {
152
+ // validate type
153
+ if (!isObject(argmap)) {
154
+ return Promise.reject(new Error(logMessages.evType));
155
+ }
156
+ // validate required props
157
+ if (typeof argmap.all !== 'boolean' || typeof argmap.documentId !== 'string' || typeof argmap.version !== 'string') {
158
+ return Promise.reject(new Error(logMessages.consentWReq));
159
+ }
160
+ return Promise.resolve(true);
161
+ }
162
+
163
+ /**
164
+ * Validates a deep link received event
165
+ *
166
+ * @param argmap {Object} - the object to validate
167
+ * @returns - boolean promise
168
+ */
169
+ function validateDeepLinkReceived(argmap) {
170
+ // validate type
171
+ if (!isObject(argmap)) {
172
+ return Promise.reject(new Error(logMessages.evType));
173
+ }
174
+ // validate required props
175
+ if (typeof argmap.url !== 'string') {
176
+ return Promise.reject(new Error(logMessages.deepLinkReq));
177
+ }
178
+ return Promise.resolve(true);
179
+ }
180
+
181
+ /**
182
+ * Validates a message notification event
183
+ *
184
+ * @param argmap {Object} - the object to validate
185
+ * @returns - boolean promise
186
+ */
187
+ function validateMessageNotification(argmap) {
188
+ // validate type
189
+ if (!isObject(argmap)) {
190
+ return Promise.reject(new Error(logMessages.evType));
191
+ }
192
+ // validate required props
193
+ if (typeof argmap.title !== 'string' || typeof argmap.body !== 'string' || typeof argmap.trigger !== 'string' || !['push', 'location', 'calendar', 'timeInterval', 'other'].includes(argmap.trigger)) {
194
+ return Promise.reject(new Error(logMessages.messageNotificationReq));
195
+ }
196
+ return Promise.resolve(true);
197
+ }
198
+
199
+ /**
200
+ * Validates whether an object is valid ecommerce-item
201
+ *
202
+ * @param item {Object} - the object to validate
203
+ * @returns - boolean
204
+ */
205
+ function isValidEcomItem(item) {
206
+ if (isObject(item) && typeof item.sku === 'string' && typeof item.price === 'number' && typeof item.quantity === 'number') {
207
+ return true;
208
+ }
209
+ return false;
210
+ }
211
+
212
+ /**
213
+ * Validates an array of ecommerce-items
214
+ *
215
+ * @param items {Object} - the object to validate
216
+ * @returns - boolean promise
217
+ */
218
+ function validItemsArg(items) {
219
+ return Object.prototype.toString.call(items) === '[object Array]' && items.map(i => isValidEcomItem(i)).reduce((acc, curr) => acc !== false && curr, true);
220
+ }
221
+
222
+ /**
223
+ * Validates an ecommerce-transaction event
224
+ *
225
+ * @param argmap {Object} - the object to validate
226
+ * @returns - boolean promise
227
+ */
228
+ function validateEcommerceTransaction(argmap) {
229
+ // validate type
230
+ if (!isObject(argmap)) {
231
+ return Promise.reject(new Error(logMessages.evType));
232
+ }
233
+ // validate required props
234
+ if (typeof argmap.orderId !== 'string' || typeof argmap.totalValue !== 'number' || !validItemsArg(argmap.items)) {
235
+ return Promise.reject(new Error(logMessages.ecomReq));
236
+ }
237
+ return Promise.resolve(true);
238
+ }
239
+ export { isValidSD, validateContexts, validateSelfDesc, validateScreenView, validateStructured, validatePageView, validateTiming, validateConsentGranted, validateConsentWithdrawn, isValidEcomItem, validItemsArg, validateEcommerceTransaction, validateDeepLinkReceived, validateMessageNotification };
240
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isObject","logMessages","isValidSD","sd","schema","data","validateContexts","contexts","isValid","Object","prototype","toString","call","map","c","reduce","acc","curr","Promise","reject","Error","context","resolve","validateSelfDesc","argmap","selfDesc","validateScreenView","evType","name","screenViewReq","validateStructured","category","action","structuredReq","validatePageView","pageUrl","pageviewReq","validateTiming","variable","timing","timingReq","validateConsentGranted","expiry","documentId","version","consentGReq","validateConsentWithdrawn","all","consentWReq","validateDeepLinkReceived","url","deepLinkReq","validateMessageNotification","title","body","trigger","includes","messageNotificationReq","isValidEcomItem","item","sku","price","quantity","validItemsArg","items","i","validateEcommerceTransaction","orderId","totalValue","ecomReq"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /*
2
+ * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.
3
+ *
4
+ * This program is licensed to you under the Apache License Version 2.0,
5
+ * and you may not use this file except in compliance with the Apache License Version 2.0.
6
+ * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
7
+ *
8
+ * Unless required by applicable law or agreed to in writing,
9
+ * software distributed under the Apache License Version 2.0 is distributed on an
10
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
12
+ */
13
+
14
+ 'use strict';
15
+
16
+ import * as api from './api';
17
+ import { safeWait, safeWaitCallback, errorHandler } from './utils';
18
+ import { getWebViewCallback } from './webViewInterface';
19
+
20
+ /**
21
+ * Creates a React Native Tracker object
22
+ *
23
+ * @param namespace {string} - The tracker namespace
24
+ * @param networkConfig {Object} - The network configuration
25
+ * @param control {Array} - The tracker controller configuration
26
+ * @returns The tracker object
27
+ */
28
+ function createTracker(namespace, networkConfig) {
29
+ let controllerConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
30
+ // initTrackerPromise
31
+ const initTrackerPromise = Promise.resolve(api.createTracker({
32
+ namespace,
33
+ networkConfig,
34
+ ...controllerConfig
35
+ }));
36
+
37
+ // mkMethod creates methods subscribed to the initTrackerPromise
38
+ const mkMethod = safeWait(initTrackerPromise, errorHandler);
39
+
40
+ // mkCallback creates callbacks subscribed to the initTrackerPromise
41
+ const mkCallback = safeWaitCallback(initTrackerPromise, errorHandler);
42
+
43
+ // track methods
44
+ const trackSelfDescribingEvent = mkMethod(api.trackSelfDescribingEvent(namespace));
45
+ const trackScreenViewEvent = mkMethod(api.trackScreenViewEvent(namespace));
46
+ const trackStructuredEvent = mkMethod(api.trackStructuredEvent(namespace));
47
+ const trackPageViewEvent = mkMethod(api.trackPageViewEvent(namespace));
48
+ const trackTimingEvent = mkMethod(api.trackTimingEvent(namespace));
49
+ const trackConsentGrantedEvent = mkMethod(api.trackConsentGrantedEvent(namespace));
50
+ const trackConsentWithdrawnEvent = mkMethod(api.trackConsentWithdrawnEvent(namespace));
51
+ const trackEcommerceTransactionEvent = mkMethod(api.trackEcommerceTransactionEvent(namespace));
52
+ const trackDeepLinkReceivedEvent = mkMethod(api.trackDeepLinkReceivedEvent(namespace));
53
+ const trackMessageNotificationEvent = mkMethod(api.trackMessageNotificationEvent(namespace));
54
+ // Global Contexts
55
+ const removeGlobalContexts = mkMethod(api.removeGlobalContexts(namespace));
56
+ const addGlobalContexts = mkMethod(api.addGlobalContexts(namespace));
57
+ // setters
58
+ const setUserId = mkMethod(api.setUserId(namespace));
59
+ const setNetworkUserId = mkMethod(api.setNetworkUserId(namespace));
60
+ const setDomainUserId = mkMethod(api.setDomainUserId(namespace));
61
+ const setIpAddress = mkMethod(api.setIpAddress(namespace));
62
+ const setUseragent = mkMethod(api.setUseragent(namespace));
63
+ const setTimezone = mkMethod(api.setTimezone(namespace));
64
+ const setLanguage = mkMethod(api.setLanguage(namespace));
65
+ const setScreenResolution = mkMethod(api.setScreenResolution(namespace));
66
+ const setScreenViewport = mkMethod(api.setScreenViewport(namespace));
67
+ const setColorDepth = mkMethod(api.setColorDepth(namespace));
68
+ const setSubjectData = mkMethod(api.setSubjectData(namespace));
69
+
70
+ // callbacks
71
+ const getSessionUserId = mkCallback(api.getSessionUserId(namespace));
72
+ const getSessionId = mkCallback(api.getSessionId(namespace));
73
+ const getSessionIndex = mkCallback(api.getSessionIndex(namespace));
74
+ const getIsInBackground = mkCallback(api.getIsInBackground(namespace));
75
+ const getBackgroundIndex = mkCallback(api.getBackgroundIndex(namespace));
76
+ const getForegroundIndex = mkCallback(api.getForegroundIndex(namespace));
77
+ return Object.freeze({
78
+ trackSelfDescribingEvent,
79
+ trackScreenViewEvent,
80
+ trackStructuredEvent,
81
+ trackPageViewEvent,
82
+ trackTimingEvent,
83
+ trackConsentGrantedEvent,
84
+ trackConsentWithdrawnEvent,
85
+ trackEcommerceTransactionEvent,
86
+ trackDeepLinkReceivedEvent,
87
+ trackMessageNotificationEvent,
88
+ removeGlobalContexts,
89
+ addGlobalContexts,
90
+ setUserId,
91
+ setNetworkUserId,
92
+ setDomainUserId,
93
+ setIpAddress,
94
+ setUseragent,
95
+ setTimezone,
96
+ setLanguage,
97
+ setScreenResolution,
98
+ setScreenViewport,
99
+ setColorDepth,
100
+ setSubjectData,
101
+ getSessionUserId,
102
+ getSessionId,
103
+ getSessionIndex,
104
+ getIsInBackground,
105
+ getBackgroundIndex,
106
+ getForegroundIndex
107
+ });
108
+ }
109
+
110
+ /**
111
+ * Removes a tracker given its namespace
112
+ *
113
+ * @param trackerNamespace {string}
114
+ * @returns - A boolean promise
115
+ */
116
+ function removeTracker(trackerNamespace) {
117
+ return api.removeTracker(trackerNamespace).catch(e => errorHandler(e));
118
+ }
119
+
120
+ /**
121
+ * Removes all trackers
122
+ *
123
+ * @returns - A boolean promise
124
+ */
125
+ function removeAllTrackers() {
126
+ return api.removeAllTrackers().catch(e => errorHandler(e));
127
+ }
128
+ export { createTracker, removeTracker, removeAllTrackers, getWebViewCallback };
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["api","safeWait","safeWaitCallback","errorHandler","getWebViewCallback","createTracker","namespace","networkConfig","controllerConfig","arguments","length","undefined","initTrackerPromise","Promise","resolve","mkMethod","mkCallback","trackSelfDescribingEvent","trackScreenViewEvent","trackStructuredEvent","trackPageViewEvent","trackTimingEvent","trackConsentGrantedEvent","trackConsentWithdrawnEvent","trackEcommerceTransactionEvent","trackDeepLinkReceivedEvent","trackMessageNotificationEvent","removeGlobalContexts","addGlobalContexts","setUserId","setNetworkUserId","setDomainUserId","setIpAddress","setUseragent","setTimezone","setLanguage","setScreenResolution","setScreenViewport","setColorDepth","setSubjectData","getSessionUserId","getSessionId","getSessionIndex","getIsInBackground","getBackgroundIndex","getForegroundIndex","Object","freeze","removeTracker","trackerNamespace","catch","e","removeAllTrackers"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}