gitextract_u_wkpk38/ ├── .cursor/ │ └── rules/ │ ├── code-style.mdc │ └── commit-and-pr-guidelines.mdc ├── .env.example ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── Bug_report.md │ │ ├── Feature_request.md │ │ └── Question.md │ ├── actions/ │ │ ├── build-and-test/ │ │ │ └── action.yml │ │ └── e2e-test/ │ │ └── action.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── ci-nx.yml │ ├── ci.yml │ ├── docs.yml │ ├── e2e-session-replay.yml │ ├── e2e.yml │ ├── publish-single-package.yml │ ├── publish-v1.yml │ ├── publish-v2.yml │ ├── rn-smoke.yml │ └── semantic-pr.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── AGENTS.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── commitlint.config.js ├── context7.json ├── example-proxy/ │ ├── .gitignore │ ├── README.md │ └── amplitude-proxy-server.js ├── examples/ │ ├── browser/ │ │ ├── chrome-ext/ │ │ │ ├── amplitude-min.js │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── html-app/ │ │ │ ├── README.md │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ └── package.json │ │ ├── next-app/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── eslint.config.mjs │ │ │ ├── next.config.js │ │ │ ├── package.json │ │ │ ├── pages/ │ │ │ │ ├── _app.tsx │ │ │ │ ├── api/ │ │ │ │ │ └── hello.ts │ │ │ │ └── index.tsx │ │ │ ├── styles/ │ │ │ │ ├── Home.module.css │ │ │ │ └── globals.css │ │ │ └── tsconfig.json │ │ ├── react-app/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ ├── index.html │ │ │ │ ├── manifest.json │ │ │ │ └── robots.txt │ │ │ ├── src/ │ │ │ │ ├── App.css │ │ │ │ ├── App.test.tsx │ │ │ │ ├── App.tsx │ │ │ │ ├── index.css │ │ │ │ ├── index.tsx │ │ │ │ ├── reportWebVitals.ts │ │ │ │ └── setupTests.ts │ │ │ └── tsconfig.json │ │ └── vue-app/ │ │ ├── .browserslistrc │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── components/ │ │ │ │ └── HelloWorld.vue │ │ │ └── main.ts │ │ ├── tsconfig.json │ │ └── vue.config.js │ ├── node/ │ │ └── nest-app/ │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── nest-cli.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.controller.ts │ │ │ ├── app.module.ts │ │ │ ├── app.service.ts │ │ │ ├── main.ts │ │ │ └── views/ │ │ │ └── index.hbs │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── plugins/ │ │ ├── page-view-tracking-enrichment/ │ │ │ └── index.ts │ │ ├── react-native-idfa-plugin/ │ │ │ └── idfaPlugin.ts │ │ └── remove-event-key/ │ │ └── index.ts │ ├── react-native/ │ │ ├── app/ │ │ │ ├── .bundle/ │ │ │ │ └── config │ │ │ ├── .eslintrc.js │ │ │ ├── .gitignore │ │ │ ├── .maestro/ │ │ │ │ └── smoke.yaml │ │ │ ├── .prettierrc.js │ │ │ ├── .watchmanconfig │ │ │ ├── .yarn/ │ │ │ │ └── releases/ │ │ │ │ └── yarn-stable-temp.cjs │ │ │ ├── App.tsx │ │ │ ├── Gemfile │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ └── App.test.tsx │ │ │ ├── android/ │ │ │ │ ├── app/ │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── debug.keystore │ │ │ │ │ ├── proguard-rules.pro │ │ │ │ │ └── src/ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ └── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── app/ │ │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ │ └── MainApplication.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ └── rn_edit_text_material.xml │ │ │ │ │ └── values/ │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── build.gradle │ │ │ │ ├── gradle/ │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ └── settings.gradle │ │ │ ├── app.json │ │ │ ├── babel.config.js │ │ │ ├── index.js │ │ │ ├── ios/ │ │ │ │ ├── .xcode.env │ │ │ │ ├── Podfile │ │ │ │ ├── app/ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ ├── AppDelegate.mm │ │ │ │ │ ├── Images.xcassets/ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ ├── PrivacyInfo.xcprivacy │ │ │ │ │ └── main.m │ │ │ │ ├── app.xcodeproj/ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ └── app.xcscheme │ │ │ │ ├── app.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── appTests/ │ │ │ │ ├── Info.plist │ │ │ │ └── appTests.m │ │ │ ├── jest.config.js │ │ │ ├── metro.config.js │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ └── expo-app/ │ │ ├── .expo-shared/ │ │ │ └── assets.json │ │ ├── .gitignore │ │ ├── App.tsx │ │ ├── README.md │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── app/ │ │ │ │ ├── BUCK │ │ │ │ ├── build.gradle │ │ │ │ ├── build_defs.bzl │ │ │ │ ├── debug.keystore │ │ │ │ ├── proguard-rules.pro │ │ │ │ └── src/ │ │ │ │ ├── debug/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── amplitude/ │ │ │ │ │ └── expoapp/ │ │ │ │ │ └── ReactNativeFlipper.java │ │ │ │ └── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── amplitude/ │ │ │ │ │ └── expoapp/ │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ ├── MainApplication.java │ │ │ │ │ └── newarchitecture/ │ │ │ │ │ ├── MainApplicationReactNativeHost.java │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── MainComponentsRegistry.java │ │ │ │ │ └── modules/ │ │ │ │ │ └── MainApplicationTurboModuleManagerDelegate.java │ │ │ │ ├── jni/ │ │ │ │ │ ├── Android.mk │ │ │ │ │ ├── MainApplicationModuleProvider.cpp │ │ │ │ │ ├── MainApplicationModuleProvider.h │ │ │ │ │ ├── MainApplicationTurboModuleManagerDelegate.cpp │ │ │ │ │ ├── MainApplicationTurboModuleManagerDelegate.h │ │ │ │ │ ├── MainComponentsRegistry.cpp │ │ │ │ │ ├── MainComponentsRegistry.h │ │ │ │ │ └── OnLoad.cpp │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ ├── rn_edit_text_material.xml │ │ │ │ │ └── splashscreen.xml │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── values/ │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ └── values-night/ │ │ │ │ └── colors.xml │ │ │ ├── build.gradle │ │ │ ├── gradle/ │ │ │ │ └── wrapper/ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ └── settings.gradle │ │ ├── app.json │ │ ├── babel.config.js │ │ ├── index.js │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ ├── Podfile │ │ │ ├── Podfile.properties.json │ │ │ ├── expoapp/ │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── AppDelegate.mm │ │ │ │ ├── Images.xcassets/ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── SplashScreen.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── SplashScreenBackground.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── Info.plist │ │ │ │ ├── SplashScreen.storyboard │ │ │ │ ├── Supporting/ │ │ │ │ │ └── Expo.plist │ │ │ │ ├── expoapp.entitlements │ │ │ │ ├── main.m │ │ │ │ └── noop-file.swift │ │ │ ├── expoapp.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── expoapp.xcscheme │ │ │ └── expoapp.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── metro.config.js │ │ ├── package.json │ │ └── tsconfig.json │ └── unified/ │ └── react-app/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ └── tsconfig.json ├── jest.config.js ├── lerna.json ├── nx.json ├── package.json ├── packages/ │ ├── analytics-browser/ │ │ ├── .eslintignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── cookie-consent.spec.ts │ │ │ ├── cookies-is-enabled.spec.ts │ │ │ ├── events.spec.ts │ │ │ ├── helpers.ts │ │ │ ├── iframe-sandbox.spec.ts │ │ │ ├── proxy-server.spec.ts │ │ │ └── title.spec.ts │ │ ├── generated/ │ │ │ ├── amplitude-bookmarklet-snippet.js │ │ │ ├── amplitude-gtm-snippet.js │ │ │ └── amplitude-snippet.js │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── playground/ │ │ │ ├── html/ │ │ │ │ └── index.html │ │ │ └── react-spa/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ ├── index.html │ │ │ │ ├── manifest.json │ │ │ │ └── robots.txt │ │ │ ├── src/ │ │ │ │ ├── App.css │ │ │ │ ├── App.test.tsx │ │ │ │ ├── App.tsx │ │ │ │ ├── Contact.tsx │ │ │ │ ├── Home.tsx │ │ │ │ ├── Other.tsx │ │ │ │ ├── index.css │ │ │ │ └── index.tsx │ │ │ └── tsconfig.json │ │ ├── playwright.config.ts │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ └── det-notification.ts │ │ │ ├── attribution/ │ │ │ │ ├── helpers.ts │ │ │ │ ├── tracking-methods.ts │ │ │ │ └── web-attribution.ts │ │ │ ├── browser-client-factory.ts │ │ │ ├── browser-client.ts │ │ │ ├── config/ │ │ │ │ └── joined-config.ts │ │ │ ├── config.ts │ │ │ ├── constants.ts │ │ │ ├── cookie-migration/ │ │ │ │ └── index.ts │ │ │ ├── default-tracking.ts │ │ │ ├── det-notification.ts │ │ │ ├── gtm-snippet-index.ts │ │ │ ├── index.ts │ │ │ ├── lib-prefix.ts │ │ │ ├── plugins/ │ │ │ │ ├── context.ts │ │ │ │ ├── file-download-tracking.ts │ │ │ │ ├── form-interaction-tracking.ts │ │ │ │ └── network-connectivity-checker.ts │ │ │ ├── snippet-index.ts │ │ │ ├── storage/ │ │ │ │ ├── local-storage.ts │ │ │ │ └── session-storage.ts │ │ │ ├── transports/ │ │ │ │ ├── fetch.ts │ │ │ │ ├── send-beacon.ts │ │ │ │ └── xhr.ts │ │ │ ├── types.ts │ │ │ ├── utils/ │ │ │ │ └── snippet-helper.ts │ │ │ ├── version.ts │ │ │ └── video-capture/ │ │ │ └── video-capture.ts │ │ ├── test/ │ │ │ ├── attribution/ │ │ │ │ ├── helpers.test.ts │ │ │ │ ├── tracking-methods.test.ts │ │ │ │ └── web-attribution.test.ts │ │ │ ├── browser-client.test.ts │ │ │ ├── config/ │ │ │ │ └── joined-config.test.ts │ │ │ ├── config.test.ts │ │ │ ├── cookie-migration/ │ │ │ │ └── index.test.ts │ │ │ ├── default-tracking.test.ts │ │ │ ├── det-notification.test.ts │ │ │ ├── helpers/ │ │ │ │ ├── constants.ts │ │ │ │ └── mock.ts │ │ │ ├── index.test.ts │ │ │ ├── plugins/ │ │ │ │ ├── context.test.ts │ │ │ │ ├── file-download-tracking.test.ts │ │ │ │ ├── form-interaction-tracking.test.ts │ │ │ │ ├── network-connectivity-checker.test.ts │ │ │ │ ├── page-view-tracking-enrichment.test.ts │ │ │ │ ├── page-view-tracking-enrichment.ts │ │ │ │ ├── remove-event-key-enrichment.test.ts │ │ │ │ └── remove-event-key-enrichment.ts │ │ │ ├── setup.js │ │ │ ├── storage/ │ │ │ │ ├── local-storage.test.ts │ │ │ │ └── session-storage.test.ts │ │ │ ├── transport/ │ │ │ │ ├── fetch.test.ts │ │ │ │ ├── send-beacon.test.ts │ │ │ │ └── xhr.test.ts │ │ │ ├── types.test.ts │ │ │ ├── utils/ │ │ │ │ ├── fake-browser-client.ts │ │ │ │ └── snippet-helper.test.ts │ │ │ └── video-capture/ │ │ │ ├── mock-video-observer.ts │ │ │ └── video-capture.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── analytics-browser-test/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── test/ │ │ │ ├── constants.ts │ │ │ ├── helpers.ts │ │ │ ├── in-memory-storage.test.ts │ │ │ ├── index.test.ts │ │ │ ├── responses.ts │ │ │ ├── setup.ts │ │ │ └── web-attribution.test.ts │ │ └── tsconfig.json │ ├── analytics-client-common/ │ │ ├── CHANGELOG.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── analytics-connector.ts │ │ │ ├── attribution/ │ │ │ │ ├── campaign-parser.ts │ │ │ │ ├── campaign-tracker.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── helpers.ts │ │ │ │ └── web-attribution.ts │ │ │ ├── cookie-name.ts │ │ │ ├── default-tracking.ts │ │ │ ├── global-scope.ts │ │ │ ├── index.ts │ │ │ ├── language.ts │ │ │ ├── plugins/ │ │ │ │ └── identity.ts │ │ │ ├── query-params.ts │ │ │ ├── session.ts │ │ │ ├── storage/ │ │ │ │ ├── cookie.ts │ │ │ │ └── helpers.ts │ │ │ ├── transports/ │ │ │ │ └── fetch.ts │ │ │ └── types/ │ │ │ └── global.ts │ │ ├── test/ │ │ │ ├── analytics-connector.test.ts │ │ │ ├── attribution/ │ │ │ │ ├── campaign-parser.test.ts │ │ │ │ ├── campaign-tracker.test.ts │ │ │ │ ├── helpers.test.ts │ │ │ │ └── web-attribution.test.ts │ │ │ ├── cookie-name.test.ts │ │ │ ├── default-tracking.test.ts │ │ │ ├── global-scope.test.ts │ │ │ ├── helpers/ │ │ │ │ └── constants.ts │ │ │ ├── language.test.ts │ │ │ ├── plugins/ │ │ │ │ └── identity.test.ts │ │ │ ├── query-params.test.ts │ │ │ ├── session.test.ts │ │ │ ├── storage/ │ │ │ │ └── cookies.test.ts │ │ │ └── transports/ │ │ │ └── fetch.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── analytics-core/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __mocks__/ │ │ │ │ └── logger.ts │ │ │ ├── analytics-connector.ts │ │ │ ├── campaign/ │ │ │ │ └── campaign-parser.ts │ │ │ ├── config.ts │ │ │ ├── cookie-name.ts │ │ │ ├── core-client.ts │ │ │ ├── diagnostics/ │ │ │ │ ├── diagnostics-client.ts │ │ │ │ ├── diagnostics-storage.ts │ │ │ │ └── uncaught-sdk-errors.ts │ │ │ ├── event-bridge/ │ │ │ │ ├── event-bridge-channel.ts │ │ │ │ ├── event-bridge-container.ts │ │ │ │ └── event-bridge.ts │ │ │ ├── global-scope.ts │ │ │ ├── identify.ts │ │ │ ├── index.ts │ │ │ ├── language.ts │ │ │ ├── logger.ts │ │ │ ├── messenger/ │ │ │ │ ├── background-capture.ts │ │ │ │ ├── base-window-messenger.ts │ │ │ │ ├── constants.ts │ │ │ │ └── utils.ts │ │ │ ├── network-request-event.ts │ │ │ ├── observers/ │ │ │ │ ├── console.ts │ │ │ │ ├── network.ts │ │ │ │ └── video.ts │ │ │ ├── plugins/ │ │ │ │ ├── destination.ts │ │ │ │ ├── helpers.ts │ │ │ │ └── identity.ts │ │ │ ├── query-params.ts │ │ │ ├── remote-config/ │ │ │ │ ├── remote-config-localstorage.ts │ │ │ │ └── remote-config.ts │ │ │ ├── revenue.ts │ │ │ ├── session.ts │ │ │ ├── storage/ │ │ │ │ ├── browser-storage.ts │ │ │ │ ├── cookie.ts │ │ │ │ ├── helpers.ts │ │ │ │ └── memory.ts │ │ │ ├── timeline.ts │ │ │ ├── transports/ │ │ │ │ ├── base.ts │ │ │ │ ├── fetch.ts │ │ │ │ └── gzip.ts │ │ │ ├── types/ │ │ │ │ ├── amplitude-context.ts │ │ │ │ ├── campaign.ts │ │ │ │ ├── client/ │ │ │ │ │ ├── analytics-client.ts │ │ │ │ │ ├── browser-client.ts │ │ │ │ │ ├── core-client.ts │ │ │ │ │ ├── node-client.ts │ │ │ │ │ └── react-native-client.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── browser-config.ts │ │ │ │ │ ├── core-config.ts │ │ │ │ │ ├── node-config.ts │ │ │ │ │ └── react-native-config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── custom-enrichment.ts │ │ │ │ ├── element-interactions.ts │ │ │ │ ├── event/ │ │ │ │ │ ├── base-event.ts │ │ │ │ │ ├── event.ts │ │ │ │ │ ├── ingestion-metadata.ts │ │ │ │ │ └── plan.ts │ │ │ │ ├── event-callback.ts │ │ │ │ ├── form-interactions.ts │ │ │ │ ├── frustration-interactions.ts │ │ │ │ ├── loglevel.ts │ │ │ │ ├── messages.ts │ │ │ │ ├── network-tracking.ts │ │ │ │ ├── offline.ts │ │ │ │ ├── page-url-enrichment.ts │ │ │ │ ├── page-view-tracking.ts │ │ │ │ ├── payload.ts │ │ │ │ ├── performance-tracking.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── proxy.ts │ │ │ │ ├── response.ts │ │ │ │ ├── result.ts │ │ │ │ ├── server-zone.ts │ │ │ │ ├── status.ts │ │ │ │ ├── storage.ts │ │ │ │ ├── transport.ts │ │ │ │ └── user-session.ts │ │ │ ├── utils/ │ │ │ │ ├── chunk.ts │ │ │ │ ├── debug.ts │ │ │ │ ├── environment.ts │ │ │ │ ├── event-builder.ts │ │ │ │ ├── json-query.ts │ │ │ │ ├── observable.ts │ │ │ │ ├── omit-undefined.ts │ │ │ │ ├── result-builder.ts │ │ │ │ ├── return-wrapper.ts │ │ │ │ ├── safe-stringify.ts │ │ │ │ ├── sampling.ts │ │ │ │ ├── status-code.ts │ │ │ │ ├── url-utils.ts │ │ │ │ ├── uuid.ts │ │ │ │ └── valid-properties.ts │ │ │ └── video-analytics/ │ │ │ ├── track-video.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── analytics-connector.test.ts │ │ │ ├── campaign/ │ │ │ │ └── campaign-parser.test.ts │ │ │ ├── config.test.ts │ │ │ ├── cookie-name.test.ts │ │ │ ├── core-client.test.ts │ │ │ ├── diagnostics/ │ │ │ │ ├── diagnostics-client.test.ts │ │ │ │ ├── diagnostics-storage.test.ts │ │ │ │ └── uncaught-sdk-errors.test.ts │ │ │ ├── event-bridge/ │ │ │ │ ├── event-bridge-channel.test.ts │ │ │ │ ├── event-bridge-container.test.ts │ │ │ │ └── event-bridge.test.ts │ │ │ ├── global-scope.test.ts │ │ │ ├── helpers/ │ │ │ │ ├── default.ts │ │ │ │ └── util.ts │ │ │ ├── identify.test.ts │ │ │ ├── index.test.ts │ │ │ ├── language.test.ts │ │ │ ├── logger.test.ts │ │ │ ├── messenger/ │ │ │ │ ├── background-capture.test.ts │ │ │ │ ├── base-window-messenger.test.ts │ │ │ │ └── utils.test.ts │ │ │ ├── network-observer.test.ts │ │ │ ├── observers/ │ │ │ │ ├── console.test.ts │ │ │ │ └── video.test.ts │ │ │ ├── plugins/ │ │ │ │ ├── destination.test.ts │ │ │ │ ├── helpers.test.ts │ │ │ │ └── identity.test.ts │ │ │ ├── query-params.test.ts │ │ │ ├── remote-config/ │ │ │ │ ├── remote-config-localstorage.test.ts │ │ │ │ └── remote-config.test.ts │ │ │ ├── revenue.test.ts │ │ │ ├── session.test.ts │ │ │ ├── setup.js │ │ │ ├── storage/ │ │ │ │ ├── browser-storage.test.ts │ │ │ │ ├── cookies.test.ts │ │ │ │ ├── helpers.test.ts │ │ │ │ └── memory.test.ts │ │ │ ├── timeline.test.ts │ │ │ ├── transports/ │ │ │ │ ├── base.test.ts │ │ │ │ ├── fetch.test.ts │ │ │ │ └── gzip.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── utils/ │ │ │ │ ├── chunk.test.ts │ │ │ │ ├── debug.test.ts │ │ │ │ ├── environment.test.ts │ │ │ │ ├── event-builder.test.ts │ │ │ │ ├── json-query.test.ts │ │ │ │ ├── observable.test.ts │ │ │ │ ├── omit-undefined.test.ts │ │ │ │ ├── result-builder.test.ts │ │ │ │ ├── return-wrapper.test.ts │ │ │ │ ├── safe-stringify.test.ts │ │ │ │ ├── sampling.test.ts │ │ │ │ ├── url-utils.test.ts │ │ │ │ ├── uuid.test.ts │ │ │ │ └── valid-properties.test.ts │ │ │ └── video-analytics/ │ │ │ ├── mock-video.ts │ │ │ └── track-video.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── analytics-node/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── node-client.ts │ │ │ ├── plugins/ │ │ │ │ └── context.ts │ │ │ ├── transports/ │ │ │ │ └── http.ts │ │ │ ├── types.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── config.test.ts │ │ │ ├── helpers/ │ │ │ │ └── default.ts │ │ │ ├── index.test.ts │ │ │ ├── node-client.test.ts │ │ │ ├── plugins/ │ │ │ │ └── context.test.ts │ │ │ ├── transport/ │ │ │ │ └── http.test.ts │ │ │ └── types.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── analytics-node-test/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── test/ │ │ │ ├── constants.ts │ │ │ ├── index.test.ts │ │ │ └── responses.ts │ │ └── tsconfig.json │ ├── analytics-react-native/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── __mocks__/ │ │ │ └── @react-native-async-storage/ │ │ │ └── async-storage.ts │ │ ├── amplitude-react-native.podspec │ │ ├── android/ │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── AndroidManifestNew.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── amplitude/ │ │ │ └── reactnative/ │ │ │ ├── AmplitudeReactNativeModule.kt │ │ │ ├── AmplitudeReactNativePackage.java │ │ │ ├── AndroidContextProvider.kt │ │ │ ├── AndroidLogger.kt │ │ │ └── LegacyDatabaseStorage.kt │ │ ├── babel.config.js │ │ ├── ios/ │ │ │ ├── AmplitudeReactNative-Bridging-Header.h │ │ │ ├── AmplitudeReactNative.m │ │ │ ├── AmplitudeReactNative.swift │ │ │ ├── AmplitudeReactNative.xcodeproj/ │ │ │ │ └── project.pbxproj │ │ │ ├── AppleContextProvider.swift │ │ │ └── LegacyDatabaseStorage.swift │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── campaign/ │ │ │ │ ├── campaign-tracker.ts │ │ │ │ └── types.ts │ │ │ ├── config.ts │ │ │ ├── cookie-migration/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── migration/ │ │ │ │ └── remnant-data-migration.ts │ │ │ ├── plugins/ │ │ │ │ └── context.ts │ │ │ ├── react-native-client.ts │ │ │ ├── storage/ │ │ │ │ └── local-storage.ts │ │ │ ├── types.ts │ │ │ ├── utils/ │ │ │ │ └── platform.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── config.test.ts │ │ │ ├── cookie-migration/ │ │ │ │ └── index.test.ts │ │ │ ├── helpers/ │ │ │ │ ├── constants.ts │ │ │ │ └── default.ts │ │ │ ├── index.test.ts │ │ │ ├── migration/ │ │ │ │ └── remnant-data-migration.test.ts │ │ │ ├── mock/ │ │ │ │ ├── @react-native-async-storage/ │ │ │ │ │ └── async-storage.js │ │ │ │ ├── setup-mobile.ts │ │ │ │ └── setup-web.ts │ │ │ ├── plugins/ │ │ │ │ └── context.test.ts │ │ │ ├── react-native-client.test.ts │ │ │ ├── react-native-sessions.test.ts │ │ │ ├── storage/ │ │ │ │ └── local-storage.test.ts │ │ │ ├── tsconfig.json │ │ │ └── types.test.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── analytics-types/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── amplitude-promise.ts │ │ │ ├── base-event.ts │ │ │ ├── campaign.ts │ │ │ ├── client/ │ │ │ │ ├── core-client.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node-client.ts │ │ │ │ └── web-client.ts │ │ │ ├── config/ │ │ │ │ ├── browser.ts │ │ │ │ ├── core.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node.ts │ │ │ │ └── react-native.ts │ │ │ ├── destination-context.ts │ │ │ ├── element-interactions.ts │ │ │ ├── event-bridge.ts │ │ │ ├── event-callback.ts │ │ │ ├── event.ts │ │ │ ├── index.ts │ │ │ ├── ingestion-metadata.ts │ │ │ ├── logger.ts │ │ │ ├── offline.ts │ │ │ ├── page-view-tracking.ts │ │ │ ├── payload.ts │ │ │ ├── plan.ts │ │ │ ├── plugin.ts │ │ │ ├── proxy.ts │ │ │ ├── response.ts │ │ │ ├── result.ts │ │ │ ├── server-zone.ts │ │ │ ├── status.ts │ │ │ ├── storage.ts │ │ │ ├── transport.ts │ │ │ ├── user-session.ts │ │ │ └── utm.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── e2e-remote-config/ │ │ ├── README.md │ │ ├── remote-config-test-staging.sh │ │ ├── remote-config-test.sh │ │ └── test/ │ │ └── e2e/ │ │ └── fetch-remote-config.spec.ts │ ├── gtm-snippet/ │ │ ├── CHANGELOG.md │ │ ├── amplitude-wrapper.js.ejs │ │ ├── e2e/ │ │ │ ├── gtm-snippet.spec.ts │ │ │ └── helpers.ts │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── rollup.config.js │ │ ├── scripts/ │ │ │ ├── build-snippet.js │ │ │ ├── upload-to-s3.js │ │ │ └── version.js │ │ └── tsconfig.json │ ├── plugin-autocapture-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── e2e/ │ │ │ └── autocapture.spec.ts │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── autocapture/ │ │ │ │ ├── track-action-click.ts │ │ │ │ ├── track-change.ts │ │ │ │ ├── track-click.ts │ │ │ │ ├── track-dead-click.ts │ │ │ │ ├── track-error-click.ts │ │ │ │ ├── track-exposure.ts │ │ │ │ ├── track-long-task.ts │ │ │ │ ├── track-rage-click.ts │ │ │ │ ├── track-scroll.ts │ │ │ │ ├── track-thrashed-cursor.ts │ │ │ │ └── track-viewport-content-updated.ts │ │ │ ├── autocapture-plugin.ts │ │ │ ├── constants.ts │ │ │ ├── data-extractor.ts │ │ │ ├── frustration-plugin.ts │ │ │ ├── helpers.ts │ │ │ ├── hierarchy.ts │ │ │ ├── index.ts │ │ │ ├── libs/ │ │ │ │ ├── element-path.ts │ │ │ │ └── messenger.ts │ │ │ ├── observables.ts │ │ │ ├── pageActions/ │ │ │ │ ├── actions.ts │ │ │ │ ├── matchEventToFilter.ts │ │ │ │ └── triggers.ts │ │ │ ├── performance-plugin.ts │ │ │ ├── typings/ │ │ │ │ └── autocapture.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── autocapture-plugin/ │ │ │ │ ├── actions.test.ts │ │ │ │ ├── frustration-plugin.test.ts │ │ │ │ ├── performance-plugin.test.ts │ │ │ │ ├── track-action-clicks.test.ts │ │ │ │ ├── track-dead-click.test.ts │ │ │ │ ├── track-error-click.test.ts │ │ │ │ ├── track-exposure.test.ts │ │ │ │ ├── track-long-task.test.ts │ │ │ │ ├── track-rage-click.test.ts │ │ │ │ ├── track-scroll.test.ts │ │ │ │ ├── track-thrashed-cursor.test.ts │ │ │ │ └── viewport-content-updated.test.ts │ │ │ ├── constants.test.ts │ │ │ ├── data-extractor.test.ts │ │ │ ├── default-event-tracking-advanced.test.ts │ │ │ ├── helpers.test.ts │ │ │ ├── hierarchy.test.ts │ │ │ ├── mock-browser-client.ts │ │ │ ├── observable.test.ts │ │ │ ├── observables-coverage.test.ts │ │ │ ├── observables.test.ts │ │ │ ├── pageActions/ │ │ │ │ ├── matchEventToFilter.test.ts │ │ │ │ └── triggers.test.ts │ │ │ ├── setup.ts │ │ │ └── utils.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-custom-enrichment-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── custom-enrichment.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── custom-enrichment.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-event-property-attribution-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── event-property-tracking.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── event-property-tracking.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-experiment-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── experiment.ts │ │ │ ├── index.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── experiment.test.ts │ │ │ └── version.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-global-user-properties/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── global-user-properties.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ └── typings/ │ │ │ └── global-user-properties.ts │ │ ├── test/ │ │ │ └── global-user-properties.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-network-capture-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── network-capture-plugin.ts │ │ │ ├── track-network-event.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── autocapture-plugin/ │ │ │ │ └── track-network-event.test.ts │ │ │ ├── e2e/ │ │ │ │ ├── fetch.spec.ts │ │ │ │ └── xhr.spec.ts │ │ │ ├── mock-browser-client.ts │ │ │ └── setup.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-page-url-enrichment-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── page-url-enrichment.ts │ │ │ └── typings/ │ │ │ └── page-url-enrichment.ts │ │ ├── test/ │ │ │ ├── mock-browser-client.ts │ │ │ └── page-url-enrichment.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-page-view-tracking-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── page-view-tracking.ts │ │ │ └── typings/ │ │ │ └── page-view-tracking.ts │ │ ├── test/ │ │ │ ├── mock-browser-client.ts │ │ │ └── page-view-tracking.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-session-replay-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── scripts/ │ │ │ └── publish/ │ │ │ └── upload-to-s3.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── session-replay.ts │ │ │ ├── typings/ │ │ │ │ └── session-replay.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── integration/ │ │ │ │ ├── browser-sdk-integration.test.ts │ │ │ │ └── mockAPIHandlers.ts │ │ │ ├── jest-setup.js │ │ │ ├── jsdom-extended.js │ │ │ ├── plugin-helpers.test.ts │ │ │ └── session-replay.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-session-replay-react-native/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .nvmrc │ │ ├── .watchmanconfig │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── amplitude-plugin-session-replay-react-native.podspec │ │ ├── android/ │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── AndroidManifestNew.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── amplitude/ │ │ │ └── pluginsessionreplayreactnative/ │ │ │ ├── PluginSessionReplayReactNativeModule.kt │ │ │ ├── PluginSessionReplayReactNativePackage.kt │ │ │ └── PluginSessionReplayViewManager.kt │ │ ├── babel.config.js │ │ ├── example/ │ │ │ ├── .bundle/ │ │ │ │ └── config │ │ │ ├── .eslintrc.js │ │ │ ├── .gitignore │ │ │ ├── .prettierrc.js │ │ │ ├── .watchmanconfig │ │ │ ├── App.tsx │ │ │ ├── Gemfile │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ └── App.test.tsx │ │ │ ├── android/ │ │ │ │ ├── app/ │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── debug.keystore │ │ │ │ │ ├── proguard-rules.pro │ │ │ │ │ └── src/ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ └── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ │ └── MainApplication.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ └── rn_edit_text_material.xml │ │ │ │ │ └── values/ │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── build.gradle │ │ │ │ ├── gradle/ │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ └── settings.gradle │ │ │ ├── app.json │ │ │ ├── babel.config.js │ │ │ ├── index.js │ │ │ ├── ios/ │ │ │ │ ├── .xcode.env │ │ │ │ ├── Podfile │ │ │ │ ├── example/ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ ├── AppDelegate.mm │ │ │ │ │ ├── Images.xcassets/ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ ├── PrivacyInfo.xcprivacy │ │ │ │ │ └── main.m │ │ │ │ ├── example.xcodeproj/ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ └── example.xcscheme │ │ │ │ ├── example.xcworkspace/ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ └── exampleTests/ │ │ │ │ ├── Info.plist │ │ │ │ └── exampleTests.m │ │ │ ├── jest.config.js │ │ │ ├── metro.config.js │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ ├── ios/ │ │ │ ├── ConsoleLogger.swift │ │ │ ├── PluginSessionReplayReactNative-Bridging-Header.h │ │ │ ├── PluginSessionReplayReactNative.mm │ │ │ ├── PluginSessionReplayReactNative.swift │ │ │ └── RCTAmpMaskViewManager.m │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app-mask-view.tsx │ │ │ ├── index.tsx │ │ │ ├── native-module.tsx │ │ │ ├── session-replay-config.ts │ │ │ ├── session-replay.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── index.test.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── plugin-stub-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── stub-plugin.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ └── index.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-web-attribution-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── typings/ │ │ │ │ └── web-attribution.ts │ │ │ └── web-attribution.ts │ │ ├── test/ │ │ │ └── web-attribution.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── plugin-web-vitals-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── version.ts │ │ │ └── web-vitals-plugin.ts │ │ ├── test/ │ │ │ └── web-vitals-plugin.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── segment-session-replay-plugin/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── scripts/ │ │ │ └── publish/ │ │ │ └── upload-to-s3.js │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── typings/ │ │ │ │ └── wrapper.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── helpers.test.ts │ │ │ └── index.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── segment-session-replay-plugin-react-native/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── jest.config.js │ │ ├── jest.setup.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── segment-session-replay-plugin.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── segment-session-replay-plugin.test.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── session-replay-browser/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── README.md │ │ │ ├── back-pressure.spec.ts │ │ │ ├── capture.spec.ts │ │ │ ├── cross-origin-iframe.spec.ts │ │ │ ├── guard.spec.ts │ │ │ ├── helpers.ts │ │ │ ├── idb.spec.ts │ │ │ ├── mutation-merge.spec.ts │ │ │ ├── playwright.config.ts │ │ │ ├── privacy.spec.ts │ │ │ ├── sampling.spec.ts │ │ │ ├── shadow-dom.spec.ts │ │ │ ├── size-limits.spec.ts │ │ │ └── trc-url-rule.spec.ts │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── rollup.config.js │ │ ├── scripts/ │ │ │ └── publish/ │ │ │ └── upload-to-s3.js │ │ ├── src/ │ │ │ ├── beacon-transport.ts │ │ │ ├── config/ │ │ │ │ ├── joined-config.ts │ │ │ │ ├── local-config.ts │ │ │ │ └── types.ts │ │ │ ├── constants.ts │ │ │ ├── cross-origin-iframes.ts │ │ │ ├── events/ │ │ │ │ ├── base-events-store.ts │ │ │ │ ├── event-compressor.ts │ │ │ │ ├── events-idb-store.ts │ │ │ │ ├── events-manager.ts │ │ │ │ ├── events-memory-store.ts │ │ │ │ ├── merge-mutation-events.ts │ │ │ │ └── multi-manager.ts │ │ │ ├── helpers.ts │ │ │ ├── hooks/ │ │ │ │ ├── click.ts │ │ │ │ └── scroll.ts │ │ │ ├── identifiers.ts │ │ │ ├── index.ts │ │ │ ├── libs/ │ │ │ │ └── finder.ts │ │ │ ├── logger.ts │ │ │ ├── messages.ts │ │ │ ├── observers/ │ │ │ │ └── index.ts │ │ │ ├── observers.ts │ │ │ ├── plugins/ │ │ │ │ ├── index.ts │ │ │ │ └── url-tracking-plugin.ts │ │ │ ├── replay-start-time-store.ts │ │ │ ├── sampling.ts │ │ │ ├── session-replay-factory.ts │ │ │ ├── session-replay.ts │ │ │ ├── targeting/ │ │ │ │ ├── targeting-idb-store.ts │ │ │ │ └── targeting-manager.ts │ │ │ ├── track-destination.ts │ │ │ ├── typings/ │ │ │ │ └── session-replay.ts │ │ │ ├── utils/ │ │ │ │ ├── get-input-type.ts │ │ │ │ ├── gzip.ts │ │ │ │ ├── is-abort-error.ts │ │ │ │ ├── rrweb.ts │ │ │ │ └── server-url.ts │ │ │ ├── version.ts │ │ │ └── worker/ │ │ │ ├── compression.ts │ │ │ ├── index.ts │ │ │ └── track-destination.ts │ │ ├── test/ │ │ │ ├── __mocks__/ │ │ │ │ └── worker.ts │ │ │ ├── base-events-store.test.ts │ │ │ ├── config/ │ │ │ │ └── joined-config.test.ts │ │ │ ├── cross-origin-iframes.test.ts │ │ │ ├── event-compressor.test.ts │ │ │ ├── events-idb-store-multitab.test.ts │ │ │ ├── events-idb-store-timeout.test.ts │ │ │ ├── events-idb-store.test.ts │ │ │ ├── events-manager.test.ts │ │ │ ├── events-memory-store.test.ts │ │ │ ├── flag-config-data.ts │ │ │ ├── helpers.test.ts │ │ │ ├── hooks/ │ │ │ │ ├── beacon.test.ts │ │ │ │ ├── click.test.ts │ │ │ │ └── scroll.test.ts │ │ │ ├── index.test.ts │ │ │ ├── integration/ │ │ │ │ └── sampling.test.ts │ │ │ ├── integration.test.ts │ │ │ ├── jest-setup.js │ │ │ ├── logger.test.ts │ │ │ ├── merge-mutation-events.test.ts │ │ │ ├── observers.test.ts │ │ │ ├── replay-start-time-store.test.ts │ │ │ ├── sampling.test.ts │ │ │ ├── script/ │ │ │ │ └── test-script-tag.html │ │ │ ├── session-replay-factory.test.ts │ │ │ ├── session-replay.test.ts │ │ │ ├── targeting/ │ │ │ │ ├── targeting-idb-store.test.ts │ │ │ │ └── targeting-manager.test.ts │ │ │ ├── test-data.ts │ │ │ ├── track-destination.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── url-tracking-plugin.test.ts │ │ │ ├── utils/ │ │ │ │ ├── get-input-type.test.ts │ │ │ │ ├── is-abort-error.test.ts │ │ │ │ └── rrweb.test.ts │ │ │ └── worker/ │ │ │ ├── compression.test.ts │ │ │ └── track-destination.test.ts │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ ├── tsconfig.json │ │ └── tsconfig.worker.json │ ├── session-replay-react-native/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .nvmrc │ │ ├── .watchmanconfig │ │ ├── AmplitudeSessionReplayReactNative.podspec │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── android/ │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── AndroidManifestNew.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── amplitude/ │ │ │ └── sessionreplayreactnative/ │ │ │ ├── SessionReplayReactNativeModule.kt │ │ │ ├── SessionReplayReactNativePackage.kt │ │ │ └── SessionReplayReactNativeViewManager.kt │ │ ├── babel.config.js │ │ ├── ios/ │ │ │ ├── AMPNativeSessionReplay.mm │ │ │ ├── NativeSessionReplay-Bridging-Header.h │ │ │ ├── NativeSessionReplay.swift │ │ │ └── RCTAmpMaskViewManager.m │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── amp-mask-view.tsx │ │ │ ├── index.tsx │ │ │ ├── logger.ts │ │ │ ├── native-module.ts │ │ │ ├── plugin-session-replay-config.ts │ │ │ ├── plugin-session-replay.ts │ │ │ ├── session-replay-config.ts │ │ │ ├── session-replay.ts │ │ │ └── version.ts │ │ ├── test/ │ │ │ ├── __mocks__/ │ │ │ │ └── react-native.ts │ │ │ ├── index.test.ts │ │ │ ├── logger.test.ts │ │ │ ├── plugin-session-replay.test.ts │ │ │ ├── session-replay.test.ts │ │ │ ├── tsconfig.json │ │ │ └── utils/ │ │ │ ├── logger.ts │ │ │ └── reactNativeClient.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── targeting/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── targeting-factory.ts │ │ │ ├── targeting-idb-store.ts │ │ │ ├── targeting.ts │ │ │ └── typings/ │ │ │ └── targeting.ts │ │ ├── test/ │ │ │ ├── flag-config-data/ │ │ │ │ ├── catch-all.ts │ │ │ │ ├── event-props.ts │ │ │ │ ├── multiple-conditions.ts │ │ │ │ ├── multiple-events.ts │ │ │ │ └── user-props.ts │ │ │ ├── jest-setup.js │ │ │ ├── targeting-factory.test.ts │ │ │ ├── targeting-idb-store.test.ts │ │ │ ├── targeting.test.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.es5.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ └── unified/ │ ├── CHANGELOG.md │ ├── README.md │ ├── __mocks__/ │ │ └── @amplitude/ │ │ └── engagement-browser.js │ ├── jest.config.js │ ├── package.json │ ├── rollup.config.js │ ├── src/ │ │ ├── index.ts │ │ ├── library.ts │ │ ├── unified-client-factory.ts │ │ ├── unified.ts │ │ └── version.ts │ ├── test/ │ │ ├── index.test.ts │ │ ├── library.test.ts │ │ ├── unified-client-factory.test.ts │ │ ├── unified-constructor-coverage.test.ts │ │ └── unified.test.ts │ ├── tsconfig.es5.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── playwright.config.ts ├── pnpm-workspace.yaml ├── scripts/ │ ├── README.md │ ├── build/ │ │ └── rollup.config.js │ ├── check-deprecated-packages.sh │ ├── dev/ │ │ ├── generate-signed-cert.sh │ │ ├── setup-dev-ssh.sh │ │ └── setup-local-domain.sh │ ├── publish/ │ │ ├── check-ref-not-advanced.sh │ │ └── upload-to-s3.js │ ├── templates/ │ │ ├── browser-bookmarklet.template.js │ │ └── browser-snippet.template.js │ ├── utils.js │ └── version/ │ ├── create-bookmarklet-snippet.js │ ├── create-bookmarklet.js │ ├── create-snippet-instructions.js │ ├── create-snippet.js │ └── update-readme.js ├── test-server/ │ ├── .gitignore │ ├── README.md │ ├── analytics-browser-local.html │ ├── analytics-snippet/ │ │ └── index.html │ ├── attribution/ │ │ ├── default-tracking.html │ │ └── event-property-tracking.html │ ├── autocapture/ │ │ ├── element-interactions.html │ │ ├── error-click.html │ │ └── long-task.html │ ├── browser-sdk/ │ │ ├── cookie-consent.html │ │ ├── events-precision.html │ │ ├── index.html │ │ ├── page-url-enrichment-mpa-a.html │ │ ├── page-url-enrichment-mpa-b.html │ │ ├── page-url-enrichment-mpa-c.html │ │ ├── page-url-enrichment.html │ │ ├── page-view-history.html │ │ ├── request-compression.html │ │ ├── reset-test.html │ │ └── web-vitals.html │ ├── cookies/ │ │ ├── is-enabled.html │ │ └── transaction-test.html │ ├── diagnostics.html │ ├── form-test.html │ ├── gtm/ │ │ ├── browser-gtm-wrapper.html │ │ └── gtm.html │ ├── gtm-snippet/ │ │ └── gtm-snippet.html │ ├── helpers/ │ │ └── tough-cookie.js │ ├── iframe-sandbox/ │ │ ├── child.html │ │ └── parent.html │ ├── index.html │ ├── mock-api.js │ ├── network-capture/ │ │ ├── fetch.html │ │ └── xhr.html │ ├── observables/ │ │ ├── mouse-direction-change-observable.html │ │ ├── mouse-observables.html │ │ └── thrashed-cursor-observable.html │ ├── observers/ │ │ └── console.html │ ├── opt-out/ │ │ └── index.html │ ├── proxy-test.html │ ├── remote-config-test.html │ ├── sampling-test.html │ ├── scroll-test.html │ ├── segment.html │ ├── session-replay-browser/ │ │ ├── sr-capture-test.html │ │ ├── sr-cross-origin-iframe-child.html │ │ ├── sr-cross-origin-iframe-parent.html │ │ ├── sr-plugin-with-analytics-sdk.html │ │ ├── sr-privacy-test.html │ │ ├── sr-shadow-dom-test.html │ │ └── sr-standalone-sdk.html │ ├── snippets/ │ │ └── cookie-deduplication.html │ ├── spa-test.html │ ├── unified/ │ │ └── unified.html │ ├── unified-script.html │ ├── unminifier/ │ │ └── index.html │ └── video-analytics/ │ ├── track-embedded-video.html │ └── track-html-video.html ├── tsconfig.json ├── typedoc.json └── vite.config.js