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
package/src/index.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import analyticsClient, {
|
|
2
|
+
createInstance,
|
|
3
|
+
} from "./analytics/react-native-client";
|
|
4
|
+
import { prefetchNativeContext } from "./native/context";
|
|
5
|
+
|
|
6
|
+
import * as AnalyticsTypes from "./analytics/types";
|
|
7
|
+
|
|
8
|
+
export { createInstance };
|
|
9
|
+
export const {
|
|
10
|
+
add,
|
|
11
|
+
flush,
|
|
12
|
+
getDeviceId,
|
|
13
|
+
getSessionId,
|
|
14
|
+
getUserId,
|
|
15
|
+
groupIdentify,
|
|
16
|
+
identify,
|
|
17
|
+
init,
|
|
18
|
+
logEvent,
|
|
19
|
+
remove,
|
|
20
|
+
reset,
|
|
21
|
+
revenue,
|
|
22
|
+
setDeviceId,
|
|
23
|
+
setGroup,
|
|
24
|
+
setOptOut,
|
|
25
|
+
setSessionId,
|
|
26
|
+
setUserId,
|
|
27
|
+
shutdown,
|
|
28
|
+
track,
|
|
29
|
+
extendSession,
|
|
30
|
+
} = analyticsClient;
|
|
31
|
+
|
|
32
|
+
export { Revenue, Identify } from "@amplitude/analytics-core";
|
|
33
|
+
export {
|
|
34
|
+
InMemoryStorage,
|
|
35
|
+
LocalStorage,
|
|
36
|
+
MemoryStorage,
|
|
37
|
+
} from "./analytics/storage/local-storage";
|
|
38
|
+
export { NitroAnalyticsStorage, NitroMemoryStorage } from "./native/storage";
|
|
39
|
+
export { nitroHttpClient } from "./native/http";
|
|
40
|
+
export { nitroTransport } from "./analytics/nitro-transport";
|
|
41
|
+
export { prefetchNativeContext };
|
|
42
|
+
export { AnalyticsTypes as Types };
|
|
43
|
+
|
|
44
|
+
export * from "./experiment/types/config";
|
|
45
|
+
export { Experiment } from "./experiment/factory";
|
|
46
|
+
export { StubExperimentClient } from "./experiment/stubClient";
|
|
47
|
+
export { ExperimentClient } from "./experiment/experimentClient";
|
|
48
|
+
export * from "./experiment/types/client";
|
|
49
|
+
export { Source } from "./experiment/types/source";
|
|
50
|
+
export * from "./experiment/types/user";
|
|
51
|
+
export * from "./experiment/types/variant";
|
|
52
|
+
export * from "./experiment/types/exposure";
|
|
53
|
+
export * from "./experiment/types/storage";
|
|
54
|
+
export { LogLevel } from "./experiment/types/logger";
|
|
55
|
+
export type { Logger } from "./experiment/types/logger";
|
|
56
|
+
export { ConsoleLogger } from "./experiment/logger/consoleLogger";
|
|
57
|
+
export {
|
|
58
|
+
LocalStorage as ExperimentLocalStorage,
|
|
59
|
+
MemoryStorage as ExperimentMemoryStorage,
|
|
60
|
+
} from "./experiment/storage/local-storage";
|
|
61
|
+
|
|
62
|
+
export type { AmplitudeContext } from "./AmplitudeContext.nitro";
|
|
63
|
+
export type { AmplitudeStorage } from "./AmplitudeStorage.nitro";
|
|
64
|
+
export type { AmplitudeWorker } from "./AmplitudeWorker.nitro";
|
|
65
|
+
|
|
66
|
+
export const VERSION = "0.1.0";
|
package/src/index.web.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const unsupported = (name: string): never => {
|
|
2
|
+
throw new Error(
|
|
3
|
+
`react-native-nitro-amplitude: ${name} is not supported on web. Use native iOS/Android builds.`,
|
|
4
|
+
);
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const init = () => unsupported("init");
|
|
8
|
+
export const track = () => unsupported("track");
|
|
9
|
+
export const identify = () => unsupported("identify");
|
|
10
|
+
export const createInstance = () => unsupported("createInstance");
|
|
11
|
+
export const Experiment = {
|
|
12
|
+
initialize: () => unsupported("Experiment.initialize"),
|
|
13
|
+
initializeWithAmplitudeAnalytics: () =>
|
|
14
|
+
unsupported("Experiment.initializeWithAmplitudeAnalytics"),
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type { AmplitudeContext } from "./AmplitudeContext.nitro";
|
|
18
|
+
export type { AmplitudeStorage } from "./AmplitudeStorage.nitro";
|
|
19
|
+
export type { AmplitudeWorker } from "./AmplitudeWorker.nitro";
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ReactNativeTrackingOptions } from "@amplitude/analytics-core";
|
|
2
|
+
import { getAmplitudeContext } from "./hybrid";
|
|
3
|
+
|
|
4
|
+
export type NativeApplicationContext = {
|
|
5
|
+
version?: string;
|
|
6
|
+
platform?: string;
|
|
7
|
+
language?: string;
|
|
8
|
+
country?: string;
|
|
9
|
+
osName?: string;
|
|
10
|
+
osVersion?: string;
|
|
11
|
+
deviceBrand?: string;
|
|
12
|
+
deviceManufacturer?: string;
|
|
13
|
+
deviceModel?: string;
|
|
14
|
+
carrier?: string;
|
|
15
|
+
adid?: string;
|
|
16
|
+
appSetId?: string;
|
|
17
|
+
idfv?: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type LegacySessionData = {
|
|
21
|
+
deviceId?: string;
|
|
22
|
+
userId?: string;
|
|
23
|
+
sessionId?: number;
|
|
24
|
+
lastEventTime?: number;
|
|
25
|
+
lastEventId?: number;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export function prefetchNativeContext(): void {
|
|
29
|
+
getAmplitudeContext().prefetch();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function getNativeApplicationContext(
|
|
33
|
+
options: ReactNativeTrackingOptions,
|
|
34
|
+
): NativeApplicationContext {
|
|
35
|
+
const json = getAmplitudeContext().getApplicationContextJson(
|
|
36
|
+
JSON.stringify(options),
|
|
37
|
+
);
|
|
38
|
+
if (!json) {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
return JSON.parse(json) as NativeApplicationContext;
|
|
43
|
+
} catch {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function getLegacySessionData(instanceName: string): LegacySessionData {
|
|
49
|
+
const json = getAmplitudeContext().getLegacySessionDataJson(instanceName);
|
|
50
|
+
if (!json) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
return JSON.parse(json) as LegacySessionData;
|
|
55
|
+
} catch {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function getLegacyEvents(
|
|
61
|
+
instanceName: string,
|
|
62
|
+
eventKind: string,
|
|
63
|
+
): string[] {
|
|
64
|
+
return getAmplitudeContext().getLegacyEventsJson(instanceName, eventKind);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function removeLegacyEvent(
|
|
68
|
+
instanceName: string,
|
|
69
|
+
eventKind: string,
|
|
70
|
+
eventId: number,
|
|
71
|
+
): void {
|
|
72
|
+
getAmplitudeContext().removeLegacyEvent(instanceName, eventKind, eventId);
|
|
73
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { HttpClient, SimpleResponse } from "../experiment/types/transport";
|
|
2
|
+
import { getAmplitudeWorker } from "./hybrid";
|
|
3
|
+
|
|
4
|
+
type PendingRequest = {
|
|
5
|
+
resolve: (response: SimpleResponse) => void;
|
|
6
|
+
reject: (error: Error) => void;
|
|
7
|
+
timeoutId: ReturnType<typeof setTimeout>;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const pendingRequests = new Map<string, PendingRequest>();
|
|
11
|
+
let listenerInstalled = false;
|
|
12
|
+
|
|
13
|
+
function ensureListener(): void {
|
|
14
|
+
if (listenerInstalled) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
listenerInstalled = true;
|
|
18
|
+
getAmplitudeWorker().addOnComplete((requestId, statusCode, body, error) => {
|
|
19
|
+
const pending = pendingRequests.get(requestId);
|
|
20
|
+
if (!pending) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
pendingRequests.delete(requestId);
|
|
24
|
+
clearTimeout(pending.timeoutId);
|
|
25
|
+
if (error) {
|
|
26
|
+
pending.reject(new Error(error));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
pending.resolve({
|
|
30
|
+
status: statusCode,
|
|
31
|
+
body,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function createRequestId(): string {
|
|
37
|
+
return `req_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export class NitroHttpClient implements HttpClient {
|
|
41
|
+
async request(
|
|
42
|
+
requestUrl: string,
|
|
43
|
+
method: string,
|
|
44
|
+
headers: Record<string, string>,
|
|
45
|
+
data: string | null,
|
|
46
|
+
timeoutMillis = 10000,
|
|
47
|
+
): Promise<SimpleResponse> {
|
|
48
|
+
ensureListener();
|
|
49
|
+
const requestId = createRequestId();
|
|
50
|
+
return new Promise<SimpleResponse>((resolve, reject) => {
|
|
51
|
+
const timeoutId = setTimeout(() => {
|
|
52
|
+
pendingRequests.delete(requestId);
|
|
53
|
+
getAmplitudeWorker().cancel(requestId);
|
|
54
|
+
reject(new Error(`Request timed out after ${timeoutMillis}ms`));
|
|
55
|
+
}, timeoutMillis + 250);
|
|
56
|
+
|
|
57
|
+
pendingRequests.set(requestId, { resolve, reject, timeoutId });
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
getAmplitudeWorker().enqueue(
|
|
61
|
+
requestId,
|
|
62
|
+
requestUrl,
|
|
63
|
+
method,
|
|
64
|
+
JSON.stringify(headers),
|
|
65
|
+
data ?? "",
|
|
66
|
+
timeoutMillis,
|
|
67
|
+
);
|
|
68
|
+
} catch (error) {
|
|
69
|
+
pendingRequests.delete(requestId);
|
|
70
|
+
clearTimeout(timeoutId);
|
|
71
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export const nitroHttpClient = new NitroHttpClient();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NitroModules } from "react-native-nitro-modules";
|
|
2
|
+
import type { AmplitudeContext } from "../AmplitudeContext.nitro";
|
|
3
|
+
import type { AmplitudeStorage } from "../AmplitudeStorage.nitro";
|
|
4
|
+
import type { AmplitudeWorker } from "../AmplitudeWorker.nitro";
|
|
5
|
+
|
|
6
|
+
let contextInstance: AmplitudeContext | undefined;
|
|
7
|
+
let storageInstance: AmplitudeStorage | undefined;
|
|
8
|
+
let workerInstance: AmplitudeWorker | undefined;
|
|
9
|
+
|
|
10
|
+
export function getAmplitudeContext(): AmplitudeContext {
|
|
11
|
+
contextInstance ??=
|
|
12
|
+
NitroModules.createHybridObject<AmplitudeContext>("AmplitudeContext");
|
|
13
|
+
return contextInstance;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function getAmplitudeStorage(): AmplitudeStorage {
|
|
17
|
+
storageInstance ??=
|
|
18
|
+
NitroModules.createHybridObject<AmplitudeStorage>("AmplitudeStorage");
|
|
19
|
+
return storageInstance;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getAmplitudeWorker(): AmplitudeWorker {
|
|
23
|
+
workerInstance ??=
|
|
24
|
+
NitroModules.createHybridObject<AmplitudeWorker>("AmplitudeWorker");
|
|
25
|
+
return workerInstance;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function resetHybridInstancesForTests(): void {
|
|
29
|
+
contextInstance = undefined;
|
|
30
|
+
storageInstance = undefined;
|
|
31
|
+
workerInstance = undefined;
|
|
32
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { Storage as AnalyticsStorage } from "@amplitude/analytics-core";
|
|
2
|
+
import type { Storage as ExperimentStorage } from "../experiment/types/storage";
|
|
3
|
+
import { getAmplitudeStorage } from "./hybrid";
|
|
4
|
+
|
|
5
|
+
function namespaceKey(namespace: string, key: string): string {
|
|
6
|
+
return `${namespace}::${key}`;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class NitroAnalyticsStorage<T> implements AnalyticsStorage<T> {
|
|
10
|
+
constructor(private readonly namespace: string) {}
|
|
11
|
+
|
|
12
|
+
async isEnabled(): Promise<boolean> {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async get(key: string): Promise<T | undefined> {
|
|
17
|
+
const raw = await this.getRaw(key);
|
|
18
|
+
if (!raw) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(raw) as T;
|
|
23
|
+
} catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async getRaw(key: string): Promise<string | undefined> {
|
|
29
|
+
return getAmplitudeStorage().get(namespaceKey(this.namespace, key), true);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async set(key: string, value: T): Promise<void> {
|
|
33
|
+
getAmplitudeStorage().set(
|
|
34
|
+
namespaceKey(this.namespace, key),
|
|
35
|
+
JSON.stringify(value),
|
|
36
|
+
true,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async remove(key: string): Promise<void> {
|
|
41
|
+
getAmplitudeStorage().remove(namespaceKey(this.namespace, key), true);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async reset(): Promise<void> {
|
|
45
|
+
const prefix = `${this.namespace}::`;
|
|
46
|
+
const keys = getAmplitudeStorage().getKeysByPrefix(prefix, true);
|
|
47
|
+
if (keys.length > 0) {
|
|
48
|
+
getAmplitudeStorage().removeBatch(keys, true);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export class NitroExperimentStorage implements ExperimentStorage {
|
|
54
|
+
constructor(private readonly namespace: string) {}
|
|
55
|
+
|
|
56
|
+
async get(key: string): Promise<string | null> {
|
|
57
|
+
const value = getAmplitudeStorage().get(
|
|
58
|
+
namespaceKey(this.namespace, key),
|
|
59
|
+
true,
|
|
60
|
+
);
|
|
61
|
+
return value ?? null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async put(key: string, value: string): Promise<void> {
|
|
65
|
+
getAmplitudeStorage().set(namespaceKey(this.namespace, key), value, true);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async delete(key: string): Promise<void> {
|
|
69
|
+
getAmplitudeStorage().remove(namespaceKey(this.namespace, key), true);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async reset(): Promise<void> {
|
|
73
|
+
const prefix = `${this.namespace}::`;
|
|
74
|
+
const keys = getAmplitudeStorage().getKeysByPrefix(prefix, true);
|
|
75
|
+
if (keys.length > 0) {
|
|
76
|
+
getAmplitudeStorage().removeBatch(keys, true);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export class NitroMemoryStorage implements ExperimentStorage {
|
|
82
|
+
constructor(private readonly namespace: string) {}
|
|
83
|
+
|
|
84
|
+
async get(key: string): Promise<string | null> {
|
|
85
|
+
const value = getAmplitudeStorage().get(
|
|
86
|
+
namespaceKey(this.namespace, key),
|
|
87
|
+
false,
|
|
88
|
+
);
|
|
89
|
+
return value ?? null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async put(key: string, value: string): Promise<void> {
|
|
93
|
+
getAmplitudeStorage().set(namespaceKey(this.namespace, key), value, false);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async delete(key: string): Promise<void> {
|
|
97
|
+
getAmplitudeStorage().remove(namespaceKey(this.namespace, key), false);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async reset(): Promise<void> {
|
|
101
|
+
const prefix = `${this.namespace}::`;
|
|
102
|
+
const keys = getAmplitudeStorage().getKeysByPrefix(prefix, false);
|
|
103
|
+
if (keys.length > 0) {
|
|
104
|
+
getAmplitudeStorage().removeBatch(keys, false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|