react-native-nitro-amplitude 0.1.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.
- package/.watchmanconfig +6 -0
- package/LICENSE +21 -0
- package/README.md +139 -0
- package/android/CMakeLists.txt +34 -0
- package/android/build.gradle +85 -0
- package/android/consumer-rules.pro +35 -0
- package/android/gradle.properties +4 -0
- package/android/src/main/cpp/AndroidAmplitudeAdapterCpp.cpp +126 -0
- package/android/src/main/cpp/AndroidAmplitudeAdapterCpp.hpp +48 -0
- package/android/src/main/cpp/cpp-adapter.cpp +9 -0
- package/android/src/main/java/com/nitroamplitude/AndroidAmplitudeAdapter.kt +147 -0
- package/android/src/main/java/com/nitroamplitude/NitroAmplitudePackage.kt +24 -0
- package/app.plugin.js +36 -0
- package/cpp/bindings/HybridAmplitudeContext.cpp +83 -0
- package/cpp/bindings/HybridAmplitudeContext.hpp +29 -0
- package/cpp/bindings/HybridAmplitudeStorage.cpp +163 -0
- package/cpp/bindings/HybridAmplitudeStorage.hpp +38 -0
- package/cpp/bindings/HybridAmplitudeWorker.cpp +162 -0
- package/cpp/bindings/HybridAmplitudeWorker.hpp +74 -0
- package/cpp/core/NativeAmplitudeAdapter.hpp +44 -0
- package/ios/IOSAmplitudeAdapterCpp.hpp +37 -0
- package/ios/IOSAmplitudeAdapterCpp.mm +155 -0
- package/lib/commonjs/AmplitudeContext.nitro.js +6 -0
- package/lib/commonjs/AmplitudeContext.nitro.js.map +1 -0
- package/lib/commonjs/AmplitudeStorage.nitro.js +6 -0
- package/lib/commonjs/AmplitudeStorage.nitro.js.map +1 -0
- package/lib/commonjs/AmplitudeWorker.nitro.js +6 -0
- package/lib/commonjs/AmplitudeWorker.nitro.js.map +1 -0
- package/lib/commonjs/analytics/campaign/campaign-tracker.js +105 -0
- package/lib/commonjs/analytics/campaign/campaign-tracker.js.map +1 -0
- package/lib/commonjs/analytics/campaign/types.js +6 -0
- package/lib/commonjs/analytics/campaign/types.js.map +1 -0
- package/lib/commonjs/analytics/config.js +283 -0
- package/lib/commonjs/analytics/config.js.map +1 -0
- package/lib/commonjs/analytics/cookie-migration/index.js +59 -0
- package/lib/commonjs/analytics/cookie-migration/index.js.map +1 -0
- package/lib/commonjs/analytics/index.js +95 -0
- package/lib/commonjs/analytics/index.js.map +1 -0
- package/lib/commonjs/analytics/migration/remnant-data-migration.js +177 -0
- package/lib/commonjs/analytics/migration/remnant-data-migration.js.map +1 -0
- package/lib/commonjs/analytics/nitro-transport.js +31 -0
- package/lib/commonjs/analytics/nitro-transport.js.map +1 -0
- package/lib/commonjs/analytics/plugins/context.js +140 -0
- package/lib/commonjs/analytics/plugins/context.js.map +1 -0
- package/lib/commonjs/analytics/react-native-client.js +352 -0
- package/lib/commonjs/analytics/react-native-client.js.map +1 -0
- package/lib/commonjs/analytics/storage/local-storage.js +73 -0
- package/lib/commonjs/analytics/storage/local-storage.js.map +1 -0
- package/lib/commonjs/analytics/types.js +175 -0
- package/lib/commonjs/analytics/types.js.map +1 -0
- package/lib/commonjs/analytics/typings/browser-snippet.d.js +6 -0
- package/lib/commonjs/analytics/typings/browser-snippet.d.js.map +1 -0
- package/lib/commonjs/analytics/typings/ua-parser.d.js +2 -0
- package/lib/commonjs/analytics/typings/ua-parser.d.js.map +1 -0
- package/lib/commonjs/analytics/utils/platform.js +16 -0
- package/lib/commonjs/analytics/utils/platform.js.map +1 -0
- package/lib/commonjs/analytics/version.js +8 -0
- package/lib/commonjs/analytics/version.js.map +1 -0
- package/lib/commonjs/experiment/experimentClient.js +792 -0
- package/lib/commonjs/experiment/experimentClient.js.map +1 -0
- package/lib/commonjs/experiment/factory.js +77 -0
- package/lib/commonjs/experiment/factory.js.map +1 -0
- package/lib/commonjs/experiment/gen/version.js +9 -0
- package/lib/commonjs/experiment/gen/version.js.map +1 -0
- package/lib/commonjs/experiment/index.js +143 -0
- package/lib/commonjs/experiment/index.js.map +1 -0
- package/lib/commonjs/experiment/integration/NativeExperimentReactNativeClient.js +11 -0
- package/lib/commonjs/experiment/integration/NativeExperimentReactNativeClient.js.map +1 -0
- package/lib/commonjs/experiment/integration/connector.js +67 -0
- package/lib/commonjs/experiment/integration/connector.js.map +1 -0
- package/lib/commonjs/experiment/integration/default.js +92 -0
- package/lib/commonjs/experiment/integration/default.js.map +1 -0
- package/lib/commonjs/experiment/logger/ampLogger.js +80 -0
- package/lib/commonjs/experiment/logger/ampLogger.js.map +1 -0
- package/lib/commonjs/experiment/logger/consoleLogger.js +60 -0
- package/lib/commonjs/experiment/logger/consoleLogger.js.map +1 -0
- package/lib/commonjs/experiment/storage/cache.js +197 -0
- package/lib/commonjs/experiment/storage/cache.js.map +1 -0
- package/lib/commonjs/experiment/storage/local-storage.js +25 -0
- package/lib/commonjs/experiment/storage/local-storage.js.map +1 -0
- package/lib/commonjs/experiment/stubClient.js +46 -0
- package/lib/commonjs/experiment/stubClient.js.map +1 -0
- package/lib/commonjs/experiment/transport/http.js +72 -0
- package/lib/commonjs/experiment/transport/http.js.map +1 -0
- package/lib/commonjs/experiment/types/client.js +6 -0
- package/lib/commonjs/experiment/types/client.js.map +1 -0
- package/lib/commonjs/experiment/types/config.js +67 -0
- package/lib/commonjs/experiment/types/config.js.map +1 -0
- package/lib/commonjs/experiment/types/exposure.js +2 -0
- package/lib/commonjs/experiment/types/exposure.js.map +1 -0
- package/lib/commonjs/experiment/types/logger.js +42 -0
- package/lib/commonjs/experiment/types/logger.js.map +1 -0
- package/lib/commonjs/experiment/types/source.js +54 -0
- package/lib/commonjs/experiment/types/source.js.map +1 -0
- package/lib/commonjs/experiment/types/storage.js +2 -0
- package/lib/commonjs/experiment/types/storage.js.map +1 -0
- package/lib/commonjs/experiment/types/transport.js +2 -0
- package/lib/commonjs/experiment/types/transport.js.map +1 -0
- package/lib/commonjs/experiment/types/user.js +2 -0
- package/lib/commonjs/experiment/types/user.js.map +1 -0
- package/lib/commonjs/experiment/types/variant.js +2 -0
- package/lib/commonjs/experiment/types/variant.js.map +1 -0
- package/lib/commonjs/experiment/util/backoff.js +54 -0
- package/lib/commonjs/experiment/util/backoff.js.map +1 -0
- package/lib/commonjs/experiment/util/base64.js +23 -0
- package/lib/commonjs/experiment/util/base64.js.map +1 -0
- package/lib/commonjs/experiment/util/convert.js +78 -0
- package/lib/commonjs/experiment/util/convert.js.map +1 -0
- package/lib/commonjs/experiment/util/index.js +25 -0
- package/lib/commonjs/experiment/util/index.js.map +1 -0
- package/lib/commonjs/experiment/util/platform.js +16 -0
- package/lib/commonjs/experiment/util/platform.js.map +1 -0
- package/lib/commonjs/experiment/util/randomstring.js +16 -0
- package/lib/commonjs/experiment/util/randomstring.js.map +1 -0
- package/lib/commonjs/experiment/util/userSessionExposureTracker.js +40 -0
- package/lib/commonjs/experiment/util/userSessionExposureTracker.js.map +1 -0
- package/lib/commonjs/index.js +298 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/index.web.js +22 -0
- package/lib/commonjs/index.web.js.map +1 -0
- package/lib/commonjs/native/context.js +43 -0
- package/lib/commonjs/native/context.js.map +1 -0
- package/lib/commonjs/native/http.js +62 -0
- package/lib/commonjs/native/http.js.map +1 -0
- package/lib/commonjs/native/hybrid.js +31 -0
- package/lib/commonjs/native/hybrid.js.map +1 -0
- package/lib/commonjs/native/storage.js +93 -0
- package/lib/commonjs/native/storage.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/AmplitudeContext.nitro.js +4 -0
- package/lib/module/AmplitudeContext.nitro.js.map +1 -0
- package/lib/module/AmplitudeStorage.nitro.js +4 -0
- package/lib/module/AmplitudeStorage.nitro.js.map +1 -0
- package/lib/module/AmplitudeWorker.nitro.js +4 -0
- package/lib/module/AmplitudeWorker.nitro.js.map +1 -0
- package/lib/module/analytics/campaign/campaign-tracker.js +100 -0
- package/lib/module/analytics/campaign/campaign-tracker.js.map +1 -0
- package/lib/module/analytics/campaign/types.js +4 -0
- package/lib/module/analytics/campaign/types.js.map +1 -0
- package/lib/module/analytics/config.js +272 -0
- package/lib/module/analytics/config.js.map +1 -0
- package/lib/module/analytics/cookie-migration/index.js +51 -0
- package/lib/module/analytics/cookie-migration/index.js.map +1 -0
- package/lib/module/analytics/index.js +34 -0
- package/lib/module/analytics/index.js.map +1 -0
- package/lib/module/analytics/migration/remnant-data-migration.js +172 -0
- package/lib/module/analytics/migration/remnant-data-migration.js.map +1 -0
- package/lib/module/analytics/nitro-transport.js +26 -0
- package/lib/module/analytics/nitro-transport.js.map +1 -0
- package/lib/module/analytics/plugins/context.js +134 -0
- package/lib/module/analytics/plugins/context.js.map +1 -0
- package/lib/module/analytics/react-native-client.js +346 -0
- package/lib/module/analytics/react-native-client.js.map +1 -0
- package/lib/module/analytics/storage/local-storage.js +68 -0
- package/lib/module/analytics/storage/local-storage.js.map +1 -0
- package/lib/module/analytics/types.js +4 -0
- package/lib/module/analytics/types.js.map +1 -0
- package/lib/module/analytics/typings/browser-snippet.d.js +4 -0
- package/lib/module/analytics/typings/browser-snippet.d.js.map +1 -0
- package/lib/module/analytics/typings/ua-parser.d.js +2 -0
- package/lib/module/analytics/typings/ua-parser.d.js.map +1 -0
- package/lib/module/analytics/utils/platform.js +10 -0
- package/lib/module/analytics/utils/platform.js.map +1 -0
- package/lib/module/analytics/version.js +4 -0
- package/lib/module/analytics/version.js.map +1 -0
- package/lib/module/experiment/experimentClient.js +788 -0
- package/lib/module/experiment/experimentClient.js.map +1 -0
- package/lib/module/experiment/factory.js +73 -0
- package/lib/module/experiment/factory.js.map +1 -0
- package/lib/module/experiment/gen/version.js +5 -0
- package/lib/module/experiment/gen/version.js.map +1 -0
- package/lib/module/experiment/index.js +16 -0
- package/lib/module/experiment/index.js.map +1 -0
- package/lib/module/experiment/integration/NativeExperimentReactNativeClient.js +7 -0
- package/lib/module/experiment/integration/NativeExperimentReactNativeClient.js.map +1 -0
- package/lib/module/experiment/integration/connector.js +61 -0
- package/lib/module/experiment/integration/connector.js.map +1 -0
- package/lib/module/experiment/integration/default.js +87 -0
- package/lib/module/experiment/integration/default.js.map +1 -0
- package/lib/module/experiment/logger/ampLogger.js +76 -0
- package/lib/module/experiment/logger/ampLogger.js.map +1 -0
- package/lib/module/experiment/logger/consoleLogger.js +55 -0
- package/lib/module/experiment/logger/consoleLogger.js.map +1 -0
- package/lib/module/experiment/storage/cache.js +187 -0
- package/lib/module/experiment/storage/cache.js.map +1 -0
- package/lib/module/experiment/storage/local-storage.js +19 -0
- package/lib/module/experiment/storage/local-storage.js.map +1 -0
- package/lib/module/experiment/stubClient.js +41 -0
- package/lib/module/experiment/stubClient.js.map +1 -0
- package/lib/module/experiment/transport/http.js +66 -0
- package/lib/module/experiment/transport/http.js.map +1 -0
- package/lib/module/experiment/types/client.js +4 -0
- package/lib/module/experiment/types/client.js.map +1 -0
- package/lib/module/experiment/types/config.js +64 -0
- package/lib/module/experiment/types/config.js.map +1 -0
- package/lib/module/experiment/types/exposure.js +2 -0
- package/lib/module/experiment/types/exposure.js.map +1 -0
- package/lib/module/experiment/types/logger.js +39 -0
- package/lib/module/experiment/types/logger.js.map +1 -0
- package/lib/module/experiment/types/source.js +51 -0
- package/lib/module/experiment/types/source.js.map +1 -0
- package/lib/module/experiment/types/storage.js +2 -0
- package/lib/module/experiment/types/storage.js.map +1 -0
- package/lib/module/experiment/types/transport.js +2 -0
- package/lib/module/experiment/types/transport.js.map +1 -0
- package/lib/module/experiment/types/user.js +2 -0
- package/lib/module/experiment/types/user.js.map +1 -0
- package/lib/module/experiment/types/variant.js +2 -0
- package/lib/module/experiment/types/variant.js.map +1 -0
- package/lib/module/experiment/util/backoff.js +49 -0
- package/lib/module/experiment/util/backoff.js.map +1 -0
- package/lib/module/experiment/util/base64.js +16 -0
- package/lib/module/experiment/util/base64.js.map +1 -0
- package/lib/module/experiment/util/convert.js +71 -0
- package/lib/module/experiment/util/convert.js.map +1 -0
- package/lib/module/experiment/util/index.js +17 -0
- package/lib/module/experiment/util/index.js.map +1 -0
- package/lib/module/experiment/util/platform.js +10 -0
- package/lib/module/experiment/util/platform.js.map +1 -0
- package/lib/module/experiment/util/randomstring.js +11 -0
- package/lib/module/experiment/util/randomstring.js.map +1 -0
- package/lib/module/experiment/util/userSessionExposureTracker.js +35 -0
- package/lib/module/experiment/util/userSessionExposureTracker.js.map +1 -0
- package/lib/module/index.js +50 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/index.web.js +14 -0
- package/lib/module/index.web.js.map +1 -0
- package/lib/module/native/context.js +35 -0
- package/lib/module/native/context.js.map +1 -0
- package/lib/module/native/http.js +57 -0
- package/lib/module/native/http.js.map +1 -0
- package/lib/module/native/hybrid.js +24 -0
- package/lib/module/native/hybrid.js.map +1 -0
- package/lib/module/native/storage.js +86 -0
- package/lib/module/native/storage.js.map +1 -0
- package/lib/typescript/AmplitudeContext.nitro.d.ts +17 -0
- package/lib/typescript/AmplitudeContext.nitro.d.ts.map +1 -0
- package/lib/typescript/AmplitudeStorage.nitro.d.ts +17 -0
- package/lib/typescript/AmplitudeStorage.nitro.d.ts.map +1 -0
- package/lib/typescript/AmplitudeWorker.nitro.d.ts +11 -0
- package/lib/typescript/AmplitudeWorker.nitro.d.ts.map +1 -0
- package/lib/typescript/analytics/campaign/campaign-tracker.d.ts +85 -0
- package/lib/typescript/analytics/campaign/campaign-tracker.d.ts.map +1 -0
- package/lib/typescript/analytics/campaign/types.d.ts +11 -0
- package/lib/typescript/analytics/campaign/types.d.ts.map +1 -0
- package/lib/typescript/analytics/config.d.ts +68 -0
- package/lib/typescript/analytics/config.d.ts.map +1 -0
- package/lib/typescript/analytics/cookie-migration/index.d.ts +6 -0
- package/lib/typescript/analytics/cookie-migration/index.d.ts.map +1 -0
- package/lib/typescript/analytics/index.d.ts +7 -0
- package/lib/typescript/analytics/index.d.ts.map +1 -0
- package/lib/typescript/analytics/migration/remnant-data-migration.d.ts +20 -0
- package/lib/typescript/analytics/migration/remnant-data-migration.d.ts.map +1 -0
- package/lib/typescript/analytics/nitro-transport.d.ts +9 -0
- package/lib/typescript/analytics/nitro-transport.d.ts.map +1 -0
- package/lib/typescript/analytics/plugins/context.d.ts +14 -0
- package/lib/typescript/analytics/plugins/context.d.ts.map +1 -0
- package/lib/typescript/analytics/react-native-client.d.ts +55 -0
- package/lib/typescript/analytics/react-native-client.d.ts.map +1 -0
- package/lib/typescript/analytics/storage/local-storage.d.ts +14 -0
- package/lib/typescript/analytics/storage/local-storage.d.ts.map +1 -0
- package/lib/typescript/analytics/types.d.ts +2 -0
- package/lib/typescript/analytics/types.d.ts.map +1 -0
- package/lib/typescript/analytics/utils/platform.d.ts +3 -0
- package/lib/typescript/analytics/utils/platform.d.ts.map +1 -0
- package/lib/typescript/analytics/version.d.ts +2 -0
- package/lib/typescript/analytics/version.d.ts.map +1 -0
- package/lib/typescript/experiment/experimentClient.d.ts +234 -0
- package/lib/typescript/experiment/experimentClient.d.ts.map +1 -0
- package/lib/typescript/experiment/factory.d.ts +11 -0
- package/lib/typescript/experiment/factory.d.ts.map +1 -0
- package/lib/typescript/experiment/gen/version.d.ts +2 -0
- package/lib/typescript/experiment/gen/version.d.ts.map +1 -0
- package/lib/typescript/experiment/index.d.ts +15 -0
- package/lib/typescript/experiment/index.d.ts.map +1 -0
- package/lib/typescript/experiment/integration/NativeExperimentReactNativeClient.d.ts +16 -0
- package/lib/typescript/experiment/integration/NativeExperimentReactNativeClient.d.ts.map +1 -0
- package/lib/typescript/experiment/integration/connector.d.ts +16 -0
- package/lib/typescript/experiment/integration/connector.d.ts.map +1 -0
- package/lib/typescript/experiment/integration/default.d.ts +20 -0
- package/lib/typescript/experiment/integration/default.d.ts.map +1 -0
- package/lib/typescript/experiment/logger/ampLogger.d.ts +47 -0
- package/lib/typescript/experiment/logger/ampLogger.d.ts.map +1 -0
- package/lib/typescript/experiment/logger/consoleLogger.d.ts +40 -0
- package/lib/typescript/experiment/logger/consoleLogger.d.ts.map +1 -0
- package/lib/typescript/experiment/storage/cache.d.ts +35 -0
- package/lib/typescript/experiment/storage/cache.d.ts.map +1 -0
- package/lib/typescript/experiment/storage/local-storage.d.ts +11 -0
- package/lib/typescript/experiment/storage/local-storage.d.ts.map +1 -0
- package/lib/typescript/experiment/stubClient.d.ts +21 -0
- package/lib/typescript/experiment/stubClient.d.ts.map +1 -0
- package/lib/typescript/experiment/transport/http.d.ts +17 -0
- package/lib/typescript/experiment/transport/http.d.ts.map +1 -0
- package/lib/typescript/experiment/types/client.d.ts +36 -0
- package/lib/typescript/experiment/types/client.d.ts.map +1 -0
- package/lib/typescript/experiment/types/config.d.ts +164 -0
- package/lib/typescript/experiment/types/config.d.ts.map +1 -0
- package/lib/typescript/experiment/types/exposure.d.ts +107 -0
- package/lib/typescript/experiment/types/exposure.d.ts.map +1 -0
- package/lib/typescript/experiment/types/logger.d.ts +67 -0
- package/lib/typescript/experiment/types/logger.d.ts.map +1 -0
- package/lib/typescript/experiment/types/source.d.ts +43 -0
- package/lib/typescript/experiment/types/source.d.ts.map +1 -0
- package/lib/typescript/experiment/types/storage.d.ts +7 -0
- package/lib/typescript/experiment/types/storage.d.ts.map +1 -0
- package/lib/typescript/experiment/types/transport.d.ts +8 -0
- package/lib/typescript/experiment/types/transport.d.ts.map +1 -0
- package/lib/typescript/experiment/types/user.d.ts +106 -0
- package/lib/typescript/experiment/types/user.d.ts.map +1 -0
- package/lib/typescript/experiment/types/variant.d.ts +33 -0
- package/lib/typescript/experiment/types/variant.d.ts.map +1 -0
- package/lib/typescript/experiment/util/backoff.d.ts +14 -0
- package/lib/typescript/experiment/util/backoff.d.ts.map +1 -0
- package/lib/typescript/experiment/util/base64.d.ts +3 -0
- package/lib/typescript/experiment/util/base64.d.ts.map +1 -0
- package/lib/typescript/experiment/util/convert.d.ts +7 -0
- package/lib/typescript/experiment/util/convert.d.ts.map +1 -0
- package/lib/typescript/experiment/util/index.d.ts +6 -0
- package/lib/typescript/experiment/util/index.d.ts.map +1 -0
- package/lib/typescript/experiment/util/platform.d.ts +3 -0
- package/lib/typescript/experiment/util/platform.d.ts.map +1 -0
- package/lib/typescript/experiment/util/randomstring.d.ts +2 -0
- package/lib/typescript/experiment/util/randomstring.d.ts.map +1 -0
- package/lib/typescript/experiment/util/userSessionExposureTracker.d.ts +16 -0
- package/lib/typescript/experiment/util/userSessionExposureTracker.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +31 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/index.web.d.ts +12 -0
- package/lib/typescript/index.web.d.ts.map +1 -0
- package/lib/typescript/native/context.d.ts +29 -0
- package/lib/typescript/native/context.d.ts.map +1 -0
- package/lib/typescript/native/http.d.ts +6 -0
- package/lib/typescript/native/http.d.ts.map +1 -0
- package/lib/typescript/native/hybrid.d.ts +8 -0
- package/lib/typescript/native/hybrid.d.ts.map +1 -0
- package/lib/typescript/native/storage.d.ts +29 -0
- package/lib/typescript/native/storage.d.ts.map +1 -0
- package/nitro.json +33 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/NitroAmplitude+autolinking.cmake +83 -0
- package/nitrogen/generated/android/NitroAmplitude+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroAmplitudeOnLoad.cpp +69 -0
- package/nitrogen/generated/android/NitroAmplitudeOnLoad.hpp +34 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitroamplitude/NitroAmplitudeOnLoad.kt +35 -0
- package/nitrogen/generated/ios/NitroAmplitude+autolinking.rb +62 -0
- package/nitrogen/generated/ios/NitroAmplitude-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/NitroAmplitude-Swift-Cxx-Bridge.hpp +27 -0
- package/nitrogen/generated/ios/NitroAmplitude-Swift-Cxx-Umbrella.hpp +38 -0
- package/nitrogen/generated/ios/NitroAmplitudeAutolinking.mm +55 -0
- package/nitrogen/generated/ios/NitroAmplitudeAutolinking.swift +16 -0
- package/nitrogen/generated/shared/c++/HybridAmplitudeContextSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridAmplitudeContextSpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridAmplitudeStorageSpec.cpp +30 -0
- package/nitrogen/generated/shared/c++/HybridAmplitudeStorageSpec.hpp +73 -0
- package/nitrogen/generated/shared/c++/HybridAmplitudeWorkerSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridAmplitudeWorkerSpec.hpp +66 -0
- package/package.json +130 -0
- package/react-native-nitro-amplitude.podspec +36 -0
- package/src/AmplitudeContext.nitro.ts +21 -0
- package/src/AmplitudeStorage.nitro.ts +17 -0
- package/src/AmplitudeWorker.nitro.ts +25 -0
- package/src/analytics/campaign/campaign-tracker.ts +162 -0
- package/src/analytics/campaign/types.ts +18 -0
- package/src/analytics/config.ts +373 -0
- package/src/analytics/cookie-migration/index.ts +69 -0
- package/src/analytics/index.ts +36 -0
- package/src/analytics/migration/remnant-data-migration.ts +206 -0
- package/src/analytics/nitro-transport.ts +35 -0
- package/src/analytics/plugins/context.ts +166 -0
- package/src/analytics/react-native-client.ts +573 -0
- package/src/analytics/storage/local-storage.ts +76 -0
- package/src/analytics/types.ts +30 -0
- package/src/analytics/typings/browser-snippet.d.ts +7 -0
- package/src/analytics/typings/ua-parser.d.ts +4 -0
- package/src/analytics/utils/platform.ts +9 -0
- package/src/analytics/version.ts +1 -0
- package/src/experiment/experimentClient.ts +987 -0
- package/src/experiment/factory.ts +86 -0
- package/src/experiment/gen/version.ts +2 -0
- package/src/experiment/index.ts +14 -0
- package/src/experiment/integration/NativeExperimentReactNativeClient.ts +25 -0
- package/src/experiment/integration/connector.ts +82 -0
- package/src/experiment/integration/default.ts +107 -0
- package/src/experiment/logger/ampLogger.ts +76 -0
- package/src/experiment/logger/consoleLogger.ts +54 -0
- package/src/experiment/storage/cache.ts +271 -0
- package/src/experiment/storage/local-storage.ts +23 -0
- package/src/experiment/stubClient.ts +61 -0
- package/src/experiment/transport/http.ts +105 -0
- package/src/experiment/types/client.ts +38 -0
- package/src/experiment/types/config.ts +210 -0
- package/src/experiment/types/exposure.ts +107 -0
- package/src/experiment/types/logger.ts +71 -0
- package/src/experiment/types/source.ts +52 -0
- package/src/experiment/types/storage.ts +6 -0
- package/src/experiment/types/transport.ts +14 -0
- package/src/experiment/types/user.ts +132 -0
- package/src/experiment/types/variant.ts +36 -0
- package/src/experiment/util/backoff.ts +67 -0
- package/src/experiment/util/base64.ts +20 -0
- package/src/experiment/util/convert.ts +78 -0
- package/src/experiment/util/index.ts +23 -0
- package/src/experiment/util/platform.ts +9 -0
- package/src/experiment/util/randomstring.ts +12 -0
- package/src/experiment/util/userSessionExposureTracker.ts +47 -0
- package/src/index.ts +66 -0
- package/src/index.web.ts +19 -0
- package/src/native/context.ts +73 -0
- package/src/native/http.ts +77 -0
- package/src/native/hybrid.ts +32 -0
- package/src/native/storage.ts +107 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#import "IOSAmplitudeAdapterCpp.hpp"
|
|
2
|
+
#import <Foundation/Foundation.h>
|
|
3
|
+
#import <UIKit/UIKit.h>
|
|
4
|
+
|
|
5
|
+
namespace NitroAmplitude {
|
|
6
|
+
|
|
7
|
+
static NSString* const kDiskSuiteName = @"com.nitroamplitude.disk";
|
|
8
|
+
|
|
9
|
+
static NSUserDefaults* NitroDiskDefaults() {
|
|
10
|
+
static NSUserDefaults* defaults = [[NSUserDefaults alloc] initWithSuiteName:kDiskSuiteName];
|
|
11
|
+
return defaults ?: [NSUserDefaults standardUserDefaults];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
IOSAmplitudeAdapterCpp::IOSAmplitudeAdapterCpp() {}
|
|
15
|
+
|
|
16
|
+
void IOSAmplitudeAdapterCpp::prefetchContext() {
|
|
17
|
+
getApplicationContextJson("{}");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
std::string IOSAmplitudeAdapterCpp::getApplicationContextJson(const std::string& optionsJson) {
|
|
21
|
+
NSData* data = [NSData dataWithBytes:optionsJson.data() length:optionsJson.size()];
|
|
22
|
+
NSDictionary* options = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
|
|
23
|
+
if (![options isKindOfClass:[NSDictionary class]]) {
|
|
24
|
+
options = @{};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
UIDevice* device = [UIDevice currentDevice];
|
|
28
|
+
NSLocale* locale = [NSLocale currentLocale];
|
|
29
|
+
NSString* version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
|
|
30
|
+
NSMutableDictionary* json = [@{
|
|
31
|
+
@"version": version ?: @"",
|
|
32
|
+
@"platform": @"iOS",
|
|
33
|
+
@"language": locale.languageCode ?: @"",
|
|
34
|
+
@"country": locale.countryCode ?: @"",
|
|
35
|
+
@"osName": device.systemName ?: @"iOS",
|
|
36
|
+
@"osVersion": device.systemVersion ?: @"",
|
|
37
|
+
@"deviceManufacturer": @"Apple",
|
|
38
|
+
@"deviceModel": device.model ?: @"",
|
|
39
|
+
@"deviceBrand": @"Apple",
|
|
40
|
+
} mutableCopy];
|
|
41
|
+
|
|
42
|
+
if ([options[@"carrier"] boolValue]) {
|
|
43
|
+
json[@"carrier"] = @"";
|
|
44
|
+
}
|
|
45
|
+
if ([options[@"idfv"] boolValue]) {
|
|
46
|
+
json[@"idfv"] = [[[UIDevice currentDevice] identifierForVendor] UUIDString] ?: @"";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
NSData* encoded = [NSJSONSerialization dataWithJSONObject:json options:0 error:nil];
|
|
50
|
+
if (!encoded) {
|
|
51
|
+
return "{}";
|
|
52
|
+
}
|
|
53
|
+
return std::string(static_cast<const char*>(encoded.bytes), encoded.length);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
std::string IOSAmplitudeAdapterCpp::getLegacySessionDataJson(const std::string& /*instanceName*/) {
|
|
57
|
+
return "{}";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
std::vector<std::string> IOSAmplitudeAdapterCpp::getLegacyEventsJson(
|
|
61
|
+
const std::string& /*instanceName*/,
|
|
62
|
+
const std::string& /*eventKind*/) {
|
|
63
|
+
return {};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
void IOSAmplitudeAdapterCpp::removeLegacyEvent(
|
|
67
|
+
const std::string& /*instanceName*/,
|
|
68
|
+
const std::string& /*eventKind*/,
|
|
69
|
+
int64_t /*eventId*/) {}
|
|
70
|
+
|
|
71
|
+
void IOSAmplitudeAdapterCpp::setDisk(const std::string& key, const std::string& value) {
|
|
72
|
+
NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
|
|
73
|
+
NSString* nsValue = [NSString stringWithUTF8String:value.c_str()];
|
|
74
|
+
[NitroDiskDefaults() setObject:nsValue forKey:nsKey];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
std::optional<std::string> IOSAmplitudeAdapterCpp::getDisk(const std::string& key) {
|
|
78
|
+
NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
|
|
79
|
+
NSString* result = [NitroDiskDefaults() stringForKey:nsKey];
|
|
80
|
+
if (!result) {
|
|
81
|
+
return std::nullopt;
|
|
82
|
+
}
|
|
83
|
+
return std::string([result UTF8String]);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
void IOSAmplitudeAdapterCpp::deleteDisk(const std::string& key) {
|
|
87
|
+
NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
|
|
88
|
+
[NitroDiskDefaults() removeObjectForKey:nsKey];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
bool IOSAmplitudeAdapterCpp::hasDisk(const std::string& key) {
|
|
92
|
+
NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
|
|
93
|
+
return [NitroDiskDefaults() objectForKey:nsKey] != nil;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
std::vector<std::string> IOSAmplitudeAdapterCpp::getAllDiskKeys() {
|
|
97
|
+
NSDictionary<NSString*, id>* entries = [NitroDiskDefaults() persistentDomainForName:kDiskSuiteName] ?: @{};
|
|
98
|
+
std::vector<std::string> keys;
|
|
99
|
+
keys.reserve(entries.count);
|
|
100
|
+
for (NSString* key in entries) {
|
|
101
|
+
keys.push_back(std::string([key UTF8String]));
|
|
102
|
+
}
|
|
103
|
+
return keys;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
HttpResult IOSAmplitudeAdapterCpp::performHttpRequest(
|
|
107
|
+
const std::string& url,
|
|
108
|
+
const std::string& method,
|
|
109
|
+
const std::string& headersJson,
|
|
110
|
+
const std::string& body,
|
|
111
|
+
int timeoutMillis) {
|
|
112
|
+
NSURL* nsUrl = [NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]];
|
|
113
|
+
if (!nsUrl) {
|
|
114
|
+
return HttpResult{.error = "Invalid URL"};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:nsUrl];
|
|
118
|
+
request.HTTPMethod = [NSString stringWithUTF8String:method.c_str()];
|
|
119
|
+
request.timeoutInterval = timeoutMillis / 1000.0;
|
|
120
|
+
request.HTTPBody = body.empty() ? nil : [NSData dataWithBytes:body.data() length:body.size()];
|
|
121
|
+
|
|
122
|
+
NSData* headerData = [NSData dataWithBytes:headersJson.data() length:headersJson.size()];
|
|
123
|
+
NSDictionary* headers = [NSJSONSerialization JSONObjectWithData:headerData options:0 error:nil];
|
|
124
|
+
if ([headers isKindOfClass:[NSDictionary class]]) {
|
|
125
|
+
for (NSString* key in headers) {
|
|
126
|
+
id value = headers[key];
|
|
127
|
+
if ([value isKindOfClass:[NSString class]]) {
|
|
128
|
+
[request setValue:(NSString*)value forHTTPHeaderField:key];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
|
|
134
|
+
__block HttpResult completedResult;
|
|
135
|
+
NSURLSessionDataTask* task = [[NSURLSession sharedSession]
|
|
136
|
+
dataTaskWithRequest:request
|
|
137
|
+
completionHandler:^(NSData* data, NSURLResponse* response, NSError* error) {
|
|
138
|
+
if (error) {
|
|
139
|
+
completedResult.error = std::string([[error localizedDescription] UTF8String]);
|
|
140
|
+
} else if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
|
|
141
|
+
completedResult.statusCode = static_cast<int>(((NSHTTPURLResponse*)response).statusCode);
|
|
142
|
+
if (data) {
|
|
143
|
+
completedResult.body = std::string(static_cast<const char*>(data.bytes), data.length);
|
|
144
|
+
}
|
|
145
|
+
} else {
|
|
146
|
+
completedResult.error = "Invalid HTTP response";
|
|
147
|
+
}
|
|
148
|
+
dispatch_semaphore_signal(semaphore);
|
|
149
|
+
}];
|
|
150
|
+
[task resume];
|
|
151
|
+
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
|
|
152
|
+
return completedResult;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
} // namespace NitroAmplitude
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeContext.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeStorage.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeWorker.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CampaignTracker = void 0;
|
|
7
|
+
var _analyticsCore = require("@amplitude/analytics-core");
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated
|
|
10
|
+
* Campaign tracker has mixed logic from built-in and plugin web attribution
|
|
11
|
+
* features. Do not add more features here. The plan moving foward is to consolidate logic
|
|
12
|
+
* in @amplitude/plugin-web-attribution-browser with backward compatibility.
|
|
13
|
+
*/
|
|
14
|
+
class CampaignTracker {
|
|
15
|
+
constructor(apiKey, options) {
|
|
16
|
+
this.storage = options.storage;
|
|
17
|
+
this.storageKey = (0, _analyticsCore.getCookieName)(apiKey, _analyticsCore.MKTG);
|
|
18
|
+
this.parser = new _analyticsCore.CampaignParser();
|
|
19
|
+
this.track = options.track;
|
|
20
|
+
this.onNewCampaign = options.onNewCampaign;
|
|
21
|
+
this.disabled = Boolean(options.disabled);
|
|
22
|
+
this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
|
|
23
|
+
this.trackPageViews = Boolean(options.trackPageViews);
|
|
24
|
+
this.excludeReferrers = options.excludeReferrers ?? [];
|
|
25
|
+
if (typeof location !== "undefined") {
|
|
26
|
+
this.excludeReferrers.unshift(location.hostname);
|
|
27
|
+
}
|
|
28
|
+
this.initialEmptyValue = options.initialEmptyValue ?? _analyticsCore.EMPTY_VALUE;
|
|
29
|
+
}
|
|
30
|
+
isNewCampaign(current, previous, ignoreSubdomainInReferrer = false) {
|
|
31
|
+
const {
|
|
32
|
+
referrer,
|
|
33
|
+
referring_domain,
|
|
34
|
+
...currentCampaign
|
|
35
|
+
} = current;
|
|
36
|
+
const {
|
|
37
|
+
referrer: _previous_referrer,
|
|
38
|
+
referring_domain: prevReferringDomain,
|
|
39
|
+
...previousCampaign
|
|
40
|
+
} = previous || {};
|
|
41
|
+
if (current.referring_domain && this.excludeReferrers.includes(current.referring_domain)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
|
|
45
|
+
const hasNewDomain = ignoreSubdomainInReferrer ? domainWithoutSubdomain(referring_domain || "") !== domainWithoutSubdomain(prevReferringDomain || "") : referring_domain !== prevReferringDomain;
|
|
46
|
+
return !previous || hasNewCampaign || hasNewDomain;
|
|
47
|
+
}
|
|
48
|
+
async saveCampaignToStorage(campaign) {
|
|
49
|
+
await this.storage.set(this.storageKey, campaign);
|
|
50
|
+
}
|
|
51
|
+
async getCampaignFromStorage() {
|
|
52
|
+
return await this.storage.get(this.storageKey);
|
|
53
|
+
}
|
|
54
|
+
createCampaignEvent(campaign) {
|
|
55
|
+
const campaignParameters = {
|
|
56
|
+
// This object definition allows undefined keys to be iterated on
|
|
57
|
+
// in .reduce() to build indentify object
|
|
58
|
+
..._analyticsCore.BASE_CAMPAIGN,
|
|
59
|
+
...campaign
|
|
60
|
+
};
|
|
61
|
+
const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {
|
|
62
|
+
identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);
|
|
63
|
+
if (value) {
|
|
64
|
+
return identify.set(key, value);
|
|
65
|
+
}
|
|
66
|
+
return identify.unset(key);
|
|
67
|
+
}, new _analyticsCore.Identify());
|
|
68
|
+
const pageViewEvent = {
|
|
69
|
+
event_type: "Page View",
|
|
70
|
+
event_properties: {
|
|
71
|
+
page_title: /* istanbul ignore next */typeof document !== "undefined" && document.title || "",
|
|
72
|
+
page_location: /* istanbul ignore next */typeof location !== "undefined" && location.href || "",
|
|
73
|
+
page_path: /* istanbul ignore next */typeof location !== "undefined" && location.pathname || ""
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
...(0, _analyticsCore.createIdentifyEvent)(identifyEvent),
|
|
78
|
+
...(this.trackPageViews && pageViewEvent)
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async send(isNewSession) {
|
|
82
|
+
if (this.disabled) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const currentCampaign = await this.parser.parse();
|
|
86
|
+
const previousCampaign = await this.getCampaignFromStorage();
|
|
87
|
+
if (!isNewSession) {
|
|
88
|
+
if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.onNewCampaign(currentCampaign);
|
|
92
|
+
}
|
|
93
|
+
await this.track(this.createCampaignEvent(currentCampaign));
|
|
94
|
+
await this.saveCampaignToStorage(currentCampaign);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.CampaignTracker = CampaignTracker;
|
|
98
|
+
const domainWithoutSubdomain = domain => {
|
|
99
|
+
const parts = domain.split(".");
|
|
100
|
+
if (parts.length <= 2) {
|
|
101
|
+
return domain;
|
|
102
|
+
}
|
|
103
|
+
return parts.slice(parts.length - 2, parts.length).join(".");
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=campaign-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_analyticsCore","require","CampaignTracker","constructor","apiKey","options","storage","storageKey","getStorageKey","MKTG","parser","CampaignParser","track","onNewCampaign","disabled","Boolean","trackNewCampaigns","trackPageViews","excludeReferrers","location","unshift","hostname","initialEmptyValue","EMPTY_VALUE","isNewCampaign","current","previous","ignoreSubdomainInReferrer","referrer","referring_domain","currentCampaign","_previous_referrer","prevReferringDomain","previousCampaign","includes","hasNewCampaign","JSON","stringify","hasNewDomain","domainWithoutSubdomain","saveCampaignToStorage","campaign","set","getCampaignFromStorage","get","createCampaignEvent","campaignParameters","BASE_CAMPAIGN","identifyEvent","Object","entries","reduce","identify","key","value","setOnce","unset","Identify","pageViewEvent","event_type","event_properties","page_title","document","title","page_location","href","page_path","pathname","createIdentifyEvent","send","isNewSession","parse","exports","domain","parts","split","length","slice","join"],"sourceRoot":"../../../../src","sources":["analytics/campaign/campaign-tracker.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["analytics/campaign/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useReactNativeConfig = exports.getTopLevelDomain = exports.getDefaultConfig = exports.createEventsStorage = exports.createCookieStorage = exports.ReactNativeConfig = void 0;
|
|
7
|
+
var _analyticsCore = require("@amplitude/analytics-core");
|
|
8
|
+
var _localStorage = require("./storage/local-storage");
|
|
9
|
+
var _remnantDataMigration = _interopRequireDefault(require("./migration/remnant-data-migration"));
|
|
10
|
+
var _storage = require("../native/storage");
|
|
11
|
+
var _nitroTransport = require("./nitro-transport");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
const getDefaultConfig = () => {
|
|
14
|
+
const cookieStorage = new _analyticsCore.MemoryStorage();
|
|
15
|
+
const trackingOptions = {
|
|
16
|
+
adid: true,
|
|
17
|
+
carrier: true,
|
|
18
|
+
deviceManufacturer: true,
|
|
19
|
+
deviceModel: true,
|
|
20
|
+
ipAddress: true,
|
|
21
|
+
language: true,
|
|
22
|
+
osName: true,
|
|
23
|
+
osVersion: true,
|
|
24
|
+
platform: true,
|
|
25
|
+
appSetId: true,
|
|
26
|
+
idfv: true,
|
|
27
|
+
country: false // NOTE: tracking country information would disable server-side IP address lookup to fill other information like region, city, dma, etc.
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
cookieExpiration: 365,
|
|
31
|
+
cookieSameSite: "Lax",
|
|
32
|
+
cookieSecure: false,
|
|
33
|
+
cookieStorage,
|
|
34
|
+
cookieUpgrade: true,
|
|
35
|
+
disableCookies: true,
|
|
36
|
+
domain: "",
|
|
37
|
+
sessionTimeout: 5 * 60 * 1000,
|
|
38
|
+
storageProvider: new _storage.NitroAnalyticsStorage("analytics-events"),
|
|
39
|
+
trackingSessionEvents: false,
|
|
40
|
+
trackingOptions,
|
|
41
|
+
transportProvider: _nitroTransport.nitroTransport
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
exports.getDefaultConfig = getDefaultConfig;
|
|
45
|
+
class ReactNativeConfig extends _analyticsCore.Config {
|
|
46
|
+
// NOTE: These protected properties cache user session values in the configured session storage
|
|
47
|
+
|
|
48
|
+
_optOut = false;
|
|
49
|
+
constructor(apiKey, options) {
|
|
50
|
+
const defaultConfig = getDefaultConfig();
|
|
51
|
+
super({
|
|
52
|
+
flushIntervalMillis: 1000,
|
|
53
|
+
flushMaxRetries: 5,
|
|
54
|
+
flushQueueSize: 30,
|
|
55
|
+
transportProvider: defaultConfig.transportProvider,
|
|
56
|
+
...options,
|
|
57
|
+
apiKey
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// NOTE: Define `cookieStorage` first to persist user session
|
|
61
|
+
// user session properties expect `cookieStorage` to be defined
|
|
62
|
+
this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;
|
|
63
|
+
this.deviceId = options?.deviceId;
|
|
64
|
+
this.lastEventTime = options?.lastEventTime;
|
|
65
|
+
this.optOut = Boolean(options?.optOut);
|
|
66
|
+
this.sessionId = options?.sessionId;
|
|
67
|
+
this.userId = options?.userId;
|
|
68
|
+
this.appVersion = options?.appVersion;
|
|
69
|
+
this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;
|
|
70
|
+
this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;
|
|
71
|
+
this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;
|
|
72
|
+
this.cookieUpgrade = options?.cookieUpgrade ?? defaultConfig.cookieUpgrade;
|
|
73
|
+
this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;
|
|
74
|
+
this.domain = options?.domain ?? defaultConfig.domain;
|
|
75
|
+
this.partnerId = options?.partnerId;
|
|
76
|
+
this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;
|
|
77
|
+
this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;
|
|
78
|
+
this.trackingSessionEvents = options?.trackingSessionEvents ?? defaultConfig.trackingSessionEvents;
|
|
79
|
+
}
|
|
80
|
+
get deviceId() {
|
|
81
|
+
return this._deviceId;
|
|
82
|
+
}
|
|
83
|
+
set deviceId(deviceId) {
|
|
84
|
+
if (this._deviceId !== deviceId) {
|
|
85
|
+
this._deviceId = deviceId;
|
|
86
|
+
this.updateStorage();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
get userId() {
|
|
90
|
+
return this._userId;
|
|
91
|
+
}
|
|
92
|
+
set userId(userId) {
|
|
93
|
+
if (this._userId !== userId) {
|
|
94
|
+
this._userId = userId;
|
|
95
|
+
this.updateStorage();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
get sessionId() {
|
|
99
|
+
return this._sessionId;
|
|
100
|
+
}
|
|
101
|
+
set sessionId(sessionId) {
|
|
102
|
+
if (this._sessionId !== sessionId) {
|
|
103
|
+
this._sessionId = sessionId;
|
|
104
|
+
this.updateStorage();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
get optOut() {
|
|
108
|
+
return this._optOut;
|
|
109
|
+
}
|
|
110
|
+
set optOut(optOut) {
|
|
111
|
+
if (this._optOut !== optOut) {
|
|
112
|
+
this._optOut = optOut;
|
|
113
|
+
this.updateStorage();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
get lastEventTime() {
|
|
117
|
+
return this._lastEventTime;
|
|
118
|
+
}
|
|
119
|
+
set lastEventTime(lastEventTime) {
|
|
120
|
+
if (this._lastEventTime !== lastEventTime) {
|
|
121
|
+
this._lastEventTime = lastEventTime;
|
|
122
|
+
this.updateStorage();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
get lastEventId() {
|
|
126
|
+
return this._lastEventId;
|
|
127
|
+
}
|
|
128
|
+
set lastEventId(lastEventId) {
|
|
129
|
+
if (this._lastEventId !== lastEventId) {
|
|
130
|
+
this._lastEventId = lastEventId;
|
|
131
|
+
this.updateStorage();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
updateStorage() {
|
|
135
|
+
const cache = {
|
|
136
|
+
deviceId: this._deviceId,
|
|
137
|
+
userId: this._userId,
|
|
138
|
+
sessionId: this._sessionId,
|
|
139
|
+
optOut: this._optOut,
|
|
140
|
+
lastEventTime: this._lastEventTime,
|
|
141
|
+
lastEventId: this._lastEventId
|
|
142
|
+
};
|
|
143
|
+
try {
|
|
144
|
+
void this.cookieStorage?.set((0, _analyticsCore.getCookieName)(this.apiKey), cache).catch(error => {
|
|
145
|
+
this.loggerProvider?.error(`Failed to persist user session: ${String(error)}`);
|
|
146
|
+
});
|
|
147
|
+
} catch (error) {
|
|
148
|
+
this.loggerProvider?.error(`Failed to persist user session: ${String(error)}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.ReactNativeConfig = ReactNativeConfig;
|
|
153
|
+
const useReactNativeConfig = async (apiKey, options) => {
|
|
154
|
+
const defaultConfig = getDefaultConfig();
|
|
155
|
+
|
|
156
|
+
// create cookie storage
|
|
157
|
+
const disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;
|
|
158
|
+
const domain = disableCookies ? "" : options?.domain ?? (await getTopLevelDomain());
|
|
159
|
+
const cookieStorage = await createCookieStorage({
|
|
160
|
+
...options,
|
|
161
|
+
disableCookies,
|
|
162
|
+
domain
|
|
163
|
+
});
|
|
164
|
+
const previousCookies = await cookieStorage.get((0, _analyticsCore.getCookieName)(apiKey));
|
|
165
|
+
const queryParams = (0, _analyticsCore.getQueryParams)();
|
|
166
|
+
|
|
167
|
+
// reconcile user session
|
|
168
|
+
let deviceId = options?.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId;
|
|
169
|
+
let lastEventTime = options?.lastEventTime ?? previousCookies?.lastEventTime;
|
|
170
|
+
const optOut = options?.optOut ?? Boolean(previousCookies?.optOut);
|
|
171
|
+
let sessionId = options?.sessionId ?? previousCookies?.sessionId;
|
|
172
|
+
let userId = options?.userId ?? previousCookies?.userId;
|
|
173
|
+
let lastEventId = previousCookies?.lastEventId;
|
|
174
|
+
const storageProvider = options?.storageProvider ?? (await createEventsStorage(options));
|
|
175
|
+
if (options?.migrateLegacyData !== false) {
|
|
176
|
+
const legacySessionData = await new _remnantDataMigration.default(apiKey, options?.instanceName, storageProvider, previousCookies?.lastEventTime === undefined, options?.loggerProvider).execute();
|
|
177
|
+
deviceId = deviceId ?? legacySessionData.deviceId;
|
|
178
|
+
userId = userId ?? legacySessionData.userId;
|
|
179
|
+
sessionId = sessionId ?? legacySessionData.sessionId;
|
|
180
|
+
lastEventTime = lastEventTime ?? legacySessionData.lastEventTime;
|
|
181
|
+
lastEventId = lastEventId ?? legacySessionData.lastEventId;
|
|
182
|
+
}
|
|
183
|
+
const config = new ReactNativeConfig(apiKey, {
|
|
184
|
+
...options,
|
|
185
|
+
cookieStorage,
|
|
186
|
+
deviceId: deviceId ?? (0, _analyticsCore.UUID)(),
|
|
187
|
+
domain,
|
|
188
|
+
lastEventTime,
|
|
189
|
+
optOut,
|
|
190
|
+
sessionId,
|
|
191
|
+
storageProvider,
|
|
192
|
+
trackingOptions: {
|
|
193
|
+
...defaultConfig.trackingOptions,
|
|
194
|
+
...options?.trackingOptions
|
|
195
|
+
},
|
|
196
|
+
transportProvider: options?.transportProvider ?? new _analyticsCore.FetchTransport(),
|
|
197
|
+
userId
|
|
198
|
+
});
|
|
199
|
+
config.lastEventId = lastEventId;
|
|
200
|
+
config.loggerProvider?.log(`Init: storage=${cookieStorage.constructor.name} restoredSessionId = ${previousCookies?.sessionId ?? "undefined"}, optionsSessionId = ${options?.sessionId ?? "undefined"}`);
|
|
201
|
+
return config;
|
|
202
|
+
};
|
|
203
|
+
exports.useReactNativeConfig = useReactNativeConfig;
|
|
204
|
+
const createCookieStorage = async (overrides, baseConfig = getDefaultConfig()) => {
|
|
205
|
+
const options = {
|
|
206
|
+
...baseConfig,
|
|
207
|
+
...overrides
|
|
208
|
+
};
|
|
209
|
+
const cookieStorage = overrides?.cookieStorage;
|
|
210
|
+
if (!cookieStorage || !(await cookieStorage.isEnabled())) {
|
|
211
|
+
return createFlexibleStorage(options);
|
|
212
|
+
}
|
|
213
|
+
return cookieStorage;
|
|
214
|
+
};
|
|
215
|
+
exports.createCookieStorage = createCookieStorage;
|
|
216
|
+
const createFlexibleStorage = async options => {
|
|
217
|
+
let storage;
|
|
218
|
+
if (options.disableCookies) {
|
|
219
|
+
storage = new _localStorage.LocalStorage();
|
|
220
|
+
if (!(await storage.isEnabled())) {
|
|
221
|
+
storage = new _analyticsCore.MemoryStorage();
|
|
222
|
+
}
|
|
223
|
+
return storage;
|
|
224
|
+
}
|
|
225
|
+
storage = new _analyticsCore.CookieStorage({
|
|
226
|
+
domain: options.domain,
|
|
227
|
+
expirationDays: options.cookieExpiration,
|
|
228
|
+
sameSite: options.cookieSameSite,
|
|
229
|
+
secure: options.cookieSecure
|
|
230
|
+
});
|
|
231
|
+
if (!(await storage.isEnabled())) {
|
|
232
|
+
storage = new _localStorage.LocalStorage();
|
|
233
|
+
if (!(await storage.isEnabled())) {
|
|
234
|
+
storage = new _analyticsCore.MemoryStorage();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return storage;
|
|
238
|
+
};
|
|
239
|
+
const createEventsStorage = async overrides => {
|
|
240
|
+
const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, "storageProvider");
|
|
241
|
+
// If storageProperty is explicitly undefined like `{ storageProperty: undefined }`
|
|
242
|
+
// then storageProvider is undefined
|
|
243
|
+
// If storageProvider is implicitly undefined like `{ }`
|
|
244
|
+
// then storageProvider uses the built-in memory storage
|
|
245
|
+
// Otherwise storageProvider is overriden
|
|
246
|
+
if (!hasStorageProviderProperty || overrides.storageProvider) {
|
|
247
|
+
for (const storage of [overrides?.storageProvider, new _localStorage.LocalStorage()]) {
|
|
248
|
+
if (storage && (await storage.isEnabled())) {
|
|
249
|
+
return storage;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return undefined;
|
|
254
|
+
};
|
|
255
|
+
exports.createEventsStorage = createEventsStorage;
|
|
256
|
+
const getTopLevelDomain = async url => {
|
|
257
|
+
if (!(await new _analyticsCore.CookieStorage().isEnabled()) || !url && (typeof location === "undefined" || !location.hostname)) {
|
|
258
|
+
return "";
|
|
259
|
+
}
|
|
260
|
+
const host = url ?? location.hostname;
|
|
261
|
+
const parts = host.split(".");
|
|
262
|
+
const levels = [];
|
|
263
|
+
const storageKey = "AMP_TLDTEST";
|
|
264
|
+
for (let i = parts.length - 2; i >= 0; --i) {
|
|
265
|
+
levels.push(parts.slice(i).join("."));
|
|
266
|
+
}
|
|
267
|
+
for (let i = 0; i < levels.length; i++) {
|
|
268
|
+
const domain = levels[i];
|
|
269
|
+
const options = {
|
|
270
|
+
domain: "." + domain
|
|
271
|
+
};
|
|
272
|
+
const storage = new _analyticsCore.CookieStorage(options);
|
|
273
|
+
await storage.set(storageKey, 1);
|
|
274
|
+
const value = await storage.get(storageKey);
|
|
275
|
+
if (value) {
|
|
276
|
+
await storage.remove(storageKey);
|
|
277
|
+
return "." + domain;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return "";
|
|
281
|
+
};
|
|
282
|
+
exports.getTopLevelDomain = getTopLevelDomain;
|
|
283
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_analyticsCore","require","_localStorage","_remnantDataMigration","_interopRequireDefault","_storage","_nitroTransport","e","__esModule","default","getDefaultConfig","cookieStorage","MemoryStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","appSetId","idfv","country","cookieExpiration","cookieSameSite","cookieSecure","cookieUpgrade","disableCookies","domain","sessionTimeout","storageProvider","NitroAnalyticsStorage","trackingSessionEvents","transportProvider","nitroTransport","exports","ReactNativeConfig","Config","_optOut","constructor","apiKey","options","defaultConfig","flushIntervalMillis","flushMaxRetries","flushQueueSize","deviceId","lastEventTime","optOut","Boolean","sessionId","userId","appVersion","partnerId","_deviceId","updateStorage","_userId","_sessionId","_lastEventTime","lastEventId","_lastEventId","cache","set","getCookieName","catch","error","loggerProvider","String","useReactNativeConfig","getTopLevelDomain","createCookieStorage","previousCookies","get","queryParams","getQueryParams","createEventsStorage","migrateLegacyData","legacySessionData","RemnantDataMigration","instanceName","undefined","execute","config","UUID","FetchTransport","log","name","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","LocalStorage","CookieStorage","expirationDays","sameSite","secure","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","url","location","hostname","host","parts","split","levels","storageKey","i","length","push","slice","join","value","remove"],"sourceRoot":"../../../src","sources":["analytics/config.ts"],"mappings":"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","ignoreList":[]}
|