@snowplow/react-native-tracker 1.4.0 → 2.0.0

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