main 90ea3f608c97 cached
1267 files
9.5 MB
2.6M tokens
7752 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (10,296K chars total). Download the full file to get everything.
Repository: amplitude/Amplitude-TypeScript
Branch: main
Commit: 90ea3f608c97
Files: 1267
Total size: 9.5 MB

Directory structure:
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

================================================
FILE CONTENTS
================================================

================================================
FILE: .cursor/rules/code-style.mdc
================================================
---
description: 
globs: 
alwaysApply: false
---
# Code Style Guidelines

This document outlines the code style and conventions for the Amplitude TypeScript SDK monorepo.

## TypeScript Conventions

### General Rules
- Use TypeScript strict mode with all compiler checks enabled as defined in [tsconfig.json](mdc:tsconfig.json)
- Always define explicit return types for public methods and functions
- Use meaningful variable and function names that clearly describe their purpose
- Prefer `const` over `let` when variables won't be reassigned
- Use template literals instead of string concatenation
- Avoid `any` type - use proper typing or generic constraints instead

### Interface and Type Definitions
- Use `interface` for object shapes that might be extended
- Use `type` for unions, intersections, and computed types
- Export types that are used across package boundaries
- Use PascalCase for interfaces and type names (e.g., `EventType`, `BrowserConfig`)

### Function and Method Conventions
- Use camelCase for function and method names
- Use async/await instead of raw Promises for better readability
- Keep functions focused on a single responsibility
- Use proper JSDoc comments for public APIs

### Import/Export Standards
- Use named imports/exports over default exports for better tree-shaking
- Group imports in this order: external libraries, internal packages, relative imports
- Use absolute imports for cross-package references in the monorepo
- Consistent barrel exports in `index.ts` files

## Code Organization

### File Structure
- Follow the established pattern from [packages/analytics-browser/src](mdc:packages/analytics-browser/src)
- Group related functionality in dedicated directories (config, plugins, utils, etc.)
- Use descriptive file names that match their primary export

### Class Organization
- Private methods and properties should be prefixed with underscore
- Group methods logically: constructor, public methods, private methods
- Use readonly properties where appropriate
- Implement proper error handling and validation

## Formatting Rules

The project uses Prettier with the following configuration from [.prettierrc.json](mdc:.prettierrc.json):
- Line width: 120 characters
- Single quotes for strings
- Trailing commas in all contexts
- Proper prose wrapping for markdown

## Linting Standards

Follow the ESLint configuration defined in [.eslintrc.js](mdc:.eslintrc.js):
- No unused variables (except function parameters)
- Require explicit return types for TypeScript functions
- No multiple empty lines
- End files with newline
- Avoid unsafe global access (window, globalThis, self) except in test files

## Package-Specific Conventions

### Browser Packages
- Use feature detection instead of user agent sniffing
- Implement proper error boundaries for browser APIs
- Follow the established plugin architecture pattern
- Ensure backwards compatibility with older browser versions

### Node.js Packages  
- Use appropriate Node.js APIs and avoid browser-specific code
- Implement proper error handling for server environments
- Follow semantic versioning for breaking changes

## Testing Conventions
- Use Jest for unit testing as configured in [jest.config.js](mdc:jest.config.js)
- Follow the naming pattern `*.test.ts` for test files
- Write descriptive test names that explain the expected behavior
- Use proper mocking for external dependencies
- Maintain high test coverage for public APIs

## Error Handling
- Use custom error classes with descriptive messages
- Implement proper error boundaries in browser environments
- Log errors with appropriate context for debugging
- Provide meaningful error messages for developers

## Performance Guidelines
- Avoid blocking operations in browser environments
- Use lazy loading for optional features
- Implement proper caching strategies
- Consider bundle size impact for browser packages
- Use tree-shaking friendly exports


================================================
FILE: .cursor/rules/commit-and-pr-guidelines.mdc
================================================
---
description: 
globs: 
alwaysApply: false
---
# Commit and Pull Request Guidelines

This document outlines the commit message standards and pull request guidelines for the Amplitude TypeScript SDK.

## Commit Message Standards

Follow the [Conventional Commits](mdc:https:/www.conventionalcommits.org) specification as outlined in [CONTRIBUTING.md](mdc:CONTRIBUTING.md).

### Commit Types
- **feat**: New features (triggers minor release)
- **fix**: Bug fixes (triggers patch release)  
- **docs**: Documentation updates
- **style**: Code style changes (formatting, missing semi-colons, etc.)
- **refactor**: Code changes that neither fix bugs nor add features
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Changes to build system or dependencies
- **ci**: Changes to CI configuration
- **chore**: Other changes that don't modify src or test files
- **revert**: Revert previous commits

### Breaking Changes
- Any commit with `BREAKING CHANGE` in the body triggers a major release
- Use `!` after the type/scope for breaking changes: `feat!: remove deprecated API`
- Clearly document migration path in commit body

### Scope Guidelines
Use package names as scopes when changes are package-specific:
- `feat(analytics-browser): add new tracking method`
- `fix(analytics-node): resolve memory leak issue`
- `docs(session-replay): update installation guide`

### Examples of Good Commit Messages

```
feat(analytics-browser): add support for custom user properties

This change allows users to set custom properties that persist
across all events in a session.

BREAKING CHANGE: The setUserProperties method now requires
an explicit flush parameter. Use setUserProperties(props, true)
to maintain previous behavior.

Closes #123
```

```
fix(analytics-core): prevent duplicate event submission

Added deduplication logic to prevent the same event from being
sent multiple times when network issues cause retries.

Fixes #456
```

```
docs: update installation instructions for v2

- Added Node.js version requirements
- Updated package installation commands
- Added migration guide from v1
```

## Pull Request Guidelines

### PR Title Standards
- Use the same format as commit messages
- Title should be descriptive and concise
- Include scope when PR affects specific package
- Examples:
  - `feat(analytics-browser): implement session tracking`
  - `fix: resolve TypeScript compilation errors`
  - `docs: update API documentation examples`

### PR Description Template
Include the following sections in your PR description:

```markdown
## Summary
Brief description of what this PR accomplishes.

## Changes
- List of specific changes made
- New features added
- Bugs fixed
- Dependencies updated

## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests pass
- [ ] Manual testing completed
- [ ] Browser compatibility verified (if applicable)

## Breaking Changes
Describe any breaking changes and migration steps required.

## Related Issues
- Closes #123
- Related to #456

## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review of code completed
- [ ] Documentation updated
- [ ] Tests added for new functionality
- [ ] All tests pass
- [ ] No new ESLint warnings
```



================================================
FILE: .env.example
================================================
# Copy and paste this file to .env and fill in the values
VITE_AMPLITUDE_API_KEY=<MY_AMPLITUDE_API_KEY>
VITE_AMPLITUDE_USER_ID=<MY_AMPLITUDE_USER_ID>
VITE_GTM_CONTAINER_ID=<MY_GTM_CONTAINER_ID>


================================================
FILE: .eslintignore
================================================
**/*.js
examples/
playwright.config.ts


================================================
FILE: .eslintrc.js
================================================
module.exports = {
  root: true,
  env: {
    es6: true,
    'jest/globals': true,
  },
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 2018,
    project: 'packages/*/tsconfig.json',
    sourceType: 'module',
    tsconfigRootDir: __dirname,
  },
  plugins: ['@typescript-eslint', 'jest'],
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:@typescript-eslint/recommended-requiring-type-checking',
    'plugin:jest/recommended',
    'prettier',
    "plugin:import/recommended",
  ],
  settings: {
    'import/resolver': {
      typescript: {
        alwaysTryTypes: true,
        project: 'packages/*/tsconfig.json',
      },
    },
  },
  rules: {
    '@typescript-eslint/member-delimiter-style': 0,
    '@typescript-eslint/no-explicit-any': 0,
    '@typescript-eslint/no-unused-vars': ['error', { vars: 'all', args: 'none', ignoreRestSiblings: true }],
    '@typescript-eslint/semi': 0,
    '@typescript-eslint/space-before-function-paren': 0,
    '@typescript-eslint/require-await': 0,
    'comma-dangle': 0,
    'new-cap': 0,
    'eol-last': [2, 'always'],
    'no-multiple-empty-lines': [2, { max: 1, maxEOF: 0 }],
    'no-restricted-globals': [
      'error',
      {
        name: 'globalThis',
        message: 'Unsafe access to `globalThis`.',
      },
      {
        name: 'window',
        message: 'Unsafe access to `window`.',
      },
      {
        name: 'self',
        message: 'Unsafe access to `self`.',
      },
    ],
    'import/no-extraneous-dependencies': [
      'error',
      {
        optionalDependencies: false,
      },
    ],
  },
  overrides: [
    {
      // Allow test files and e2e helpers to access globals
      files: ['*.test.ts', '*.spec.ts', '**/e2e/**/*.ts'],
      rules: {
        'no-restricted-globals': 'off',
        'import/no-unresolved': 'off',
        'import/named': 'off',
        '@typescript-eslint/no-unsafe-assignment': 'off',
        'import/no-extraneous-dependencies': 'off',
        'import/no-unsafe-argument': 'off',
        '@typescript-eslint/no-unsafe-member-access': 'off',
        '@typescript-eslint/no-unsafe-call': 'off',
        '@typescript-eslint/no-unsafe-argument': 'off',
      },
    },
  ],
};


================================================
FILE: .github/CODEOWNERS
================================================
# CODEOWNERS file for Amplitude TypeScript repository
# This file defines code ownership for different parts of the repository.
# When a pull request is opened that modifies files matching these patterns,
# the specified teams/individuals will automatically be requested for review.
#
# More info: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

# Session Replay Packages (Browser)
# Owned by the Session Replay SDK team
/packages/session-replay-browser/ @amplitude/session-replay-sdk
/packages/plugin-session-replay-browser/ @amplitude/session-replay-sdk
/packages/segment-session-replay-plugin/ @amplitude/session-replay-sdk
/packages/targeting/ @amplitude/session-replay-sdk



================================================
FILE: .github/ISSUE_TEMPLATE/Bug_report.md
================================================
---
name: Bug report 🐛
about: You're having technical issues
labels: 'bug'
---

<!--- Please fill out the template to the best of your ability -->

## Expected Behavior
<!--- What should have happened? -->

## Current Behavior
<!--- What went wrong? -->

## Possible Solution
<!--- (Not obligatory) Suggest a fix/reason -->

## Steps to Reproduce
<!--- Please provide a clear sequence of steps to reproduce this bug -->
<!--- Include code and images, if relevant -->
1.
2.
3.
4.

## Environment
- JS SDK Version: <!--- E.g. 7.1.0 -->
- Installation Method: <!-- I.e. NPM/yarn/pnpm or <script> import -->
- Browser and Version: <!-- E.g. Chrome 84-->


================================================
FILE: .github/ISSUE_TEMPLATE/Feature_request.md
================================================
---
name: Feature Request 🚀
about: You'd like something added to the SDK
labels: 'enhancement'
---

<!--- Please fill out the template to the best of your ability -->

## Summary

<!-- Please describe what feature you would like added -->

## Motivations

<!-- Please explain what value this feature would add. E.g. what problem does it solve -->


================================================
FILE: .github/ISSUE_TEMPLATE/Question.md
================================================
---
name: Question ❓
about: Ask a question
labels: 'question'
---

## Summary

<!-- What do you need help with? -->


================================================
FILE: .github/actions/build-and-test/action.yml
================================================
name: 'Build and Test'
description: 'Install dependencies, build, test, and lint packages'
inputs:
  node-version:
    description: 'Node.js version to use'
    required: true

runs:
  using: "composite"
  steps:
    - name: Setup pnpm
      uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

    - name: Setup Node.js ${{ inputs.node-version }}
      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
      with:
        node-version: ${{ inputs.node-version }}
        registry-url: 'https://registry.npmjs.org'
        cache: 'pnpm'

    - name: Install project dependencies
      run: |
        pnpm install --frozen-lockfile
      shell: bash

    - name: Build all packages
      run: |
        pnpm build
      shell: bash

    - name: Test all packages
      run: |
        pnpm test
      shell: bash

    - name: Lint all packages
      run: |
        pnpm lint
      shell: bash

    - name: Configure Git User
      run: |
        git config --global user.name amplitude-sdk-dev
        git config --global user.email 249154226+amplitude-sdk-dev@users.noreply.github.com
      shell: bash

    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2
      if: github.event.inputs.releaseType != 'dry-run'
      with:
        role-to-assume: arn:aws:iam::358203115967:role/github-actions-role
        aws-region: us-west-2



================================================
FILE: .github/actions/e2e-test/action.yml
================================================
name: 'E2E Test'
description: 'Setup environment, build packages, start dev server, and run Playwright E2E tests'

inputs:
  amplitude-api-key:
    description: 'Amplitude API key for E2E tests'
    required: true
  amplitude-user-id:
    description: 'Amplitude user ID for E2E tests'
    required: false
    default: 'github-actions-sdk-user'
  server-port:
    description: 'Port for the dev server'
    required: false
    default: '5173'
  node-version:
    description: 'Node.js version to use'
    required: false
    default: '20.x'

runs:
  using: 'composite'
  steps:
    - name: Cache dependencies
      uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # v3
      with:
        path: '**/node_modules'
        key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}

    - name: Setup Node.js
      uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3
      with:
        node-version: ${{ inputs.node-version }}

    - name: Setup pnpm
      uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

    - name: Install project dependencies
      shell: bash
      run: pnpm install --frozen-lockfile

    - name: Build all packages
      shell: bash
      run: pnpm build

    - name: Create .env file
      shell: bash
      run: |
        echo "VITE_AMPLITUDE_API_KEY=${{ inputs.amplitude-api-key }}" > .env
        echo "VITE_AMPLITUDE_USER_ID=${{ inputs.amplitude-user-id }}" >> .env

    - name: Start dev server
      shell: bash
      run: |
        pnpm build:vite
        pnpm start --port ${{ inputs.server-port }} &
        sleep 10
        curl -f http://localhost:${{ inputs.server-port }} || exit 1

    - name: Run Playwright tests
      shell: bash
      run: pnpm test:playwright:ci

    - name: Upload Playwright Report
      if: always()
      uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
      with:
        name: playwright-report
        path: playwright-report/
        retention-days: 30

    - name: Upload Test Results
      if: always()
      uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
      with:
        name: test-results
        path: test-results/
        retention-days: 30


================================================
FILE: .github/pull_request_template.md
================================================
<!---
Thanks for contributing to the Amplitude TypeScript repository! 🎉

Please fill out the following sections to help us quickly review your pull request.
--->

### Summary

<!-- What does the PR do? -->

### Checklist

* [ ] Does your PR title have the correct [title format](https://github.com/amplitude/Amplitude-TypeScript/blob/main/CONTRIBUTING.md#pr-commit-title-conventions)?
* Does your PR have a breaking change?:  <!-- Yes or no -->


================================================
FILE: .github/workflows/ci-nx.yml
================================================
name: Continuous Integration (Nx)

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  check-deprecated-packages:
    name: Check Deprecated Packages
    runs-on: ubuntu-latest
    
    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0  # Required to compare with base branch
      
      - name: Check for new usage of deprecated packages
        env:
          GITHUB_BASE_REF: ${{ github.base_ref }}
        run: |
          bash scripts/check-deprecated-packages.sh

  build-docs:
    name: Build Docs
    runs-on: ubuntu-latest
    
    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
      
      - name: Setup pnpm
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

      - name: Setup Node.js 20
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Install project dependencies
        run: pnpm install --frozen-lockfile

      - name: Build all packages
        run: pnpm build

      - name: Build docs
        run: pnpm docs:check

  build:
    name: Build
    strategy:
      fail-fast: false
      matrix:
        node-version: [20.x, 22.x, 24.x]
        os: [ubuntu-latest]
    runs-on: ${{ matrix.os }}
    
    env:
      NX_BASE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || 'origin/main~1' }}
      NX_HEAD: ${{ github.sha }}

    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0  # Required for NX affected commands

      - name: Setup pnpm
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'pnpm'

      - name: Install project dependencies
        run: pnpm install --frozen-lockfile

      - name: Set up NX base for affected commands
        run: |
          # Ensure we have the main branch reference for NX affected commands
          git fetch origin main:main --depth=1 || git fetch origin main --depth=1

      - name: Build affected packages
        run: |
          pnpm build:nx-affected

      # https://github.com/amplitude/Amplitude-TypeScript/issues/281
      - name: Check module dependencies
        run: |
          if grep -rnw 'packages/analytics-core/lib' -e '/// <reference types="node" />'; then
            exit 1
          elif grep -rnw 'packages/analytics-browser/lib' -e '/// <reference types="node" />'; then
            exit 1
          elif grep -rnw 'packages/analytics-marketing-analytics-browser/lib' -e '/// <reference types="node" />'; then
            exit 1
          elif grep -rnw 'packages/analytics-react-native/lib' -e '/// <reference types="node" />'; then
            exit 1
          fi

      - name: Test affected packages
        run: pnpm test:nx-affected

      - name: Lint affected packages
        run: pnpm lint:nx-affected


================================================
FILE: .github/workflows/ci.yml
================================================
name: Continuous Integration

on:
  push:
    branches:
      - main
      - v1.x

jobs:
  build:
    name: Build
    strategy:
      fail-fast: false
      matrix:
        node-version: [20.x, 22.x, 24.x]
        os: [ubuntu-latest]
    runs-on: ${{ matrix.os }}

    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

      - name: Setup pnpm
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'pnpm'

      - name: Install project dependencies
        run: |
          pnpm install --frozen-lockfile

      - name: Build all packages
        run: |
          pnpm build

      # https://github.com/amplitude/Amplitude-TypeScript/issues/281
      - name: Check module dependencies
        run: |
          if grep -rnw 'packages/analytics-core/lib' -e '/// <reference types="node" />'; then
            exit 1
          elif grep -rnw 'packages/analytics-browser/lib' -e '/// <reference types="node" />'; then
            exit 1
          elif grep -rnw 'packages/analytics-marketing-analytics-browser/lib' -e '/// <reference types="node" />'; then
            exit 1
          elif grep -rnw 'packages/analytics-react-native/lib' -e '/// <reference types="node" />'; then
            exit 1
          fi

      - name: Build docs
        run: |
          pnpm docs:check

      - name: Test all packages
        run: |
          pnpm test

      - name: Lint all packages
        run: |
          pnpm lint


================================================
FILE: .github/workflows/docs.yml
================================================
name: Generate Docs
on: workflow_dispatch
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

      - name: Setup pnpm
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
      
      - name: Setup
        run: |
          pnpm install --frozen-lockfile
          pnpm build
          pnpm docs

      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@0f24da7de3e7e135102609a4c9633b025be8411b # 4.1.5
        with:
          branch: docs
          folder: docs


================================================
FILE: .github/workflows/e2e-session-replay.yml
================================================
name: Session Replay Browser E2E

on:
  pull_request:
    types: [opened, synchronize]
    paths:
      - 'packages/session-replay-browser/**'
      - 'test-server/session-replay-browser/**'
  push:
    branches:
      - main
    paths:
      - 'packages/session-replay-browser/**'
      - 'test-server/session-replay-browser/**'

# Non-blocking: failures are visible in the checks list but do not prevent merging.
# Once the suite is stable this job can be added to required status checks.

jobs:
  e2e-session-replay:
    name: Session Replay Browser E2E
    if: github.actor != 'dependabot[bot]'
    runs-on: ubuntu-latest
    continue-on-error: true
    permissions:
      pull-requests: write
    container:
      image: mcr.microsoft.com/playwright:v1.55.0

    steps:
      - name: Check out repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

      - name: Setup pnpm
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

      - name: Setup Node.js
        uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3
        with:
          node-version: '20.x'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Build session-replay-browser and workspace dependencies
        run: pnpm --filter @amplitude/session-replay-browser... build

      - name: Run e2e tests (Chromium only)
        working-directory: packages/session-replay-browser
        run: npx playwright test --project=chromium

      - name: Post test summary as PR comment
        if: always() && github.event_name == 'pull_request'
        uses: daun/playwright-report-summary@1229105480a2a4bdd91598d8a146fbab41343fce # v3
        with:
          report-file: packages/session-replay-browser/e2e/results.json
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-title: 'Session Replay Browser E2E Results'

      - name: Upload Playwright report
        if: always()
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
        with:
          name: sr-e2e-playwright-report
          path: packages/session-replay-browser/playwright-report/
          retention-days: 14

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
        with:
          name: sr-e2e-test-results
          path: packages/session-replay-browser/test-results/
          retention-days: 14


================================================
FILE: .github/workflows/e2e.yml
================================================
name: E2E Tests

on:
  push:
    branches:
      - main
      - v1.x
  pull_request:
    types: [opened, synchronize]

jobs:
  e2e:
    name: E2E Tests
    if: github.actor != 'dependabot[bot]'
    runs-on: ubuntu-latest
    container:
      image: mcr.microsoft.com/playwright:v1.55.0

    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0

      - name: Run E2E tests
        uses: ./.github/actions/e2e-test
        with:
          amplitude-api-key: ${{ secrets.AMPLITUDE_API_KEY }}


================================================
FILE: .github/workflows/publish-single-package.yml
================================================
# This workflow is for publishing NEW packages that are currently private
# It's separate from the main publish-v2.yml workflow which handles stable releases
# Use this workflow for new packages that will only have beta/alpha versions
# The 'latest' tag will always point to the most recent version (even if beta/alpha)
# since these packages don't have stable releases yet
#
# IMPORTANT: Once a stable (non-beta/alpha) version is published to latest,
# this workflow will prevent further beta/alpha publishing to maintain stability
name: Publish New Package (Beta/Alpha with Latest Tag)

on:
  workflow_dispatch:
    inputs:
      packageName:
        type: string
        description: "Package name (e.g., unified, analytics-browser) - must be a valid package in packages/ directory"
        required: true
      releaseTag:
        type: choice
        description: "Release type - choose beta for testing releases or alpha for experimental releases (package will be published with latest tag, but only if no stable version exists)"
        required: true
        options:
          - beta
          - alpha
      dryRun:
        type: boolean
        description: "Dry run (skip changelog update and npm publish) - recommended to test first"
        required: true
        default: true

jobs:
  # Authorization step - ensures only users with write permissions can trigger this workflow
  authorize:
    name: Authorize
    runs-on: ubuntu-latest
    steps:
      - name: ${{ github.actor }} permission check to do a release
        uses: "lannonbr/repo-permission-check-action@2bb8c89ba8bf115c4bfab344d6a6f442b24c9a1f" # 2.0.2
        with:
          permission: "write"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  # Main publishing job - handles the actual package publishing process
  # This workflow is specifically for NEW packages that are currently private
  # It publishes beta/alpha versions but always uses 'latest' tag for the most recent version
  # since these packages don't have stable releases yet
  publish-package:
    name: Publish New Package (Beta/Alpha with Latest Tag)
    runs-on: ubuntu-latest
    needs: [authorize]
    permissions:
      id-token: write
      contents: write
    env:
      PACKAGE_NAME: ${{ github.event.inputs.packageName }}
      RELEASE_TAG: ${{ github.event.inputs.releaseTag }}
      DRY_RUN: ${{ github.event.inputs.dryRun }}
      PACKAGE_PATH: packages/${{ github.event.inputs.packageName }}
    strategy:
      matrix:
        node-version: [24.x]

    steps:
      # Checkout the repository with full history for version management
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0

      # Verify the specified package exists and has the required structure
      - name: Verify package exists
        run: |
          if [ ! -d "$PACKAGE_PATH" ]; then
            echo "❌ Package directory $PACKAGE_PATH does not exist"
            exit 1
          fi
          if [ ! -f "$PACKAGE_PATH/package.json" ]; then
            echo "❌ package.json not found in $PACKAGE_PATH"
            exit 1
          fi
          echo "✅ Package $PACKAGE_NAME found at $PACKAGE_PATH"

      # Check if latest published version is stable to prevent beta/alpha publishing
      - name: Validate version publishing rules
        run: |
          echo "🔍 Checking if package can publish beta/alpha versions..."

          # Get the package name from package.json
          PACKAGE_JSON_NAME=$(node -p "require('./$PACKAGE_PATH/package.json').name")
          echo "Package name: $PACKAGE_JSON_NAME"

          # Check if package exists on npm and get latest version
          if npm view "$PACKAGE_JSON_NAME" version 2>/dev/null; then
            LATEST_VERSION=$(npm view "$PACKAGE_JSON_NAME" version 2>/dev/null)
            echo "Latest published version: $LATEST_VERSION"

            # Check if latest version is stable (doesn't contain beta or alpha)
            if [[ "$LATEST_VERSION" == *"beta"* ]] || [[ "$LATEST_VERSION" == *"alpha"* ]]; then
              echo "✅ Latest version ($LATEST_VERSION) is pre-release, can publish beta/alpha"
            else
              echo "❌ ERROR: Latest version ($LATEST_VERSION) is stable (non-beta/alpha)"
              echo "Once a stable version is published to latest, you cannot publish beta/alpha versions anymore."
              echo "This prevents version regression and maintains package stability."
              echo ""
              echo "If you need to publish a new stable version, use the main publish workflow instead."
              echo "If this is a new package, ensure the first version is beta/alpha."
              exit 1
            fi
          else
            echo "✅ Package not found on npm, this appears to be a new package"
            echo "New packages can publish beta/alpha versions with latest tag"
          fi

      - name: Setup PNPM
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

      # Setup Node.js environment
      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: "pnpm"

      # Install all project dependencies
      - name: Install project dependencies
        run: |
          pnpm install --frozen-lockfile

      # Configure Git for automated commits
      - name: Configure Git User
        run: |
          git config --global user.name amplitude-sdk-bot
          git config --global user.email amplitude-sdk-bot@users.noreply.github.com

      # Calculate new version and update package files
      # This increments the patch version for beta/alpha releases
      # For new packages, this will be the first version (e.g., 1.0.0-beta.1)
      # The 'latest' tag will always point to the most recent version
      - name: Calculate and update version
        run: |
          cd $PACKAGE_PATH
          # Get current version - use node to extract just the version value
          CURRENT_VERSION=$(node -p "require('./package.json').version")
          echo "Current version: $CURRENT_VERSION"

          # Simply increment the last digit of the version
          # Extract the last digit and increment it
          LAST_DIGIT=$(echo "$CURRENT_VERSION" | grep -o '[0-9][0-9]*$')
          NEW_LAST_DIGIT=$((LAST_DIGIT + 1))

          # Replace the last digit with the incremented value
          NEW_VERSION=$(echo "$CURRENT_VERSION" | sed "s/[0-9][0-9]*$/$NEW_LAST_DIGIT/")

          echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
          echo "✅ New version would be: $CURRENT_VERSION → $NEW_VERSION"

          # Update version in package.json immediately (needed for build)
          npm pkg set version="$NEW_VERSION"

          # Update version in src/version.ts - this file must exist
          if [ -f "src/version.ts" ]; then
            echo "Updating src/version.ts with new version"
            echo "// Autogenerated by \`pnpm version-file\`. DO NOT EDIT" > src/version.ts
            echo "export const VERSION = '$NEW_VERSION';" >> src/version.ts
            echo "✅ Updated src/version.ts to version $NEW_VERSION"
          else
            echo "❌ ERROR: src/version.ts not found in $PACKAGE_NAME package"
            echo "This file is required for version management. Please ensure the package has the correct structure."
            exit 1
          fi

      # Dry run mode - shows what would be published without actually doing it
      # This is the default mode to prevent accidental publishes
      - name: Dry run summary and exit
        if: ${{ env.DRY_RUN == 'true' }}
        run: |
          cd $PACKAGE_PATH
          echo "🔍 DRY RUN SUMMARY:"
          echo "Package: $PACKAGE_NAME"
          echo "Current version: $CURRENT_VERSION"
          echo "New version would be: $NEW_VERSION"
          echo "Release tag: latest (always latest for new packages)"
          echo "Would publish: $PACKAGE_NAME@$NEW_VERSION with tag latest"
          echo "✅ Dry run completed successfully - exiting without making changes"
          exit 0

      # Build the package to ensure it compiles correctly
      - name: Build package
        run: |
          pnpm build

      # Run tests to ensure package quality
      - name: Test package
        run: |
          pnpm test

      # Lint the code to ensure code quality standards
      - name: Lint package
        run: |
          pnpm lint

      # Configure NPM authentication for publishing
      - name: Configure NPM User
        if: ${{ env.DRY_RUN == 'false' }}
        run: |
          echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_PUBLISH_TOKEN }}" > ~/.npmrc
          npm whoami

      # Temporarily make package public for publishing (will be restored to private later)
      - name: Make package public for publishing
        if: ${{ env.DRY_RUN == 'false' }}
        run: |
          cd $PACKAGE_PATH
          echo "Making package public for publishing"

          # Set private to false (version already updated)
          npm pkg set private=false --json

          echo "✅ Made package public for publishing"
          echo "Current package.json settings:"
          cat package.json | grep -E '"(version|private)"'

      - name: Update changelog and publish
        if: ${{ env.DRY_RUN == 'false' }}
        run: |
          cd $PACKAGE_PATH

          # Generate changelog entry
          echo "Updating changelog for version $NEW_VERSION"

          # Check if CHANGELOG.md exists
          if [ ! -f "CHANGELOG.md" ]; then
            echo "# Changelog" > CHANGELOG.md
            echo "" >> CHANGELOG.md
          fi

          # Add new version entry to changelog
          TEMP_FILE=$(mktemp)
          echo "# Changelog" > $TEMP_FILE
          echo "" >> $TEMP_FILE
          echo "## $NEW_VERSION ($(date +%Y-%m-%d))" >> $TEMP_FILE
          echo "" >> $TEMP_FILE
          echo "- Release $NEW_VERSION" >> $TEMP_FILE
          echo "" >> $TEMP_FILE

          # Append existing changelog content (skip the first "# Changelog" line)
          if [ -f "CHANGELOG.md" ]; then
            tail -n +2 CHANGELOG.md >> $TEMP_FILE
          fi

          mv $TEMP_FILE CHANGELOG.md
          echo "✅ Updated CHANGELOG.md"

          # Publish to npm with latest tag (always latest for new packages)
          echo "Publishing $PACKAGE_NAME@$NEW_VERSION with tag latest"
          pnpm publish --tag latest --access=public
          echo "✅ Published $PACKAGE_NAME@$NEW_VERSION to npm with tag latest"

      # Restore package to private and commit all changes
      # This ensures the package remains private in the repository after publishing
      - name: Restore package to private and commit changes
        if: ${{ env.DRY_RUN == 'false' && always() }}
        run: |
          cd $PACKAGE_PATH
          npm pkg set private=true --json
          echo "✅ Set package back to private"

          # Update version in the restored package.json (but keep private: true)
          npm pkg set version="$NEW_VERSION"

          # Now commit the changes with the correct private setting
          echo "Committing version and changelog changes"
          git status
          git add package.json CHANGELOG.md src/version.ts
          git commit -m "chore(release): publish @amplitude/$PACKAGE_NAME@$NEW_VERSION"
          git tag "@amplitude/$PACKAGE_NAME@$NEW_VERSION"
          echo "✅ Committed changes and created tag"

      # Push all changes and tags back to the repository
      - name: Push changes
        if: ${{ env.DRY_RUN == 'false' }}
        run: |
          # Get current branch name and push to it
          CURRENT_BRANCH=$(git branch --show-current)
          echo "Pushing to current branch: $CURRENT_BRANCH"
          git push origin "$CURRENT_BRANCH"
          git push origin "@amplitude/$PACKAGE_NAME@$NEW_VERSION"
          echo "✅ Pushed changes and tags to repository"


================================================
FILE: .github/workflows/publish-v1.yml
================================================
name: Publish v1.x

on:
  workflow_dispatch:
    inputs:
      releaseType:
        type: choice
        description: Release Type
        options:
          - release
          - prerelease
          - graduate

jobs:
  authorize:
    name: Authorize
    runs-on: ubuntu-latest
    steps:
      - name: ${{ github.actor }} permission check to do a release
        uses: 'lannonbr/repo-permission-check-action@2bb8c89ba8bf115c4bfab344d6a6f442b24c9a1f' # 2.0.2
        with:
          permission: 'write'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    needs: [authorize]
    permissions:
      id-token: write
      contents: write
    env:
      RELEASE_TYPE: ${{ github.event.inputs.releaseType }}
    strategy:
      matrix:
        node-version: [18.15.x]

    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0
          ref: v1.x

      - name: Cache dependencies
        uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3
        with:
          path: '**/node_modules'
          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}

      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
        with:
          node-version: ${{ matrix.node-version }}

      - name: Install project dependencies
        run: |
          yarn install --frozen-lockfile

      - name: Build all packages
        run: |
          yarn build

      - name: Test all packages
        run: |
          yarn test

      - name: Lint all packages
        run: |
          yarn lint

      - name: Configure Git User
        run: |
          git config --global user.name amplitude-sdk-bot
          git config --global user.email amplitude-sdk-bot@users.noreply.github.com

      - name: Configure NPM User
        run: |
          echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_PUBLISH_TOKEN }}" > ~/.npmrc
          npm whoami

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2
        with:
          role-to-assume: arn:aws:iam::358203115967:role/github-actions-role
          aws-region: us-west-2

      # https://www.npmjs.com/package/@lerna/version#--conventional-prerelease
      # patch: 1.0.0 -> 1.0.1-alpha.0
      # minor: 1.0.0 -> 1.1.0-alpha.0
      # major: 1.0.0 -> 2.0.0-alpha.0
      - name: Create pre-release version
        if: ${{ env.RELEASE_TYPE == 'prerelease'}}
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} npm run deploy:version -- -y --conventional-prerelease --create-release github

      # https://www.npmjs.com/package/@lerna/version#--conventional-graduate
      # 1.0.0-alpha.0 -> 1.0.1
      - name: Create graduate version
        if: ${{ env.RELEASE_TYPE == 'graduate'}}
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} npm run deploy:version -- -y --conventional-graduate --create-release github

      # Use 'release' for the usual deployment
      # NOTE: You probably want this
      - name: Create release version
        if: ${{ env.RELEASE_TYPE == 'release'}}
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} npm run deploy:version -- -y --create-release github

      # Use 'from git' option if `lerna version` has already been run
      - name: Publish Release to NPM
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} npm run deploy:publish -- from-git -y --pre-dist-tag v1-beta
        env:
          S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }}


================================================
FILE: .github/workflows/publish-v2.yml
================================================
name: Publish v2.x

on:
  workflow_dispatch:
    inputs:
      releaseType:
        type: choice
        description: Release type (release for main branch, prerelease for feature branches)
        required: true
        default: prerelease
        options:
          - release
          - prerelease
          - dry-run
      branch:
        type: string
        description: Branch to create pre-release from (only applies to prerelease/dry-run).
        required: false
      skipLernaVersion:
        type: boolean
        description: Skip `lerna version` and E2E for release/prerelease recovery runs, then only run the publish step. Use this to recover from a partial npm publish where some packages were already released.
        required: false
        default: false

jobs:
  authorize:
    name: Authorize
    runs-on: ubuntu-latest
    steps:
      - name: Check branch protection
        env:
          RELEASE_TYPE: ${{ github.event.inputs.releaseType }}
          REF_NAME: ${{ github.ref_name }}
        run: |
          if [ "$RELEASE_TYPE" = "dry-run" ]; then
            echo "✅ Branch check skipped: dry-run mode allows any branch"
            echo "Current branch: $REF_NAME"
            exit 0
          fi
          case "$REF_NAME" in
            main|hotfix/*)
              echo "✅ Branch check passed: workflow is running from allowed branch ($REF_NAME)"
              ;;
            *)
              echo "❌ This workflow can only be triggered from main or hotfix/* branches."
              echo "Current branch: $REF_NAME"
              exit 1
              ;;
          esac

      - name: ${{ github.actor }} permission check to do a release
        uses: 'lannonbr/repo-permission-check-action@2bb8c89ba8bf115c4bfab344d6a6f442b24c9a1f'
        with:
          permission: 'write'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  e2e:
    name: E2E Tests
    runs-on: ubuntu-latest
    needs: [authorize]
    container:
      image: mcr.microsoft.com/playwright:v1.55.0
    outputs:
      head_sha: ${{ steps.head-sha.outputs.sha }}

    steps:
      - name: Skip E2E for recovery publish
        if: ${{ github.event.inputs.skipLernaVersion == 'true' }}
        run: echo "Skipping E2E because skipLernaVersion is true"

      - name: Check out git repository
        if: ${{ github.event.inputs.skipLernaVersion != 'true' }}
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0
          ref: ${{ github.event.inputs.branch || github.ref_name }}

      - name: Capture E2E HEAD SHA
        id: head-sha
        if: ${{ github.event.inputs.skipLernaVersion != 'true' }}
        run: |
          git config --global --add safe.directory "$GITHUB_WORKSPACE"
          echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"

      - name: Run E2E tests
        if: ${{ github.event.inputs.skipLernaVersion != 'true' }}
        uses: ./.github/actions/e2e-test
        with:
          amplitude-api-key: ${{ secrets.AMPLITUDE_API_KEY }}

  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    needs: [authorize, e2e]
    if: ${{ github.event.inputs.releaseType == 'release' }}
    permissions:
      id-token: write # Required for OIDC
      contents: write
    strategy:
      matrix:
        node-version: [24.x] # Ensure npm 11.5.1 or later is installed for OIDC, node 24.6 is minimal 

    steps:
      - name: Validate protected branch
        run: |
          REF="${{ github.event.inputs.branch || github.ref_name }}"
          case "$REF" in
            main)
              echo "✅ Branch check passed: main"
              ;;
            hotfix/*)
              echo "✅ Branch check passed: hotfix branch ($REF)"
              ;;
            *)
              echo "❌ Deploy can only run from main or hotfix/* branches."
              echo "Current branch: $REF"
              exit 1
              ;;
          esac

      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          fetch-depth: 0
          token: ${{ secrets.GH_PUBLISH_TOKEN }}
          ref: ${{ github.event.inputs.branch || github.ref_name }}

      - name: Build and Test
        uses: ./.github/actions/build-and-test
        with:
          node-version: ${{ matrix.node-version }}

      - name: Verify ref has not advanced since e2e checkout
        if: ${{ github.event.inputs.skipLernaVersion != 'true' }}
        env:
          EXPECTED_SHA: ${{ needs.e2e.outputs.head_sha }}
          REF: ${{ github.event.inputs.branch || github.ref_name }}
        run: bash scripts/publish/check-ref-not-advanced.sh

      # Only create release version when using from-git (default behavior)
      # from-package mode uses existing package.json versions and doesn't need git tags
      - name: Create release version
        if: ${{ github.event.inputs.skipLernaVersion != 'true' }}
        run: |
          echo "Running lerna version..."
          
          # Temporarily disable exit on error to capture output even when command fails
          set +e
          OUTPUT=$(GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} pnpm deploy:version -y --no-private --create-release github 2>&1)
          EXIT_CODE=$?
          set -e
          
          # Always display the output first
          echo "=== Lerna Version Output ==="
          echo "$OUTPUT"
          echo "=== End Output ==="
          
          # Now handle the exit code
          if [ $EXIT_CODE -ne 0 ]; then
            echo "❌ Command failed with exit code: $EXIT_CODE"
            exit $EXIT_CODE
          fi
          
          # Check if the output indicates no changed packages
          if echo "$OUTPUT" | grep -q "No changed packages to version"; then
            echo "❌ No changed packages found to version. Failing the job."
            exit 1
          fi
          
          echo "✅ Successfully created release version"

      # Publish to NPM (also uploads minified JS and source maps to S3)
      - name: Publish Release to NPM
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} pnpm deploy:publish
        env:
          S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }}

  prerelease:
    name: Prerelease feature branch
    runs-on: ubuntu-latest
    needs: [authorize, e2e]
    if: ${{ github.event.inputs.releaseType == 'prerelease' || github.event.inputs.releaseType == 'dry-run' }}
    permissions:
      id-token: write # Required for OIDC
      contents: write
    strategy:
      matrix:
        node-version: [24.x] # Ensure npm 11.5.1 or later is installed for OIDC, node 24.6 is minimal

    steps:
      - name: Determine branch to use
        id: determine-branch
        run: |
          if [ -n "${{ github.event.inputs.branch }}" ]; then
            echo "branch=${{ github.event.inputs.branch }}" >> $GITHUB_OUTPUT
          else
            echo "❌ No branch specified. Please specify a branch to create pre-release from."
            exit 1
          fi

      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
        with:
          ref: ${{ steps.determine-branch.outputs.branch }}
          fetch-depth: 0
          token: ${{ secrets.GH_PUBLISH_TOKEN }}

      - name: Build and Test
        uses: ./.github/actions/build-and-test
        with:
          node-version: ${{ matrix.node-version }}

      # Keep alphanumeric characters and hyphens, remove other invalid characters
      # Examples:
      #   - SR-1858 -> SR-1858
      #   - feature/my-branch -> featuremy-branch
      #   - fix_bug_123 -> fixbug123
      #   - user@company.com -> usercompanycom
      - name: Transform feature branch name
        run: |
          echo "PREID=$(echo '${{ steps.determine-branch.outputs.branch }}' | tr -cd '[:alnum:]-')" >> $GITHUB_ENV

      # Use --no-push to prevent pushing to remote
      # Version example: 1.0.0 -> 1.1.0-{preid}.0
      - name: Dry run pre-release version
        if: ${{ github.event.inputs.releaseType == 'dry-run' }}
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} pnpm deploy:version:dry-run -y --preid ${{ env.PREID }}

      - name: Pre-release version
        if: ${{ github.event.inputs.releaseType == 'prerelease' && github.event.inputs.skipLernaVersion != 'true' }}
        run: |
            GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} pnpm deploy:version -y --no-private --conventional-prerelease --preid ${{ env.PREID }} --allow-branch ${{ steps.determine-branch.outputs.branch }} --create-release github

      # Publish to NPM (also uploads minified JS and source maps to S3)
      - name: Publish Pre-release to NPM
        if: ${{ github.event.inputs.releaseType == 'prerelease' }}
        run: |
          GH_TOKEN=${{ secrets.GH_PUBLISH_TOKEN }} pnpm deploy:publish --no-git-checks --ignore-scripts --tag ${{ env.PREID }}
        env:
          S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }}

      - name: Dry run publish release to NPM
        if: ${{ github.event.inputs.releaseType == 'dry-run' }}
        env:
          DRY_RUN: true
        run: |
          pnpm deploy:publish:dry-run


================================================
FILE: .github/workflows/rn-smoke.yml
================================================
name: React Native Smoke Test

on:
  pull_request:
    types: [opened, synchronize]
  push:
    branches: [main]

jobs:
  ios-smoke:
    name: iOS Simulator Smoke (Maestro)
    runs-on: macos-14
    timeout-minutes: 45

    env:
      APP_DIR: examples/react-native/app
      BUNDLE_ID: org.reactjs.native.example.app
      SIM_NAME: iPhone 15
      # CocoaPods 1.14.3 hits `ArgumentError - pathname contains null byte` in
      # Pathname#realdirpath on pnpm monorepos when the locale is not UTF-8
      # (see https://github.com/CocoaPods/CocoaPods/issues/12866). macos-14
      # runners default to an unset/C locale; pin it here.
      LANG: en_US.UTF-8
      LC_ALL: en_US.UTF-8

    steps:
      - name: Check out git repository
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

      - name: Setup pnpm
        uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4

      - name: Setup Node.js 20
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Setup Ruby for CocoaPods
        uses: ruby/setup-ruby@6aaa311d81eba98ae12eaffbcb63296ace0efcde # v1.307.0
        with:
          ruby-version: '3.2'
          bundler-cache: true
          working-directory: ${{ env.APP_DIR }}

      - name: Install project dependencies
        run: pnpm install --frozen-lockfile

      - name: Build SDK and its workspace deps
        run: pnpm --filter @amplitude/analytics-react-native... build

      - name: Cache CocoaPods
        uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4
        with:
          path: |
            ${{ env.APP_DIR }}/ios/Pods
            ~/Library/Caches/CocoaPods
          key: pods-${{ runner.os }}-${{ hashFiles(format('{0}/ios/Podfile.lock', env.APP_DIR)) }}
          restore-keys: |
            pods-${{ runner.os }}-

      - name: Pod install
        working-directory: ${{ env.APP_DIR }}/ios
        # Even with LANG/LC_ALL pinned, cocoapods 1.14.3 + pnpm intermittently
        # raises `ArgumentError - pathname contains null byte` in
        # Pathname#realdirpath (cocoapods/cocoapods#12866). Retry on failure
        # before giving up — failures so far have always passed on the next try.
        run: |
          for attempt in 1 2 3; do
            if bundle exec pod install; then
              exit 0
            fi
            echo "::warning::pod install attempt $attempt failed, retrying..."
            sleep 5
          done
          echo "::error::pod install failed 3 times"
          exit 1

      - name: Build iOS app (Release, simulator)
        working-directory: ${{ env.APP_DIR }}
        # Raw xcodebuild output is noisy; xcpretty would be nicer but isn't
        # installed by default on macos-14 runners, and adding it as a Gemfile
        # dependency for cosmetics isn't worth the install time.
        run: |
          xcodebuild \
            -workspace ios/app.xcworkspace \
            -scheme app \
            -configuration Release \
            -sdk iphonesimulator \
            -destination "generic/platform=iOS Simulator" \
            -derivedDataPath build \
            CODE_SIGN_IDENTITY="" \
            CODE_SIGNING_REQUIRED=NO \
            CODE_SIGNING_ALLOWED=NO
          test -d build/Build/Products/Release-iphonesimulator/app.app

      - name: Boot iOS simulator
        run: |
          UDID=$(xcrun simctl list devices "$SIM_NAME" available -j | node -e "
            const data = JSON.parse(require('fs').readFileSync(0, 'utf8'));
            const all = Object.values(data.devices).flat();
            const match = all.find(d => d.name === process.env.SIM_NAME && d.isAvailable);
            if (!match) { console.error('No available', process.env.SIM_NAME); process.exit(1); }
            console.log(match.udid);
          ")
          echo "SIM_UDID=$UDID" >> $GITHUB_ENV
          xcrun simctl boot "$UDID"
          xcrun simctl bootstatus "$UDID" -b

      - name: Install app on simulator
        working-directory: ${{ env.APP_DIR }}
        run: xcrun simctl install "$SIM_UDID" build/Build/Products/Release-iphonesimulator/app.app

      - name: Install Maestro
        run: |
          curl -fsSL "https://get.maestro.mobile.dev" | bash
          echo "$HOME/.maestro/bin" >> $GITHUB_PATH

      - name: Run Maestro smoke flow
        working-directory: ${{ env.APP_DIR }}
        run: maestro test .maestro/smoke.yaml

      - name: Dump simulator logs on failure
        if: failure()
        run: |
          xcrun simctl spawn "$SIM_UDID" log show --last 5m --predicate 'process == "app"' || true


================================================
FILE: .github/workflows/semantic-pr.yml
================================================
name: Semantic PR Check

on:
  pull_request:
    types: [opened, synchronize, edited]

jobs:
  pr-title-check: 
    name: Check PR for semantic title
    runs-on: ubuntu-latest
    steps:
      - name: PR title is valid
        if: >
          startsWith(github.event.pull_request.title, 'feat:') || startsWith(github.event.pull_request.title, 'feat(') ||
          startsWith(github.event.pull_request.title, 'fix:') || startsWith(github.event.pull_request.title, 'fix(') ||
          startsWith(github.event.pull_request.title, 'perf:') || startsWith(github.event.pull_request.title, 'perf(') ||
          startsWith(github.event.pull_request.title, 'docs:') || startsWith(github.event.pull_request.title, 'docs(') ||
          startsWith(github.event.pull_request.title, 'test:') || startsWith(github.event.pull_request.title, 'test(') ||
          startsWith(github.event.pull_request.title, 'refactor:') || startsWith(github.event.pull_request.title, 'refactor(') ||
          startsWith(github.event.pull_request.title, 'style:') || startsWith(github.event.pull_request.title, 'style(') ||
          startsWith(github.event.pull_request.title, 'build:') || startsWith(github.event.pull_request.title, 'build(') ||
          startsWith(github.event.pull_request.title, 'ci:') || startsWith(github.event.pull_request.title, 'ci(') ||
          startsWith(github.event.pull_request.title, 'chore:') || startsWith(github.event.pull_request.title, 'chore(') ||
          startsWith(github.event.pull_request.title, 'revert:') || startsWith(github.event.pull_request.title, 'revert(')
        run: |
          echo 'Title checks passed'
      - name: PR title is invalid
        if: >
          !startsWith(github.event.pull_request.title, 'feat:') && !startsWith(github.event.pull_request.title, 'feat(') &&
          !startsWith(github.event.pull_request.title, 'fix:') && !startsWith(github.event.pull_request.title, 'fix(') &&
          !startsWith(github.event.pull_request.title, 'perf:') && !startsWith(github.event.pull_request.title, 'perf(') &&
          !startsWith(github.event.pull_request.title, 'docs:') && !startsWith(github.event.pull_request.title, 'docs(') &&
          !startsWith(github.event.pull_request.title, 'test:') && !startsWith(github.event.pull_request.title, 'test(') &&
          !startsWith(github.event.pull_request.title, 'refactor:') && !startsWith(github.event.pull_request.title, 'refactor(') &&
          !startsWith(github.event.pull_request.title, 'style:') && !startsWith(github.event.pull_request.title, 'style(') &&
          !startsWith(github.event.pull_request.title, 'build:') && !startsWith(github.event.pull_request.title, 'build(') &&
          !startsWith(github.event.pull_request.title, 'ci:') && !startsWith(github.event.pull_request.title, 'ci(') &&
          !startsWith(github.event.pull_request.title, 'chore:') && !startsWith(github.event.pull_request.title, 'chore(') &&
          !startsWith(github.event.pull_request.title, 'revert:') && !startsWith(github.event.pull_request.title, 'revert(')
        run: |
          echo 'Pull request title is not valid. Please check https://github.com/amplitude/Amplitude-TypeScript/blob/main/CONTRIBUTING.md#pr-commit-title-conventions'
          exit 1


================================================
FILE: .gitignore
================================================
node_modules/

.DS_Store

lib/
*.tsbuildinfo
coverage/
docs/
.idea/

# macos
.DS_Store

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# These files are automatically generated by the TypeScript compiler
# during the build process and can be easily recreated.
*.d.ts
*.d.ts.map
.env
.env.*
!.env.example
*.pem
*.key
*.p12
*.pfx
secrets.*

lerna-debug.log

# Playwright
**/test-results/
**/playwright-report/
**/playwright/.cache/
**/playwright/.auth/

# Nx
.nx/cache/
.nx/workspace-data/

# Playground
packages/analytics-browser/playground/html/amplitude.js
packages/analytics-browser/playground/react-spa/public/amplitude.js
.nx/cache
.cursor/rules/nx-rules.mdc
.github/instructions/nx.instructions.md
.pnpm-store/

================================================
FILE: .husky/commit-msg
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

pnpm commitlint --edit $1


================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

pnpm install --frozen-lockfile
pnpm lint:staged


================================================
FILE: .npmrc
================================================
# Hoist React Native / Metro / Babel packages so Metro can resolve them when
# bundling the workspace example app (examples/react-native/app). Metro does
# not understand pnpm's nested .pnpm store, so transitive deps of react-native
# need to be visible from a flat node_modules.
public-hoist-pattern[]=*react-native*
public-hoist-pattern[]=@babel/*
public-hoist-pattern[]=@react-native/*
public-hoist-pattern[]=@react-native-community/*
public-hoist-pattern[]=metro
public-hoist-pattern[]=metro-*


================================================
FILE: .nvmrc
================================================
18


================================================
FILE: .prettierignore
================================================
*.md

/.nx/workspace-data
/.nx/cache

================================================
FILE: .prettierrc.json
================================================
{
  "printWidth": 120,
  "proseWrap": "always",
  "singleQuote": true,
  "trailingComma": "all"
}


================================================
FILE: AGENTS.md
================================================
# Repository Guidelines

This repository uses GitHub Actions for continuous integration. Contributors should replicate the CI steps locally before opening a pull request.

## Local Environment Setup

Before running any tests or scripts, install dependencies and build the packages:

```bash
pnpm install
pnpm build
```

## Testing and Linting

1. Install dependencies with `pnpm install`.
2. Build all packages with `pnpm build`.
3. Verify documentation with `pnpm docs:check`.
4. Run unit tests with `pnpm test` and example tests with `pnpm test:examples`.
5. Lint the code using `pnpm lint`.

These steps must pass before you submit your PR.

## Pull Request Requirements

- PR titles must follow the [conventional commit](https://www.conventionalcommits.org/ ) format and, when possible, include the affected module name. Examples: `feat(browser): add feature` or `fix(plugin): correct bug`.
- The CI matrix runs on Node.js `18.17.x`, `20.x`, and `22.x`. Ensure your code is compatible with these versions.



================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to the Amplitude-TypeScript

🎉 Thanks for your interest in contributing! 🎉

## Getting Started

### Create a new issue

If find issues while using this library or just reading through it, look to see if an issue has been created. If no issues are related, feel free to open a new one using the template.

### Solve an issue

If you find any existing issues that you are interested in fixing, you are welcome to open a PR and we will gladly review your changes.

### Making Changes

#### Setup locally

Getting setup is quick and easy. Follow the steps below to get your your dev environment up.

1. Fork GitHub repo
2. Install dependencies
3. Build packages

```
$ git clone <HTTPS_OR_GIT_URL>
$ pnpm install
$ pnpm build
```

This repo contains mutliple major versions of all packages. For contributions to version `1.x`, create a branch off `v1.x`. For contributions to the `2.x` (latest) version, create a branch off `main`. Refer to the table below for more infomation about the release status of each package.

|Package|Version|Status|Dev Branch|
|-|-|-|-|
|Browser SDK|
|`@amplitude/analytics-browser`|V2|Beta|`main`|
|`@amplitude/analytics-browser`|V1|Current|`v1.x`|
|`@amplitude/marketing-analytics-browser`|V1|Current|`v1.x`|
|Node SDK|
|`@amplitude/analytics-node`|V2|Unreleased|`main`|
|`@amplitude/analytics-node`|V1|Current|`v1.x`|
|ReactNative SDK|
|`@amplitude/analytics-react-native`|V2|Unreleased|`main`|
|`@amplitude/analytics-react-native`|V1|Current|`v1.x`|

#### Test your changes

Building quality software is one of our top priorities. We recommend getting your changes tested using manual and automated practices.

```
$ pnpm build
$ pnpm test
```

When writing commit message, follow [PR Commit Title Conventions](#PR-Commit-Title-Conventions) for the format. A git hook will also run to verify that the format is followed.

#### Deprecated Packages

The following packages are deprecated and **should not be added as dependencies** in new code:

- `@amplitude/analytics-types`
- `@amplitude/analytics-client-common`
- `@amplitude/analytics-remote-config`

**Replacements:**
- For `@amplitude/analytics-types` and `@amplitude/analytics-client-common`: Use `@amplitude/analytics-core` instead
- For `@amplitude/analytics-remote-config`: Use the new remote config client in `@amplitude/analytics-core` instead

These packages remain in the codebase for backward compatibility with existing code, but new dependencies on them are blocked by CI checks. If your PR fails the "Check Deprecated Packages" CI job, update your `package.json` to use the appropriate replacement from `@amplitude/analytics-core`.

#### Open a PR

Once you are finished with your changes and feel good about the proposed changes, create a pull request. A team member will assist in getting them reviewed. We are excited to work with you on this.

For contributions to version `1.x`, open a pull request against `v1.x`. For contributions to the `2.x` (latest) version, open a pull request against `main`.

#### Merge

As soon as your changes are approved, a team member will merge your PR to main and will get published shortly after.

#### Publishing NPM package for the first time

Because the workflow uses Trusted Publishing, a new package can't be published from the publish workflow on the first try. 

To publish a package for the first time (administrators only):
1. run `pnpm install` from the route
2. navigate to the root of the new package
3. run `pnpm build`
4. run `pnpm publish` (requires admin credentials with 2FA)
5. navigate to the NPM homepage of the new package
6. open "Settings" and configure it to use Trusted Publishing
7. copy the same configuration used in [analytics browser](https://www.npmjs.com/package/@amplitude/analytics-browser/access). **case sensitive**
8. now that it's in NPM and Trusted Publishing is enabled, this package can now be published from workflows

#### Recovering a partial `publish-v2` workflow run

Use this only when a previous `Publish v2.x` workflow run already created the release version and partially published packages to npm, but the workflow failed before all packages finished publishing.

To recover from that state:

1. Open the `Publish v2.x` workflow in GitHub Actions.
2. Click `Run workflow`.
3. Select the same `releaseType` that the failed run used.
4. Select the same branch that the failed run used, if applicable.
5. Enable the `skipLernaVersion` checkbox.
6. Run the workflow again.

When `skipLernaVersion` is enabled, the workflow skips the `lerna version` step for `release` and `prerelease` runs and skips the E2E test step. This lets the workflow continue to the publish step without trying to create a second release version.

Do not use `skipLernaVersion` for a normal release. It is only intended for recovery after a partial `publish-v2` run.

## Practices

### PR Commit Title Conventions

PR titles should follow [conventional commit standards](https://www.conventionalcommits.org/en/v1.0.0/). This helps automate the release process.

#### Commit Types

- **Special Case**: Any commit with `BREAKING CHANGES` in the body: Creates major release
- `feat(<optional scope>)`: New features (minimum minor release)
- `fix(<optional scope>)`: Bug fixes (minimum patch release)
- `perf(<optional scope>)`: Performance improvement
- `docs(<optional scope>)`: Documentation updates
- `test(<optional scope>)`: Test updates
- `refactor(<optional scope>)`: Code change that neither fixes a bug nor adds a feature
- `style(<optional scope>)`: Code style changes (e.g. formatting, commas, semi-colons)
- `build(<optional scope>)`: Changes that affect the build system or external dependencies (e.g. pnpm, Npm)
- `ci(<optional scope>)`: Changes to our CI configuration files and scripts
- `chore(<optional scope>)`: Other changes that don't modify src or test files
- `revert(<optional scope>)`: Revert commit


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2022 Amplitude Analytics

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
  <a href="https://amplitude.com" target="_blank" align="center">
    <img src="https://static.amplitude.com/lightning/46c85bfd91905de8047f1ee65c7c93d6fa9ee6ea/static/media/amplitude-logo-with-text.4fb9e463.svg" width="280">
  </a>
  <br />
</p>

# Amplitude-TypeScript

This is Amplitude's latest version of the JavaScript SDK, written in TypeScript.
## Development

If you plan on contributing to this SDK, here's how you can start.

1. Clone GitHub repo
2. Install dependencies
3. Build and link packages

```
$ git clone git@github.com:amplitude/Amplitude-TypeScript.git
$ nvm use
$ pnpm --version
$ pnpm install
$ pnpm build
```

Check our guidelines for repo contributions on [CONTRIBUTING.md](https://github.com/amplitude/Amplitude-TypeScript/blob/main/CONTRIBUTING.md).

## Projects

* Amplitude SDK for Web
  * [@amplitude/analytics-browser@^2](https://github.com/amplitude/Amplitude-TypeScript/tree/main/packages/analytics-browser)
  * [@amplitude/analytics-browser@^1](https://github.com/amplitude/Amplitude-TypeScript/tree/v1.x/packages/analytics-browser)
  * [Installation and Quick Start](https://www.docs.developers.amplitude.com/data/sdks/browser-2/)
* Amplitude SDK for Node.js
  * [@amplitude/analytics-node](https://github.com/amplitude/Amplitude-TypeScript/tree/main/packages/analytics-node)
  * [Installation and Quick Start](https://www.docs.developers.amplitude.com/data/sdks/typescript-node/)
* Amplitude SDK for React Native
  * [@amplitude/analytics-react-native](https://github.com/amplitude/Amplitude-TypeScript/tree/main/packages/analytics-react-native)
  * [Installation and Quick Start](https://www.docs.developers.amplitude.com/data/sdks/typescript-react-native/)

## Testing Locally

To test the SDK locally, you can run our test server.

Before running the test server for the first time, copy ".env.example" as ".env" and replace the variables in '.env' with your own variables.

Run `pnpm dev` to run the test server. It will open up to the home page automatically in your default browser.

For more details visit the [Test Server README.md](/test-server/README.md)

### Troubleshooting

If you ever see an error that looks like this while running an Nx command (pnpm test, pnpm build, etc...):

```
 Lerna (powered by Nx)   DB transaction operation error: SqliteFailure(Error { code: SystemIoFailure, extended_code: 522 }, Some("disk I/O error"))
 ```

Run `npx nx reset` and try again

## Documentation

See our [Typescript SDK](https://amplitude.github.io/Amplitude-TypeScript/) Reference for a list and description of all available SDK methods.


================================================
FILE: commitlint.config.js
================================================
module.exports = {
  extends: ['@commitlint/config-conventional']
};


================================================
FILE: context7.json
================================================
{
  "url": "https://context7.com/amplitude/amplitude-typescript",
  "public_key": "pk_qGDvqFQPtTvDeSCjW3eUE"
}



================================================
FILE: example-proxy/.gitignore
================================================
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage/

# nyc test coverage
.nyc_output

# Dependency directories
jspm_packages/

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

# IDE files
.vscode/
.idea/
*.swp
*.swo

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db 

================================================
FILE: example-proxy/README.md
================================================
# Amplitude Proxy Server

Example Express server acts as a proxy for Amplitude analytics, allowing you to intercept, log, and forward Amplitude tracking requests.

## Features

- ✅ Proxy single Amplitude events
- ✅ Proxy batch Amplitude events  
- ✅ CORS support for browser requests
- ✅ Request logging and debugging
- ✅ Health check endpoint
- ✅ Test page for validation
- ✅ Request monitoring and debugging

## Quick Start

### Option 1: Run from Root Directory

```bash
# From the project root directory
npm run proxy        # Start the proxy server
npm run proxy:dev    # Start with auto-restart (development)
```

================================================
FILE: example-proxy/amplitude-proxy-server.js
================================================
const express = require('express');
const cors = require('cors');
const axios = require('axios');
const morgan = require('morgan');

const app = express();
const PORT = process.env.PORT || 3001;

// Middleware
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(morgan('combined'));

// Amplitude API endpoints
const AMPLITUDE_API_BASE = 'https://api2.amplitude.com';
const AMPLITUDE_BATCH_API = 'https://api2.amplitude.com/batch';

// Store for tracking requests (in-memory for demo purposes)
const requestLog = [];

// Health check endpoint
app.get('/health', (req, res) => {
  res.json({ status: 'ok', timestamp: new Date().toISOString() });
});

// Proxy endpoint for single events
app.post('/2/httpapi', async (req, res) => {
  try {
    console.log('📊 Received Amplitude event:', JSON.stringify(req.body, null, 2));
    
    // Log the request
    requestLog.push({
      timestamp: new Date().toISOString(),
      type: 'single_event',
      data: req.body
    });

    // Forward to Amplitude API
    const response = await axios.post(AMPLITUDE_API_BASE + '/2/httpapi', req.body, {
      headers: {
        'Content-Type': 'application/json',
        'User-Agent': 'Amplitude-Proxy-Server/1.0'
      }
    });

    console.log('✅ Forwarded to Amplitude successfully');
    res.status(response.status).json(response.data);
  } catch (error) {
    console.error('❌ Error forwarding to Amplitude:', error.response?.data || error.message);
    res.status(error.response?.status || 500).json({
      error: 'Failed to forward to Amplitude',
      details: error.response?.data || error.message
    });
  }
});

// Proxy endpoint for batch events
app.post('/batch', async (req, res) => {
  try {
    console.log('📦 Received Amplitude batch events:', JSON.stringify(req.body, null, 2));
    
    // Log the request
    requestLog.push({
      timestamp: new Date().toISOString(),
      type: 'batch_events',
      data: req.body
    });

    // Forward to Amplitude batch API
    const response = await axios.post(AMPLITUDE_BATCH_API, req.body, {
      headers: {
        'Content-Type': 'application/json',
        'User-Agent': 'Amplitude-Proxy-Server/1.0'
      }
    });

    console.log('✅ Forwarded batch to Amplitude successfully');
    res.status(response.status).json(response.data);
  } catch (error) {
    console.error('❌ Error forwarding batch to Amplitude:', error.response?.data || error.message);
    res.status(error.response?.status || 500).json({
      error: 'Failed to forward batch to Amplitude',
      details: error.response?.data || error.message
    });
  }
});

// Debug endpoint to view logged requests
app.get('/debug/requests', (req, res) => {
  res.json({
    total_requests: requestLog.length,
    requests: requestLog.slice(-50) // Last 50 requests
  });
});

// Clear debug logs
app.delete('/debug/requests', (req, res) => {
  requestLog.length = 0;
  res.json({ message: 'Request log cleared' });
});

// Serve a simple test page
app.get('/test', (req, res) => {
  res.send(`
    <!DOCTYPE html>
    <html>
    <head>
        <title>Amplitude Proxy Test</title>
        <script src="https://cdn.amplitude.com/libs/amplitude-8.21.0-min.gz.js"></script>
    </head>
    <body>
        <h1>Amplitude Proxy Test Page</h1>
        <p>This page tests the Amplitude proxy server.</p>
        <button onclick="sendTestEvent()">Send Test Event</button>
        <button onclick="sendBatchEvents()">Send Batch Events</button>
        <div id="status"></div>

        <script>
            // Initialize Amplitude with proxy server
            amplitude.getInstance().init('YOUR_API_KEY', null, {
                serverUrl: 'http://localhost:${PORT}',
                serverZone: 'US'
            });

            function sendTestEvent() {
                amplitude.getInstance().logEvent('Test Event', {
                    source: 'proxy_test',
                    timestamp: Date.now()
                });
                document.getElementById('status').innerHTML = '<p>✅ Test event sent!</p>';
            }

            function sendBatchEvents() {
                // Send multiple events
                for (let i = 0; i < 3; i++) {
                    amplitude.getInstance().logEvent('Batch Test Event', {
                        batch_index: i,
                        source: 'proxy_test',
                        timestamp: Date.now()
                    });
                }
                document.getElementById('status').innerHTML = '<p>✅ Batch events sent!</p>';
            }
        </script>
    </body>
    </html>
  `);
});

// Start server
app.listen(PORT, () => {
  console.log(`🚀 Amplitude Proxy Server running on http://localhost:${PORT}`);
  console.log(`📊 Single events: http://localhost:${PORT}/2/httpapi`);
  console.log(`📦 Batch events: http://localhost:${PORT}/batch`);
  console.log(`🔍 Debug logs: http://localhost:${PORT}/debug/requests`);
  console.log(`🧪 Test page: http://localhost:${PORT}/test`);
  console.log(`❤️  Health check: http://localhost:${PORT}/health`);
});

module.exports = app; 

================================================
FILE: examples/browser/chrome-ext/amplitude-min.js
================================================
!function(){"use strict";var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};function t(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var n=function(){return n=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},n.apply(this,arguments)};function i(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}function r(e,t,n,i){return new(n||(n=Promise))((function(r,o){function s(e){try{a(i.next(e))}catch(e){o(e)}}function u(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,u)}a((i=i.apply(e,t||[])).next())}))}function o(e,t){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(a){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&u[0]?i.return:u[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,u[1])).done)return r;switch(i=0,r&&(u=[2&u[0],r.value]),u[0]){case 0:case 1:r=u;break;case 4:return s.label++,{value:u[1],done:!1};case 5:s.label++,i=u[1],u=[0];continue;case 7:u=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==u[0]&&2!==u[0])){s=0;continue}if(3===u[0]&&(!r||u[1]>r[0]&&u[1]<r[3])){s.label=u[1];break}if(6===u[0]&&s.label<r[1]){s.label=r[1],r=u;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(u);break}r[2]&&s.ops.pop(),s.trys.pop();continue}u=t.call(e,s)}catch(e){u=[6,e],i=0}finally{n=r=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,a])}}}function s(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function u(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s}function a(e,t,n){if(n||2===arguments.length)for(var i,r=0,o=t.length;r<o;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}var c,l,d,f,p,v,h=function(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0},g=function(){var e,t=h();return(null===(e=null==t?void 0:t.location)||void 0===e?void 0:e.search)?t.location.search.substring(1).split("&").filter(Boolean).reduce((function(e,t){var n=t.split("=",2),i=y(n[0]),r=y(n[1]);return r?(e[i]=r,e):e}),{}):{}},y=function(e){void 0===e&&(e="");try{return decodeURIComponent(e)}catch(e){return""}},m="dclid",b="fbclid",I="gbraid",_="gclid",w="ko_click_id",S="li_fat_id",E="msclkid",T="rtd_cid",O="ttclid",k="twclid",P="wbraid",R={utm_campaign:void 0,utm_content:void 0,utm_id:void 0,utm_medium:void 0,utm_source:void 0,utm_term:void 0,referrer:void 0,referring_domain:void 0,dclid:void 0,gbraid:void 0,gclid:void 0,fbclid:void 0,ko_click_id:void 0,li_fat_id:void 0,msclkid:void 0,rtd_cid:void 0,ttclid:void 0,twclid:void 0,wbraid:void 0},U=function(){function e(){}return e.prototype.parse=function(){return r(this,void 0,void 0,(function(){return o(this,(function(e){return[2,n(n(n(n({},R),this.getUtmParam()),this.getReferrer()),this.getClickIds())]}))}))},e.prototype.getUtmParam=function(){var e=g();return{utm_campaign:e.utm_campaign,utm_content:e.utm_content,utm_id:e.utm_id,utm_medium:e.utm_medium,utm_source:e.utm_source,utm_term:e.utm_term}},e.prototype.getReferrer=function(){var e,t,n={referrer:void 0,referring_domain:void 0};try{n.referrer=document.referrer||void 0,n.referring_domain=null!==(t=null===(e=n.referrer)||void 0===e?void 0:e.split("/")[2])&&void 0!==t?t:void 0}catch(e){}return n},e.prototype.getClickIds=function(){var e,t=g();return(e={})[m]=t[m],e[b]=t[b],e[I]=t[I],e[_]=t[_],e[w]=t[w],e[S]=t[S],e[E]=t[E],e[T]=t[T],e[O]=t[O],e[k]=t[k],e[P]=t[P],e},e}();!function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(c||(c={})),function(e){e.REVENUE_PRODUCT_ID="$productId",e.REVENUE_QUANTITY="$quantity",e.REVENUE_PRICE="$price",e.REVENUE_TYPE="$revenueType",e.REVENUE="$revenue"}(l||(l={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(d||(d={})),function(e){e[e.None=0]="None",e[e.Error=1]="Error",e[e.Warn=2]="Warn",e[e.Verbose=3]="Verbose",e[e.Debug=4]="Debug"}(f||(f={})),function(e){e.US="US",e.EU="EU"}(p||(p={})),function(e){e.Unknown="unknown",e.Skipped="skipped",e.Success="success",e.RateLimit="rate_limit",e.PayloadTooLarge="payload_too_large",e.Invalid="invalid",e.Failed="failed",e.Timeout="Timeout",e.SystemError="SystemError"}(v||(v={}));var x=Object.freeze({__proto__:null,get SpecialEventType(){return d},get IdentifyOperation(){return c},get RevenueProperty(){return l},get LogLevel(){return f},get ServerZone(){return p},get Status(){return v}}),q="AMP",D="".concat(q,"_unsent"),L="https://api2.amplitude.com/2/httpapi",A=function(e){if(Object.keys(e).length>1e3)return!1;for(var t in e){var n=e[t];if(!N(t,n))return!1}return!0},N=function(e,t){var n,i;if("string"!=typeof e)return!1;if(Array.isArray(t)){var r=!0;try{for(var o=s(t),u=o.next();!u.done;u=o.next()){var a=u.value;if(Array.isArray(a))return!1;if("object"==typeof a)r=r&&A(a);else if(!["number","string"].includes(typeof a))return!1;if(!r)return!1}}catch(e){n={error:e}}finally{try{u&&!u.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}}else{if(null==t)return!1;if("object"==typeof t)return A(t);if(!["number","string","boolean"].includes(typeof t))return!1}return!0},j=function(){function e(){this._propertySet=new Set,this._properties={}}return e.prototype.getUserProperties=function(){return n({},this._properties)},e.prototype.set=function(e,t){return this._safeSet(c.SET,e,t),this},e.prototype.setOnce=function(e,t){return this._safeSet(c.SET_ONCE,e,t),this},e.prototype.append=function(e,t){return this._safeSet(c.APPEND,e,t),this},e.prototype.prepend=function(e,t){return this._safeSet(c.PREPEND,e,t),this},e.prototype.postInsert=function(e,t){return this._safeSet(c.POSTINSERT,e,t),this},e.prototype.preInsert=function(e,t){return this._safeSet(c.PREINSERT,e,t),this},e.prototype.remove=function(e,t){return this._safeSet(c.REMOVE,e,t),this},e.prototype.add=function(e,t){return this._safeSet(c.ADD,e,t),this},e.prototype.unset=function(e){return this._safeSet(c.UNSET,e,"-"),this},e.prototype.clearAll=function(){return this._properties={},this._properties[c.CLEAR_ALL]="-",this},e.prototype._safeSet=function(e,t,n){if(this._validate(e,t,n)){var i=this._properties[e];return void 0===i&&(i={},this._properties[e]=i),i[t]=n,this._propertySet.add(t),!0}return!1},e.prototype._validate=function(e,t,n){return void 0===this._properties[c.CLEAR_ALL]&&(!this._propertySet.has(t)&&(e===c.ADD?"number"==typeof n:e===c.UNSET||e===c.REMOVE||N(t,n)))},e}(),C=function(e,t){return n(n({},t),{event_type:d.IDENTIFY,user_properties:e.getUserProperties()})},M=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=v.Unknown),{event:e,code:t,message:n}},V=function(e){return e?(e^16*Math.random()>>e/4).toString(16):(String(1e7)+String(-1e3)+String(-4e3)+String(-8e3)+String(-1e11)).replace(/[018]/g,V)},F=function(){function e(e){this.client=e,this.queue=[],this.applying=!1,this.plugins=[]}return e.prototype.register=function(e,t){var n,i,s;return r(this,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return e.name=null!==(n=e.name)&&void 0!==n?n:V(),e.type=null!==(i=e.type)&&void 0!==i?i:"enrichment",[4,null===(s=e.setup)||void 0===s?void 0:s.call(e,t,this.client)];case 1:return r.sent(),this.plugins.push(e),[2]}}))}))},e.prototype.deregister=function(e){return this.plugins.splice(this.plugins.findIndex((function(t){return t.name===e})),1),Promise.resolve()},e.prototype.reset=function(e){this.applying=!1,this.plugins=[],this.client=e},e.prototype.push=function(e){var t=this;return new Promise((function(n){t.queue.push([e,n]),t.scheduleApply(0)}))},e.prototype.scheduleApply=function(e){var t=this;this.applying||(this.applying=!0,setTimeout((function(){t.apply(t.queue.shift()).then((function(){t.applying=!1,t.queue.length>0&&t.scheduleApply(0)}))}),e))},e.prototype.apply=function(e){return r(this,void 0,void 0,(function(){var t,i,r,a,c,l,d,f,p,v,h,g,y,m,b,I,_,w,S,E;return o(this,(function(o){switch(o.label){case 0:if(!e)return[2];t=u(e,1),i=t[0],r=u(e,2),a=r[1],c=this.plugins.filter((function(e){return"before"===e.type})),o.label=1;case 1:o.trys.push([1,6,7,8]),l=s(c),d=l.next(),o.label=2;case 2:return d.done?[3,5]:(g=d.value).execute?[4,g.execute(n({},i))]:[3,4];case 3:if(null===(y=o.sent()))return a({event:i,code:0,message:""}),[2];i=y,o.label=4;case 4:return d=l.next(),[3,2];case 5:return[3,8];case 6:return f=o.sent(),_={error:f},[3,8];case 7:try{d&&!d.done&&(w=l.return)&&w.call(l)}finally{if(_)throw _.error}return[7];case 8:p=this.plugins.filter((function(e){return"enrichment"===e.type||void 0===e.type})),o.label=9;case 9:o.trys.push([9,14,15,16]),v=s(p),h=v.next(),o.label=10;case 10:return h.done?[3,13]:(g=h.value).execute?[4,g.execute(n({},i))]:[3,12];case 11:if(null===(y=o.sent()))return a({event:i,code:0,message:""}),[2];i=y,o.label=12;case 12:return h=v.next(),[3,10];case 13:return[3,16];case 14:return m=o.sent(),S={error:m},[3,16];case 15:try{h&&!h.done&&(E=v.return)&&E.call(v)}finally{if(S)throw S.error}return[7];case 16:return b=this.plugins.filter((function(e){return"destination"===e.type})),I=b.map((function(e){var t=n({},i);return e.execute(t).catch((function(e){return M(t,0,String(e))}))})),Promise.all(I).then((function(e){var t=u(e,1)[0];a(t)})),[2]}}))}))},e.prototype.flush=function(){return r(this,void 0,void 0,(function(){var e,t,n,i=this;return o(this,(function(r){switch(r.label){case 0:return e=this.queue,this.queue=[],[4,Promise.all(e.map((function(e){return i.apply(e)})))];case 1:return r.sent(),t=this.plugins.filter((function(e){return"destination"===e.type})),n=t.map((function(e){return e.flush&&e.flush()})),[4,Promise.all(n)];case 2:return r.sent(),[2]}}))}))},e}(),Q="Event rejected due to exceeded retry count",$=function(e){return{promise:e||Promise.resolve()}},K=function(){function e(e){void 0===e&&(e="$default"),this.initializing=!1,this.q=[],this.dispatchQ=[],this.logEvent=this.track.bind(this),this.timeline=new F(this),this.name=e}return e.prototype._init=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return this.config=e,this.timeline.reset(this),[4,this.runQueuedFunctions("q")];case 1:return t.sent(),[2]}}))}))},e.prototype.runQueuedFunctions=function(e){return r(this,void 0,void 0,(function(){var t,n,i,r,u,a;return o(this,(function(o){switch(o.label){case 0:t=this[e],this[e]=[],o.label=1;case 1:o.trys.push([1,6,7,8]),n=s(t),i=n.next(),o.label=2;case 2:return i.done?[3,5]:[4,(0,i.value)()];case 3:o.sent(),o.label=4;case 4:return i=n.next(),[3,2];case 5:return[3,8];case 6:return r=o.sent(),u={error:r},[3,8];case 7:try{i&&!i.done&&(a=n.return)&&a.call(n)}finally{if(u)throw u.error}return[7];case 8:return[2]}}))}))},e.prototype.track=function(e,t,i){var r=function(e,t,i){return n(n(n({},"string"==typeof e?{event_type:e}:e),i),t&&{event_properties:t})}(e,t,i);return $(this.dispatch(r))},e.prototype.identify=function(e,t){var n=C(e,t);return $(this.dispatch(n))},e.prototype.groupIdentify=function(e,t,i,r){var o=function(e,t,i,r){var o;return n(n({},r),{event_type:d.GROUP_IDENTIFY,group_properties:i.getUserProperties(),groups:(o={},o[e]=t,o)})}(e,t,i,r);return $(this.dispatch(o))},e.prototype.setGroup=function(e,t,i){var r=function(e,t,i){var r,o=new j;return o.set(e,t),n(n({},i),{event_type:d.IDENTIFY,user_properties:o.getUserProperties(),groups:(r={},r[e]=t,r)})}(e,t,i);return $(this.dispatch(r))},e.prototype.revenue=function(e,t){var i=function(e,t){return n(n({},t),{event_type:d.REVENUE,event_properties:e.getEventProperties()})}(e,t);return $(this.dispatch(i))},e.prototype.add=function(e){return this.config?$(this.timeline.register(e,this.config)):(this.q.push(this.add.bind(this,e)),$())},e.prototype.remove=function(e){return this.config?$(this.timeline.deregister(e)):(this.q.push(this.remove.bind(this,e)),$())},e.prototype.dispatchWithCallback=function(e,t){if(!this.config)return t(M(e,0,"Client not initialized"));this.process(e).then(t)},e.prototype.dispatch=function(e){return r(this,void 0,void 0,(function(){var t=this;return o(this,(function(n){return this.config?[2,this.process(e)]:[2,new Promise((function(n){t.dispatchQ.push(t.dispatchWithCallback.bind(t,e,n))}))]}))}))},e.prototype.process=function(e){return r(this,void 0,void 0,(function(){var t,n,i;return o(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),this.config.optOut?[2,M(e,0,"Event skipped due to optOut config")]:[4,this.timeline.push(e)];case 1:return 200===(i=r.sent()).code?this.config.loggerProvider.log(i.message):this.config.loggerProvider.error(i.message),[2,i];case 2:return t=r.sent(),n=String(t),this.config.loggerProvider.error(n),[2,i=M(e,0,n)];case 3:return[2]}}))}))},e.prototype.setOptOut=function(e){this.config?this.config.optOut=Boolean(e):this.q.push(this.setOptOut.bind(this,Boolean(e)))},e.prototype.flush=function(){return $(this.timeline.flush())},e}(),B=function(){function e(){this.productId="",this.quantity=1,this.price=0}return e.prototype.setProductId=function(e){return this.productId=e,this},e.prototype.setQuantity=function(e){return e>0&&(this.quantity=e),this},e.prototype.setPrice=function(e){return this.price=e,this},e.prototype.setRevenueType=function(e){return this.revenueType=e,this},e.prototype.setRevenue=function(e){return this.revenue=e,this},e.prototype.setEventProperties=function(e){return A(e)&&(this.properties=e),this},e.prototype.getEventProperties=function(){var e=this.properties?n({},this.properties):{};return e[l.REVENUE_PRODUCT_ID]=this.productId,e[l.REVENUE_QUANTITY]=this.quantity,e[l.REVENUE_PRICE]=this.price,e[l.REVENUE_TYPE]=this.revenueType,e[l.REVENUE]=this.revenue,e},e}(),z="Amplitude Logger ",W=function(){function e(){this.logLevel=f.None}return e.prototype.disable=function(){this.logLevel=f.None},e.prototype.enable=function(e){void 0===e&&(e=f.Warn),this.logLevel=e},e.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<f.Verbose||console.log("".concat(z,"[Log]: ").concat(e.join(" ")))},e.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<f.Warn||console.warn("".concat(z,"[Warn]: ").concat(e.join(" ")))},e.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<f.Error||console.error("".concat(z,"[Error]: ").concat(e.join(" ")))},e.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<f.Debug||console.log("".concat(z,"[Debug]: ").concat(e.join(" ")))},e}(),J=function(){return{flushMaxRetries:12,flushQueueSize:200,flushIntervalMillis:1e4,logLevel:f.Warn,loggerProvider:new W,optOut:!1,serverUrl:L,serverZone:"US",useBatch:!1}},Z=function(){function e(e){var t,n,i,r;this._optOut=!1;var o=J();this.apiKey=e.apiKey,this.flushIntervalMillis=null!==(t=e.flushIntervalMillis)&&void 0!==t?t:o.flushIntervalMillis,this.flushMaxRetries=e.flushMaxRetries||o.flushMaxRetries,this.flushQueueSize=e.flushQueueSize||o.flushQueueSize,this.loggerProvider=e.loggerProvider||o.loggerProvider,this.logLevel=null!==(n=e.logLevel)&&void 0!==n?n:o.logLevel,this.minIdLength=e.minIdLength,this.plan=e.plan,this.ingestionMetadata=e.ingestionMetadata,this.optOut=null!==(i=e.optOut)&&void 0!==i?i:o.optOut,this.serverUrl=e.serverUrl,this.serverZone=e.serverZone||o.serverZone,this.storageProvider=e.storageProvider,this.transportProvider=e.transportProvider,this.useBatch=null!==(r=e.useBatch)&&void 0!==r?r:o.useBatch,this.loggerProvider.enable(this.logLevel);var s=Y(e.serverUrl,e.serverZone,e.useBatch);this.serverZone=s.serverZone,this.serverUrl=s.serverUrl}return Object.defineProperty(e.prototype,"optOut",{get:function(){return this._optOut},set:function(e){this._optOut=e},enumerable:!1,configurable:!0}),e}(),G=function(e,t){return"EU"===e?t?"https://api.eu.amplitude.com/batch":"https://api.eu.amplitude.com/2/httpapi":t?"https://api2.amplitude.com/batch":L},Y=function(e,t,n){if(void 0===e&&(e=""),void 0===t&&(t=J().serverZone),void 0===n&&(n=J().useBatch),e)return{serverUrl:e,serverZone:void 0};var i=["US","EU"].includes(t)?t:J().serverZone;return{serverZone:i,serverUrl:G(i,n)}},H=function(){function e(){this.name="amplitude",this.type="destination",this.retryTimeout=1e3,this.throttleTimeout=3e4,this.storageKey="",this.scheduled=null,this.queue=[]}return e.prototype.setup=function(e){var t;return r(this,void 0,void 0,(function(){var n,i=this;return o(this,(function(r){switch(r.label){case 0:return this.config=e,this.storageKey="".concat(D,"_").concat(this.config.apiKey.substring(0,10)),[4,null===(t=this.config.storageProvider)||void 0===t?void 0:t.get(this.storageKey)];case 1:return n=r.sent(),this.saveEvents(),n&&n.length>0&&Promise.all(n.map((function(e){return i.execute(e)}))).catch(),[2,Promise.resolve(void 0)]}}))}))},e.prototype.execute=function(e){var t=this;return new Promise((function(n){var i={event:e,attempts:0,callback:function(e){return n(e)},timeout:0};t.addToQueue(i)}))},e.prototype.addToQueue=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var i=t.filter((function(t){return t.attempts<e.config.flushMaxRetries?(t.attempts+=1,!0):(e.fulfillRequest([t],500,Q),!1)}));i.forEach((function(t){e.queue=e.queue.concat(t),0!==t.timeout?setTimeout((function(){t.timeout=0,e.schedule(0)}),t.timeout):e.schedule(e.config.flushIntervalMillis)})),this.saveEvents()},e.prototype.schedule=function(e){var t=this;this.scheduled||(this.scheduled=setTimeout((function(){t.flush(!0).then((function(){t.queue.length>0&&t.schedule(e)}))}),e))},e.prototype.flush=function(e){return void 0===e&&(e=!1),r(this,void 0,void 0,(function(){var t,n,i,r=this;return o(this,(function(o){switch(o.label){case 0:return t=[],n=[],this.queue.forEach((function(e){return 0===e.timeout?t.push(e):n.push(e)})),this.queue=n,this.scheduled&&(clearTimeout(this.scheduled),this.scheduled=null),s=t,u=this.config.flushQueueSize,a=Math.max(u,1),i=s.reduce((function(e,t,n){var i=Math.floor(n/a);return e[i]||(e[i]=[]),e[i].push(t),e}),[]),[4,Promise.all(i.map((function(t){return r.send(t,e)})))];case 1:return o.sent(),[2]}var s,u,a}))}))},e.prototype.send=function(e,t){return void 0===t&&(t=!0),r(this,void 0,void 0,(function(){var n,r,s,u,a;return o(this,(function(o){switch(o.label){case 0:if(!this.config.apiKey)return[2,this.fulfillRequest(e,400,"Event rejected due to missing API key")];n={api_key:this.config.apiKey,events:e.map((function(e){var t=e.event;return t.extra,i(t,["extra"])})),options:{min_id_length:this.config.minIdLength}},o.label=1;case 1:return o.trys.push([1,3,,4]),r=Y(this.config.serverUrl,this.config.serverZone,this.config.useBatch).serverUrl,[4,this.config.transportProvider.send(r,n)];case 2:if(null===(s=o.sent()))return this.fulfillRequest(e,0,"Unexpected error occurred"),[2];if(!t){if("body"in s){u="";try{u=JSON.stringify(s.body,null,2)}catch(e){}this.fulfillRequest(e,s.statusCode,"".concat(s.status,": ").concat(u))}else this.fulfillRequest(e,s.statusCode,s.status);return[2]}return this.handleReponse(s,e),[3,4];case 3:return a=o.sent(),this.fulfillRequest(e,0,String(a)),[3,4];case 4:return[2]}}))}))},e.prototype.handleReponse=function(e,t){switch(e.status){case v.Success:this.handleSuccessResponse(e,t);break;case v.Invalid:this.handleInvalidResponse(e,t);break;case v.PayloadTooLarge:this.handlePayloadTooLargeResponse(e,t);break;case v.RateLimit:this.handleRateLimitResponse(e,t);break;default:this.handleOtherReponse(t)}},e.prototype.handleSuccessResponse=function(e,t){this.fulfillRequest(t,e.statusCode,"Event tracked successfully")},e.prototype.handleInvalidResponse=function(e,t){var n=this;if(e.body.missingField||e.body.error.startsWith("Invalid API key"))this.fulfillRequest(t,e.statusCode,e.body.error);else{var i=a(a(a(a([],u(Object.values(e.body.eventsWithInvalidFields)),!1),u(Object.values(e.body.eventsWithMissingFields)),!1),u(Object.values(e.body.eventsWithInvalidIdLengths)),!1),u(e.body.silencedEvents),!1).flat(),r=new Set(i),o=t.filter((function(t,i){if(!r.has(i))return!0;n.fulfillRequest([t],e.statusCode,e.body.error)}));this.addToQueue.apply(this,a([],u(o),!1))}},e.prototype.handlePayloadTooLargeResponse=function(e,t){1!==t.length?(this.config.flushQueueSize/=2,this.addToQueue.apply(this,a([],u(t),!1))):this.fulfillRequest(t,e.statusCode,e.body.error)},e.prototype.handleRateLimitResponse=function(e,t){var n=this,i=Object.keys(e.body.exceededDailyQuotaUsers),r=Object.keys(e.body.exceededDailyQuotaDevices),o=e.body.throttledEvents,s=new Set(i),c=new Set(r),l=new Set(o),d=t.filter((function(t,i){if(!(t.event.user_id&&s.has(t.event.user_id)||t.event.device_id&&c.has(t.event.device_id)))return l.has(i)&&(t.timeout=n.throttleTimeout),!0;n.fulfillRequest([t],e.statusCode,e.body.error)}));this.addToQueue.apply(this,a([],u(d),!1))},e.prototype.handleOtherReponse=function(e){var t=this;this.addToQueue.apply(this,a([],u(e.map((function(e){return e.timeout=e.attempts*t.retryTimeout,e}))),!1))},e.prototype.fulfillRequest=function(e,t,n){this.saveEvents(),e.forEach((function(e){return e.callback(M(e.event,t,n))}))},e.prototype.saveEvents=function(){if(this.config.storageProvider){var e=Array.from(this.queue.map((function(e){return e.event})));this.config.storageProvider.set(this.storageKey,e)}},e}(),X=function(e){return void 0===e&&(e=0),((new Error).stack||"").split("\n").slice(2+e).map((function(e){return e.trim()}))},ee=function(e){return function(){var t=n({},e.config);return{logger:t.loggerProvider,logLevel:t.logLevel}}},te=function(e,t){var n,i;t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/^\./,"");try{for(var r=s(t.split(".")),o=r.next();!o.done;o=r.next()){var u=o.value;if(!(u in e))return;e=e[u]}}catch(e){n={error:e}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(n)throw n.error}}return e},ne=function(e,t){return function(){var n,i,r={};try{for(var o=s(t),u=o.next();!u.done;u=o.next()){var a=u.value;r[a]=te(e,a)}}catch(e){n={error:e}}finally{try{u&&!u.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r}},ie=function(e,t,n,i,r){return void 0===r&&(r=null),function(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var u=n(),a=u.logger,c=u.logLevel;if(c&&c<f.Debug||!c||!a)return e.apply(r,o);var l={type:"invoke public method",name:t,args:o,stacktrace:X(1),time:{start:(new Date).toISOString()},states:{}};i&&l.states&&(l.states.before=i());var d=e.apply(r,o);return d&&d.promise?d.promise.then((function(){i&&l.states&&(l.states.after=i()),l.time&&(l.time.end=(new Date).toISOString()),a.debug(JSON.stringify(l,null,2))})):(i&&l.states&&(l.states.after=i()),l.time&&(l.time.end=(new Date).toISOString()),a.debug(JSON.stringify(l,null,2))),d}},re=function(){function e(){this.memoryStorage=new Map}return e.prototype.isEnabled=function(){return r(this,void 0,void 0,(function(){return o(this,(function(e){return[2,!0]}))}))},e.prototype.get=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){return[2,this.memoryStorage.get(e)]}))}))},e.prototype.getRaw=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,this.get(e)];case 1:return[2,(t=n.sent())?JSON.stringify(t):void 0]}}))}))},e.prototype.set=function(e,t){return r(this,void 0,void 0,(function(){return o(this,(function(n){return this.memoryStorage.set(e,t),[2]}))}))},e.prototype.remove=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){return this.memoryStorage.delete(e),[2]}))}))},e.prototype.reset=function(){return r(this,void 0,void 0,(function(){return o(this,(function(e){return this.memoryStorage.clear(),[2]}))}))},e}(),oe=function(){function e(){}return e.prototype.send=function(e,t){return Promise.resolve(null)},e.prototype.buildResponse=function(e){var t,n,i,r,o,s,u,a,c,l,d,f,p,h,g,y,m,b,I,_,w,S;if("object"!=typeof e)return null;var E=e.code||0,T=this.buildStatus(E);switch(T){case v.Success:return{status:T,statusCode:E,body:{eventsIngested:null!==(t=e.events_ingested)&&void 0!==t?t:0,payloadSizeBytes:null!==(n=e.payload_size_bytes)&&void 0!==n?n:0,serverUploadTime:null!==(i=e.server_upload_time)&&void 0!==i?i:0}};case v.Invalid:return{status:T,statusCode:E,body:{error:null!==(r=e.error)&&void 0!==r?r:"",missingField:null!==(o=e.missing_field)&&void 0!==o?o:"",eventsWithInvalidFields:null!==(s=e.events_with_invalid_fields)&&void 0!==s?s:{},eventsWithMissingFields:null!==(u=e.events_with_missing_fields)&&void 0!==u?u:{},eventsWithInvalidIdLengths:null!==(a=e.events_with_invalid_id_lengths)&&void 0!==a?a:{},epsThreshold:null!==(c=e.eps_threshold)&&void 0!==c?c:0,exceededDailyQuotaDevices:null!==(l=e.exceeded_daily_quota_devices)&&void 0!==l?l:{},silencedDevices:null!==(d=e.silenced_devices)&&void 0!==d?d:[],silencedEvents:null!==(f=e.silenced_events)&&void 0!==f?f:[],throttledDevices:null!==(p=e.throttled_devices)&&void 0!==p?p:{},throttledEvents:null!==(h=e.throttled_events)&&void 0!==h?h:[]}};case v.PayloadTooLarge:return{status:T,statusCode:E,body:{error:null!==(g=e.error)&&void 0!==g?g:""}};case v.RateLimit:return{status:T,statusCode:E,body:{error:null!==(y=e.error)&&void 0!==y?y:"",epsThreshold:null!==(m=e.eps_threshold)&&void 0!==m?m:0,throttledDevices:null!==(b=e.throttled_devices)&&void 0!==b?b:{},throttledUsers:null!==(I=e.throttled_users)&&void 0!==I?I:{},exceededDailyQuotaDevices:null!==(_=e.exceeded_daily_quota_devices)&&void 0!==_?_:{},exceededDailyQuotaUsers:null!==(w=e.exceeded_daily_quota_users)&&void 0!==w?w:{},throttledEvents:null!==(S=e.throttled_events)&&void 0!==S?S:[]}};case v.Timeout:default:return{status:T,statusCode:E}}},e.prototype.buildStatus=function(e){return e>=200&&e<300?v.Success:429===e?v.RateLimit:413===e?v.PayloadTooLarge:408===e?v.Timeout:e>=400&&e<500?v.Invalid:e>=500?v.Failed:v.Unknown},e}(),se=function(e,t,n){return void 0===t&&(t=""),void 0===n&&(n=10),[q,t,e.substring(0,n)].filter(Boolean).join("_")},ue=function(){function e(e){this.options=n({},e)}return e.prototype.isEnabled=function(){return r(this,void 0,void 0,(function(){var t,n,i;return o(this,(function(r){switch(r.label){case 0:if(!h())return[2,!1];t=String(Date.now()),n=new e(this.options),i="AMP_TEST",r.label=1;case 1:return r.trys.push([1,4,5,7]),[4,n.set(i,t)];case 2:return r.sent(),[4,n.get(i)];case 3:return[2,r.sent()===t];case 4:return r.sent(),[2,!1];case 5:return[4,n.remove(i)];case 6:return r.sent(),[7];case 7:return[2]}}))}))},e.prototype.get=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,this.getRaw(e)];case 1:if(!(t=n.sent()))return[2,void 0];try{try{t=decodeURIComponent(atob(t))}catch(e){}return[2,JSON.parse(t)]}catch(e){return[2,void 0]}return[2]}}))}))},e.prototype.getRaw=function(e){var t;return r(this,void 0,void 0,(function(){var n,i,r;return o(this,(function(o){return n=h(),i=null!==(t=null==n?void 0:n.document.cookie.split("; "))&&void 0!==t?t:[],(r=i.find((function(t){return 0===t.indexOf(e+"=")})))?[2,r.substring(e.length+1)]:[2,void 0]}))}))},e.prototype.set=function(e,t){var n;return r(this,void 0,void 0,(function(){var i,r,s,u,a,c;return o(this,(function(o){try{i=null!==(n=this.options.expirationDays)&&void 0!==n?n:0,s=void 0,(r=null!==t?i:-1)&&((u=new Date).setTime(u.getTime()+24*r*60*60*1e3),s=u),a="".concat(e,"=").concat(btoa(encodeURIComponent(JSON.stringify(t)))),s&&(a+="; expires=".concat(s.toUTCString())),a+="; path=/",this.options.domain&&(a+="; domain=".concat(this.options.domain)),this.options.secure&&(a+="; Secure"),this.options.sameSite&&(a+="; SameSite=".concat(this.options.sameSite)),(c=h())&&(c.document.cookie=a)}catch(e){}return[2]}))}))},e.prototype.remove=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,this.set(e,null)];case 1:return t.sent(),[2]}}))}))},e.prototype.reset=function(){return r(this,void 0,void 0,(function(){return o(this,(function(e){return[2]}))}))},e}(),ae=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.send=function(e,t){return r(this,void 0,void 0,(function(){var n,i;return o(this,(function(r){switch(r.label){case 0:if("undefined"==typeof fetch)throw new Error("FetchTransport is not supported");return n={headers:{"Content-Type":"application/json",Accept:"*/*"},body:JSON.stringify(t),method:"POST"},[4,fetch(e,n)];case 1:return[4,r.sent().json()];case 2:return i=r.sent(),[2,this.buildResponse(i)]}}))}))},n}(oe),ce=function(){function e(){}return e.prototype.getApplicationContext=function(){return{versionName:this.versionName,language:le(),platform:"Web",os:void 0,deviceModel:void 0}},e}(),le=function(){return"undefined"!=typeof navigator&&(navigator.languages&&navigator.languages[0]||navigator.language)||""},de=function(){function e(){this.queue=[]}return e.prototype.logEvent=function(e){this.receiver?this.receiver(e):this.queue.length<512&&this.queue.push(e)},e.prototype.setEventReceiver=function(e){this.receiver=e,this.queue.length>0&&(this.queue.forEach((function(t){e(t)})),this.queue=[])},e}(),fe=function(){return fe=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},fe.apply(this,arguments)},pe=function(e,t){var n=typeof e;if(n!==typeof t)return!1;for(var i=0,r=["string","number","boolean","undefined"];i<r.length;i++){if(r[i]===n)return e===t}if(null==e&&null==t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;var o=Array.isArray(e),s=Array.isArray(t);if(o!==s)return!1;if(!o||!s){var u=Object.keys(e).sort(),a=Object.keys(t).sort();if(!pe(u,a))return!1;var c=!0;return Object.keys(e).forEach((function(n){pe(e[n],t[n])||(c=!1)})),c}for(var l=0;l<e.length;l++)if(!pe(e[l],t[l]))return!1;return!0};Object.entries||(Object.entries=function(e){for(var t=Object.keys(e),n=t.length,i=new Array(n);n--;)i[n]=[t[n],e[t[n]]];return i});var ve=function(){function e(){this.identity={userProperties:{}},this.listeners=new Set}return e.prototype.editIdentity=function(){var e=this,t=fe({},this.identity.userProperties),n=fe(fe({},this.identity),{userProperties:t});return{setUserId:function(e){return n.userId=e,this},setDeviceId:function(e){return n.deviceId=e,this},setUserProperties:function(e){return n.userProperties=e,this},updateUserProperties:function(e){for(var t=n.userProperties||{},i=0,r=Object.entries(e);i<r.length;i++){var o=r[i],s=o[0],u=o[1];switch(s){case"$set":for(var a=0,c=Object.entries(u);a<c.length;a++){var l=c[a],d=l[0],f=l[1];t[d]=f}break;case"$unset":for(var p=0,v=Object.keys(u);p<v.length;p++){delete t[d=v[p]]}break;case"$clearAll":t={}}}return n.userProperties=t,this},commit:function(){return e.setIdentity(n),this}}},e.prototype.getIdentity=function(){return fe({},this.identity)},e.prototype.setIdentity=function(e){var t=fe({},this.identity);this.identity=fe({},e),pe(t,this.identity)||this.listeners.forEach((function(t){t(e)}))},e.prototype.addIdentityListener=function(e){this.listeners.add(e)},e.prototype.removeIdentityListener=function(e){this.listeners.delete(e)},e}(),he="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:self,ge=function(){function e(){this.identityStore=new ve,this.eventBridge=new de,this.applicationContextProvider=new ce}return e.getInstance=function(t){return he.analyticsConnectorInstances||(he.analyticsConnectorInstances={}),he.analyticsConnectorInstances[t]||(he.analyticsConnectorInstances[t]=new e),he.analyticsConnectorInstances[t]},e}(),ye=function(){return ge.getInstance("$default_instance")},me=function(){function e(){this.name="identity",this.type="before",this.identityStore=ye().identityStore}return e.prototype.execute=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(n){return(t=e.user_properties)&&this.identityStore.editIdentity().updateUserProperties(t).commit(),[2,e]}))}))},e.prototype.setup=function(e){return Promise.resolve(void 0)},e}(),be=function(){var e,t,n,i;if("undefined"==typeof navigator)return"";var r=navigator.userLanguage;return null!==(i=null!==(n=null!==(t=null===(e=navigator.languages)||void 0===e?void 0:e[0])&&void 0!==t?t:navigator.language)&&void 0!==n?n:r)&&void 0!==i?i:""},Ie=function(e,t){return"boolean"==typeof e?e:!1!==(null==e?void 0:e[t])},_e=function(e){return Ie(e,"attribution")},we=function(e){var t,n,i=function(){return!1},r=void 0;return(n=e.defaultTracking,Ie(n,"pageViews"))&&(i=void 0,t=void 0,e.defaultTracking&&"object"==typeof e.defaultTracking&&e.defaultTracking.pageViews&&"object"==typeof e.defaultTracking.pageViews&&("trackOn"in e.defaultTracking.pageViews&&(i=e.defaultTracking.pageViews.trackOn),"trackHistoryChanges"in e.defaultTracking.pageViews&&(r=e.defaultTracking.pageViews.trackHistoryChanges),"eventType"in e.defaultTracking.pageViews&&e.defaultTracking.pageViews.eventType&&(t=e.defaultTracking.pageViews.eventType))),{trackOn:i,trackHistoryChanges:r,eventType:t}},Se=function(e,t){Ee(e,t)},Ee=function(e,t){for(var n=0;n<t.length;n++){var i=t[n],r=i.name,o=i.args,s=i.resolve,u=e&&e[r];if("function"==typeof u){var a=u.apply(e,o);"function"==typeof s&&s(null==a?void 0:a.promise)}}return e},Te=function(e){return e&&void 0!==e._q},Oe=function(){function e(){this.name="@amplitude/plugin-context-browser",this.type="before",this.eventId=0,this.library="amplitude-ts/".concat("2.0.0-beta.5"),"undefined"!=typeof navigator&&(this.userAgent=navigator.userAgent)}return e.prototype.setup=function(e){return this.config=e,this.eventId=this.config.lastEventId?this.config.lastEventId+1:0,Promise.resolve(void 0)},e.prototype.execute=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(i){return t=(new Date).getTime(),this.config.lastEventId=this.eventId,[2,n(n(n(n(n(n(n(n({user_id:this.config.userId,device_id:this.config.deviceId,session_id:this.config.sessionId,time:t},this.config.appVersion&&{app_version:this.config.appVersion}),this.config.trackingOptions.platform&&{platform:"Web"}),this.config.trackingOptions.language&&{language:be()}),this.config.trackingOptions.ipAddress&&{ip:"$remote"}),{insert_id:V(),partner_id:this.config.partnerId,plan:this.config.plan}),this.config.ingestionMetadata&&{ingestion_metadata:{source_name:this.config.ingestionMetadata.sourceName,source_version:this.config.ingestionMetadata.sourceVersion}}),e),{event_id:this.eventId++,library:this.library,user_agent:this.userAgent})]}))}))},e}(),ke=function(){function e(){}return e.prototype.isEnabled=function(){return r(this,void 0,void 0,(function(){var t,n,i;return o(this,(function(r){switch(r.label){case 0:if(!h())return[2,!1];t=String(Date.now()),n=new e,i="AMP_TEST",r.label=1;case 1:return r.trys.push([1,4,5,7]),[4,n.set(i,t)];case 2:return r.sent(),[4,n.get(i)];case 3:return[2,r.sent()===t];case 4:return r.sent(),[2,!1];case 5:return[4,n.remove(i)];case 6:return r.sent(),[7];case 7:return[2]}}))}))},e.prototype.get=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.getRaw(e)];case 1:return(t=n.sent())?[2,JSON.parse(t)]:[2,void 0];case 2:return n.sent(),[2,void 0];case 3:return[2]}}))}))},e.prototype.getRaw=function(e){var t;return r(this,void 0,void 0,(function(){return o(this,(function(n){return[2,(null===(t=h())||void 0===t?void 0:t.localStorage.getItem(e))||void 0]}))}))},e.prototype.set=function(e,t){var n;return r(this,void 0,void 0,(function(){return o(this,(function(i){try{null===(n=h())||void 0===n||n.localStorage.setItem(e,JSON.stringify(t))}catch(e){}return[2]}))}))},e.prototype.remove=function(e){var t;return r(this,void 0,void 0,(function(){return o(this,(function(n){try{null===(t=h())||void 0===t||t.localStorage.removeItem(e)}catch(e){}return[2]}))}))},e.prototype.reset=function(){var e;return r(this,void 0,void 0,(function(){return o(this,(function(t){try{null===(e=h())||void 0===e||e.localStorage.clear()}catch(e){}return[2]}))}))},e}(),Pe=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={done:4},t}return t(n,e),n.prototype.send=function(e,t){return r(this,void 0,void 0,(function(){var n=this;return o(this,(function(i){return[2,new Promise((function(i,r){"undefined"==typeof XMLHttpRequest&&r(new Error("XHRTransport is not supported."));var o=new XMLHttpRequest;o.open("POST",e,!0),o.onreadystatechange=function(){if(o.readyState===n.state.done)try{var e=o.responseText,t=JSON.parse(e),s=n.buildResponse(t);i(s)}catch(e){r(e)}},o.setRequestHeader("Content-Type","application/json"),o.setRequestHeader("Accept","*/*"),o.send(JSON.stringify(t))}))]}))}))},n}(oe),Re=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.send=function(e,t){return r(this,void 0,void 0,(function(){var n=this;return o(this,(function(i){return[2,new Promise((function(i,r){var o=h();if(!(null==o?void 0:o.navigator.sendBeacon))throw new Error("SendBeaconTransport is not supported");try{var s=JSON.stringify(t);return i(o.navigator.sendBeacon(e,JSON.stringify(t))?n.buildResponse({code:200,events_ingested:t.events.length,payload_size_bytes:s.length,server_upload_time:Date.now()}):n.buildResponse({code:500}))}catch(e){r(e)}}))]}))}))},n}(oe),Ue=function(e,t,n){return void 0===n&&(n=!0),r(void 0,void 0,void 0,(function(){var i,r,s,a,c,l,d,f;return o(this,(function(o){switch(o.label){case 0:return i=function(e){return"".concat(q.toLowerCase(),"_").concat(e.substring(0,6))}(e),[4,t.getRaw(i)];case 1:return(r=o.sent())?n?[4,t.remove(i)]:[3,3]:[2,{optOut:!1}];case 2:o.sent(),o.label=3;case 3:return s=u(r.split("."),5),a=s[0],c=s[1],l=s[2],d=s[3],f=s[4],[2,{deviceId:a,userId:qe(c),sessionId:xe(d),lastEventTime:xe(f),optOut:Boolean(l)}]}}))}))},xe=function(e){var t=parseInt(e,32);if(!isNaN(t))return t},qe=function(e){if(atob&&escape&&e)try{return decodeURIComponent(escape(atob(e)))}catch(e){return}},De="[Amplitude]",Le="".concat(De," Form Started"),Ae="".concat(De," Form Submitted"),Ne="".concat(De," File Downloaded"),je="session_start",Ce="session_end",Me="".concat(De," File Extension"),Ve="".concat(De," File Name"),Fe="".concat(De," Link ID"),Qe="".concat(De," Link Text"),$e="".concat(De," Link URL"),Ke="".concat(De," Form ID"),Be="".concat(De," Form Name"),ze="".concat(De," Form Destination"),We="cookie",Je=function(e){function n(t,n,i,r,o,s,u,a,c,l,d,p,v,h,g,y,m,b,I,_,w,S,E,T,O,k,P,R){void 0===i&&(i=new re),void 0===r&&(r={domain:"",expiration:365,sameSite:"Lax",secure:!1,upgrade:!0}),void 0===o&&(o=!0),void 0===u&&(u=1e3),void 0===a&&(a=5),void 0===c&&(c=30),void 0===l&&(l=We),void 0===h&&(h=new W),void 0===g&&(g=f.Warn),void 0===m&&(m=!1),void 0===_&&(_=""),void 0===w&&(w="US"),void 0===E&&(E=18e5),void 0===T&&(T=new ke),void 0===O&&(O={ipAddress:!0,language:!0,platform:!0}),void 0===k&&(k="fetch"),void 0===P&&(P=!1);var U=e.call(this,{apiKey:t,storageProvider:T,transportProvider:Ye(k)})||this;return U.apiKey=t,U.appVersion=n,U.cookieOptions=r,U.defaultTracking=o,U.flushIntervalMillis=u,U.flushMaxRetries=a,U.flushQueueSize=c,U.identityStorage=l,U.ingestionMetadata=d,U.loggerProvider=h,U.logLevel=g,U.minIdLength=y,U.partnerId=b,U.plan=I,U.serverUrl=_,U.serverZone=w,U.sessionTimeout=E,U.storageProvider=T,U.trackingOptions=O,U.transport=k,U.useBatch=P,U._optOut=!1,U._cookieStorage=i,U.deviceId=s,U.lastEventId=p,U.lastEventTime=v,U.optOut=m,U.sessionId=S,U.userId=R,U.loggerProvider.enable(U.logLevel),U}return t(n,e),Object.defineProperty(n.prototype,"cookieStorage",{get:function(){return this._cookieStorage},set:function(e){this._cookieStorage!==e&&(this._cookieStorage=e,this.updateStorage())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"deviceId",{get:function(){return this._deviceId},set:function(e){this._deviceId!==e&&(this._deviceId=e,this.updateStorage())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"userId",{get:function(){return this._userId},set:function(e){this._userId!==e&&(this._userId=e,this.updateStorage())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"sessionId",{get:function(){return this._sessionId},set:function(e){this._sessionId!==e&&(this._sessionId=e,this.updateStorage())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"optOut",{get:function(){return this._optOut},set:function(e){this._optOut!==e&&(this._optOut=e,this.updateStorage())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"lastEventTime",{get:function(){return this._lastEventTime},set:function(e){this._lastEventTime!==e&&(this._lastEventTime=e,this.updateStorage())},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"lastEventId",{get:function(){return this._lastEventId},set:function(e){this._lastEventId!==e&&(this._lastEventId=e,this.updateStorage())},enumerable:!1,configurable:!0}),n.prototype.updateStorage=function(){var e={deviceId:this._deviceId,userId:this._userId,sessionId:this._sessionId,optOut:this._optOut,lastEventTime:this._lastEventTime,lastEventId:this._lastEventId};this.cookieStorage.set(se(this.apiKey),e)},n}(Z),Ze=function(e,t,i){return void 0===t&&(t={}),r(void 0,void 0,void 0,(function(){var r,s,u,a,c,l,d,f,p,v,h,y,m,b,I,_,w,S,E,T,O,k,P,R,U,x,q,D,L,A,N,j,C,M;return o(this,(function(o){switch(o.label){case 0:return r=t.identityStorage||We,u=[n({},t.cookieOptions)],w={},r===We?[3,1]:(a="",[3,5]);case 1:return null===(E=null===(S=t.cookieOptions)||void 0===S?void 0:S.domain)||void 0===E?[3,2]:(c=E,[3,4]);case 2:return[4,He()];case 3:c=o.sent(),o.label=4;case 4:a=c,o.label=5;case 5:return s=n.apply(void 0,u.concat([(w.domain=a,w.expiration=365,w.sameSite="Lax",w.secure=!1,w.upgrade=!0,w)])),l=Ge(t.identityStorage,s),[4,Ue(e,l,null===(O=null===(T=t.cookieOptions)||void 0===T?void 0:T.upgrade)||void 0===O||O)];case 6:return d=o.sent(),[4,l.get(se(e))];case 7:return f=o.sent(),p=g(),v=null!==(U=null!==(R=null!==(P=null!==(k=t.deviceId)&&void 0!==k?k:p.deviceId)&&void 0!==P?P:null==f?void 0:f.deviceId)&&void 0!==R?R:d.deviceId)&&void 0!==U?U:V(),h=null==f?void 0:f.lastEventId,y=null!==(x=null==f?void 0:f.lastEventTime)&&void 0!==x?x:d.lastEventTime,m=null!==(D=null!==(q=t.optOut)&&void 0!==q?q:null==f?void 0:f.optOut)&&void 0!==D?D:d.optOut,b=null!==(A=null!==(L=t.sessionId)&&void 0!==L?L:null==f?void 0:f.sessionId)&&void 0!==A?A:d.sessionId,I=null!==(j=null!==(N=t.userId)&&void 0!==N?N:null==f?void 0:f.userId)&&void 0!==j?j:d.userId,i.previousSessionDeviceId=null!==(C=null==f?void 0:f.deviceId)&&void 0!==C?C:d.deviceId,i.previousSessionUserId=null!==(M=null==f?void 0:f.userId)&&void 0!==M?M:d.userId,_=n(n({},t.trackingOptions),{ipAddress:!0,language:!0,platform:!0}),[2,new Je(e,t.appVersion,l,s,t.defaultTracking,v,t.flushIntervalMillis,t.flushMaxRetries,t.flushQueueSize,r,t.ingestionMetadata,h,y,t.loggerProvider,t.logLevel,t.minIdLength,m,t.partnerId,t.plan,t.serverUrl,t.serverZone,b,t.sessionTimeout,t.storageProvider,_,t.transport,t.useBatch,I)]}}))}))},Ge=function(e,t){switch(void 0===e&&(e=We),void 0===t&&(t={}),e){case"localStorage":return new ke;case"none":return new re;default:return new ue(t)}},Ye=function(e){return"xhr"===e?new Pe:"beacon"===e?new Re:new ae},He=function(e){return r(void 0,void 0,void 0,(function(){var t,n,i,r,s,u,a;return o(this,(function(o){switch(o.label){case 0:return[4,(new ue).isEnabled()];case 1:if(!o.sent()||!e&&"undefined"==typeof location)return[2,""];for(t=null!=e?e:location.hostname,n=t.split("."),i=[],r="AMP_TLDTEST",s=n.length-2;s>=0;--s)i.push(n.slice(s).join("."));s=0,o.label=2;case 2:return s<i.length?(u=i[s],[4,(a=new ue({domain:"."+u})).set(r,1)]):[3,7];case 3:return o.sent(),[4,a.get(r)];case 4:return o.sent()?[4,a.remove(r)]:[3,6];case 5:return o.sent(),[2,"."+u];case 6:return s++,[3,2];case 7:return[2,""]}}))}))},Xe=function(e){var t=e.split(".");return t.length<=2?e:t.slice(t.length-2,t.length).join(".")},et=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=""),e.some((function(e){return e instanceof RegExp?e.test(t):e===t}))},tt=function(e){var t=this;void 0===e&&(e={});var s={name:"@amplitude/plugin-web-attribution-browser",type:"before",setup:function(t,s){var a;return r(this,void 0,void 0,(function(){var r,c,l,d,f,p,v;return o(this,(function(o){switch(o.label){case 0:return r=n({initialEmptyValue:"EMPTY",resetSessionOnNewCampaign:!1,excludeReferrers:(m=null===(a=t.cookieOptions)||void 0===a?void 0:a.domain,b=m,b?(b.startsWith(".")&&(b=b.substring(1)),[new RegExp("".concat(b.replace(".","\\."),"$"))]):[])},e),t.loggerProvider.log("Installing @amplitude/plugin-web-attribution-browser."),c=t.cookieStorage,h=t.apiKey,void 0===(g="MKTG")&&(g=""),void 0===y&&(y=10),l=[q,g,h.substring(0,y)].filter(Boolean).join("_"),[4,Promise.all([(new U).parse(),c.get(l)])];case 1:return d=u.apply(void 0,[o.sent(),2]),f=d[0],p=d[1],function(e,t,n){e.referrer;var r=e.referring_domain,o=i(e,["referrer","referring_domain"]),s=t||{};s.referrer;var u=s.referring_domain,a=i(s,["referrer","referring_domain"]);if(et(n.excludeReferrers,e.referring_domain))return!1;var c=JSON.stringify(o)!==JSON.stringify(a),l=Xe(r||"")!==Xe(u||"");return!t||c||l}(f,p,r)&&(r.resetSessionOnNewCampaign&&(s.setSessionId(Date.now()),t.loggerProvider.log("Created a new session for new campaign.")),t.loggerProvider.log("Tracking attribution."),v=function(e,t){var i=n(n({},R),e),r=Object.entries(i).reduce((function(e,n){var i,r=u(n,2),o=r[0],s=r[1];return e.setOnce("initial_".concat(o),null!==(i=null!=s?s:t.initialEmptyValue)&&void 0!==i?i:"EMPTY"),s?e.set(o,s):e.unset(o)}),new j);return C(r)}(f,r),s.track(v),c.set(l,f)),[2]}var h,g,y,m,b}))}))},execute:function(e){return r(t,void 0,void 0,(function(){return o(this,(function(t){return[2,e]}))}))}};return s},nt=function(e){var t={};for(var n in e){var i=e[n];i&&(t[n]=i)}return t},it=function(e){var t;void 0===e&&(e={});var i=h(),s=void 0,a=function(){return r(void 0,void 0,void 0,(function(){var t,i,r;return o(this,(function(o){switch(o.label){case 0:return i={event_type:null!==(r=e.eventType)&&void 0!==r?r:"[Amplitude] Page Viewed"},t=[{}],[4,rt()];case 1:return[2,(i.event_properties=n.apply(void 0,[n.apply(void 0,t.concat([o.sent()])),{"[Amplitude] Page Domain":"undefined"!=typeof location&&location.hostname||"","[Amplitude] Page Location":"undefined"!=typeof location&&location.href||"","[Amplitude] Page Path":"undefined"!=typeof location&&location.pathname||"","[Amplitude] Page Title":"undefined"!=typeof document&&document.title||"","[Amplitude] Page URL":"undefined"!=typeof location&&location.href.split("?")[0]||""}]),i)]}}))}))},c=function(){return void 0===e.trackOn||"function"==typeof e.trackOn&&e.trackOn()},l="undefined"!=typeof location?location.href:null,d=function(){return r(void 0,void 0,void 0,(function(){var n,i,r;return o(this,(function(o){switch(o.label){case 0:return n=location.href,st(e.trackHistoryChanges,n,l||"")&&c()?(null==s||s.log("Tracking page view event"),null!=t?[3,1]:[3,3]):[3,4];case 1:return r=(i=t).track,[4,a()];case 2:r.apply(i,[o.sent()]),o.label=3;case 3:o.label=4;case 4:return l=n,[2]}}))}))},f={name:"@amplitude/plugin-page-view-tracking-browser",type:"enrichment",setup:function(e,n){return r(void 0,void 0,void 0,(function(){var r,l;return o(this,(function(o){switch(o.label){case 0:return t=n,(s=e.loggerProvider).log("Installing @amplitude/plugin-page-view-tracking-browser"),i&&(i.addEventListener("popstate",(function(){d()})),i.history.pushState=new Proxy(i.history.pushState,{apply:function(e,t,n){var i=u(n,3),r=i[0],o=i[1],s=i[2];e.apply(t,[r,o,s]),d()}})),c()?(s.log("Tracking page view event"),l=(r=t).track,[4,a()]):[3,2];case 1:l.apply(r,[o.sent()]),o.label=2;case 2:return[2]}}))}))},execute:function(t){return r(void 0,void 0,void 0,(function(){var i;return o(this,(function(r){switch(r.label){case 0:return"attribution"===e.trackOn&&ot(t)?(null==s||s.log("Enriching campaign event to page view event with campaign parameters"),[4,a()]):[3,2];case 1:i=r.sent(),t.event_type=i.event_type,t.event_properties=n(n({},t.event_properties),i.event_properties),r.label=2;case 2:return[2,t]}}))}))}};return f},rt=function(){return r(void 0,void 0,void 0,(function(){var e;return o(this,(function(t){switch(t.label){case 0:return e=nt,[4,(new U).parse()];case 1:return[2,e.apply(void 0,[t.sent()])]}}))}))},ot=function(e){if("$identify"===e.event_type&&e.user_properties){var t=e.user_properties,n=t[c.SET]||{},i=t[c.UNSET]||{},r=a(a([],u(Object.keys(n)),!1),u(Object.keys(i)),!1);return Object.keys(R).every((function(e){return r.includes(e)}))}return!1},st=function(e,t,n){return"pathOnly"===e?t.split("?")[0]!==n.split("?")[0]:t!==n},ut=function(){var e,t;return{name:"@amplitude/plugin-session-handler",type:"before",setup:function(n,i){return r(void 0,void 0,void 0,(function(){return o(this,(function(r){return e=n,t=i,[2]}))}))},execute:function(n){return r(void 0,void 0,void 0,(function(){var i,r;return o(this,(function(o){return i=Date.now(),n.event_type===je||n.event_type===Ce?(e.lastEventTime=i,[2,n]):(r=e.lastEventTime||i,i-r>e.sessionTimeout&&(t.setSessionId(i),n.session_id=t.getSessionId(),n.time=i),e.lastEventTime=i,[2,n])}))}))}}},at=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return t(i,e),i.prototype.init=function(e,t,i){var r,o;return void 0===e&&(e=""),arguments.length>2?(r=t,o=i):"string"==typeof t?(r=t,o=void 0):(r=null==t?void 0:t.userId,o=t),$(this._init(n(n({},o),{userId:r,apiKey:e})))},i.prototype._init=function(t){return r(this,void 0,void 0,(function(){var i,s,u,a,c=this;return o(this,(function(l){switch(l.label){case 0:return this.initializing?[2]:(this.initializing=!0,[4,Ze(t.apiKey,t,this)]);case 1:return i=l.sent(),[4,e.prototype._init.call(this,i)];case 2:return l.sent(),(!this.config.sessionId||this.config.lastEventTime&&Date.now()-this.config.lastEventTime>this.config.sessionTimeout)&&this.setSessionId(Date.now()),(s=ye()).identityStore.setIdentity({userId:this.config.userId,deviceId:this.config.deviceId}),[4,this.add(new H).promise];case 3:return l.sent(),[4,this.add(new Oe).promise];case 4:return l.sent(),[4,this.add(ut()).promise];case 5:return l.sent(),[4,this.add(new me).promise];case 6:return l.sent(),f=this.config.defaultTracking,Ie(f,"fileDownloads")?[4,this.add({name:"@amplitude/plugin-file-download-tracking-browser",type:"enrichment",setup:function(e,t){return r(void 0,void 0,void 0,(function(){var n,i;return o(this,(function(r){return t?(n=function(e){var n;try{n=new URL(e.href,window.location.href)}catch(e){return}var r=i.exec(n.href),o=null==r?void 0:r[1];o&&e.addEventListener("click",(function(){var i;o&&t.track(Ne,((i={})[Me]=o,i[Ve]=n.pathname,i[Fe]=e.id,i[Qe]=e.text,i[$e]=e.href,i))}))},i=/\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)$/,Array.from(document.getElementsByTagName("a")).forEach(n),"undefined"!=typeof MutationObserver&&new MutationObserver((function(e){e.forEach((function(e){e.addedNodes.forEach((function(e){"A"===e.nodeName&&n(e),"querySelectorAll"in e&&"function"==typeof e.querySelectorAll&&Array.from(e.querySelectorAll("a")).map(n)}))}))})).observe(document.body,{subtree:!0,childList:!0}),[2]):(e.loggerProvider.warn("File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked."),[2])}))}))},execute:function(e){return r(void 0,void 0,void 0,(function(){return o(this,(function(t){return[2,e]}))}))}}).promise]:[3,8];case 7:l.sent(),l.label=8;case 8:return function(e){return Ie(e,"formInteractions")}(this.config.defaultTracking)?[4,this.add({name:"@amplitude/plugin-form-interaction-tracking-browser",type:"enrichment",setup:function(e,t){return r(void 0,void 0,void 0,(function(){var n;return o(this,(function(i){return t?(n=function(e){var n=!1;e.addEventListener("change",(function(){var i;n||t.track(Le,((i={})[Ke]=e.id,i[Be]=e.name,i[ze]=e.action,i)),n=!0}),{}),e.addEventListener("submit",(function(){var i,r;n||t.track(Le,((i={})[Ke]=e.id,i[Be]=e.name,i[ze]=e.action,i)),t.track(Ae,((r={})[Ke]=e.id,r[Be]=e.name,r[ze]=e.action,r)),n=!1}))},Array.from(document.getElementsByTagName("form")).forEach(n),"undefined"!=typeof MutationObserver&&new MutationObserver((function(e){e.forEach((function(e){e.addedNodes.forEach((function(e){"FORM"===e.nodeName&&n(e),"querySelectorAll"in e&&"function"==typeof e.querySelectorAll&&Array.from(e.querySelectorAll("form")).map(n)}))}))})).observe(document.body,{subtree:!0,childList:!0}),[2]):(e.loggerProvider.warn("Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked."),[2])}))}))},execute:function(e){return r(void 0,void 0,void 0,(function(){return o(this,(function(t){return[2,e]}))}))}}).promise]:[3,10];case 9:l.sent(),l.label=10;case 10:return _e(this.config.defaultTracking)?(d=this.config,u=_e(d.defaultTracking)&&d.defaultTracking&&"object"==typeof d.defaultTracking&&d.defaultTracking.attribution&&"object"==typeof d.defaultTracking.attribution?n({},d.defaultTracking.attribution):{},a=tt(u),[4,this.add(a).promise]):[3,12];case 11:l.sent(),l.label=12;case 12:return[4,this.add(it(we(this.config))).promise];case 13:return l.sent(),this.initializing=!1,[4,this.runQueuedFunctions("dispatchQ")];case 14:return l.sent(),s.eventBridge.setEventReceiver((function(e){c.track(e.eventType,e.eventProperties)})),[2]}var d,f}))}))},i.prototype.getUserId=function(){var e;return null===(e=this.config)||void 0===e?void 0:e.userId},i.prototype.setUserId=function(e){this.config?e===this.config.userId&&void 0!==e||(this.config.userId=e,this.setSessionId(Date.now()),function(e){ye().identityStore.editIdentity().setUserId(e).commit()}(e)):this.q.push(this.setUserId.bind(this,e))},i.prototype.getDeviceId=function(){var e;return null===(e=this.config)||void 0===e?void 0:e.deviceId},i.prototype.setDeviceId=function(e){this.config?(this.config.deviceId=e,function(e){ye().identityStore.editIdentity().setDeviceId(e).commit()}(e)):this.q.push(this.setDeviceId.bind(this,e))},i.prototype.reset=function(){this.setDeviceId(V()),this.setUserId(void 0)},i.prototype.getSessionId=function(){var e;return null===(e=this.config)||void 0===e?void 0:e.sessionId},i.prototype.setSessionId=function(e){if(this.config){var t,n=this.getSessionId(),i=this.config.lastEventTime;if(this.config.sessionId=e,this.config.lastEventTime=void 0,t=this.config.defaultTracking,Ie(t,"sessions")){if(n&&i){var r={session_id:n,time:i+1};r.device_id=this.previousSessionDeviceId,r.user_id=this.previousSessionUserId,this.track(Ce,void 0,r)}this.track(je,void 0,{session_id:e,time:e-1}),this.previousSessionDeviceId=this.config.deviceId,this.previousSessionUserId=this.config.userId}}else this.q.push(this.setSessionId.bind(this,e))},i.prototype.setTransport=function(e){this.config?this.config.transportProvider=Ye(e):this.q.push(this.setTransport.bind(this,e))},i.prototype.identify=function(t,n){if(Te(t)){var i=t._q;t._q=[],t=Ee(new j,i)}return(null==n?void 0:n.user_id)&&this.setUserId(n.user_id),(null==n?void 0:n.device_id)&&this.setDeviceId(n.device_id),e.prototype.identify.call(this,t,n)},i.prototype.groupIdentify=function(t,n,i,r){if(Te(i)){var o=i._q;i._q=[],i=Ee(new j,o)}return e.prototype.groupIdentify.call(this,t,n,i,r)},i.prototype.revenue=function(t,n){if(Te(t)){var i=t._q;t._q=[],t=Ee(new B,i)}return e.prototype.revenue.call(this,t,n)},i}(K),ct=function(){var e=new at;return{init:ie(e.init.bind(e),"init",ee(e),ne(e,["config"])),add:ie(e.add.bind(e),"add",ee(e),ne(e,["config.apiKey","timeline.plugins"])),remove:ie(e.remove.bind(e),"remove",ee(e),ne(e,["config.apiKey","timeline.plugins"])),track:ie(e.track.bind(e),"track",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),logEvent:ie(e.logEvent.bind(e),"logEvent",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),identify:ie(e.identify.bind(e),"identify",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),groupIdentify:ie(e.groupIdentify.bind(e),"groupIdentify",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),setGroup:ie(e.setGroup.bind(e),"setGroup",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),revenue:ie(e.revenue.bind(e),"revenue",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),flush:ie(e.flush.bind(e),"flush",ee(e),ne(e,["config.apiKey","timeline.queue.length"])),getUserId:ie(e.getUserId.bind(e),"getUserId",ee(e),ne(e,["config","config.userId"])),setUserId:ie(e.setUserId.bind(e),"setUserId",ee(e),ne(e,["config","config.userId"])),getDeviceId:ie(e.getDeviceId.bind(e),"getDeviceId",ee(e),ne(e,["config","config.deviceId"])),setDeviceId:ie(e.setDeviceId.bind(e),"setDeviceId",ee(e),ne(e,["config","config.deviceId"])),reset:ie(e.reset.bind(e),"reset",ee(e),ne(e,["config","config.userId","config.deviceId"])),getSessionId:ie(e.getSessionId.bind(e),"getSessionId",ee(e),ne(e,["config"])),setSessionId:ie(e.setSessionId.bind(e),"setSessionId",ee(e),ne(e,["config"])),setOptOut:ie(e.setOptOut.bind(e),"setOptOut",ee(e),ne(e,["config"])),setTransport:ie(e.setTransport.bind(e),"setTransport",ee(e),ne(e,["config"]))}},lt=ct(),dt=lt.add,ft=lt.flush,pt=lt.getDeviceId,vt=lt.getSessionId,ht=lt.getUserId,gt=lt.groupIdentify,yt=lt.identify,mt=lt.init,bt=lt.logEvent,It=lt.remove,_t=lt.reset,wt=lt.revenue,St=lt.setDeviceId,Et=lt.setGroup,Tt=lt.setOptOut,Ot=lt.setSessionId,kt=lt.setTransport,Pt=lt.setUserId,Rt=lt.track,Ut=Object.freeze({__proto__:null,add:dt,flush:ft,getDeviceId:pt,getSessionId:vt,getUserId:ht,groupIdentify:gt,identify:yt,init:mt,logEvent:bt,remove:It,reset:_t,revenue:wt,setDeviceId:St,setGroup:Et,setOptOut:Tt,setSessionId:Ot,setTransport:kt,setUserId:Pt,track:Rt,Types:x,createInstance:ct,runQueuedFunctions:Se,Revenue:B,Identify:j});!function(){var e=h();if(e){var t=function(e){var t=ct(),n=h();return n&&n.amplitude&&n.amplitude._iq&&e&&(n.amplitude._iq[e]=t),t};if(e.amplitude=Object.assign(e.amplitude||{},Ut,{createInstance:t}),e.amplitude.invoked){var n=e.amplitude._q;e.amplitude._q=[],Se(Ut,n);for(var i=Object.keys(e.amplitude._iq)||[],r=0;r<i.length;r++){var o=i[r],s=Object.assign(e.amplitude._iq[o],t(o)),u=s._q;s._q=[],Se(s,u)}}}else console.error("[Amplitude] Error: GlobalScope is not defined")}()}();


================================================
FILE: examples/browser/chrome-ext/background.js
================================================
/**
 * Amplitude using importScripts(). Create a copy of amplitude-min.js as part of your project and use the file path.
 */
importScripts('/amplitude-min.js');

/**
 * Start by calling amplitude.init(). This must be done before any event tracking
 * preferrably in the root file of the project.
 *
 * Calling init() requires an API key
 * ```
 * amplitude.init(API_KEY)
 * ```
 *
 * Optionally, a user id can be provided when calling init()
 * ```
 * amplitude.init(API_KEY, 'example.extension.user@amplitude.com')
 * ```
 *
 * Optionally, a config object can be provided. Refer to https://amplitude.github.io/Amplitude-TypeScript/interfaces/Types.BrowserConfig.html
 * for object properties.
 */
amplitude.init('API_KEY', 'example.extension.user@amplitude.com');

chrome.omnibox.onInputEntered.addListener((text) => {
  amplitude.track('Input Entered', { value: text });
  var newURL = 'https://www.google.com/search?q=' + encodeURIComponent(text);
  chrome.tabs.update({ url: newURL });
});

chrome.omnibox.onDeleteSuggestion.addListener((text) => {
  amplitude.track('Delete Suggestion', { value: text });
});

chrome.omnibox.onInputCancelled.addListener((text) => {
  amplitude.track('Input Cancelled', { value: text });
});

chrome.omnibox.onInputChanged.addListener((text) => {
  amplitude.track('Input Changed', { value: text });
});

chrome.omnibox.onInputStarted.addListener((text) => {
  amplitude.track('Input Started', { value: text });
});


================================================
FILE: examples/browser/chrome-ext/manifest.json
================================================
{
  "name": "Google Search Tracker",
  "description": "Type 'g' plus a search term into the Omnibox to seach in google.com",
  "version": "1.0",
  "manifest_version": 3,
  "background": {
    "service_worker": "background.js"
  },
  "omnibox": {
    "keyword": "g"
  }
}


================================================
FILE: examples/browser/html-app/README.md
================================================
This is a demo project for instrumenting events using Amplitude Analytics SDK in an basic HTML page.

## Getting Started

First, run the development server:

```bash
npm start
# or
pnpm start
```

Open [http://localhost:8080](http://localhost:8080) with your browser to see the result.


================================================
FILE: examples/browser/html-app/index.css
================================================
form {
    /* Just to center the form on the page */
    margin: 20px 0px;
    width: 400px;
  
    /* To see the limits of the form */
    padding: 1em;
    border: 1px solid #ccc;
    border-radius: 1em;
  }
  
  div + div {
    margin-top: 1em;
  }
  
  label {
    /* To make sure that all label have the same size and are properly align */
    display: inline-block;
    width: 90px;
    text-align: right;
  }
  
  input,
  textarea {
    /* To make sure that all text field have the same font settings
       By default, textarea are set with a monospace font */
    font: 1em sans-serif;
  
    /* To give the same size to all text field */
    width: 300px;
  
    -moz-box-sizing: border-box;
    box-sizing: border-box;
  
    /* To harmonize the look & feel of text field border */
    border: 1px solid #999;
  }
  
  input:focus,
  textarea:focus {
    /* To give a little highlight on active elements */
    border-color: #000;
  }
  
  textarea {
    /* To properly align multiline text field with their label */
    vertical-align: top;
  
    /* To give enough room to type some text */
    height: 5em;
  
    /* To allow users to resize any textarea vertically
       It works only on Chrome, Firefox and Safari */
    resize: vertical;
  }
  
  .button {
    /* To position the buttons to the same position of the text fields */
    padding-left: 90px; /* same size as the label elements */
  }
  
  button {
    /* This extra margin represent the same space as the space between
       the labels and their text fields */
    margin-left: 0.5em;
  }
  

================================================
FILE: examples/browser/html-app/index.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>HTML 5 Boilerplate</title>
    <link rel="stylesheet" href="index.css">
  </head>
	<script>
    /**
     * Install Amplitude using script loader. Refer to: https://github.com/amplitude/Amplitude-TypeScript/tree/main/packages/analytics-browser#using-script-loader.
     */
     !function(){"use strict";!function(e,t){var n=e.amplitude||{_q:[],_iq:{}};if(n.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var r=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,n){return function(r){e._q.push({name:t,args:Array.prototype.slice.call(n,0),resolve:r})}},o=function(e,t,n){e[t]=function(){if(n)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<m.length;t++)o(e,m[t],!1);for(var n=0;n<y.length;n++)o(e,y[n],!0)};n.invoked=!0;var a=t.createElement("script");a.type="text/javascript",a.integrity="sha384-lI19/rkWkq7akQskdqbaYBssAwNImFV9Iwejq7dylnP0Yx8TyWYX1PwAoaA5xrUp",a.crossOrigin="anonymous",a.async=!0,a.src="https://cdn.amplitude.com/libs/analytics-browser-2.1.3-min.js.gz",a.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var c=t.getElementsByTagName("script")[0];c.parentNode.insertBefore(a,c);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)r(u,l[p]);n.Identify=u;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)r(d,f[v]);n.Revenue=d;var m=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset","extendSession"],y=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(n),n.createInstance=function(e){return n._iq[e]={_q:[]},i(n._iq[e]),n._iq[e]},e.amplitude=n}}(window,document)}();
     /**
     * Start by calling amplitude.init(). This must be done before any event tracking
     * preferrably in the root file of the project.
     *
     * Calling init() requires an API key
     * ```
     * amplitude.init(API_KEY)
     * ```
     *
     * Optionally, a user id can be provided when calling init()
     * ```
     * amplitude.init(API_KEY, 'example.html.user@amplitude.com')
     * ```
     *
     * Optionally, a config object can be provided. Refer to https://amplitude.github.io/Amplitude-TypeScript/interfaces/Types.BrowserConfig.html
     * for object properties.
     */
    amplitude.init('API_KEY', 'example.html.user@amplitude.com');
  </script>
  <body>
    <h2>Amplitude Analytics Browser Example with HTML</h2>

    <button onclick="amplitude.identify(new amplitude.Identify().set('role', 'engineer'))">
      Identify
    </button>

    <button onclick="amplitude.setGroup('org', 'engineering')">
      Group
    </button>

    <button onclick="amplitude.groupIdentify('org', 'engineering', new amplitude.Identify().set('technology', 'react.js'))">
      Group Identify
    </button>

    <button onclick="amplitude.track('Button Click', { name: 'HTML' })">
      Track
    </button>

    <form action="/" method="post">
      <div>
        <label for="name">Name:</label>
        <input type="text" id="name" maxlength="95" value="Name">
      </div>
    
      <div>
        <label for="mail">Email:</label>
        <input type="email" id="mail" name="user_email" />
      </div>
    
      <div>
        <label for="msg">Message:</label>
        <textarea id="msg" name="user_message"></textarea>
      </div>
    
      <div class="button">
        <button type="submit">Send your message</button>
      </div>
    </form>
  </body>
</html>


================================================
FILE: examples/browser/html-app/package.json
================================================
{
  "name": "html-app",
  "version": "1.0.0",
  "scripts": {
    "start": "npx http-server"
  }
}


================================================
FILE: examples/browser/next-app/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo


================================================
FILE: examples/browser/next-app/README.md
================================================
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
pnpm dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.

[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.

The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.


================================================
FILE: examples/browser/next-app/eslint.config.mjs
================================================
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";

const eslintConfig = [
  ...nextVitals,
  ...nextTs,
  {
    ignores: [".next/**", "out/**", "build/**", "next-env.d.ts"],
  },
];

export default eslintConfig;


================================================
FILE: examples/browser/next-app/next.config.js
================================================
/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
}

module.exports = nextConfig


================================================
FILE: examples/browser/next-app/package.json
================================================
{
  "name": "next-app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint ."
  },
  "dependencies": {
    "@amplitude/analytics-browser": "^2.0.0-beta",
    "next": "16.1.5",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "@types/node": "18.11.14",
    "@types/react": "18.0.26",
    "@types/react-dom": "18.0.9",
    "eslint": "9.7.0",
    "eslint-config-next": "16.1.5",
    "typescript": "5.0.2"
  }
}


================================================
FILE: examples/browser/next-app/pages/_app.tsx
================================================
import '../styles/globals.css'
import type { AppProps } from 'next/app'
import * as amplitude from '@amplitude/analytics-browser';

/**
 * Start by calling amplitude.init(). This must be done before any event tracking
 * preferrably in the root file of the project.
 * 
 * Calling init() requires an API key
 * ```
 * amplitude.init(API_KEY)
 * ```
 * 
 * Optionally, a user id can be provided when calling init()
 * ```
 * amplitude.init(API_KEY, 'example.next.user@amplitude.com')
 * ```
 * 
 * Optionally, a config object can be provided. Refer to https://amplitude.github.io/Amplitude-TypeScript/interfaces/Types.BrowserConfig.html
 * for object properties.
 */
amplitude.init('API_KEY', 'example.next.user@amplitude.com')

function MyApp({ Component, pageProps }: AppProps) {
  return <Component {...pageProps} />
}

export default MyApp


================================================
FILE: examples/browser/next-app/pages/api/hello.ts
================================================
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
import type { NextApiRequest, NextApiResponse } from 'next';

type Data = {
  name: string;
};

export default function handler(req: NextApiRequest, res: NextApiResponse<Data>) {
  res.status(200).json({ name: 'John Doe' });
}


================================================
FILE: examples/browser/next-app/pages/index.tsx
================================================
import type { NextPage } from 'next'
import Head from 'next/head'
import styles from '../styles/Home.module.css'
import { identify, setGroup, groupIdentify, track, Identify } from '@amplitude/analytics-browser'

const Home: NextPage = () => {
  return (
    <div className={styles.container}>
      <Head>
        <title>Create Next App</title>
        <meta name="description" content="Generated by create next app" />
        <link rel="icon" href="/favicon.ico" />
      </Head>

      <main className={styles.main}>
        <h1 className={styles.title}>
          Amplitude Analytics Browser Example with Next
        </h1>

        <button onClick={() => identify(new Identify().set('role', 'engineer'))}>
          Identify
        </button>

        <button onClick={() => setGroup('org', 'engineering')}>
          Group
        </button>

        <button onClick={() => groupIdentify('org', 'engineering', new Identify().set('technology', 'react.js'))}>
          Group Identify
        </button>

        <button onClick={() => track('Button Click', { name: 'App' })}>
          Track
        </button>
      </main>
    </div>
  )
}

export default Home


================================================
FILE: examples/browser/next-app/styles/Home.module.css
================================================
.container {
  padding: 0 2rem;
}

.main {
  min-height: 100vh;
  padding: 4rem 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.footer {
  display: flex;
  flex: 1;
  padding: 2rem 0;
  border-top: 1px solid #eaeaea;
  justify-content: center;
  align-items: center;
}

.footer a {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-grow: 1;
}

.title a {
  color: #0070f3;
  text-decoration: none;
}

.title a:hover,
.title a:focus,
.title a:active {
  text-decoration: underline;
}

.title {
  margin: 0;
  line-height: 1.15;
  font-size: 4rem;
}

.title,
.description {
  text-align: center;
}

.description {
  margin: 4rem 0;
  line-height: 1.5;
  font-size: 1.5rem;
}

.code {
  background: #fafafa;
  border-radius: 5px;
  padding: 0.75rem;
  font-size: 1.1rem;
  font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
    Bitstream Vera Sans Mono, Courier New, monospace;
}

.grid {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  max-width: 800px;
}

.card {
  margin: 1rem;
  padding: 1.5rem;
  text-align: left;
  color: inherit;
  text-decoration: none;
  border: 1px solid #eaeaea;
  border-radius: 10px;
  transition: color 0.15s ease, border-color 0.15s ease;
  max-width: 300px;
}

.card:hover,
.card:focus,
.card:active {
  color: #0070f3;
  border-color: #0070f3;
}

.card h2 {
  margin: 0 0 1rem 0;
  font-size: 1.5rem;
}

.card p {
  margin: 0;
  font-size: 1.25rem;
  line-height: 1.5;
}

.logo {
  height: 1em;
  margin-left: 0.5rem;
}

@media (max-width: 600px) {
  .grid {
    width: 100%;
    flex-direction: column;
  }
}


================================================
FILE: examples/browser/next-app/styles/globals.css
================================================
html,
body {
  padding: 0;
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
    Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}

a {
  color: inherit;
  text-decoration: none;
}

* {
  box-sizing: border-box;
}


================================================
FILE: examples/browser/next-app/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules"]
}


================================================
FILE: examples/browser/react-app/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*


================================================
FILE: examples/browser/react-app/README.md
================================================
# Getting Started with Create React App

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

## Available Scripts

In the project directory, you can run:

### `pnpm start`

Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.\
You will also see any lint errors in the console.

### `pnpm test`

Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.

### `pnpm run build`

Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!

See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.

### `pnpm run eject`

**Note: this is a one-way operation. Once you `eject`, you can’t go back!**

If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

## Learn More

You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).

To learn React, check out the [React documentation](https://reactjs.org/).


================================================
FILE: examples/browser/react-app/package.json
================================================
{
  "name": "react-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@amplitude/analytics-browser": "^2.0.0-beta",
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^14.4.3",
    "@types/jest": "^29.2.4",
    "@types/node": "^18.11.14",
    "@types/react": "^18.0.26",
    "@types/react-dom": "^18.0.9",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "typescript": "^4.6.3",
    "web-vitals": "^3.1.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}


================================================
FILE: examples/browser/react-app/public/index.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <!--
      manifest.json provides metadata used when your web app is installed on a
      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
    -->
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <!--
      Notice the use of %PUBLIC_URL% in the tags above.
      It will be replaced with the URL of the `public` folder during the build.
      Only files inside the `public` folder can be referenced from the HTML.

      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
      work correctly both with client-side routing and a non-root public URL.
      Learn how to configure a non-root public URL by running `npm run build`.
    -->
    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <!--
      This HTML file is a template.
      If you open it directly in the browser, you will see an empty page.

      You can add webfonts, meta tags, or analytics to this file.
      The build step will place the bundled scripts into the <body> tag.

      To begin the development, run `npm start` or `yarn start`.
      To create a production bundle, use `npm run build` or `yarn build`.
    -->
  </body>
</html>


================================================
FILE: examples/browser/react-app/public/manifest.json
================================================
{
  "short_name": "React App",
  "name": "Create React App Sample",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    },
    {
      "src": "logo192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "logo512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}


================================================
FILE: examples/browser/react-app/public/robots.txt
================================================
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:


================================================
FILE: examples/browser/react-app/src/App.css
================================================
.App {
  text-align: center;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.App-link {
  color: #61dafb;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}


================================================
FILE: examples/browser/react-app/src/App.test.tsx
================================================
import React from 'react';
import { render, screen } from '@testing-library/react';
import App from './App';

test('renders learn react link', () => {
  render(<App />);
  const linkElement = screen.getByText(/learn react/i);
  expect(linkElement).toBeInTheDocument();
});


================================================
FILE: examples/browser/react-app/src/App.tsx
================================================
import React, { useEffect } from 'react';
import logo from './logo.svg';
import './App.css';
import { track, identify, setGroup, groupIdentify, Identify } from '@amplitude/analytics-browser';

function App() {
  useEffect(() => {
    track('Page View', {
      name: 'App',
    });
  }, []);

  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <h2>Amplitude Analytics Browser Example with React</h2>

        <button onClick={() => identify(new Identify().set('role', 'engineer'))}>
          Identify
        </button>

        <button onClick={() => setGroup('org', 'engineering')}>
          Group
        </button>

        <button onClick={() => groupIdentify('org', 'engineering', new Identify().set('technology', 'react.js'))}>
          Group Identify
        </button>

        <button onClick={() => track('Button Click', { name: 'App' })}>
          Track
        </button>
      </header>
    </div>
  );
}

export default App;


================================================
FILE: examples/browser/react-app/src/index.css
================================================
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
    sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
    monospace;
}


================================================
FILE: examples/browser/react-app/src/index.tsx
================================================
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import * as amplitude from '@amplitude/analytics-browser';

/**
 * Start by calling amplitude.init(). This must be done before any event tracking
 * preferrably in the root file of the project.
 * 
 * Calling init() requires an API key
 * ```
 * amplitude.init(API_KEY)
 * ```
 * 
 * Optionally, a user id can be provided when calling init()
 * ```
 * amplitude.init(API_KEY, 'example.react.user@amplitude.com')
 * ```
 * 
 * Optionally, a config object can be provided. Refer to https://amplitude.github.io/Amplitude-TypeScript/interfaces/Types.BrowserConfig.html
 * for object properties.
 */
amplitude.init('API_KEY', 'example.react.user@amplitude.com');

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();


================================================
FILE: examples/browser/react-app/src/reportWebVitals.ts
================================================
import { ReportHandler } from 'web-vitals';

const reportWebVitals = (onPerfEntry?: ReportHandler) => {
  if (onPerfEntry && onPerfEntry instanceof Function) {
    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
      getCLS(onPerfEntry);
      getFID(onPerfEntry);
      getFCP(onPerfEntry);
      getLCP(onPerfEntry);
      getTTFB(onPerfEntry);
    });
  }
};

export default reportWebVitals;


================================================
FILE: examples/browser/react-app/src/setupTests.ts
================================================
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';


================================================
FILE: examples/browser/react-app/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
  },
  "include": [
    "src"
  ]
}


================================================
FILE: examples/browser/vue-app/.browserslistrc
================================================
> 1%
last 2 versions
not dead
not ie 11


================================================
FILE: examples/browser/vue-app/.eslintrc.js
================================================
module.exports = {
  root: true,
  env: {
    node: true
  },
  'extends': [
    'plugin:vue/vue3-essential',
    'eslint:recommended',
    '@vue/typescript/recommended'
  ],
  parserOptions: {
    ecmaVersion: 2020
  },
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
  }
}


================================================
FILE: examples/browser/vue-app/.gitignore
================================================
.DS_Store
node_modules
/dist


# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?


================================================
FILE: examples/browser/vue-app/README.md
================================================
# vue-app

## Project setup
```
pnpm install
```

### Compiles and hot-reloads for development
```
pnpm serve
```

### Compiles and minifies for production
```
pnpm build
```

### Lints and fixes files
```
pnpm lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).


================================================
FILE: examples/browser/vue-app/babel.config.js
================================================
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}


================================================
FILE: examples/browser/vue-app/package.json
================================================
{
  "name": "vue-app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@amplitude/analytics-browser": "^2.0.0-beta",
    "core-js": "^3.26.1",
    "vue": "^3.2.45",
    "vue-class-component": "^8.0.0-rc.1"
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.46.1",
    "@typescript-eslint/parser": "^5.46.1",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-plugin-typescript": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "@vue/eslint-config-typescript": "^9.1.0",
    "eslint": "^8.29.0",
    "eslint-plugin-vue": "^9.8.0",
    "typescript": "~4.5.5"
  }
}


================================================
FILE: examples/browser/vue-app/public/index.html
================================================
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>


================================================
FILE: examples/browser/vue-app/src/App.vue
================================================
<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Amplitude Analytics Browser Example with Vue"/>
</template>

<script lang="ts">
import { Options, Vue } from 'vue-class-component';
import HelloWorld from './components/HelloWorld.vue';
import * as amplitude from '@amplitude/analytics-browser';

@Options({
  components: {
    HelloWorld,
  },
  mounted: () => {
    amplitude.track('Page View', {
      name: 'App',
    });
  },
})
export default class App extends Vue {}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>


================================================
FILE: examples/browser/vue-app/src/components/HelloWorld.vue
================================================
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <button @click="handleIdentifyClick">
      Identify
    </button>

    <button @click="handleGroupClick">
      Group
    </button>

    <button @click="handleGroupIdentify">
      Group Identify
    </button>

    <button @click="handleTrackClick">
      Track
    </button>
  </div>
</template>

<script lang="ts">
import { Options, Vue } from 'vue-class-component';
import { track, identify, setGroup, groupIdentify, Identify } from '@amplitude/analytics-browser';

@Options({
  props: {
    msg: String
  },
  methods: {
    handleIdentifyClick() {
      identify(new Identify().set('role', 'engineer'))
    },
    handleGroupClick() {
      setGroup('org', 'engineering')
    },
    handleGroupIdentify() {
      groupIdentify('org', 'engineering', new Identify().set('technology', 'react.js'))
    },
    handleTrackClick() {
      track('Button Click', { name: 'App' })
    },
  },
})
export default class HelloWorld extends Vue {
  msg!: string
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>


================================================
FILE: examples/browser/vue-app/src/main.ts
================================================
import { createApp } from 'vue';
import App from './App.vue';
import * as amplitude from '@amplitude/analytics-browser';

/**
 * Start by calling amplitude.init(). This must be done before any event tracking
 * preferrably in the root file of the project.
 *
 * Calling init() requires an API key
 * ```
 * amplitude.init(API_KEY)
 * ```
 *
 * Optionally, a user id can be provided when calling init()
 * ```
 * amplitude.init(API_KEY, 'example.vue.user@amplitude.com')
 * ```
 *
 * Optionally, a config object can be provided. Refer to https://amplitude.github.io/Amplitude-TypeScript/interfaces/Types.BrowserConfig.html
 * for object properties.
 */
amplitude.init('API_KEY', 'example.vue.user@amplitude.com');

createApp(App).mount('#app');


================================================
FILE: examples/browser/vue-app/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "strict": true,
    "jsx": "preserve",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true,
    "useDefineForClassFields": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": [
      "webpack-env"
    ],
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": [
    "node_modules"
  ]
}


================================================
FILE: examples/browser/vue-app/vue.config.js
================================================
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false
})


================================================
FILE: examples/node/nest-app/.eslintrc.js
================================================
module.exports = {
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    tsconfigRootDir : __dirname, 
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint/eslint-plugin'],
  extends: [
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended',
  ],
  root: true,
  env: {
    node: true,
    jest: true,
  },
  ignorePatterns: ['.eslintrc.js'],
  rules: {
    '@typescript-eslint/interface-name-prefix': 'off',
    '@typescript-eslint/explicit-function-return-type': 'off',
    '@typescript-eslint/explicit-module-boundary-types': 'off',
    '@typescript-eslint/no-explicit-any': 'off',
  },
};


================================================
FILE: examples/node/nest-app/.gitignore
================================================
# compiled output
/dist
/node_modules

# Logs
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# OS
.DS_Store

# Tests
/coverage
/.nyc_output

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

================================================
FILE: examples/node/nest-app/.prettierrc
================================================
{
  "singleQuote": true,
  "trailingComma": "all"
}

================================================
FILE: examples/node/nest-app/README.md
================================================
## Description
This is an example Nest app generated with Nest CLI, with Amplitude TypeScript Node SDK integrated.

[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.

## Installation

```bash
$ npm install
```

## Running the app

Update the Amplitude API key before running the app.

```bash
# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod
```

Open `http://localhost:3000/` in browser to view the available options.

## Test

```bash
# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov
```


================================================
FILE: examples/node/nest-app/nest-cli.json
================================================
{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src"
}


================================================
FILE: examples/node/nest-app/package.json
================================================
{
  "name": "nest-app",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix"
  },
  "dependencies": {
    "@amplitude/analytics-node": "^1.0.0",
    "@nestjs/common": "^9.2.1",
    "@nestjs/core": "^9.2.1",
    "@nestjs/platform-express": "^9.2.1",
    "hbs": "^4.2.0",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^7.6.0"
  },
  "devDependencies": {
    "@nestjs/cli": "^9.1.5",
    "@nestjs/schematics": "^9.0.3",
    "@types/express": "^4.17.14",
    "@types/jest": "29.2.4",
    "@types/node": "^18.11.14",
    "@types/supertest": "^2.0.12",
    "@typescript-eslint/eslint-plugin": "^5.46.1",
    "@typescript-eslint/parser": "^5.46.1",
    "eslint": "^8.29.0",
    "eslint-config-prettier": "^8.5.0",
    "eslint-plugin-prettier": "^4.2.1",
    "jest": "29.3.1",
    "prettier": "^2.8.1",
    "source-map-support": "^0.5.21",
    "ts-jest": "29.0.3",
    "ts-loader": "^9.4.2",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "4.1.1",
    "typescript": "^4.7.4"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}


================================================
FILE: examples/node/nest-app/src/app.controller.ts
================================================
import { Controller, Get, Render } from '@nestjs/common';
import { AppService } from './app.service';
import * as amplitude from '@amplitude/analytics-node';

const AMPLITUDE_API_KEY = '9f0e4a9f1c1233088b254e30ba3c80e1';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {
    amplitude.init(AMPLITUDE_API_KEY, {
      logLevel: amplitude.Types.LogLevel.Debug,
    });
  }

  @Get()
  @Render('index')
  getOptions(): any {
    return this.appService.getOptions();
  }

  @Get('track')
  async track(): Promise<string> {
    await amplitude.track(
      'nest-app example event',
      { property1: '1' },
      { user_id: 'test_user' },
    ).promise;
    return 'Triggered, check console output...';
  }

  @Get('identify')
  async identify(): Promise<string> {
    const identifyObj = new amplitude.Identify();
    identifyObj.set('email', 'test_user@email.com');
    identifyObj.set('role', 'test');
    await amplitude.identify(identifyObj, { user_id: 'test_user' }).promise;
    return 'Triggered, check console output...';
  }

  @Get('group')
  async group(): Promise<string> {
    await amplitude.setGroup('org', 'engineering', { user_id: 'test_user' })
      .promise;
    return 'Triggered, check console output...';
  }

  @Get('group-identify')
  async groupIdentify(): Promise<string> {
    await amplitude.groupIdentify(
      'org',
      'engineering',
      new amplitude.Identify().set('technology', 'nest.js'),
      { user_id: 'test_user' },
    ).promise;
    return 'Triggered, check console output...';
  }

  @Get('test')
  async test(): Promise<string> {
    const identifyObj = new amplitude.Identify();
    identifyObj.set('email', 'marvin@test.com');
    identifyObj.set('env', 'dev');
    amplitude.identify(identifyObj);

    amplitude.track('some event', undefined, { user_id: 'marvin' });
    await amplitude.flush().promise;
    return 'Triggered, check console output...';
  }
}


================================================
FILE: examples/node/nest-app/src/app.module.ts
================================================
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}


================================================
FILE: examples/node/nest-app/src/app.service.ts
================================================
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getOptions(): any {
    return {
      prerequisite: 'update AMPLITUDE_API_KEY before sending the event',
      options: [
        'GET "/", check the options',
        'GET "/track", send track event',
        'GET "/identify", send identify event, send a new track event to see the updated properties',
        'GET "/group", send group event, send a new track event to see the updated properties',
        'GET "/group-identify", send groupIdentify event, send a new track event to see the updated properties',
      ],
    };
  }
}


================================================
FILE: examples/node/nest-app/src/main.ts
================================================
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
import { resolve } from 'path';

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  app.useStaticAssets(resolve('./src/public'));
  app.setBaseViewsDir(resolve('./src/views'));
  app.setViewEngine('hbs');

  await app.listen(3000);
}
bootstrap();


================================================
FILE: examples/node/nest-app/src/views/index.hbs
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>App</title>
  </head>
  <body>
    Prerequisite: {{ prerequisite }}
    <ul>
      {{#each options as |option|}}
        <li>{{option}}</li>
      {{/each}}
    </ul>
  </body>
</html>


================================================
FILE: examples/node/nest-app/tsconfig.build.json
================================================
{
  "extends": "./tsconfig.json",
  "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
}


================================================
FILE: examples/node/nest-app/tsconfig.json
================================================
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false
  }
}


================================================
FILE: examples/plugins/page-view-tracking-enrichment/index.ts
================================================
import { createInstance } from '@amplitude/analytics-browser';
import { EnrichmentPlugin } from '@amplitude/analytics-types';

/**
 * This is an example plugin that enriches events with event_type "Page View" by adding
 * more event_properties on top of what @amplitude/analytics-browser provides out of the box
 *
 * @returns EnrichmentPlugin
 */
export const pageViewTrackingEnrichment = (): EnrichmentPlugin => {
  return {
    name: 'page-view-tracking-enrichment',
    type: 'enrichment',
    setup: async () => undefined,
    execute: async (event) => {
      if (event.event_type !== '[Amplitude] Page Viewed') {  // event name format if using Autocapture Pageviews 
        return event;
      }
      event.event_properties = {
        ...event.event_properties,
        // TODO: Add new event properties here
        new_property: 'new_value',
      };
      return event;
    },
  };
};

const instance = createInstance();

/**
 * IMPORTANT: install plugin before calling init to make sure plugin is added by the time
 * init function sends out the "Page View" event
 */
instance.add(pageViewTrackingEnrichment());

// initialize sdk
instance.init('API_KEY');


================================================
FILE: examples/plugins/react-native-idfa-plugin/idfaPlugin.ts
================================================
import { Types } from '@amplitude/analytics-react-native';
import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';

export default class IdfaPlugin implements Types.BeforePlugin {
  name = 'idfa';
  type = 'before' as const;
  idfa: string | null = null;

  async setup(_config: Types.Config): Promise<undefined> {
    try {
      const info = await ReactNativeIdfaAaid.getAdvertisingInfo();
      this.idfa = info.id;
    } catch (e) {
      console.log(e);
    }
    return undefined;
  }

  async execute(context: Types.Event): Promise<Types.Event> {
    if (this.idfa) {
      context.idfa = this.idfa;
    }
    return context;
  }
}


================================================
FILE: examples/plugins/remove-event-key/index.ts
================================================
import { createInstance } from '@amplitude/analytics-browser';
import { EnrichmentPlugin } from '@amplitude/analytics-types';
import { BaseEvent } from '@amplitude/analytics-types/src';

type KeyOfEvent = keyof BaseEvent;

/**
 * This is an example plugin that enriches all events by removing a list of keys from the
 * event payload. This plugin is helpful in cases where users prefer not to use default
 * values set by the @amplitude/analytics-browser library, for example:
 * - `event.time`
 * - `event.idfa`
 * - `event.idva`
 * - `event.ip`
 *
 * @param keysToRemove
 * @returns EnrichmentPlugin
 */
export const removeEventKeyEnrichment = (keysToRemove: KeyOfEvent[] = []): EnrichmentPlugin => {
  return {
    name: 'remove-event-key-enrichment',
    type: 'enrichment',
    setup: async () => undefined,
    execute: async (event) => {
      for (var key of keysToRemove) {
        delete event[key];
      }
      return event;
    },
  };
};

/**
 * This is an example plugin that enriches all events by removing `event.time` from all events.
 * `event.time` uses `Date.now()` which is controlled by the device where the browser runs on.
 * The device clock can be easily manipulated yielding events having unreasonable time values.
 * With `event.time` being `undefined`, the time of the event is determined when the event was sent
 * successfully by the browser ("Client Upload Time"), determined by the server clock, rather than
 * when the event actually occurred. On majority of the cases, "Client Upload Time" can be
 * off by up to the configured `config.flushIntervalMillis`. By default `config.flushIntervalMillis`
 * is set to 1000 milliseconds. In rare cases where initial request to Amplitude fails due to
 * bad payload, throttled request, server error, etc, the time difference can be extended.
 */
const removeTimeEnrichment = removeEventKeyEnrichment(['time']);

const instance = createInstance();

/**
 * IMPORTANT: install plugin before calling init to make sure plugin is added by the time
 * init function is called, and events are flushed.
 */
instance.add(removeTimeEnrichment);

// initialize sdk
instance.init('API_KEY');


================================================
FILE: examples/react-native/app/.bundle/config
================================================
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1


================================================
FILE: examples/react-native/app/.eslintrc.js
================================================
module.exports = {
  root: true,
  extends: '@react-native',
};


================================================
FILE: examples/react-native/app/.gitignore
================================================
# OSX
#
.DS_Store

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
**/.xcode.env.local

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
.cxx/
*.keystore
!debug.keystore

# node.js
#
node_modules/
npm-debug.log
yarn-error.log

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output

# Bundle artifact
*.jsbundle

# Ruby / CocoaPods
**/Pods/
/vendor/bundle/

# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*

# testing
/coverage

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions


================================================
FILE: examples/react-native/app/.maestro/smoke.yaml
================================================
appId: org.reactjs.native.example.app
---
- launchApp
- extendedWaitUntil:
    visible:
      text: "Test Amplitude App"
    timeout: 15000


================================================
FILE: examples/react-native/app/.prettierrc.js
================================================
module.exports = {
  arrowParens: 'avoid',
  bracketSameLine: true,
  bracketSpacing: false,
  singleQuote: true,
  trailingComma: 'all',
};


================================================
FILE: examples/react-native/app/.watchmanconfig
================================================
{}


================================================
FILE: examples/react-native/app/.yarn/releases/yarn-stable-temp.cjs
================================================
#!/usr/bin/env node
/* eslint-disable */
//prettier-ignore
(()=>{var $3e=Object.create;var LR=Object.defineProperty;var e_e=Object.getOwnPropertyDescriptor;var t_e=Object.getOwnPropertyNames;var r_e=Object.getPrototypeOf,n_e=Object.prototype.hasOwnProperty;var ve=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),zt=(t,e)=>{for(var r in e)LR(t,r,{get:e[r],enumerable:!0})},i_e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of t_e(e))!n_e.call(t,a)&&a!==r&&LR(t,a,{get:()=>e[a],enumerable:!(o=e_e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?$3e(r_e(t)):{},i_e(e||!t||!t.__esModule?LR(r,"default",{value:t,enumerable:!0}):r,t));var vi={};zt(vi,{SAFE_TIME:()=>x7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Mu,S_IFREG:()=>qw});var Mu,wD,qw,ID,x7,k7=Et(()=>{Mu=61440,wD=16384,qw=32768,ID=40960,x7=456789e3});var tr={};zt(tr,{EBADF:()=>Io,EBUSY:()=>s_e,EEXIST:()=>A_e,EINVAL:()=>a_e,EISDIR:()=>u_e,ENOENT:()=>l_e,ENOSYS:()=>o_e,ENOTDIR:()=>c_e,ENOTEMPTY:()=>p_e,EOPNOTSUPP:()=>h_e,EROFS:()=>f_e,ERR_DIR_CLOSED:()=>NR});function Ll(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function s_e(t){return Ll("EBUSY",t)}function o_e(t,e){return Ll("ENOSYS",`${t}, ${e}`)}function a_e(t){return Ll("EINVAL",`invalid argument, ${t}`)}function Io(t){return Ll("EBADF",`bad file descriptor, ${t}`)}function l_e(t){return Ll("ENOENT",`no such file or directory, ${t}`)}function c_e(t){return Ll("ENOTDIR",`not a directory, ${t}`)}function u_e(t){return Ll("EISDIR",`illegal operation on a directory, ${t}`)}function A_e(t){return Ll("EEXIST",`file already exists, ${t}`)}function f_e(t){return Ll("EROFS",`read-only filesystem, ${t}`)}function p_e(t){return Ll("ENOTEMPTY",`directory not empty, ${t}`)}function h_e(t){return Ll("EOPNOTSUPP",`operation not supported, ${t}`)}function NR(){return Ll("ERR_DIR_CLOSED","Directory handle was closed")}var BD=Et(()=>{});var Ea={};zt(Ea,{BigIntStatsEntry:()=>ty,DEFAULT_MODE:()=>UR,DirEntry:()=>OR,StatEntry:()=>ey,areStatsEqual:()=>_R,clearStats:()=>vD,convertToBigIntStats:()=>d_e,makeDefaultStats:()=>Q7,makeEmptyStats:()=>g_e});function Q7(){return new ey}function g_e(){return vD(Q7())}function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):MR.types.isDate(r)&&(t[e]=new Date(0))}return t}function d_e(t){let e=new ty;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):MR.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function _R(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var MR,UR,OR,ey,ty,HR=Et(()=>{MR=$e(ve("util")),UR=33188,OR=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ey=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs
Download .txt
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
Download .txt
Showing preview only (736K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7752 symbols across 383 files)

FILE: example-proxy/amplitude-proxy-server.js
  constant PORT (line 7) | const PORT = process.env.PORT || 3001;
  constant AMPLITUDE_API_BASE (line 16) | const AMPLITUDE_API_BASE = 'https://api2.amplitude.com';
  constant AMPLITUDE_BATCH_API (line 17) | const AMPLITUDE_BATCH_API = 'https://api2.amplitude.com/batch';

FILE: examples/browser/chrome-ext/amplitude-min.js
  function t (line 1) | function t(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("C...
  function i (line 1) | function i(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty....
  function r (line 1) | function r(e,t,n,i){return new(n||(n=Promise))((function(r,o){function s...
  function o (line 1) | function o(e,t){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r...
  function s (line 1) | function s(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t]...
  function u (line 1) | function u(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!...
  function a (line 1) | function a(e,t,n){if(n||2===arguments.length)for(var i,r=0,o=t.length;r<...
  function e (line 1) | function e(){}
  method SpecialEventType (line 1) | get SpecialEventType(){return d}
  method IdentifyOperation (line 1) | get IdentifyOperation(){return c}
  method RevenueProperty (line 1) | get RevenueProperty(){return l}
  method LogLevel (line 1) | get LogLevel(){return f}
  method ServerZone (line 1) | get ServerZone(){return p}
  method Status (line 1) | get Status(){return v}
  function e (line 1) | function e(){this._propertySet=new Set,this._properties={}}
  function e (line 1) | function e(e){this.client=e,this.queue=[],this.applying=!1,this.plugins=[]}
  function e (line 1) | function e(e){void 0===e&&(e="$default"),this.initializing=!1,this.q=[],...
  function e (line 1) | function e(){this.productId="",this.quantity=1,this.price=0}
  function e (line 1) | function e(){this.logLevel=f.None}
  function e (line 1) | function e(e){var t,n,i,r;this._optOut=!1;var o=J();this.apiKey=e.apiKey...
  function e (line 1) | function e(){this.name="amplitude",this.type="destination",this.retryTim...
  function e (line 1) | function e(){this.memoryStorage=new Map}
  function e (line 1) | function e(){}
  function e (line 1) | function e(e){this.options=n({},e)}
  function n (line 1) | function n(){return null!==e&&e.apply(this,arguments)||this}
  function e (line 1) | function e(){}
  function e (line 1) | function e(){this.queue=[]}
  function e (line 1) | function e(){this.identity={userProperties:{}},this.listeners=new Set}
  function e (line 1) | function e(){this.identityStore=new ve,this.eventBridge=new de,this.appl...
  function e (line 1) | function e(){this.name="identity",this.type="before",this.identityStore=...
  function e (line 1) | function e(){this.name="@amplitude/plugin-context-browser",this.type="be...
  function e (line 1) | function e(){}
  function n (line 1) | function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.stat...
  function n (line 1) | function n(){return null!==e&&e.apply(this,arguments)||this}
  function n (line 1) | function n(t,n,i,r,o,s,u,a,c,l,d,p,v,h,g,y,m,b,I,_,w,S,E,T,O,k,P,R){void...
  function i (line 1) | function i(){return null!==e&&e.apply(this,arguments)||this}

FILE: examples/browser/next-app/pages/_app.tsx
  function MyApp (line 24) | function MyApp({ Component, pageProps }: AppProps) {

FILE: examples/browser/next-app/pages/api/hello.ts
  type Data (line 4) | type Data = {
  function handler (line 8) | function handler(req: NextApiRequest, res: NextApiResponse<Data>) {

FILE: examples/browser/react-app/src/App.tsx
  function App (line 6) | function App() {

FILE: examples/node/nest-app/src/app.controller.ts
  constant AMPLITUDE_API_KEY (line 5) | const AMPLITUDE_API_KEY = '9f0e4a9f1c1233088b254e30ba3c80e1';
  class AppController (line 8) | class AppController {
    method constructor (line 9) | constructor(private readonly appService: AppService) {
    method getOptions (line 17) | getOptions(): any {
    method track (line 22) | async track(): Promise<string> {
    method identify (line 32) | async identify(): Promise<string> {
    method group (line 41) | async group(): Promise<string> {
    method groupIdentify (line 48) | async groupIdentify(): Promise<string> {
    method test (line 59) | async test(): Promise<string> {

FILE: examples/node/nest-app/src/app.module.ts
  class AppModule (line 10) | class AppModule {}

FILE: examples/node/nest-app/src/app.service.ts
  class AppService (line 4) | class AppService {
    method getOptions (line 5) | getOptions(): any {

FILE: examples/node/nest-app/src/main.ts
  function bootstrap (line 6) | async function bootstrap() {

FILE: examples/plugins/react-native-idfa-plugin/idfaPlugin.ts
  class IdfaPlugin (line 4) | class IdfaPlugin implements Types.BeforePlugin {
    method setup (line 9) | async setup(_config: Types.Config): Promise<undefined> {
    method execute (line 19) | async execute(context: Types.Event): Promise<Types.Event> {

FILE: examples/plugins/remove-event-key/index.ts
  type KeyOfEvent (line 5) | type KeyOfEvent = keyof BaseEvent;

FILE: examples/react-native/app/.yarn/releases/yarn-stable-temp.cjs
  function Ll (line 4) | function Ll(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}
  function s_e (line 4) | function s_e(t){return Ll("EBUSY",t)}
  function o_e (line 4) | function o_e(t,e){return Ll("ENOSYS",`${t}, ${e}`)}
  function a_e (line 4) | function a_e(t){return Ll("EINVAL",`invalid argument, ${t}`)}
  function Io (line 4) | function Io(t){return Ll("EBADF",`bad file descriptor, ${t}`)}
  function l_e (line 4) | function l_e(t){return Ll("ENOENT",`no such file or directory, ${t}`)}
  function c_e (line 4) | function c_e(t){return Ll("ENOTDIR",`not a directory, ${t}`)}
  function u_e (line 4) | function u_e(t){return Ll("EISDIR",`illegal operation on a directory, ${...
  function A_e (line 4) | function A_e(t){return Ll("EEXIST",`file already exists, ${t}`)}
  function f_e (line 4) | function f_e(t){return Ll("EROFS",`read-only filesystem, ${t}`)}
  function p_e (line 4) | function p_e(t){return Ll("ENOTEMPTY",`directory not empty, ${t}`)}
  function h_e (line 4) | function h_e(t){return Ll("EOPNOTSUPP",`operation not supported, ${t}`)}
  function NR (line 4) | function NR(){return Ll("ERR_DIR_CLOSED","Directory handle was closed")}
  function Q7 (line 4) | function Q7(){return new ey}
  function g_e (line 4) | function g_e(){return vD(Q7())}
  function vD (line 4) | function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r...
  function d_e (line 4) | function d_e(t){let e=new ty;for(let r in t)if(Object.hasOwn(t,r)){let o...
  function _R (line 4) | function _R(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs...
  method constructor (line 4) | constructor(){this.name="";this.path="";this.mode=0}
  method isBlockDevice (line 4) | isBlockDevice(){return!1}
  method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
  method isDirectory (line 4) | isDirectory(){return(this.mode&61440)===16384}
  method isFIFO (line 4) | isFIFO(){return!1}
  method isFile (line 4) | isFile(){return(this.mode&61440)===32768}
  method isSocket (line 4) | isSocket(){return!1}
  method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&61440)===40960}
  method constructor (line 4) | constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atim...
  method isBlockDevice (line 4) | isBlockDevice(){return!1}
  method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
  method isDirectory (line 4) | isDirectory(){return(this.mode&61440)===16384}
  method isFIFO (line 4) | isFIFO(){return!1}
  method isFile (line 4) | isFile(){return(this.mode&61440)===32768}
  method isSocket (line 4) | isSocket(){return!1}
  method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&61440)===40960}
  method constructor (line 4) | constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);...
  method isBlockDevice (line 4) | isBlockDevice(){return!1}
  method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
  method isDirectory (line 4) | isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}
  method isFIFO (line 4) | isFIFO(){return!1}
  method isFile (line 4) | isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}
  method isSocket (line 4) | isSocket(){return!1}
  method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}
  function w_e (line 4) | function w_e(t){let e,r;if(e=t.match(E_e))t=e[1];else if(r=t.match(C_e))...
  function I_e (line 4) | function I_e(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(m_e))?t=...
  function DD (line 4) | function DD(t,e){return t===le?R7(e):qR(e)}
  function PD (line 4) | async function PD(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.i...
  function T7 (line 4) | async function T7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtil...
  function GR (line 4) | async function GR(t,e,r,o,a,n,u){let A=u.didParentExist?await L7(r,o):nu...
  function L7 (line 4) | async function L7(t,e){try{return await t.lstatPromise(e)}catch{return n...
  function v_e (line 4) | async function v_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p...
  function D_e (line 4) | async function D_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromis...
  function P_e (line 4) | async function P_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(...
  function S_e (line 4) | async function S_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type==="Har...
  function b_e (line 4) | async function b_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(...
  function SD (line 4) | function SD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>"u")return n...
  method constructor (line 4) | constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.clo...
  method throwIfClosed (line 4) | throwIfClosed(){if(this.closed)throw NR()}
  method [Symbol.asyncIterator] (line 4) | async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==nu...
  method read (line 4) | read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.reso...
  method readSync (line 4) | readSync(){return this.throwIfClosed(),this.nextDirent()}
  method close (line 4) | close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}
  method closeSync (line 4) | closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}
  function O7 (line 4) | function O7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: e...
  method constructor (line 4) | constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.chang...
  method create (line 4) | static create(r,o,a){let n=new ry(r,o,a);return n.start(),n}
  method start (line 4) | start(){O7(this.status,"ready"),this.status="running",this.startTimeout=...
  method stop (line 4) | stop(){O7(this.status,"running"),this.status="stopped",this.startTimeout...
  method stat (line 4) | stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}c...
  method makeInterval (line 4) | makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStat...
  method registerChangeListener (line 4) | registerChangeListener(r,o){this.addListener("change",r),this.changeList...
  method unregisterChangeListener (line 4) | unregisterChangeListener(r){this.removeListener("change",r);let o=this.c...
  method unregisterAllChangeListeners (line 4) | unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())...
  method hasChangeListeners (line 4) | hasChangeListeners(){return this.changeListeners.size>0}
  method ref (line 4) | ref(){for(let r of this.changeListeners.values())r.ref();return this}
  method unref (line 4) | unref(){for(let r of this.changeListeners.values())r.unref();return this}
  function ny (line 4) | function ny(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=...
  function Ug (line 4) | function Ug(t,e,r){let o=bD.get(t);if(typeof o>"u")return;let a=o.get(e)...
  function _g (line 4) | function _g(t){let e=bD.get(t);if(!(typeof e>"u"))for(let r of e.keys())...
  function x_e (line 4) | function x_e(t){let e=t.match(/\r?\n/g);if(e===null)return H7.EOL;let r=...
  function Hg (line 7) | function Hg(t,e){return e.replace(/\r?\n/g,x_e(t))}
  method constructor (line 7) | constructor(e){this.pathUtils=e}
  method genTraversePromise (line 7) | async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length...
  method checksumFilePromise (line 7) | async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this....
  method removePromise (line 7) | async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=aw...
  method removeSync (line 7) | removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a)...
  method mkdirpPromise (line 7) | async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===th...
  method mkdirpSync (line 7) | mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUt...
  method copyPromise (line 7) | async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stab...
  method copySync (line 7) | copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=t...
  method changeFilePromise (line 7) | async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeF...
  method changeFileBufferPromise (line 7) | async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try...
  method changeFileTextPromise (line 7) | async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="...
  method changeFileSync (line 7) | changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBuffer...
  method changeFileBufferSync (line 7) | changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.r...
  method changeFileTextSync (line 7) | changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{...
  method movePromise (line 7) | async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.c...
  method moveSync (line 7) | moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this...
  method lockPromise (line 7) | async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A...
  method readJsonPromise (line 7) | async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{...
  method readJsonSync (line 7) | readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(...
  method writeJsonPromise (line 7) | async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await t...
  method writeJsonSync (line 8) | writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSy...
  method preserveTimePromise (line 9) | async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await ...
  method preserveTimeSync (line 9) | async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&...
  method constructor (line 9) | constructor(){super(z)}
  method getExtractHint (line 9) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
  method resolve (line 9) | resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}
  method getRealPath (line 9) | getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}
  method openPromise (line 9) | async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e...
  method openSync (line 9) | openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}
  method opendirPromise (line 9) | async opendirPromise(e,r){return Object.assign(await this.baseFs.opendir...
  method opendirSync (line 9) | opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapTo...
  method readPromise (line 9) | async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,...
  method readSync (line 9) | readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}
  method writePromise (line 9) | async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseF...
  method writeSync (line 9) | writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r...
  method closePromise (line 9) | async closePromise(e){return this.baseFs.closePromise(e)}
  method closeSync (line 9) | closeSync(e){this.baseFs.closeSync(e)}
  method createReadStream (line 9) | createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this....
  method createWriteStream (line 9) | createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?thi...
  method realpathPromise (line 9) | async realpathPromise(e){return this.mapFromBase(await this.baseFs.realp...
  method realpathSync (line 9) | realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.ma...
  method existsPromise (line 9) | async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}
  method existsSync (line 9) | existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}
  method accessSync (line 9) | accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}
  method accessPromise (line 9) | async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase...
  method statPromise (line 9) | async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}
  method statSync (line 9) | statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}
  method fstatPromise (line 9) | async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}
  method fstatSync (line 9) | fstatSync(e,r){return this.baseFs.fstatSync(e,r)}
  method lstatPromise (line 9) | lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}
  method lstatSync (line 9) | lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}
  method fchmodPromise (line 9) | async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}
  method fchmodSync (line 9) | fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}
  method chmodPromise (line 9) | async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e...
  method chmodSync (line 9) | chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}
  method fchownPromise (line 9) | async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}
  method fchownSync (line 9) | fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}
  method chownPromise (line 9) | async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase...
  method chownSync (line 9) | chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}
  method renamePromise (line 9) | async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase...
  method renameSync (line 9) | renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.map...
  method copyFilePromise (line 9) | async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.m...
  method copyFileSync (line 9) | copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),...
  method appendFilePromise (line 9) | async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this...
  method appendFileSync (line 9) | appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase...
  method writeFilePromise (line 9) | async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.f...
  method writeFileSync (line 9) | writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e...
  method unlinkPromise (line 9) | async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}
  method unlinkSync (line 9) | unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}
  method utimesPromise (line 9) | async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBa...
  method utimesSync (line 9) | utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}
  method lutimesPromise (line 9) | async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapTo...
  method lutimesSync (line 9) | lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}
  method mkdirPromise (line 9) | async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e...
  method mkdirSync (line 9) | mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}
  method rmdirPromise (line 9) | async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e...
  method rmdirSync (line 9) | rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}
  method rmPromise (line 9) | async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}
  method rmSync (line 9) | rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}
  method linkPromise (line 9) | async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),...
  method linkSync (line 9) | linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBa...
  method symlinkPromise (line 9) | async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.is...
  method symlinkSync (line 9) | symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(...
  method readFilePromise (line 9) | async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMap...
  method readFileSync (line 9) | readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}
  method readdirPromise (line 9) | readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}
  method readdirSync (line 9) | readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}
  method readlinkPromise (line 9) | async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readl...
  method readlinkSync (line 9) | readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.ma...
  method truncatePromise (line 9) | async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapTo...
  method truncateSync (line 9) | truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}
  method ftruncatePromise (line 9) | async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}
  method ftruncateSync (line 9) | ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}
  method watch (line 9) | watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}
  method watchFile (line 9) | watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}
  method unwatchFile (line 9) | unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}
  method fsMapToBase (line 9) | fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}
  method constructor (line 9) | constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}
  method getRealPath (line 9) | getRealPath(){return this.target}
  method getBaseFs (line 9) | getBaseFs(){return this.baseFs}
  method mapFromBase (line 9) | mapFromBase(r){return r}
  method mapToBase (line 9) | mapToBase(r){return r}
  function G7 (line 9) | function G7(t){let e=t;return typeof t.path=="string"&&(e.path=le.toPort...
  method constructor (line 9) | constructor(r=j7.default){super();this.realFs=r}
  method getExtractHint (line 9) | getExtractHint(){return!1}
  method getRealPath (line 9) | getRealPath(){return Bt.root}
  method resolve (line 9) | resolve(r){return z.resolve(r)}
  method openPromise (line 9) | async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.op...
  method openSync (line 9) | openSync(r,o,a){return this.realFs.openSync(le.fromPortablePath(r),o,a)}
  method opendirPromise (line 9) | async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?...
  method opendirSync (line 9) | opendirSync(r,o){let n=typeof o<"u"?this.realFs.opendirSync(le.fromPorta...
  method readPromise (line 9) | async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{thi...
  method readSync (line 9) | readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}
  method writePromise (line 9) | async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o==...
  method writeSync (line 9) | writeSync(r,o,a,n,u){return typeof o=="string"?this.realFs.writeSync(r,o...
  method closePromise (line 9) | async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this...
  method closeSync (line 9) | closeSync(r){this.realFs.closeSync(r)}
  method createReadStream (line 9) | createReadStream(r,o){let a=r!==null?le.fromPortablePath(r):r;return thi...
  method createWriteStream (line 9) | createWriteStream(r,o){let a=r!==null?le.fromPortablePath(r):r;return th...
  method realpathPromise (line 9) | async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.re...
  method realpathSync (line 9) | realpathSync(r){return le.toPortablePath(this.realFs.realpathSync(le.fro...
  method existsPromise (line 9) | async existsPromise(r){return await new Promise(o=>{this.realFs.exists(l...
  method accessSync (line 9) | accessSync(r,o){return this.realFs.accessSync(le.fromPortablePath(r),o)}
  method accessPromise (line 9) | async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.ac...
  method existsSync (line 9) | existsSync(r){return this.realFs.existsSync(le.fromPortablePath(r))}
  method statPromise (line 9) | async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.st...
  method statSync (line 9) | statSync(r,o){return o?this.realFs.statSync(le.fromPortablePath(r),o):th...
  method fstatPromise (line 9) | async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.f...
  method fstatSync (line 9) | fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync...
  method lstatPromise (line 9) | async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.l...
  method lstatSync (line 9) | lstatSync(r,o){return o?this.realFs.lstatSync(le.fromPortablePath(r),o):...
  method fchmodPromise (line 9) | async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fc...
  method fchmodSync (line 9) | fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}
  method chmodPromise (line 9) | async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chm...
  method chmodSync (line 9) | chmodSync(r,o){return this.realFs.chmodSync(le.fromPortablePath(r),o)}
  method fchownPromise (line 9) | async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs....
  method fchownSync (line 9) | fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}
  method chownPromise (line 9) | async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.c...
  method chownSync (line 9) | chownSync(r,o,a){return this.realFs.chownSync(le.fromPortablePath(r),o,a)}
  method renamePromise (line 9) | async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.re...
  method renameSync (line 9) | renameSync(r,o){return this.realFs.renameSync(le.fromPortablePath(r),le....
  method copyFilePromise (line 9) | async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.rea...
  method copyFileSync (line 9) | copyFileSync(r,o,a=0){return this.realFs.copyFileSync(le.fromPortablePat...
  method appendFilePromise (line 9) | async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=ty...
  method appendFileSync (line 9) | appendFileSync(r,o,a){let n=typeof r=="string"?le.fromPortablePath(r):r;...
  method writeFilePromise (line 9) | async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typ...
  method writeFileSync (line 9) | writeFileSync(r,o,a){let n=typeof r=="string"?le.fromPortablePath(r):r;a...
  method unlinkPromise (line 9) | async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unli...
  method unlinkSync (line 9) | unlinkSync(r){return this.realFs.unlinkSync(le.fromPortablePath(r))}
  method utimesPromise (line 9) | async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs....
  method utimesSync (line 9) | utimesSync(r,o,a){this.realFs.utimesSync(le.fromPortablePath(r),o,a)}
  method lutimesPromise (line 9) | async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs...
  method lutimesSync (line 9) | lutimesSync(r,o,a){this.realFs.lutimesSync(le.fromPortablePath(r),o,a)}
  method mkdirPromise (line 9) | async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkd...
  method mkdirSync (line 9) | mkdirSync(r,o){return this.realFs.mkdirSync(le.fromPortablePath(r),o)}
  method rmdirPromise (line 9) | async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.r...
  method rmdirSync (line 9) | rmdirSync(r,o){return this.realFs.rmdirSync(le.fromPortablePath(r),o)}
  method rmPromise (line 9) | async rmPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rm(l...
  method rmSync (line 9) | rmSync(r,o){return this.realFs.rmSync(le.fromPortablePath(r),o)}
  method linkPromise (line 9) | async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link...
  method linkSync (line 9) | linkSync(r,o){return this.realFs.linkSync(le.fromPortablePath(r),le.from...
  method symlinkPromise (line 9) | async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs...
  method symlinkSync (line 9) | symlinkSync(r,o,a){return this.realFs.symlinkSync(le.fromPortablePath(r....
  method readFilePromise (line 9) | async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof...
  method readFileSync (line 9) | readFileSync(r,o){let a=typeof r=="string"?le.fromPortablePath(r):r;retu...
  method readdirPromise (line 9) | async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive...
  method readdirSync (line 9) | readdirSync(r,o){return o?o.recursive&&process.platform==="win32"?o.with...
  method readlinkPromise (line 9) | async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.re...
  method readlinkSync (line 9) | readlinkSync(r){return le.toPortablePath(this.realFs.readlinkSync(le.fro...
  method truncatePromise (line 9) | async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs....
  method truncateSync (line 9) | truncateSync(r,o){return this.realFs.truncateSync(le.fromPortablePath(r)...
  method ftruncatePromise (line 9) | async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs...
  method ftruncateSync (line 9) | ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}
  method watch (line 9) | watch(r,o,a){return this.realFs.watch(le.fromPortablePath(r),o,a)}
  method watchFile (line 9) | watchFile(r,o,a){return this.realFs.watchFile(le.fromPortablePath(r),o,a)}
  method unwatchFile (line 9) | unwatchFile(r,o){return this.realFs.unwatchFile(le.fromPortablePath(r),o)}
  method makeCallback (line 9) | makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}
  method constructor (line 9) | constructor(r,{baseFs:o=new Tn}={}){super(z);this.target=this.pathUtils....
  method getRealPath (line 9) | getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),th...
  method resolve (line 9) | resolve(r){return this.pathUtils.isAbsolute(r)?z.normalize(r):this.baseF...
  method mapFromBase (line 9) | mapFromBase(r){return r}
  method mapToBase (line 9) | mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(t...
  method constructor (line 9) | constructor(r,{baseFs:o=new Tn}={}){super(z);this.target=this.pathUtils....
  method getRealPath (line 9) | getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),th...
  method getTarget (line 9) | getTarget(){return this.target}
  method getBaseFs (line 9) | getBaseFs(){return this.baseFs}
  method mapToBase (line 9) | mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsol...
  method mapFromBase (line 9) | mapFromBase(r){return this.pathUtils.resolve(W7,this.pathUtils.relative(...
  method constructor (line 9) | constructor(r,o){super(o);this.instance=null;this.factory=r}
  method baseFs (line 9) | get baseFs(){return this.instance||(this.instance=this.factory()),this.i...
  method baseFs (line 9) | set baseFs(r){this.instance=r}
  method mapFromBase (line 9) | mapFromBase(r){return r}
  method mapToBase (line 9) | mapToBase(r){return r}
  method constructor (line 9) | constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n...
  method getExtractHint (line 9) | getExtractHint(r){return this.baseFs.getExtractHint(r)}
  method getRealPath (line 9) | getRealPath(){return this.baseFs.getRealPath()}
  method saveAndClose (line 9) | saveAndClose(){if(_g(this),this.mountInstances)for(let[r,{childFs:o}]of ...
  method discardAndClose (line 9) | discardAndClose(){if(_g(this),this.mountInstances)for(let[r,{childFs:o}]...
  method resolve (line 9) | resolve(r){return this.baseFs.resolve(r)}
  method remapFd (line 9) | remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o...
  method openPromise (line 9) | async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>aw...
  method openSync (line 9) | openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,...
  method opendirPromise (line 9) | async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>a...
  method opendirSync (line 9) | opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(...
  method readPromise (line 9) | async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.ba...
  method readSync (line 9) | readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r...
  method writePromise (line 9) | async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="s...
  method writeSync (line 9) | writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="string"?th...
  method closePromise (line 9) | async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.cl...
  method closeSync (line 9) | closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let ...
  method createReadStream (line 9) | createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):...
  method createWriteStream (line 9) | createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o...
  method realpathPromise (line 9) | async realpathPromise(r){return await this.makeCallPromise(r,async()=>aw...
  method realpathSync (line 9) | realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(...
  method existsPromise (line 9) | async existsPromise(r){return await this.makeCallPromise(r,async()=>awai...
  method existsSync (line 9) | existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(...
  method accessPromise (line 9) | async accessPromise(r,o){return await this.makeCallPromise(r,async()=>aw...
  method accessSync (line 9) | accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,...
  method statPromise (line 9) | async statPromise(r,o){return await this.makeCallPromise(r,async()=>awai...
  method statSync (line 9) | statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(...
  method fstatPromise (line 9) | async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatP...
  method fstatSync (line 9) | fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);...
  method lstatPromise (line 9) | async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
  method lstatSync (line 9) | lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o)...
  method fchmodPromise (line 9) | async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmo...
  method fchmodSync (line 9) | fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o...
  method chmodPromise (line 9) | async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
  method chmodSync (line 9) | chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o)...
  method fchownPromise (line 9) | async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fch...
  method fchownSync (line 9) | fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r...
  method chownPromise (line 9) | async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>a...
  method chownSync (line 9) | chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,...
  method renamePromise (line 9) | async renamePromise(r,o){return await this.makeCallPromise(r,async()=>aw...
  method renameSync (line 9) | renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>t...
  method copyFilePromise (line 9) | async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&jg.constants...
  method copyFileSync (line 9) | copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICL...
  method appendFilePromise (line 9) | async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async...
  method appendFileSync (line 9) | appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendF...
  method writeFilePromise (line 9) | async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async(...
  method writeFileSync (line 9) | writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFil...
  method unlinkPromise (line 9) | async unlinkPromise(r){return await this.makeCallPromise(r,async()=>awai...
  method unlinkSync (line 9) | unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(...
  method utimesPromise (line 9) | async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>...
  method utimesSync (line 9) | utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(...
  method lutimesPromise (line 9) | async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=...
  method lutimesSync (line 9) | lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSyn...
  method mkdirPromise (line 9) | async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
  method mkdirSync (line 9) | mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o)...
  method rmdirPromise (line 9) | async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
  method rmdirSync (line 9) | rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o)...
  method rmPromise (line 9) | async rmPromise(r,o){return await this.makeCallPromise(r,async()=>await ...
  method rmSync (line 9) | rmSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,o),(a,{s...
  method linkPromise (line 9) | async linkPromise(r,o){return await this.makeCallPromise(o,async()=>awai...
  method linkSync (line 9) | linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(...
  method symlinkPromise (line 9) | async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=...
  method symlinkSync (line 9) | symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSyn...
  method readFilePromise (line 9) | async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await ...
  method readFileSync (line 9) | readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSyn...
  method readdirPromise (line 9) | async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>a...
  method readdirSync (line 9) | readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(...
  method readlinkPromise (line 9) | async readlinkPromise(r){return await this.makeCallPromise(r,async()=>aw...
  method readlinkSync (line 9) | readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(...
  method truncatePromise (line 9) | async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>...
  method truncateSync (line 9) | truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSyn...
  method ftruncatePromise (line 9) | async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ft...
  method ftruncateSync (line 9) | ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSy...
  method watch (line 9) | watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,...
  method watchFile (line 9) | watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,...
  method unwatchFile (line 9) | unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(...
  method makeCallPromise (line 9) | async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="stri...
  method makeCallSync (line 9) | makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")retur...
  method findMount (line 9) | findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";f...
  method limitOpenFiles (line 9) | limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),...
  method getMountPromise (line 9) | async getMountPromise(r,o){if(this.mountInstances){let a=this.mountInsta...
  method getMountSync (line 9) | getMountSync(r,o){if(this.mountInstances){let a=this.mountInstances.get(...
  method constructor (line 9) | constructor(){super(z)}
  method getExtractHint (line 9) | getExtractHint(){throw Zt()}
  method getRealPath (line 9) | getRealPath(){throw Zt()}
  method resolve (line 9) | resolve(){throw Zt()}
  method openPromise (line 9) | async openPromise(){throw Zt()}
  method openSync (line 9) | openSync(){throw Zt()}
  method opendirPromise (line 9) | async opendirPromise(){throw Zt()}
  method opendirSync (line 9) | opendirSync(){throw Zt()}
  method readPromise (line 9) | async readPromise(){throw Zt()}
  method readSync (line 9) | readSync(){throw Zt()}
  method writePromise (line 9) | async writePromise(){throw Zt()}
  method writeSync (line 9) | writeSync(){throw Zt()}
  method closePromise (line 9) | async closePromise(){throw Zt()}
  method closeSync (line 9) | closeSync(){throw Zt()}
  method createWriteStream (line 9) | createWriteStream(){throw Zt()}
  method createReadStream (line 9) | createReadStream(){throw Zt()}
  method realpathPromise (line 9) | async realpathPromise(){throw Zt()}
  method realpathSync (line 9) | realpathSync(){throw Zt()}
  method readdirPromise (line 9) | async readdirPromise(){throw Zt()}
  method readdirSync (line 9) | readdirSync(){throw Zt()}
  method existsPromise (line 9) | async existsPromise(e){throw Zt()}
  method existsSync (line 9) | existsSync(e){throw Zt()}
  method accessPromise (line 9) | async accessPromise(){throw Zt()}
  method accessSync (line 9) | accessSync(){throw Zt()}
  method statPromise (line 9) | async statPromise(){throw Zt()}
  method statSync (line 9) | statSync(){throw Zt()}
  method fstatPromise (line 9) | async fstatPromise(e){throw Zt()}
  method fstatSync (line 9) | fstatSync(e){throw Zt()}
  method lstatPromise (line 9) | async lstatPromise(e){throw Zt()}
  method lstatSync (line 9) | lstatSync(e){throw Zt()}
  method fchmodPromise (line 9) | async fchmodPromise(){throw Zt()}
  method fchmodSync (line 9) | fchmodSync(){throw Zt()}
  method chmodPromise (line 9) | async chmodPromise(){throw Zt()}
  method chmodSync (line 9) | chmodSync(){throw Zt()}
  method fchownPromise (line 9) | async fchownPromise(){throw Zt()}
  method fchownSync (line 9) | fchownSync(){throw Zt()}
  method chownPromise (line 9) | async chownPromise(){throw Zt()}
  method chownSync (line 9) | chownSync(){throw Zt()}
  method mkdirPromise (line 9) | async mkdirPromise(){throw Zt()}
  method mkdirSync (line 9) | mkdirSync(){throw Zt()}
  method rmdirPromise (line 9) | async rmdirPromise(){throw Zt()}
  method rmdirSync (line 9) | rmdirSync(){throw Zt()}
  method rmPromise (line 9) | async rmPromise(){throw Zt()}
  method rmSync (line 9) | rmSync(){throw Zt()}
  method linkPromise (line 9) | async linkPromise(){throw Zt()}
  method linkSync (line 9) | linkSync(){throw Zt()}
  method symlinkPromise (line 9) | async symlinkPromise(){throw Zt()}
  method symlinkSync (line 9) | symlinkSync(){throw Zt()}
  method renamePromise (line 9) | async renamePromise(){throw Zt()}
  method renameSync (line 9) | renameSync(){throw Zt()}
  method copyFilePromise (line 9) | async copyFilePromise(){throw Zt()}
  method copyFileSync (line 9) | copyFileSync(){throw Zt()}
  method appendFilePromise (line 9) | async appendFilePromise(){throw Zt()}
  method appendFileSync (line 9) | appendFileSync(){throw Zt()}
  method writeFilePromise (line 9) | async writeFilePromise(){throw Zt()}
  method writeFileSync (line 9) | writeFileSync(){throw Zt()}
  method unlinkPromise (line 9) | async unlinkPromise(){throw Zt()}
  method unlinkSync (line 9) | unlinkSync(){throw Zt()}
  method utimesPromise (line 9) | async utimesPromise(){throw Zt()}
  method utimesSync (line 9) | utimesSync(){throw Zt()}
  method lutimesPromise (line 9) | async lutimesPromise(){throw Zt()}
  method lutimesSync (line 9) | lutimesSync(){throw Zt()}
  method readFilePromise (line 9) | async readFilePromise(){throw Zt()}
  method readFileSync (line 9) | readFileSync(){throw Zt()}
  method readlinkPromise (line 9) | async readlinkPromise(){throw Zt()}
  method readlinkSync (line 9) | readlinkSync(){throw Zt()}
  method truncatePromise (line 9) | async truncatePromise(){throw Zt()}
  method truncateSync (line 9) | truncateSync(){throw Zt()}
  method ftruncatePromise (line 9) | async ftruncatePromise(e,r){throw Zt()}
  method ftruncateSync (line 9) | ftruncateSync(e,r){throw Zt()}
  method watch (line 9) | watch(){throw Zt()}
  method watchFile (line 9) | watchFile(){throw Zt()}
  method unwatchFile (line 9) | unwatchFile(){throw Zt()}
  method constructor (line 9) | constructor(r){super(le);this.baseFs=r}
  method mapFromBase (line 9) | mapFromBase(r){return le.fromPortablePath(r)}
  method mapToBase (line 9) | mapToBase(r){return le.toPortablePath(r)}
  method constructor (line 9) | constructor({baseFs:r=new Tn}={}){super(z);this.baseFs=r}
  method makeVirtualPath (line 9) | static makeVirtualPath(r,o,a){if(z.basename(r)!=="__virtual__")throw new...
  method resolveVirtual (line 9) | static resolveVirtual(r){let o=r.match(KR);if(!o||!o[3]&&o[5])return r;l...
  method getExtractHint (line 9) | getExtractHint(r){return this.baseFs.getExtractHint(r)}
  method getRealPath (line 9) | getRealPath(){return this.baseFs.getRealPath()}
  method realpathSync (line 9) | realpathSync(r){let o=r.match(KR);if(!o)return this.baseFs.realpathSync(...
  method realpathPromise (line 9) | async realpathPromise(r){let o=r.match(KR);if(!o)return await this.baseF...
  method mapToBase (line 9) | mapToBase(r){if(r==="")return r;if(this.pathUtils.isAbsolute(r))return m...
  method mapFromBase (line 9) | mapFromBase(r){return r}
  function F_e (line 9) | function F_e(t,e){return typeof zR.default.isUtf8<"u"?zR.default.isUtf8(...
  method constructor (line 9) | constructor(r){super(le);this.baseFs=r}
  method mapFromBase (line 9) | mapFromBase(r){return r}
  method mapToBase (line 9) | mapToBase(r){if(typeof r=="string")return r;if(r instanceof URL)return(0...
  method constructor (line 9) | constructor(e,r){this[R_e]=1;this[T_e]=void 0;this[L_e]=void 0;this[N_e]...
  method fd (line 9) | get fd(){return this[mf]}
  method appendFile (line 9) | async appendFile(e,r){try{this[Lc](this.appendFile);let o=(typeof r=="st...
  method chown (line 9) | async chown(e,r){try{return this[Lc](this.chown),await this[Bo].fchownPr...
  method chmod (line 9) | async chmod(e){try{return this[Lc](this.chmod),await this[Bo].fchmodProm...
  method createReadStream (line 9) | createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this....
  method createWriteStream (line 9) | createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:thi...
  method datasync (line 9) | datasync(){throw new Error("Method not implemented.")}
  method sync (line 9) | sync(){throw new Error("Method not implemented.")}
  method read (line 9) | async read(e,r,o,a){try{this[Lc](this.read);let n;return Buffer.isBuffer...
  method readFile (line 9) | async readFile(e){try{this[Lc](this.readFile);let r=(typeof e=="string"?...
  method readLines (line 9) | readLines(e){return(0,rY.createInterface)({input:this.createReadStream(e...
  method stat (line 9) | async stat(e){try{return this[Lc](this.stat),await this[Bo].fstatPromise...
  method truncate (line 9) | async truncate(e){try{return this[Lc](this.truncate),await this[Bo].ftru...
  method utimes (line 9) | utimes(e,r){throw new Error("Method not implemented.")}
  method writeFile (line 9) | async writeFile(e,r){try{this[Lc](this.writeFile);let o=(typeof r=="stri...
  method write (line 9) | async write(...e){try{if(this[Lc](this.write),ArrayBuffer.isView(e[0])){...
  method writev (line 9) | async writev(e,r){try{this[Lc](this.writev);let o=0;if(typeof r<"u")for(...
  method readv (line 9) | readv(e,r){throw new Error("Method not implemented.")}
  method close (line 9) | close(){if(this[mf]===-1)return Promise.resolve();if(this[jp])return thi...
  method [(Bo,mf,R_e=sy,T_e=jp,L_e=kD,N_e=QD,Lc)] (line 9) | [(Bo,mf,R_e=sy,T_e=jp,L_e=kD,N_e=QD,Lc)](e){if(this[mf]===-1){let r=new ...
  method [Nc] (line 9) | [Nc](){if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[Bo].c...
  function Kw (line 9) | function Kw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?...
  function FD (line 9) | function FD(t,e){let r=Object.create(t);return Kw(r,e),r}
  function oY (line 9) | function oY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).pa...
  function aY (line 9) | function aY(){if(VR)return VR;let t=le.toPortablePath(lY.default.tmpdir(...
  method detachTemp (line 9) | detachTemp(t){Oc.delete(t)}
  method mktempSync (line 9) | mktempSync(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY("xfs-");t...
  method mktempPromise (line 9) | async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(...
  method rmtempPromise (line 9) | async rmtempPromise(){await Promise.all(Array.from(Oc.values()).map(asyn...
  method rmtempSync (line 9) | rmtempSync(){for(let t of Oc)try{oe.removeSync(t),Oc.delete(t)}catch{}}
  function M_e (line 9) | function M_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT...
  function AY (line 9) | function AY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:M_e(e,r)}
  function fY (line 9) | function fY(t,e,r){uY.stat(t,function(o,a){r(o,o?!1:AY(a,t,e))})}
  function U_e (line 9) | function U_e(t,e){return AY(uY.statSync(t),t,e)}
  function dY (line 9) | function dY(t,e,r){gY.stat(t,function(o,a){r(o,o?!1:mY(a,e))})}
  function __e (line 9) | function __e(t,e){return mY(gY.statSync(t),e)}
  function mY (line 9) | function mY(t,e){return t.isFile()&&H_e(t,e)}
  function H_e (line 9) | function H_e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:pr...
  function JR (line 9) | function JR(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Pro...
  function q_e (line 9) | function q_e(t,e){try{return RD.sync(t,e||{})}catch(r){if(e&&e.ignoreErr...
  function FY (line 9) | function FY(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.op...
  function K_e (line 9) | function K_e(t){return FY(t)||FY(t,!0)}
  function z_e (line 9) | function z_e(t){return t=t.replace(ZR,"^$1"),t}
  function V_e (line 9) | function V_e(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.r...
  function Z_e (line 9) | function Z_e(t){let r=Buffer.alloc(150),o;try{o=eT.openSync(t,"r"),eT.re...
  function i8e (line 9) | function i8e(t){t.file=qY(t);let e=t.file&&e8e(t.file);return e?(t.args....
  function s8e (line 9) | function s8e(t){if(!t8e)return t;let e=i8e(t),r=!r8e.test(e);if(t.option...
  function o8e (line 9) | function o8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[]...
  function rT (line 9) | function rT(t,e){return Object.assign(new Error(`${e} ${t.command} ENOEN...
  function a8e (line 9) | function a8e(t,e){if(!tT)return;let r=t.emit;t.emit=function(o,a){if(o==...
  function WY (line 9) | function WY(t,e){return tT&&t===1&&!e.file?rT(e.original,"spawn"):null}
  function l8e (line 9) | function l8e(t,e){return tT&&t===1&&!e.file?rT(e.original,"spawnSync"):n...
  function JY (line 9) | function JY(t,e,r){let o=nT(t,e,r),a=VY.spawn(o.command,o.args,o.options...
  function c8e (line 9) | function c8e(t,e,r){let o=nT(t,e,r),a=VY.spawnSync(o.command,o.args,o.op...
  function u8e (line 9) | function u8e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
  function Yg (line 9) | function Yg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
  function o (line 9) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
  function a (line 9) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
  function n (line 9) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
  function u (line 9) | function u(h){return r[h.type](h)}
  function A (line 9) | function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=...
  function p (line 9) | function p(h){return h?'"'+a(h)+'"':"end of input"}
  function A8e (line 9) | function A8e(t,e){e=e!==void 0?e:{};var r={},o={Start:gg},a=gg,n=functio...
  function LD (line 12) | function LD(t,e={isGlobPattern:()=>!1}){try{return(0,$Y.parse)(t,e)}catc...
  function cy (line 12) | function cy(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a...
  function ND (line 12) | function ND(t){return`${uy(t.chain)}${t.then?` ${oT(t.then)}`:""}`}
  function oT (line 12) | function oT(t){return`${t.type} ${ND(t.line)}`}
  function uy (line 12) | function uy(t){return`${lT(t)}${t.then?` ${aT(t.then)}`:""}`}
  function aT (line 12) | function aT(t){return`${t.type} ${uy(t.chain)}`}
  function lT (line 12) | function lT(t){switch(t.type){case"command":return`${t.envs.length>0?`${...
  function TD (line 12) | function TD(t){return`${t.name}=${t.args[0]?Wg(t.args[0]):""}`}
  function cT (line 12) | function cT(t){switch(t.type){case"redirection":return Vw(t);case"argume...
  function Vw (line 12) | function Vw(t){return`${t.subtype} ${t.args.map(e=>Wg(e)).join(" ")}`}
  function Wg (line 12) | function Wg(t){return t.segments.map(e=>uT(e)).join("")}
  function uT (line 12) | function uT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?"''":o.match(/[()}<...
  function OD (line 12) | function OD(t){let e=a=>{switch(a){case"addition":return"+";case"subtrac...
  function h8e (line 13) | function h8e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
  function Kg (line 13) | function Kg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
  function o (line 13) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
  function a (line 13) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
  function n (line 13) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
  function u (line 13) | function u(h){return r[h.type](h)}
  function A (line 13) | function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=...
  function p (line 13) | function p(h){return h?'"'+a(h)+'"':"end of input"}
  function g8e (line 13) | function g8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:ke},a=ke,n="/...
  function MD (line 13) | function MD(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The...
  function UD (line 13) | function UD(t){let e="";return t.from&&(e+=t.from.fullName,t.from.descri...
  function aW (line 13) | function aW(t){return typeof t>"u"||t===null}
  function d8e (line 13) | function d8e(t){return typeof t=="object"&&t!==null}
  function m8e (line 13) | function m8e(t){return Array.isArray(t)?t:aW(t)?[]:[t]}
  function y8e (line 13) | function y8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r...
  function E8e (line 13) | function E8e(t,e){var r="",o;for(o=0;o<e;o+=1)r+=t;return r}
  function C8e (line 13) | function C8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}
  function Jw (line 13) | function Jw(t,e){Error.call(this),this.name="YAMLException",this.reason=...
  function AT (line 13) | function AT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.li...
  function B8e (line 17) | function B8e(t){var e={};return t!==null&&Object.keys(t).forEach(functio...
  function v8e (line 17) | function v8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(w8e.i...
  function fT (line 17) | function fT(t,e,r){var o=[];return t.include.forEach(function(a){r=fT(a,...
  function P8e (line 17) | function P8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;...
  function fy (line 17) | function fy(t){this.include=t.include||[],this.implicit=t.implicit||[],t...
  function F8e (line 17) | function F8e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~...
  function R8e (line 17) | function R8e(){return null}
  function T8e (line 17) | function T8e(t){return t===null}
  function N8e (line 17) | function N8e(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="...
  function O8e (line 17) | function O8e(t){return t==="true"||t==="True"||t==="TRUE"}
  function M8e (line 17) | function M8e(t){return Object.prototype.toString.call(t)==="[object Bool...
  function H8e (line 17) | function H8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}
  function q8e (line 17) | function q8e(t){return 48<=t&&t<=55}
  function G8e (line 17) | function G8e(t){return 48<=t&&t<=57}
  function j8e (line 17) | function j8e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)ret...
  function Y8e (line 17) | function Y8e(t){var e=t,r=1,o,a,n=[];return e.indexOf("_")!==-1&&(e=e.re...
  function W8e (line 17) | function W8e(t){return Object.prototype.toString.call(t)==="[object Numb...
  function V8e (line 17) | function V8e(t){return!(t===null||!z8e.test(t)||t[t.length-1]==="_")}
  function J8e (line 17) | function J8e(t){var e,r,o,a;return e=t.replace(/_/g,"").toLowerCase(),r=...
  function Z8e (line 17) | function Z8e(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".na...
  function $8e (line 17) | function $8e(t){return Object.prototype.toString.call(t)==="[object Numb...
  function nHe (line 17) | function nHe(t){return t===null?!1:TW.exec(t)!==null||LW.exec(t)!==null}
  function iHe (line 17) | function iHe(t){var e,r,o,a,n,u,A,p=0,h=null,E,I,v;if(e=TW.exec(t),e===n...
  function sHe (line 17) | function sHe(t){return t.toISOString()}
  function aHe (line 17) | function aHe(t){return t==="<<"||t===null}
  function cHe (line 18) | function cHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=gT;for(r=0...
  function uHe (line 18) | function uHe(t){var e,r,o=t.replace(/[\r\n=]/g,""),a=o.length,n=gT,u=0,A...
  function AHe (line 18) | function AHe(t){var e="",r=0,o,a,n=t.length,u=gT;for(o=0;o<n;o++)o%3===0...
  function fHe (line 18) | function fHe(t){return Xg&&Xg.isBuffer(t)}
  function dHe (line 18) | function dHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A....
  function mHe (line 18) | function mHe(t){return t!==null?t:[]}
  function CHe (line 18) | function CHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u...
  function wHe (line 18) | function wHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u...
  function vHe (line 18) | function vHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(BHe.call(r,...
  function DHe (line 18) | function DHe(t){return t!==null?t:{}}
  function bHe (line 18) | function bHe(){return!0}
  function xHe (line 18) | function xHe(){}
  function kHe (line 18) | function kHe(){return""}
  function QHe (line 18) | function QHe(t){return typeof t>"u"}
  function RHe (line 18) | function RHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)...
  function THe (line 18) | function THe(t){var e=t,r=/\/([gim]*)$/.exec(t),o="";return e[0]==="/"&&...
  function LHe (line 18) | function LHe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multi...
  function NHe (line 18) | function NHe(t){return Object.prototype.toString.call(t)==="[object RegE...
  function MHe (line 18) | function MHe(t){if(t===null)return!1;try{var e="("+t+")",r=qD.parse(e,{r...
  function UHe (line 18) | function UHe(t){var e="("+t+")",r=qD.parse(e,{range:!0}),o=[],a;if(r.typ...
  function _He (line 18) | function _He(t){return t.toString()}
  function HHe (line 18) | function HHe(t){return Object.prototype.toString.call(t)==="[object Func...
  function oK (line 18) | function oK(t){return Object.prototype.toString.call(t)}
  function qu (line 18) | function qu(t){return t===10||t===13}
  function $g (line 18) | function $g(t){return t===9||t===32}
  function Ia (line 18) | function Ia(t){return t===9||t===32||t===10||t===13}
  function hy (line 18) | function hy(t){return t===44||t===91||t===93||t===123||t===125}
  function zHe (line 18) | function zHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-9...
  function VHe (line 18) | function VHe(t){return t===120?2:t===117?4:t===85?8:0}
  function JHe (line 18) | function JHe(t){return 48<=t&&t<=57?t-48:-1}
  function aK (line 18) | function aK(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t==...
  function XHe (line 19) | function XHe(t){return t<=65535?String.fromCharCode(t):String.fromCharCo...
  function ZHe (line 19) | function ZHe(t,e){this.input=t,this.filename=e.filename||null,this.schem...
  function EK (line 19) | function EK(t,e){return new AK(e,new qHe(t.filename,t.input,t.position,t...
  function Sr (line 19) | function Sr(t,e){throw EK(t,e)}
  function YD (line 19) | function YD(t,e){t.onWarning&&t.onWarning.call(null,EK(t,e))}
  function Yp (line 19) | function Yp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a...
  function cK (line 19) | function cK(t,e,r,o){var a,n,u,A;for(yf.isObject(r)||Sr(t,"cannot merge ...
  function gy (line 19) | function gy(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.pro...
  function mT (line 19) | function mT(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position+...
  function Wi (line 19) | function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){...
  function WD (line 19) | function WD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r==...
  function yT (line 19) | function yT(t,e){e===1?t.result+=" ":e>1&&(t.result+=yf.repeat(`
  function $He (line 20) | function $He(t,e,r){var o,a,n,u,A,p,h,E,I=t.kind,v=t.result,x;if(x=t.inp...
  function e6e (line 20) | function e6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)r...
  function t6e (line 20) | function t6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!...
  function r6e (line 20) | function r6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,E,I,v={},x,C,R,N...
  function n6e (line 20) | function n6e(t,e){var r,o,a=dT,n=!1,u=!1,A=e,p=0,h=!1,E,I;if(I=t.input.c...
  function uK (line 26) | function uK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==n...
  function i6e (line 26) | function i6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},E={},I=null,v=nu...
  function s6e (line 26) | function s6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position...
  function o6e (line 26) | function o6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)retur...
  function a6e (line 26) | function a6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)ret...
  function dy (line 26) | function dy(t,e,r,o,a){var n,u,A,p=1,h=!1,E=!1,I,v,x,C,R;if(t.listener!=...
  function l6e (line 26) | function l6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.check...
  function CK (line 26) | function CK(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.lengt...
  function wK (line 27) | function wK(t,e,r){e!==null&&typeof e=="object"&&typeof r>"u"&&(r=e,e=nu...
  function IK (line 27) | function IK(t,e){var r=CK(t,e);if(r.length!==0){if(r.length===1)return r...
  function c6e (line 27) | function c6e(t,e,r){return typeof e=="object"&&e!==null&&typeof r>"u"&&(...
  function u6e (line 27) | function u6e(t,e){return IK(t,yf.extend({schema:fK},e))}
  function k6e (line 27) | function k6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Obje...
  function vK (line 27) | function vK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r="x",...
  function Q6e (line 27) | function Q6e(t){this.schema=t.schema||A6e,this.indent=Math.max(1,t.inden...
  function DK (line 27) | function DK(t,e){for(var r=eI.repeat(" ",e),o=0,a=-1,n="",u,A=t.length;o...
  function ET (line 29) | function ET(t,e){return`
  function F6e (line 30) | function F6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if...
  function wT (line 30) | function wT(t){return t===g6e||t===p6e}
  function my (line 30) | function my(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==823...
  function R6e (line 30) | function R6e(t){return my(t)&&!wT(t)&&t!==65279&&t!==h6e&&t!==$w}
  function PK (line 30) | function PK(t,e){return my(t)&&t!==65279&&t!==TK&&t!==NK&&t!==OK&&t!==MK...
  function T6e (line 30) | function T6e(t){return my(t)&&t!==65279&&!wT(t)&&t!==I6e&&t!==D6e&&t!==L...
  function _K (line 30) | function _K(t){var e=/^\n* /;return e.test(t)}
  function L6e (line 30) | function L6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,E=o!==-1,I=-1,v=T6e(t.charCo...
  function N6e (line 30) | function N6e(t,e,r,o){t.dump=function(){if(e.length===0)return"''";if(!t...
  function SK (line 30) | function SK(t,e){var r=_K(t)?String(e):"",o=t[t.length-1]===`
  function bK (line 34) | function bK(t){return t[t.length-1]===`
  function O6e (line 35) | function O6e(t,e){for(var r=/(\n+)([^\n]*)/g,o=function(){var h=t.indexOf(`
  function xK (line 38) | function xK(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,o,a=0...
  function M6e (line 41) | function M6e(t){for(var e="",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt...
  function U6e (line 41) | function U6e(t,e,r){var o="",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)ed(...
  function _6e (line 41) | function _6e(t,e,r,o){var a="",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)e...
  function H6e (line 41) | function H6e(t,e,r){var o="",a=t.tag,n=Object.keys(r),u,A,p,h,E;for(u=0,...
  function q6e (line 41) | function q6e(t,e,r,o){var a="",n=t.tag,u=Object.keys(r),A,p,h,E,I,v;if(t...
  function kK (line 41) | function kK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTyp...
  function ed (line 41) | function ed(t,e,r,o,a,n){t.tag=null,t.dump=r,kK(t,r,!1)||kK(t,r,!0);var ...
  function G6e (line 41) | function G6e(t,e){var r=[],o=[],a,n;for(CT(t,r,o),a=0,n=o.length;a<n;a+=...
  function CT (line 41) | function CT(t,e,r){var o,a,n;if(t!==null&&typeof t=="object")if(a=e.inde...
  function YK (line 41) | function YK(t,e){e=e||{};var r=new Q6e(e);return r.noRefs||G6e(t,r),ed(r...
  function j6e (line 42) | function j6e(t,e){return YK(t,eI.extend({schema:f6e},e))}
  function VD (line 42) | function VD(t){return function(){throw new Error("Function "+t+" is depr...
  function W6e (line 42) | function W6e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
  function td (line 42) | function td(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
  function o (line 42) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
  function a (line 42) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
  function n (line 42) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
  function u (line 42) | function u(h){return r[h.type](h)}
  function A (line 42) | function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=...
  function p (line 42) | function p(h){return h?'"'+a(h)+'"':"end of input"}
  function K6e (line 42) | function K6e(t,e){e=e!==void 0?e:{};var r={},o={Start:hu},a=hu,n=functio...
  function ez (line 51) | function ez(t){return t.match(z6e)?t:JSON.stringify(t)}
  function rz (line 51) | function rz(t){return typeof t>"u"?!0:typeof t=="object"&&t!==null&&!Arr...
  function BT (line 51) | function BT(t,e,r){if(t===null)return`null
  function Ba (line 61) | function Ba(t){try{let e=BT(t,0,!1);return e!==`
  function V6e (line 62) | function V6e(t){return t.endsWith(`
  function X6e (line 64) | function X6e(t){if(J6e.test(t))return V6e(t);let e=(0,XD.safeLoad)(t,{sc...
  function Ki (line 64) | function Ki(t){return X6e(t)}
  method constructor (line 64) | constructor(e){this.data=e}
  function az (line 64) | function az(t){return typeof t=="string"?!!Gu[t]:Object.keys(t).every(fu...
  method constructor (line 64) | constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageEr...
  method constructor (line 64) | constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanio...
  method constructor (line 75) | constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type...
  function eqe (line 80) | function eqe(t){let e=t.split(`
  function Do (line 82) | function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,`
  function Ko (line 90) | function Ko(t){return{...t,[nI]:!0}}
  function ju (line 90) | function ju(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&...
  function rP (line 90) | function rP(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(...
  function iI (line 90) | function iI(t,e){return e.length===1?new it(`${t}${rP(e[0],{mergeName:!0...
  function id (line 92) | function id(t,e,r){if(typeof r>"u")return e;let o=[],a=[],n=A=>{let p=e;...
  function qn (line 92) | function qn(t){return t===null?"null":t===void 0?"undefined":t===""?"an ...
  function Ey (line 92) | function Ey(t,e){if(t.length===0)return"nothing";if(t.length===1)return ...
  function Kp (line 92) | function Kp(t,e){var r,o,a;return typeof e=="number"?`${(r=t?.p)!==null&...
  function QT (line 92) | function QT(t,e,r){return t===1?e:r}
  function pr (line 92) | function pr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}
  function oqe (line 92) | function oqe(t,e){return r=>{t[e]=r}}
  function Wu (line 92) | function Wu(t,e){return r=>{let o=t[e];return t[e]=r,Wu(t,e).bind(null,o)}}
  function sI (line 92) | function sI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}
  function FT (line 92) | function FT(){return Hr({test:(t,e)=>!0})}
  function pz (line 92) | function pz(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${qn(t)} (got...
  function Cy (line 92) | function Cy(){return Hr({test:(t,e)=>typeof t!="string"?pr(e,`Expected a...
  function Ks (line 92) | function Ks(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>ty...
  function lqe (line 92) | function lqe(){return Hr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(...
  function RT (line 92) | function RT(){return Hr({test:(t,e)=>{var r;if(typeof t!="number"){if(ty...
  function cqe (line 92) | function cqe(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>"u"...
  function uqe (line 92) | function uqe(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if...
  function nP (line 92) | function nP(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if...
  function Aqe (line 92) | function Aqe(t,{delimiter:e}={}){let r=nP(t,{delimiter:e});return Hr({te...
  function fqe (line 92) | function fqe(t,e){let r=nP(iP([t,e])),o=sP(e,{keys:t});return Hr({test:(...
  function iP (line 92) | function iP(t,{delimiter:e}={}){let r=dz(t.length);return Hr({test:(o,a)...
  function sP (line 92) | function sP(t,{keys:e=null}={}){let r=nP(iP([e??Cy(),t]));return Hr({tes...
  function pqe (line 92) | function pqe(t,e={}){return sP(t,e)}
  function hz (line 92) | function hz(t,{extra:e=null}={}){let r=Object.keys(t),o=Hr({test:(a,n)=>...
  function hqe (line 92) | function hqe(t){return hz(t,{extra:sP(FT())})}
  function gz (line 92) | function gz(t){return()=>t}
  function Hr (line 92) | function Hr({test:t}){return gz(t)()}
  function dqe (line 92) | function dqe(t,e){if(!e(t))throw new zp}
  function mqe (line 92) | function mqe(t,e){let r=[];if(!e(t,{errors:r}))throw new zp({errors:r})}
  function yqe (line 92) | function yqe(t,e){}
  function Eqe (line 92) | function Eqe(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if...
  function Cqe (line 92) | function Cqe(t,e){let r=iP(t);return(...o)=>{if(!r(o))throw new zp;retur...
  function wqe (line 92) | function wqe(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to ...
  function Iqe (line 92) | function Iqe(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to ...
  function dz (line 92) | function dz(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to hav...
  function Bqe (line 92) | function Bqe({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set...
  function vqe (line 92) | function vqe(){return Hr({test:(t,e)=>t<=0?!0:pr(e,`Expected to be negat...
  function Dqe (line 92) | function Dqe(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be posit...
  function LT (line 92) | function LT(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at le...
  function Pqe (line 92) | function Pqe(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at m...
  function Sqe (line 92) | function Sqe(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to...
  function bqe (line 92) | function bqe(t,e){return Hr({test:(r,o)=>r>=t&&r<e?!0:pr(o,`Expected to ...
  function NT (line 92) | function NT({unsafe:t=!1}={}){return Hr({test:(e,r)=>e!==Math.round(e)?p...
  function oI (line 92) | function oI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to mat...
  function xqe (line 92) | function xqe(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected...
  function kqe (line 92) | function kqe(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected...
  function Qqe (line 92) | function Qqe(){return Hr({test:(t,e)=>sqe.test(t)?!0:pr(e,`Expected to b...
  function Fqe (line 92) | function Fqe(){return Hr({test:(t,e)=>fz.test(t)?!0:pr(e,`Expected to be...
  function Rqe (line 92) | function Rqe({alpha:t=!1}){return Hr({test:(e,r)=>(t?rqe.test(e):nqe.tes...
  function Tqe (line 92) | function Tqe(){return Hr({test:(t,e)=>iqe.test(t)?!0:pr(e,`Expected to b...
  function Lqe (line 92) | function Lqe(t=FT()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}c...
  function oP (line 92) | function oP(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,...
  function aI (line 92) | function aI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return oP(t,r)}
  function Nqe (line 92) | function Nqe(t){return Hr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}
  function Oqe (line 92) | function Oqe(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}
  function Mqe (line 92) | function Mqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r...
  function OT (line 92) | function OT(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!...
  function Uqe (line 92) | function Uqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r...
  function _qe (line 92) | function _qe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r...
  function cI (line 92) | function cI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==voi...
  method constructor (line 92) | constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=`
  method constructor (line 94) | constructor(){this.help=!1}
  method Usage (line 94) | static Usage(e){return e}
  method catch (line 94) | async catch(e){throw e}
  method validateAndExecute (line 94) | async validateAndExecute(){let r=this.constructor.schema;if(Array.isArra...
  function va (line 94) | function va(t){ST&&console.log(t)}
  function yz (line 94) | function yz(){let t={nodes:[]};for(let e=0;e<cn.CustomNode;++e)t.nodes.p...
  function qqe (line 94) | function qqe(t){let e=yz(),r=[],o=e.nodes.length;for(let a of t){r.push(...
  function Mc (line 94) | function Mc(t,e){return t.nodes.push(e),t.nodes.length-1}
  function Gqe (line 94) | function Gqe(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t....
  function jqe (line 94) | function jqe(t,{prefix:e=""}={}){if(ST){va(`${e}Nodes are:`);for(let r=0...
  function Yqe (line 94) | function Yqe(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=...
  function Wqe (line 94) | function Wqe(t,e,{endToken:r=Hn.EndOfInput}={}){let o=Yqe(t,[...e,r]);re...
  function Kqe (line 94) | function Kqe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path....
  function zqe (line 94) | function zqe(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v...
  function Vqe (line 94) | function Vqe(t){let e=[],r=[];for(let o of t)o.selectedIndex===nd?r.push...
  function Ez (line 94) | function Ez(t,e,...r){return e===void 0?Array.from(t):Ez(t.filter((o,a)=...
  function el (line 94) | function el(){return{dynamics:[],shortcuts:[],statics:{}}}
  function Cz (line 94) | function Cz(t){return t===cn.SuccessNode||t===cn.ErrorNode}
  function MT (line 94) | function MT(t,e=0){return{to:Cz(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn...
  function Jqe (line 94) | function Jqe(t,e=0){let r=el();for(let[o,a]of t.dynamics)r.dynamics.push...
  function Ss (line 94) | function Ss(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}
  function wy (line 94) | function wy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}
  function Vo (line 94) | function Vo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e]....
  function aP (line 94) | function aP(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,...
  method constructor (line 94) | constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trai...
  method addPath (line 94) | addPath(e){this.paths.push(e)}
  method setArity (line 94) | setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,ex...
  method addPositional (line 94) | addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra==...
  method addRest (line 94) | addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===tl)throw n...
  method addProxy (line 94) | addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}
  method addOption (line 94) | addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,all...
  method setContext (line 94) | setContext(e){this.context=e}
  method usage (line 94) | usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryN...
  method compile (line 94) | compile(){if(typeof this.context>"u")throw new Error("Assertion failed: ...
  method registerOptions (line 94) | registerOptions(e,r){Ss(e,r,["isOption","--"],r,"inhibateOptions"),Ss(e,...
  method constructor (line 94) | constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binaryN...
  method build (line 94) | static build(e,r={}){return new Iy(r).commands(e).compile()}
  method getBuilderByIndex (line 94) | getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(...
  method commands (line 94) | commands(e){for(let r of e)r(this.command());return this}
  method command (line 94) | command(){let e=new _T(this.builders.length,this.opts);return this.build...
  method compile (line 94) | compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,contex...
  function Iz (line 94) | function Iz(){return cP.default&&"getColorDepth"in cP.default.WriteStrea...
  function Bz (line 94) | function Bz(t){let e=wz;if(typeof e>"u"){if(t.stdout===process.stdout&&t...
  method constructor (line 94) | constructor(e){super(),this.contexts=e,this.commands=[]}
  method from (line 94) | static from(e,r){let o=new By(r);o.path=e.path;for(let a of e.options)sw...
  method execute (line 94) | async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index...
  function bz (line 98) | async function bz(...t){let{resolvedOptions:e,resolvedCommandClasses:r,r...
  function xz (line 98) | async function xz(...t){let{resolvedOptions:e,resolvedCommandClasses:r,r...
  function kz (line 98) | function kz(t){let e,r,o,a;switch(typeof process<"u"&&typeof process.arg...
  function Sz (line 98) | function Sz(t){return t()}
  method constructor (line 98) | constructor({binaryLabel:e,binaryName:r="...",binaryVersion:o,enableCapt...
  method from (line 98) | static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n o...
  method register (line 98) | register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeo...
  method process (line 98) | process(e,r){let{input:o,context:a,partial:n}=typeof e=="object"&&Array....
  method run (line 98) | async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.ena...
  method runExit (line 98) | async runExit(e,r){process.exitCode=await this.run(e,r)}
  method definition (line 98) | definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:o}=thi...
  method definitions (line 98) | definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations....
  method usage (line 98) | usage(e=null,{colored:r,detailed:o=!1,prefix:a="$ "}={}){var n;if(e===nu...
  method error (line 124) | error(e,r){var o,{colored:a,command:n=(o=e[Pz])!==null&&o!==void 0?o:nul...
  method format (line 127) | format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as....
  method getUsageByRegistration (line 127) | getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>...
  method getUsageByIndex (line 127) | getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}
  method execute (line 127) | async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.def...
  method execute (line 128) | async execute(){this.context.stdout.write(this.cli.usage())}
  function uP (line 128) | function uP(t={}){return Ko({definition(e,r){var o;e.addProxy({name:(o=t...
  method constructor (line 128) | constructor(){super(...arguments),this.args=uP()}
  method execute (line 128) | async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.pro...
  method execute (line 129) | async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVer...
  function Oz (line 130) | function Oz(t,e,r){let[o,a]=ju(e,r??{}),{arity:n=1}=a,u=t.split(","),A=n...
  function Uz (line 130) | function Uz(t,e,r){let[o,a]=ju(e,r??{}),n=t.split(","),u=new Set(n);retu...
  function Hz (line 130) | function Hz(t,e,r){let[o,a]=ju(e,r??{}),n=t.split(","),u=new Set(n);retu...
  function Gz (line 130) | function Gz(t={}){return Ko({definition(e,r){var o;e.addRest({name:(o=t....
  function Zqe (line 130) | function Zqe(t,e,r){let[o,a]=ju(e,r??{}),{arity:n=1}=a,u=t.split(","),A=...
  function $qe (line 130) | function $qe(t={}){let{required:e=!0}=t;return Ko({definition(r,o){var a...
  function Yz (line 130) | function Yz(t,...e){return typeof t=="string"?Zqe(t,...e):$qe(t)}
  function sGe (line 130) | function sGe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,`
  function oGe (line 132) | function oGe(t){let e=Xz(t),r=bs.configDotenv({path:e});if(!r.parsed)thr...
  function aGe (line 132) | function aGe(t){console.log(`[dotenv@${YT}][INFO] ${t}`)}
  function lGe (line 132) | function lGe(t){console.log(`[dotenv@${YT}][WARN] ${t}`)}
  function GT (line 132) | function GT(t){console.log(`[dotenv@${YT}][DEBUG] ${t}`)}
  function Jz (line 132) | function Jz(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KE...
  function cGe (line 132) | function cGe(t,e){let r;try{r=new URL(e)}catch(A){throw A.code==="ERR_IN...
  function Xz (line 132) | function Xz(t){let e=jT.resolve(process.cwd(),".env");return t&&t.path&&...
  function uGe (line 132) | function uGe(t){return t[0]==="~"?jT.join(tGe.homedir(),t.slice(1)):t}
  function AGe (line 132) | function AGe(t){aGe("Loading env from encrypted .env.vault");let e=bs._p...
  function fGe (line 132) | function fGe(t){let e=jT.resolve(process.cwd(),".env"),r="utf8",o=Boolea...
  function pGe (line 132) | function pGe(t){let e=Xz(t);return Jz(t).length===0?bs.configDotenv(t):V...
  function hGe (line 132) | function hGe(t,e){let r=Buffer.from(e.slice(-64),"hex"),o=Buffer.from(t,...
  function gGe (line 132) | function gGe(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(r&&r.override...
  function Ku (line 132) | function Ku(t){return`YN${t.toString(10).padStart(4,"0")}`}
  function AP (line 132) | function AP(t){let e=Number(t.slice(2));if(typeof wr[e]>"u")throw new Er...
  method constructor (line 132) | constructor(e,r){if(r=LGe(r),e instanceof rl){if(e.loose===!!r.loose&&e....
  method format (line 132) | format(){return this.version=`${this.major}.${this.minor}.${this.patch}`...
  method toString (line 132) | toString(){return this.version}
  method compare (line 132) | compare(e){if(hP("SemVer.compare",this.version,this.options,e),!(e insta...
  method compareMain (line 132) | compareMain(e){return e instanceof rl||(e=new rl(e,this.options)),Dy(thi...
  method comparePre (line 132) | comparePre(e){if(e instanceof rl||(e=new rl(e,this.options)),this.prerel...
  method compareBuild (line 132) | compareBuild(e){e instanceof rl||(e=new rl(e,this.options));let r=0;do{l...
  method inc (line 132) | inc(e,r,o){switch(e){case"premajor":this.prerelease.length=0,this.patch=...
  function Cn (line 132) | function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),e.tail=null,e.h...
  function xje (line 132) | function xje(t,e,r){var o=e===t.head?new ad(r,null,e,t):new ad(r,e,e.nex...
  function kje (line 132) | function kje(t,e){t.tail=new ad(e,t.tail,null,t),t.head||(t.head=t.tail)...
  function Qje (line 132) | function Qje(t,e){t.head=new ad(e,null,t.head,t),t.tail||(t.tail=t.head)...
  function ad (line 132) | function ad(t,e,r,o){if(!(this instanceof ad))return new ad(t,e,r,o);thi...
  method constructor (line 132) | constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(type...
  method max (line 132) | set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a...
  method max (line 132) | get max(){return this[ld]}
  method allowStale (line 132) | set allowStale(e){this[EI]=!!e}
  method allowStale (line 132) | get allowStale(){return this[EI]}
  method maxAge (line 132) | set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be ...
  method maxAge (line 132) | get maxAge(){return this[cd]}
  method lengthCalculator (line 132) | set lengthCalculator(e){typeof e!="function"&&(e=$T),e!==this[Py]&&(this...
  method lengthCalculator (line 132) | get lengthCalculator(){return this[Py]}
  method length (line 132) | get length(){return this[Bf]}
  method itemCount (line 132) | get itemCount(){return this[xs].length}
  method rforEach (line 132) | rforEach(e,r){r=r||this;for(let o=this[xs].tail;o!==null;){let a=o.prev;...
  method forEach (line 132) | forEach(e,r){r=r||this;for(let o=this[xs].head;o!==null;){let a=o.next;i...
  method keys (line 132) | keys(){return this[xs].toArray().map(e=>e.key)}
  method values (line 132) | values(){return this[xs].toArray().map(e=>e.value)}
  method reset (line 132) | reset(){this[If]&&this[xs]&&this[xs].length&&this[xs].forEach(e=>this[If...
  method dump (line 132) | dump(){return this[xs].map(e=>BP(this,e)?!1:{k:e.key,v:e.value,e:e.now+(...
  method dumpLru (line 132) | dumpLru(){return this[xs]}
  method set (line 132) | set(e,r,o){if(o=o||this[cd],o&&typeof o!="number")throw new TypeError("m...
  method has (line 132) | has(e){if(!this[Uc].has(e))return!1;let r=this[Uc].get(e).value;return!B...
  method get (line 132) | get(e){return eL(this,e,!0)}
  method peek (line 132) | peek(e){return eL(this,e,!1)}
  method pop (line 132) | pop(){let e=this[xs].tail;return e?(Sy(this,e),e.value):null}
  method del (line 132) | del(e){Sy(this,this[Uc].get(e))}
  method load (line 132) | load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let...
  method prune (line 132) | prune(){this[Uc].forEach((e,r)=>eL(this,r,!1))}
  method constructor (line 132) | constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,...
  method constructor (line 132) | constructor(e,r){if(r=Tje(r),e instanceof ud)return e.loose===!!r.loose&...
  method format (line 132) | format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||"...
  method toString (line 132) | toString(){return this.range}
  method parseRange (line 132) | parseRange(e){let o=((this.options.includePrerelease&&Uje)|(this.options...
  method intersects (line 132) | intersects(e,r){if(!(e instanceof ud))throw new TypeError("a Range is re...
  method test (line 132) | test(e){if(!e)return!1;if(typeof e=="string")try{e=new Lje(e,this.option...
  method ANY (line 132) | static get ANY(){return wI}
  method constructor (line 132) | constructor(e,r){if(r=fJ(r),e instanceof by){if(e.loose===!!r.loose)retu...
  method parse (line 132) | parse(e){let r=this.options.loose?pJ[hJ.COMPARATORLOOSE]:pJ[hJ.COMPARATO...
  method toString (line 132) | toString(){return this.value}
  method test (line 132) | test(e){if(sL("Comparator.test",e,this.options.loose),this.semver===wI||...
  method intersects (line 132) | intersects(e,r){if(!(e instanceof by))throw new TypeError("a Comparator ...
  function h5e (line 132) | function h5e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
  function Ad (line 132) | function Ad(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
  function o (line 132) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
  function a (line 132) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
  function n (line 132) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
  function u (line 132) | function u(h){return r[h.type](h)}
  function A (line 132) | function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=...
  function p (line 132) | function p(h){return h?'"'+a(h)+'"':"end of input"}
  function g5e (line 132) | function g5e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n="|",...
  function m5e (line 134) | function m5e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}
  function y5e (line 134) | function y5e(){let t={},e=Object.keys(PP);for(let r=e.length,o=0;o<r;o++...
  function E5e (line 134) | function E5e(t){let e=y5e(),r=[t];for(e[t].distance=0;r.length;){let o=r...
  function C5e (line 134) | function C5e(t,e){return function(r){return e(t(r))}}
  function w5e (line 134) | function w5e(t,e){let r=[e[t].parent,t],o=PP[e[t].parent][t],a=e[t].pare...
  function v5e (line 134) | function v5e(t){let e=function(...r){let o=r[0];return o==null?o:(o.leng...
  function D5e (line 134) | function D5e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.le...
  function P5e (line 134) | function P5e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2...
  function hL (line 134) | function hL(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t...
  function gL (line 134) | function gL(t,e){if(Jp===0)return 0;if(Ul("color=16m")||Ul("color=full")...
  function b5e (line 134) | function b5e(t){let e=gL(t,t&&t.isTTY);return hL(e)}
  function IX (line 138) | function IX(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5|...
  function L5e (line 138) | function L5e(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o...
  function N5e (line 138) | function N5e(t){CX.lastIndex=0;let e=[],r;for(;(r=CX.exec(t))!==null;){l...
  function wX (line 138) | function wX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a...
  method constructor (line 138) | constructor(e){return PX(e)}
  function bP (line 138) | function bP(t){return PX(t)}
  method get (line 138) | get(){let r=xP(this,wL(e.open,e.close,this._styler),this._isEmpty);retur...
  method get (line 138) | get(){let t=xP(this,this._styler,!0);return Object.defineProperty(this,"...
  method get (line 138) | get(){let{level:e}=this;return function(...r){let o=wL(PI.color[DX[e]][t...
  method get (line 138) | get(){let{level:r}=this;return function(...o){let a=wL(PI.bgColor[DX[r]]...
  method get (line 138) | get(){return this._generator.level}
  method set (line 138) | set(t){this._generator.level=t}
  function G5e (line 139) | function G5e(t,e,r){let o=BL(t,e,"-",!1,r)||[],a=BL(e,t,"",!1,r)||[],n=B...
  function j5e (line 139) | function j5e(t,e){let r=1,o=1,a=NX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)...
  function Y5e (line 139) | function Y5e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=W...
  function TX (line 139) | function TX(t,e,r,o){let a=j5e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p+...
  function BL (line 139) | function BL(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!LX(...
  function W5e (line 139) | function W5e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]...
  function K5e (line 139) | function K5e(t,e){return t>e?1:e>t?-1:0}
  function LX (line 139) | function LX(t,e,r){return t.some(o=>o[e]===r)}
  function NX (line 139) | function NX(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}
  function OX (line 139) | function OX(t,e){return t-t%Math.pow(10,e)}
  function MX (line 139) | function MX(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}
  function z5e (line 139) | function z5e(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}
  function UX (line 139) | function UX(t){return/^-?(0+)\d/.test(t)}
  function V5e (line 139) | function V5e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-Stri...
  method extglobChars (line 140) | extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t....
  method globChars (line 140) | globChars(t){return t===!0?T7e:gZ}
  function iYe (line 140) | function iYe(){this.__data__=[],this.size=0}
  function sYe (line 140) | function sYe(t,e){return t===e||t!==t&&e!==e}
  function aYe (line 140) | function aYe(t,e){for(var r=t.length;r--;)if(oYe(t[r][0],e))return r;ret...
  function AYe (line 140) | function AYe(t){var e=this.__data__,r=lYe(e,t);if(r<0)return!1;var o=e.l...
  function pYe (line 140) | function pYe(t){var e=this.__data__,r=fYe(e,t);return r<0?void 0:e[r][1]}
  function gYe (line 140) | function gYe(t){return hYe(this.__data__,t)>-1}
  function mYe (line 140) | function mYe(t,e){var r=this.__data__,o=dYe(r,t);return o<0?(++this.size...
  function Ny (line 140) | function Ny(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){va...
  function vYe (line 140) | function vYe(){this.__data__=new BYe,this.size=0}
  function DYe (line 140) | function DYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.siz...
  function PYe (line 140) | function PYe(t){return this.__data__.get(t)}
  function SYe (line 140) | function SYe(t){return this.__data__.has(t)}
  function NYe (line 140) | function NYe(t){var e=TYe.call(t,TI),r=t[TI];try{t[TI]=void 0;var o=!0}c...
  function UYe (line 140) | function UYe(t){return MYe.call(t)}
  function jYe (line 140) | function jYe(t){return t==null?t===void 0?GYe:qYe:d$&&d$ in Object(t)?_Y...
  function YYe (line 140) | function YYe(t){var e=typeof t;return t!=null&&(e=="object"||e=="functio...
  function ZYe (line 140) | function ZYe(t){if(!KYe(t))return!1;var e=WYe(t);return e==VYe||e==JYe||...
  function tWe (line 140) | function tWe(t){return!!I$&&I$ in t}
  function iWe (line 140) | function iWe(t){if(t!=null){try{return nWe.call(t)}catch{}try{return t+"...
  function dWe (line 140) | function dWe(t){if(!aWe(t)||oWe(t))return!1;var e=sWe(t)?gWe:uWe;return ...
  function mWe (line 140) | function mWe(t,e){return t?.[e]}
  function CWe (line 140) | function CWe(t,e){var r=EWe(t,e);return yWe(r)?r:void 0}
  function PWe (line 140) | function PWe(){this.__data__=R$?R$(null):{},this.size=0}
  function SWe (line 140) | function SWe(t){var e=this.has(t)&&delete this.__data__[t];return this.s...
  function FWe (line 140) | function FWe(t){var e=this.__data__;if(bWe){var r=e[t];return r===xWe?vo...
  function NWe (line 140) | function NWe(t){var e=this.__data__;return RWe?e[t]!==void 0:LWe.call(e,t)}
  function UWe (line 140) | function UWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,...
  function Oy (line 140) | function Oy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){va...
  function KWe (line 140) | function KWe(){this.size=0,this.__data__={hash:new W$,map:new(WWe||YWe),...
  function zWe (line 140) | function zWe(t){var e=typeof t;return e=="string"||e=="number"||e=="symb...
  function JWe (line 140) | function JWe(t,e){var r=t.__data__;return VWe(e)?r[typeof e=="string"?"s...
  function ZWe (line 140) | function ZWe(t){var e=XWe(this,t).delete(t);return this.size-=e?1:0,e}
  function eKe (line 140) | function eKe(t){return $We(this,t).get(t)}
  function rKe (line 140) | function rKe(t){return tKe(this,t).has(t)}
  function iKe (line 140) | function iKe(t,e){var r=nKe(this,t),o=r.size;return r.set(t,e),this.size...
  function My (line 140) | function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){va...
  function hKe (line 140) | function hKe(t,e){var r=this.__data__;if(r instanceof uKe){var o=r.__dat...
  function Uy (line 140) | function Uy(t){var e=this.__data__=new gKe(t);this.size=e.size}
  function IKe (line 140) | function IKe(t){return this.__data__.set(t,wKe),this}
  function BKe (line 140) | function BKe(t){return this.__data__.has(t)}
  function HP (line 140) | function HP(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new vKe;+...
  function SKe (line 140) | function SKe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t...
  function bKe (line 140) | function bKe(t,e){return t.has(e)}
  function TKe (line 140) | function TKe(t,e,r,o,a,n){var u=r&FKe,A=t.length,p=e.length;if(A!=p&&!(u...
  function OKe (line 140) | function OKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){...
  function MKe (line 140) | function MKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[...
  function rze (line 140) | function rze(t,e,r,o,a,n,u){switch(r){case tze:if(t.byteLength!=e.byteLe...
  function nze (line 140) | function nze(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];...
  function aze (line 140) | function aze(t,e,r){var o=e(t);return oze(t)?o:sze(o,r(t))}
  function lze (line 140) | function lze(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var...
  function cze (line 140) | function cze(){return[]}
  function gze (line 140) | function gze(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}
  function dze (line 140) | function dze(t){return t!=null&&typeof t=="object"}
  function Cze (line 140) | function Cze(t){return yze(t)&&mze(t)==Eze}
  function Dze (line 140) | function Dze(){return!1}
  function Rze (line 140) | function Rze(t,e){var r=typeof t;return e=e??Qze,!!e&&(r=="number"||r!="...
  function Lze (line 140) | function Lze(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Tze}
  function cVe (line 140) | function cVe(t){return Mze(t)&&Oze(t.length)&&!!ui[Nze(t)]}
  function uVe (line 140) | function uVe(t){return function(e){return t(e)}}
  function DVe (line 140) | function DVe(t,e){var r=EVe(t),o=!r&&yVe(t),a=!r&&!o&&CVe(t),n=!r&&!o&&!...
  function SVe (line 140) | function SVe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototy...
  function bVe (line 140) | function bVe(t,e){return function(r){return t(e(r))}}
  function LVe (line 140) | function LVe(t){if(!QVe(t))return FVe(t);var e=[];for(var r in Object(t)...
  function MVe (line 140) | function MVe(t){return t!=null&&OVe(t.length)&&!NVe(t)}
  function qVe (line 140) | function qVe(t){return HVe(t)?UVe(t):_Ve(t)}
  function WVe (line 140) | function WVe(t){return GVe(t,YVe,jVe)}
  function JVe (line 140) | function JVe(t,e,r,o,a,n){var u=r&KVe,A=mte(t),p=A.length,h=mte(e),E=h.l...
  function wJe (line 140) | function wJe(t,e,r,o,a,n){var u=Nte(t),A=Nte(e),p=u?Ute:Lte(t),h=A?Ute:L...
  function jte (line 140) | function jte(t,e,r,o,a){return t===e?!0:t==null||e==null||!Gte(t)&&!Gte(...
  function vJe (line 140) | function vJe(t,e){return BJe(t,e)}
  function SJe (line 140) | function SJe(t,e,r){e=="__proto__"&&Jte?Jte(t,e,{configurable:!0,enumera...
  function kJe (line 140) | function kJe(t,e,r){(r!==void 0&&!xJe(t[e],r)||r===void 0&&!(e in t))&&b...
  function QJe (line 140) | function QJe(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A...
  function NJe (line 140) | function NJe(t,e){if(e)return t.slice();var r=t.length,o=sre?sre(r):new ...
  function OJe (line 140) | function OJe(t){var e=new t.constructor(t.byteLength);return new are(e)....
  function UJe (line 140) | function UJe(t,e){var r=e?MJe(t.buffer):t.buffer;return new t.constructo...
  function _Je (line 140) | function _Je(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[...
  function t (line 140) | function t(){}
  function zJe (line 140) | function zJe(t){return typeof t.constructor=="function"&&!KJe(t)?YJe(WJe...
  function XJe (line 140) | function XJe(t){return JJe(t)&&VJe(t)}
  function oXe (line 140) | function oXe(t){if(!eXe(t)||ZJe(t)!=tXe)return!1;var e=$Je(t);if(e===nul...
  function aXe (line 140) | function aXe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="...
  function fXe (line 140) | function fXe(t,e,r){var o=t[e];(!(AXe.call(t,e)&&cXe(o,r))||r===void 0&&...
  function gXe (line 140) | function gXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;)...
  function dXe (line 140) | function dXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);ret...
  function IXe (line 140) | function IXe(t){if(!mXe(t))return EXe(t);var e=yXe(t),r=[];for(var o in ...
  function PXe (line 140) | function PXe(t){return DXe(t)?BXe(t,!0):vXe(t)}
  function xXe (line 140) | function xXe(t){return SXe(t,bXe(t))}
  function HXe (line 140) | function HXe(t,e,r,o,a,n,u){var A=Rre(t,r),p=Rre(e,r),h=u.get(p);if(h){k...
  function Nre (line 140) | function Nre(t,e,r,o,a){t!==e&&jXe(e,function(n,u){if(a||(a=new qXe),WXe...
  function VXe (line 140) | function VXe(t){return t}
  function JXe (line 140) | function JXe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:retu...
  function ZXe (line 140) | function ZXe(t,e,r){return e=qre(e===void 0?t.length-1:e,0),function(){f...
  function $Xe (line 140) | function $Xe(t){return function(){return t}}
  function oZe (line 140) | function oZe(t){var e=0,r=0;return function(){var o=sZe(),a=iZe-(o-r);if...
  function pZe (line 140) | function pZe(t,e){return fZe(AZe(t,e,uZe),t+"")}
  function yZe (line 140) | function yZe(t,e,r){if(!mZe(r))return!1;var o=typeof e;return(o=="number...
  function wZe (line 140) | function wZe(t){return EZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1...
  function DZe (line 140) | function DZe(t){return!!(Ane.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9...
  function rS (line 140) | function rS(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}
  function PZe (line 140) | function PZe(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}
  function SZe (line 140) | function SZe(t){}
  function EN (line 140) | function EN(t){throw new Error(`Assertion failed: Unexpected object '${t...
  function bZe (line 140) | function bZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(...
  function ol (line 140) | function ol(t,e){let r=[];for(let o of t){let a=e(o);a!==fne&&r.push(a)}...
  function KI (line 140) | function KI(t,e){for(let r of t){let o=e(r);if(o!==pne)return o}}
  function hN (line 140) | function hN(t){return typeof t=="object"&&t!==null}
  function _c (line 140) | async function _c(t){let e=await Promise.allSettled(t),r=[];for(let o of...
  function nS (line 140) | function nS(t){if(t instanceof Map&&(t=Object.fromEntries(t)),hN(t))for(...
  function al (line 140) | function al(t,e,r){let o=t.get(e);return typeof o>"u"&&t.set(e,o=r()),o}
  function Yy (line 140) | function Yy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}
  function yd (line 140) | function yd(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}
  function Wy (line 140) | function Wy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}
  function xZe (line 140) | async function xZe(t,e){if(e==null)return await t();try{return await t()...
  function Ky (line 140) | async function Ky(t,e){try{return await t()}catch(r){throw r.message=e(r...
  function CN (line 140) | function CN(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}
  function zy (line 140) | async function zy(t){return await new Promise((e,r)=>{let o=[];t.on("err...
  function hne (line 140) | function hne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),reso...
  function gne (line 140) | function gne(t){return WI(le.fromPortablePath(t))}
  function dne (line 140) | function dne(path){let physicalPath=le.fromPortablePath(path),currentCac...
  function kZe (line 140) | function kZe(t){let e=one.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeM...
  function Df (line 140) | function Df(t,{cachingStrategy:e=2}={}){switch(e){case 0:return dne(t);c...
  function ks (line 140) | function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];...
  function QZe (line 140) | function QZe(t){return t.length===0?null:t.map(e=>`(${cne.default.makeRe...
  function iS (line 140) | function iS(t,{env:e}){let r=/\${(?<variableName>[\d\w_]+)(?<colon>:)?(?...
  function zI (line 140) | function zI(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"...
  function yne (line 140) | function yne(t){return typeof t>"u"?t:zI(t)}
  function wN (line 140) | function wN(t){try{return yne(t)}catch{return null}}
  function FZe (line 140) | function FZe(t){return!!(le.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}
  function Ene (line 140) | function Ene(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value...
  function RZe (line 140) | function RZe(...t){return Ene({},...t)}
  function IN (line 140) | function IN(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[...
  function Vy (line 140) | function Vy(t){return typeof t=="string"?Number.parseInt(t,10):t}
  method constructor (line 140) | constructor(){super(...arguments);this.chunks=[]}
  method _transform (line 140) | _transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("...
  method _flush (line 140) | _flush(r){r(null,Buffer.concat(this.chunks))}
  method constructor (line 140) | constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0...
  method set (line 140) | set(e,r){let o=this.deferred.get(e);typeof o>"u"&&this.deferred.set(e,o=...
  method reduce (line 140) | reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=...
  method wait (line 140) | async wait(){await Promise.all(this.promises.values())}
  method constructor (line 140) | constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}
  method _transform (line 140) | _transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("...
  method _flush (line 140) | _flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}
  function wne (line 140) | function wne(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1...
  function Hc (line 140) | function Hc(t,e){return[e,t]}
  function Ed (line 140) | function Ed(t,e,r){return t.get("enableColors")&&r&2&&(e=JI.default.bold...
  function zs (line 140) | function zs(t,e,r){if(!t.get("enableColors"))return e;let o=TZe.get(r);i...
  function Zy (line 140) | function Zy(t,e,r){return t.get("enableHyperlinks")?LZe?`\x1B]8;;${r}\x1...
  function Ut (line 140) | function Ut(t,e,r){if(e===null)return zs(t,"null",yt.NULL);if(Object.has...
  function bN (line 140) | function bN(t,e,r,{separator:o=", "}={}){return[...e].map(a=>Ut(t,a,r))....
  function Cd (line 140) | function Cd(t,e){if(t===null)return null;if(Object.hasOwn(sS,e))return s...
  function NZe (line 140) | function NZe(t,e,[r,o]){return t?Cd(r,o):Ut(e,r,o)}
  function xN (line 140) | function xN(t){return{Check:zs(t,"\u2713","green"),Cross:zs(t,"\u2718","...
  function Xu (line 140) | function Xu(t,{label:e,value:[r,o]}){return`${Ut(t,e,yt.CODE)}: ${Ut(t,r...
  function lS (line 140) | function lS(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=...
  function XI (line 140) | function XI(t,{configuration:e}){let r=e.get("logFilters"),o=new Map,a=n...
  function OZe (line 140) | function OZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}
  function MZe (line 140) | function MZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o]....
  function UZe (line 140) | function UZe(t){return t.code==="ENOENT"}
  method constructor (line 140) | constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),...
  function _Ze (line 140) | function _Ze(t,e){return new FN(t,e)}
  function jZe (line 140) | function jZe(t){return t.replace(/\\/g,"/")}
  function YZe (line 140) | function YZe(t,e){return HZe.resolve(t,e)}
  function WZe (line 140) | function WZe(t){return t.replace(GZe,"\\$2")}
  function KZe (line 140) | function KZe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e===...
  function Nne (line 140) | function Nne(t,e={}){return!One(t,e)}
  function One (line 140) | function One(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.in...
  function f$e (line 140) | function f$e(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf(...
  function p$e (line 140) | function p$e(t){return fS(t)?t.slice(1):t}
  function h$e (line 140) | function h$e(t){return"!"+t}
  function fS (line 140) | function fS(t){return t.startsWith("!")&&t[1]!=="("}
  function Mne (line 140) | function Mne(t){return!fS(t)}
  function g$e (line 140) | function g$e(t){return t.filter(fS)}
  function d$e (line 140) | function d$e(t){return t.filter(Mne)}
  function m$e (line 140) | function m$e(t){return t.filter(e=>!LN(e))}
  function y$e (line 140) | function y$e(t){return t.filter(LN)}
  function LN (line 140) | function LN(t){return t.startsWith("..")||t.startsWith("./..")}
  function E$e (line 140) | function E$e(t){return s$e(t,{flipBackslashes:!1})}
  function C$e (line 140) | function C$e(t){return t.includes(Lne)}
  function Une (line 140) | function Une(t){return t.endsWith("/"+Lne)}
  function w$e (line 140) | function w$e(t){let e=i$e.basename(t);return Une(t)||Nne(e)}
  function I$e (line 140) | function I$e(t){return t.reduce((e,r)=>e.concat(_ne(r)),[])}
  function _ne (line 140) | function _ne(t){return TN.braces(t,{expand:!0,nodupes:!0})}
  function B$e (line 140) | function B$e(t,e){let{parts:r}=TN.scan(t,Object.assign(Object.assign({},...
  function Hne (line 140) | function Hne(t,e){return TN.makeRe(t,e)}
  function v$e (line 140) | function v$e(t,e){return t.map(r=>Hne(r,e))}
  function D$e (line 140) | function D$e(t,e){return e.some(r=>r.test(t))}
  function b$e (line 140) | function b$e(){let t=[],e=S$e.call(arguments),r=!1,o=e[e.length-1];o&&!A...
  function jne (line 140) | function jne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r...
  function k$e (line 140) | function k$e(t){let e=x$e(t);return t.forEach(r=>{r.once("error",o=>e.em...
  function Kne (line 140) | function Kne(t){t.forEach(e=>e.emit("close"))}
  function Q$e (line 140) | function Q$e(t){return typeof t=="string"}
  function F$e (line 140) | function F$e(t){return t===""}
  function _$e (line 140) | function _$e(t,e){let r=Jne(t),o=Xne(t,e.ignore),a=r.filter(p=>Sf.patter...
  function NN (line 140) | function NN(t,e,r){let o=[],a=Sf.pattern.getPatternsOutsideCurrentDirect...
  function Jne (line 140) | function Jne(t){return Sf.pattern.getPositivePatterns(t)}
  function Xne (line 140) | function Xne(t,e){return Sf.pattern.getNegativePatterns(t).concat(e).map...
  function ON (line 140) | function ON(t){let e={};return t.reduce((r,o)=>{let a=Sf.pattern.getBase...
  function MN (line 140) | function MN(t,e,r){return Object.keys(t).map(o=>UN(o,t[o],e,r))}
  function UN (line 140) | function UN(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patte...
  function q$e (line 140) | function q$e(t){return t.map(e=>$ne(e))}
  function $ne (line 140) | function $ne(t){return t.replace(H$e,"/")}
  function G$e (line 140) | function G$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){tie(r,o);return}if...
  function tie (line 140) | function tie(t,e){t(e)}
  function _N (line 140) | function _N(t,e){t(null,e)}
  function j$e (line 140) | function j$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.fol...
  function Y$e (line 140) | function Y$e(t){return t===void 0?Zp.FILE_SYSTEM_ADAPTER:Object.assign(O...
  method constructor (line 140) | constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue...
  method _getValue (line 140) | _getValue(e,r){return e??r}
  function z$e (line 140) | function z$e(t,e,r){if(typeof e=="function"){oie.read(t,jN(),e);return}o...
  function V$e (line 140) | function V$e(t,e){let r=jN(e);return K$e.read(t,r)}
  function jN (line 140) | function jN(t={}){return t instanceof GN.default?t:new GN.default(t)}
  function J$e (line 140) | function J$e(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=O...
  method constructor (line 140) | constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),...
  function tet (line 140) | function tet(t,e){return new WN(t,e)}
  function net (line 140) | function net(t,e,r){return t.endsWith(r)?t+e:t+r+e}
  function oet (line 140) | function oet(t,e,r){if(!e.stats&&set.IS_SUPPORT_READDIR_WITH_FILE_TYPES)...
  function gie (line 140) | function gie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==nul...
  function aet (line 140) | function aet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);re...
  function die (line 140) | function die(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){IS(r,o);return}l...
  function IS (line 140) | function IS(t,e){t(e)}
  function VN (line 140) | function VN(t,e){t(null,e)}
  function Aet (line 140) | function Aet(t,e){return!e.stats&&uet.IS_SUPPORT_READDIR_WITH_FILE_TYPES...
  function Cie (line 140) | function Cie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{...
  function wie (line 140) | function wie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Eie.joinPathS...
  function fet (line 140) | function fet(t){return t===void 0?rh.FILE_SYSTEM_ADAPTER:Object.assign(O...
  method constructor (line 140) | constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValu...
  method _getValue (line 140) | _getValue(e,r){return e??r}
  function met (line 140) | function met(t,e,r){if(typeof e=="function"){Die.read(t,$N(),e);return}D...
  function yet (line 140) | function yet(t,e){let r=$N(e);return det.read(t,r)}
  function $N (line 140) | function $N(t={}){return t instanceof ZN.default?t:new ZN.default(t)}
  function Eet (line 140) | function Eet(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.n...
  function bie (line 140) | function bie(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw ...
  function Yl (line 140) | function Yl(){}
  function wet (line 140) | function wet(){this.value=null,this.callback=Yl,this.next=null,this.rele...
  function Iet (line 140) | function Iet(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function o(E,...
  function Bet (line 140) | function Bet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}
  function vet (line 140) | function vet(t,e){return t===null||t(e)}
  function Det (line 140) | function Det(t,e){return t.split(/[/\\]/).join(e)}
  function Pet (line 140) | function Pet(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}
  method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._root=bet.replacePat...
  method constructor (line 140) | constructor(e,r){super(e,r),this._settings=r,this._scandir=ket.scandir,t...
  method read (line 140) | read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()...
  method isDestroyed (line 140) | get isDestroyed(){return this._isDestroyed}
  method destroy (line 140) | destroy(){if(this._isDestroyed)throw new Error("The reader is already de...
  method onEntry (line 140) | onEntry(e){this._emitter.on("entry",e)}
  method onError (line 140) | onError(e){this._emitter.once("error",e)}
  method onEnd (line 140) | onEnd(e){this._emitter.once("end",e)}
  method _pushToQueue (line 140) | _pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==...
  method _worker (line 140) | _worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,...
  method _handleError (line 140) | _handleError(e){this._isDestroyed||!DS.isFatalError(this._settings,e)||(...
  method _handleEntry (line 140) | _handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=...
  method _emitEntry (line 140) | _emitEntry(e){this._emitter.emit("entry",e)}
  method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new Ret.defa...
  method read (line 140) | read(e){this._reader.onError(r=>{Tet(e,r)}),this._reader.onEntry(r=>{thi...
  function Tet (line 140) | function Tet(t,e){t(e)}
  function Let (line 140) | function Let(t,e){t(null,e)}
  method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new Oet.defa...
  method read (line 140) | read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),th...
  method constructor (line 140) | constructor(){super(...arguments),this._scandir=Met.scandirSync,this._st...
  method read (line 140) | read(){return this._pushToQueue(this._root,this._settings.basePath),this...
  method _pushToQueue (line 140) | _pushToQueue(e,r){this._queue.add({directory:e,base:r})}
  method _handleQueue (line 140) | _handleQueue(){for(let e of this._queue.values())this._handleDirectory(e...
  method _handleDirectory (line 140) | _handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandir...
  method _handleError (line 140) | _handleError(e){if(!!PS.isFatalError(this._settings,e))throw e}
  method _handleEntry (line 140) | _handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=PS.joinPathSegments(r...
  method _pushToStorage (line 140) | _pushToStorage(e){this._storage.push(e)}
  method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new _et.defa...
  method read (line 140) | read(){return this._reader.read()}
  method constructor (line 140) | constructor(e={}){this._options=e,this.basePath=this._getValue(this._opt...
  method _getValue (line 140) | _getValue(e,r){return e??r}
  function Yet (line 140) | function Yet(t,e,r){if(typeof e=="function"){new Lie.default(t,SS()).rea...
  function Wet (line 140) | function Wet(t,e){let r=SS(e);return new jet.default(t,r).read()}
  function Ket (line 140) | function Ket(t,e){let r=SS(e);return new Get.default(t,r).read()}
  function SS (line 140) | function SS(t={}){return t instanceof mO.default?t:new mO.default(t)}
  method constructor (line 140) | constructor(e){this._settings=e,this._fsStatSettings=new Vet.Settings({f...
  method _getFullEntryPath (line 140) | _getFullEntryPath(e){return zet.resolve(this._settings.cwd,e)}
  method _makeEntry (line 140) | _makeEntry(e,r){let o={name:r,path:r,dirent:Nie.fs.createDirentFromStats...
  method _isFatalError (line 140) | _isFatalError(e){return!Nie.errno.isEnoentCodeError(e)&&!this._settings....
  method constructor (line 140) | constructor(){super(...arguments),this._walkStream=Zet.walkStream,this._...
  method dynamic (line 140) | dynamic(e,r){return this._walkStream(e,r)}
  method static (line 140) | static(e,r){let o=e.map(this._getFullEntryPath,this),a=new Jet.PassThrou...
  method _getEntry (line 140) | _getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).c...
  method _getStat (line 140) | _getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings...
  method constructor (line 140) | constructor(){super(...arguments),this._walkAsync=ett.walk,this._readerS...
  method dynamic (line 140) | dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===...
  method static (line 140) | async static(e,r){let o=[],a=this._readerStream.static(e,r);return new P...
  method constructor (line 140) | constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOpt...
  method _fillStorage (line 140) | _fillStorage(){let e=nE.pattern.expandPatternsWithBraceExpansion(this._p...
  method _getPatternSegments (line 140) | _getPatternSegments(e){return nE.pattern.getPatternParts(e,this._microma...
  method _splitSegmentsIntoSections (line 140) | _splitSegmentsIntoSections(e){return nE.array.splitWhen(e,r=>r.dynamic&&...
  method match (line 140) | match(e){let r=e.split("/"),o=r.length,a=this._storage.filter(n=>!n.comp...
  method constructor (line 140) | constructor(e,r){this._settings=e,this._micromatchOptions=r}
  method getFilter (line 140) | getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe...
  method _getMatcher (line 140) | _getMatcher(e){return new itt.default(e,this._settings,this._micromatchO...
  method _getNegativePatternsRe (line 140) | _getNegativePatternsRe(e){let r=e.filter(kS.pattern.isAffectDepthOfReadi...
  method _filter (line 140) | _filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymb...
  method _isSkippedByDeep (line 140) | _isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntry...
  method _getEntryLevel (line 140) | _getEntryLevel(e,r){let o=r.split("/").length;if(e==="")return o;let a=e...
  method _isSkippedSymbolicLink (line 140) | _isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.d...
  method _isSkippedByPositivePatterns (line 140) | _isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!...
  method _isSkippedByNegativePatterns (line 140) | _isSkippedByNegativePatterns(e,r){return!kS.pattern.matchAny(e,r)}
  method constructor (line 140) | constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=n...
  method getFilter (line 140) | getFilter(e,r){let o=Id.pattern.convertPatternsToRe(e,this._micromatchOp...
  method _filter (line 140) | _filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this...
  method _isDuplicateEntry (line 140) | _isDuplicateEntry(e){return this.index.has(e.path)}
  method _createIndexRecord (line 140) | _createIndexRecord(e){this.index.set(e.path,void 0)}
  method _onlyFileFilter (line 140) | _onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}
  method _onlyDirectoryFilter (line 140) | _onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent...
  method _isSkippedByAbsoluteNegativePatterns (line 140) | _isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)re...
  method _isMatchToPatterns (line 140) | _isMatchToPatterns(e,r,o){let a=Id.path.removeLeadingDotSegment(e),n=Id....
  method constructor (line 140) | constructor(e){this._settings=e}
  method getFilter (line 140) | getFilter(){return e=>this._isNonFatalError(e)}
  method _isNonFatalError (line 140) | _isNonFatalError(e){return stt.errno.isEnoentCodeError(e)||this._setting...
  method constructor (line 140) | constructor(e){this._settings=e}
  method getTransformer (line 140) | getTransformer(){return e=>this._transform(e)}
  method _transform (line 140) | _transform(e){let r=e.path;return this._settings.absolute&&(r=Gie.path.m...
  method constructor (line 140) | constructor(e){this._settings=e,this.errorFilter=new ctt.default(this._s...
  method _getRootDirectory (line 140) | _getRootDirectory(e){return ott.resolve(this._settings.cwd,e.base)}
  method _getReaderOptions (line 140) | _getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,path...
  method _getMicromatchOptions (line 140) | _getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._se...
  method constructor (line 140) | constructor(){super(...arguments),this._reader=new Att.default(this._set...
  method read (line 140) | async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e...
  method api (line 140) | api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.stati...
  method constructor (line 140) | constructor(){super(...arguments),this._reader=new htt.default(this._set...
  method read (line 140) | read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=th...
  method api (line 140) | api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.stati...
  method constructor (line 140) | constructor(){super(...arguments),this._walkSync=mtt.walkSync,this._stat...
  method dynamic (line 140) | dynamic(e,r){return this._walkSync(e,r)}
  method static (line 140) | static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=t...
  method _getEntry (line 140) | _getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}...
  method _getStat (line 140) | _getStat(e){return this._statSync(e,this._fsStatSettings)}
  method constructor (line 140) | constructor(){super(...arguments),this._reader=new Ett.default(this._set...
  method read (line 140) | read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);retu...
  method api (line 140) | api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.stati...
  method constructor (line 140) | constructor(e={}){this._options=e,this.absolute=this._getValue(this._opt...
  method _getValue (line 140) | _getValue(e,r){return e===void 0?r:e}
  method _getFileSystemMethods (line 140) | _getFileSystemMethods(e={}){return Object.assign(Object.assign({},sE.DEF...
  function VO (line 140) | async function VO(t,e){oE(t);let r=JO(t,Btt.default,e),o=await Promise.a...
  function e (line 140) | function e(u,A){oE(u);let p=JO(u,Dtt.default,A);return Bd.array.flatten(p)}
    method constructor (line 227) | constructor(o){super(o)}
    method submit (line 227) | async submit(){this.value=await t.call(this,this.values,this.state),su...
    method create (line 227) | static create(o){return _he(o)}
  function r (line 140) | function r(u,A){oE(u);let p=JO(u,vtt.default,A);return Bd.stream.merge(p)}
    method constructor (line 227) | constructor(a){super({...a,choices:e})}
    method create (line 227) | static create(a){return qhe(a)}
  function o (line 140) | function o(u,A){oE(u);let p=Xie.transform([].concat(u)),h=new zO.default...
  function a (line 140) | function a(u,A){oE(u);let p=new zO.default(A);return Bd.pattern.isDynami...
  function n (line 140) | function n(u){return oE(u),Bd.path.escape(u)}
  function JO (line 140) | function JO(t,e,r){let o=Xie.transform([].concat(t)),a=new zO.default(r)...
  function oE (line 140) | function oE(t){if(![].concat(t).every(o=>Bd.string.isString(o)&&!Bd.stri...
  function Js (line 140) | function Js(...t){let e=(0,TS.createHash)("sha512"),r="";for(let o of t)...
  function LS (line 140) | async function LS(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:"sha512"...
  function NS (line 140) | async function NS(t,{cwd:e}){let o=(await(0,XO.default)(t,{cwd:le.fromPo...
  function tA (line 140) | function tA(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: d...
  function In (line 140) | function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,...
  function Qs (line 140) | function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,...
  function btt (line 140) | function btt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}
  function OS (line 140) | function OS(t){return{identHash:t.identHash,scope:t.scope,name:t.name,lo...
  function $O (line 140) | function $O(t){return{identHash:t.identHash,scope:t.scope,name:t.name,de...
  function xtt (line 140) | function xtt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,l...
  function eM (line 140) | function eM(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,...
  function e1 (line 140) | function e1(t){return eM(t,t)}
  function tM (line 140) | function tM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");r...
  function rM (line 140) | function rM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");r...
  function bf (line 140) | function bf(t){return t.range.startsWith($I)}
  function qc (line 140) | function qc(t){return t.reference.startsWith($I)}
  function t1 (line 140) | function t1(t){if(!bf(t))throw new Error("Not a virtual descriptor");ret...
  function r1 (line 140) | function r1(t){if(!qc(t))throw new Error("Not a virtual descriptor");ret...
  function ktt (line 140) | function ktt(t){return bf(t)?In(t,t.range.replace(MS,"")):t}
  function Qtt (line 140) | function Qtt(t){return qc(t)?Qs(t,t.reference.replace(MS,"")):t}
  function Ftt (line 140) | function Ftt(t,e){return t.range.includes("::")?t:In(t,`${t.range}::${aE...
  function Rtt (line 140) | function Rtt(t,e){return t.reference.includes("::")?t:Qs(t,`${t.referenc...
  function n1 (line 140) | function n1(t,e){return t.identHash===e.identHash}
  function nse (line 140) | function nse(t,e){return t.descriptorHash===e.descriptorHash}
  function i1 (line 140) | function i1(t,e){return t.locatorHash===e.locatorHash}
  function Ttt (line 140) | function Ttt(t,e){if(!qc(t))throw new Error("Invalid package type");if(!...
  function Vs (line 140) | function Vs(t){let e=ise(t);if(!e)throw new Error(`Invalid ident (${t})`...
  function ise (line 140) | function ise(t){let e=t.match(Ltt);if(!e)return null;let[,r,o]=e;return ...
  function sh (line 140) | function sh(t,e=!1){let r=s1(t,e);if(!r)throw new Error(`Invalid descrip...
  function s1 (line 140) | function s1(t,e=!1){let r=e?t.match(Ntt):t.match(Ott);if(!r)return null;...
  function xf (line 140) | function xf(t,e=!1){let r=US(t,e);if(!r)throw new Error(`Invalid locator...
  function US (line 140) | function US(t,e=!1){let r=e?t.match(Mtt):t.match(Utt);if(!r)return null;...
  function vd (line 140) | function vd(t,e){let r=t.match(_tt);if(r===null)throw new Error(`Invalid...
  function Htt (line 140) | function Htt(t,e){try{return vd(t,e)}catch{return null}}
  function qtt (line 140) | function qtt(t,{protocol:e}){let{selector:r,params:o}=vd(t,{requireProto...
  function $ie (line 140) | function $ie(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A...
  function Gtt (line 140) | function Gtt(t){return t===null?!1:Object.entries(t).length>0}
  function _S (line 140) | function _S({protocol:t,source:e,selector:r,params:o}){let a="";return t...
  function jtt (line 140) | function jtt(t){let{params:e,protocol:r,source:o,selector:a}=vd(t);for(l...
  function fn (line 140) | function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}
  function Sa (line 140) | function Sa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.na...
  function ba (line 140) | function ba(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${...
  function ZO (line 140) | function ZO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}
  function lE (line 140) | function lE(t){let{protocol:e,selector:r}=vd(t.reference),o=e!==null?e.r...
  function cs (line 140) | function cs(t,e){return e.scope?`${Ut(t,`@${e.scope}/`,yt.SCOPE)}${Ut(t,...
  function HS (line 140) | function HS(t){if(t.startsWith($I)){let e=HS(t.substring(t.indexOf("#")+...
  function cE (line 140) | function cE(t,e){return`${Ut(t,HS(e),yt.RANGE)}`}
  function Gn (line 140) | function Gn(t,e){return`${cs(t,e)}${Ut(t,"@",yt.RANGE)}${cE(t,e.range)}`}
  function o1 (line 140) | function o1(t,e){return`${Ut(t,HS(e),yt.REFERENCE)}`}
  function qr (line 140) | function qr(t,e){return`${cs(t,e)}${Ut(t,"@",yt.REFERENCE)}${o1(t,e.refe...
  function kN (line 140) | function kN(t){return`${fn(t)}@${HS(t.reference)}`}
  function uE (line 140) | function uE(t){return ks(t,[e=>fn(e),e=>e.range])}
  function a1 (line 140) | function a1(t,e){return cs(t,e.anchoredLocator)}
  function ZI (line 140) | function ZI(t,e,r){let o=bf(e)?t1(e):e;return r===null?`${Gn(t,o)} \u219...
  function QN (line 140) | function QN(t,e,r){return r===null?`${qr(t,e)}`:`${qr(t,e)} (via ${cE(t,...
  function nM (line 140) | function nM(t){return`node_modules/${fn(t)}`}
  function qS (line 140) | function qS(t,e){return t.conditions?Stt(t.conditions,r=>{let[,o,a]=r.ma...
  method supportsDescriptor (line 140) | supportsDescriptor(e,r){return!!(e.range.startsWith(l1.protocol)||r.proj...
  method supportsLocator (line 140) | supportsLocator(e,r){return!!e.reference.startsWith(l1.protocol)}
  method shouldPersistResolution (line 140) | shouldPersistResolution(e,r){return!1}
  method bindDescriptor (line 140) | bindDescriptor(e,r,o){return e}
  method getResolutionDependencies (line 140) | getResolutionDependencies(e,r){return{}}
  method getCandidates (line 140) | async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e)....
  method getSatisfying (line 140) | async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);retu...
  method resolve (line 140) | async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(l...
  function kf (line 140) | function kf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=ase.get(o);if(ty...
  function xa (line 140) | function xa(t){if(t.indexOf(":")!==-1)return null;let e=lse.get(t);if(ty...
  function ztt (line 140) | function ztt(t){let e=Ktt.exec(t);return e?e[1]:null}
  function cse (line 140) | function cse(t){if(t.semver===oh.default.Comparator.ANY)return{gt:null,l...
  function iM (line 140) | function iM(t){if(t.length===0)return null;let e=null,r=null;for(let o o...
  function use (line 140) | function use(t){if(t.gt&&t.lt){if(t.gt[0]===">="&&t.lt[0]==="<="&&t.gt[1...
  function sM (line 140) | function sM(t){let e=t.map(o=>xa(o).set.map(a=>a.map(n=>cse(n)))),r=e.sh...
  function fse (line 140) | function fse(t){let e=t.match(/^[ \t]+/m);return e?e[0]:"  "}
  function pse (line 140) | function pse(t){return t.charCodeAt(0)===65279?t.slice(1):t}
  function $o (line 140) | function $o(t){return t.replace(/\\/g,"/")}
  function GS (line 140) | function GS(t,{yamlCompatibilityMode:e}){return e?wN(t):typeof t>"u"||ty...
  function hse (line 140) | function hse(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let o...
  function oM (line 140) | function oM(t,e){return e.length===1?hse(t,e[0]):`(${e.map(r=>hse(t,r))....
  method constructor (line 140) | constructor(){this.indent="  ";this.name=null;this.version=null;this.os=...
  method tryFind (line 140) | static async tryFind(e,{baseFs:r=new Tn}={}){let o=z.join(e,"package.jso...
  method find (line 140) | static async find(e,{baseFs:r}={}){let o=await AE.tryFind(e,{baseFs:r});...
  method fromFile (line 140) | static async fromFile(e,{baseFs:r=new Tn}={}){let o=new AE;return await ...
  method fromText (line 140) | static fromText(e){let r=new AE;return r.loadFromText(e),r}
  method loadFromText (line 140) | loadFromText(e){let r;try{r=JSON.parse(pse(e)||"{}")}catch(o){throw o.me...
  method loadFile (line 140) | async loadFile(e,{baseFs:r=new Tn}){let o=await r.readFilePromise(e,"utf...
  method load (line 140) | load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)...
  method getForScope (line 140) | getForScope(e){switch(e){case"dependencies":return this.dependencies;cas...
  method hasConsumerDependency (line 140) | hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||th...
  method hasHardDependency (line 140) | hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.d...
  method hasSoftDependency (line 140) | hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}
  method hasDependency (line 140) | hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDepende...
  method getConditions (line 140) | getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(oM("os...
  method ensureDependencyMeta (line 140) | ensureDependencyMeta(e){if(e.range!=="unknown"&&!gse.default.valid(e.ran...
  method ensurePeerDependencyMeta (line 140) | ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Inva...
  method setRawField (line 140) | setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.hasOwn...
  method exportTo (line 140) | exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),thi...
  function Ztt (line 140) | function Ztt(t){for(var e=t.length;e--&&Xtt.test(t.charAt(e)););return e}
  function trt (line 140) | function trt(t){return t&&t.slice(0,$tt(t)+1).replace(ert,"")}
  function srt (line 140) | function srt(t){return typeof t=="symbol"||nrt(t)&&rrt(t)==irt}
  function frt (line 140) | function frt(t){if(typeof t=="number")return t;if(art(t))return vse;if(B...
  function mrt (line 140) | function mrt(t,e,r){var o,a,n,u,A,p,h=0,E=!1,I=!1,v=!0;if(typeof t!="fun...
  function wrt (line 140) | function wrt(t,e,r){var o=!0,a=!0;if(typeof t!="function")throw new Type...
  function Brt (line 140) | function Brt(t){return typeof t.reportCode<"u"}
  method constructor (line 140) | constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}
  method constructor (line 140) | constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.repor...
  method getRecommendedLength (line 140) | getRecommendedLength(){return 180}
  method reportCacheHit (line 140) | reportCacheHit(e){this.cacheHits.add(e.locatorHash)}
  method reportCacheMiss (line 140) | reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}
  method progressViaCounter (line 140) | static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let...
  method progressViaTitle (line 140) | static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,Qse.defau...
  method startProgressPromise (line 140) | async startProgressPromise(e,r){let o=this.reportProgress(e);try{return ...
  method startProgressSync (line 140) | startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}fina...
  method reportInfoOnce (line 140) | reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||...
  method reportWarningOnce (line 140) | reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.ha...
  method reportErrorOnce (line 140) | reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)...
  method reportExceptionOnce (line 140) | reportExceptionOnce(e){Brt(e)?this.reportErrorOnce(e.reportCode,e.messag...
  method createStreamReporter (line 140) | createStreamReporter(e=null){let r=new Fse.PassThrough,o=new Rse.StringD...
  method constructor (line 141) | constructor(e){this.fetchers=e}
  method supports (line 141) | supports(e,r){return!!this.tryFetcher(e,r)}
  method getLocalPath (line 141) | getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}
  method fetch (line 141) | async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}
  method tryFetcher (line 141) | tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||n...
  method getFetcher (line 141) | getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw...
  method constructor (line 141) | constructor(e){this.resolvers=e.filter(r=>r)}
  method supportsDescriptor (line 141) | supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}
  method supportsLocator (line 141) | supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}
  method shouldPersistResolution (line 141) | shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shoul...
  method bindDescriptor (line 141) | bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescr...
  method getResolutionDependencies (line 141) | getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r)....
  method getCandidates (line 141) | async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o...
  method getSatisfying (line 141) | async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).ge...
  method resolve (line 141) | async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e...
  method tryResolverByDescriptor (line 141) | tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDesc...
  method getResolverByDescriptor (line 141) | getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDesc...
  method tryResolverByLocator (line 141) | tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator...
  method getResolverByLocator (line 141) | getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator...
  method supports (line 141) | supports(e){return!!e.reference.startsWith("virtual:")}
  method getLocalPath (line 141) | getLocalPath(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Err...
  method fetch (line 141) | async fetch(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Erro...
  method getLocatorFilename (line 141) | getLocatorFilename(e){return lE(e)}
  method ensureVirtualLink (line 141) | async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.proje...
  method isVirtualDescriptor (line 141) | static isVirtualDescriptor(e){return!!e.range.startsWith(dE.protocol)}
  method isVirtualLocator (line 141) | static isVirtualLocator(e){return!!e.reference.startsWith(dE.protocol)}
  method supportsDescriptor (line 141) | supportsDescriptor(e,r){return dE.isVirtualDescriptor(e)}
  method supportsLocator (line 141) | supportsLocator(e,r){return dE.isVirtualLocator(e)}
  method shouldPersistResolution (line 141) | shouldPersistResolution(e,r){return!1}
  method bindDescriptor (line 141) | bindDescriptor(e,r,o){throw new Error('Assertion failed: calling "bindDe...
  method getResolutionDependencies (line 141) | getResolutionDependencies(e,r){throw new Error('Assertion failed: callin...
  method getCandidates (line 141) | async getCandidates(e,r,o){throw new Error('Assertion failed: calling "g...
  method getSatisfying (line 141) | async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling ...
  method resolve (line 141) | async resolve(e,r){throw new Error('Assertion failed: calling "resolve" ...
  method supports (line 141) | supports(e){return!!e.reference.startsWith(Xn.protocol)}
  method getLocalPath (line 141) | getLocalPath(e,r){return this.getWorkspace(e,r).cwd}
  method fetch (line 141) | async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new g...
  method getWorkspace (line 141) | getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(X...
  function u1 (line 141) | function u1(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}
  function Lse (line 141) | function Lse(t){return typeof t>"u"?3:u1(t)?0:Array.isArray(t)?1:2}
  function gM (line 141) | function gM(t,e){return Object.hasOwn(t,e)}
  function Drt (line 141) | function Drt(t){return u1(t)&&gM(t,"onConflict")&&typeof t.onConflict=="...
  function Prt (line 141) | function Prt(t){if(typeof t>"u")return{onConflict:"default",value:t};if(...
  function Nse (line 141) | function Nse(t,e){let r=u1(t)&&gM(t,e)?t[e]:void 0;return Prt(r)}
  function yE (line 141) | function yE(t,e){return[t,e,Ose]}
  function dM (line 141) | function dM(t){return Array.isArray(t)?t[2]===Ose:!1}
  function pM (line 141) | function pM(t,e){if(u1(t)){let r={};for(let o of Object.keys(t))r[o]=pM(...
  function hM (line 141) | function hM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let E=a-1;E>=o;--E){let[I,...
  function Mse (line 141) | function Mse(t){return hM(t.map(([e,r])=>[e,{["."]:r}]),[],".",0,t.length)}
  function A1 (line 141) | function A1(t){return dM(t)?t[1]:t}
  function jS (line 141) | function jS(t){let e=dM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>jS...
  function mM (line 141) | function mM(t){return dM(t)?t[0]:null}
  function EM (line 141) | function EM(){if(process.platform==="win32"){let t=le.toPortablePath(pro...
  function EE (line 141) | function EE(){return le.toPortablePath((0,yM.homedir)()||"/usr/local/sha...
  function CM (line 141) | function CM(t,e){let r=z.relative(e,t);return r&&!r.startsWith("..")&&!z...
  function Qrt (line 141) | function Qrt(t){var e=new Ff(t);return e.request=wM.request,e}
  function Frt (line 141) | function Frt(t){var e=new Ff(t);return e.request=wM.request,e.createSock...
  function Rrt (line 141) | function Rrt(t){var e=new Ff(t);return e.request=_se.request,e}
  function Trt (line 141) | function Trt(t){var e=new Ff(t);return e.request=_se.request,e.createSoc...
  function Ff (line 141) | function Ff(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy...
  function p (line 141) | function p(){n.emit("free",A,u)}
  function h (line 141) | function h(E){n.removeSocket(A),A.removeListener("free",p),A.removeListe...
  function A (line 141) | function A(I){I.upgrade=!0}
  function p (line 141) | function p(I,v,x){process.nextTick(function(){h(I,v,x)})}
  function h (line 141) | function h(I,v,x){if(u.removeAllListeners(),v.removeAllListeners(),I.sta...
  function E (line 141) | function E(I){u.removeAllListeners(),ah(`tunneling socket could not be e...
  function Hse (line 142) | function Hse(t,e){var r=this;Ff.prototype.createSocket.call(r,t,function...
  function qse (line 142) | function qse(t,e,r){return typeof t=="string"?{host:t,port:e,localAddres...
  function IM (line 142) | function IM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e...
  function Lrt (line 142) | function Lrt(t){return Wse.includes(t)}
  function Ort (line 142) | function Ort(t){return Nrt.includes(t)}
  function Urt (line 142) | function Urt(t){return Mrt.includes(t)}
  function wE (line 142) | function wE(t){return e=>typeof e===t}
  function Se (line 142) | function Se(t){if(t===null)return"null";switch(typeof t){case"undefined"...
  method constructor (line 142) | constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}
  method isCanceled (line 142) | get isCanceled(){return!0}
  method fn (line 142) | static fn(e){return(...r)=>new IE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}
  method constructor (line 142) | constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCancel...
  method then (line 142) | then(e,r){return this._promise.then(e,r)}
  method catch (line 142) | catch(e){return this._promise.catch(e)}
  method finally (line 142) | finally(e){return this._promise.finally(e)}
  method cancel (line 142) | cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandl...
  method isCanceled (line 142) | get isCanceled(){return this._isCanceled}
  function Wrt (line 142) | function Wrt(t){return t.encrypted}
  method constructor (line 142) | constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorT...
  method servers (line 142) | set servers(e){this.clear(),this._resolver.setServers(e)}
  method servers (line 142) | get servers(){return this._resolver.getServers()}
  method lookup (line 142) | lookup(e,r,o){if(typeof r=="function"?(o=r,r={}):typeof r=="number"&&(r=...
  method lookupAsync (line 142) | async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let o=await...
  method query (line 142) | async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending...
  method _resolve (line 142) | async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code=...
  method _lookup (line 142) | async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),ca...
  method _set (line 142) | async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r...
  method queryAndCache (line 142) | async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._...
  method _tick (line 142) | _tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._remo...
  method install (line 142) | install(e){if(toe(e),BE in e)throw new Error("CacheableLookup has been a...
  method uninstall (line 142) | uninstall(e){if(toe(e),e[BE]){if(e[QM]!==this)throw new Error("The agent...
  method updateInterfaceInfo (line 142) | updateInterfaceInfo(){let{_iface:e}=this;this._iface=roe(),(e.has4&&!thi...
  method clear (line 142) | clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}
  function coe (line 142) | function coe(t,e){if(t&&e)return coe(t)(e);if(typeof t!="function")throw...
  function JS (line 142) | function JS(t){var e=function(){return e.called?e.value:(e.called=!0,e.v...
  function poe (line 142) | function poe(t){var e=function(){if(e.called)throw new Error(e.onceError...
  method constructor (line 142) | constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}
  function $S (line 142) | async function $S(t,e){if(!t)return Promise.reject(new Error("Expected a...
  function Sd (line 142) | function Sd(t){let e=parseInt(t,10);return isFinite(e)?e:0}
  function Snt (line 142) | function Snt(t){return t?vnt.has(t.status):!0}
  function MM (line 142) | function MM(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let...
  function bnt (line 142) | function bnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+"=...
  method constructor (line 142) | constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,igno...
  method now (line 142) | now(){return Date.now()}
  method storable (line 142) | storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||thi...
  method _hasExplicitExpiration (line 142) | _hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]|...
  method _assertRequestHasHeaders (line 142) | _assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request heade...
  method satisfiesWithoutRevalidation (line 142) | satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=M...
  method _requestMatches (line 142) | _requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host==...
  method _allowsStoringAuthenticated (line 142) | _allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||thi...
  method _varyMatches (line 142) | _varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.v...
  method _copyWithoutHopByHopHeaders (line 142) | _copyWithoutHopByHopHeaders(e){let r={};for(let o in e)Dnt[o]||(r[o]=e[o...
  method responseHeaders (line 142) | responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeader...
  method date (line 142) | date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this...
  method age (line 142) | age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;retur...
  method _ageValue (line 142) | _ageValue(){return Sd(this._resHeaders.age)}
  method maxAge (line 142) | maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&t...
  method timeToLive (line 142) | timeToLive(){let e=this.maxAge()-this.age(),r=e+Sd(this._rescc["stale-if...
  method stale (line 142) | stale(){return this.maxAge()<=this.age()}
  method _useStaleIfError (line 142) | _useStaleIfError(){return this.maxAge()+Sd(this._rescc["stale-if-error"]...
  method useStaleWhileRevalidate (line 142) | useStaleWhileRevalidate(){return this.maxAge()+Sd(this._rescc["stale-whi...
  method fromObject (line 142) | static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}
  method _fromObject (line 142) | _fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e|...
  method toObject (line 142) | toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._ca...
  method revalidationHeaders (line 142) | revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copy...
  method revalidatedPolicy (line 142) | revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStal...
  method constructor (line 142) | constructor(e,r,o,a){if(typeof e!="number")throw new TypeError("Argument...
  method _read (line 142) | _read(){this.push(this.body),this.push(null)}
  method constructor (line 142) | constructor(e,{emitErrors:r=!0,...o}={}){if(super(),this.opts={namespace...
  method _checkIterableAdaptar (line 142) | _checkIterableAdaptar(){return Roe.includes(this.opts.store.opts.dialect...
  method _getKeyPrefix (line 142) | _getKeyPrefix(e){return`${this.opts.namespace}:${e}`}
  method _getKeyPrefixArray (line 142) | _getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}
  method _getKeyUnprefix (line 142) | _getKeyUnprefix(e){return e.split(":").splice(1).join(":")}
  method get (line 142) | get(e,r){let{store:o}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefi...
  method set (line 142) | set(e,r,o){let a=this._getKeyPrefix(e);typeof o>"u"&&(o=this.opts.ttl),o...
  method delete (line 142) | delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKey...
  method clear (line 142) | clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear...
  method has (line 142) | has(e){let r=this._getKeyPrefix(e),{store:o}=this.opts;return Promise.re...
  method disconnect (line 142) | disconnect(){let{store:e}=this.opts;if(typeof e.disconnect=="function")r...
  method constructor (line 142) | constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter ...
  method createCacheableRequest (line 142) | createCacheableRequest(e){return(r,o)=>{let a;if(typeof r=="string")a=GM...
  function Gnt (line 142) | function Gnt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search...
  function GM (line 142) | function GM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostnam...
  method constructor (line 142) | constructor(t){super(t.message),this.name="RequestError",Object.assign(t...
  method constructor (line 142) | constructor(t){super(t.message),this.name="CacheError",Object.assign(thi...
  method get (line 142) | get(){let n=t[a];return typeof n=="function"?n.bind(t):n}
  method set (line 142) | set(n){t[a]=n}
  method transform (line 142) | transform(A,p,h){o=!1,h(null,A)}
  method flush (line 142) | flush(A){A()}
  method destroy (line 142) | destroy(A,p){t.destroy(),p(A)}
  method constructor (line 142) | constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`max...
  method _set (line 142) | _set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){...
  method get (line 142) | get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.ha...
  method set (line 142) | set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}
  method has (line 142) | has(e){return this.cache.has(e)||this.oldCache.has(e)}
  method peek (line 142) | peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.h...
  method delete (line 142) | delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCach...
  method clear (line 142) | clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}
  method keys (line 142) | *keys(){for(let[e]of this)yield e}
  method values (line 142) | *values(){for(let[,e]of this)yield e}
  method [Symbol.iterator] (line 142) | *[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.o...
  method size (line 142) | get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||...
  method constructor (line 142) | constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCac...
  method normalizeOrigin (line 142) | static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&...
  method normalizeOptions (line 142) | normalizeOptions(e){let r="";if(e)for(let o of Znt)e[o]&&(r+=`:${e[o]}`)...
  method _tryToCreateNewSession (line 142) | _tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e])...
  method getSession (line 142) | getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],...
  method request (line 143) | request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject...
  method createConnection (line 143) | createConnection(e,r){return rA.connect(e,r)}
  method connect (line 143) | static connect(e,r){r.ALPNProtocols=["h2"];let o=e.port||443,a=e.hostnam...
  method closeFreeSessions (line 143) | closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r ...
  method destroy (line 143) | destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.de...
  method freeSessions (line 143) | get freeSessions(){return Yoe({agent:this,isFree:!0})}
  method busySessions (line 143) | get busySessions(){return Yoe({agent:this,isFree:!1})}
  method constructor (line 143) | constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode...
  method _destroy (line 143) | _destroy(e){this.req._request.destroy(e)}
  method setTimeout (line 143) | setTimeout(e,r){return this.req.setTimeout(e,r),this}
  method _dump (line 143) | _dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),t...
  method _read (line 143) | _read(){this.req&&this.req._request.resume()}
  method constructor (line 143) | constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.na...
  method constructor (line 143) | constructor(e,r,o){super({autoDestroy:!1});let a=typeof e=="string"||e i...
  method method (line 143) | get method(){return this[Qo][sae]}
  method method (line 143) | set method(e){e&&(this[Qo][sae]=e.toUpperCase())}
  method path (line 143) | get path(){return this[Qo][oae]}
  method path (line 143) | set path(e){e&&(this[Qo][oae]=e)}
  method _mustNotHaveABody (line 143) | get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"...
  method _write (line 143) | _write(e,r,o){if(this._mustNotHaveABody){o(new Error("The GET, HEAD and ...
  method _final (line 143) | _final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(thi...
  method abort (line 143) | abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=...
  method _destroy (line 143) | _destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.de...
  method flushHeaders (line 143) | async flushHeaders(){if(this[rb]||this.destroyed)return;this[rb]=!0;let ...
  method getHeader (line 143) | getHeader(e){if(typeof e!="string")throw new ZM("name","string",e);retur...
  method headersSent (line 143) | get headersSent(){return this[rb]}
  method removeHeader (line 143) | removeHeader(e){if(typeof e!="string")throw new ZM("name","string",e);if...
  method setHeader (line 143) | setHeader(e,r){if(this.headersSent)throw new nae("set");if(typeof e!="st...
  method setNoDelay (line 143) | setNoDelay(){}
  method setSocketKeepAlive (line 143) | setSocketKeepAlive(){}
  method setTimeout (line 143) | setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._req...
  method maxHeadersCount (line 143) | get maxHeadersCount(){if(!this.destroyed&&this._request)return this._req...
  method maxHeadersCount (line 143) | set maxHeadersCount(e){}
  function Rit (line 143) | function Rit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)...
  method once (line 143) | once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})}
  method unhandleAll (line 143) | unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListe...
  method constructor (line 143) | constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=...
  method constructor (line 143) | constructor(){this.weakMap=new WeakMap,this.map=new Map}
  method set (line 143) | set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}
  method get (line 143) | get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}
  method has (line 143) | has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}
  function ist (line 143) | function ist(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st...
  function sst (line 143) | function sst(t){return st.default.object(t)&&!("statusCode"in t)}
  method constructor (line 143) | constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.c...
  method constructor (line 147) | constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborti...
  method constructor (line 147) | constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})...
  method constructor (line 147) | constructor(e,r){super(e.message,e,r),this.name="CacheError"}
  method constructor (line 147) | constructor(e,r){super(e.message,e,r),this.name="UploadError"}
  method constructor (line 147) | constructor(e,r,o){super(e.message,e,o),this.name="TimeoutError",this.ev...
  method constructor (line 147) | constructor(e,r){super(e.message,e,r),this.name="ReadError"}
  method constructor (line 147) | constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),th...
  method constructor (line 147) | constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[bE]=0...
  method normalizeArguments (line 147) | static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.obj...
  method _lockWrite (line 147) | _lockWrite(){let e=()=>{throw new TypeError("The payload has been alread...
  method _unlockWrite (line 147) | _unlockWrite(){this.write=super.write,this.end=super.end}
  method _finalizeBody (line 147) | async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!st.default.un...
  method _onResponseBase (line 147) | async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Kae]=e,r.dec...
  method _onResponse (line 147) | async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._be...
  method _onRequest (line 147) | _onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;jit.default(e),thi...
  method _createCacheableRequest (line 147) | async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.ass...
  method _makeRequest (line 147) | async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for...
  method _error (line 147) | async _error(e){try{for(let r of this.options.hooks.beforeError)e=await ...
  method _beforeError (line 147) | _beforeError(e){if(this[QE])return;let{options:r}=this,o=this.retryCount...
  method _read (line 147) | _read(){this[ab]=!0;let e=this[lb];if(e&&!this[QE]){e.readableLength&&(t...
  method _write (line 147) | _write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitiali...
  method _writeRequest (line 147) | _writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push((...
  method _final (line 147) | _final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._prog...
  method _destroy (line 147) | _destroy(e,r){var o;this[QE]=!0,clearTimeout(this[zae]),Zs in this&&(thi...
  method _isAboutToError (line 147) | get _isAboutToError(){return this[QE]}
  method ip (line 147) | get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteA...
  method aborted (line 147) | get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0...
  method socket (line 147) | get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.s...
  method downloadProgress (line 147) | get downloadProgress(){let e;return this[SE]?e=this[bE]/this[SE]:this[SE...
  method uploadProgress (line 147) | get uploadProgress(){let e;return this[xE]?e=this[kE]/this[xE]:this[xE]=...
  method timings (line 147) | get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}
  method isFromCache (line 147) | get isFromCache(){return this[Yae]}
  method pipe (line 147) | pipe(e,r){if(this[Wae])throw new Error("Failed to pipe. The response has...
  method unpipe (line 147) | unpipe(e){return e instanceof w4.ServerResponse&&this[ob].delete(e),supe...
  method constructor (line 147) | constructor(e,r){let{options:o}=r.request;super(`${e.message} in "${o.ur...
  method constructor (line 147) | constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}
  method isCanceled (line 147) | get isCanceled(){return!0}
  function tle (line 147) | function tle(t){let e,r,o=new gst.EventEmitter,a=new mst((u,A,p)=>{let h...
  function Ist (line 147) | function Ist(t,...e){let r=(async()=>{if(t instanceof wst.RequestError)t...
  function ile (line 147) | function ile(t){for(let e of Object.values(t))(nle.default.plainObject(e...
  function mle (line 147) | function mle(t){let e=new URL(t),r={host:e.hostname,headers:{}};return e...
  function R4 (line 147) | async function R4(t){return al(dle,t,()=>oe.readFilePromise(t).then(e=>(...
  function Ost (line 147) | function Ost({statusCode:t,statusMessage:e},r){let o=Ut(r,t,yt.NUMBER),a...
  function wb (line 147) | async function wb(t,{configuration:e,customErrorMessage:r}){try{return a...
  function Cle (line 147) | function Cle(t,e){let r=[...e.configuration.get("networkSettings")].sort...
  function I1 (line 147) | async function I1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonRespo...
  function N4 (line 147) | async function N4(t,{configuration:e,jsonResponse:r,customErrorMessage:o...
  function Mst (line 147) | async function Mst(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t...
  function O4 (line 147) | async function O4(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,...
  function Ust (line 147) | async function Ust(t,{customErrorMessage:e,...r}){return(await wb(I1(t,n...
  function _st (line 147) | async function _st(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResp...
  function jst (line 147) | function jst(){if(process.platform==="darwin"||process.platform==="win32...
  function B1 (line 147) | function B1(){return Ble=Ble??{os:process.platform,cpu:process.arch,libc...
  function Yst (line 147) | function Yst(t=B1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}...
  function M4 (line 147) | function M4(){let t=B1();return vle=vle??{os:[t.os],cpu:[t.cpu],libc:t.l...
  function zst (line 147) | function zst(t){let e=Wst.exec(t);if(!e)return null;let r=e[2]&&e[2].ind...
  function Vst (line 147) | function Vst(){let e=new Error().stack.split(`
  function U4 (line 148) | function U4(){return typeof Bb.default.availableParallelism<"u"?Bb.defau...
  function Y4 (line 148) | function Y4(t,e,r,o,a){let n=A1(r);if(o.isArray||o.type==="ANY"&&Array.i...
  function H4 (line 148) | function H4(t,e,r,o,a){let n=A1(r);switch(o.type){case"ANY":return jS(n)...
  function $st (line 148) | function $st(t,e,r,o,a){let n=A1(r);if(typeof n!="object"||Array.isArray...
  function eot (line 148) | function eot(t,e,r,o,a){let n=A1(r),u=new Map;if(typeof n!="object"||Arr...
  function W4 (line 148) | function W4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e...
  function Sb (line 148) | function Sb(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecre...
  function tot (line 148) | function tot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.t...
  function G4 (line 148) | function G4(){let t=`${bb}rc_filename`;for(let[e,r]of Object.entries(pro...
  function Dle (line 148) | async function Dle(t){try{return await oe.readFilePromise(t)}catch{retur...
  function rot (line 148) | async function rot(t,e){return Buffer.compare(...await Promise.all([Dle(...
  function not (line 148) | async function not(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe...
  function sot (line 148) | async function sot({configuration:t,selfPath:e}){let r=t.get("yarnPath")...
  method constructor (line 148) | constructor(e){this.isCI=Nf.isCI;this.projectCwd=null;this.plugins=new M...
  method create (line 148) | static create(e,r,o){let a=new nA(e);typeof r<"u"&&!(r instanceof Map)&&...
  method find (line 148) | static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){l...
  method findRcFiles (line 148) | static async findRcFiles(e){let r=G4(),o=[],a=e,n=null;for(;a!==n;){n=a;...
  method findFolderRcFile (line 148) | static async findFolderRcFile(e){let r=z.join(e,dr.rc),o;try{o=await oe....
  method findProjectCwd (line 148) | static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o...
  method updateConfiguration (line 148) | static async updateConfiguration(e,r,o={}){let a=G4(),n=z.join(e,a),u=oe...
  method addPlugin (line 148) | static async addPlugin(e,r){r.length!==0&&await nA.updateConfiguration(e...
  method updateHomeConfiguration (line 148) | static async updateHomeConfiguration(e){let r=EE();return await nA.updat...
  method activatePlugin (line 148) | activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&th...
  method importSettings (line 148) | importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.s...
  method useWithSource (line 148) | useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=`...
  method use (line 148) | use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSe...
  method get (line 148) | get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key...
  method getSpecial (line 148) | getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n...
  method getSubprocessStreams (line 148) | getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.create...
  method makeResolver (line 149) | makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of ...
  method makeFetcher (line 149) | makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r...
  method getLinkers (line 149) | getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r....
  method getSupportedArchitectures (line 149) | getSupportedArchitectures(){let e=B1(),r=this.get("supportedArchitecture...
  method getPackageExtensions (line 149) | async getPackageExtensions(){if(this.packageExtensions!==null)return thi...
  method normalizeLocator (line 149) | normalizeLocator(e){return xa(e.reference)?Qs(e,`${this.get("defaultProt...
  method normalizeDependency (line 149) | normalizeDependency(e){return xa(e.range)?In(e,`${this.get("defaultProto...
  method normalizeDependencyMap (line 149) | normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.nor...
  method normalizePackage (line 149) | normalizePackage(e,{packageExtensions:r}){let o=e1(e),a=r.get(e.identHas...
  method getLimit (line 149) | getLimit(e){return al(this.limits,e,()=>(0,xle.default)(this.get(e)))}
  method triggerHook (line 149) | async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.ho...
  method triggerMultipleHooks (line 149) | async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...
  method reduceHook (line 149) | async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){l...
  method firstHook (line 149) | async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hook...
  function xd (line 149) | function xd(t){return t!==null&&typeof t.fd=="number"}
  function K4 (line 149) | function K4(){}
  function z4 (line 149) | function z4(){for(let t of kd)t.kill()}
  function Yc (line 149) | async function Yc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,...
  function _4 (line 149) | async function _4(t,e,{cwd:r,env:o=process.env,encoding:a="utf8",strict:...
  function X4 (line 149) | function X4(t,e){let r=oot.get(e);return typeof r<"u"?128+r:t??1}
  function aot (line 149) | function aot(t,e,{configuration:r,report:o}){o.reportError(1,`  ${Xu(r,t...
  method constructor (line 149) | constructor({fileName:r,code:o,signal:a}){let n=Ke.create(z.cwd()),u=Ut(...
  method constructor (line 149) | constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileN...
  function Fle (line 149) | function Fle(t){Qle=t}
  function b1 (line 149) | function b1(){return typeof Z4>"u"&&(Z4=Qle()),Z4}
  function x (line 149) | function x(We){return r.locateFile?r.locateFile(We,v):v+We}
  function he (line 149) | function he(We,tt,It){switch(tt=tt||"i8",tt.charAt(tt.length-1)==="*"&&(...
  function Ee (line 149) | function Ee(We,tt){We||Ti("Assertion failed: "+tt)}
  function Pe (line 149) | function Pe(We){var tt=r["_"+We];return Ee(tt,"Cannot call unknown funct...
  function ce (line 149) | function ce(We,tt,It,ir,$){var ye={string:function(es){var bi=0;if(es!=n...
  function ne (line 149) | function ne(We,tt,It,ir){It=It||[];var $=It.every(function(Ne){return Ne...
  function Ie (line 149) | function Ie(We,tt){if(!We)return"";for(var It=We+tt,ir=We;!(ir>=It)&&Te[...
  function Fe (line 149) | function Fe(We,tt,It,ir){if(!(ir>0))return 0;for(var $=It,ye=It+ir-1,Ne=...
  function At (line 149) | function At(We,tt,It){return Fe(We,Te,tt,It)}
  function H (line 149) | function H(We){for(var tt=0,It=0;It<We.length;++It){var ir=We.charCodeAt...
  function at (line 149) | function at(We){var tt=H(We)+1,It=Ni(tt);return It&&Fe(We,He,It,tt),It}
  function Re (line 149) | function Re(We,tt){He.set(We,tt)}
  function ke (line 149) | function ke(We,tt){return We%tt>0&&(We+=tt-We%tt),We}
  function J (line 149) | function J(We){xe=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=He=new ...
  function dt (line 149) | function dt(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r....
  function Gt (line 149) | function Gt(){ot=!0,oo(be)}
  function $t (line 149) | function $t(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=...
  function bt (line 149) | function bt(We){ie.unshift(We)}
  function an (line 149) | function an(We){be.unshift(We)}
  function Qr (line 149) | function Qr(We){Le.unshift(We)}
  function Kn (line 149) | function Kn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(...
  function Ls (line 149) | function Ls(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependenci...
  function Ti (line 149) | function Ti(We){r.onAbort&&r.onAbort(We),We+="",te(We),we=!0,g=1,We="abo...
  function io (line 149) | function io(We){return We.startsWith(ps)}
  function Ns (line 149) | function Ns(We){try{if(We==Si&&ue)return new Uint8Array(ue);var tt=ii(We...
  function so (line 149) | function so(We,tt){var It,ir,$;try{$=Ns(We),ir=new WebAssembly.Module($)...
  function uc (line 149) | function uc(){var We={a:Ua};function tt($,ye){var Ne=$.exports;r.asm=Ne,...
  function uu (line 149) | function uu(We){return F.getFloat32(We,!0)}
  function cp (line 149) | function cp(We){return F.getFloat64(We,!0)}
  function up (line 149) | function up(We){return F.getInt16(We,!0)}
  function Os (line 149) | function Os(We){return F.getInt32(We,!0)}
  function Dn (line 149) | function Dn(We,tt){F.setInt32(We,tt,!0)}
  function oo (line 149) | function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt=="func...
  function Ms (line 149) | function Ms(We,tt){var It=new Date(Os((We>>2)*4)*1e3);Dn((tt>>2)*4,It.ge...
  function yl (line 149) | function yl(We,tt){return Ms(We,tt)}
  function El (line 149) | function El(We,tt,It){Te.copyWithin(We,tt,tt+It)}
  function ao (line 149) | function ao(We){try{return Be.grow(We-xe.byteLength+65535>>>16),J(Be.buf...
  function zn (line 149) | function zn(We){var tt=Te.length;We=We>>>0;var It=2147483648;if(We>It)re...
  function On (line 149) | function On(We){fe(We)}
  function Li (line 149) | function Li(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}
  function Mn (line 149) | function Mn(){if(Mn.called)return;Mn.called=!0;var We=new Date().getFull...
  function _i (line 149) | function _i(We){Mn();var tt=Date.UTC(Os((We+20>>2)*4)+1900,Os((We+16>>2)...
  function Oe (line 149) | function Oe(We){if(typeof I=="boolean"&&I){var tt;try{tt=Buffer.from(We,...
  function ii (line 149) | function ii(We){if(!!io(We))return Oe(We.slice(ps.length))}
  function ys (line 149) | function ys(We){if(We=We||A,mr>0||(dt(),mr>0))return;function tt(){Pn||(...
  method HEAPU8 (line 149) | get HEAPU8(){return t.HEAPU8}
  function rU (line 149) | function rU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=...
  method openPromise (line 149) | static async openPromise(e,r){let o=new Jl(r);try{return await e(o)}fina...
  method constructor (line 149) | constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r...
  function cot (line 149) | function cot(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof...
  function Fb (line 149) | function Fb(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
  method constructor (line 149) | constructor(r,o){super(r);this.name="Libzip Error",this.code=o}
  method constructor (line 149) | constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;t...
  method makeLibzipError (line 149) | makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzi...
  method getExtractHint (line 149) | getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils...
  method getAllFiles (line 149) | getAllFiles(){return Array.from(this.entries.keys())}
  method getRealPath (line 149) | getRealPath(){if(!this.path)throw new Error("ZipFS don't have real paths...
  method prepareClose (line 149) | prepareClose(){if(!this.ready)throw tr.EBUSY("archive closed, close");_g...
  method getBufferAndClose (line 149) | getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return ...
  method discardAndClose (line 149) | discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this...
  method saveAndClose (line 149) | saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot...
  method resolve (line 149) | resolve(r){return z.resolve(Bt.root,r)}
  method openPromise (line 149) | async openPromise(r,o,a){return this.openSync(r,o,a)}
  method openSync (line 149) | openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}...
  method hasOpenFileHandles (line 149) | hasOpenFileHandles(){return!!this.fds.size}
  method opendirPromise (line 149) | async opendirPromise(r,o){return this.opendirSync(r,o)}
  method opendirSync (line 149) | opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!t...
  method readPromise (line 149) | async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}
  method readSync (line 149) | readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>...
  method writePromise (line 149) | async writePromise(r,o,a,n,u){return typeof o=="string"?this.writeSync(r...
  method writeSync (line 149) | writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>"u"?tr.EBADF("read"):n...
  method closePromise (line 149) | async closePromise(r){return this.closeSync(r)}
  method closeSync (line 149) | closeSync(r){if(typeof this.fds.get(r)>"u")throw tr.EBADF("read");this.f...
  method createReadStream (line 149) | createReadStream(r,{encoding:o}={}){if(r===null)throw new Error("Unimple...
  method createWriteStream (line 149) | createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw tr.EROFS(`op...
  method realpathPromise (line 149) | async realpathPromise(r){return this.realpathSync(r)}
  method realpathSync (line 149) | realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.en...
  method existsPromise (line 149) | async existsPromise(r){return this.existsSync(r)}
  method existsSync (line 149) | existsSync(r){if(!this.ready)throw tr.EBUSY(`archive closed, existsSync ...
  method accessPromise (line 149) | async accessPromise(r,o){return this.accessSync(r,o)}
  method accessSync (line 149) | accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${...
  method statPromise (line 149) | async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigi...
  method statSync (line 149) | statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`...
  method fstatPromise (line 149) | async fstatPromise(r,o){return this.fstatSync(r,o)}
  method fstatSync (line 149) | fstatSync(r,o){let a=this.fds.get(r);if(typeof a>"u")throw tr.EBADF("fst...
  method lstatPromise (line 149) | async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bi...
  method lstatSync (line 149) | lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(...
  method statImpl (line 149) | statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<"u"){let u=this...
  method getUnixMode (line 149) | getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,...
  method registerListing (line 149) | registerListing(r){let o=this.listings.get(r);if(o)return o;this.registe...
  method registerEntry (line 149) | registerEntry(r,o){this.registerListing(z.dirname(r)).add(z.basename(r))...
  method unregisterListing (line 149) | unregisterListing(r){this.listings.delete(r),this.listings.get(z.dirname...
  method unregisterEntry (line 149) | unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);t...
  method deleteEntry (line 149) | deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,...
  method resolveFilename (line 149) | resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw tr.EBUSY(`archive cl...
  method allocateBuffer (line 149) | allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libz...
  method allocateUnattachedSource (line 149) | allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,...
  method allocateSource (line 149) | allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=th...
  method setFileSource (line 149) | setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=z.relativ...
  method isSymbolicLink (line 149) | isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file....
  method getFileSource (line 149) | getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if...
  method fchmodPromise (line 149) | async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,"fchmo...
  method fchmodSync (line 149) | fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,"fchmodSync"),o)}
  method chmodPromise (line 149) | async chmodPromise(r,o){return this.chmodSync(r,o)}
  method chmodSync (line 149) | chmodSync(r,o){if(this.readOnly)throw tr.EROFS(`chmod '${r}'`);o&=493;le...
  method fchownPromise (line 149) | async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,"fch...
  method fchownSync (line 149) | fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,"fchownSync"),o,a)}
  method chownPromise (line 149) | async chownPromise(r,o,a){return this.chownSync(r,o,a)}
  method chownSync (line 149) | chownSync(r,o,a){throw new Error("Unimplemented")}
  method renamePromise (line 149) | async renamePromise(r,o){return this.renameSync(r,o)}
  method renameSync (line 149) | renameSync(r,o){throw new Error("Unimplemented")}
  method copyFilePromise (line 149) | async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP...
  method copyFileSync (line 149) | copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=thi...
  method prepareCopyFile (line 149) | prepareCopyFile(r,o,a=0){if(this.readOnly)throw tr.EROFS(`copyfile '${r}...
  method appendFilePromise (line 149) | async appendFilePromise(r,o,a){if(this.readOnly)throw tr.EROFS(`open '${...
  method appendFileSync (line 149) | appendFileSync(r,o,a={}){if(this.readOnly)throw tr.EROFS(`open '${r}'`);...
  method fdToPath (line 149) | fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>"u")throw tr.EBADF(o)...
  method writeFilePromise (line 149) | async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}...
  method writeFileSync (line 149) | writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.pre...
  method prepareWriteFile (line 149) | prepareWriteFile(r,o){if(typeof r=="number"&&(r=this.fdToPath(r,"read"))...
  method unlinkPromise (line 149) | async unlinkPromise(r){return this.unlinkSync(r)}
  method unlinkSync (line 149) | unlinkSync(r){if(this.readOnly)throw tr.EROFS(`unlink '${r}'`);let o=thi...
  method utimesPromise (line 149) | async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}
  method utimesSync (line 149) | utimesSync(r,o,a){if(this.readOnly)throw tr.EROFS(`utimes '${r}'`);let n...
  method lutimesPromise (line 149) | async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}
  method lutimesSync (line 149) | lutimesSync(r,o,a){if(this.readOnly)throw tr.EROFS(`lutimes '${r}'`);let...
  method utimesImpl (line 149) | utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrate...
  method mkdirPromise (line 149) | async mkdirPromise(r,o){return this.mkdirSync(r,o)}
  method mkdirSync (line 149) | mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(...
  method rmdirPromise (line 149) | async rmdirPromise(r,o){return this.rmdirSync(r,o)}
  method rmdirSync (line 149) | rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw tr.EROFS(`rmdir ...
  method rmPromise (line 149) | async rmPromise(r,o){return this.rmSync(r,o)}
  method rmSync (line 149) | rmSync(r,{recursive:o=!1}={}){if(this.readOnly)throw tr.EROFS(`rm '${r}'...
  method hydrateDirectory (line 149) | hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,z.relative(Bt.roo...
  method linkPromise (line 149) | async linkPromise(r,o){return this.linkSync(r,o)}
  method linkSync (line 149) | linkSync(r,o){throw tr.EOPNOTSUPP(`link '${r}' -> '${o}'`)}
  method symlinkPromise (line 149) | async symlinkPromise(r,o){return this.symlinkSync(r,o)}
  method symlinkSync (line 149) | symlinkSync(r,o){if(this.readOnly)throw tr.EROFS(`symlink '${r}' -> '${o...
  method readFilePromise (line 149) | async readFilePromise(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);l...
  method readFileSync (line 149) | readFileSync(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=this...
  method readFileBuffer (line 149) | readFileBuffer(r,o={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdT...
  method readdirPromise (line 149) | async readdirPromise(r,o){return this.readdirSync(r,o)}
  method readdirSync (line 149) | readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this...
  method readlinkPromise (line 149) | async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this...
  method readlinkSync (line 149) | readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(...
  method prepareReadlink (line 149) | prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if...
  method truncatePromise (line 149) | async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r)...
  method truncateSync (line 149) | truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.e...
  method ftruncatePromise (line 149) | async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,...
  method ftruncateSync (line 149) | ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,"ftruncateSy...
  method watch (line 149) | watch(r,o,a){let n;switch(typeof o){case"function":case"string":case"und...
  method watchFile (line 149) | watchFile(r,o,a){let n=z.resolve(Bt.root,r);return ny(this,n,o,a)}
  method unwatchFile (line 149) | unwatchFile(r,o){let a=z.resolve(Bt.root,r);return Ug(this,a,o)}
  function Hle (line 149) | function Hle(t,e,r=Buffer.alloc(0),o){let a=new Ji(r),n=I=>I===e||I.star...
  function uot (line 149) | function uot(){return b1()}
  function Aot (line 149) | async function Aot(){return b1()}
  method constructor (line 149) | constructor(){super(...arguments);this.cwd=ge.String("--cwd",process.cwd...
  method execute (line 149) | async execute(){let r=this.args.length>0?`${this.commandName} ${this.arg...
  method constructor (line 159) | constructor(e){super(e),this.name="ShellError"}
  function fot (line 159) | function fot(t){if(!Tb.default.scan(t,Lb).isGlob)return!1;try{Tb.default...
  function pot (line 159) | function pot(t,{cwd:e,baseFs:r}){return(0,Kle.default)(t,{...Vle,cwd:le....
  function oU (line 159) | function oU(t){return Tb.default.scan(t,Lb).isBrace}
  function aU (line 159) | function aU(){}
  function lU (line 159) | function lU(){for(let t of Qd)t.kill()}
  function ece (line 159) | function ece(t,e,r,o){return a=>{let n=a[0]instanceof sA.Transform?"pipe...
  function tce (line 162) | function tce(t){return e=>{let r=e[0]==="pipe"?new sA.PassThrough:e[0];r...
  function Ob (line 162) | function Ob(t,e){return LE.start(t,e)}
  function Xle (line 162) | function Xle(t,e=null){let r=new sA.PassThrough,o=new $le.StringDecoder,...
  function rce (line 163) | function rce(t,{prefix:e}){return{stdout:Xle(r=>t.stdout.write(`${r}
  method constructor (line 165) | constructor(e){this.stream=e}
  method close (line 165) | close(){}
  method get (line 165) | get(){return this.stream}
  method constructor (line 165) | constructor(){this.stream=null}
  method close (line 165) | close(){if(this.stream===null)throw new Error("Assertion failed: No stre...
  method attach (line 165) | attach(e){this.stream=e}
  method get (line 165) | get(){if(this.stream===null)throw new Error("Assertion failed: No stream...
  method constructor (line 165) | constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this....
  method start (line 165) | static start(e,{stdin:r,stdout:o,stderr:a}){let n=new LE(null,e);return ...
  method pipeTo (line 165) | pipeTo(e,r=1){let o=new LE(this,e),a=new cU;return o.pipe=a,o.stdout=thi...
  method exec (line 165) | async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe"...
  method run (line 165) | async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());retu...
  function nce (line 165) | function nce(t,e,r){let o=new cl.PassThrough({autoDestroy:!0});switch(t)...
  function Ub (line 165) | function Ub(t,e={}){let r={...t,...e};return r.environment={...t.environ...
  function got (line 165) | async function got(t,e,r){let o=[],a=new cl.PassThrough;return a.on("dat...
  function ice (line 165) | async function ice(t,e,r){let o=t.map(async n=>{let u=await Fd(n.args,e,...
  function Mb (line 165) | function Mb(t){return t.match(/[^ \r\n\t]+/g)||[]}
  function uce (line 165) | async function uce(t,e,r,o,a=o){switch(t.name){case"$":o(String(process....
  function Q1 (line 165) | async function Q1(t,e,r){if(t.type==="number"){if(Number.isInteger(t.val...
  function Fd (line 165) | async function Fd(t,e,r){let o=new Map,a=[],n=[],u=E=>{n.push(E)},A=()=>...
  function F1 (line 165) | function F1(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let o=le.f...
  function mot (line 165) | function mot(t,e,r){return o=>{let a=new cl.PassThrough,n=_b(t,e,Ub(r,{s...
  function yot (line 165) | function yot(t,e,r){return o=>{let a=new cl.PassThrough,n=_b(t,e,r);retu...
  function sce (line 165) | function sce(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.r...
  function oce (line 165) | async function oce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{....
  function Eot (line 165) | async function Eot(t,e,r,{background:o=!1}={}){function a(n){let u=["#2E...
  function Cot (line 167) | async function Cot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variabl...
  function _b (line 168) | async function _b(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let ...
  function Ace (line 168) | function Ace(t){switch(t.type){case"variable":return t.name==="@"||t.nam...
  function R1 (line 168) | function R1(t){switch(t.type){case"redirection":return t.args.some(e=>R1...
  function AU (line 168) | function AU(t){switch(t.type){case"variable":return Ace(t);case"number":...
  function fU (line 168) | function fU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(...
  function TE (line 168) | async function TE(t,e=[],{baseFs:r=new Tn,builtins:o={},cwd:a=le.toPorta...
  method write (line 171) | write(ae,fe,ue){setImmediate(ue)}
  function wot (line 171) | function wot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[...
  function dce (line 171) | function dce(t){if(typeof t=="string")return t;if(Bot(t))return Iot(t,dc...
  function Sot (line 171) | function Sot(t){return t==null?"":Pot(t)}
  function bot (line 171) | function bot(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<...
  function kot (line 171) | function kot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:xo...
  function Uot (line 171) | function Uot(t){return Mot.test(t)}
  function _ot (line 171) | function _ot(t){return t.split("")}
  function $ot (line 171) | function $ot(t){return t.match(Zot)||[]}
  function nat (line 171) | function nat(t){return tat(t)?rat(t):eat(t)}
  function lat (line 171) | function lat(t){return function(e){e=aat(e);var r=sat(e)?oat(e):void 0,o...
  function pat (line 171) | function pat(t){return fat(Aat(t).toLowerCase())}
  function hat (line 171) | function hat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,E=10,I=11,v=1...
  function dat (line 171) | function dat(){if(Gb)return Gb;if(typeof Intl.Segmenter<"u"){let t=new I...
  function Vce (line 171) | function Vce(t,{configuration:e,json:r}){if(!e.get("enableMessageNames")...
  function yU (line 171) | function yU(t,{configuration:e,json:r}){let o=Vce(t,{configuration:e,jso...
  function NE (line 171) | async function NE({configuration:t,stdout:e,forceError:r},o){let a=await...
  method constructor (line 176) | constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=...
  method start (line 176) | static async start(r,o){let a=new this(r),n=process.emitWarning;process....
  method hasErrors (line 176) | hasErrors(){return this.errorCount>0}
  method exitCode (line 176) | exitCode(){return this.hasErrors()?1:0}
  method getRecommendedLength (line 176) | getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.colum...
  method startSectionSync (line 176) | startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u=...
  method startSectionPromise (line 176) | async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},...
  method startTimerImpl (line 176) | startTimerImpl(r,o,a){return{cb:typeof o=="function"?o:a,reportHeader:()...
  method startTimerSync (line 176) | startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return t...
  method startTimerPromise (line 176) | async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a)...
  method reportSeparator (line 176) | reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(nul...
  method reportInfo (line 176) | reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.fo...
  method reportWarning (line 176) | reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;...
  method reportError (line 176) | reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.repor...
  method reportErrorImpl (line 176) | reportErrorImpl(r,o){this.commit();let a=this.formatNameWithHyperlink(r)...
  method reportFold (line 176) | reportFold(r,o){if(!fh)return;let a=`${fh.start(r)}${o}${fh.end(r)}`;thi...
  method reportProgress (line 176) | reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve...
  method reportJson (line 176) | reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}
  method finalize (line 176) | async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>...
  method writeLine (line 176) | writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout....
  method writeLines (line 177) | writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(l...
  method commit (line 178) | commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)...
  method clearProgress (line 178) | clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.pr...
  method writeProgress (line 178) | writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==nu...
  method refreshProgress (line 179) | refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.prog...
  method truncate (line 179) | truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typ...
  method formatName (line 179) | formatName(r){return this.includeNames?Vce(r,{configuration:this.configu...
  method formatPrefix (line 179) | formatPrefix(r,o){return this.includePrefix?`${Ut(this.configuration,"\u...
  method formatNameWithHyperlink (line 179) | formatNameWithHyperlink(r){return this.includeNames?yU(r,{configuration:...
  method formatIndent (line 179) | formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ...
  function ph (line 179) | async function ph(t,e,r,o=[]){if(process.platform==="win32"){let a=`@got...
  function $ce (line 181) | async function $ce(t){let e=await Ot.tryFind(t);if(e?.packageManager){le...
  function M1 (line 181) | async function M1({project:t,locator:e,binFolder:r,ignoreCorepack:o,life...
  function Bat (line 181) | async function Bat(t,e,{configuration:r,report:o,workspace:a=null,locato...
  function vat (line 189) | async function vat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(...
  function Wb (line 189) | async function Wb(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){ret...
  function EU (line 189) | async function EU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){ret...
  function Dat (line 189) | async function Dat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await ...
  function eue (line 189) | async function eue(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){le...
  function tue (line 189) | async function tue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await...
  function CU (line 189) | function CU(t,e){return t.manifest.scripts.has(e)}
  function rue (line 189) | async function rue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,...
  function Pat (line 190) | async function Pat(t,e,r){CU(t,e)&&await rue(t,e,r)}
  function wU (line 190) | function wU(t){let e=z.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0...
  function Kb (line 190) | async function Kb(t,{project:e}){let r=e.configuration,o=new Map,a=e.sto...
  function nue (line 190) | async function nue(t){return await Kb(t.anchoredLocator,{project:t.proje...
  function IU (line 190) | async function IU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?ph...
  function iue (line 190) | async function iue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,node...
  function Sat (line 190) | async function Sat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessi...
  method constructor (line 190) | constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e...
  method unpipe (line 190) | unpipe(){this.dest.removeListener("drain",this.ondrain)}
  method proxyErrors (line 190) | proxyErrors(){}
  method end (line 190) | end(){this.unpipe(),this.opts.end&&this.dest.end()}
  method unpipe (line 190) | unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}
  method constructor (line 190) | constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit("error",a),e....
  method constructor (line 190) | constructor(e){super(),this[Xb]=!1,this[_1]=!1,this.pipes=[],this.buffer...
  method bufferLength (line 190) | get bufferLength(){return this[Fs]}
  method encoding (line 190) | get encoding(){return this[ka]}
  method encoding (line 190) | set encoding(e){if(this[Fo])throw new Error("cannot set encoding in obje...
  method setEncoding (line 190) | setEncoding(e){this.encoding=e}
  method objectMode (line 190) | get objectMode(){return this[Fo]}
  method objectMode (line 190) | set objectMode(e){this[Fo]=this[Fo]||!!e}
  method async (line 190) | get async(){return this[Hf]}
  method async (line 190) | set async(e){this[Hf]=this[Hf]||!!e}
  method write (line 190) | write(e,r,o){if(this[Mf])throw new Error("write after end");if(this[Ro])...
  method read (line 190) | read(e){if(this[Ro])return null;if(this[Fs]===0||e===0||e>this[Fs])retur...
  method [uue] (line 190) | [uue](e,r){return e===r.length||e===null?this[DU]():(this.buffer[0]=r.sl...
  method end (line 190) | end(e,r,o){return typeof e=="function"&&(o=e,e=null),typeof r=="function...
  method [ME] (line 190) | [ME](){this[Ro]||(this[_1]=!1,this[Xb]=!0,this.emit("resume"),this.buffe...
  method resume (line 190) | resume(){return this[ME]()}
  method pause (line 190) | pause(){this[Xb]=!1,this[_1]=!0}
  method destroyed (line 190) | get destroyed(){return this[Ro]}
  method flowing (line 190) | get flowing(){return this[Xb]}
  method paused (line 190) | get paused(){return this[_1]}
  method [vU] (line 190) | [vU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}
  method [DU] (line 190) | [DU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.b...
  method [Jb] (line 190) | [Jb](e){do;while(this[Aue](this[DU]()));!e&&!this.buffer.length&&!this[M...
  method [Aue] (line 190) | [Aue](e){return e?(this.emit("data",e),this.flowing):!1}
  method pipe (line 190) | pipe(e,r){if(this[Ro])return;let o=this[gh];return r=r||{},e===aue.stdou...
  method unpipe (line 190) | unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(thi...
  method addListener (line 190) | addListener(e,r){return this.on(e,r)}
  method on (line 190) | on(e,r){let o=super.on(e,r);return e==="data"&&!this.pipes.length&&!this...
Copy disabled (too large) Download .json
Condensed preview — 1267 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,360K chars).
[
  {
    "path": ".cursor/rules/code-style.mdc",
    "chars": 3928,
    "preview": "---\ndescription: \nglobs: \nalwaysApply: false\n---\n# Code Style Guidelines\n\nThis document outlines the code style and conv"
  },
  {
    "path": ".cursor/rules/commit-and-pr-guidelines.mdc",
    "chars": 3246,
    "preview": "---\ndescription: \nglobs: \nalwaysApply: false\n---\n# Commit and Pull Request Guidelines\n\nThis document outlines the commit"
  },
  {
    "path": ".env.example",
    "chars": 194,
    "preview": "# Copy and paste this file to .env and fill in the values\nVITE_AMPLITUDE_API_KEY=<MY_AMPLITUDE_API_KEY>\nVITE_AMPLITUDE_U"
  },
  {
    "path": ".eslintignore",
    "chars": 39,
    "preview": "**/*.js\nexamples/\nplaywright.config.ts\n"
  },
  {
    "path": ".eslintrc.js",
    "chars": 2300,
    "preview": "module.exports = {\n  root: true,\n  env: {\n    es6: true,\n    'jest/globals': true,\n  },\n  parser: '@typescript-eslint/pa"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 766,
    "preview": "# CODEOWNERS file for Amplitude TypeScript repository\n# This file defines code ownership for different parts of the repo"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Bug_report.md",
    "chars": 650,
    "preview": "---\nname: Bug report 🐛\nabout: You're having technical issues\nlabels: 'bug'\n---\n\n<!--- Please fill out the template to th"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Feature_request.md",
    "chars": 347,
    "preview": "---\nname: Feature Request 🚀\nabout: You'd like something added to the SDK\nlabels: 'enhancement'\n---\n\n<!--- Please fill ou"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Question.md",
    "chars": 116,
    "preview": "---\nname: Question ❓\nabout: Ask a question\nlabels: 'question'\n---\n\n## Summary\n\n<!-- What do you need help with? -->\n"
  },
  {
    "path": ".github/actions/build-and-test/action.yml",
    "chars": 1450,
    "preview": "name: 'Build and Test'\ndescription: 'Install dependencies, build, test, and lint packages'\ninputs:\n  node-version:\n    d"
  },
  {
    "path": ".github/actions/e2e-test/action.yml",
    "chars": 2239,
    "preview": "name: 'E2E Test'\ndescription: 'Setup environment, build packages, start dev server, and run Playwright E2E tests'\n\ninput"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 445,
    "preview": "<!---\nThanks for contributing to the Amplitude TypeScript repository! 🎉\n\nPlease fill out the following sections to help "
  },
  {
    "path": ".github/workflows/ci-nx.yml",
    "chars": 3326,
    "preview": "name: Continuous Integration (Nx)\n\non:\n  pull_request:\n    types: [opened, synchronize]\n\njobs:\n  check-deprecated-packag"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 1727,
    "preview": "name: Continuous Integration\n\non:\n  push:\n    branches:\n      - main\n      - v1.x\n\njobs:\n  build:\n    name: Build\n    st"
  },
  {
    "path": ".github/workflows/docs.yml",
    "chars": 616,
    "preview": "name: Generate Docs\non: workflow_dispatch\njobs:\n  build-and-deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - name: "
  },
  {
    "path": ".github/workflows/e2e-session-replay.yml",
    "chars": 2496,
    "preview": "name: Session Replay Browser E2E\n\non:\n  pull_request:\n    types: [opened, synchronize]\n    paths:\n      - 'packages/sess"
  },
  {
    "path": ".github/workflows/e2e.yml",
    "chars": 599,
    "preview": "name: E2E Tests\n\non:\n  push:\n    branches:\n      - main\n      - v1.x\n  pull_request:\n    types: [opened, synchronize]\n\nj"
  },
  {
    "path": ".github/workflows/publish-single-package.yml",
    "chars": 12064,
    "preview": "# This workflow is for publishing NEW packages that are currently private\n# It's separate from the main publish-v2.yml w"
  },
  {
    "path": ".github/workflows/publish-v1.yml",
    "chars": 3738,
    "preview": "name: Publish v1.x\n\non:\n  workflow_dispatch:\n    inputs:\n      releaseType:\n        type: choice\n        description: Re"
  },
  {
    "path": ".github/workflows/publish-v2.yml",
    "chars": 9188,
    "preview": "name: Publish v2.x\n\non:\n  workflow_dispatch:\n    inputs:\n      releaseType:\n        type: choice\n        description: Re"
  },
  {
    "path": ".github/workflows/rn-smoke.yml",
    "chars": 4677,
    "preview": "name: React Native Smoke Test\n\non:\n  pull_request:\n    types: [opened, synchronize]\n  push:\n    branches: [main]\n\njobs:\n"
  },
  {
    "path": ".github/workflows/semantic-pr.yml",
    "chars": 3257,
    "preview": "name: Semantic PR Check\n\non:\n  pull_request:\n    types: [opened, synchronize, edited]\n\njobs:\n  pr-title-check: \n    name"
  },
  {
    "path": ".gitignore",
    "chars": 741,
    "preview": "node_modules/\n\n.DS_Store\n\nlib/\n*.tsbuildinfo\ncoverage/\ndocs/\n.idea/\n\n# macos\n.DS_Store\n\n# debug\nnpm-debug.log*\nyarn-debu"
  },
  {
    "path": ".husky/commit-msg",
    "chars": 68,
    "preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\npnpm commitlint --edit $1\n"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 90,
    "preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\npnpm install --frozen-lockfile\npnpm lint:staged\n"
  },
  {
    "path": ".npmrc",
    "chars": 498,
    "preview": "# Hoist React Native / Metro / Babel packages so Metro can resolve them when\n# bundling the workspace example app (examp"
  },
  {
    "path": ".nvmrc",
    "chars": 3,
    "preview": "18\n"
  },
  {
    "path": ".prettierignore",
    "chars": 36,
    "preview": "*.md\n\n/.nx/workspace-data\n/.nx/cache"
  },
  {
    "path": ".prettierrc.json",
    "chars": 98,
    "preview": "{\n  \"printWidth\": 120,\n  \"proseWrap\": \"always\",\n  \"singleQuote\": true,\n  \"trailingComma\": \"all\"\n}\n"
  },
  {
    "path": "AGENTS.md",
    "chars": 1011,
    "preview": "# Repository Guidelines\n\nThis repository uses GitHub Actions for continuous integration. Contributors should replicate t"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5894,
    "preview": "# Contributing to the Amplitude-TypeScript\n\n🎉 Thanks for your interest in contributing! 🎉\n\n## Getting Started\n\n### Creat"
  },
  {
    "path": "LICENSE",
    "chars": 1076,
    "preview": "MIT License\n\nCopyright (c) 2022 Amplitude Analytics\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "README.md",
    "chars": 2604,
    "preview": "<p align=\"center\">\n  <a href=\"https://amplitude.com\" target=\"_blank\" align=\"center\">\n    <img src=\"https://static.amplit"
  },
  {
    "path": "commitlint.config.js",
    "chars": 69,
    "preview": "module.exports = {\n  extends: ['@commitlint/config-conventional']\n};\n"
  },
  {
    "path": "context7.json",
    "chars": 112,
    "preview": "{\n  \"url\": \"https://context7.com/amplitude/amplitude-typescript\",\n  \"public_key\": \"pk_qGDvqFQPtTvDeSCjW3eUE\"\n}\n\n"
  },
  {
    "path": "example-proxy/.gitignore",
    "chars": 703,
    "preview": "# Dependencies\nnode_modules/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Environment variables\n.env\n.env.local\n.en"
  },
  {
    "path": "example-proxy/README.md",
    "chars": 618,
    "preview": "# Amplitude Proxy Server\n\nExample Express server acts as a proxy for Amplitude analytics, allowing you to intercept, log"
  },
  {
    "path": "example-proxy/amplitude-proxy-server.js",
    "chars": 5105,
    "preview": "const express = require('express');\nconst cors = require('cors');\nconst axios = require('axios');\nconst morgan = require"
  },
  {
    "path": "examples/browser/chrome-ext/amplitude-min.js",
    "chars": 59819,
    "preview": "!function(){\"use strict\";var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,"
  },
  {
    "path": "examples/browser/chrome-ext/background.js",
    "chars": 1454,
    "preview": "/**\n * Amplitude using importScripts(). Create a copy of amplitude-min.js as part of your project and use the file path."
  },
  {
    "path": "examples/browser/chrome-ext/manifest.json",
    "chars": 271,
    "preview": "{\n  \"name\": \"Google Search Tracker\",\n  \"description\": \"Type 'g' plus a search term into the Omnibox to seach in google.c"
  },
  {
    "path": "examples/browser/html-app/README.md",
    "chars": 286,
    "preview": "This is a demo project for instrumenting events using Amplitude Analytics SDK in an basic HTML page.\n\n## Getting Started"
  },
  {
    "path": "examples/browser/html-app/index.css",
    "chars": 1574,
    "preview": "form {\n    /* Just to center the form on the page */\n    margin: 20px 0px;\n    width: 400px;\n  \n    /* To see the limits"
  },
  {
    "path": "examples/browser/html-app/index.html",
    "chars": 4096,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "examples/browser/html-app/package.json",
    "chars": 98,
    "preview": "{\n  \"name\": \"html-app\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"start\": \"npx http-server\"\n  }\n}\n"
  },
  {
    "path": "examples/browser/next-app/.gitignore",
    "chars": 371,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "examples/browser/next-app/README.md",
    "chars": 1582,
    "preview": "This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js"
  },
  {
    "path": "examples/browser/next-app/eslint.config.mjs",
    "chars": 275,
    "preview": "import nextVitals from \"eslint-config-next/core-web-vitals\";\nimport nextTs from \"eslint-config-next/typescript\";\n\nconst "
  },
  {
    "path": "examples/browser/next-app/next.config.js",
    "chars": 118,
    "preview": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "examples/browser/next-app/package.json",
    "chars": 542,
    "preview": "{\n  \"name\": \"next-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"nex"
  },
  {
    "path": "examples/browser/next-app/pages/_app.tsx",
    "chars": 843,
    "preview": "import '../styles/globals.css'\nimport type { AppProps } from 'next/app'\nimport * as amplitude from '@amplitude/analytics"
  },
  {
    "path": "examples/browser/next-app/pages/api/hello.ts",
    "chars": 305,
    "preview": "// Next.js API route support: https://nextjs.org/docs/api-routes/introduction\nimport type { NextApiRequest, NextApiRespo"
  },
  {
    "path": "examples/browser/next-app/pages/index.tsx",
    "chars": 1165,
    "preview": "import type { NextPage } from 'next'\nimport Head from 'next/head'\nimport styles from '../styles/Home.module.css'\nimport "
  },
  {
    "path": "examples/browser/next-app/styles/Home.module.css",
    "chars": 1698,
    "preview": ".container {\n  padding: 0 2rem;\n}\n\n.main {\n  min-height: 100vh;\n  padding: 4rem 0;\n  flex: 1;\n  display: flex;\n  flex-di"
  },
  {
    "path": "examples/browser/next-app/styles/globals.css",
    "chars": 275,
    "preview": "html,\nbody {\n  padding: 0;\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,\n    "
  },
  {
    "path": "examples/browser/next-app/tsconfig.json",
    "chars": 509,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"sk"
  },
  {
    "path": "examples/browser/react-app/.gitignore",
    "chars": 310,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "examples/browser/react-app/README.md",
    "chars": 2107,
    "preview": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebo"
  },
  {
    "path": "examples/browser/react-app/package.json",
    "chars": 1020,
    "preview": "{\n  \"name\": \"react-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@amplitude/analytics-browser\""
  },
  {
    "path": "examples/browser/react-app/public/index.html",
    "chars": 1721,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.i"
  },
  {
    "path": "examples/browser/react-app/public/manifest.json",
    "chars": 492,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "examples/browser/react-app/public/robots.txt",
    "chars": 67,
    "preview": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "examples/browser/react-app/src/App.css",
    "chars": 564,
    "preview": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  height: 40vmin;\n  pointer-events: none;\n}\n\n@media (prefers-reduced-motion:"
  },
  {
    "path": "examples/browser/react-app/src/App.test.tsx",
    "chars": 273,
    "preview": "import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport App from './App';\n\ntest('rend"
  },
  {
    "path": "examples/browser/react-app/src/App.tsx",
    "chars": 1031,
    "preview": "import React, { useEffect } from 'react';\nimport logo from './logo.svg';\nimport './App.css';\nimport { track, identify, s"
  },
  {
    "path": "examples/browser/react-app/src/index.css",
    "chars": 366,
    "preview": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Can"
  },
  {
    "path": "examples/browser/react-app/src/index.tsx",
    "chars": 1212,
    "preview": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimpor"
  },
  {
    "path": "examples/browser/react-app/src/reportWebVitals.ts",
    "chars": 425,
    "preview": "import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n  if (onPerfEntr"
  },
  {
    "path": "examples/browser/react-app/src/setupTests.ts",
    "chars": 241,
    "preview": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).to"
  },
  {
    "path": "examples/browser/react-app/tsconfig.json",
    "chars": 535,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    "
  },
  {
    "path": "examples/browser/vue-app/.browserslistrc",
    "chars": 40,
    "preview": "> 1%\nlast 2 versions\nnot dead\nnot ie 11\n"
  },
  {
    "path": "examples/browser/vue-app/.eslintrc.js",
    "chars": 386,
    "preview": "module.exports = {\n  root: true,\n  env: {\n    node: true\n  },\n  'extends': [\n    'plugin:vue/vue3-essential',\n    'eslin"
  },
  {
    "path": "examples/browser/vue-app/.gitignore",
    "chars": 231,
    "preview": ".DS_Store\nnode_modules\n/dist\n\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyar"
  },
  {
    "path": "examples/browser/vue-app/README.md",
    "chars": 311,
    "preview": "# vue-app\n\n## Project setup\n```\npnpm install\n```\n\n### Compiles and hot-reloads for development\n```\npnpm serve\n```\n\n### C"
  },
  {
    "path": "examples/browser/vue-app/babel.config.js",
    "chars": 73,
    "preview": "module.exports = {\n  presets: [\n    '@vue/cli-plugin-babel/preset'\n  ]\n}\n"
  },
  {
    "path": "examples/browser/vue-app/package.json",
    "chars": 775,
    "preview": "{\n  \"name\": \"vue-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"serve\": \"vue-cli-service serve\",\n   "
  },
  {
    "path": "examples/browser/vue-app/public/index.html",
    "chars": 611,
    "preview": "<!DOCTYPE html>\n<html lang=\"\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=ed"
  },
  {
    "path": "examples/browser/vue-app/src/App.vue",
    "chars": 727,
    "preview": "<template>\n  <img alt=\"Vue logo\" src=\"./assets/logo.png\">\n  <HelloWorld msg=\"Amplitude Analytics Browser Example with Vu"
  },
  {
    "path": "examples/browser/vue-app/src/components/HelloWorld.vue",
    "chars": 1266,
    "preview": "<template>\n  <div class=\"hello\">\n    <h1>{{ msg }}</h1>\n    <button @click=\"handleIdentifyClick\">\n      Identify\n    </b"
  },
  {
    "path": "examples/browser/vue-app/src/main.ts",
    "chars": 744,
    "preview": "import { createApp } from 'vue';\nimport App from './App.vue';\nimport * as amplitude from '@amplitude/analytics-browser';"
  },
  {
    "path": "examples/browser/vue-app/tsconfig.json",
    "chars": 765,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"jsx\": \"preserve\",\n    "
  },
  {
    "path": "examples/browser/vue-app/vue.config.js",
    "chars": 139,
    "preview": "const { defineConfig } = require('@vue/cli-service')\nmodule.exports = defineConfig({\n  transpileDependencies: true,\n  li"
  },
  {
    "path": "examples/node/nest-app/.eslintrc.js",
    "chars": 665,
    "preview": "module.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    project: 'tsconfig.json',\n    tsconfigR"
  },
  {
    "path": "examples/node/nest-app/.gitignore",
    "chars": 391,
    "preview": "# compiled output\n/dist\n/node_modules\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\npnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "examples/node/nest-app/.prettierrc",
    "chars": 51,
    "preview": "{\n  \"singleQuote\": true,\n  \"trailingComma\": \"all\"\n}"
  },
  {
    "path": "examples/node/nest-app/README.md",
    "chars": 622,
    "preview": "## Description\nThis is an example Nest app generated with Nest CLI, with Amplitude TypeScript Node SDK integrated.\n\n[Nes"
  },
  {
    "path": "examples/node/nest-app/nest-cli.json",
    "chars": 118,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/nest-cli\",\n  \"collection\": \"@nestjs/schematics\",\n  \"sourceRoot\": \"src\"\n}\n"
  },
  {
    "path": "examples/node/nest-app/package.json",
    "chars": 1737,
    "preview": "{\n  \"name\": \"nest-app\",\n  \"version\": \"0.0.1\",\n  \"description\": \"\",\n  \"author\": \"\",\n  \"private\": true,\n  \"license\": \"UNLI"
  },
  {
    "path": "examples/node/nest-app/src/app.controller.ts",
    "chars": 1963,
    "preview": "import { Controller, Get, Render } from '@nestjs/common';\nimport { AppService } from './app.service';\nimport * as amplit"
  },
  {
    "path": "examples/node/nest-app/src/app.module.ts",
    "chars": 249,
    "preview": "import { Module } from '@nestjs/common';\nimport { AppController } from './app.controller';\nimport { AppService } from '."
  },
  {
    "path": "examples/node/nest-app/src/app.service.ts",
    "chars": 624,
    "preview": "import { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class AppService {\n  getOptions(): any {\n    return {"
  },
  {
    "path": "examples/node/nest-app/src/main.ts",
    "chars": 456,
    "preview": "import { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\nimport { NestExpressApplication } "
  },
  {
    "path": "examples/node/nest-app/src/views/index.hbs",
    "chars": 257,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>App</title>\n  </head>\n  <body>\n    Prerequisite:"
  },
  {
    "path": "examples/node/nest-app/tsconfig.build.json",
    "chars": 97,
    "preview": "{\n  \"extends\": \"./tsconfig.json\",\n  \"exclude\": [\"node_modules\", \"test\", \"dist\", \"**/*spec.ts\"]\n}\n"
  },
  {
    "path": "examples/node/nest-app/tsconfig.json",
    "chars": 546,
    "preview": "{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"declaration\": true,\n    \"removeComments\": true,\n    \"emitDecorat"
  },
  {
    "path": "examples/plugins/page-view-tracking-enrichment/index.ts",
    "chars": 1171,
    "preview": "import { createInstance } from '@amplitude/analytics-browser';\nimport { EnrichmentPlugin } from '@amplitude/analytics-ty"
  },
  {
    "path": "examples/plugins/react-native-idfa-plugin/idfaPlugin.ts",
    "chars": 654,
    "preview": "import { Types } from '@amplitude/analytics-react-native';\nimport ReactNativeIdfaAaid from '@sparkfabrik/react-native-id"
  },
  {
    "path": "examples/plugins/remove-event-key/index.ts",
    "chars": 2157,
    "preview": "import { createInstance } from '@amplitude/analytics-browser';\nimport { EnrichmentPlugin } from '@amplitude/analytics-ty"
  },
  {
    "path": "examples/react-native/app/.bundle/config",
    "chars": 59,
    "preview": "BUNDLE_PATH: \"vendor/bundle\"\nBUNDLE_FORCE_RUBY_PLATFORM: 1\n"
  },
  {
    "path": "examples/react-native/app/.eslintrc.js",
    "chars": 64,
    "preview": "module.exports = {\n  root: true,\n  extends: '@react-native',\n};\n"
  },
  {
    "path": "examples/react-native/app/.gitignore",
    "chars": 1076,
    "preview": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.p"
  },
  {
    "path": "examples/react-native/app/.maestro/smoke.yaml",
    "chars": 140,
    "preview": "appId: org.reactjs.native.example.app\n---\n- launchApp\n- extendedWaitUntil:\n    visible:\n      text: \"Test Amplitude App\""
  },
  {
    "path": "examples/react-native/app/.prettierrc.js",
    "chars": 141,
    "preview": "module.exports = {\n  arrowParens: 'avoid',\n  bracketSameLine: true,\n  bracketSpacing: false,\n  singleQuote: true,\n  trai"
  },
  {
    "path": "examples/react-native/app/.watchmanconfig",
    "chars": 3,
    "preview": "{}\n"
  },
  {
    "path": "examples/react-native/app/.yarn/releases/yarn-stable-temp.cjs",
    "chars": 2742895,
    "preview": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var $3e=Object.create;var LR=Object.defineProperty;var "
  },
  {
    "path": "examples/react-native/app/App.tsx",
    "chars": 2239,
    "preview": "/**\n * Sample React Native App\n * https://github.com/facebook/react-native\n *\n * @format\n */\n\nimport React from 'react';"
  },
  {
    "path": "examples/react-native/app/Gemfile",
    "chars": 365,
    "preview": "source 'https://rubygems.org'\n\n# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version\nruby \""
  },
  {
    "path": "examples/react-native/app/README.md",
    "chars": 9017,
    "preview": "This is a minimal [**React Native**](https://reactnative.dev) example that exercises the Amplitude React Native SDK from"
  },
  {
    "path": "examples/react-native/app/__tests__/App.test.tsx",
    "chars": 976,
    "preview": "/**\n * @format\n */\n\n// Mock the SDK before importing App so its module-scope init (issue #181 reproduce\n// pattern) does"
  },
  {
    "path": "examples/react-native/app/android/app/build.gradle",
    "chars": 4657,
    "preview": "apply plugin: \"com.android.application\"\napply plugin: \"org.jetbrains.kotlin.android\"\napply plugin: \"com.facebook.react\"\n"
  },
  {
    "path": "examples/react-native/app/android/app/proguard-rules.pro",
    "chars": 435,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /u"
  },
  {
    "path": "examples/react-native/app/android/app/src/debug/AndroidManifest.xml",
    "chars": 313,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "examples/react-native/app/android/app/src/main/AndroidManifest.xml",
    "chars": 971,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <uses-permission android:name=\"android.permis"
  },
  {
    "path": "examples/react-native/app/android/app/src/main/java/com/app/MainActivity.kt",
    "chars": 837,
    "preview": "package com.app\n\nimport com.facebook.react.ReactActivity\nimport com.facebook.react.ReactActivityDelegate\nimport com.face"
  },
  {
    "path": "examples/react-native/app/android/app/src/main/java/com/app/MainApplication.kt",
    "chars": 1576,
    "preview": "package com.app\n\nimport android.app.Application\nimport com.facebook.react.PackageList\nimport com.facebook.react.ReactApp"
  },
  {
    "path": "examples/react-native/app/android/app/src/main/res/drawable/rn_edit_text_material.xml",
    "chars": 1917,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2014 The Android Open Source Project\n\n     Licensed under the "
  },
  {
    "path": "examples/react-native/app/android/app/src/main/res/values/strings.xml",
    "chars": 66,
    "preview": "<resources>\n    <string name=\"app_name\">app</string>\n</resources>\n"
  },
  {
    "path": "examples/react-native/app/android/app/src/main/res/values/styles.xml",
    "chars": 282,
    "preview": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.DayNight.NoActionBa"
  },
  {
    "path": "examples/react-native/app/android/build.gradle",
    "chars": 547,
    "preview": "buildscript {\n    ext {\n        buildToolsVersion = \"34.0.0\"\n        minSdkVersion = 23\n        compileSdkVersion = 34\n "
  },
  {
    "path": "examples/react-native/app/android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 250,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "examples/react-native/app/android/gradle.properties",
    "chars": 1827,
    "preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
  },
  {
    "path": "examples/react-native/app/android/gradlew",
    "chars": 8669,
    "preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "examples/react-native/app/android/gradlew.bat",
    "chars": 2918,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "examples/react-native/app/android/settings.gradle",
    "chars": 247,
    "preview": "rootProject.name = 'app'\napply from: file(\"../node_modules/@react-native-community/cli-platform-android/native_modules.g"
  },
  {
    "path": "examples/react-native/app/app.json",
    "chars": 44,
    "preview": "{\n  \"name\": \"app\",\n  \"displayName\": \"app\"\n}\n"
  },
  {
    "path": "examples/react-native/app/babel.config.js",
    "chars": 72,
    "preview": "module.exports = {\n  presets: ['module:@react-native/babel-preset'],\n};\n"
  },
  {
    "path": "examples/react-native/app/index.js",
    "chars": 183,
    "preview": "/**\n * @format\n */\n\nimport {AppRegistry} from 'react-native';\nimport App from './App';\nimport {name as appName} from './"
  },
  {
    "path": "examples/react-native/app/ios/.xcode.env",
    "chars": 482,
    "preview": "# This `.xcode.env` file is versioned and is used to source the environment\n# used when running script phases inside Xco"
  },
  {
    "path": "examples/react-native/app/ios/Podfile",
    "chars": 1107,
    "preview": "# Resolve react_native_pods.rb with node to allow for hoisting\nrequire Pod::Executable.execute_command('node', ['-p',\n  "
  },
  {
    "path": "examples/react-native/app/ios/app/AppDelegate.h",
    "chars": 98,
    "preview": "#import <RCTAppDelegate.h>\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : RCTAppDelegate\n\n@end\n"
  },
  {
    "path": "examples/react-native/app/ios/app/AppDelegate.mm",
    "chars": 795,
    "preview": "#import \"AppDelegate.h\"\n\n#import <React/RCTBundleURLProvider.h>\n\n@implementation AppDelegate\n\n- (BOOL)application:(UIApp"
  },
  {
    "path": "examples/react-native/app/ios/app/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 849,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"idiom\""
  },
  {
    "path": "examples/react-native/app/ios/app/Images.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "examples/react-native/app/ios/app/Info.plist",
    "chars": 1521,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "examples/react-native/app/ios/app/LaunchScreen.storyboard",
    "chars": 4227,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "examples/react-native/app/ios/app/PrivacyInfo.xcprivacy",
    "chars": 986,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "examples/react-native/app/ios/app/main.m",
    "chars": 199,
    "preview": "#import <UIKit/UIKit.h>\n\n#import \"AppDelegate.h\"\n\nint main(int argc, char *argv[])\n{\n  @autoreleasepool {\n    return UIA"
  },
  {
    "path": "examples/react-native/app/ios/app.xcodeproj/project.pbxproj",
    "chars": 28433,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "examples/react-native/app/ios/app.xcodeproj/xcshareddata/xcschemes/app.xcscheme",
    "chars": 3222,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1210\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "examples/react-native/app/ios/app.xcworkspace/contents.xcworkspacedata",
    "chars": 221,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:app.xcodeproj\""
  },
  {
    "path": "examples/react-native/app/ios/app.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "examples/react-native/app/ios/appTests/Info.plist",
    "chars": 733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "examples/react-native/app/ios/appTests/appTests.m",
    "chars": 1982,
    "preview": "#import <UIKit/UIKit.h>\n#import <XCTest/XCTest.h>\n\n#import <React/RCTLog.h>\n#import <React/RCTRootView.h>\n\n#define TIMEO"
  },
  {
    "path": "examples/react-native/app/jest.config.js",
    "chars": 1156,
    "preview": "module.exports = {\n  preset: 'react-native',\n  // The default `react-native` preset ignores `node_modules/(?!(jest-)?rea"
  },
  {
    "path": "examples/react-native/app/metro.config.js",
    "chars": 1064,
    "preview": "const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');\nconst path = require('path');\n\nconst proj"
  },
  {
    "path": "examples/react-native/app/package.json",
    "chars": 1067,
    "preview": "{\n  \"name\": \"app\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"android\": \"react-native run-android\",\n  "
  },
  {
    "path": "examples/react-native/app/tsconfig.json",
    "chars": 65,
    "preview": "{\n  \"extends\": \"@react-native/typescript-config/tsconfig.json\"\n}\n"
  },
  {
    "path": "examples/react-native/expo-app/.expo-shared/assets.json",
    "chars": 155,
    "preview": "{\n  \"12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb\": true,\n  \"40b842e832070c58deac6aa9e08fa459302ee3f"
  },
  {
    "path": "examples/react-native/expo-app/.gitignore",
    "chars": 781,
    "preview": "node_modules/\n.expo/\ndist/\nnpm-debug.*\n*.jks\n*.p8\n*.p12\n*.key\n*.mobileprovision\n*.orig.*\nweb-build/\n\n# macOS\n.DS_Store\n\n"
  },
  {
    "path": "examples/react-native/expo-app/App.tsx",
    "chars": 893,
    "preview": "import {StatusBar} from 'expo-status-bar';\nimport {StyleSheet, Text, View} from 'react-native';\nimport {useEffect} from "
  },
  {
    "path": "examples/react-native/expo-app/README.md",
    "chars": 784,
    "preview": "# React-Native Example App (Expo)\n## Documentation\n- [React Native SDK](https://www.docs.developers.amplitude.com/data/s"
  },
  {
    "path": "examples/react-native/expo-app/android/.gitignore",
    "chars": 177,
    "preview": "# OSX\n#\n.DS_Store\n\n# Android/IntelliJ\n#\nbuild/\n.idea\n.gradle\nlocal.properties\n*.iml\n*.hprof\n\n# BUCK\nbuck-out/\n\\.buckd/\n*"
  },
  {
    "path": "examples/react-native/expo-app/android/app/BUCK",
    "chars": 1328,
    "preview": "# To learn about Buck see [Docs](https://buckbuild.com/).\n# To run your application with Buck:\n# - install Buck\n# - `npm"
  },
  {
    "path": "examples/react-native/expo-app/android/app/build.gradle",
    "chars": 16442,
    "preview": "apply plugin: \"com.android.application\"\n\nimport com.android.build.OutputFile\nimport org.apache.tools.ant.taskdefs.condit"
  },
  {
    "path": "examples/react-native/expo-app/android/app/build_defs.bzl",
    "chars": 602,
    "preview": "\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n\ndef create_aar_targets(aarfiles):\n    for aarfile in aarfiles:\n "
  },
  {
    "path": "examples/react-native/expo-app/android/app/proguard-rules.pro",
    "chars": 562,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /u"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/debug/AndroidManifest.xml",
    "chars": 329,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\">"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/debug/java/com/amplitude/expoapp/ReactNativeFlipper.java",
    "chars": 3268,
    "preview": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * <p>This source code is licensed under the MIT license foun"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/AndroidManifest.xml",
    "chars": 2387,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"com.amplitude.expoapp\">\n  <uses-permission"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/java/com/amplitude/expoapp/MainActivity.java",
    "chars": 1796,
    "preview": "package com.amplitude.expoapp;\n\nimport android.os.Build;\nimport android.os.Bundle;\n\nimport com.facebook.react.ReactActiv"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/java/com/amplitude/expoapp/MainApplication.java",
    "chars": 3585,
    "preview": "package com.amplitude.expoapp;\n\nimport android.app.Application;\nimport android.content.Context;\nimport android.content.r"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/java/com/amplitude/expoapp/newarchitecture/MainApplicationReactNativeHost.java",
    "chars": 4651,
    "preview": "package com.amplitude.expoapp.newarchitecture;\n\nimport android.app.Application;\nimport androidx.annotation.NonNull;\nimpo"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/java/com/amplitude/expoapp/newarchitecture/components/MainComponentsRegistry.java",
    "chars": 1164,
    "preview": "package com.amplitude.expoapp.newarchitecture.components;\n\nimport com.facebook.jni.HybridData;\nimport com.facebook.progu"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/java/com/amplitude/expoapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java",
    "chars": 1793,
    "preview": "package com.amplitude.expoapp.newarchitecture.modules;\n\nimport com.facebook.jni.HybridData;\nimport com.facebook.react.Re"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/Android.mk",
    "chars": 1525,
    "preview": "THIS_DIR := $(call my-dir)\n\ninclude $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n\n# If you wish to add a custom TurboModule "
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/MainApplicationModuleProvider.cpp",
    "chars": 769,
    "preview": "#include \"MainApplicationModuleProvider.h\"\n\n#include <rncore.h>\n\nnamespace facebook {\nnamespace react {\n\nstd::shared_ptr"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/MainApplicationModuleProvider.h",
    "chars": 321,
    "preview": "#pragma once\n\n#include <memory>\n#include <string>\n\n#include <ReactCommon/JavaTurboModule.h>\n\nnamespace facebook {\nnamesp"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp",
    "chars": 1397,
    "preview": "#include \"MainApplicationTurboModuleManagerDelegate.h\"\n#include \"MainApplicationModuleProvider.h\"\n\nnamespace facebook {\n"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h",
    "chars": 1151,
    "preview": "#include <memory>\n#include <string>\n\n#include <ReactCommon/TurboModuleManagerDelegate.h>\n#include <fbjni/fbjni.h>\n\nnames"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/MainComponentsRegistry.cpp",
    "chars": 2052,
    "preview": "#include \"MainComponentsRegistry.h\"\n\n#include <CoreComponentsRegistry.h>\n#include <fbjni/fbjni.h>\n#include <react/render"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/MainComponentsRegistry.h",
    "chars": 914,
    "preview": "#pragma once\n\n#include <ComponentFactory.h>\n#include <fbjni/fbjni.h>\n#include <react/renderer/componentregistry/Componen"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/jni/OnLoad.cpp",
    "chars": 381,
    "preview": "#include <fbjni/fbjni.h>\n#include \"MainApplicationTurboModuleManagerDelegate.h\"\n#include \"MainComponentsRegistry.h\"\n\nJNI"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/drawable/rn_edit_text_material.xml",
    "chars": 1910,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2014 The Android Open Source Project\n\n     Licensed under the "
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/drawable/splashscreen.xml",
    "chars": 145,
    "preview": "<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n  <item android:drawable=\"@color/splashscreen_ba"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "chars": 257,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <b"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "chars": 257,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <b"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/values/colors.xml",
    "chars": 221,
    "preview": "<resources>\n  <color name=\"splashscreen_background\">#ffffff</color>\n  <color name=\"iconBackground\">#FFFFFF</color>\n  <co"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/values/strings.xml",
    "chars": 249,
    "preview": "<resources>\n  <string name=\"app_name\">expo-app</string>\n  <string name=\"expo_splash_screen_resize_mode\" translatable=\"fa"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/values/styles.xml",
    "chars": 870,
    "preview": "<resources xmlns:tools=\"http://schemas.android.com/tools\">\n  <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActi"
  },
  {
    "path": "examples/react-native/expo-app/android/app/src/main/res/values-night/colors.xml",
    "chars": 12,
    "preview": "<resources/>"
  },
  {
    "path": "examples/react-native/expo-app/android/build.gradle",
    "chars": 2679,
    "preview": "import org.apache.tools.ant.taskdefs.condition.Os\n\n// Top-level build file where you can add configuration options commo"
  },
  {
    "path": "examples/react-native/expo-app/android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 202,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "examples/react-native/expo-app/android/gradle.properties",
    "chars": 2183,
    "preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
  },
  {
    "path": "examples/react-native/expo-app/android/gradlew",
    "chars": 8047,
    "preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "examples/react-native/expo-app/android/gradlew.bat",
    "chars": 2763,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "examples/react-native/expo-app/android/settings.gradle",
    "chars": 1130,
    "preview": "rootProject.name = 'expo-app'\n\napply from: new File([\"node\", \"--print\", \"require.resolve('expo/package.json')\"].execute("
  },
  {
    "path": "examples/react-native/expo-app/app.json",
    "chars": 777,
    "preview": "{\n  \"expo\": {\n    \"name\": \"expo-app\",\n    \"slug\": \"expo-app\",\n    \"version\": \"1.0.0\",\n    \"orientation\": \"portrait\",\n   "
  },
  {
    "path": "examples/react-native/expo-app/babel.config.js",
    "chars": 107,
    "preview": "module.exports = function(api) {\n  api.cache(true);\n  return {\n    presets: ['babel-preset-expo'],\n  };\n};\n"
  },
  {
    "path": "examples/react-native/expo-app/index.js",
    "chars": 307,
    "preview": "import { registerRootComponent } from 'expo';\n\nimport App from './App';\n\n// registerRootComponent calls AppRegistry.regi"
  },
  {
    "path": "examples/react-native/expo-app/ios/.gitignore",
    "chars": 304,
    "preview": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.p"
  },
  {
    "path": "examples/react-native/expo-app/ios/Podfile",
    "chars": 1623,
    "preview": "require File.join(File.dirname(`node --print \"require.resolve('expo/package.json')\"`), \"scripts/autolinking\")\nrequire Fi"
  },
  {
    "path": "examples/react-native/expo-app/ios/Podfile.properties.json",
    "chars": 29,
    "preview": "{\n  \"expo.jsEngine\": \"jsc\"\n}\n"
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/AppDelegate.h",
    "chars": 190,
    "preview": "#import <Foundation/Foundation.h>\n#import <React/RCTBridgeDelegate.h>\n#import <UIKit/UIKit.h>\n\n#import <Expo/Expo.h>\n\n@i"
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/AppDelegate.mm",
    "chars": 5788,
    "preview": "#import \"AppDelegate.h\"\n\n#import <React/RCTBridge.h>\n#import <React/RCTBundleURLProvider.h>\n#import <React/RCTRootView.h"
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 2432,
    "preview": "{\n  \"images\": [\n    {\n      \"idiom\": \"iphone\",\n      \"size\": \"20x20\",\n      \"scale\": \"2x\",\n      \"filename\": \"App-Icon-2"
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/Images.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"expo\"\n  }\n}\n"
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/Images.xcassets/SplashScreen.imageset/Contents.json",
    "chars": 290,
    "preview": "{\n  \"images\": [\n    {\n      \"idiom\": \"universal\",\n      \"filename\": \"image.png\",\n      \"scale\": \"1x\"\n    },\n    {\n      "
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/Images.xcassets/SplashScreenBackground.imageset/Contents.json",
    "chars": 290,
    "preview": "{\n  \"images\": [\n    {\n      \"idiom\": \"universal\",\n      \"filename\": \"image.png\",\n      \"scale\": \"1x\"\n    },\n    {\n      "
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/Info.plist",
    "chars": 2401,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "examples/react-native/expo-app/ios/expoapp/SplashScreen.storyboard",
    "chars": 4594,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  }
]

// ... and 1067 more files (download for full content)

About this extraction

This page contains the full source code of the amplitude/Amplitude-TypeScript GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1267 files (9.5 MB), approximately 2.6M tokens, and a symbol index with 7752 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!