@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
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils.ts","../src/constants.ts","../src/jsCore.ts","../src/native.ts","../src/events.ts","../src/configurations.ts","../src/tracker.ts","../src/subject.ts","../src/api.ts","../src/webViewInterface.ts","../src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\n/**\n * Returns a function that accepts a side-effect function as its argument and subscribes\n * that function to aPromise's fullfillment,\n * and errHandle to aPromise's rejection.\n *\n * @param aPromise - A void Promise\n * @param errHandle - A function to handle the promise being rejected\n * @returns - A function subscribed to the Promise's fullfillment\n */\nfunction safeWait(aPromise: Promise<void>, errHandle: ((err: Error) => void)) {\n return (<F extends ((...args: never[]) => Promise<void>)>(func: F) => {\n return (...args: Parameters<F>): Promise<void> => {\n return aPromise.then(() => func(...args)).catch((err) => errHandle(err));\n };\n });\n}\n\n/**\n * Returns a function that accepts a callback function as its argument and subscribes\n * that function to aPromise's fullfillment,\n * and errHandle to aPromise's rejection.\n *\n * @param aPromise - A void Promise\n * @param errHandle - A function to handle the promise being rejected\n * @returns - A function subscribed to the Promise's fullfillment\n */\nfunction safeWaitCallback(\n callPromise: Promise<void>,\n errHandle: ((err: Error) => undefined)\n) {\n return (<T,F extends ((...args: never[]) => Promise<T>)>(func: F) => {\n return (...args: Parameters<F>): ReturnType<F> | Promise<undefined> => {\n return callPromise.then(() => <ReturnType<F>>func(...args)).catch((err) => errHandle(err));\n };\n });\n}\n\n/**\n * Handles an error.\n *\n * @param err - The error to be handled.\n */\nfunction errorHandler(err: Error): undefined {\n if (__DEV__) {\n console.warn('SnowplowTracker:' + err.message);\n return undefined;\n }\n return undefined;\n}\n\n/**\n * Helper to check whether its argument is of object type\n *\n * @param x - The argument to check.\n * @returns - A boolean\n */\nfunction isObject<Type>(x: Type): boolean {\n return Object.prototype.toString.call(x) === '[object Object]';\n}\n\nexport {\n safeWait,\n safeWaitCallback,\n errorHandler,\n isObject\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nconst logMessages = {\n // configuration errors\n namespace: 'namespace parameter is required to be set',\n endpoint: 'endpoint parameter is required to be set',\n network: 'networkConfig is invalid',\n tracker: 'trackerConfig is invalid',\n session: 'sessionConfig is invalid',\n emitter: 'emitterConfig is invalid',\n subject: 'subjectConfig is invalid',\n gdpr: 'gdprConfig is invalid',\n gc: 'gcConfig is invalid',\n\n // event errors\n context: 'invalid contexts parameter',\n selfDesc: 'selfDescribing event requires schema and data parameters to be set',\n evType: 'event argument can only be an object',\n screenViewReq: 'screenView event requires name as string parameter to be set',\n structuredReq: 'structured event requires category and action parameters to be set',\n pageviewReq: 'pageView event requires pageUrl parameter to be set',\n timingReq: 'timing event requires category, variable and timing parameters to be set',\n consentGReq: 'consentGranted event requires expiry, documentId and version parameters to be set',\n consentWReq: 'consentWithdrawn event requires all, documentId and version parameters to be set',\n ecomReq: 'ecommerceTransaction event requires orderId, totalValue to be set and items to be an array of valid ecommerceItems',\n deepLinkReq: 'deepLinkReceived event requires the url parameter to be set',\n messageNotificationReq: 'messageNotification event requires title, body, and trigger parameters to be set',\n\n // global contexts errors\n gcTagType: 'tag argument is required to be a string',\n gcType: 'global context argument is invalid',\n\n // api error prefix\n createTracker: 'createTracker:',\n removeTracker: 'removeTracker: trackerNamespace can only be a string',\n\n // methods\n trackSelfDesc: 'trackSelfDescribingEvent:',\n trackScreenView: 'trackScreenViewEvent:',\n trackStructured: 'trackStructuredEvent:',\n trackPageView: 'trackPageViewEvent:',\n trackTiming: 'trackTimingEvent:',\n trackConsentGranted: 'trackConsentGranted:',\n trackConsentWithdrawn: 'trackConsentWithdrawn:',\n trackEcommerceTransaction: 'trackEcommerceTransaction:',\n trackDeepLinkReceived: 'trackDeepLinkReceivedEvent:',\n trackMessageNotification: 'trackMessageNotificationEvent:',\n removeGlobalContexts: 'removeGlobalContexts:',\n addGlobalContexts: 'addGlobalContexts:',\n\n // setters\n setUserId: 'setUserId: userId can only be a string or null',\n setNetworkUserId: 'setNetworkUserId: networkUserId can only be a string(UUID) or null',\n setDomainUserId: 'setDomainUserId: domainUserId can only be a string(UUID) or null',\n setIpAddress: 'setIpAddress: ipAddress can only be a string or null',\n setUseragent: 'setUseragent: useragent can only be a string or null',\n setTimezone: 'setTimezone: timezone can only be a string or null',\n setLanguage: 'setLanguage: language can only be a string or null',\n setScreenResolution: 'setScreenResolution: screenResolution can only be of ScreenSize type or null',\n setScreenViewport: 'setScreenViewport: screenViewport can only be of ScreenSize type or null',\n setColorDepth: 'setColorDepth: colorDepth can only be a number(integer) or null',\n setSubjectData: 'setSubjectData:',\n};\n\nconst schemas = {\n payloadData:\n 'iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4',\n timingSchema: 'iglu:com.snowplowanalytics.snowplow/timing/jsonschema/1-0-0',\n deepLinkReceivedSchema: 'iglu:com.snowplowanalytics.mobile/deep_link_received/jsonschema/1-0-0',\n messageNotificationSchema: 'iglu:com.snowplowanalytics.mobile/message_notification/jsonschema/1-0-0',\n screenViewSchema: 'iglu:com.snowplowanalytics.mobile/screen_view/jsonschema/1-0-0',\n};\n\nexport {\n logMessages,\n schemas,\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport type {\n InitTrackerConfiguration,\n SelfDescribing,\n EventContext,\n StructuredProps,\n ScreenViewProps,\n ScreenSize,\n PageViewProps,\n TimingProps,\n ConsentGrantedProps,\n ConsentWithdrawnProps,\n EcommerceTransactionProps,\n DeepLinkReceivedProps,\n MessageNotificationProps,\n NetworkConfiguration,\n} from './types';\n\nimport {\n Payload,\n trackerCore,\n PayloadBuilder,\n buildSelfDescribingEvent,\n buildStructEvent,\n buildPageView,\n buildConsentGranted,\n buildConsentWithdrawn,\n buildEcommerceTransaction,\n buildEcommerceTransactionItem,\n} from '@snowplow/tracker-core';\nimport type { TrackerCore } from '@snowplow/tracker-core';\nimport { errorHandler } from './utils';\nimport { schemas } from './constants';\nimport { v4 as uuid } from 'uuid';\n\n// Tracker version added to the events\nconst trackerVersion = 'rn-1.4.0';\n\ninterface Tracker extends TrackerCore {\n setDomainUserId: (duid: string | undefined) => void;\n setNetworkUserId: (nuid: string | undefined) => void;\n}\n\nlet trackers: { [namespace: string]: Tracker } = {};\n\nfunction preparePayload(payload: Payload): Record<string, string> {\n const stringifiedPayload: Record<string, string> = {};\n\n payload['stm'] = new Date().getTime().toString();\n\n for (const key in payload) {\n if (Object.prototype.hasOwnProperty.call(payload, key)) {\n stringifiedPayload[key] = String(payload[key]);\n }\n }\n return stringifiedPayload;\n}\n\nfunction createEmitCallback(networkConfig: NetworkConfiguration): (e: Payload) => void {\n return (e: Payload) => {\n const postJson = {\n schema: schemas.payloadData,\n data: [preparePayload(e)],\n };\n const endpoint = networkConfig.endpoint;\n const postPath =\n networkConfig.customPostPath ?? '/com.snowplowanalytics.snowplow/tp2';\n const headers = networkConfig.requestHeaders ?? {};\n fetch(endpoint + postPath, {\n method: 'POST',\n body: JSON.stringify(postJson),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n }).catch(errorHandler);\n };\n}\n\nfunction updateTrackerProperties(tracker: Tracker, configuration: InitTrackerConfiguration): void {\n tracker.setPlatform(configuration.trackerConfig?.devicePlatform ?? 'mob');\n tracker.setTrackerVersion(trackerVersion);\n tracker.setTrackerNamespace(configuration.namespace);\n if (configuration.trackerConfig?.appId != null) {\n tracker.setAppId(configuration.trackerConfig.appId);\n }\n if (configuration.subjectConfig?.colorDepth != null) {\n tracker.setColorDepth(String(configuration.subjectConfig.colorDepth));\n }\n if (configuration.subjectConfig?.domainUserId != null) {\n tracker.setDomainUserId(configuration.subjectConfig.domainUserId);\n }\n if (configuration.subjectConfig?.ipAddress != null) {\n tracker.setIpAddress(configuration.subjectConfig.ipAddress);\n }\n if (configuration.subjectConfig?.language != null) {\n tracker.setLang(configuration.subjectConfig.language);\n }\n if (configuration.subjectConfig?.screenResolution != null) {\n tracker.setScreenResolution(\n String(configuration.subjectConfig.screenResolution[0]),\n String(configuration.subjectConfig.screenResolution[1])\n );\n }\n if (configuration.subjectConfig?.screenViewport != null) {\n tracker.setViewport(\n String(configuration.subjectConfig.screenViewport[0]),\n String(configuration.subjectConfig.screenViewport[1])\n );\n }\n if (configuration.subjectConfig?.timezone != null) {\n tracker.setTimezone(configuration.subjectConfig.timezone);\n }\n if (configuration.subjectConfig?.userId != null) {\n tracker.setUserId(configuration.subjectConfig.userId);\n }\n if (configuration.subjectConfig?.useragent != null) {\n tracker.setUseragent(configuration.subjectConfig.useragent);\n }\n}\n\nfunction createTracker(\n configuration: InitTrackerConfiguration,\n emitCallback?: (e: Payload) => void\n): Promise<void> {\n // create an emit callback if not given\n const emitter = emitCallback ?? createEmitCallback(configuration.networkConfig);\n\n // the tracker core does not provide an option to set the duid, so we need to add custom\n let domainUserId: string | undefined;\n const setDomainUserId = (userId: string | undefined): void => {\n domainUserId = userId;\n };\n let networkUserId: string | undefined;\n const setNetworkUserId = (userId: string | undefined): void => {\n networkUserId = userId;\n };\n\n // initialize the tracker core\n const core = trackerCore({\n base64: configuration.trackerConfig?.base64Encoding ?? true,\n callback: (payload: PayloadBuilder) => {\n if (domainUserId != null) {\n payload.add('duid', domainUserId);\n }\n if (networkUserId != null) {\n payload.add('tnuid', networkUserId);\n }\n const builtPayload = payload.build();\n emitter(builtPayload);\n },\n });\n const tracker = { ...core, setDomainUserId, setNetworkUserId };\n trackers[configuration.namespace] = tracker;\n\n // update tracker properties to reflect subject and tracker info\n updateTrackerProperties(tracker, configuration);\n\n return <Promise<void>>Promise.resolve();\n}\n\nfunction removeTracker(details: { tracker: string }): Promise<boolean> {\n delete trackers[details.tracker];\n return <Promise<boolean>>Promise.resolve(true);\n}\n\nfunction removeAllTrackers(): Promise<boolean> {\n trackers = {};\n return <Promise<boolean>>Promise.resolve(true);\n}\n\nfunction forTracker(\n namespace: string | null,\n callback: (tracker: Tracker) => void\n): void {\n const tracker = namespace != null ? trackers[namespace] : Object.values(trackers)[0];\n\n if (tracker) {\n callback(tracker);\n } else {\n errorHandler(new Error('No such tracker found.'));\n }\n}\n\nfunction trackSelfDescribingEvent(details: {\n tracker: string | null;\n eventData: SelfDescribing;\n contexts: EventContext[];\n}): Promise<void> {\n forTracker(details.tracker, (tracker) => {\n tracker.track(\n buildSelfDescribingEvent({\n event: details.eventData,\n }),\n details.contexts\n );\n });\n return <Promise<void>>Promise.resolve();\n}\n\nfunction trackStructuredEvent(details: {\n tracker: string | null;\n eventData: StructuredProps;\n contexts: EventContext[];\n}): Promise<void> {\n forTracker(details.tracker, (tracker) => {\n tracker.track(buildStructEvent(details.eventData), details.contexts);\n });\n return <Promise<void>>Promise.resolve();\n}\n\nfunction trackScreenViewEvent(details: {\n tracker: string | null;\n eventData: ScreenViewProps;\n contexts: EventContext[];\n}): Promise<void> {\n const data: ScreenViewProps = {\n name: details.eventData.name,\n id: details.eventData.id ?? uuid()\n };\n if (details.eventData.type != null) {\n data.type = details.eventData.type;\n }\n if (details.eventData.previousName != null) {\n data.previousName = details.eventData.previousName;\n }\n if (details.eventData.previousId != null) {\n data.previousId = details.eventData.previousId;\n }\n if (details.eventData.previousType != null) {\n data.previousType = details.eventData.previousType;\n }\n if (details.eventData.transitionType != null) {\n data.transitionType = details.eventData.transitionType;\n }\n\n return trackSelfDescribingEvent({\n tracker: details.tracker,\n eventData: {\n schema: schemas.screenViewSchema,\n data: data\n },\n contexts: details.contexts,\n });\n}\n\nfunction trackPageViewEvent(details: {\n tracker: string | null;\n eventData: PageViewProps;\n contexts: EventContext[];\n}): Promise<void> {\n forTracker(details.tracker, (tracker) => {\n tracker.track(buildPageView(details.eventData), details.contexts);\n });\n return <Promise<void>>Promise.resolve();\n}\n\nfunction trackTimingEvent(details: {\n tracker: string | null;\n eventData: TimingProps;\n contexts: EventContext[];\n}): Promise<void> {\n return trackSelfDescribingEvent({\n tracker: details.tracker,\n eventData: {\n schema: schemas.timingSchema,\n data: details.eventData,\n },\n contexts: details.contexts,\n });\n}\n\nfunction trackConsentGrantedEvent(details: {\n tracker: string | null;\n eventData: ConsentGrantedProps;\n contexts: EventContext[];\n}): Promise<void> {\n forTracker(details.tracker, (tracker) => {\n const built = buildConsentGranted({\n id: details.eventData.documentId,\n version: details.eventData.version,\n name: details.eventData.name,\n description: details.eventData.documentDescription,\n expiry: details.eventData.expiry,\n });\n tracker.track(built.event, details.contexts.concat(built.context));\n });\n return <Promise<void>>Promise.resolve();\n}\n\nfunction trackConsentWithdrawnEvent(details: {\n tracker: string | null;\n eventData: ConsentWithdrawnProps;\n contexts: EventContext[];\n}): Promise<void> {\n forTracker(details.tracker, (tracker) => {\n const built = buildConsentWithdrawn({\n all: details.eventData.all,\n id: details.eventData.documentId,\n version: details.eventData.version,\n name: details.eventData.name,\n description: details.eventData.documentDescription,\n });\n tracker.track(built.event, details.contexts.concat(built.context));\n });\n return <Promise<void>>Promise.resolve();\n}\n\nfunction trackEcommerceTransactionEvent(details: {\n tracker: string | null;\n eventData: EcommerceTransactionProps;\n contexts: EventContext[];\n}): Promise<void> {\n forTracker(details.tracker, (tracker) => {\n details.eventData.items.forEach(item => {\n tracker.track(\n buildEcommerceTransactionItem({\n ...item,\n orderId: details.eventData.orderId\n }),\n details.contexts\n );\n });\n tracker.track(\n buildEcommerceTransaction({\n orderId: details.eventData.orderId,\n total: details.eventData.totalValue,\n affiliation: details.eventData.affiliation,\n tax: details.eventData.taxValue,\n shipping: details.eventData.shipping,\n city: details.eventData.city,\n state: details.eventData.state,\n country: details.eventData.country,\n currency: details.eventData.currency,\n }),\n details.contexts\n );\n });\n return <Promise<void>>Promise.resolve();\n}\n\nfunction trackDeepLinkReceivedEvent(details: {\n tracker: string | null;\n eventData: DeepLinkReceivedProps;\n contexts: EventContext[];\n}): Promise<void> {\n return trackSelfDescribingEvent({\n tracker: details.tracker,\n eventData: {\n schema: schemas.deepLinkReceivedSchema,\n data: details.eventData,\n },\n contexts: details.contexts,\n });\n}\n\nfunction trackMessageNotificationEvent(details: {\n tracker: string | null;\n eventData: MessageNotificationProps;\n contexts: EventContext[];\n}): Promise<void> {\n return trackSelfDescribingEvent({\n tracker: details.tracker,\n eventData: {\n schema: schemas.messageNotificationSchema,\n data: details.eventData,\n },\n contexts: details.contexts,\n });\n}\n\nfunction removeGlobalContexts(): Promise<void> {\n return <Promise<void>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction addGlobalContexts(): Promise<void> {\n return <Promise<void>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction setUserId(details: { tracker: string; userId: string | null }): Promise<void> {\n trackers[details.tracker]?.setUserId(details.userId ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setNetworkUserId(details: {\n tracker: string;\n networkUserId: string | null;\n}): Promise<void> {\n trackers[details.tracker]?.setNetworkUserId(details.networkUserId ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setDomainUserId(details: {\n tracker: string;\n domainUserId: string | null;\n}): Promise<void> {\n trackers[details.tracker]?.setDomainUserId(details.domainUserId ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setIpAddress(details: { tracker: string; ipAddress: string | null }): Promise<void> {\n trackers[details.tracker]?.setIpAddress(details.ipAddress ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setUseragent(details: { tracker: string; useragent: string | null }): Promise<void> {\n trackers[details.tracker]?.setUseragent(details.useragent ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setTimezone(details: { tracker: string; timezone: string | null }): Promise<void> {\n trackers[details.tracker]?.setTimezone(details.timezone ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setLanguage(details: { tracker: string; language: string | null }): Promise<void> {\n trackers[details.tracker]?.setLang(details.language ?? '');\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setScreenResolution(details: {\n tracker: string;\n screenResolution: ScreenSize | null;\n}): Promise<void> {\n if (details.screenResolution) {\n trackers[details.tracker]?.setScreenResolution(\n String(details.screenResolution[0]),\n String(details.screenResolution[1])\n );\n } else {\n trackers[details.tracker]?.addPayloadPair('res', '');\n }\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setScreenViewport(details: {\n tracker: string;\n screenViewport: ScreenSize | null;\n}): Promise<void> {\n if (details.screenViewport) {\n trackers[details.tracker]?.setViewport(\n String(details.screenViewport[0]),\n String(details.screenViewport[1])\n );\n } else {\n trackers[details.tracker]?.addPayloadPair('vp', '');\n }\n return <Promise<void>>Promise.resolve();\n}\n\nfunction setColorDepth(details: {\n tracker: string;\n colorDepth: number | null;\n}): Promise<void> {\n trackers[details.tracker]?.setColorDepth(String(details.colorDepth ?? ''));\n return <Promise<void>>Promise.resolve();\n}\n\nfunction getSessionUserId(): Promise<string> {\n return <Promise<string>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction getSessionId(): Promise<string> {\n return <Promise<string>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction getSessionIndex(): Promise<number> {\n return <Promise<number>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction getIsInBackground(): Promise<boolean> {\n return <Promise<boolean>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction getBackgroundIndex(): Promise<number> {\n return <Promise<number>>Promise.reject(new Error('Not implemented'));\n}\n\nfunction getForegroundIndex(): Promise<number> {\n return <Promise<number>>Promise.reject(new Error('Not implemented'));\n}\n\nconst JSSnowplowTracker = Object.freeze({\n createTracker,\n removeTracker,\n removeAllTrackers,\n trackSelfDescribingEvent,\n trackStructuredEvent,\n trackScreenViewEvent,\n trackPageViewEvent,\n trackTimingEvent,\n trackConsentGrantedEvent,\n trackConsentWithdrawnEvent,\n trackEcommerceTransactionEvent,\n trackDeepLinkReceivedEvent,\n trackMessageNotificationEvent,\n removeGlobalContexts,\n addGlobalContexts,\n setUserId,\n setNetworkUserId,\n setDomainUserId,\n setIpAddress,\n setUseragent,\n setTimezone,\n setLanguage,\n setScreenResolution,\n setScreenViewport,\n setColorDepth,\n getSessionUserId,\n getSessionId,\n getSessionIndex,\n getIsInBackground,\n getBackgroundIndex,\n getForegroundIndex,\n});\n\nexport { JSSnowplowTracker };\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport { NativeModules } from 'react-native';\nimport { JSSnowplowTracker } from './jsCore';\nimport type { Native } from './types';\nimport { errorHandler } from './utils';\n\nconst isAvailable = NativeModules.RNSnowplowTracker != null;\nif (!isAvailable) {\n errorHandler(\n new Error(\n 'Unable to access the native iOS/Android Snowplow tracker, a tracker implementation with very limited functionality is used.'\n )\n );\n}\n\nconst RNSnowplowTracker: Native = isAvailable ? NativeModules.RNSnowplowTracker as Native : JSSnowplowTracker;\n\nexport {\n RNSnowplowTracker\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport { isObject } from './utils';\nimport { logMessages } from './constants';\nimport type {\n SelfDescribing,\n EventContext,\n ScreenViewProps,\n StructuredProps,\n PageViewProps,\n TimingProps,\n ConsentGrantedProps,\n ConsentWithdrawnProps,\n EcommerceItem,\n EcommerceTransactionProps,\n DeepLinkReceivedProps,\n MessageNotificationProps,\n} from './types';\n\n/**\n * Validates whether an object is valid self-describing\n *\n * @param sd {Object} - the object to validate\n * @returns - boolean\n */\nfunction isValidSD(sd: SelfDescribing | EventContext): boolean {\n return isObject(sd)\n && typeof sd.schema === 'string'\n && isObject(sd.data);\n}\n\n/**\n * Validates whether an object is a valid array of contexts\n *\n * @param contexts {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateContexts(contexts: EventContext[]): Promise<boolean> {\n const isValid = Object.prototype.toString.call(contexts) === '[object Array]'\n && contexts\n .map((c) => isValidSD(c))\n .reduce((acc,curr) => acc !== false && curr, true);\n\n if (!isValid) {\n return Promise.reject(new Error(logMessages.context));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates whether an object is valid self describing\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateSelfDesc(argmap: SelfDescribing,): Promise<boolean> {\n if (!isValidSD(argmap)) {\n return Promise.reject(new Error(logMessages.selfDesc));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a screen view event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateScreenView(argmap: ScreenViewProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (typeof argmap.name !== 'string') {\n return Promise.reject(new Error(logMessages.screenViewReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a structured event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateStructured(argmap: StructuredProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.category !== 'string'\n || typeof argmap.action !== 'string'\n ) {\n return Promise.reject(new Error(logMessages.structuredReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a page-view event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validatePageView(argmap: PageViewProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (typeof argmap.pageUrl !== 'string') {\n return Promise.reject(new Error(logMessages.pageviewReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a timing event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateTiming(argmap: TimingProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.category !== 'string'\n || typeof argmap.variable !== 'string'\n || typeof argmap.timing !== 'number'\n ) {\n return Promise.reject(new Error(logMessages.timingReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a consent-granted event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateConsentGranted(argmap: ConsentGrantedProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.expiry !== 'string'\n || typeof argmap.documentId !== 'string'\n || typeof argmap.version !== 'string'\n ) {\n return Promise.reject(new Error(logMessages.consentGReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a consent-withdrawn event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateConsentWithdrawn(argmap: ConsentWithdrawnProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.all !== 'boolean'\n || typeof argmap.documentId !== 'string'\n || typeof argmap.version !== 'string'\n ) {\n return Promise.reject(new Error(logMessages.consentWReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a deep link received event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateDeepLinkReceived(argmap: DeepLinkReceivedProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.url !== 'string'\n ) {\n return Promise.reject(new Error(logMessages.deepLinkReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates a message notification event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateMessageNotification(argmap: MessageNotificationProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.title !== 'string'\n || typeof argmap.body !== 'string'\n || typeof argmap.trigger !== 'string'\n || !['push', 'location', 'calendar', 'timeInterval', 'other'].includes(argmap.trigger)\n ) {\n return Promise.reject(new Error(logMessages.messageNotificationReq));\n }\n\n return Promise.resolve(true);\n}\n\n/**\n * Validates whether an object is valid ecommerce-item\n *\n * @param item {Object} - the object to validate\n * @returns - boolean\n */\nfunction isValidEcomItem(item: EcommerceItem): boolean {\n if (\n isObject(item)\n && typeof item.sku === 'string'\n && typeof item.price === 'number'\n && typeof item.quantity === 'number'\n ) {\n return true;\n }\n return false;\n}\n\n/**\n * Validates an array of ecommerce-items\n *\n * @param items {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validItemsArg(items: EcommerceItem[]): boolean {\n return Object.prototype.toString.call(items) === '[object Array]'\n && items\n .map((i) => isValidEcomItem(i))\n .reduce((acc,curr) => acc !== false && curr, true);\n}\n\n/**\n * Validates an ecommerce-transaction event\n *\n * @param argmap {Object} - the object to validate\n * @returns - boolean promise\n */\nfunction validateEcommerceTransaction(argmap: EcommerceTransactionProps): Promise<boolean> {\n // validate type\n if (!isObject(argmap)) {\n return Promise.reject(new Error(logMessages.evType));\n }\n // validate required props\n if (\n typeof argmap.orderId !== 'string'\n || typeof argmap.totalValue !== 'number'\n || !validItemsArg(argmap.items)\n ) {\n return Promise.reject(new Error(logMessages.ecomReq));\n }\n\n return Promise.resolve(true);\n}\n\nexport {\n isValidSD,\n validateContexts,\n validateSelfDesc,\n validateScreenView,\n validateStructured,\n validatePageView,\n validateTiming,\n validateConsentGranted,\n validateConsentWithdrawn,\n isValidEcomItem,\n validItemsArg,\n validateEcommerceTransaction,\n validateDeepLinkReceived,\n validateMessageNotification\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport { isObject } from './utils';\nimport { isValidSD } from './events';\nimport { logMessages } from './constants';\nimport type {\n NetworkConfiguration,\n TrackerConfiguration,\n SessionConfiguration,\n EmitterConfiguration,\n SubjectConfiguration,\n GdprConfiguration,\n GCConfiguration,\n GlobalContext,\n InitTrackerConfiguration\n} from './types';\n\n\n/**\n * Configuration properties\n */\nconst networkProps = [\n 'endpoint',\n 'method',\n 'customPostPath',\n 'requestHeaders',\n];\nconst trackerProps= [\n 'appId',\n 'devicePlatform',\n 'base64Encoding',\n 'logLevel',\n 'applicationContext',\n 'platformContext',\n 'geoLocationContext',\n 'sessionContext',\n 'deepLinkContext',\n 'screenContext',\n 'screenViewAutotracking',\n 'lifecycleAutotracking',\n 'installAutotracking',\n 'exceptionAutotracking',\n 'diagnosticAutotracking',\n 'userAnonymisation'\n];\nconst sessionProps = [\n 'foregroundTimeout',\n 'backgroundTimeout'\n];\nconst emitterProps = [\n 'bufferOption',\n 'emitRange',\n 'threadPoolSize',\n 'byteLimitPost',\n 'byteLimitGet',\n 'serverAnonymisation',\n];\nconst subjectProps = [\n 'userId',\n 'networkUserId',\n 'domainUserId',\n 'useragent',\n 'ipAddress',\n 'timezone',\n 'language',\n 'screenResolution',\n 'screenViewport',\n 'colorDepth'\n];\nconst gdprProps = [\n 'basisForProcessing',\n 'documentId',\n 'documentVersion',\n 'documentDescription'\n];\nconst gcProps = [\n 'tag',\n 'globalContexts'\n];\n\n/**\n * Validates whether an object is of valid configuration given its default keys\n *\n * @param config {Object} - the object to validate\n * @param defaultKeys {Array} - the default keys to validate against\n * @returns - boolean\n */\nfunction isValidConfig<Type>(config: Type, defaultKeys: Array<string>): config is Type {\n return Object.keys(config).every(key => defaultKeys.includes(key));\n}\n\n/**\n * Validates the networkConfig\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidNetworkConf(config: NetworkConfiguration): boolean {\n if (\n !isObject(config)\n || !isValidConfig(config, networkProps)\n || typeof config.endpoint !== 'string'\n || !config.endpoint\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates the trackerConfig\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidTrackerConf(config: TrackerConfiguration): boolean {\n if (!isObject(config) || !isValidConfig(config, trackerProps)) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates the sessionConfig\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidSessionConf(config: SessionConfiguration): boolean {\n if (\n !isObject(config)\n || !isValidConfig(config, sessionProps)\n || !sessionProps.every(key => Object.keys(config as SessionConfiguration).includes(key))\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates the emitterConfig\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidEmitterConf(config: EmitterConfiguration): boolean {\n if (!isObject(config) || !isValidConfig(config, emitterProps)) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates whether an object is of ScreenSize type\n *\n * @param arr {Object} - the object to validate\n * @returns - boolean\n */\nfunction isScreenSize<Type>(arr: Type): boolean {\n return Array.isArray(arr)\n && arr.length === 2\n && arr.every(<Type>(n: Type) => typeof n === 'number');\n}\n\n/**\n * Validates the subjectConfig\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidSubjectConf(config: SubjectConfiguration): boolean {\n if (\n !isObject(config) || !isValidConfig(config, subjectProps)\n ) {\n return false;\n }\n\n // validating ScreenSize here to simplify array handling in bridge\n if (\n Object.prototype.hasOwnProperty.call(config, 'screenResolution')\n && config.screenResolution !== null\n && !isScreenSize(config.screenResolution as unknown)\n ) {\n return false;\n }\n\n if (\n Object.prototype.hasOwnProperty.call(config, 'screenViewport')\n && config.screenViewport !== null\n && !isScreenSize(config.screenViewport as unknown)\n ) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validates the gdprConfig\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidGdprConf(config: GdprConfiguration): boolean {\n if (\n !isObject(config)\n || !isValidConfig(config, gdprProps)\n || !gdprProps.every(key => Object.keys(config as GdprConfiguration).includes(key))\n || !['consent', 'contract', 'legal_obligation', 'legitimate_interests', 'public_task', 'vital_interests'].includes(config.basisForProcessing)\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates whether an object is of GlobalContext type\n *\n * @param gc {Object} - the object to validate\n * @returns - boolean\n */\nfunction isValidGC(gc: GlobalContext): boolean {\n return isObject(gc)\n && isValidConfig(gc, gcProps)\n && typeof gc.tag === 'string'\n && Array.isArray(gc.globalContexts)\n && gc.globalContexts.every(c => isValidSD(c));\n}\n\n/**\n * Validates the GCConfig (global contexts)\n *\n * @param config {Object} - the config to validate\n * @returns - boolean\n */\nfunction isValidGCConf(config: GCConfiguration): boolean {\n if (!Array.isArray(config)) {\n return false;\n }\n if (!config.every(gc => isValidGC(gc as GlobalContext))) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates the initTrackerConfiguration\n *\n * @param init {Object} - the config to validate\n * @returns - boolean promise\n */\nfunction initValidate(init: InitTrackerConfiguration): Promise<boolean> {\n if (typeof init.namespace !== 'string' || !init.namespace) {\n return Promise.reject(new Error(logMessages.namespace));\n }\n\n if (\n !Object.prototype.hasOwnProperty.call(init, 'networkConfig')\n || !isValidNetworkConf(init.networkConfig as NetworkConfiguration)\n ) {\n return Promise.reject(new Error(logMessages.network));\n }\n\n if (\n Object.prototype.hasOwnProperty.call(init, 'trackerConfig')\n && !isValidTrackerConf(init.trackerConfig as TrackerConfiguration)\n ) {\n return Promise.reject(new Error(logMessages.tracker));\n }\n\n if (\n Object.prototype.hasOwnProperty.call(init, 'sessionConfig')\n && (!isValidSessionConf(init.sessionConfig as SessionConfiguration))\n ) {\n return Promise.reject(new Error(logMessages.session));\n }\n\n if (\n Object.prototype.hasOwnProperty.call(init, 'emitterConfig')\n && !isValidEmitterConf(init.emitterConfig as EmitterConfiguration)\n ) {\n return Promise.reject(new Error(logMessages.emitter));\n }\n\n if (\n Object.prototype.hasOwnProperty.call(init, 'subjectConfig')\n && !isValidSubjectConf(init.subjectConfig as SubjectConfiguration)\n ) {\n return Promise.reject(new Error(logMessages.subject));\n }\n\n if (\n Object.prototype.hasOwnProperty.call(init, 'gdprConfig')\n && !isValidGdprConf(init.gdprConfig as GdprConfiguration)) {\n return Promise.reject(new Error(logMessages.gdpr));\n }\n\n if (\n Object.prototype.hasOwnProperty.call(init, 'gcConfig')\n && !isValidGCConf(init.gcConfig as GCConfiguration)) {\n return Promise.reject(new Error(logMessages.gc));\n }\n\n return Promise.resolve(true);\n}\n\nexport {\n isValidNetworkConf,\n isValidTrackerConf,\n isValidSessionConf,\n isValidEmitterConf,\n isValidSubjectConf,\n isValidGdprConf,\n isValidGCConf,\n isValidGC,\n isScreenSize,\n initValidate,\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport { RNSnowplowTracker } from './native';\nimport { logMessages } from './constants';\nimport {\n validateContexts,\n validateSelfDesc,\n validateScreenView,\n validateStructured,\n validatePageView,\n validateTiming,\n validateConsentGranted,\n validateConsentWithdrawn,\n validateEcommerceTransaction,\n validateDeepLinkReceived,\n validateMessageNotification\n} from './events';\nimport type {\n SelfDescribing,\n EventContext,\n ScreenViewProps,\n StructuredProps,\n PageViewProps,\n TimingProps,\n ConsentGrantedProps,\n ConsentWithdrawnProps,\n EcommerceTransactionProps,\n DeepLinkReceivedProps,\n MessageNotificationProps,\n} from './types';\n\n/**\n * Tracks a self-describing event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackSelfDescribingEvent(\n namespace: string | null,\n argmap: SelfDescribing,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateSelfDesc(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackSelfDescribingEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts\n }))\n .catch((error) => {\n throw new Error(`${logMessages.trackSelfDesc} ${error.message}`);\n });\n}\n\n/**\n * Tracks a screen-view event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackScreenViewEvent(\n namespace: string | null,\n argmap: ScreenViewProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateScreenView(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackScreenViewEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackScreenView} ${error.message}`);\n });\n}\n\n/**\n * Tracks a structured event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackStructuredEvent(\n namespace: string | null,\n argmap: StructuredProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateStructured(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackStructuredEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackStructured} ${error.message}`);\n });\n}\n\n/**\n * Tracks a page-view event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackPageViewEvent(\n namespace: string | null,\n argmap: PageViewProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validatePageView(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackPageViewEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackPageView} ${error.message}`);\n });\n}\n\n/**\n * Tracks a timing event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackTimingEvent(\n namespace: string | null,\n argmap: TimingProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateTiming(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackTimingEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackTiming} ${error.message}`);\n });\n}\n\n/**\n * Tracks a consent-granted event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackConsentGrantedEvent(\n namespace: string | null,\n argmap: ConsentGrantedProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateConsentGranted(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackConsentGrantedEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackConsentGranted} ${error.message}`);\n });\n}\n\n/**\n * Tracks a consent-withdrawn event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackConsentWithdrawnEvent(\n namespace: string | null,\n argmap: ConsentWithdrawnProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateConsentWithdrawn(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackConsentWithdrawnEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackConsentWithdrawn} ${error.message}`);\n });\n}\n\n/**\n * Tracks an ecommerce-transaction event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackEcommerceTransactionEvent(\n namespace: string | null,\n argmap: EcommerceTransactionProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateEcommerceTransaction(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackEcommerceTransactionEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackEcommerceTransaction} ${error.message}`);\n });\n}\n\n/**\n * Tracks a deep link received event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackDeepLinkReceivedEvent(\n namespace: string | null,\n argmap: DeepLinkReceivedProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateDeepLinkReceived(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackDeepLinkReceivedEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackDeepLinkReceived} ${error.message}`);\n });\n}\n\n/**\n * Tracks a message notification event\n *\n * @param namespace {string} - the tracker namespace\n * @param argmap {Object} - the event data\n * @param contexts {Array}- the event contexts\n * @returns {Promise}\n */\nfunction trackMessageNotificationEvent(\n namespace: string | null,\n argmap: MessageNotificationProps,\n contexts: EventContext[] = []\n): Promise<void> {\n return <Promise<void>>validateMessageNotification(argmap)\n .then(() => validateContexts(contexts))\n .then(() =>\n <Promise<void>>RNSnowplowTracker.trackMessageNotificationEvent({\n tracker: namespace,\n eventData: argmap,\n contexts: contexts}))\n .catch((error) => {\n throw new Error(`${logMessages.trackMessageNotification} ${error.message}`);\n });\n}\n\nexport {\n trackSelfDescribingEvent,\n trackScreenViewEvent,\n trackStructuredEvent,\n trackPageViewEvent,\n trackTimingEvent,\n trackConsentGrantedEvent,\n trackConsentWithdrawnEvent,\n trackEcommerceTransactionEvent,\n trackDeepLinkReceivedEvent,\n trackMessageNotificationEvent\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport { RNSnowplowTracker } from './native';\nimport { logMessages } from './constants';\nimport {\n isScreenSize,\n isValidSubjectConf\n} from './configurations';\nimport type {\n ScreenSize,\n SubjectConfiguration\n} from './types';\n\n/**\n * Sets the userId of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newUid {string | null} - the new userId\n * @returns - Promise\n */\nfunction setUserId(namespace: string, newUid: string | null): Promise<void> {\n if (!(newUid === null || typeof newUid === 'string')) {\n return Promise.reject(new Error(logMessages.setUserId));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setUserId({\n tracker:namespace,\n userId: newUid\n }));\n}\n\n/**\n * Sets the networkUserId of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newNuid {string | null} - the new networkUserId\n * @returns - Promise\n */\nfunction setNetworkUserId(namespace: string, newNuid: string | null): Promise<void> {\n if (!(newNuid === null || typeof newNuid === 'string')) {\n return Promise.reject(new Error(logMessages.setNetworkUserId));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setNetworkUserId({\n tracker:namespace,\n networkUserId: newNuid\n }));\n}\n\n/**\n * Sets the domainUserId of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newDuid {string | null} - the new domainUserId\n * @returns - Promise\n */\nfunction setDomainUserId(namespace: string, newDuid: string | null): Promise<void> {\n if (!(newDuid === null || typeof newDuid === 'string')) {\n return Promise.reject(new Error(logMessages.setDomainUserId));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setDomainUserId({\n tracker:namespace,\n domainUserId: newDuid\n }));\n}\n\n/**\n * Sets the ipAddress of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newIp {string | null} - the new ipAddress\n * @returns - Promise\n */\nfunction setIpAddress(namespace: string, newIp: string | null): Promise<void> {\n if (!(newIp === null || typeof newIp === 'string')) {\n return Promise.reject(new Error(logMessages.setIpAddress));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setIpAddress({\n tracker:namespace,\n ipAddress: newIp\n }));\n}\n\n/**\n * Sets the useragent of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newUagent {string | null} - the new useragent\n * @returns - Promise\n */\nfunction setUseragent(namespace: string, newUagent: string | null): Promise<void> {\n if (!(newUagent === null || typeof newUagent === 'string')) {\n return Promise.reject(new Error(logMessages.setUseragent));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setUseragent({\n tracker:namespace,\n useragent: newUagent\n }));\n}\n\n/**\n * Sets the timezone of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newTz {string | null} - the new timezone\n * @returns - Promise\n */\nfunction setTimezone(namespace: string, newTz: string | null): Promise<void> {\n if (!(newTz === null || typeof newTz === 'string')) {\n return Promise.reject(new Error(logMessages.setTimezone));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setTimezone({\n tracker:namespace,\n timezone: newTz\n }));\n}\n\n/**\n * Sets the language of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newLang {string | null} - the new language\n * @returns - Promise\n */\nfunction setLanguage(namespace: string, newLang: string | null): Promise<void> {\n if (!(newLang === null || typeof newLang === 'string')) {\n return Promise.reject(new Error(logMessages.setLanguage));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setLanguage({\n tracker:namespace,\n language: newLang\n }));\n}\n\n/**\n * Sets the screenResolution of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newRes {ScreenSize | null} - the new screenResolution\n * @returns - Promise\n */\nfunction setScreenResolution(namespace: string, newRes: ScreenSize | null): Promise<void> {\n if (!(newRes === null || isScreenSize(newRes))) {\n return Promise.reject(new Error(logMessages.setScreenResolution));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setScreenResolution({\n tracker:namespace,\n screenResolution: newRes\n }));\n}\n\n/**\n * Sets the screenViewport of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newView {ScreenSize | null} - the new screenViewport\n * @returns - Promise\n */\nfunction setScreenViewport(namespace: string, newView: ScreenSize | null): Promise<void> {\n if (!(newView === null || isScreenSize(newView))) {\n return Promise.reject(new Error(logMessages.setScreenViewport));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setScreenViewport({\n tracker:namespace,\n screenViewport: newView\n }));\n}\n\n/**\n * Sets the colorDepth of the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param newColorD {number | null} - the new colorDepth\n * @returns - Promise\n */\nfunction setColorDepth(namespace: string, newColorD: number | null): Promise<void> {\n if (!(newColorD === null || typeof newColorD === 'number')) {\n return Promise.reject(new Error(logMessages.setColorDepth));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.setColorDepth({\n tracker:namespace,\n colorDepth: newColorD\n }));\n}\n\nconst setterMap = {\n userId: setUserId,\n networkUserId: setNetworkUserId,\n domainUserId: setDomainUserId,\n ipAddress: setIpAddress,\n useragent: setUseragent,\n timezone: setTimezone,\n language: setLanguage,\n screenResolution: setScreenResolution,\n screenViewport: setScreenViewport,\n colorDepth: setColorDepth\n} as Record<keyof SubjectConfiguration, <Type>(namespace: string, x: Type | null) => Promise<void>>;\n\n/**\n * Sets the tracker subject\n *\n * @param namespace {string} - the tracker namespace\n * @param config {SubjectConfiguration} - the new subject data\n * @returns - Promise\n */\nfunction setSubjectData(\n namespace: string,\n config: SubjectConfiguration\n): Promise<void> {\n if (!isValidSubjectConf(config)) {\n return Promise.reject(new Error(`${logMessages.setSubjectData} ${logMessages.subject}`));\n }\n\n const promises = Object.keys(config)\n .map((k) => {\n const fun = setterMap[k];\n return fun ? fun(namespace, config[k]) : undefined;\n })\n .filter((f) => f !== undefined);\n\n // to use Promise.all (Promise.allSettled not supported in all RN versions)\n const safePromises = promises\n .map((p) => (p as Promise<void>)\n .then((x) => Object.assign({\n status: 'fulfilled',\n value: x}) as PromiseFulfilledResult<void>)\n .catch((err) => Object.assign({\n status: 'rejected',\n reason: err.message as string}) as PromiseRejectedResult));\n\n return <Promise<void>>Promise.all(safePromises).then((outcomes) => {\n const anyReasons = outcomes.filter((res) => res.status === 'rejected') as PromiseRejectedResult[];\n if (anyReasons.length > 0) {\n const allReasons = anyReasons\n .reduce((acc, curr) => acc + ':' + curr.reason, logMessages.setSubjectData);\n throw new Error(allReasons);\n }\n return true;\n });\n}\n\nexport {\n setUserId,\n setNetworkUserId,\n setDomainUserId,\n setIpAddress,\n setUseragent,\n setTimezone,\n setLanguage,\n setScreenResolution,\n setScreenViewport,\n setColorDepth,\n setSubjectData\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport { RNSnowplowTracker } from './native';\nimport { initValidate, isValidGC } from './configurations';\nimport { logMessages } from './constants';\nimport * as tracker from './tracker';\nimport * as subject from './subject';\n\nimport type {\n InitTrackerConfiguration,\n SubjectConfiguration,\n SelfDescribing,\n EventContext,\n ScreenViewProps,\n StructuredProps,\n PageViewProps,\n TimingProps,\n ConsentGrantedProps,\n ConsentWithdrawnProps,\n EcommerceTransactionProps,\n GlobalContext,\n ScreenSize,\n DeepLinkReceivedProps,\n MessageNotificationProps,\n} from './types';\n\n/**\n * Create a tracker from specified initial configuration.\n *\n * @param initConfig {Object} - The initial tracker configuration\n * @returns - A promise fullfilled if the tracker is initialized\n */\nfunction createTracker(initConfig: InitTrackerConfiguration): Promise<void> {\n return <Promise<void>>initValidate(initConfig)\n .then(() => <Promise<void>>RNSnowplowTracker.createTracker(initConfig))\n .catch((error) => {\n throw new Error(`${logMessages.createTracker} ${error.message}.`);\n });\n}\n\n/**\n * Removes the tracker with given namespace\n *\n * @param trackerNamespace {string} - The tracker namespace\n * @returns - A boolean promise\n */\nfunction removeTracker(trackerNamespace: string): Promise<boolean> {\n if (typeof trackerNamespace !== 'string') {\n return Promise.reject(new Error(logMessages.removeTracker));\n }\n return <Promise<boolean>>Promise.resolve(RNSnowplowTracker.removeTracker({tracker:trackerNamespace}));\n}\n\n/**\n * Removes all existing trackers\n *\n * @returns - A void promise\n */\nfunction removeAllTrackers(): Promise<boolean> {\n return <Promise<boolean>>Promise.resolve(RNSnowplowTracker.removeAllTrackers());\n}\n\n/**\n * Returns a function to track a SelfDescribing event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a SelfDescribing event\n */\nfunction trackSelfDescribingEvent(namespace: string) {\n return function (\n argmap: SelfDescribing,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackSelfDescribingEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track a ScreenView event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a ScreenView event\n */\nfunction trackScreenViewEvent(namespace: string) {\n return function (\n argmap: ScreenViewProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackScreenViewEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track a Structured event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a Structured event\n */\nfunction trackStructuredEvent(namespace: string) {\n return function (\n argmap: StructuredProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackStructuredEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track a PageView event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a PageView event\n */\nfunction trackPageViewEvent(namespace: string) {\n return function (\n argmap: PageViewProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackPageViewEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track a Timing event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a Timing event\n */\nfunction trackTimingEvent(namespace: string) {\n return function (\n argmap: TimingProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackTimingEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track a ConsentGranted event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a ConsentGranted event\n */\nfunction trackConsentGrantedEvent(namespace: string) {\n return function (\n argmap: ConsentGrantedProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackConsentGrantedEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track a ConsentWithdrawn event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track a ConsentWithdrawn event\n */\nfunction trackConsentWithdrawnEvent(namespace: string) {\n return function (\n argmap: ConsentWithdrawnProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackConsentWithdrawnEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track an EcommerceTransaction event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track an EcommerceTransaction event\n */\nfunction trackEcommerceTransactionEvent(namespace: string) {\n return function (\n argmap: EcommerceTransactionProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackEcommerceTransactionEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track an DeepLinkReceived event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track an DeepLinkReceived event\n */\nfunction trackDeepLinkReceivedEvent(namespace: string) {\n return function (\n argmap: DeepLinkReceivedProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackDeepLinkReceivedEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to track an MessageNotification event by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to track an MessageNotification event\n */\nfunction trackMessageNotificationEvent(namespace: string) {\n return function (\n argmap: MessageNotificationProps,\n contexts: EventContext[] = []\n ): Promise<void> {\n return tracker.trackMessageNotificationEvent(namespace, argmap, contexts);\n };\n}\n\n/**\n * Returns a function to remove global contexts by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to remove global contexts\n */\nfunction removeGlobalContexts(namespace:string) {\n return function (tag: string): Promise<void> {\n if (typeof tag !== 'string') {\n return Promise.reject(new Error(`${logMessages.removeGlobalContexts} ${logMessages.gcTagType}`));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.removeGlobalContexts({tracker:namespace, removeTag: tag}));\n };\n}\n\n/**\n * Returns a function to add global contexts by a tracker\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to add global contexts\n */\nfunction addGlobalContexts(namespace:string) {\n return function (gc: GlobalContext): Promise<void> {\n if (!isValidGC(gc)) {\n return Promise.reject(new Error(`${logMessages.addGlobalContexts} ${logMessages.gcType}`));\n }\n return <Promise<void>>Promise.resolve(RNSnowplowTracker.addGlobalContexts({tracker:namespace, addGlobalContext: gc}));\n };\n}\n\n/**\n * Returns a function to set the subject userId\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the userId\n */\nfunction setUserId(namespace:string) {\n return function (newUid: string | null): Promise<void> {\n return subject.setUserId(namespace, newUid);\n };\n}\n\n/**\n * Returns a function to set the subject networkUserId\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the networkUserId\n */\nfunction setNetworkUserId(namespace:string) {\n return function (newNuid: string | null): Promise<void> {\n return subject.setNetworkUserId(namespace, newNuid);\n };\n}\n\n/**\n * Returns a function to set the subject domainUserId\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the domainUserId\n */\nfunction setDomainUserId(namespace:string) {\n return function (newDuid: string | null): Promise<void> {\n return subject.setDomainUserId(namespace, newDuid);\n };\n}\n\n/**\n * Returns a function to set the subject ipAddress\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the ipAddress\n */\nfunction setIpAddress(namespace:string) {\n return function (newIp: string | null): Promise<void> {\n return subject.setIpAddress(namespace, newIp);\n };\n}\n\n/**\n * Returns a function to set the subject useragent\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the useragent\n */\nfunction setUseragent(namespace:string) {\n return function (newUagent: string | null): Promise<void> {\n return subject.setUseragent(namespace, newUagent);\n };\n}\n\n/**\n * Returns a function to set the subject timezone\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the timezone\n */\nfunction setTimezone(namespace:string) {\n return function (newTz: string | null): Promise<void> {\n return subject.setTimezone(namespace, newTz);\n };\n}\n\n/**\n * Returns a function to set the subject language\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the language\n */\nfunction setLanguage(namespace:string) {\n return function (newLang: string | null): Promise<void> {\n return subject.setLanguage(namespace, newLang);\n };\n}\n\n/**\n * Returns a function to set the subject screenResolution\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the screenResolution\n */\nfunction setScreenResolution(namespace:string) {\n return function (newRes: ScreenSize | null): Promise<void> {\n return subject.setScreenResolution(namespace, newRes);\n };\n}\n\n/**\n * Returns a function to set the subject screenViewport\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the screenViewport\n */\nfunction setScreenViewport(namespace:string) {\n return function (newView: ScreenSize | null): Promise<void> {\n return subject.setScreenViewport(namespace, newView);\n };\n}\n\n/**\n * Returns a function to set the subject colorDepth\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set the colorDepth\n */\nfunction setColorDepth(namespace:string) {\n return function (newColorD: number | null): Promise<void> {\n return subject.setColorDepth(namespace, newColorD);\n };\n}\n\n/**\n * Returns a function to set subject data\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to set subject data\n */\nfunction setSubjectData(namespace:string) {\n return function (config: SubjectConfiguration): Promise<void> {\n return subject.setSubjectData(namespace, config);\n };\n}\n\n/**\n * Returns a function to get the current session userId\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to get the session userId\n */\nfunction getSessionUserId(namespace: string) {\n return function (): Promise<string> {\n return <Promise<string>>Promise\n .resolve(RNSnowplowTracker.getSessionUserId({tracker: namespace}));\n };\n}\n\n/**\n * Returns a function to get the current sessionId\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to get the sessionId\n */\nfunction getSessionId(namespace: string) {\n return function (): Promise<string> {\n return <Promise<string>>Promise\n .resolve(RNSnowplowTracker.getSessionId({tracker: namespace}));\n };\n}\n\n/**\n * Returns a function to get the current session index\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to get the session index\n */\nfunction getSessionIndex(namespace: string) {\n return function (): Promise<number> {\n return <Promise<number>>Promise\n .resolve(RNSnowplowTracker.getSessionIndex({tracker: namespace}));\n };\n}\n\n/**\n * Returns a function to get whether the app is in background\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to get whether the app isInBackground\n */\nfunction getIsInBackground(namespace: string) {\n return function (): Promise<boolean> {\n return <Promise<boolean>>Promise\n .resolve(RNSnowplowTracker.getIsInBackground({tracker: namespace}));\n };\n}\n\n/**\n * Returns a function to get the background index\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to get the backgroundIndex\n */\nfunction getBackgroundIndex(namespace: string) {\n return function (): Promise<number> {\n return <Promise<number>>Promise\n .resolve(RNSnowplowTracker.getBackgroundIndex({tracker: namespace}));\n };\n}\n\n/**\n * Returns a function to get the foreground index\n *\n * @param namespace {string} - The tracker namespace\n * @returns - A function to get the foregroundIndex\n */\nfunction getForegroundIndex(namespace: string) {\n return function (): Promise<number> {\n return <Promise<number>>Promise\n .resolve(RNSnowplowTracker.getForegroundIndex({tracker: namespace}));\n };\n}\n\nexport {\n createTracker,\n removeTracker,\n removeAllTrackers,\n trackSelfDescribingEvent,\n trackScreenViewEvent,\n trackStructuredEvent,\n trackPageViewEvent,\n trackTimingEvent,\n trackConsentGrantedEvent,\n trackConsentWithdrawnEvent,\n trackEcommerceTransactionEvent,\n trackDeepLinkReceivedEvent,\n trackMessageNotificationEvent,\n removeGlobalContexts,\n addGlobalContexts,\n setUserId,\n setNetworkUserId,\n setDomainUserId,\n setIpAddress,\n setUseragent,\n setTimezone,\n setLanguage,\n setScreenResolution,\n setScreenViewport,\n setColorDepth,\n setSubjectData,\n getSessionUserId,\n getSessionId,\n getSessionIndex,\n getIsInBackground,\n getBackgroundIndex,\n getForegroundIndex,\n};\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport {\n trackPageViewEvent,\n trackScreenViewEvent,\n trackSelfDescribingEvent,\n trackStructuredEvent,\n} from './tracker';\nimport type {\n ScreenViewProps,\n SelfDescribing,\n StructuredProps,\n WebViewPageViewEvent,\n WebViewMessage,\n} from './types';\nimport { errorHandler } from './utils';\n\nfunction forEachTracker(\n trackers: Array<string> | undefined,\n iterator: (namespace: string | null) => void\n): void {\n if (trackers && trackers.length > 0) {\n trackers.forEach(iterator);\n } else {\n iterator(null);\n }\n}\n\n/**\n * Enables tracking events from apps rendered in react-native-webview components.\n * The apps need to use the Snowplow WebView tracker to track the events.\n * \n * To subscribe for the events, set the `onMessage` attribute:\n * <WebView onMessage={getWebViewCallback()} ... />\n * \n * @returns Callback to subscribe for events from Web views tracked using the Snowplow WebView tracker.\n */\nexport function getWebViewCallback() {\n return (message: { nativeEvent: { data: string } }): void => {\n const data = JSON.parse(message.nativeEvent.data) as WebViewMessage;\n switch (data.command) {\n case 'trackSelfDescribingEvent':\n forEachTracker(data.trackers, (namespace) => {\n trackSelfDescribingEvent(\n namespace,\n data.event as SelfDescribing,\n data.context || []\n ).catch((error) => {\n errorHandler(error);\n });\n });\n break;\n\n case 'trackStructEvent':\n forEachTracker(data.trackers, (namespace) => {\n trackStructuredEvent(\n namespace,\n data.event as StructuredProps,\n data.context || []\n ).catch((error) => {\n errorHandler(error);\n });\n });\n break;\n\n case 'trackPageView':\n forEachTracker(data.trackers, (namespace) => {\n const event = data.event as WebViewPageViewEvent;\n trackPageViewEvent(namespace, {\n pageTitle: event.title ?? '',\n pageUrl: event.url ?? '',\n referrer: event.referrer,\n }).catch((error) => {\n errorHandler(error);\n });\n });\n break;\n\n case 'trackScreenView':\n forEachTracker(data.trackers, (namespace) => {\n trackScreenViewEvent(\n namespace,\n data.event as ScreenViewProps,\n data.context || []\n ).catch((error) => {\n errorHandler(error);\n });\n });\n break;\n }\n };\n}\n","/*\n * Copyright (c) 2020-2023 Snowplow Analytics Ltd. All rights reserved.\n *\n * This program is licensed to you under the Apache License Version 2.0,\n * and you may not use this file except in compliance with the Apache License Version 2.0.\n * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the Apache License Version 2.0 is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n */\n\n'use strict';\n\nimport * as api from './api';\nimport { safeWait, safeWaitCallback, errorHandler } from './utils';\nimport type {\n NetworkConfiguration,\n TrackerControllerConfiguration,\n ReactNativeTracker\n} from './types';\nimport { getWebViewCallback } from './webViewInterface';\n\n/**\n * Creates a React Native Tracker object\n *\n * @param namespace {string} - The tracker namespace\n * @param networkConfig {Object} - The network configuration\n * @param control {Array} - The tracker controller configuration\n * @returns The tracker object\n */\nfunction createTracker(\n namespace: string,\n networkConfig: NetworkConfiguration,\n controllerConfig: TrackerControllerConfiguration = {}\n): ReactNativeTracker {\n // initTrackerPromise\n const initTrackerPromise: Promise<void> = Promise.resolve(\n api.createTracker({\n namespace,\n networkConfig,\n ...controllerConfig\n })\n );\n\n // mkMethod creates methods subscribed to the initTrackerPromise\n const mkMethod = safeWait(initTrackerPromise, errorHandler);\n\n // mkCallback creates callbacks subscribed to the initTrackerPromise\n const mkCallback = safeWaitCallback(initTrackerPromise, errorHandler);\n\n // track methods\n const trackSelfDescribingEvent = mkMethod(api.trackSelfDescribingEvent(namespace));\n const trackScreenViewEvent = mkMethod(api.trackScreenViewEvent(namespace));\n const trackStructuredEvent = mkMethod(api.trackStructuredEvent(namespace));\n const trackPageViewEvent = mkMethod(api.trackPageViewEvent(namespace));\n const trackTimingEvent = mkMethod(api.trackTimingEvent(namespace));\n const trackConsentGrantedEvent = mkMethod(api.trackConsentGrantedEvent(namespace));\n const trackConsentWithdrawnEvent = mkMethod(api.trackConsentWithdrawnEvent(namespace));\n const trackEcommerceTransactionEvent = mkMethod(api.trackEcommerceTransactionEvent(namespace));\n const trackDeepLinkReceivedEvent = mkMethod(api.trackDeepLinkReceivedEvent(namespace));\n const trackMessageNotificationEvent = mkMethod(api.trackMessageNotificationEvent(namespace));\n // Global Contexts\n const removeGlobalContexts = mkMethod(api.removeGlobalContexts(namespace));\n const addGlobalContexts = mkMethod(api.addGlobalContexts(namespace));\n // setters\n const setUserId = mkMethod(api.setUserId(namespace));\n const setNetworkUserId = mkMethod(api.setNetworkUserId(namespace));\n const setDomainUserId = mkMethod(api.setDomainUserId(namespace));\n const setIpAddress = mkMethod(api.setIpAddress(namespace));\n const setUseragent = mkMethod(api.setUseragent(namespace));\n const setTimezone = mkMethod(api.setTimezone(namespace));\n const setLanguage = mkMethod(api.setLanguage(namespace));\n const setScreenResolution = mkMethod(api.setScreenResolution(namespace));\n const setScreenViewport = mkMethod(api.setScreenViewport(namespace));\n const setColorDepth = mkMethod(api.setColorDepth(namespace));\n const setSubjectData = mkMethod(api.setSubjectData(namespace));\n\n // callbacks\n const getSessionUserId = mkCallback(api.getSessionUserId(namespace));\n const getSessionId = mkCallback(api.getSessionId(namespace));\n const getSessionIndex = mkCallback(api.getSessionIndex(namespace));\n const getIsInBackground = mkCallback(api.getIsInBackground(namespace));\n const getBackgroundIndex = mkCallback(api.getBackgroundIndex(namespace));\n const getForegroundIndex = mkCallback(api.getForegroundIndex(namespace));\n\n return Object.freeze({\n trackSelfDescribingEvent,\n trackScreenViewEvent,\n trackStructuredEvent,\n trackPageViewEvent,\n trackTimingEvent,\n trackConsentGrantedEvent,\n trackConsentWithdrawnEvent,\n trackEcommerceTransactionEvent,\n trackDeepLinkReceivedEvent,\n trackMessageNotificationEvent,\n removeGlobalContexts,\n addGlobalContexts,\n setUserId,\n setNetworkUserId,\n setDomainUserId,\n setIpAddress,\n setUseragent,\n setTimezone,\n setLanguage,\n setScreenResolution,\n setScreenViewport,\n setColorDepth,\n setSubjectData,\n getSessionUserId,\n getSessionId,\n getSessionIndex,\n getIsInBackground,\n getBackgroundIndex,\n getForegroundIndex,\n });\n}\n\n/**\n * Removes a tracker given its namespace\n *\n * @param trackerNamespace {string}\n * @returns - A boolean promise\n */\nfunction removeTracker(trackerNamespace: string): Promise<boolean> {\n return <Promise<boolean>>api.removeTracker(trackerNamespace)\n .catch((e) => errorHandler(e));\n}\n\n/**\n * Removes all trackers\n *\n * @returns - A boolean promise\n */\nfunction removeAllTrackers(): Promise<boolean> {\n return <Promise<boolean>>api.removeAllTrackers()\n .catch((e) => errorHandler(e));\n}\n\n\nexport {\n createTracker,\n removeTracker,\n removeAllTrackers,\n getWebViewCallback,\n};\n\nexport type {\n ReactNativeTracker,\n TrackerControllerConfiguration,\n NetworkConfiguration,\n TrackerConfiguration,\n SessionConfiguration,\n EmitterConfiguration,\n SubjectConfiguration,\n GdprConfiguration,\n GCConfiguration,\n SelfDescribing,\n EventContext,\n ScreenViewProps,\n StructuredProps,\n PageViewProps,\n TimingProps,\n ConsentGrantedProps,\n ConsentWithdrawnProps,\n EcommerceTransactionProps,\n DeepLinkReceivedProps,\n MessageNotificationProps,\n EcommerceItem,\n ConsentDocument,\n GlobalContext,\n HttpMethod,\n DevicePlatform,\n LogLevel,\n Basis,\n BufferOption,\n ScreenSize,\n Trigger\n} from './types';\n"],"names":["createTracker","removeTracker","removeAllTrackers","trackSelfDescribingEvent","trackStructuredEvent","trackScreenViewEvent","uuid","trackPageViewEvent","trackTimingEvent","trackConsentGrantedEvent","trackConsentWithdrawnEvent","trackEcommerceTransactionEvent","trackDeepLinkReceivedEvent","trackMessageNotificationEvent","removeGlobalContexts","addGlobalContexts","setUserId","setNetworkUserId","setDomainUserId","setIpAddress","setUseragent","setTimezone","setLanguage","setScreenResolution","setScreenViewport","setColorDepth","getSessionUserId","getSessionId","getSessionIndex","getIsInBackground","getBackgroundIndex","getForegroundIndex","setSubjectData","tracker.trackSelfDescribingEvent","tracker.trackScreenViewEvent","tracker.trackStructuredEvent","tracker.trackPageViewEvent","tracker.trackTimingEvent","tracker.trackConsentGrantedEvent","tracker.trackConsentWithdrawnEvent","tracker.trackEcommerceTransactionEvent","tracker.trackDeepLinkReceivedEvent","tracker.trackMessageNotificationEvent","subject.setUserId","subject.setNetworkUserId","subject.setDomainUserId","subject.setIpAddress","subject.setUseragent","subject.setTimezone","subject.setLanguage","subject.setScreenResolution","subject.setScreenViewport","subject.setColorDepth","subject.setSubjectData","api.createTracker","api.trackSelfDescribingEvent","api.trackScreenViewEvent","api.trackStructuredEvent","api.trackPageViewEvent","api.trackTimingEvent","api.trackConsentGrantedEvent","api.trackConsentWithdrawnEvent","api.trackEcommerceTransactionEvent","api.trackDeepLinkReceivedEvent","api.trackMessageNotificationEvent","api.removeGlobalContexts","api.addGlobalContexts","api.setUserId","api.setNetworkUserId","api.setDomainUserId","api.setIpAddress","api.setUseragent","api.setTimezone","api.setLanguage","api.setScreenResolution","api.setScreenViewport","api.setColorDepth","api.setSubjectData","api.getSessionUserId","api.getSessionId","api.getSessionIndex","api.getIsInBackground","api.getBackgroundIndex","api.getForegroundIndex","api.removeTracker","api.removeAllTrackers"],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- //
2
- // RNSnowplowTracker.h
3
- //
4
- // Copyright (c) 2021-2023 Snowplow Analytics Ltd. All rights reserved.
5
- //
6
- // This program is licensed to you under the Apache License Version 2.0,
7
- // and you may not use this file except in compliance with the Apache License
8
- // Version 2.0. You may obtain a copy of the Apache License Version 2.0 at
9
- // http://www.apache.org/licenses/LICENSE-2.0.
10
- //
11
- // Unless required by applicable law or agreed to in writing,
12
- // software distributed under the Apache License Version 2.0 is distributed on
13
- // an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
14
- // express or implied. See the Apache License Version 2.0 for the specific
15
- // language governing permissions and limitations there under.
16
- //
17
- // Copyright: Copyright (c) 2023 Snowplow Analytics Ltd
18
- // License: Apache License Version 2.0
19
- //
20
-
21
- #if __has_include("RCTBridgeModule.h")
22
- #import "RCTBridgeModule.h"
23
- #else
24
- #import <React/RCTBridgeModule.h>
25
- #endif
26
-
27
- #import <Foundation/Foundation.h>
28
- @class SPTracker;
29
-
30
- @interface RNSnowplowTracker : NSObject <RCTBridgeModule>
31
-
32
- @property (nonatomic, strong) SPTracker *tracker;
33
-
34
- @end