posthog-react-native 3.15.0 → 3.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/posthog-core/src/eventemitter.d.ts +8 -8
- package/lib/posthog-core/src/eventemitter.js +1 -0
- package/lib/posthog-core/src/eventemitter.js.map +1 -0
- package/lib/posthog-core/src/featureFlagUtils.d.ts +34 -34
- package/lib/posthog-core/src/featureFlagUtils.js +1 -0
- package/lib/posthog-core/src/featureFlagUtils.js.map +1 -0
- package/lib/posthog-core/src/index.d.ts +262 -239
- package/lib/posthog-core/src/index.js +1 -0
- package/lib/posthog-core/src/index.js.map +1 -0
- package/lib/posthog-core/src/lz-string.d.ts +8 -8
- package/lib/posthog-core/src/lz-string.js +1 -0
- package/lib/posthog-core/src/lz-string.js.map +1 -0
- package/lib/posthog-core/src/types.d.ts +422 -423
- package/lib/posthog-core/src/types.js +1 -0
- package/lib/posthog-core/src/types.js.map +1 -0
- package/lib/posthog-core/src/utils.d.ts +19 -19
- package/lib/posthog-core/src/utils.js +1 -0
- package/lib/posthog-core/src/utils.js.map +1 -0
- package/lib/posthog-core/src/vendor/uuidv7.d.ts +179 -179
- package/lib/posthog-core/src/vendor/uuidv7.js +7 -0
- package/lib/posthog-core/src/vendor/uuidv7.js.map +1 -0
- package/lib/posthog-react-native/index.d.ts +10 -10
- package/lib/posthog-react-native/index.js +1 -0
- package/lib/posthog-react-native/index.js.map +1 -0
- package/lib/posthog-react-native/src/PostHogContext.d.ts +5 -5
- package/lib/posthog-react-native/src/PostHogContext.js +1 -0
- package/lib/posthog-react-native/src/PostHogContext.js.map +1 -0
- package/lib/posthog-react-native/src/PostHogProvider.d.ts +14 -14
- package/lib/posthog-react-native/src/PostHogProvider.js +1 -0
- package/lib/posthog-react-native/src/PostHogProvider.js.map +1 -0
- package/lib/posthog-react-native/src/autocapture.d.ts +4 -4
- package/lib/posthog-react-native/src/autocapture.js +1 -0
- package/lib/posthog-react-native/src/autocapture.js.map +1 -0
- package/lib/posthog-react-native/src/frameworks/wix-navigation.d.ts +3 -3
- package/lib/posthog-react-native/src/frameworks/wix-navigation.js +1 -0
- package/lib/posthog-react-native/src/frameworks/wix-navigation.js.map +1 -0
- package/lib/posthog-react-native/src/hooks/useFeatureFlag.d.ts +5 -5
- package/lib/posthog-react-native/src/hooks/useFeatureFlag.js +1 -0
- package/lib/posthog-react-native/src/hooks/useFeatureFlag.js.map +1 -0
- package/lib/posthog-react-native/src/hooks/useFeatureFlags.d.ts +3 -3
- package/lib/posthog-react-native/src/hooks/useFeatureFlags.js +1 -0
- package/lib/posthog-react-native/src/hooks/useFeatureFlags.js.map +1 -0
- package/lib/posthog-react-native/src/hooks/useNavigationTracker.d.ts +6 -6
- package/lib/posthog-react-native/src/hooks/useNavigationTracker.js +1 -0
- package/lib/posthog-react-native/src/hooks/useNavigationTracker.js.map +1 -0
- package/lib/posthog-react-native/src/hooks/usePostHog.d.ts +2 -2
- package/lib/posthog-react-native/src/hooks/usePostHog.js +1 -0
- package/lib/posthog-react-native/src/hooks/usePostHog.js.map +1 -0
- package/lib/posthog-react-native/src/legacy.d.ts +4 -4
- package/lib/posthog-react-native/src/legacy.js +1 -0
- package/lib/posthog-react-native/src/legacy.js.map +1 -0
- package/lib/posthog-react-native/src/native-deps.d.ts +4 -4
- package/lib/posthog-react-native/src/native-deps.js +1 -0
- package/lib/posthog-react-native/src/native-deps.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalAsyncStorage.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalAsyncStorage.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalAsyncStorage.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoApplication.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalExpoApplication.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoApplication.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoDevice.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalExpoDevice.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoDevice.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoFileSystem.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalExpoFileSystem.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoFileSystem.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoLocalization.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalExpoLocalization.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalExpoLocalization.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeLocalize.d.ts +13 -13
- package/lib/posthog-react-native/src/optional/OptionalReactNativeLocalize.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeLocalize.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeNavigation.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalReactNativeNavigation.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeNavigation.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeNavigationWix.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalReactNativeNavigationWix.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeNavigationWix.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeSafeArea.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalReactNativeSafeArea.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalReactNativeSafeArea.js.map +1 -0
- package/lib/posthog-react-native/src/optional/OptionalSessionReplay.d.ts +2 -2
- package/lib/posthog-react-native/src/optional/OptionalSessionReplay.js +1 -0
- package/lib/posthog-react-native/src/optional/OptionalSessionReplay.js.map +1 -0
- package/lib/posthog-react-native/src/posthog-rn.d.ts +71 -71
- package/lib/posthog-react-native/src/posthog-rn.js +1 -0
- package/lib/posthog-react-native/src/posthog-rn.js.map +1 -0
- package/lib/posthog-react-native/src/storage.d.ts +21 -21
- package/lib/posthog-react-native/src/storage.js +1 -0
- package/lib/posthog-react-native/src/storage.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/PostHogSurveyProvider.d.ts +16 -16
- package/lib/posthog-react-native/src/surveys/PostHogSurveyProvider.js +1 -0
- package/lib/posthog-react-native/src/surveys/PostHogSurveyProvider.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/BottomSection.d.ts +9 -9
- package/lib/posthog-react-native/src/surveys/components/BottomSection.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/BottomSection.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/Cancel.d.ts +6 -6
- package/lib/posthog-react-native/src/surveys/components/Cancel.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/Cancel.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/ConfirmationMessage.d.ts +13 -13
- package/lib/posthog-react-native/src/surveys/components/ConfirmationMessage.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/ConfirmationMessage.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/QuestionHeader.d.ts +7 -7
- package/lib/posthog-react-native/src/surveys/components/QuestionHeader.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/QuestionHeader.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/QuestionTypes.d.ts +27 -27
- package/lib/posthog-react-native/src/surveys/components/QuestionTypes.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/QuestionTypes.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/SurveyModal.d.ts +10 -10
- package/lib/posthog-react-native/src/surveys/components/SurveyModal.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/SurveyModal.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/components/Surveys.d.ts +14 -14
- package/lib/posthog-react-native/src/surveys/components/Surveys.js +1 -0
- package/lib/posthog-react-native/src/surveys/components/Surveys.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/getActiveMatchingSurveys.d.ts +2 -2
- package/lib/posthog-react-native/src/surveys/getActiveMatchingSurveys.js +1 -0
- package/lib/posthog-react-native/src/surveys/getActiveMatchingSurveys.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/icons.d.ts +8 -10
- package/lib/posthog-react-native/src/surveys/icons.js +1 -0
- package/lib/posthog-react-native/src/surveys/icons.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/index.d.ts +6 -6
- package/lib/posthog-react-native/src/surveys/index.js +1 -0
- package/lib/posthog-react-native/src/surveys/index.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/surveys-utils.d.ts +13 -13
- package/lib/posthog-react-native/src/surveys/surveys-utils.js +1 -0
- package/lib/posthog-react-native/src/surveys/surveys-utils.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/useActivatedSurveys.d.ts +3 -3
- package/lib/posthog-react-native/src/surveys/useActivatedSurveys.js +1 -0
- package/lib/posthog-react-native/src/surveys/useActivatedSurveys.js.map +1 -0
- package/lib/posthog-react-native/src/surveys/useSurveyStorage.d.ts +8 -8
- package/lib/posthog-react-native/src/surveys/useSurveyStorage.js +1 -0
- package/lib/posthog-react-native/src/surveys/useSurveyStorage.js.map +1 -0
- package/lib/posthog-react-native/src/types.d.ts +112 -112
- package/lib/posthog-react-native/src/types.js +1 -0
- package/lib/posthog-react-native/src/types.js.map +1 -0
- package/lib/posthog-react-native/src/version.d.ts +1 -1
- package/lib/posthog-react-native/src/version.js +1 -0
- package/lib/posthog-react-native/src/version.js.map +1 -0
- package/lib/posthog-react-native/tsconfig.tsbuildinfo +1 -0
- package/package.json +8 -9
- package/lib/index.cjs.js +0 -4677
- package/lib/index.cjs.js.map +0 -1
- package/lib/index.d.ts +0 -875
- package/lib/index.esm.js +0 -4659
- package/lib/index.esm.js.map +0 -1
- package/lib/posthog-react-native/test/test-utils.d.ts +0 -2
package/lib/index.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../posthog-core/src/types.ts","../../posthog-core/src/featureFlagUtils.ts","../../posthog-core/src/utils.ts","../../posthog-core/src/lz-string.ts","../../posthog-core/src/eventemitter.ts","../../posthog-core/src/vendor/uuidv7.ts","../../posthog-core/src/index.ts","../src/optional/OptionalExpoApplication.ts","../src/optional/OptionalExpoFileSystem.ts","../src/legacy.ts","../src/storage.ts","../src/version.ts","../src/optional/OptionalAsyncStorage.ts","../src/optional/OptionalExpoDevice.ts","../src/optional/OptionalExpoLocalization.ts","../src/optional/OptionalReactNativeDeviceInfo.ts","../src/optional/OptionalReactNativeLocalize.ts","../src/native-deps.tsx","../src/optional/OptionalReactNativeNavigationWix.ts","../src/frameworks/wix-navigation.ts","../src/optional/OptionalSessionReplay.ts","../src/posthog-rn.ts","../src/optional/OptionalReactNativeNavigation.ts","../src/PostHogContext.ts","../src/hooks/usePostHog.ts","../src/hooks/useNavigationTracker.ts","../src/hooks/useFeatureFlags.ts","../src/hooks/useFeatureFlag.ts","../src/autocapture.tsx","../src/PostHogProvider.tsx","../src/surveys/surveys-utils.ts","../src/surveys/icons.tsx","../src/surveys/components/BottomSection.tsx","../src/surveys/components/QuestionHeader.tsx","../src/surveys/components/QuestionTypes.tsx","../src/surveys/components/Surveys.tsx","../src/surveys/getActiveMatchingSurveys.ts","../src/surveys/useSurveyStorage.ts","../src/surveys/useActivatedSurveys.ts","../src/surveys/components/Cancel.tsx","../src/surveys/components/ConfirmationMessage.tsx","../src/optional/OptionalReactNativeSafeArea.ts","../src/surveys/components/SurveyModal.tsx","../src/surveys/PostHogSurveyProvider.tsx"],"sourcesContent":["export type PostHogCoreOptions = {\n /** PostHog API host, usually 'https://us.i.posthog.com' or 'https://eu.i.posthog.com' */\n host?: string\n /** The number of events to queue before sending to PostHog (flushing) */\n flushAt?: number\n /** The interval in milliseconds between periodic flushes */\n flushInterval?: number\n /** The maximum number of queued messages to be flushed as part of a single batch (must be higher than `flushAt`) */\n maxBatchSize?: number\n /** The maximum number of cached messages either in memory or on the local storage.\n * Defaults to 1000, (must be higher than `flushAt`)\n */\n maxQueueSize?: number\n /** If set to true the SDK is essentially disabled (useful for local environments where you don't want to track anything) */\n disabled?: boolean\n /** If set to false the SDK will not track until the `optIn` function is called. */\n defaultOptIn?: boolean\n /** Whether to track that `getFeatureFlag` was called (used by Experiments) */\n sendFeatureFlagEvent?: boolean\n /** Whether to load feature flags when initialized or not */\n preloadFeatureFlags?: boolean\n /**\n * Whether to load remote config when initialized or not\n * Experimental support\n * Default: false - Remote config is loaded by default\n */\n disableRemoteConfig?: boolean\n /**\n * Whether to load surveys when initialized or not\n * Experimental support\n * Default: false - Surveys are loaded by default, but requires the `PostHogSurveyProvider` to be used\n */\n disableSurveys?: boolean\n /** Option to bootstrap the library with given distinctId and feature flags */\n bootstrap?: {\n distinctId?: string\n isIdentifiedId?: boolean\n featureFlags?: Record<string, FeatureFlagValue>\n featureFlagPayloads?: Record<string, JsonType>\n }\n /** How many times we will retry HTTP requests. Defaults to 3. */\n fetchRetryCount?: number\n /** The delay between HTTP request retries, Defaults to 3 seconds. */\n fetchRetryDelay?: number\n /** Timeout in milliseconds for any calls. Defaults to 10 seconds. */\n requestTimeout?: number\n /** Timeout in milliseconds for feature flag calls. Defaults to 10 seconds for stateful clients, and 3 seconds for stateless. */\n featureFlagsRequestTimeoutMs?: number\n /** Timeout in milliseconds for remote config calls. Defaults to 3 seconds. */\n remoteConfigRequestTimeoutMs?: number\n /** For Session Analysis how long before we expire a session (defaults to 30 mins) */\n sessionExpirationTimeSeconds?: number\n /** Whether to post events to PostHog in JSON or compressed format. Defaults to 'json' */\n captureMode?: 'json' | 'form'\n disableGeoip?: boolean\n /** Special flag to indicate ingested data is for a historical migration. */\n historicalMigration?: boolean\n}\n\nexport enum PostHogPersistedProperty {\n AnonymousId = 'anonymous_id',\n DistinctId = 'distinct_id',\n Props = 'props',\n FeatureFlagDetails = 'feature_flag_details',\n FeatureFlags = 'feature_flags',\n FeatureFlagPayloads = 'feature_flag_payloads',\n BootstrapFeatureFlagDetails = 'bootstrap_feature_flag_details',\n BootstrapFeatureFlags = 'bootstrap_feature_flags',\n BootstrapFeatureFlagPayloads = 'bootstrap_feature_flag_payloads',\n OverrideFeatureFlags = 'override_feature_flags',\n Queue = 'queue',\n OptedOut = 'opted_out',\n SessionId = 'session_id',\n SessionLastTimestamp = 'session_timestamp',\n PersonProperties = 'person_properties',\n GroupProperties = 'group_properties',\n InstalledAppBuild = 'installed_app_build', // only used by posthog-react-native\n InstalledAppVersion = 'installed_app_version', // only used by posthog-react-native\n SessionReplay = 'session_replay', // only used by posthog-react-native\n DecideEndpointWasHit = 'decide_endpoint_was_hit', // only used by posthog-react-native\n SurveyLastSeenDate = 'survey_last_seen_date', // only used by posthog-react-native\n SurveysSeen = 'surveys_seen', // only used by posthog-react-native\n Surveys = 'surveys', // only used by posthog-react-native\n RemoteConfig = 'remote_config',\n}\n\nexport type PostHogFetchOptions = {\n method: 'GET' | 'POST' | 'PUT' | 'PATCH'\n mode?: 'no-cors'\n credentials?: 'omit'\n headers: { [key: string]: string }\n body?: string\n signal?: AbortSignal\n}\n\n// Check out posthog-js for these additional options and try to keep them in sync\nexport type PostHogCaptureOptions = {\n /** If provided overrides the auto-generated event ID */\n uuid?: string\n /** If provided overrides the auto-generated timestamp */\n timestamp?: Date\n disableGeoip?: boolean\n}\n\nexport type PostHogFetchResponse = {\n status: number\n text: () => Promise<string>\n json: () => Promise<any>\n}\n\nexport type PostHogQueueItem = {\n message: any\n callback?: (err: any) => void\n}\n\nexport type PostHogEventProperties = {\n [key: string]: any\n}\n\nexport type PostHogAutocaptureElement = {\n $el_text?: string\n tag_name: string\n href?: string\n nth_child?: number\n nth_of_type?: number\n order?: number\n} & {\n [key: string]: any\n} // Any key prefixed with `attr__` can be added\n\nexport type PostHogRemoteConfig = {\n sessionRecording?:\n | boolean\n | {\n [key: string]: JsonType\n }\n\n /**\n * Whether surveys are enabled\n */\n surveys?: boolean | Survey[]\n\n /**\n * Indicates if the team has any flags enabled (if not we don't need to load them)\n */\n hasFeatureFlags?: boolean\n}\n\nexport type FeatureFlagValue = string | boolean\n\nexport type PostHogDecideResponse = Omit<PostHogRemoteConfig, 'surveys' | 'hasFeatureFlags'> & {\n featureFlags: {\n [key: string]: FeatureFlagValue\n }\n featureFlagPayloads: {\n [key: string]: JsonType\n }\n flags: {\n [key: string]: FeatureFlagDetail\n }\n errorsWhileComputingFlags: boolean\n sessionRecording?:\n | boolean\n | {\n [key: string]: JsonType\n }\n quotaLimited?: string[]\n requestId?: string\n}\n\nexport type PostHogFeatureFlagsResponse = PartialWithRequired<\n PostHogDecideResponse,\n 'flags' | 'featureFlags' | 'featureFlagPayloads' | 'requestId'\n>\n\n/**\n * Creates a type with all properties of T, but makes only K properties required while the rest remain optional.\n *\n * @template T - The base type containing all properties\n * @template K - Union type of keys from T that should be required\n *\n * @example\n * interface User {\n * id: number;\n * name: string;\n * email?: string;\n * age?: number;\n * }\n *\n * // Makes 'id' and 'name' required, but 'email' and 'age' optional\n * type RequiredUser = PartialWithRequired<User, 'id' | 'name'>;\n *\n * const user: RequiredUser = {\n * id: 1, // Must be provided\n * name: \"John\" // Must be provided\n * // email and age are optional\n * };\n */\nexport type PartialWithRequired<T, K extends keyof T> = {\n [P in K]: T[P] // Required fields\n} & {\n [P in Exclude<keyof T, K>]?: T[P] // Optional fields\n}\n\n/**\n * These are the fields we care about from PostHogDecideResponse for feature flags.\n */\nexport type PostHogFeatureFlagDetails = PartialWithRequired<\n PostHogDecideResponse,\n 'flags' | 'featureFlags' | 'featureFlagPayloads' | 'requestId'\n>\n\n/**\n * Models the response from the v3 `/decide` endpoint.\n */\nexport type PostHogV3DecideResponse = Omit<PostHogDecideResponse, 'flags'>\nexport type PostHogV4DecideResponse = Omit<PostHogDecideResponse, 'featureFlags' | 'featureFlagPayloads'>\n\n/**\n * The format of the flags object in persisted storage\n *\n * When we pull flags from persistence, we can normalize them to PostHogFeatureFlagDetails\n * so that we can support v3 and v4 of the API.\n */\nexport type PostHogFlagsStorageFormat = Pick<PostHogFeatureFlagDetails, 'flags'>\n\n/**\n * Models legacy flags and payloads return type for many public methods.\n */\nexport type PostHogFlagsAndPayloadsResponse = Partial<\n Pick<PostHogDecideResponse, 'featureFlags' | 'featureFlagPayloads'>\n>\n\nexport type JsonType = string | number | boolean | null | { [key: string]: JsonType } | Array<JsonType>\n\nexport type FetchLike = (url: string, options: PostHogFetchOptions) => Promise<PostHogFetchResponse>\n\nexport type FeatureFlagDetail = {\n key: string\n enabled: boolean\n variant: string | undefined\n reason: EvaluationReason | undefined\n metadata: FeatureFlagMetadata | undefined\n}\n\nexport type FeatureFlagMetadata = {\n id: number | undefined\n version: number | undefined\n description: string | undefined\n // Payloads in the response are always JSON encoded as a string\n payload: string | undefined\n}\n\nexport type EvaluationReason = {\n code: string | undefined\n condition_index: number | undefined\n description: string | undefined\n}\n\n// survey types\nexport type SurveyAppearance = {\n // keep in sync with frontend/src/types.ts -> SurveyAppearance\n backgroundColor?: string\n submitButtonColor?: string\n // deprecate submit button text eventually\n submitButtonText?: string\n submitButtonTextColor?: string\n ratingButtonColor?: string\n ratingButtonActiveColor?: string\n autoDisappear?: boolean\n displayThankYouMessage?: boolean\n thankYouMessageHeader?: string\n thankYouMessageDescription?: string\n thankYouMessageDescriptionContentType?: SurveyQuestionDescriptionContentType\n thankYouMessageCloseButtonText?: string\n borderColor?: string\n position?: SurveyPosition\n placeholder?: string\n shuffleQuestions?: boolean\n surveyPopupDelaySeconds?: number\n // widget options\n widgetType?: SurveyWidgetType\n widgetSelector?: string\n widgetLabel?: string\n widgetColor?: string\n}\n\nexport enum SurveyPosition {\n Left = 'left',\n Right = 'right',\n Center = 'center',\n}\n\nexport enum SurveyWidgetType {\n Button = 'button',\n Tab = 'tab',\n Selector = 'selector',\n}\n\nexport enum SurveyType {\n Popover = 'popover',\n API = 'api',\n Widget = 'widget',\n}\n\nexport type SurveyQuestion = BasicSurveyQuestion | LinkSurveyQuestion | RatingSurveyQuestion | MultipleSurveyQuestion\n\nexport enum SurveyQuestionDescriptionContentType {\n Html = 'html',\n Text = 'text',\n}\n\ntype SurveyQuestionBase = {\n question: string\n id?: string // TODO: use this for the question id\n description?: string\n descriptionContentType?: SurveyQuestionDescriptionContentType\n optional?: boolean\n buttonText?: string\n originalQuestionIndex: number\n branching?: NextQuestionBranching | EndBranching | ResponseBasedBranching | SpecificQuestionBranching\n}\n\nexport type BasicSurveyQuestion = SurveyQuestionBase & {\n type: SurveyQuestionType.Open\n}\n\nexport type LinkSurveyQuestion = SurveyQuestionBase & {\n type: SurveyQuestionType.Link\n link?: string\n}\n\nexport type RatingSurveyQuestion = SurveyQuestionBase & {\n type: SurveyQuestionType.Rating\n display: SurveyRatingDisplay\n scale: 3 | 5 | 7 | 10\n lowerBoundLabel: string\n upperBoundLabel: string\n}\n\nexport enum SurveyRatingDisplay {\n Number = 'number',\n Emoji = 'emoji',\n}\n\nexport type MultipleSurveyQuestion = SurveyQuestionBase & {\n type: SurveyQuestionType.SingleChoice | SurveyQuestionType.MultipleChoice\n choices: string[]\n hasOpenChoice?: boolean\n shuffleOptions?: boolean\n}\n\nexport enum SurveyQuestionType {\n Open = 'open',\n MultipleChoice = 'multiple_choice',\n SingleChoice = 'single_choice',\n Rating = 'rating',\n Link = 'link',\n}\n\nexport enum SurveyQuestionBranchingType {\n NextQuestion = 'next_question',\n End = 'end',\n ResponseBased = 'response_based',\n SpecificQuestion = 'specific_question',\n}\n\nexport type NextQuestionBranching = {\n type: SurveyQuestionBranchingType.NextQuestion\n}\n\nexport type EndBranching = {\n type: SurveyQuestionBranchingType.End\n}\n\nexport type ResponseBasedBranching = {\n type: SurveyQuestionBranchingType.ResponseBased\n responseValues: Record<string, any>\n}\n\nexport type SpecificQuestionBranching = {\n type: SurveyQuestionBranchingType.SpecificQuestion\n index: number\n}\n\nexport type SurveyResponse = {\n surveys: Survey[]\n}\n\nexport type SurveyCallback = (surveys: Survey[]) => void\n\nexport enum SurveyMatchType {\n Regex = 'regex',\n NotRegex = 'not_regex',\n Exact = 'exact',\n IsNot = 'is_not',\n Icontains = 'icontains',\n NotIcontains = 'not_icontains',\n}\n\nexport type SurveyElement = {\n text?: string\n $el_text?: string\n tag_name?: string\n href?: string\n attr_id?: string\n attr_class?: string[]\n nth_child?: number\n nth_of_type?: number\n attributes?: Record<string, any>\n event_id?: number\n order?: number\n group_id?: number\n}\nexport type SurveyRenderReason = {\n visible: boolean\n disabledReason?: string\n}\n\nexport type Survey = {\n // Sync this with the backend's SurveyAPISerializer!\n id: string\n name: string\n description?: string\n type: SurveyType\n feature_flag_keys?:\n | {\n key: string\n value?: string\n }[]\n linked_flag_key?: string\n targeting_flag_key?: string\n internal_targeting_flag_key?: string\n questions: SurveyQuestion[]\n appearance?: SurveyAppearance\n conditions?: {\n url?: string\n selector?: string\n seenSurveyWaitPeriodInDays?: number\n urlMatchType?: SurveyMatchType\n events?: {\n repeatedActivation?: boolean\n values?: {\n name: string\n }[]\n }\n actions?: {\n values: SurveyActionType[]\n }\n deviceTypes?: string[]\n deviceTypesMatchType?: SurveyMatchType\n }\n start_date?: string\n end_date?: string\n current_iteration?: number\n current_iteration_start_date?: string\n}\n\nexport type SurveyActionType = {\n id: number\n name?: string\n steps?: ActionStepType[]\n}\n\n/** Sync with plugin-server/src/types.ts */\nexport enum ActionStepStringMatching {\n Contains = 'contains',\n Exact = 'exact',\n Regex = 'regex',\n}\n\nexport type ActionStepType = {\n event?: string\n selector?: string\n /** @deprecated Only `selector` should be used now. */\n tag_name?: string\n text?: string\n /** @default StringMatching.Exact */\n text_matching?: ActionStepStringMatching\n href?: string\n /** @default ActionStepStringMatching.Exact */\n href_matching?: ActionStepStringMatching\n url?: string\n /** @default StringMatching.Contains */\n url_matching?: ActionStepStringMatching\n}\n","import {\n FeatureFlagDetail,\n FeatureFlagValue,\n JsonType,\n PostHogDecideResponse,\n PostHogV3DecideResponse,\n PostHogV4DecideResponse,\n PostHogFlagsAndPayloadsResponse,\n PartialWithRequired,\n PostHogFeatureFlagsResponse,\n} from './types'\n\nexport const normalizeDecideResponse = (\n decideResponse:\n | PartialWithRequired<PostHogV4DecideResponse, 'flags'>\n | PartialWithRequired<PostHogV3DecideResponse, 'featureFlags' | 'featureFlagPayloads'>\n): PostHogFeatureFlagsResponse => {\n if ('flags' in decideResponse) {\n // Convert v4 format to v3 format\n const featureFlags = getFlagValuesFromFlags(decideResponse.flags)\n const featureFlagPayloads = getPayloadsFromFlags(decideResponse.flags)\n\n return {\n ...decideResponse,\n featureFlags,\n featureFlagPayloads,\n }\n } else {\n // Convert v3 format to v4 format\n const featureFlags = decideResponse.featureFlags ?? {}\n const featureFlagPayloads = Object.fromEntries(\n Object.entries(decideResponse.featureFlagPayloads || {}).map(([k, v]) => [k, parsePayload(v)])\n )\n\n const flags = Object.fromEntries(\n Object.entries(featureFlags).map(([key, value]) => [\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key]),\n ])\n )\n\n return {\n ...decideResponse,\n featureFlags,\n featureFlagPayloads,\n flags,\n }\n }\n}\n\nfunction getFlagDetailFromFlagAndPayload(\n key: string,\n value: FeatureFlagValue,\n payload: JsonType | undefined\n): FeatureFlagDetail {\n return {\n key: key,\n enabled: typeof value === 'string' ? true : value,\n variant: typeof value === 'string' ? value : undefined,\n reason: undefined,\n metadata: {\n id: undefined,\n version: undefined,\n payload: payload ? JSON.stringify(payload) : undefined,\n description: undefined,\n },\n }\n}\n\n/**\n * Get the flag values from the flags v4 response.\n * @param flags - The flags\n * @returns The flag values\n */\nexport const getFlagValuesFromFlags = (\n flags: PostHogDecideResponse['flags']\n): PostHogDecideResponse['featureFlags'] => {\n return Object.fromEntries(\n Object.entries(flags ?? {})\n .map(([key, detail]) => [key, getFeatureFlagValue(detail)])\n .filter(([, value]): boolean => value !== undefined)\n )\n}\n\n/**\n * Get the payloads from the flags v4 response.\n * @param flags - The flags\n * @returns The payloads\n */\nexport const getPayloadsFromFlags = (\n flags: PostHogDecideResponse['flags']\n): PostHogDecideResponse['featureFlagPayloads'] => {\n const safeFlags = flags ?? {}\n return Object.fromEntries(\n Object.keys(safeFlags)\n .filter((flag) => {\n const details = safeFlags[flag]\n return details.enabled && details.metadata && details.metadata.payload !== undefined\n })\n .map((flag) => {\n const payload = safeFlags[flag].metadata?.payload as string\n return [flag, payload ? parsePayload(payload) : undefined]\n })\n )\n}\n\n/**\n * Get the flag details from the legacy v3 flags and payloads. As such, it will lack the reason, id, version, and description.\n * @param decideResponse - The decide response\n * @returns The flag details\n */\nexport const getFlagDetailsFromFlagsAndPayloads = (\n decideResponse: PostHogFeatureFlagsResponse\n): PostHogDecideResponse['flags'] => {\n const flags = decideResponse.featureFlags ?? {}\n const payloads = decideResponse.featureFlagPayloads ?? {}\n return Object.fromEntries(\n Object.entries(flags).map(([key, value]) => [\n key,\n {\n key: key,\n enabled: typeof value === 'string' ? true : value,\n variant: typeof value === 'string' ? value : undefined,\n reason: undefined,\n metadata: {\n id: undefined,\n version: undefined,\n payload: payloads?.[key] ? JSON.stringify(payloads[key]) : undefined,\n description: undefined,\n },\n },\n ])\n )\n}\n\nexport const getFeatureFlagValue = (detail: FeatureFlagDetail | undefined): FeatureFlagValue | undefined => {\n return detail === undefined ? undefined : detail.variant ?? detail.enabled\n}\n\nexport const parsePayload = (response: any): any => {\n if (typeof response !== 'string') {\n return response\n }\n\n try {\n return JSON.parse(response)\n } catch {\n return response\n }\n}\n\n/**\n * Get the normalized flag details from the flags and payloads.\n * This is used to convert things like boostrap and stored feature flags and payloads to the v4 format.\n * This helps us ensure backwards compatibility.\n * If a key exists in the featureFlagPayloads that is not in the featureFlags, we treat it as a true feature flag.\n *\n * @param featureFlags - The feature flags\n * @param featureFlagPayloads - The feature flag payloads\n * @returns The normalized flag details\n */\nexport const createDecideResponseFromFlagsAndPayloads = (\n featureFlags: PostHogV3DecideResponse['featureFlags'],\n featureFlagPayloads: PostHogV3DecideResponse['featureFlagPayloads']\n): PostHogFeatureFlagsResponse => {\n // If a feature flag payload key is not in the feature flags, we treat it as true feature flag.\n const allKeys = [...new Set([...Object.keys(featureFlags ?? {}), ...Object.keys(featureFlagPayloads ?? {})])]\n const enabledFlags = allKeys\n .filter((flag) => !!featureFlags[flag] || !!featureFlagPayloads[flag])\n .reduce((res: Record<string, FeatureFlagValue>, key) => ((res[key] = featureFlags[key] ?? true), res), {})\n\n const flagDetails: PostHogFlagsAndPayloadsResponse = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {},\n }\n\n return normalizeDecideResponse(flagDetails as PostHogV3DecideResponse)\n}\n\nexport const updateFlagValue = (flag: FeatureFlagDetail, value: FeatureFlagValue): FeatureFlagDetail => {\n return {\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value),\n }\n}\n\nfunction getEnabledFromValue(value: FeatureFlagValue): boolean {\n return typeof value === 'string' ? true : value\n}\n\nfunction getVariantFromValue(value: FeatureFlagValue): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n","import { FetchLike } from './types'\n\n// Rollout constants\nexport const NEW_FLAGS_ROLLOUT_PERCENTAGE = 1\n// The fnv1a hashes of the tokens that are explicitly excluded from the rollout\n// see https://github.com/PostHog/posthog-js-lite/blob/main/posthog-core/src/utils.ts#L84\n// are hashed API tokens from our top 10 for each category supported by this SDK.\nexport const NEW_FLAGS_EXCLUDED_HASHES = new Set([\n // Node\n '61be3dd8',\n '96f6df5f',\n '8cfdba9b',\n 'bf027177',\n 'e59430a8',\n '7fa5500b',\n '569798e9',\n '04809ff7',\n '0ebc61a5',\n '32de7f98',\n '3beeb69a',\n '12d34ad9',\n '733853ec',\n '0645bb64',\n '5dcbee21',\n 'b1f95fa3',\n '2189e408',\n '82b460c2',\n '3a8cc979',\n '29ef8843',\n '2cdbf767',\n '38084b54',\n // React Native\n '50f9f8de',\n '41d0df91',\n '5c236689',\n 'c11aedd3',\n 'ada46672',\n 'f4331ee1',\n '42fed62a',\n 'c957462c',\n 'd62f705a',\n // Web (lots of teams per org, hence lots of API tokens)\n 'e0162666',\n '01b3e5cf',\n '441cef7f',\n 'bb9cafee',\n '8f348eb0',\n 'b2553f3a',\n '97469d7d',\n '39f21a76',\n '03706dcc',\n '27d50569',\n '307584a7',\n '6433e92e',\n '150c7fbb',\n '49f57f22',\n '3772f65b',\n '01eb8256',\n '3c9e9234',\n 'f853c7f7',\n 'c0ac4b67',\n 'cd609d40',\n '10ca9b1a',\n '8a87f11b',\n '8e8e5216',\n '1f6b63b3',\n 'db7943dd',\n '79b7164c',\n '07f78e33',\n '2d21b6fd',\n '952db5ee',\n 'a7d3b43f',\n '1924dd9c',\n '84e1b8f6',\n 'dff631b6',\n 'c5aa8a79',\n 'fa133a95',\n '498a4508',\n '24748755',\n '98f3d658',\n '21bbda67',\n '7dbfed69',\n 'be3ec24c',\n 'fc80b8e2',\n '75cc0998',\n])\n\nexport function assert(truthyValue: any, message: string): void {\n if (!truthyValue || typeof truthyValue !== 'string' || isEmpty(truthyValue)) {\n throw new Error(message)\n }\n}\n\nfunction isEmpty(truthyValue: string): boolean {\n if (truthyValue.trim().length === 0) {\n return true\n }\n return false\n}\n\nexport function removeTrailingSlash(url: string): string {\n return url?.replace(/\\/+$/, '')\n}\n\nexport interface RetriableOptions {\n retryCount: number\n retryDelay: number\n retryCheck: (err: any) => boolean\n}\n\nexport async function retriable<T>(fn: () => Promise<T>, props: RetriableOptions): Promise<T> {\n let lastError = null\n\n for (let i = 0; i < props.retryCount + 1; i++) {\n if (i > 0) {\n // don't wait when it's the last try\n await new Promise<void>((r) => setTimeout(r, props.retryDelay))\n }\n\n try {\n const res = await fn()\n return res\n } catch (e) {\n lastError = e\n if (!props.retryCheck(e)) {\n throw e\n }\n }\n }\n\n throw lastError\n}\n\nexport function currentTimestamp(): number {\n return new Date().getTime()\n}\n\nexport function currentISOTime(): string {\n return new Date().toISOString()\n}\n\nexport function safeSetTimeout(fn: () => void, timeout: number): any {\n // NOTE: we use this so rarely that it is totally fine to do `safeSetTimeout(fn, 0)``\n // rather than setImmediate.\n const t = setTimeout(fn, timeout) as any\n // We unref if available to prevent Node.js hanging on exit\n t?.unref && t?.unref()\n return t\n}\n\n// NOTE: We opt for this slightly imperfect check as the global \"Promise\" object can get mutated in certain environments\nexport const isPromise = (obj: any): obj is Promise<any> => {\n return obj && typeof obj.then === 'function'\n}\n\nexport const isError = (x: unknown): x is Error => {\n return x instanceof Error\n}\n\nexport function getFetch(): FetchLike | undefined {\n return typeof fetch !== 'undefined' ? fetch : typeof globalThis.fetch !== 'undefined' ? globalThis.fetch : undefined\n}\n\n// copied from: https://github.com/PostHog/posthog-js/blob/main/react/src/utils/type-utils.ts#L4\nexport const isFunction = function (f: any): f is (...args: any[]) => any {\n return typeof f === 'function'\n}\n\n// FNV-1a hash function\n// https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\n// I know, I know, I'm rolling my own hash function, but I didn't want to take on\n// a crypto dependency and this is just temporary anyway\nfunction fnv1a(str: string): string {\n let hash = 0x811c9dc5 // FNV offset basis\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i)\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24)\n }\n // Convert to hex string, padding to 8 chars\n return (hash >>> 0).toString(16).padStart(8, '0')\n}\n\nexport function isTokenInRollout(token: string, percentage: number = 0, excludedHashes?: Set<string>): boolean {\n const tokenHash = fnv1a(token)\n // Check excluded hashes (we're explicitly including these tokens from the rollout)\n if (excludedHashes?.has(tokenHash)) {\n return false\n }\n\n // Convert hash to int and divide by max value to get number between 0-1\n const hashInt = parseInt(tokenHash, 16)\n const hashFloat = hashInt / 0xffffffff\n\n return hashFloat < percentage\n}\n","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\n\n// private property\nconst f = String.fromCharCode\nconst keyStrBase64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\nconst baseReverseDic: any = {}\n\nfunction getBaseValue(alphabet: any, character: any): any {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {}\n for (let i = 0; i < alphabet.length; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i\n }\n }\n return baseReverseDic[alphabet][character]\n}\n\nexport const LZString = {\n compressToBase64: function (input: any): string {\n if (input == null) {\n return ''\n }\n const res = LZString._compress(input, 6, function (a: any) {\n return keyStrBase64.charAt(a)\n })\n switch (\n res.length % 4 // To produce valid Base64\n ) {\n default: // When could this happen ?\n case 0:\n return res\n case 1:\n return res + '==='\n case 2:\n return res + '=='\n case 3:\n return res + '='\n }\n },\n\n decompressFromBase64: function (input: any): any {\n if (input == null) {\n return ''\n }\n if (input == '') {\n return null\n }\n return LZString._decompress(input.length, 32, function (index: any) {\n return getBaseValue(keyStrBase64, input.charAt(index))\n })\n },\n\n compress: function (uncompressed: any): any {\n return LZString._compress(uncompressed, 16, function (a: any) {\n return f(a)\n })\n },\n _compress: function (uncompressed: any, bitsPerChar: any, getCharFromInt: any): any {\n if (uncompressed == null) {\n return ''\n }\n const context_dictionary: any = {},\n context_dictionaryToCreate: any = {},\n context_data = []\n\n let i,\n value,\n context_c = '',\n context_wc = '',\n context_w = '',\n context_enlargeIn = 2, // Compensate for the first entry which should not count\n context_dictSize = 3,\n context_numBits = 2,\n context_data_val = 0,\n context_data_position = 0,\n ii\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii)\n if (!Object.prototype.hasOwnProperty.call(context_dictionary, context_c)) {\n context_dictionary[context_c] = context_dictSize++\n context_dictionaryToCreate[context_c] = true\n }\n\n context_wc = context_w + context_c\n if (Object.prototype.hasOwnProperty.call(context_dictionary, context_wc)) {\n context_w = context_wc\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n if (context_w.charCodeAt(0) < 256) {\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n }\n value = context_w.charCodeAt(0)\n for (i = 0; i < 8; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n } else {\n value = 1\n for (i = 0; i < context_numBits; i++) {\n context_data_val = (context_data_val << 1) | value\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = 0\n }\n value = context_w.charCodeAt(0)\n for (i = 0; i < 16; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n }\n context_enlargeIn--\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits)\n context_numBits++\n }\n delete context_dictionaryToCreate[context_w]\n } else {\n value = context_dictionary[context_w]\n for (i = 0; i < context_numBits; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n }\n context_enlargeIn--\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits)\n context_numBits++\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++\n context_w = String(context_c)\n }\n }\n\n // Output the code for w.\n if (context_w !== '') {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n if (context_w.charCodeAt(0) < 256) {\n for (i = 0; i < context_numBits; i++) {\n context_data_val = context_data_val << 1\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n }\n value = context_w.charCodeAt(0)\n for (i = 0; i < 8; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n } else {\n value = 1\n for (i = 0; i < context_numBits; i++) {\n context_data_val = (context_data_val << 1) | value\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = 0\n }\n value = context_w.charCodeAt(0)\n for (i = 0; i < 16; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n }\n context_enlargeIn--\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits)\n context_numBits++\n }\n delete context_dictionaryToCreate[context_w]\n } else {\n value = context_dictionary[context_w]\n for (i = 0; i < context_numBits; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n }\n context_enlargeIn--\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits)\n context_numBits++\n }\n }\n\n // Mark the end of the stream\n value = 2\n for (i = 0; i < context_numBits; i++) {\n context_data_val = (context_data_val << 1) | (value & 1)\n if (context_data_position == bitsPerChar - 1) {\n context_data_position = 0\n context_data.push(getCharFromInt(context_data_val))\n context_data_val = 0\n } else {\n context_data_position++\n }\n value = value >> 1\n }\n\n // Flush the last char\n while (true) {\n context_data_val = context_data_val << 1\n if (context_data_position == bitsPerChar - 1) {\n context_data.push(getCharFromInt(context_data_val))\n break\n } else {\n context_data_position++\n }\n }\n return context_data.join('')\n },\n\n decompress: function (compressed: any): any {\n if (compressed == null) {\n return ''\n }\n if (compressed == '') {\n return null\n }\n return LZString._decompress(compressed.length, 32768, function (index: any) {\n return compressed.charCodeAt(index)\n })\n },\n\n _decompress: function (length: any, resetValue: any, getNextValue: any): any {\n const dictionary = [],\n result = [],\n data = { val: getNextValue(0), position: resetValue, index: 1 }\n\n let next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry: any = '',\n i,\n w,\n bits,\n resb,\n maxpower,\n power,\n c\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i\n }\n\n bits = 0\n maxpower = Math.pow(2, 2)\n power = 1\n while (power != maxpower) {\n resb = data.val & data.position\n data.position >>= 1\n if (data.position == 0) {\n data.position = resetValue\n data.val = getNextValue(data.index++)\n }\n bits |= (resb > 0 ? 1 : 0) * power\n power <<= 1\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n switch ((next = bits)) {\n case 0:\n bits = 0\n maxpower = Math.pow(2, 8)\n power = 1\n while (power != maxpower) {\n resb = data.val & data.position\n data.position >>= 1\n if (data.position == 0) {\n data.position = resetValue\n data.val = getNextValue(data.index++)\n }\n bits |= (resb > 0 ? 1 : 0) * power\n power <<= 1\n }\n c = f(bits)\n break\n case 1:\n bits = 0\n maxpower = Math.pow(2, 16)\n power = 1\n while (power != maxpower) {\n resb = data.val & data.position\n data.position >>= 1\n if (data.position == 0) {\n data.position = resetValue\n data.val = getNextValue(data.index++)\n }\n bits |= (resb > 0 ? 1 : 0) * power\n power <<= 1\n }\n c = f(bits)\n break\n case 2:\n return ''\n }\n dictionary[3] = c\n w = c\n result.push(c)\n while (true) {\n if (data.index > length) {\n return ''\n }\n\n bits = 0\n maxpower = Math.pow(2, numBits)\n power = 1\n while (power != maxpower) {\n resb = data.val & data.position\n data.position >>= 1\n if (data.position == 0) {\n data.position = resetValue\n data.val = getNextValue(data.index++)\n }\n bits |= (resb > 0 ? 1 : 0) * power\n power <<= 1\n }\n\n switch ((c = bits)) {\n case 0:\n bits = 0\n maxpower = Math.pow(2, 8)\n power = 1\n while (power != maxpower) {\n resb = data.val & data.position\n data.position >>= 1\n if (data.position == 0) {\n data.position = resetValue\n data.val = getNextValue(data.index++)\n }\n bits |= (resb > 0 ? 1 : 0) * power\n power <<= 1\n }\n\n dictionary[dictSize++] = f(bits)\n c = dictSize - 1\n enlargeIn--\n break\n case 1:\n bits = 0\n maxpower = Math.pow(2, 16)\n power = 1\n while (power != maxpower) {\n resb = data.val & data.position\n data.position >>= 1\n if (data.position == 0) {\n data.position = resetValue\n data.val = getNextValue(data.index++)\n }\n bits |= (resb > 0 ? 1 : 0) * power\n power <<= 1\n }\n dictionary[dictSize++] = f(bits)\n c = dictSize - 1\n enlargeIn--\n break\n case 2:\n return result.join('')\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits)\n numBits++\n }\n\n if (dictionary[c]) {\n entry = dictionary[c]\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0)\n } else {\n return null\n }\n }\n result.push(entry)\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0)\n enlargeIn--\n\n w = entry\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits)\n numBits++\n }\n }\n },\n}\n","export class SimpleEventEmitter {\n events: { [key: string]: ((...args: any[]) => void)[] } = {}\n\n constructor() {\n this.events = {}\n }\n\n on(event: string, listener: (...args: any[]) => void): () => void {\n if (!this.events[event]) {\n this.events[event] = []\n }\n this.events[event].push(listener)\n\n return () => {\n this.events[event] = this.events[event].filter((x) => x !== listener)\n }\n }\n\n emit(event: string, payload: any): void {\n for (const listener of this.events[event] || []) {\n listener(payload)\n }\n for (const listener of this.events['*'] || []) {\n listener(event, payload)\n }\n }\n}\n","// vendor from: https://github.com/LiosK/uuidv7/blob/f30b7a7faff73afbce0b27a46c638310f96912ba/src/index.ts\n// https://github.com/LiosK/uuidv7#license\n\n/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n */\n\nconst DIGITS = \"0123456789abcdef\";\n\n/** Represents a UUID as a 16-byte byte array. */\nexport class UUID {\n /** @param bytes - The 16-byte byte array representation. */\n private constructor(readonly bytes: Readonly<Uint8Array>) {}\n\n /**\n * Creates an object from the internal representation, a 16-byte byte array\n * containing the binary UUID representation in the big-endian byte order.\n *\n * This method does NOT shallow-copy the argument, and thus the created object\n * holds the reference to the underlying buffer.\n *\n * @throws TypeError if the length of the argument is not 16.\n */\n static ofInner(bytes: Readonly<Uint8Array>): UUID {\n if (bytes.length !== 16) {\n throw new TypeError(\"not 128-bit length\");\n } else {\n return new UUID(bytes);\n }\n }\n\n /**\n * Builds a byte array from UUIDv7 field values.\n *\n * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n * @param randA - A 12-bit `rand_a` field value.\n * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n * @throws RangeError if any field value is out of the specified range.\n */\n static fromFieldsV7(\n unixTsMs: number,\n randA: number,\n randBHi: number,\n randBLo: number,\n ): UUID {\n if (\n !Number.isInteger(unixTsMs) ||\n !Number.isInteger(randA) ||\n !Number.isInteger(randBHi) ||\n !Number.isInteger(randBLo) ||\n unixTsMs < 0 ||\n randA < 0 ||\n randBHi < 0 ||\n randBLo < 0 ||\n unixTsMs > 0xffff_ffff_ffff ||\n randA > 0xfff ||\n randBHi > 0x3fff_ffff ||\n randBLo > 0xffff_ffff\n ) {\n throw new RangeError(\"invalid field value\");\n }\n\n const bytes = new Uint8Array(16);\n bytes[0] = unixTsMs / 2 ** 40;\n bytes[1] = unixTsMs / 2 ** 32;\n bytes[2] = unixTsMs / 2 ** 24;\n bytes[3] = unixTsMs / 2 ** 16;\n bytes[4] = unixTsMs / 2 ** 8;\n bytes[5] = unixTsMs;\n bytes[6] = 0x70 | (randA >>> 8);\n bytes[7] = randA;\n bytes[8] = 0x80 | (randBHi >>> 24);\n bytes[9] = randBHi >>> 16;\n bytes[10] = randBHi >>> 8;\n bytes[11] = randBHi;\n bytes[12] = randBLo >>> 24;\n bytes[13] = randBLo >>> 16;\n bytes[14] = randBLo >>> 8;\n bytes[15] = randBLo;\n return new UUID(bytes);\n }\n\n /**\n * Builds a byte array from a string representation.\n *\n * This method accepts the following formats:\n *\n * - 32-digit hexadecimal format without hyphens: `0189dcd553117d408db09496a2eef37b`\n * - 8-4-4-4-12 hyphenated format: `0189dcd5-5311-7d40-8db0-9496a2eef37b`\n * - Hyphenated format with surrounding braces: `{0189dcd5-5311-7d40-8db0-9496a2eef37b}`\n * - RFC 4122 URN format: `urn:uuid:0189dcd5-5311-7d40-8db0-9496a2eef37b`\n *\n * Leading and trailing whitespaces represents an error.\n *\n * @throws SyntaxError if the argument could not parse as a valid UUID string.\n */\n static parse(uuid: string): UUID {\n let hex: string | undefined = undefined;\n switch (uuid.length) {\n case 32:\n hex = /^[0-9a-f]{32}$/i.exec(uuid)?.[0];\n break;\n case 36:\n hex =\n /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i\n .exec(uuid)\n ?.slice(1, 6)\n .join(\"\");\n break;\n case 38:\n hex =\n /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i\n .exec(uuid)\n ?.slice(1, 6)\n .join(\"\");\n break;\n case 45:\n hex =\n /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i\n .exec(uuid)\n ?.slice(1, 6)\n .join(\"\");\n break;\n default:\n break;\n }\n\n if (hex) {\n const inner = new Uint8Array(16);\n for (let i = 0; i < 16; i += 4) {\n const n = parseInt(hex.substring(2 * i, 2 * i + 8), 16);\n inner[i + 0] = n >>> 24;\n inner[i + 1] = n >>> 16;\n inner[i + 2] = n >>> 8;\n inner[i + 3] = n;\n }\n return new UUID(inner);\n } else {\n throw new SyntaxError(\"could not parse UUID string\");\n }\n }\n\n /**\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (`0189dcd5-5311-7d40-8db0-9496a2eef37b`).\n */\n toString(): string {\n let text = \"\";\n for (let i = 0; i < this.bytes.length; i++) {\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(this.bytes[i] & 0xf);\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n text += \"-\";\n }\n }\n return text;\n }\n\n /**\n * @returns The 32-digit hexadecimal representation without hyphens\n * (`0189dcd553117d408db09496a2eef37b`).\n */\n toHex(): string {\n let text = \"\";\n for (let i = 0; i < this.bytes.length; i++) {\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(this.bytes[i] & 0xf);\n }\n return text;\n }\n\n /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n toJSON(): string {\n return this.toString();\n }\n\n /**\n * Reports the variant field value of the UUID or, if appropriate, \"NIL\" or\n * \"MAX\".\n *\n * For convenience, this method reports \"NIL\" or \"MAX\" if `this` represents\n * the Nil or Max UUID, although the Nil and Max UUIDs are technically\n * subsumed under the variants `0b0` and `0b111`, respectively.\n */\n getVariant():\n | \"VAR_0\"\n | \"VAR_10\"\n | \"VAR_110\"\n | \"VAR_RESERVED\"\n | \"NIL\"\n | \"MAX\" {\n const n = this.bytes[8] >>> 4;\n if (n < 0) {\n throw new Error(\"unreachable\");\n } else if (n <= 0b0111) {\n return this.bytes.every((e) => e === 0) ? \"NIL\" : \"VAR_0\";\n } else if (n <= 0b1011) {\n return \"VAR_10\";\n } else if (n <= 0b1101) {\n return \"VAR_110\";\n } else if (n <= 0b1111) {\n return this.bytes.every((e) => e === 0xff) ? \"MAX\" : \"VAR_RESERVED\";\n } else {\n throw new Error(\"unreachable\");\n }\n }\n\n /**\n * Returns the version field value of the UUID or `undefined` if the UUID does\n * not have the variant field value of `0b10`.\n */\n getVersion(): number | undefined {\n return this.getVariant() === \"VAR_10\" ? this.bytes[6] >>> 4 : undefined;\n }\n\n /** Creates an object from `this`. */\n clone(): UUID {\n return new UUID(this.bytes.slice(0));\n }\n\n /** Returns true if `this` is equivalent to `other`. */\n equals(other: UUID): boolean {\n return this.compareTo(other) === 0;\n }\n\n /**\n * Returns a negative integer, zero, or positive integer if `this` is less\n * than, equal to, or greater than `other`, respectively.\n */\n compareTo(other: UUID): number {\n for (let i = 0; i < 16; i++) {\n const diff = this.bytes[i] - other.bytes[i];\n if (diff !== 0) {\n return Math.sign(diff);\n }\n }\n return 0;\n }\n}\n\n/**\n * Encapsulates the monotonic counter state.\n *\n * This class provides APIs to utilize a separate counter state from that of the\n * global generator used by {@link uuidv7} and {@link uuidv7obj}. In addition to\n * the default {@link generate} method, this class has {@link generateOrAbort}\n * that is useful to absolutely guarantee the monotonically increasing order of\n * generated UUIDs. See their respective documentation for details.\n */\nexport class V7Generator {\n private timestamp = 0;\n private counter = 0;\n\n /** The random number generator used by the generator. */\n private readonly random: { nextUint32(): number };\n\n /**\n * Creates a generator object with the default random number generator, or\n * with the specified one if passed as an argument. The specified random\n * number generator should be cryptographically strong and securely seeded.\n */\n constructor(randomNumberGenerator?: {\n /** Returns a 32-bit random unsigned integer. */\n nextUint32(): number;\n }) {\n this.random = randomNumberGenerator ?? getDefaultRandom();\n }\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or resets the\n * generator upon significant timestamp rollback.\n *\n * This method returns a monotonically increasing UUID by reusing the previous\n * timestamp even if the up-to-date timestamp is smaller than the immediately\n * preceding UUID's. However, when such a clock rollback is considered\n * significant (i.e., by more than ten seconds), this method resets the\n * generator and returns a new UUID based on the given timestamp, breaking the\n * increasing order of UUIDs.\n *\n * See {@link generateOrAbort} for the other mode of generation and\n * {@link generateOrResetCore} for the low-level primitive.\n */\n generate(): UUID {\n return this.generateOrResetCore(Date.now(), 10_000);\n }\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or returns\n * `undefined` upon significant timestamp rollback.\n *\n * This method returns a monotonically increasing UUID by reusing the previous\n * timestamp even if the up-to-date timestamp is smaller than the immediately\n * preceding UUID's. However, when such a clock rollback is considered\n * significant (i.e., by more than ten seconds), this method aborts and\n * returns `undefined` immediately.\n *\n * See {@link generate} for the other mode of generation and\n * {@link generateOrAbortCore} for the low-level primitive.\n */\n generateOrAbort(): UUID | undefined {\n return this.generateOrAbortCore(Date.now(), 10_000);\n }\n\n /**\n * Generates a new UUIDv7 object from the `unixTsMs` passed, or resets the\n * generator upon significant timestamp rollback.\n *\n * This method is equivalent to {@link generate} except that it takes a custom\n * timestamp and clock rollback allowance.\n *\n * @param rollbackAllowance - The amount of `unixTsMs` rollback that is\n * considered significant. A suggested value is `10_000` (milliseconds).\n * @throws RangeError if `unixTsMs` is not a 48-bit positive integer.\n */\n generateOrResetCore(unixTsMs: number, rollbackAllowance: number): UUID {\n let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n if (value === undefined) {\n // reset state and resume\n this.timestamp = 0;\n value = this.generateOrAbortCore(unixTsMs, rollbackAllowance)!;\n }\n return value;\n }\n\n /**\n * Generates a new UUIDv7 object from the `unixTsMs` passed, or returns\n * `undefined` upon significant timestamp rollback.\n *\n * This method is equivalent to {@link generateOrAbort} except that it takes a\n * custom timestamp and clock rollback allowance.\n *\n * @param rollbackAllowance - The amount of `unixTsMs` rollback that is\n * considered significant. A suggested value is `10_000` (milliseconds).\n * @throws RangeError if `unixTsMs` is not a 48-bit positive integer.\n */\n generateOrAbortCore(\n unixTsMs: number,\n rollbackAllowance: number,\n ): UUID | undefined {\n const MAX_COUNTER = 0x3ff_ffff_ffff;\n\n if (\n !Number.isInteger(unixTsMs) ||\n unixTsMs < 1 ||\n unixTsMs > 0xffff_ffff_ffff\n ) {\n throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n } else if (rollbackAllowance < 0 || rollbackAllowance > 0xffff_ffff_ffff) {\n throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n }\n\n if (unixTsMs > this.timestamp) {\n this.timestamp = unixTsMs;\n this.resetCounter();\n } else if (unixTsMs + rollbackAllowance >= this.timestamp) {\n // go on with previous timestamp if new one is not much smaller\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n // increment timestamp at counter overflow\n this.timestamp++;\n this.resetCounter();\n }\n } else {\n // abort if clock went backwards to unbearable extent\n return undefined;\n }\n\n return UUID.fromFieldsV7(\n this.timestamp,\n Math.trunc(this.counter / 2 ** 30),\n this.counter & (2 ** 30 - 1),\n this.random.nextUint32(),\n );\n }\n\n /** Initializes the counter at a 42-bit random integer. */\n private resetCounter(): void {\n this.counter =\n this.random.nextUint32() * 0x400 + (this.random.nextUint32() & 0x3ff);\n }\n\n /**\n * Generates a new UUIDv4 object utilizing the random number generator inside.\n *\n * @internal\n */\n generateV4(): UUID {\n const bytes = new Uint8Array(\n Uint32Array.of(\n this.random.nextUint32(),\n this.random.nextUint32(),\n this.random.nextUint32(),\n this.random.nextUint32(),\n ).buffer,\n );\n bytes[6] = 0x40 | (bytes[6] >>> 4);\n bytes[8] = 0x80 | (bytes[8] >>> 2);\n return UUID.ofInner(bytes);\n }\n}\n\n/** A global flag to force use of cryptographically strong RNG. */\n// declare const UUIDV7_DENY_WEAK_RNG: boolean;\n\n/** Returns the default random number generator available in the environment. */\nconst getDefaultRandom = (): { nextUint32(): number } => {\n// fix: crypto isn't available in react-native, always use Math.random\n\n// // detect Web Crypto API\n// if (\n// typeof crypto !== \"undefined\" &&\n// typeof crypto.getRandomValues !== \"undefined\"\n// ) {\n// return new BufferedCryptoRandom();\n// } else {\n// // fall back on Math.random() unless the flag is set to true\n// if (typeof UUIDV7_DENY_WEAK_RNG !== \"undefined\" && UUIDV7_DENY_WEAK_RNG) {\n// throw new Error(\"no cryptographically strong RNG available\");\n// }\n// return {\n// nextUint32: (): number =>\n// Math.trunc(Math.random() * 0x1_0000) * 0x1_0000 +\n// Math.trunc(Math.random() * 0x1_0000),\n// };\n// }\n return {\n nextUint32: (): number =>\n Math.trunc(Math.random() * 0x1_0000) * 0x1_0000 +\n Math.trunc(Math.random() * 0x1_0000),\n };\n};\n\n// /**\n// * Wraps `crypto.getRandomValues()` to enable buffering; this uses a small\n// * buffer by default to avoid both unbearable throughput decline in some\n// * environments and the waste of time and space for unused values.\n// */\n// class BufferedCryptoRandom {\n// private readonly buffer = new Uint32Array(8);\n// private cursor = 0xffff;\n// nextUint32(): number {\n// if (this.cursor >= this.buffer.length) {\n// crypto.getRandomValues(this.buffer);\n// this.cursor = 0;\n// }\n// return this.buffer[this.cursor++];\n// }\n// }\n\nlet defaultGenerator: V7Generator | undefined;\n\n/**\n * Generates a UUIDv7 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv7 = (): string => uuidv7obj().toString();\n\n/** Generates a UUIDv7 object. */\nexport const uuidv7obj = (): UUID =>\n (defaultGenerator || (defaultGenerator = new V7Generator())).generate();\n\n/**\n * Generates a UUIDv4 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv4 = (): string => uuidv4obj().toString();\n\n/** Generates a UUIDv4 object. */\nexport const uuidv4obj = (): UUID =>\n (defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\n","import {\n PostHogFetchOptions,\n PostHogFetchResponse,\n PostHogQueueItem,\n PostHogAutocaptureElement,\n PostHogDecideResponse,\n PostHogCoreOptions,\n PostHogEventProperties,\n PostHogPersistedProperty,\n PostHogCaptureOptions,\n JsonType,\n PostHogRemoteConfig,\n FeatureFlagValue,\n PostHogV4DecideResponse,\n PostHogV3DecideResponse,\n PostHogFeatureFlagDetails,\n PostHogFlagsStorageFormat,\n FeatureFlagDetail,\n Survey,\n SurveyResponse,\n} from './types'\nimport {\n createDecideResponseFromFlagsAndPayloads,\n getFeatureFlagValue,\n getFlagValuesFromFlags,\n getPayloadsFromFlags,\n normalizeDecideResponse,\n updateFlagValue,\n} from './featureFlagUtils'\nimport {\n assert,\n currentISOTime,\n currentTimestamp,\n isError,\n isTokenInRollout,\n NEW_FLAGS_EXCLUDED_HASHES,\n NEW_FLAGS_ROLLOUT_PERCENTAGE,\n removeTrailingSlash,\n retriable,\n RetriableOptions,\n safeSetTimeout,\n} from './utils'\nimport { LZString } from './lz-string'\nimport { SimpleEventEmitter } from './eventemitter'\nimport { uuidv7 } from './vendor/uuidv7'\n\nexport * as utils from './utils'\n\nclass PostHogFetchHttpError extends Error {\n name = 'PostHogFetchHttpError'\n\n constructor(public response: PostHogFetchResponse) {\n super('HTTP error while fetching PostHog: ' + response.status)\n }\n}\n\nclass PostHogFetchNetworkError extends Error {\n name = 'PostHogFetchNetworkError'\n\n constructor(public error: unknown) {\n // TRICKY: \"cause\" is a newer property but is just ignored otherwise. Cast to any to ignore the type issue.\n // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error\n // @ts-ignore\n super('Network error while fetching PostHog', error instanceof Error ? { cause: error } : {})\n }\n}\n\nfunction isPostHogFetchError(err: any): boolean {\n return typeof err === 'object' && (err instanceof PostHogFetchHttpError || err instanceof PostHogFetchNetworkError)\n}\n\nenum QuotaLimitedFeature {\n FeatureFlags = 'feature_flags',\n Recordings = 'recordings',\n}\n\nexport abstract class PostHogCoreStateless {\n // options\n readonly apiKey: string\n readonly host: string\n readonly flushAt: number\n readonly preloadFeatureFlags: boolean\n readonly disableSurveys: boolean\n private maxBatchSize: number\n private maxQueueSize: number\n private flushInterval: number\n private flushPromise: Promise<any> | null = null\n private requestTimeout: number\n private featureFlagsRequestTimeoutMs: number\n private remoteConfigRequestTimeoutMs: number\n private captureMode: 'form' | 'json'\n private removeDebugCallback?: () => void\n private disableGeoip: boolean\n private historicalMigration: boolean\n protected disabled\n\n private defaultOptIn: boolean\n private pendingPromises: Record<string, Promise<any>> = {}\n\n // internal\n protected _events = new SimpleEventEmitter()\n protected _flushTimer?: any\n protected _retryOptions: RetriableOptions\n protected _initPromise: Promise<void>\n protected _isInitialized: boolean = false\n protected _remoteConfigResponsePromise?: Promise<PostHogRemoteConfig | undefined>\n\n // Abstract methods to be overridden by implementations\n abstract fetch(url: string, options: PostHogFetchOptions): Promise<PostHogFetchResponse>\n abstract getLibraryId(): string\n abstract getLibraryVersion(): string\n abstract getCustomUserAgent(): string | void\n\n // This is our abstracted storage. Each implementation should handle its own\n abstract getPersistedProperty<T>(key: PostHogPersistedProperty): T | undefined\n abstract setPersistedProperty<T>(key: PostHogPersistedProperty, value: T | null): void\n\n constructor(apiKey: string, options?: PostHogCoreOptions) {\n assert(apiKey, \"You must pass your PostHog project's api key.\")\n\n this.apiKey = apiKey\n this.host = removeTrailingSlash(options?.host || 'https://us.i.posthog.com')\n this.flushAt = options?.flushAt ? Math.max(options?.flushAt, 1) : 20\n this.maxBatchSize = Math.max(this.flushAt, options?.maxBatchSize ?? 100)\n this.maxQueueSize = Math.max(this.flushAt, options?.maxQueueSize ?? 1000)\n this.flushInterval = options?.flushInterval ?? 10000\n this.captureMode = options?.captureMode || 'json'\n this.preloadFeatureFlags = options?.preloadFeatureFlags ?? true\n // If enable is explicitly set to false we override the optout\n this.defaultOptIn = options?.defaultOptIn ?? true\n this.disableSurveys = options?.disableSurveys ?? false\n\n this._retryOptions = {\n retryCount: options?.fetchRetryCount ?? 3,\n retryDelay: options?.fetchRetryDelay ?? 3000, // 3 seconds\n retryCheck: isPostHogFetchError,\n }\n this.requestTimeout = options?.requestTimeout ?? 10000 // 10 seconds\n this.featureFlagsRequestTimeoutMs = options?.featureFlagsRequestTimeoutMs ?? 3000 // 3 seconds\n this.remoteConfigRequestTimeoutMs = options?.remoteConfigRequestTimeoutMs ?? 3000 // 3 seconds\n this.disableGeoip = options?.disableGeoip ?? true\n this.disabled = options?.disabled ?? false\n this.historicalMigration = options?.historicalMigration ?? false\n // Init promise allows the derived class to block calls until it is ready\n this._initPromise = Promise.resolve()\n this._isInitialized = true\n }\n\n protected logMsgIfDebug(fn: () => void): void {\n if (this.isDebug) {\n fn()\n }\n }\n\n protected wrap(fn: () => void): void {\n if (this.disabled) {\n this.logMsgIfDebug(() => console.warn('[PostHog] The client is disabled'))\n return\n }\n\n if (this._isInitialized) {\n // NOTE: We could also check for the \"opt in\" status here...\n return fn()\n }\n\n this._initPromise.then(() => fn())\n }\n\n protected getCommonEventProperties(): any {\n return {\n $lib: this.getLibraryId(),\n $lib_version: this.getLibraryVersion(),\n }\n }\n\n public get optedOut(): boolean {\n return this.getPersistedProperty(PostHogPersistedProperty.OptedOut) ?? !this.defaultOptIn\n }\n\n async optIn(): Promise<void> {\n this.wrap(() => {\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, false)\n })\n }\n\n async optOut(): Promise<void> {\n this.wrap(() => {\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, true)\n })\n }\n\n on(event: string, cb: (...args: any[]) => void): () => void {\n return this._events.on(event, cb)\n }\n\n debug(enabled: boolean = true): void {\n this.removeDebugCallback?.()\n\n if (enabled) {\n const removeDebugCallback = this.on('*', (event, payload) => console.log('PostHog Debug', event, payload))\n this.removeDebugCallback = () => {\n removeDebugCallback()\n this.removeDebugCallback = undefined\n }\n }\n }\n\n get isDebug(): boolean {\n return !!this.removeDebugCallback\n }\n\n get isDisabled(): boolean {\n return this.disabled\n }\n\n private buildPayload(payload: { distinct_id: string; event: string; properties?: PostHogEventProperties }): any {\n return {\n distinct_id: payload.distinct_id,\n event: payload.event,\n properties: {\n ...(payload.properties || {}),\n ...this.getCommonEventProperties(), // Common PH props\n },\n }\n }\n\n protected addPendingPromise<T>(promise: Promise<T>): Promise<T> {\n const promiseUUID = uuidv7()\n this.pendingPromises[promiseUUID] = promise\n promise\n .catch(() => {})\n .finally(() => {\n delete this.pendingPromises[promiseUUID]\n })\n\n return promise\n }\n\n /***\n *** TRACKING\n ***/\n protected identifyStateless(\n distinctId: string,\n properties?: PostHogEventProperties,\n options?: PostHogCaptureOptions\n ): void {\n this.wrap(() => {\n // The properties passed to identifyStateless are event properties.\n // To add person properties, pass in all person properties to the `$set` and `$set_once` keys.\n\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties,\n }),\n }\n\n this.enqueue('identify', payload, options)\n })\n }\n\n protected captureStateless(\n distinctId: string,\n event: string,\n properties?: { [key: string]: any },\n options?: PostHogCaptureOptions\n ): void {\n this.wrap(() => {\n const payload = this.buildPayload({ distinct_id: distinctId, event, properties })\n this.enqueue('capture', payload, options)\n })\n }\n\n protected aliasStateless(\n alias: string,\n distinctId: string,\n properties?: { [key: string]: any },\n options?: PostHogCaptureOptions\n ): void {\n this.wrap(() => {\n const payload = this.buildPayload({\n event: '$create_alias',\n distinct_id: distinctId,\n properties: {\n ...(properties || {}),\n distinct_id: distinctId,\n alias,\n },\n })\n\n this.enqueue('alias', payload, options)\n })\n }\n\n /***\n *** GROUPS\n ***/\n protected groupIdentifyStateless(\n groupType: string,\n groupKey: string | number,\n groupProperties?: PostHogEventProperties,\n options?: PostHogCaptureOptions,\n distinctId?: string,\n eventProperties?: PostHogEventProperties\n ): void {\n this.wrap(() => {\n const payload = this.buildPayload({\n distinct_id: distinctId || `$${groupType}_${groupKey}`,\n event: '$groupidentify',\n properties: {\n $group_type: groupType,\n $group_key: groupKey,\n $group_set: groupProperties || {},\n ...(eventProperties || {}),\n },\n })\n\n this.enqueue('capture', payload, options)\n })\n }\n\n protected async getRemoteConfig(): Promise<PostHogRemoteConfig | undefined> {\n await this._initPromise\n\n let host = this.host\n\n if (host === 'https://us.i.posthog.com') {\n host = 'https://us-assets.i.posthog.com'\n } else if (host === 'https://eu.i.posthog.com') {\n host = 'https://eu-assets.i.posthog.com'\n }\n\n const url = `${host}/array/${this.apiKey}/config`\n const fetchOptions: PostHogFetchOptions = {\n method: 'GET',\n headers: { ...this.getCustomHeaders(), 'Content-Type': 'application/json' },\n }\n // Don't retry remote config API calls\n return this.fetchWithRetry(url, fetchOptions, { retryCount: 0 }, this.remoteConfigRequestTimeoutMs)\n .then((response) => response.json() as Promise<PostHogRemoteConfig>)\n .catch((error) => {\n this.logMsgIfDebug(() => console.error('Remote config could not be loaded', error))\n this._events.emit('error', error)\n return undefined\n })\n }\n\n /***\n *** FEATURE FLAGS\n ***/\n\n protected async getDecide(\n distinctId: string,\n groups: Record<string, string | number> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n extraPayload: Record<string, any> = {}\n ): Promise<PostHogDecideResponse | undefined> {\n await this._initPromise\n\n // Check if the API token is in the new flags rollout\n // This is a temporary measure to ensure that we can still use the old flags API\n // while we migrate to the new flags API\n const useFlags = isTokenInRollout(this.apiKey, NEW_FLAGS_ROLLOUT_PERCENTAGE, NEW_FLAGS_EXCLUDED_HASHES)\n\n const url = useFlags ? `${this.host}/flags/?v=2` : `${this.host}/decide/?v=4`\n const fetchOptions: PostHogFetchOptions = {\n method: 'POST',\n headers: { ...this.getCustomHeaders(), 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token: this.apiKey,\n distinct_id: distinctId,\n groups,\n person_properties: personProperties,\n group_properties: groupProperties,\n ...extraPayload,\n }),\n }\n // Don't retry /decide API calls\n return this.fetchWithRetry(url, fetchOptions, { retryCount: 0 }, this.featureFlagsRequestTimeoutMs)\n .then((response) => response.json() as Promise<PostHogV3DecideResponse | PostHogV4DecideResponse>)\n .then((response) => normalizeDecideResponse(response))\n .catch((error) => {\n this._events.emit('error', error)\n return undefined\n }) as Promise<PostHogDecideResponse | undefined>\n }\n\n protected async getFeatureFlagStateless(\n key: string,\n distinctId: string,\n groups: Record<string, string> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean\n ): Promise<{\n response: FeatureFlagValue | undefined\n requestId: string | undefined\n }> {\n await this._initPromise\n\n const flagDetailResponse = await this.getFeatureFlagDetailStateless(\n key,\n distinctId,\n groups,\n personProperties,\n groupProperties,\n disableGeoip\n )\n\n if (flagDetailResponse === undefined) {\n // If we haven't loaded flags yet, or errored out, we respond with undefined\n return {\n response: undefined,\n requestId: undefined,\n }\n }\n\n let response = getFeatureFlagValue(flagDetailResponse.response)\n\n if (response === undefined) {\n // For cases where the flag is unknown, return false\n response = false\n }\n\n // If we have flags we either return the value (true or string) or false\n return {\n response,\n requestId: flagDetailResponse.requestId,\n }\n }\n\n protected async getFeatureFlagDetailStateless(\n key: string,\n distinctId: string,\n groups: Record<string, string> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean\n ): Promise<\n | {\n response: FeatureFlagDetail | undefined\n requestId: string | undefined\n }\n | undefined\n > {\n await this._initPromise\n\n const decideResponse = await this.getFeatureFlagDetailsStateless(\n distinctId,\n groups,\n personProperties,\n groupProperties,\n disableGeoip,\n [key]\n )\n\n if (decideResponse === undefined) {\n return undefined\n }\n\n const featureFlags = decideResponse.flags\n\n const flagDetail = featureFlags[key]\n\n return {\n response: flagDetail,\n requestId: decideResponse.requestId,\n }\n }\n\n protected async getFeatureFlagPayloadStateless(\n key: string,\n distinctId: string,\n groups: Record<string, string> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean\n ): Promise<JsonType | undefined> {\n await this._initPromise\n\n const payloads = await this.getFeatureFlagPayloadsStateless(\n distinctId,\n groups,\n personProperties,\n groupProperties,\n disableGeoip,\n [key]\n )\n\n if (!payloads) {\n return undefined\n }\n\n const response = payloads[key]\n\n // Undefined means a loading or missing data issue. Null means evaluation happened and there was no match\n if (response === undefined) {\n return null\n }\n\n return response\n }\n\n protected async getFeatureFlagPayloadsStateless(\n distinctId: string,\n groups: Record<string, string> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean,\n flagKeysToEvaluate?: string[]\n ): Promise<PostHogDecideResponse['featureFlagPayloads'] | undefined> {\n await this._initPromise\n\n const payloads = (\n await this.getFeatureFlagsAndPayloadsStateless(\n distinctId,\n groups,\n personProperties,\n groupProperties,\n disableGeoip,\n flagKeysToEvaluate\n )\n ).payloads\n\n return payloads\n }\n\n protected async getFeatureFlagsStateless(\n distinctId: string,\n groups: Record<string, string | number> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean,\n flagKeysToEvaluate?: string[]\n ): Promise<{\n flags: PostHogDecideResponse['featureFlags'] | undefined\n payloads: PostHogDecideResponse['featureFlagPayloads'] | undefined\n requestId: PostHogDecideResponse['requestId'] | undefined\n }> {\n await this._initPromise\n\n return await this.getFeatureFlagsAndPayloadsStateless(\n distinctId,\n groups,\n personProperties,\n groupProperties,\n disableGeoip,\n flagKeysToEvaluate\n )\n }\n\n protected async getFeatureFlagsAndPayloadsStateless(\n distinctId: string,\n groups: Record<string, string | number> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean,\n flagKeysToEvaluate?: string[]\n ): Promise<{\n flags: PostHogDecideResponse['featureFlags'] | undefined\n payloads: PostHogDecideResponse['featureFlagPayloads'] | undefined\n requestId: PostHogDecideResponse['requestId'] | undefined\n }> {\n await this._initPromise\n\n const featureFlagDetails = await this.getFeatureFlagDetailsStateless(\n distinctId,\n groups,\n personProperties,\n groupProperties,\n disableGeoip,\n flagKeysToEvaluate\n )\n\n if (!featureFlagDetails) {\n return {\n flags: undefined,\n payloads: undefined,\n requestId: undefined,\n }\n }\n\n return {\n flags: featureFlagDetails.featureFlags,\n payloads: featureFlagDetails.featureFlagPayloads,\n requestId: featureFlagDetails.requestId,\n }\n }\n\n protected async getFeatureFlagDetailsStateless(\n distinctId: string,\n groups: Record<string, string | number> = {},\n personProperties: Record<string, string> = {},\n groupProperties: Record<string, Record<string, string>> = {},\n disableGeoip?: boolean,\n flagKeysToEvaluate?: string[]\n ): Promise<PostHogFeatureFlagDetails | undefined> {\n await this._initPromise\n\n const extraPayload: Record<string, any> = {}\n if (disableGeoip ?? this.disableGeoip) {\n extraPayload['geoip_disable'] = true\n }\n if (flagKeysToEvaluate) {\n extraPayload['flag_keys_to_evaluate'] = flagKeysToEvaluate\n }\n const decideResponse = await this.getDecide(distinctId, groups, personProperties, groupProperties, extraPayload)\n\n if (decideResponse === undefined) {\n // We probably errored out, so return undefined\n return undefined\n }\n\n // if there's an error on the decideResponse, log a console error, but don't throw an error\n if (decideResponse.errorsWhileComputingFlags) {\n console.error(\n '[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices'\n )\n }\n\n // Add check for quota limitation on feature flags\n if (decideResponse.quotaLimited?.includes(QuotaLimitedFeature.FeatureFlags)) {\n console.warn(\n '[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts'\n )\n return {\n flags: {},\n featureFlags: {},\n featureFlagPayloads: {},\n requestId: decideResponse?.requestId,\n }\n }\n\n return decideResponse\n }\n\n /***\n *** SURVEYS\n ***/\n\n public async getSurveysStateless(): Promise<SurveyResponse['surveys']> {\n await this._initPromise\n\n if (this.disableSurveys === true) {\n this.logMsgIfDebug(() => console.log('Loading surveys is disabled.'))\n return []\n }\n\n const url = `${this.host}/api/surveys/?token=${this.apiKey}`\n const fetchOptions: PostHogFetchOptions = {\n method: 'GET',\n headers: { ...this.getCustomHeaders(), 'Content-Type': 'application/json' },\n }\n\n const response = await this.fetchWithRetry(url, fetchOptions)\n .then((response) => {\n if (response.status !== 200 || !response.json) {\n const msg = `Surveys API could not be loaded: ${response.status}`\n const error = new Error(msg)\n this.logMsgIfDebug(() => console.error(error))\n\n this._events.emit('error', new Error(msg))\n return undefined\n }\n\n return response.json() as Promise<SurveyResponse>\n })\n .catch((error) => {\n this.logMsgIfDebug(() => console.error('Surveys API could not be loaded', error))\n\n this._events.emit('error', error)\n return undefined\n })\n\n const newSurveys = response?.surveys\n\n if (newSurveys) {\n this.logMsgIfDebug(() => console.log('PostHog Debug', 'Surveys fetched from API: ', JSON.stringify(newSurveys)))\n }\n\n return newSurveys ?? []\n }\n\n /***\n *** QUEUEING AND FLUSHING\n ***/\n protected enqueue(type: string, _message: any, options?: PostHogCaptureOptions): void {\n this.wrap(() => {\n if (this.optedOut) {\n this._events.emit(type, `Library is disabled. Not sending event. To re-enable, call posthog.optIn()`)\n return\n }\n\n const message = {\n ..._message,\n type: type,\n library: this.getLibraryId(),\n library_version: this.getLibraryVersion(),\n timestamp: options?.timestamp ? options?.timestamp : currentISOTime(),\n uuid: options?.uuid ? options.uuid : uuidv7(),\n }\n\n const addGeoipDisableProperty = options?.disableGeoip ?? this.disableGeoip\n if (addGeoipDisableProperty) {\n if (!message.properties) {\n message.properties = {}\n }\n message['properties']['$geoip_disable'] = true\n }\n\n if (message.distinctId) {\n message.distinct_id = message.distinctId\n delete message.distinctId\n }\n\n const queue = this.getPersistedProperty<PostHogQueueItem[]>(PostHogPersistedProperty.Queue) || []\n\n if (queue.length >= this.maxQueueSize) {\n queue.shift()\n this.logMsgIfDebug(() => console.info('Queue is full, the oldest event is dropped.'))\n }\n\n queue.push({ message })\n this.setPersistedProperty<PostHogQueueItem[]>(PostHogPersistedProperty.Queue, queue)\n\n this._events.emit(type, message)\n\n // Flush queued events if we meet the flushAt length\n if (queue.length >= this.flushAt) {\n this.flushBackground()\n }\n\n if (this.flushInterval && !this._flushTimer) {\n this._flushTimer = safeSetTimeout(() => this.flushBackground(), this.flushInterval)\n }\n })\n }\n\n private clearFlushTimer(): void {\n if (this._flushTimer) {\n clearTimeout(this._flushTimer)\n this._flushTimer = undefined\n }\n }\n\n /**\n * Helper for flushing the queue in the background\n * Avoids unnecessary promise errors\n */\n private flushBackground(): void {\n void this.flush().catch(() => {})\n }\n\n async flush(): Promise<any[]> {\n if (!this.flushPromise) {\n this.flushPromise = this._flush().finally(() => {\n this.flushPromise = null\n })\n this.addPendingPromise(this.flushPromise)\n }\n return this.flushPromise\n }\n\n protected getCustomHeaders(): { [key: string]: string } {\n // Don't set the user agent if we're not on a browser. The latest spec allows\n // the User-Agent header (see https://fetch.spec.whatwg.org/#terminology-headers\n // and https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader),\n // but browsers such as Chrome and Safari have not caught up.\n const customUserAgent = this.getCustomUserAgent()\n const headers: { [key: string]: string } = {}\n if (customUserAgent && customUserAgent !== '') {\n headers['User-Agent'] = customUserAgent\n }\n return headers\n }\n\n private async _flush(): Promise<any[]> {\n this.clearFlushTimer()\n await this._initPromise\n\n const queue = this.getPersistedProperty<PostHogQueueItem[]>(PostHogPersistedProperty.Queue) || []\n\n if (!queue.length) {\n return []\n }\n\n const items = queue.slice(0, this.maxBatchSize)\n const messages = items.map((item) => item.message)\n\n const persistQueueChange = (): void => {\n const refreshedQueue = this.getPersistedProperty<PostHogQueueItem[]>(PostHogPersistedProperty.Queue) || []\n this.setPersistedProperty<PostHogQueueItem[]>(PostHogPersistedProperty.Queue, refreshedQueue.slice(items.length))\n }\n\n const data: Record<string, any> = {\n api_key: this.apiKey,\n batch: messages,\n sent_at: currentISOTime(),\n }\n\n if (this.historicalMigration) {\n data.historical_migration = true\n }\n\n const payload = JSON.stringify(data)\n\n const url =\n this.captureMode === 'form'\n ? `${this.host}/e/?ip=1&_=${currentTimestamp()}&v=${this.getLibraryVersion()}`\n : `${this.host}/batch/`\n\n const fetchOptions: PostHogFetchOptions =\n this.captureMode === 'form'\n ? {\n method: 'POST',\n mode: 'no-cors',\n credentials: 'omit',\n headers: { ...this.getCustomHeaders(), 'Content-Type': 'application/x-www-form-urlencoded' },\n body: `data=${encodeURIComponent(LZString.compressToBase64(payload))}&compression=lz64`,\n }\n : {\n method: 'POST',\n headers: { ...this.getCustomHeaders(), 'Content-Type': 'application/json' },\n body: payload,\n }\n\n try {\n await this.fetchWithRetry(url, fetchOptions)\n } catch (err) {\n // depending on the error type, eg a malformed JSON or broken queue, it'll always return an error\n // and this will be an endless loop, in this case, if the error isn't a network issue, we always remove the items from the queue\n if (!(err instanceof PostHogFetchNetworkError)) {\n persistQueueChange()\n }\n this._events.emit('error', err)\n\n throw err\n }\n\n persistQueueChange()\n this._events.emit('flush', messages)\n\n return messages\n }\n\n private async fetchWithRetry(\n url: string,\n options: PostHogFetchOptions,\n retryOptions?: Partial<RetriableOptions>,\n requestTimeout?: number\n ): Promise<PostHogFetchResponse> {\n ;(AbortSignal as any).timeout ??= function timeout(ms: number) {\n const ctrl = new AbortController()\n setTimeout(() => ctrl.abort(), ms)\n return ctrl.signal\n }\n\n return await retriable(\n async () => {\n let res: PostHogFetchResponse | null = null\n try {\n res = await this.fetch(url, {\n signal: (AbortSignal as any).timeout(requestTimeout ?? this.requestTimeout),\n ...options,\n })\n } catch (e) {\n // fetch will only throw on network errors or on timeouts\n throw new PostHogFetchNetworkError(e)\n }\n // If we're in no-cors mode, we can't access the response status\n // We only throw on HTTP errors if we're not in no-cors mode\n // https://developer.mozilla.org/en-US/docs/Web/API/Request/mode#no-cors\n const isNoCors = options.mode === 'no-cors'\n if (!isNoCors && (res.status < 200 || res.status >= 400)) {\n throw new PostHogFetchHttpError(res)\n }\n return res\n },\n { ...this._retryOptions, ...retryOptions }\n )\n }\n\n async shutdown(shutdownTimeoutMs: number = 30000): Promise<void> {\n // A little tricky - we want to have a max shutdown time and enforce it, even if that means we have some\n // dangling promises. We'll keep track of the timeout and resolve/reject based on that.\n\n await this._initPromise\n let hasTimedOut = false\n this.clearFlushTimer()\n\n const doShutdown = async (): Promise<void> => {\n try {\n await Promise.all(Object.values(this.pendingPromises))\n\n while (true) {\n const queue = this.getPersistedProperty<PostHogQueueItem[]>(PostHogPersistedProperty.Queue) || []\n\n if (queue.length === 0) {\n break\n }\n\n // flush again to make sure we send all events, some of which might've been added\n // while we were waiting for the pending promises to resolve\n // For example, see sendFeatureFlags in posthog-node/src/posthog-node.ts::capture\n await this.flush()\n\n if (hasTimedOut) {\n break\n }\n }\n } catch (e) {\n if (!isPostHogFetchError(e)) {\n throw e\n }\n this.logMsgIfDebug(() => console.error('Error while shutting down PostHog', e))\n }\n }\n\n return Promise.race([\n new Promise<void>((_, reject) => {\n safeSetTimeout(() => {\n this.logMsgIfDebug(() => console.error('Timed out while shutting down PostHog'))\n hasTimedOut = true\n reject('Timeout while shutting down PostHog. Some events may not have been sent.')\n }, shutdownTimeoutMs)\n }),\n doShutdown(),\n ])\n }\n}\n\nexport abstract class PostHogCore extends PostHogCoreStateless {\n // options\n private sendFeatureFlagEvent: boolean\n private flagCallReported: { [key: string]: boolean } = {}\n\n // internal\n protected _decideResponsePromise?: Promise<PostHogDecideResponse | undefined> // TODO: come back to this, fix typing\n protected _sessionExpirationTimeSeconds: number\n protected sessionProps: PostHogEventProperties = {}\n\n constructor(apiKey: string, options?: PostHogCoreOptions) {\n // Default for stateful mode is to not disable geoip. Only override if explicitly set\n const disableGeoipOption = options?.disableGeoip ?? false\n\n // Default for stateful mode is to timeout at 10s. Only override if explicitly set\n const featureFlagsRequestTimeoutMs = options?.featureFlagsRequestTimeoutMs ?? 10000 // 10 seconds\n\n super(apiKey, { ...options, disableGeoip: disableGeoipOption, featureFlagsRequestTimeoutMs })\n\n this.sendFeatureFlagEvent = options?.sendFeatureFlagEvent ?? true\n this._sessionExpirationTimeSeconds = options?.sessionExpirationTimeSeconds ?? 1800 // 30 minutes\n }\n\n protected setupBootstrap(options?: Partial<PostHogCoreOptions>): void {\n const bootstrap = options?.bootstrap\n if (!bootstrap) {\n return\n }\n\n // bootstrap options are only set if no persisted values are found\n // this is to prevent overwriting existing values\n if (bootstrap.distinctId) {\n if (bootstrap.isIdentifiedId) {\n const distinctId = this.getPersistedProperty(PostHogPersistedProperty.DistinctId)\n\n if (!distinctId) {\n this.setPersistedProperty(PostHogPersistedProperty.DistinctId, bootstrap.distinctId)\n }\n } else {\n const anonymousId = this.getPersistedProperty(PostHogPersistedProperty.AnonymousId)\n\n if (!anonymousId) {\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, bootstrap.distinctId)\n }\n }\n }\n\n const bootstrapFeatureFlags = bootstrap.featureFlags\n const bootstrapFeatureFlagPayloads = bootstrap.featureFlagPayloads ?? {}\n if (bootstrapFeatureFlags && Object.keys(bootstrapFeatureFlags).length) {\n const normalizedBootstrapFeatureFlagDetails = createDecideResponseFromFlagsAndPayloads(\n bootstrapFeatureFlags,\n bootstrapFeatureFlagPayloads\n )\n\n if (Object.keys(normalizedBootstrapFeatureFlagDetails.flags).length > 0) {\n this.setBootstrappedFeatureFlagDetails(normalizedBootstrapFeatureFlagDetails)\n\n const currentFeatureFlagDetails = this.getKnownFeatureFlagDetails() || { flags: {}, requestId: undefined }\n const newFeatureFlagDetails = {\n flags: {\n ...normalizedBootstrapFeatureFlagDetails.flags,\n ...currentFeatureFlagDetails.flags,\n },\n requestId: normalizedBootstrapFeatureFlagDetails.requestId,\n }\n\n this.setKnownFeatureFlagDetails(newFeatureFlagDetails)\n }\n }\n }\n\n // NOTE: Props are lazy loaded from localstorage hence the complex getter setter logic\n private get props(): PostHogEventProperties {\n if (!this._props) {\n this._props = this.getPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.Props)\n }\n return this._props || {}\n }\n\n private set props(val: PostHogEventProperties | undefined) {\n this._props = val\n }\n\n private clearProps(): void {\n this.props = undefined\n this.sessionProps = {}\n this.flagCallReported = {}\n }\n\n private _props: PostHogEventProperties | undefined\n\n on(event: string, cb: (...args: any[]) => void): () => void {\n return this._events.on(event, cb)\n }\n\n reset(propertiesToKeep?: PostHogPersistedProperty[]): void {\n this.wrap(() => {\n const allPropertiesToKeep = [PostHogPersistedProperty.Queue, ...(propertiesToKeep || [])]\n\n // clean up props\n this.clearProps()\n\n for (const key of <(keyof typeof PostHogPersistedProperty)[]>Object.keys(PostHogPersistedProperty)) {\n if (!allPropertiesToKeep.includes(PostHogPersistedProperty[key])) {\n this.setPersistedProperty((PostHogPersistedProperty as any)[key], null)\n }\n }\n\n this.reloadFeatureFlags()\n })\n }\n\n protected getCommonEventProperties(): any {\n const featureFlags = this.getFeatureFlags()\n\n const featureVariantProperties: Record<string, FeatureFlagValue> = {}\n if (featureFlags) {\n for (const [feature, variant] of Object.entries(featureFlags)) {\n featureVariantProperties[`$feature/${feature}`] = variant\n }\n }\n return {\n $active_feature_flags: featureFlags ? Object.keys(featureFlags) : undefined,\n ...featureVariantProperties,\n ...super.getCommonEventProperties(),\n }\n }\n\n private enrichProperties(properties?: PostHogEventProperties): any {\n return {\n ...this.props, // Persisted properties first\n ...this.sessionProps, // Followed by session properties\n ...(properties || {}), // Followed by user specified properties\n ...this.getCommonEventProperties(), // Followed by FF props\n $session_id: this.getSessionId(),\n }\n }\n\n /**\n * * @returns {string} The stored session ID for the current session. This may be an empty string if the client is not yet fully initialized.\n */\n getSessionId(): string {\n if (!this._isInitialized) {\n return ''\n }\n\n let sessionId = this.getPersistedProperty<string>(PostHogPersistedProperty.SessionId)\n const sessionTimestamp = this.getPersistedProperty<number>(PostHogPersistedProperty.SessionLastTimestamp) || 0\n if (!sessionId || Date.now() - sessionTimestamp > this._sessionExpirationTimeSeconds * 1000) {\n sessionId = uuidv7()\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, sessionId)\n }\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, Date.now())\n\n return sessionId\n }\n\n resetSessionId(): void {\n this.wrap(() => {\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, null)\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, null)\n })\n }\n\n /**\n * * @returns {string} The stored anonymous ID. This may be an empty string if the client is not yet fully initialized.\n */\n getAnonymousId(): string {\n if (!this._isInitialized) {\n return ''\n }\n\n let anonId = this.getPersistedProperty<string>(PostHogPersistedProperty.AnonymousId)\n if (!anonId) {\n anonId = uuidv7()\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, anonId)\n }\n return anonId\n }\n\n /**\n * * @returns {string} The stored distinct ID. This may be an empty string if the client is not yet fully initialized.\n */\n getDistinctId(): string {\n if (!this._isInitialized) {\n return ''\n }\n\n return this.getPersistedProperty<string>(PostHogPersistedProperty.DistinctId) || this.getAnonymousId()\n }\n\n async unregister(property: string): Promise<void> {\n this.wrap(() => {\n delete this.props[property]\n this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.Props, this.props)\n })\n }\n\n async register(properties: { [key: string]: any }): Promise<void> {\n this.wrap(() => {\n this.props = {\n ...this.props,\n ...properties,\n }\n this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.Props, this.props)\n })\n }\n\n registerForSession(properties: { [key: string]: any }): void {\n this.sessionProps = {\n ...this.sessionProps,\n ...properties,\n }\n }\n\n unregisterForSession(property: string): void {\n delete this.sessionProps[property]\n }\n\n /***\n *** TRACKING\n ***/\n identify(distinctId?: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void {\n this.wrap(() => {\n const previousDistinctId = this.getDistinctId()\n distinctId = distinctId || previousDistinctId\n\n if (properties?.$groups) {\n this.groups(properties.$groups)\n }\n\n // promote $set and $set_once to top level\n const userPropsOnce = properties?.$set_once\n delete properties?.$set_once\n\n // if no $set is provided we assume all properties are $set\n const userProps = properties?.$set || properties\n\n const allProperties = this.enrichProperties({\n $anon_distinct_id: this.getAnonymousId(),\n $set: userProps,\n $set_once: userPropsOnce,\n })\n\n if (distinctId !== previousDistinctId) {\n // We keep the AnonymousId to be used by decide calls and identify to link the previousId\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, previousDistinctId)\n this.setPersistedProperty(PostHogPersistedProperty.DistinctId, distinctId)\n this.reloadFeatureFlags()\n }\n\n super.identifyStateless(distinctId, allProperties, options)\n })\n }\n\n capture(event: string, properties?: { [key: string]: any }, options?: PostHogCaptureOptions): void {\n this.wrap(() => {\n const distinctId = this.getDistinctId()\n\n if (properties?.$groups) {\n this.groups(properties.$groups)\n }\n\n const allProperties = this.enrichProperties(properties)\n\n super.captureStateless(distinctId, event, allProperties, options)\n })\n }\n\n alias(alias: string): void {\n this.wrap(() => {\n const distinctId = this.getDistinctId()\n const allProperties = this.enrichProperties({})\n\n super.aliasStateless(alias, distinctId, allProperties)\n })\n }\n\n autocapture(\n eventType: string,\n elements: PostHogAutocaptureElement[],\n properties: PostHogEventProperties = {},\n options?: PostHogCaptureOptions\n ): void {\n this.wrap(() => {\n const distinctId = this.getDistinctId()\n const payload = {\n distinct_id: distinctId,\n event: '$autocapture',\n properties: {\n ...this.enrichProperties(properties),\n $event_type: eventType,\n $elements: elements,\n },\n }\n\n this.enqueue('autocapture', payload, options)\n })\n }\n\n /***\n *** GROUPS\n ***/\n\n groups(groups: { [type: string]: string | number }): void {\n this.wrap(() => {\n // Get persisted groups\n const existingGroups = this.props.$groups || {}\n\n this.register({\n $groups: {\n ...existingGroups,\n ...groups,\n },\n })\n\n if (Object.keys(groups).find((type) => existingGroups[type] !== groups[type])) {\n this.reloadFeatureFlags()\n }\n })\n }\n\n group(\n groupType: string,\n groupKey: string | number,\n groupProperties?: PostHogEventProperties,\n options?: PostHogCaptureOptions\n ): void {\n this.wrap(() => {\n this.groups({\n [groupType]: groupKey,\n })\n\n if (groupProperties) {\n this.groupIdentify(groupType, groupKey, groupProperties, options)\n }\n })\n }\n\n groupIdentify(\n groupType: string,\n groupKey: string | number,\n groupProperties?: PostHogEventProperties,\n options?: PostHogCaptureOptions\n ): void {\n this.wrap(() => {\n const distinctId = this.getDistinctId()\n const eventProperties = this.enrichProperties({})\n super.groupIdentifyStateless(groupType, groupKey, groupProperties, options, distinctId, eventProperties)\n })\n }\n\n /***\n * PROPERTIES\n ***/\n setPersonPropertiesForFlags(properties: { [type: string]: string }): void {\n this.wrap(() => {\n // Get persisted person properties\n const existingProperties =\n this.getPersistedProperty<Record<string, string>>(PostHogPersistedProperty.PersonProperties) || {}\n\n this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.PersonProperties, {\n ...existingProperties,\n ...properties,\n })\n })\n }\n\n resetPersonPropertiesForFlags(): void {\n this.wrap(() => {\n this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.PersonProperties, null)\n })\n }\n\n /** @deprecated - Renamed to setPersonPropertiesForFlags */\n personProperties(properties: { [type: string]: string }): void {\n return this.setPersonPropertiesForFlags(properties)\n }\n\n setGroupPropertiesForFlags(properties: { [type: string]: Record<string, string> }): void {\n this.wrap(() => {\n // Get persisted group properties\n const existingProperties =\n this.getPersistedProperty<Record<string, Record<string, string>>>(PostHogPersistedProperty.GroupProperties) ||\n {}\n\n if (Object.keys(existingProperties).length !== 0) {\n Object.keys(existingProperties).forEach((groupType) => {\n existingProperties[groupType] = {\n ...existingProperties[groupType],\n ...properties[groupType],\n }\n delete properties[groupType]\n })\n }\n\n this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.GroupProperties, {\n ...existingProperties,\n ...properties,\n })\n })\n }\n\n resetGroupPropertiesForFlags(): void {\n this.wrap(() => {\n this.setPersistedProperty<PostHogEventProperties>(PostHogPersistedProperty.GroupProperties, null)\n })\n }\n\n /** @deprecated - Renamed to setGroupPropertiesForFlags */\n groupProperties(properties: { [type: string]: Record<string, string> }): void {\n this.wrap(() => {\n this.setGroupPropertiesForFlags(properties)\n })\n }\n\n private async remoteConfigAsync(): Promise<PostHogRemoteConfig | undefined> {\n await this._initPromise\n if (this._remoteConfigResponsePromise) {\n return this._remoteConfigResponsePromise\n }\n return this._remoteConfigAsync()\n }\n\n /***\n *** FEATURE FLAGS\n ***/\n private async decideAsync(sendAnonDistinctId: boolean = true): Promise<PostHogDecideResponse | undefined> {\n await this._initPromise\n if (this._decideResponsePromise) {\n return this._decideResponsePromise\n }\n return this._decideAsync(sendAnonDistinctId)\n }\n\n private cacheSessionReplay(response?: PostHogRemoteConfig): void {\n const sessionReplay = response?.sessionRecording\n if (sessionReplay) {\n this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, sessionReplay)\n this.logMsgIfDebug(() => console.log('PostHog Debug', 'Session replay config: ', JSON.stringify(sessionReplay)))\n } else {\n this.logMsgIfDebug(() => console.info('PostHog Debug', 'Session replay config disabled.'))\n this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, null)\n }\n }\n\n private async _remoteConfigAsync(): Promise<PostHogRemoteConfig | undefined> {\n this._remoteConfigResponsePromise = this._initPromise\n .then(() => {\n let remoteConfig = this.getPersistedProperty<Omit<PostHogRemoteConfig, 'surveys'>>(\n PostHogPersistedProperty.RemoteConfig\n )\n\n this.logMsgIfDebug(() => console.log('PostHog Debug', 'Cached remote config: ', JSON.stringify(remoteConfig)))\n\n return super.getRemoteConfig().then((response) => {\n if (response) {\n const remoteConfigWithoutSurveys = { ...response }\n delete remoteConfigWithoutSurveys.surveys\n\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', 'Fetched remote config: ', JSON.stringify(remoteConfigWithoutSurveys))\n )\n\n const surveys = response.surveys\n\n let hasSurveys = true\n\n if (!Array.isArray(surveys)) {\n // If surveys is not an array, it means there are no surveys (its a boolean instead)\n this.logMsgIfDebug(() => console.log('PostHog Debug', 'There are no surveys.'))\n hasSurveys = false\n } else {\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', 'Surveys fetched from remote config: ', JSON.stringify(surveys))\n )\n }\n\n if (this.disableSurveys === false && hasSurveys) {\n this.setPersistedProperty<SurveyResponse['surveys']>(\n PostHogPersistedProperty.Surveys,\n surveys as Survey[]\n )\n } else {\n this.setPersistedProperty<SurveyResponse['surveys']>(PostHogPersistedProperty.Surveys, null)\n }\n\n // we cache the surveys in its own storage key\n this.setPersistedProperty<Omit<PostHogRemoteConfig, 'surveys'>>(\n PostHogPersistedProperty.RemoteConfig,\n remoteConfigWithoutSurveys\n )\n\n this.cacheSessionReplay(response)\n\n // we only dont load flags if the remote config has no feature flags\n if (response.hasFeatureFlags === false) {\n // resetting flags to empty object\n this.setKnownFeatureFlagDetails({ flags: {} })\n\n this.logMsgIfDebug(() => console.warn('Remote config has no feature flags, will not load feature flags.'))\n } else if (this.preloadFeatureFlags !== false) {\n this.reloadFeatureFlags()\n }\n\n remoteConfig = response\n }\n\n return remoteConfig\n })\n })\n .finally(() => {\n this._remoteConfigResponsePromise = undefined\n })\n return this._remoteConfigResponsePromise\n }\n\n private async _decideAsync(sendAnonDistinctId: boolean = true): Promise<PostHogDecideResponse | undefined> {\n this._decideResponsePromise = this._initPromise\n .then(async () => {\n const distinctId = this.getDistinctId()\n const groups = this.props.$groups || {}\n const personProperties =\n this.getPersistedProperty<Record<string, string>>(PostHogPersistedProperty.PersonProperties) || {}\n const groupProperties =\n this.getPersistedProperty<Record<string, Record<string, string>>>(PostHogPersistedProperty.GroupProperties) ||\n {}\n\n const extraProperties = {\n $anon_distinct_id: sendAnonDistinctId ? this.getAnonymousId() : undefined,\n }\n\n const res = await super.getDecide(distinctId, groups, personProperties, groupProperties, extraProperties)\n // Add check for quota limitation on feature flags\n if (res?.quotaLimited?.includes(QuotaLimitedFeature.FeatureFlags)) {\n // Unset all feature flags by setting to null\n this.setKnownFeatureFlagDetails(null)\n console.warn(\n '[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts'\n )\n return res\n }\n if (res?.featureFlags) {\n // clear flag call reported if we have new flags since they might have changed\n if (this.sendFeatureFlagEvent) {\n this.flagCallReported = {}\n }\n\n let newFeatureFlagDetails = res\n if (res.errorsWhileComputingFlags) {\n // if not all flags were computed, we upsert flags instead of replacing them\n const currentFlagDetails = this.getKnownFeatureFlagDetails()\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', 'Cached feature flags: ', JSON.stringify(currentFlagDetails))\n )\n\n newFeatureFlagDetails = {\n ...res,\n flags: { ...currentFlagDetails?.flags, ...res.flags },\n }\n }\n this.setKnownFeatureFlagDetails(newFeatureFlagDetails)\n // Mark that we hit the /decide endpoint so we can capture this in the $feature_flag_called event\n this.setPersistedProperty(PostHogPersistedProperty.DecideEndpointWasHit, true)\n\n this.cacheSessionReplay(res)\n }\n return res\n })\n .finally(() => {\n this._decideResponsePromise = undefined\n })\n return this._decideResponsePromise\n }\n\n // We only store the flags and request id in the feature flag details storage key\n private setKnownFeatureFlagDetails(decideResponse: PostHogFlagsStorageFormat | null): void {\n this.wrap(() => {\n this.setPersistedProperty<PostHogFlagsStorageFormat>(PostHogPersistedProperty.FeatureFlagDetails, decideResponse)\n\n this._events.emit('featureflags', getFlagValuesFromFlags(decideResponse?.flags ?? {}))\n })\n }\n\n private getKnownFeatureFlagDetails(): PostHogFeatureFlagDetails | undefined {\n const storedDetails = this.getPersistedProperty<PostHogFlagsStorageFormat>(\n PostHogPersistedProperty.FeatureFlagDetails\n )\n if (!storedDetails) {\n // Rebuild from the stored feature flags and feature flag payloads\n const featureFlags = this.getPersistedProperty<PostHogDecideResponse['featureFlags']>(\n PostHogPersistedProperty.FeatureFlags\n )\n const featureFlagPayloads = this.getPersistedProperty<PostHogDecideResponse['featureFlagPayloads']>(\n PostHogPersistedProperty.FeatureFlagPayloads\n )\n\n if (featureFlags === undefined && featureFlagPayloads === undefined) {\n return undefined\n }\n\n return createDecideResponseFromFlagsAndPayloads(featureFlags ?? {}, featureFlagPayloads ?? {})\n }\n\n return normalizeDecideResponse(\n storedDetails as PostHogV3DecideResponse | PostHogV4DecideResponse\n ) as PostHogFeatureFlagDetails\n }\n\n private getKnownFeatureFlags(): PostHogDecideResponse['featureFlags'] | undefined {\n const featureFlagDetails = this.getKnownFeatureFlagDetails()\n if (!featureFlagDetails) {\n return undefined\n }\n return getFlagValuesFromFlags(featureFlagDetails.flags)\n }\n\n private getKnownFeatureFlagPayloads(): PostHogDecideResponse['featureFlagPayloads'] | undefined {\n const featureFlagDetails = this.getKnownFeatureFlagDetails()\n if (!featureFlagDetails) {\n return undefined\n }\n return getPayloadsFromFlags(featureFlagDetails.flags)\n }\n\n private getBootstrappedFeatureFlagDetails(): PostHogFeatureFlagDetails | undefined {\n const details = this.getPersistedProperty<PostHogFeatureFlagDetails>(\n PostHogPersistedProperty.BootstrapFeatureFlagDetails\n )\n if (!details) {\n return undefined\n }\n return details\n }\n\n private setBootstrappedFeatureFlagDetails(details: PostHogFeatureFlagDetails): void {\n this.setPersistedProperty<PostHogFeatureFlagDetails>(PostHogPersistedProperty.BootstrapFeatureFlagDetails, details)\n }\n\n private getBootstrappedFeatureFlags(): PostHogDecideResponse['featureFlags'] | undefined {\n const details = this.getBootstrappedFeatureFlagDetails()\n if (!details) {\n return undefined\n }\n return getFlagValuesFromFlags(details.flags)\n }\n\n private getBootstrappedFeatureFlagPayloads(): PostHogDecideResponse['featureFlagPayloads'] | undefined {\n const details = this.getBootstrappedFeatureFlagDetails()\n if (!details) {\n return undefined\n }\n return getPayloadsFromFlags(details.flags)\n }\n\n getFeatureFlag(key: string): FeatureFlagValue | undefined {\n const details = this.getFeatureFlagDetails()\n\n if (!details) {\n // If we haven't loaded flags yet, or errored out, we respond with undefined\n return undefined\n }\n\n const featureFlag = details.flags[key]\n\n let response = getFeatureFlagValue(featureFlag)\n\n if (response === undefined) {\n // For cases where the flag is unknown, return false\n response = false\n }\n\n if (this.sendFeatureFlagEvent && !this.flagCallReported[key]) {\n const bootstrappedResponse = this.getBootstrappedFeatureFlags()?.[key]\n const bootstrappedPayload = this.getBootstrappedFeatureFlagPayloads()?.[key]\n\n this.flagCallReported[key] = true\n this.capture('$feature_flag_called', {\n $feature_flag: key,\n $feature_flag_response: response,\n $feature_flag_id: featureFlag?.metadata?.id,\n $feature_flag_version: featureFlag?.metadata?.version,\n $feature_flag_reason: featureFlag?.reason?.description ?? featureFlag?.reason?.code,\n $feature_flag_bootstrapped_response: bootstrappedResponse,\n $feature_flag_bootstrapped_payload: bootstrappedPayload,\n // If we haven't yet received a response from the /decide endpoint, we must have used the bootstrapped value\n $used_bootstrap_value: !this.getPersistedProperty(PostHogPersistedProperty.DecideEndpointWasHit),\n $feature_flag_request_id: details.requestId,\n })\n }\n\n // If we have flags we either return the value (true or string) or false\n return response\n }\n\n getFeatureFlagPayload(key: string): JsonType | undefined {\n const payloads = this.getFeatureFlagPayloads()\n\n if (!payloads) {\n return undefined\n }\n\n const response = payloads[key]\n\n // Undefined means a loading or missing data issue. Null means evaluation happened and there was no match\n if (response === undefined) {\n return null\n }\n\n return response\n }\n\n getFeatureFlagPayloads(): PostHogDecideResponse['featureFlagPayloads'] | undefined {\n return this.getFeatureFlagDetails()?.featureFlagPayloads\n }\n\n getFeatureFlags(): PostHogDecideResponse['featureFlags'] | undefined {\n // NOTE: We don't check for _initPromise here as the function is designed to be\n // callable before the state being loaded anyways\n return this.getFeatureFlagDetails()?.featureFlags\n }\n\n getFeatureFlagDetails(): PostHogFeatureFlagDetails | undefined {\n // NOTE: We don't check for _initPromise here as the function is designed to be\n // callable before the state being loaded anyways\n let details = this.getKnownFeatureFlagDetails()\n const overriddenFlags = this.getPersistedProperty<PostHogDecideResponse['featureFlags']>(\n PostHogPersistedProperty.OverrideFeatureFlags\n )\n\n if (!overriddenFlags) {\n return details\n }\n\n details = details ?? { featureFlags: {}, featureFlagPayloads: {}, flags: {} }\n\n const flags: Record<string, FeatureFlagDetail> = details.flags ?? {}\n\n for (const key in overriddenFlags) {\n if (!overriddenFlags[key]) {\n delete flags[key]\n } else {\n flags[key] = updateFlagValue(flags[key], overriddenFlags[key])\n }\n }\n\n const result = {\n ...details,\n flags,\n }\n\n return normalizeDecideResponse(result) as PostHogFeatureFlagDetails\n }\n\n getFeatureFlagsAndPayloads(): {\n flags: PostHogDecideResponse['featureFlags'] | undefined\n payloads: PostHogDecideResponse['featureFlagPayloads'] | undefined\n } {\n const flags = this.getFeatureFlags()\n const payloads = this.getFeatureFlagPayloads()\n\n return {\n flags,\n payloads,\n }\n }\n\n isFeatureEnabled(key: string): boolean | undefined {\n const response = this.getFeatureFlag(key)\n if (response === undefined) {\n return undefined\n }\n return !!response\n }\n\n // Used when we want to trigger the reload but we don't care about the result\n reloadFeatureFlags(cb?: (err?: Error, flags?: PostHogDecideResponse['featureFlags']) => void): void {\n this.decideAsync()\n .then((res) => {\n cb?.(undefined, res?.featureFlags)\n })\n .catch((e) => {\n cb?.(e, undefined)\n if (!cb) {\n this.logMsgIfDebug(() => console.log('[PostHog] Error reloading feature flags', e))\n }\n })\n }\n\n async reloadRemoteConfigAsync(): Promise<PostHogRemoteConfig | undefined> {\n return await this.remoteConfigAsync()\n }\n\n async reloadFeatureFlagsAsync(\n sendAnonDistinctId: boolean = true\n ): Promise<PostHogDecideResponse['featureFlags'] | undefined> {\n return (await this.decideAsync(sendAnonDistinctId))?.featureFlags\n }\n\n onFeatureFlags(cb: (flags: PostHogDecideResponse['featureFlags']) => void): () => void {\n return this.on('featureflags', async () => {\n const flags = this.getFeatureFlags()\n if (flags) {\n cb(flags)\n }\n })\n }\n\n onFeatureFlag(key: string, cb: (value: FeatureFlagValue) => void): () => void {\n return this.on('featureflags', async () => {\n const flagResponse = this.getFeatureFlag(key)\n if (flagResponse !== undefined) {\n cb(flagResponse)\n }\n })\n }\n\n async overrideFeatureFlag(flags: PostHogDecideResponse['featureFlags'] | null): Promise<void> {\n this.wrap(() => {\n if (flags === null) {\n return this.setPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags, null)\n }\n return this.setPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags, flags)\n })\n }\n\n /***\n *** ERROR TRACKING\n ***/\n captureException(error: unknown, additionalProperties?: { [key: string]: any }): void {\n const properties: { [key: string]: any } = {\n $exception_level: 'error',\n $exception_list: [\n {\n type: isError(error) ? error.name : 'Error',\n value: isError(error) ? error.message : error,\n mechanism: {\n handled: true,\n synthetic: false,\n },\n },\n ],\n ...additionalProperties,\n }\n\n properties.$exception_personURL = new URL(\n `/project/${this.apiKey}/person/${this.getDistinctId()}`,\n this.host\n ).toString()\n\n this.capture('$exception', properties)\n }\n\n /**\n * Capture written user feedback for a LLM trace. Numeric values are converted to strings.\n * @param traceId The trace ID to capture feedback for.\n * @param userFeedback The feedback to capture.\n */\n captureTraceFeedback(traceId: string | number, userFeedback: string): void {\n this.capture('$ai_feedback', {\n $ai_feedback_text: userFeedback,\n $ai_trace_id: String(traceId),\n })\n }\n\n /**\n * Capture a metric for a LLM trace. Numeric values are converted to strings.\n * @param traceId The trace ID to capture the metric for.\n * @param metricName The name of the metric to capture.\n * @param metricValue The value of the metric to capture.\n */\n captureTraceMetric(traceId: string | number, metricName: string, metricValue: string | number | boolean): void {\n this.capture('$ai_metric', {\n $ai_metric_name: metricName,\n $ai_metric_value: String(metricValue),\n $ai_trace_id: String(traceId),\n })\n }\n}\n\nexport * from './types'\nexport { LZString }\n","import type ExpoApplication from 'expo-application'\nimport { Platform } from 'react-native'\n\nexport let OptionalExpoApplication: typeof ExpoApplication | undefined = undefined\n\ntry {\n // macos not supported\n OptionalExpoApplication = Platform.select({\n macos: undefined,\n default: require('expo-application'),\n })\n} catch (e) {}\n","import type ExpoFileSystem from 'expo-file-system'\nimport { Platform } from 'react-native'\n\nexport let OptionalExpoFileSystem: typeof ExpoFileSystem | undefined = undefined\n\ntry {\n // do not try to load expo-file-system on web and macos, otherwise it will throw an error\n // Error: The method or property expo-file-system.writeAsStringAsync is not available on web\n // See https://github.com/PostHog/posthog-js-lite/issues/140\n // Once expo-file-system is supported on web/macos, we can remove this try/catch block\n // For now, use the react-native-async-storage/async-storage package instead\n OptionalExpoFileSystem = Platform.select({\n macos: undefined,\n web: undefined,\n default: require('expo-file-system'),\n })\n} catch (e) {}\n","import { Platform } from 'react-native'\nimport { OptionalExpoApplication } from './optional/OptionalExpoApplication'\nimport { OptionalExpoFileSystem } from './optional/OptionalExpoFileSystem'\n\nexport const getLegacyValues = async (): Promise<{ distinctId?: string; anonymousId?: string } | undefined> => {\n // NOTE: The old react-native lib stored data in files on the filesystem.\n // This function takes care of pulling the legacy IDs to ensure we are using them if already present\n\n if (!OptionalExpoFileSystem || !OptionalExpoApplication) {\n return\n }\n\n // legacy didn't support macos, no need to check it\n if (Platform.OS === 'ios') {\n const posthogFileDirectory = `${OptionalExpoFileSystem.documentDirectory}../Library/Application%20Support/${OptionalExpoApplication.applicationId}/`\n const posthogDistinctIdFile = posthogFileDirectory + 'posthog.distinctId'\n const posthogAnonymousIdFile = posthogFileDirectory + 'posthog.anonymousId'\n\n const res = {\n distinctId: undefined,\n anonymousId: undefined,\n }\n\n try {\n res.distinctId = JSON.parse(await OptionalExpoFileSystem.readAsStringAsync(posthogDistinctIdFile))[\n 'posthog.distinctId'\n ]\n } catch (e) {}\n\n try {\n res.anonymousId = JSON.parse(await OptionalExpoFileSystem.readAsStringAsync(posthogAnonymousIdFile))[\n 'posthog.anonymousId'\n ]\n } catch (e) {}\n\n return res\n } else {\n // NOTE: Android is not supported here as the old SDK used a very Expo-unfriendly way of storing data\n }\n}\n","import { isPromise } from '../../posthog-core/src/utils'\nimport { PostHogCustomStorage } from './types'\n\nconst POSTHOG_STORAGE_KEY = '.posthog-rn.json'\nconst POSTHOG_STORAGE_VERSION = 'v1'\n\ntype PostHogStorageContents = { [key: string]: any }\n\nexport class PostHogRNStorage {\n memoryCache: PostHogStorageContents = {}\n storage: PostHogCustomStorage\n preloadPromise: Promise<void> | undefined\n\n constructor(storage: PostHogCustomStorage) {\n this.storage = storage\n\n const preloadResult = this.storage.getItem(POSTHOG_STORAGE_KEY)\n\n if (isPromise(preloadResult)) {\n this.preloadPromise = preloadResult.then((res) => {\n this.populateMemoryCache(res)\n })\n\n this.preloadPromise?.finally(() => {\n this.preloadPromise = undefined\n })\n } else {\n this.populateMemoryCache(preloadResult)\n }\n }\n\n persist(): void {\n const payload = {\n version: POSTHOG_STORAGE_VERSION,\n content: this.memoryCache,\n }\n\n void this.storage.setItem(POSTHOG_STORAGE_KEY, JSON.stringify(payload))\n }\n\n getItem(key: string): any | null | undefined {\n return this.memoryCache[key]\n }\n setItem(key: string, value: any): void {\n this.memoryCache[key] = value\n this.persist()\n }\n removeItem(key: string): void {\n delete this.memoryCache[key]\n this.persist()\n }\n clear(): void {\n for (const key in this.memoryCache) {\n delete this.memoryCache[key]\n }\n this.persist()\n }\n getAllKeys(): readonly string[] {\n return Object.keys(this.memoryCache)\n }\n\n populateMemoryCache(res: string | null): void {\n try {\n const data = res ? JSON.parse(res).content : {}\n\n for (const key in data) {\n this.memoryCache[key] = data[key]\n }\n } catch (e) {\n console.warn(\n \"PostHog failed to load persisted data from storage. This is likely because the storage format is. We'll reset the storage.\",\n e\n )\n }\n }\n}\n\nexport class PostHogRNSyncMemoryStorage extends PostHogRNStorage {\n constructor() {\n const cache: { [key: string]: any | undefined } = {}\n const storage = {\n getItem: (key: string) => cache[key],\n setItem: (key: string, value: string) => {\n cache[key] = value\n },\n }\n\n super(storage)\n }\n}\n","export const version = \"3.15.0\"\n","import type AsyncStorage from '@react-native-async-storage/async-storage'\n\nexport let OptionalAsyncStorage: typeof AsyncStorage | undefined = undefined\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n OptionalAsyncStorage = require('@react-native-async-storage/async-storage').default\n} catch (e) {}\n","import type ExpoDevice from 'expo-device'\nimport { Platform } from 'react-native'\n\nexport let OptionalExpoDevice: typeof ExpoDevice | undefined = undefined\n\ntry {\n // macos not supported\n OptionalExpoDevice = Platform.select({\n macos: undefined,\n default: require('expo-device'),\n })\n} catch (e) {}\n","import type ExpoLocalization from 'expo-localization'\nimport { Platform } from 'react-native'\n\nexport let OptionalExpoLocalization: typeof ExpoLocalization | undefined = undefined\n\ntry {\n // macos not supported\n OptionalExpoLocalization = Platform.select({\n macos: undefined,\n default: require('expo-localization'),\n })\n} catch (e) {}\n","import { Platform } from 'react-native'\nimport type ReactNativeDeviceInfo from 'react-native-device-info'\n\nexport let OptionalReactNativeDeviceInfo: typeof ReactNativeDeviceInfo | undefined = undefined\n\ntry {\n // macos not supported\n OptionalReactNativeDeviceInfo = Platform.select({\n macos: undefined,\n default: require('react-native-device-info'), // No Web support, returns unknown\n })\n} catch (e) {}\n","interface ReactNativeLocalize {\n getLocales: () => {\n languageCode: string\n scriptCode?: string\n countryCode: string\n languageTag: string\n isRTL: boolean\n }[]\n\n getTimeZone(): string\n}\n\nimport type ReactNativeLocalize from 'react-native-localize'\n\nexport let OptionalReactNativeLocalize: typeof ReactNativeLocalize | undefined = undefined\n\n// web support requires webpack\n// https://github.com/zoontek/react-native-localize#web-support\ntry {\n OptionalReactNativeLocalize = require('react-native-localize')\n} catch (e) {}\n","import { Platform } from 'react-native'\nimport { OptionalAsyncStorage } from './optional/OptionalAsyncStorage'\nimport { OptionalExpoApplication } from './optional/OptionalExpoApplication'\nimport { OptionalExpoDevice } from './optional/OptionalExpoDevice'\nimport { OptionalExpoFileSystem } from './optional/OptionalExpoFileSystem'\nimport { OptionalExpoLocalization } from './optional/OptionalExpoLocalization'\nimport { OptionalReactNativeDeviceInfo } from './optional/OptionalReactNativeDeviceInfo'\nimport { PostHogCustomAppProperties, PostHogCustomStorage } from './types'\nimport { OptionalReactNativeLocalize } from './optional/OptionalReactNativeLocalize'\n\nconst getDeviceType = (): string => {\n let deviceType = 'Mobile'\n\n if (Platform.OS === 'macos' || Platform.OS === 'windows') {\n deviceType = 'Desktop'\n } else if (Platform.OS === 'web') {\n deviceType = 'Web'\n }\n return deviceType\n}\n\nexport const currentDeviceType = getDeviceType()\n\nexport const getAppProperties = (): PostHogCustomAppProperties => {\n const properties: PostHogCustomAppProperties = {\n $device_type: currentDeviceType,\n }\n\n if (OptionalExpoApplication) {\n properties.$app_build = OptionalExpoApplication.nativeBuildVersion\n properties.$app_name = OptionalExpoApplication.applicationName\n properties.$app_namespace = OptionalExpoApplication.applicationId\n properties.$app_version = OptionalExpoApplication.nativeApplicationVersion\n } else if (OptionalReactNativeDeviceInfo) {\n properties.$app_build = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getBuildNumber())\n properties.$app_name = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getApplicationName())\n properties.$app_namespace = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getBundleId())\n properties.$app_version = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getVersion())\n }\n\n if (OptionalExpoDevice) {\n properties.$device_manufacturer = OptionalExpoDevice.manufacturer\n // expo-device already maps the device model identifier to a human readable name\n properties.$device_name = OptionalExpoDevice.modelName\n\n // https://github.com/expo/expo/issues/6990\n // some devices return a value similar to:\n // HUAWEI/SNE-LX1/HWSNE:8.1.0/HUAWEISNE-LX1/131(C432):user/release-keys\n if (Platform.OS === 'android') {\n properties.$os_name = 'Android'\n } else {\n properties.$os_name = OptionalExpoDevice.osName\n }\n\n properties.$os_version = OptionalExpoDevice.osVersion\n } else if (OptionalReactNativeDeviceInfo) {\n properties.$device_manufacturer = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getManufacturerSync())\n // react-native-device-info already maps the device model identifier to a human readable name\n properties.$device_name = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getModel())\n properties.$os_name = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getSystemName())\n properties.$os_version = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getSystemVersion())\n }\n\n if (OptionalExpoLocalization) {\n properties.$locale = OptionalExpoLocalization.locale\n properties.$timezone = OptionalExpoLocalization.timezone\n } else if (OptionalReactNativeLocalize) {\n const localesFn = OptionalReactNativeLocalize.getLocales\n if (localesFn) {\n const locales = localesFn()\n\n if (locales && locales.length > 0) {\n const languageTag = locales[0].languageTag\n if (languageTag) {\n properties.$locale = languageTag\n }\n }\n }\n\n const timezoneFn = OptionalReactNativeLocalize.getTimeZone\n if (timezoneFn) {\n const timezone = timezoneFn()\n\n if (timezone) {\n properties.$timezone = timezone\n }\n }\n }\n\n return properties\n}\n\n// react-native-device-info returns 'unknown' if the property is not available (Web target)\nconst returnPropertyIfNotUnknown = (value: string | null): string | null => {\n if (value !== 'unknown') {\n return value\n }\n return null\n}\n\nexport const buildOptimisiticAsyncStorage = (): PostHogCustomStorage => {\n if (OptionalExpoFileSystem) {\n const filesystem = OptionalExpoFileSystem\n return {\n async getItem(key: string) {\n const uri = (filesystem.documentDirectory || '') + key\n try {\n const stringContent = await filesystem.readAsStringAsync(uri)\n return stringContent\n } catch (e) {\n return null\n }\n },\n\n async setItem(key: string, value: string) {\n const uri = (filesystem.documentDirectory || '') + key\n await filesystem.writeAsStringAsync(uri, value)\n },\n }\n }\n\n if (OptionalAsyncStorage) {\n return OptionalAsyncStorage\n }\n\n throw new Error(\n 'PostHog: No storage available. Please install expo-filesystem or react-native-async-storage OR implement a custom storage provider.'\n )\n}\n","import { Platform } from 'react-native'\nimport type ReactNativeNavigationWix from 'react-native-navigation'\n\nexport let OptionalReactNativeNavigationWix: typeof ReactNativeNavigationWix | undefined = undefined\n\ntry {\n // macos/web not supported\n OptionalReactNativeNavigationWix = Platform.select({\n macos: undefined,\n web: undefined,\n default: require('react-native-navigation'),\n })\n} catch (e) {}\n","/*\n * Wix Navigation (react-native-navigation)\n *\n * Wix Navigation uses a very different paradigm for rendering screens, with a more imperative / config driven approach\n * Instead of hooking into the natural React lifecycle, it provides a very different API which we can hook into and use instead.\n */\n\nimport { OptionalReactNativeNavigationWix } from '../optional/OptionalReactNativeNavigationWix'\nimport { PostHog } from '../posthog-rn'\nimport { PostHogAutocaptureOptions } from '../types'\n\nexport const withReactNativeNavigation = (posthog: PostHog, options: PostHogAutocaptureOptions = {}): boolean => {\n if (!OptionalReactNativeNavigationWix) {\n return false\n }\n\n const Navigation = OptionalReactNativeNavigationWix.Navigation\n\n // Equivalent of `useNavigationTracker`\n Navigation.events().registerComponentDidAppearListener(({ componentName, passProps }) => {\n if (!(options.captureScreens ?? true)) {\n return\n }\n\n const currentRouteName =\n options?.navigation?.routeToName?.(componentName, passProps || {}) || componentName || 'Unknown'\n\n if (currentRouteName) {\n const properties = options?.navigation?.routeToProperties?.(currentRouteName, passProps || {})\n posthog.screen(currentRouteName, properties)\n }\n })\n\n return true\n}\n","import { Platform } from 'react-native'\n\nimport type PostHogReactNativeSessionReplay from 'posthog-react-native-session-replay'\n\nexport let OptionalReactNativeSessionReplay: typeof PostHogReactNativeSessionReplay | undefined = undefined\n\ntry {\n OptionalReactNativeSessionReplay = Platform.select({\n macos: undefined,\n web: undefined,\n default: require('posthog-react-native-session-replay'), // Only Android and iOS\n })\n} catch (e) {}\n","import { AppState, Dimensions, Linking, Platform } from 'react-native'\n\nimport {\n JsonType,\n PostHogCaptureOptions,\n PostHogCore,\n PostHogCoreOptions,\n PostHogEventProperties,\n PostHogFetchOptions,\n PostHogFetchResponse,\n PostHogPersistedProperty,\n SurveyResponse,\n} from '../../posthog-core/src'\nimport { getLegacyValues } from './legacy'\nimport { PostHogRNStorage, PostHogRNSyncMemoryStorage } from './storage'\nimport { version } from './version'\nimport { buildOptimisiticAsyncStorage, getAppProperties } from './native-deps'\nimport {\n PostHogAutocaptureOptions,\n PostHogCustomAppProperties,\n PostHogCustomStorage,\n PostHogSessionReplayConfig,\n} from './types'\nimport { withReactNativeNavigation } from './frameworks/wix-navigation'\nimport { OptionalReactNativeSessionReplay } from './optional/OptionalSessionReplay'\n\nexport type PostHogOptions = PostHogCoreOptions & {\n /** Allows you to provide the storage type. By default 'file'.\n * 'file' will try to load the best available storage, the provided 'customStorage', 'customAsyncStorage' or in-memory storage.\n */\n persistence?: 'memory' | 'file'\n /** Allows you to provide your own implementation of the common information about your App or a function to modify the default App properties generated */\n customAppProperties?:\n | PostHogCustomAppProperties\n | ((properties: PostHogCustomAppProperties) => PostHogCustomAppProperties)\n /** Allows you to provide a custom asynchronous storage such as async-storage, expo-file-system or a synchronous storage such as mmkv.\n * If not provided, PostHog will attempt to use the best available storage via optional peer dependencies (async-storage, expo-file-system).\n * If `persistence` is set to 'memory', this option will be ignored.\n */\n customStorage?: PostHogCustomStorage\n\n /** Captures app lifecycle events such as Application Installed, Application Updated, Application Opened, Application Became Active and Application Backgrounded.\n * By default is false.\n * If you're already using the 'captureLifecycleEvents' options with 'withReactNativeNavigation' or 'PostHogProvider, you don't need to set this.\n * If this is set, this value has priority over the 'captureLifecycleEvents' option.\n * Application Installed and Application Updated events are not supported with persistence set to 'memory'.\n */\n captureNativeAppLifecycleEvents?: boolean\n\n /**\n * Enable Recording of Session Replays for Android and iOS\n * Requires Record user sessions to be enabled in the PostHog Project Settings\n * Defaults to false\n */\n enableSessionReplay?: boolean\n\n /**\n * Configuration for Session Replay\n */\n sessionReplayConfig?: PostHogSessionReplayConfig\n\n /**\n * If enabled, the session id ($session_id) will be persisted across app restarts.\n * This is an option for back compatibility, so your current data isn't skewed with the new version of the SDK.\n * If this is false, the session id will be always reset on app restart.\n * Defaults to false\n */\n enablePersistSessionIdAcrossRestart?: boolean\n}\n\nexport class PostHog extends PostHogCore {\n private _persistence: PostHogOptions['persistence']\n private _storage: PostHogRNStorage\n private _appProperties: PostHogCustomAppProperties = {}\n private _currentSessionId?: string | undefined\n private _enableSessionReplay?: boolean\n private _disableSurveys: boolean\n private _disableRemoteConfig: boolean\n\n constructor(apiKey: string, options?: PostHogOptions) {\n super(apiKey, options)\n this._isInitialized = false\n this._persistence = options?.persistence ?? 'file'\n this._disableSurveys = options?.disableSurveys ?? false\n this._disableRemoteConfig = options?.disableRemoteConfig ?? false\n\n // Either build the app properties from the existing ones\n this._appProperties =\n typeof options?.customAppProperties === 'function'\n ? options.customAppProperties(getAppProperties())\n : options?.customAppProperties || getAppProperties()\n\n AppState.addEventListener('change', () => {\n void this.flush()\n })\n\n let storagePromise: Promise<void> | undefined\n\n if (this._persistence === 'file') {\n this._storage = new PostHogRNStorage(options?.customStorage ?? buildOptimisiticAsyncStorage())\n storagePromise = this._storage.preloadPromise\n } else {\n this._storage = new PostHogRNSyncMemoryStorage()\n }\n\n if (storagePromise) {\n storagePromise.then(() => {\n // This code is for migrating from V1 to V2 and tries its best to keep the existing anon/distinctIds\n // It only applies for async storage\n if (!this._storage.getItem(PostHogPersistedProperty.AnonymousId)) {\n void getLegacyValues().then((legacyValues) => {\n if (legacyValues?.distinctId) {\n this._storage?.setItem(PostHogPersistedProperty.DistinctId, legacyValues.distinctId)\n this._storage?.setItem(PostHogPersistedProperty.AnonymousId, legacyValues.anonymousId)\n }\n })\n }\n })\n }\n\n const initAfterStorage = (): void => {\n // reset session id on app restart\n const enablePersistSessionIdAcrossRestart = options?.enablePersistSessionIdAcrossRestart\n if (!enablePersistSessionIdAcrossRestart) {\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, null)\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, null)\n }\n\n this.setupBootstrap(options)\n\n this._isInitialized = true\n\n if (this._disableRemoteConfig === false) {\n this.reloadRemoteConfigAsync()\n } else {\n this.logMsgIfDebug(() => console.info('PostHog Debug', `Remote config is disabled.`))\n if (options?.preloadFeatureFlags !== false) {\n this.logMsgIfDebug(() => console.info('PostHog Debug', `Feature flags will be preloaded from Decide API.`))\n this.reloadFeatureFlags()\n } else {\n this.logMsgIfDebug(() => console.info('PostHog Debug', `preloadFeatureFlags is disabled.`))\n }\n }\n\n // this value could have been inferred from the autocapture options (captureLifecycleEvents)\n if (options?.captureNativeAppLifecycleEvents) {\n void this.captureNativeAppLifecycleEvents()\n }\n\n void this.persistAppVersion()\n\n void this.startSessionReplay(options)\n }\n\n // For async storage, we wait for the storage to be ready before we start the SDK\n // For sync storage we can start the SDK immediately\n if (storagePromise) {\n this._initPromise = storagePromise.then(initAfterStorage)\n } else {\n this._initPromise = Promise.resolve()\n initAfterStorage()\n }\n }\n\n // NOTE: This is purely a helper method for testing purposes or those who wish to be certain the SDK is fully initialised\n public async ready(): Promise<void> {\n await this._initPromise\n }\n\n getPersistedProperty<T>(key: PostHogPersistedProperty): T | undefined {\n return this._storage.getItem(key) as T | undefined\n }\n\n setPersistedProperty<T>(key: PostHogPersistedProperty, value: T | null): void {\n return value !== null ? this._storage.setItem(key, value) : this._storage.removeItem(key)\n }\n\n fetch(url: string, options: PostHogFetchOptions): Promise<PostHogFetchResponse> {\n return fetch(url, options)\n }\n\n getLibraryId(): string {\n return 'posthog-react-native'\n }\n getLibraryVersion(): string {\n return version\n }\n getCustomUserAgent(): string {\n if (Platform.OS === 'web') {\n return ''\n }\n return `${this.getLibraryId()}/${this.getLibraryVersion()}`\n }\n\n getCommonEventProperties(): any {\n return {\n ...super.getCommonEventProperties(),\n ...this._appProperties,\n $screen_height: Dimensions.get('screen').height,\n $screen_width: Dimensions.get('screen').width,\n }\n }\n\n // Custom methods\n async screen(name: string, properties?: { [key: string]: any }, options?: PostHogCaptureOptions): Promise<void> {\n await this._initPromise\n // Screen name is good to know for all other subsequent events\n this.registerForSession({\n $screen_name: name,\n })\n\n return this.capture(\n '$screen',\n {\n ...properties,\n $screen_name: name,\n },\n options\n )\n }\n\n _isEnableSessionReplay(): boolean {\n return !this.isDisabled && (this._enableSessionReplay ?? false)\n }\n\n _resetSessionId(\n reactNativeSessionReplay: typeof OptionalReactNativeSessionReplay | undefined,\n sessionId: string\n ): void {\n // _resetSessionId is only called if reactNativeSessionReplay not undefined, but the linter wasn't happy\n if (reactNativeSessionReplay) {\n reactNativeSessionReplay.endSession()\n reactNativeSessionReplay.startSession(sessionId)\n }\n }\n\n getSessionId(): string {\n const sessionId = super.getSessionId()\n\n if (!this._isEnableSessionReplay()) {\n return sessionId\n }\n\n // only rotate if there is a new sessionId and it is different from the current one\n if (sessionId.length > 0 && this._currentSessionId && sessionId !== this._currentSessionId) {\n if (OptionalReactNativeSessionReplay) {\n try {\n this._resetSessionId(OptionalReactNativeSessionReplay, sessionId)\n this.logMsgIfDebug(() => console.info('PostHog Debug', `Session replay started with sessionId ${sessionId}.`))\n } catch (e) {\n this.logMsgIfDebug(() =>\n console.error('PostHog Debug', `Session replay failed to start with sessionId: ${e}.`)\n )\n }\n }\n this._currentSessionId = sessionId\n } else {\n this.logMsgIfDebug(() =>\n console.log(\n 'PostHog Debug',\n `Session replay session id not rotated, sessionId ${sessionId} and currentSessionId ${this._currentSessionId}.`\n )\n )\n }\n\n return sessionId\n }\n\n resetSessionId(): void {\n super.resetSessionId()\n if (this._isEnableSessionReplay() && OptionalReactNativeSessionReplay) {\n try {\n OptionalReactNativeSessionReplay.endSession()\n this.logMsgIfDebug(() => console.info('PostHog Debug', `Session replay ended.`))\n } catch (e) {\n this.logMsgIfDebug(() => console.error('PostHog Debug', `Session replay failed to end: ${e}.`))\n }\n }\n }\n\n identify(distinctId?: string, properties?: PostHogEventProperties, options?: PostHogCaptureOptions): void {\n const previousDistinctId = this.getDistinctId()\n super.identify(distinctId, properties, options)\n\n if (this._isEnableSessionReplay() && OptionalReactNativeSessionReplay) {\n try {\n distinctId = distinctId || previousDistinctId\n OptionalReactNativeSessionReplay.identify(distinctId, this.getAnonymousId())\n this.logMsgIfDebug(() =>\n console.info('PostHog Debug', `Session replay identified with distinctId ${distinctId}.`)\n )\n } catch (e) {\n this.logMsgIfDebug(() => console.error('PostHog Debug', `Session replay failed to identify: ${e}.`))\n }\n }\n }\n\n initReactNativeNavigation(options: PostHogAutocaptureOptions): boolean {\n return withReactNativeNavigation(this, options)\n }\n\n public async getSurveys(): Promise<SurveyResponse['surveys']> {\n if (this._disableSurveys === true) {\n this.logMsgIfDebug(() => console.log('Loading surveys is disabled.'))\n this.setPersistedProperty<SurveyResponse['surveys']>(PostHogPersistedProperty.Surveys, null)\n return []\n }\n\n const surveys = this.getPersistedProperty<SurveyResponse['surveys']>(PostHogPersistedProperty.Surveys)\n\n if (surveys && surveys.length > 0) {\n this.logMsgIfDebug(() => console.log('PostHog Debug', 'Surveys fetched from storage: ', JSON.stringify(surveys)))\n return surveys\n } else {\n this.logMsgIfDebug(() => console.log('PostHog Debug', 'No surveys found in storage'))\n }\n\n if (this._disableRemoteConfig === true) {\n const surveysFromApi = await super.getSurveysStateless()\n\n if (surveysFromApi && surveysFromApi.length > 0) {\n this.setPersistedProperty<SurveyResponse['surveys']>(PostHogPersistedProperty.Surveys, surveysFromApi)\n return surveysFromApi\n }\n }\n\n return []\n }\n\n private async startSessionReplay(options?: PostHogOptions): Promise<void> {\n this._enableSessionReplay = options?.enableSessionReplay\n if (!this._isEnableSessionReplay()) {\n this.logMsgIfDebug(() => console.info('PostHog Debug', 'Session replay is not enabled.'))\n return\n }\n\n const {\n maskAllTextInputs = true,\n maskAllImages = true,\n maskAllSandboxedViews = true,\n maskPhotoLibraryImages = false,\n captureLog = true,\n captureNetworkTelemetry = true,\n iOSdebouncerDelayMs = 1000,\n androidDebouncerDelayMs = 1000,\n } = options?.sessionReplayConfig ?? {}\n\n const sdkReplayConfig = {\n maskAllTextInputs,\n maskAllImages,\n maskAllSandboxedViews,\n maskPhotoLibraryImages,\n captureLog,\n captureNetworkTelemetry,\n iOSdebouncerDelayMs,\n androidDebouncerDelayMs,\n }\n\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', `Session replay sdk config: ${JSON.stringify(sdkReplayConfig)}`)\n )\n\n // if Decide has not returned yet, we will start session replay with default config.\n const sessionReplay = this.getPersistedProperty(PostHogPersistedProperty.SessionReplay) ?? {}\n const featureFlags = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlags) ?? {}\n const decideFeatureFlags = (featureFlags as { [key: string]: JsonType }) ?? {}\n\n const decideReplayConfig = (sessionReplay as { [key: string]: JsonType }) ?? {}\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', `Session replay decide cached config: ${JSON.stringify(decideReplayConfig)}`)\n )\n\n let recordingActive = true\n const linkedFlag = decideReplayConfig['linkedFlag'] as string | { [key: string]: JsonType } | null | undefined\n if (typeof linkedFlag === 'string') {\n const value = decideFeatureFlags[linkedFlag]\n if (typeof value === 'boolean') {\n recordingActive = value\n } else if (typeof value === 'string') {\n // if its a multi-variant flag linked to \"any\"\n recordingActive = true\n } else {\n // disable recording if the flag does not exist/quota limited\n recordingActive = false\n }\n\n this.logMsgIfDebug(() => console.log('PostHog Debug', `Session replay ${linkedFlag} linked flag value: ${value}`))\n } else if (linkedFlag && typeof linkedFlag === 'object') {\n const flag = linkedFlag['flag'] as string | undefined\n const variant = linkedFlag['variant'] as string | undefined\n if (flag && variant) {\n const value = decideFeatureFlags[flag]\n recordingActive = value === variant\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', `Session replay ${flag} linked flag variant: ${variant} and value ${value}`)\n )\n } else {\n // disable recording if the flag does not exist/quota limited\n recordingActive = false\n }\n }\n\n if (recordingActive) {\n if (OptionalReactNativeSessionReplay) {\n const sessionId = this.getSessionId()\n\n if (sessionId.length === 0) {\n this.logMsgIfDebug(() => console.warn('PostHog Debug', 'Session replay enabled but no sessionId found.'))\n return\n }\n\n const sdkOptions = {\n apiKey: this.apiKey,\n host: this.host,\n debug: this.isDebug,\n distinctId: this.getDistinctId(),\n anonymousId: this.getAnonymousId(),\n sdkVersion: this.getLibraryVersion(),\n flushAt: this.flushAt,\n }\n\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', `Session replay sdk options: ${JSON.stringify(sdkOptions)}`)\n )\n\n try {\n if (!(await OptionalReactNativeSessionReplay.isEnabled())) {\n await OptionalReactNativeSessionReplay.start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig)\n this.logMsgIfDebug(() =>\n console.info('PostHog Debug', `Session replay started with sessionId ${sessionId}.`)\n )\n } else {\n // if somehow the SDK is already enabled with a different sessionId, we reset it\n this._resetSessionId(OptionalReactNativeSessionReplay, sessionId)\n this.logMsgIfDebug(() =>\n console.log('PostHog Debug', `Session replay already started with sessionId ${sessionId}.`)\n )\n }\n this._currentSessionId = sessionId\n } catch (e) {\n this.logMsgIfDebug(() => console.error('PostHog Debug', `Session replay failed to start: ${e}.`))\n }\n } else {\n this.logMsgIfDebug(() => console.warn('PostHog Debug', 'Session replay enabled but not installed.'))\n }\n } else {\n this.logMsgIfDebug(() => console.info('PostHog Debug', 'Session replay disabled.'))\n }\n }\n\n private async captureNativeAppLifecycleEvents(): Promise<void> {\n const appBuild = this._appProperties.$app_build\n const appVersion = this._appProperties.$app_version\n\n const isMemoryPersistence = this._persistence === 'memory'\n\n // version and build are deprecated, but we keep them for compatibility\n // use $app_version and $app_build instead\n const properties: PostHogEventProperties = { version: appVersion, build: appBuild }\n\n if (!isMemoryPersistence) {\n const prevAppBuild = this.getPersistedProperty(PostHogPersistedProperty.InstalledAppBuild)\n const prevAppVersion = this.getPersistedProperty(PostHogPersistedProperty.InstalledAppVersion)\n\n if (!appBuild || !appVersion) {\n this.logMsgIfDebug(() =>\n console.warn(\n 'PostHog could not track installation/update/open, as the build and version were not set. ' +\n 'This can happen if some dependencies are not installed correctly, or if you have provided' +\n 'customAppProperties but not included $app_build or $app_version.'\n )\n )\n }\n if (appBuild) {\n if (!prevAppBuild) {\n // new app install\n this.capture('Application Installed', properties)\n } else if (prevAppBuild !== appBuild) {\n // app updated\n this.capture('Application Updated', {\n previous_version: prevAppVersion,\n previous_build: prevAppBuild,\n ...properties,\n })\n }\n }\n } else {\n this.logMsgIfDebug(() =>\n console.warn(\n 'PostHog was initialised with persistence set to \"memory\", capturing native app events (Application Installed and Application Updated) is not supported.'\n )\n )\n }\n\n const initialUrl = (await Linking.getInitialURL()) ?? undefined\n\n this.capture('Application Opened', {\n ...properties,\n url: initialUrl,\n })\n\n AppState.addEventListener('change', (state) => {\n if (state === 'active') {\n this.capture('Application Became Active')\n } else if (state === 'background') {\n this.capture('Application Backgrounded')\n }\n })\n }\n\n private async persistAppVersion(): Promise<void> {\n const appBuild = this._appProperties.$app_build\n const appVersion = this._appProperties.$app_version\n this.setPersistedProperty(PostHogPersistedProperty.InstalledAppBuild, appBuild)\n this.setPersistedProperty(PostHogPersistedProperty.InstalledAppVersion, appVersion)\n }\n}\n","import type ReactNativeNavigation from '@react-navigation/native'\nimport { Platform } from 'react-native'\n\nexport let OptionalReactNativeNavigation: typeof ReactNativeNavigation | undefined = undefined\n\ntry {\n // macos not supported\n OptionalReactNativeNavigation = Platform.select({\n macos: undefined,\n // experimental support for web https://reactnavigation.org/docs/web-support/\n default: require('@react-navigation/native'),\n })\n} catch (e) {}\n","import React from 'react'\nimport { PostHog } from './posthog-rn'\n\nexport const PostHogContext = React.createContext<{ client: PostHog }>({ client: undefined as unknown as PostHog })\n","import { PostHog } from '../posthog-rn'\nimport React from 'react'\nimport { PostHogContext } from '../PostHogContext'\n\nexport const usePostHog = (): PostHog => {\n const { client } = React.useContext(PostHogContext)\n return client\n}\n","import { useCallback, useEffect } from 'react'\nimport { OptionalReactNativeNavigation } from '../optional/OptionalReactNativeNavigation'\nimport type { PostHog } from '../posthog-rn'\nimport { PostHogAutocaptureNavigationTrackerOptions } from '../types'\nimport { usePostHog } from './usePostHog'\nimport { PostHogNavigationRef } from '../types'\n\nfunction _useNavigationTrackerDisabled(): void {\n return\n}\n\nfunction _useNavigationTracker(\n options?: PostHogAutocaptureNavigationTrackerOptions,\n navigationRef?: PostHogNavigationRef,\n client?: PostHog\n): void {\n const contextClient = usePostHog()\n const posthog = client || contextClient\n\n if (!OptionalReactNativeNavigation) {\n // NOTE: This is taken care of by the export, but we keep this here for TS\n throw new Error('No OptionalReactNativeNavigation')\n }\n\n const routes = OptionalReactNativeNavigation.useNavigationState((state) => state?.routes)\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const navigation = navigationRef || OptionalReactNativeNavigation.useNavigation()\n\n const trackRoute = useCallback((): void => {\n if (!navigation) {\n return\n }\n\n let currentRoute = undefined\n\n // NOTE: This method is not typed correctly but is available and takes care of parsing the router state correctly\n try {\n let isReady = false\n try {\n isReady = (navigation as any).isReady()\n } catch (error) {\n // keep compatibility with older versions of react-navigation\n isReady = true\n }\n\n if (!isReady) {\n return\n }\n\n currentRoute = (navigation as any).getCurrentRoute()\n } catch (error) {\n return\n }\n\n if (!currentRoute) {\n return\n }\n\n const { state } = currentRoute\n let { name, params } = currentRoute\n\n if (state?.routes?.length) {\n const route = state.routes[state.routes.length - 1]\n name = route.name\n params = route.params\n }\n\n const currentRouteName = options?.routeToName?.(name, params) || name || 'Unknown'\n\n if (currentRouteName) {\n const properties = options?.routeToProperties?.(currentRouteName, params)\n posthog.screen(currentRouteName, properties)\n }\n }, [navigation, options, posthog])\n\n useEffect(() => {\n // NOTE: The navigation stacks may not be fully rendered initially. This means the first route can be missed (it doesn't update useNavigationState)\n // If missing we simply wait a tick and call it again.\n if (!routes) {\n setTimeout(trackRoute, 1)\n return\n }\n trackRoute()\n }, [routes, trackRoute])\n}\n\nexport const useNavigationTracker = OptionalReactNativeNavigation\n ? _useNavigationTracker\n : _useNavigationTrackerDisabled\n","import { useEffect, useState } from 'react'\nimport type { PostHog } from '../posthog-rn'\nimport { PostHogDecideResponse } from 'posthog-core'\nimport { usePostHog } from './usePostHog'\n\nexport function useFeatureFlags(client?: PostHog): PostHogDecideResponse['featureFlags'] | undefined {\n const contextClient = usePostHog()\n const posthog = client || contextClient\n const [featureFlags, setFeatureFlags] = useState<PostHogDecideResponse['featureFlags'] | undefined>(\n posthog.getFeatureFlags()\n )\n\n useEffect(() => {\n setFeatureFlags(posthog.getFeatureFlags())\n return posthog.onFeatureFlags((flags) => {\n setFeatureFlags(flags)\n })\n }, [posthog])\n\n return featureFlags\n}\n","import { useEffect, useState } from 'react'\nimport { usePostHog } from './usePostHog'\nimport { JsonType, FeatureFlagValue } from 'posthog-core/src'\nimport { PostHog } from '../posthog-rn'\n\nexport function useFeatureFlag(flag: string, client?: PostHog): FeatureFlagValue | undefined {\n const contextClient = usePostHog()\n const posthog = client || contextClient\n\n const [featureFlag, setFeatureFlag] = useState<FeatureFlagValue | undefined>(posthog.getFeatureFlag(flag))\n\n useEffect(() => {\n setFeatureFlag(posthog.getFeatureFlag(flag))\n return posthog.onFeatureFlags(() => {\n setFeatureFlag(posthog.getFeatureFlag(flag))\n })\n }, [posthog, flag])\n\n return featureFlag\n}\n\nexport type FeatureFlagWithPayload = [FeatureFlagValue | undefined, JsonType | undefined]\n\nexport function useFeatureFlagWithPayload(flag: string, client?: PostHog): FeatureFlagWithPayload {\n const contextClient = usePostHog()\n const posthog = client || contextClient\n const [featureFlag, setFeatureFlag] = useState<FeatureFlagWithPayload>([undefined, undefined])\n\n useEffect(() => {\n setFeatureFlag([posthog.getFeatureFlag(flag), posthog.getFeatureFlagPayload(flag)])\n return posthog.onFeatureFlags(() => {\n setFeatureFlag([posthog.getFeatureFlag(flag), posthog.getFeatureFlagPayload(flag)])\n })\n }, [posthog, flag])\n\n return featureFlag\n}\n","import { PostHog } from './posthog-rn'\nimport { PostHogAutocaptureElement } from 'posthog-core'\nimport { PostHogAutocaptureOptions } from './types'\n\ninterface Element {\n elementType?: {\n displayName?: string\n name?: string\n }\n memoizedProps?: Record<string, unknown>\n return?: Element\n}\n\nconst flattenStyles = (styles: any): any => {\n const flattened: any = {}\n\n if (Array.isArray(styles)) {\n for (const style of styles) {\n Object.assign(flattened, flattenStyles(style))\n }\n } else {\n Object.assign(flattened, styles)\n }\n\n return flattened\n}\n\nconst stringifyStyle = (styles: any): string => {\n const flattened = flattenStyles(styles)\n\n const str = Object.keys(flattened)\n .map((x) => `${x}:${flattened[x]}`)\n .join(';')\n\n return str\n}\n\nconst sanitiseLabel = (label: string): string => {\n return label.replace(/[^a-z0-9]+/gi, '-')\n}\n\nexport const defaultPostHogLabelProp = 'ph-label'\n\nexport const autocaptureFromTouchEvent = (e: any, posthog: PostHog, options: PostHogAutocaptureOptions = {}): void => {\n const {\n noCaptureProp = 'ph-no-capture',\n customLabelProp = defaultPostHogLabelProp,\n maxElementsCaptured = 20,\n ignoreLabels = [],\n propsToCapture = ['style', 'testID', 'accessibilityLabel', customLabelProp, 'children'],\n } = options\n\n if (!e._targetInst) {\n return\n }\n const elements: PostHogAutocaptureElement[] = []\n\n let currentInst: Element | undefined = e._targetInst\n\n while (\n currentInst &&\n // maxComponentTreeSize will always be defined as we have a defaultProps. But ts needs a check so this is here.\n elements.length < maxElementsCaptured\n ) {\n const el: PostHogAutocaptureElement = {\n tag_name: '',\n }\n\n const props = currentInst.memoizedProps\n\n if (props?.[noCaptureProp]) {\n // Immediately ignore events if a no capture is in the chain\n return\n }\n\n if (props) {\n // Capture only props we have said to capture. By default this is only \"safe\" props\n Object.keys(props).forEach((key) => {\n if (!propsToCapture.includes(key)) {\n return\n }\n const value = props[key]\n if (key === 'style') {\n el.attr__style = stringifyStyle(value)\n } else if (['string', 'number', 'boolean'].includes(typeof value)) {\n if (key === 'children') {\n el.$el_text = typeof value === 'string' ? value : JSON.stringify(value)\n } else {\n el[`attr__${key}`] = value\n }\n }\n })\n }\n\n // Try and find a sensible label\n const label =\n typeof props?.[customLabelProp] !== 'undefined'\n ? `${props[customLabelProp]}`\n : currentInst.elementType?.displayName || currentInst.elementType?.name\n\n if (label && !ignoreLabels.includes(label)) {\n el.tag_name = sanitiseLabel(label)\n elements.push(el)\n }\n\n currentInst = currentInst.return\n }\n\n if (elements.length) {\n // The element that was tapped, may be a child (or grandchild of an element with a customLabelProp (default: ph-label))\n // In this case, the current labels applied obscure the customLabelProp (default: ph-label)\n // To correct this, loop over the elements in reverse, and promote the customLabelProp (default: ph-label)\n const elAttrLabelKey = `attr__${customLabelProp}`\n let lastLabel: string | undefined = undefined\n\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i]\n if (element[elAttrLabelKey]) {\n // this element had a customLabelProp (default: ph-label) set, promote it to the lastLabel\n lastLabel = element[elAttrLabelKey]\n }\n\n // if lastLabel is set, update this elements tag_name\n if (lastLabel) {\n element['tag_name'] = lastLabel\n }\n }\n posthog.autocapture('touch', elements, {\n $touch_x: e.nativeEvent.pageX,\n $touch_y: e.nativeEvent.pageY,\n })\n }\n}\n","import React, { useCallback, useEffect, useMemo } from 'react'\nimport { GestureResponderEvent, StyleProp, View, ViewStyle } from 'react-native'\nimport { PostHog, PostHogOptions } from './posthog-rn'\nimport { autocaptureFromTouchEvent } from './autocapture'\nimport { useNavigationTracker } from './hooks/useNavigationTracker'\nimport { PostHogContext } from './PostHogContext'\nimport { PostHogAutocaptureOptions } from './types'\nimport { defaultPostHogLabelProp } from './autocapture'\n\nexport interface PostHogProviderProps {\n children: React.ReactNode\n options?: PostHogOptions\n apiKey?: string\n client?: PostHog\n autocapture?: boolean | PostHogAutocaptureOptions\n debug?: boolean\n style?: StyleProp<ViewStyle>\n}\n\nfunction PostHogNavigationHook({\n options,\n client,\n}: {\n options?: PostHogAutocaptureOptions\n client?: PostHog\n}): JSX.Element | null {\n useNavigationTracker(options?.navigation, options?.navigationRef, client)\n return null\n}\n\nexport const PostHogProvider = ({\n children,\n client,\n options,\n apiKey,\n autocapture,\n style,\n debug = false,\n}: PostHogProviderProps): JSX.Element | null => {\n if (!client && !apiKey) {\n throw new Error(\n 'Either a PostHog client or an apiKey is required. If you want to use the PostHogProvider without a client, please provide an apiKey and the options={ disabled: true }.'\n )\n }\n\n const captureAll = autocapture === true\n const captureNone = autocapture === false\n\n const posthog = useMemo(() => {\n if (client && apiKey) {\n console.warn(\n 'You have provided both a client and an apiKey to PostHogProvider. The apiKey will be ignored in favour of the client.'\n )\n }\n\n if (client) {\n return client\n }\n\n const parsedOptions = {\n ...options,\n\n // For backwards-compatible reasons, this information can be stored in two separate places\n // Default to true if not set\n captureNativeAppLifecycleEvents:\n options?.captureNativeAppLifecycleEvents !== undefined\n ? options.captureNativeAppLifecycleEvents\n : !captureNone && (captureAll || (autocaptureOptions?.captureLifecycleEvents ?? true)),\n }\n\n return new PostHog(apiKey ?? '', parsedOptions)\n }, [client, apiKey]) // eslint-disable-line react-hooks/exhaustive-deps\n\n const autocaptureOptions = useMemo(\n () => (autocapture && typeof autocapture !== 'boolean' ? autocapture : {}),\n [autocapture]\n )\n\n const captureTouches = !captureNone && posthog && (captureAll || autocaptureOptions?.captureTouches)\n const captureScreens = !captureNone && posthog && (captureAll || (autocaptureOptions?.captureScreens ?? true)) // Default to true if not set\n const phLabelProp = autocaptureOptions?.customLabelProp || defaultPostHogLabelProp\n\n useEffect(() => {\n posthog.debug(debug)\n }, [debug, posthog])\n\n const onTouch = useCallback(\n (type: 'start' | 'move' | 'end', e: GestureResponderEvent) => {\n // TODO: Improve this to ensure we only capture presses and not just ends of a drag for example\n if (!captureTouches) {\n return\n }\n\n if (type === 'end') {\n autocaptureFromTouchEvent(e, posthog, autocaptureOptions)\n }\n },\n [captureTouches, posthog, autocaptureOptions]\n )\n\n return (\n <View\n {...{ [phLabelProp]: 'PostHogProvider' }} // Dynamically setting customLabelProp (default: ph-label)\n style={style || { flex: 1 }}\n onTouchEndCapture={captureTouches ? (e) => onTouch('end', e) : undefined}\n >\n <PostHogContext.Provider value={{ client: posthog }}>\n {captureScreens && <PostHogNavigationHook options={autocaptureOptions} client={posthog} />}\n {children}\n </PostHogContext.Provider>\n </View>\n )\n}\n","import {\n MultipleSurveyQuestion,\n Survey,\n SurveyAppearance,\n SurveyQuestion,\n SurveyPosition,\n SurveyQuestionDescriptionContentType,\n} from '../../../posthog-core/src'\n\nexport const defaultBackgroundColor = '#eeeded' as const\n\nexport type SurveyAppearanceTheme = Omit<\n Required<SurveyAppearance>,\n 'widgetSelector' | 'widgetType' | 'widgetColor' | 'widgetLabel' | 'shuffleQuestions'\n>\nexport const defaultSurveyAppearance: SurveyAppearanceTheme = {\n backgroundColor: defaultBackgroundColor,\n submitButtonColor: 'black',\n submitButtonTextColor: 'white',\n ratingButtonColor: 'white',\n ratingButtonActiveColor: 'black',\n borderColor: '#c9c6c6',\n placeholder: 'Start typing...',\n displayThankYouMessage: true,\n thankYouMessageHeader: 'Thank you for your feedback!',\n position: SurveyPosition.Right,\n submitButtonText: 'Submit',\n autoDisappear: false,\n thankYouMessageDescription: '',\n thankYouMessageDescriptionContentType: SurveyQuestionDescriptionContentType.Text,\n thankYouMessageCloseButtonText: 'Close',\n surveyPopupDelaySeconds: 0,\n}\n\nexport const getDisplayOrderQuestions = (survey: Survey): SurveyQuestion[] => {\n // retain the original questionIndex so we can correlate values in the webapp\n survey.questions.forEach((question: SurveyQuestion, idx: number) => {\n question.originalQuestionIndex = idx\n })\n\n // TODO: shuffle questions\n return survey.questions\n\n // if (!survey.appearance?.shuffleQuestions) {\n // return survey.questions\n // }\n\n // return reverseIfUnshuffled(survey.questions, shuffle(survey.questions))\n}\n\nexport const hasEvents = (survey: Survey): boolean => {\n return survey.conditions?.events?.values !== undefined && survey.conditions.events.values.length > 0\n}\n\n// export const hasActions = (survey: Survey): boolean => {\n// return survey.conditions?.actions?.values.length !== undefined && survey.conditions.actions.values.length > 0\n// }\n\nexport const canActivateRepeatedly = (survey: Survey): boolean => {\n return !!(survey.conditions?.events?.repeatedActivation && hasEvents(survey))\n}\n\n/**\n * Use the Fisher-yates algorithm to shuffle this array\n * https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\n */\n// export const shuffle = <T>(array: T[]): T[] => {\n// return array\n// .map((a) => ({ sort: Math.floor(Math.random() * 10), value: a }))\n// .sort((a, b) => a.sort - b.sort)\n// .map((a) => a.value)\n// }\n\n// const reverseIfUnshuffled = <T>(unshuffled: T[], shuffled: T[]): T[] => {\n// if (unshuffled.length === shuffled.length && unshuffled.every((val, index) => val === shuffled[index])) {\n// return shuffled.reverse()\n// }\n\n// return shuffled\n// }\n\nexport const getDisplayOrderChoices = (question: MultipleSurveyQuestion): string[] => {\n // TODO: shuffle choices\n return question.choices\n\n // if (!question.shuffleOptions) {\n // return question.choices\n // }\n\n // const displayOrderChoices = question.choices\n // let openEndedChoice = ''\n // if (question.hasOpenChoice && displayOrderChoices.length > 0) {\n // if the question has an open-ended choice, its always the last element in the choices array.\n // openEndedChoice = displayOrderChoices.pop()!\n // }\n\n // const shuffledOptions = reverseIfUnshuffled(displayOrderChoices, shuffle(displayOrderChoices))\n\n // if (question.hasOpenChoice) {\n // question.choices.push(openEndedChoice)\n // shuffledOptions.push(openEndedChoice)\n // }\n\n // return shuffledOptions\n}\n\nexport function getContrastingTextColor(color: string): 'black' | 'white' {\n let rgb: string | undefined\n if (color.startsWith('#')) {\n rgb = hex2rgb(color)\n }\n if (color.startsWith('rgb')) {\n rgb = color\n }\n // otherwise it's a color name\n const nameColorToHex = nameToHex(color)\n if (nameColorToHex) {\n rgb = hex2rgb(nameColorToHex)\n }\n if (!rgb) {\n return 'black'\n }\n const colorMatch = rgb.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (colorMatch) {\n const r = parseInt(colorMatch[1], 10)\n const g = parseInt(colorMatch[2], 10)\n const b = parseInt(colorMatch[3], 10)\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n }\n return 'black'\n}\n\nfunction hex2rgb(c: string): string {\n if (c.startsWith('#')) {\n const hexColor = c.replace(/^#/, '')\n if (!/^[0-9A-Fa-f]{6}$/.test(hexColor)) {\n return 'rgb(255, 255, 255)'\n }\n const r = parseInt(hexColor.slice(0, 2), 16)\n const g = parseInt(hexColor.slice(2, 4), 16)\n const b = parseInt(hexColor.slice(4, 6), 16)\n return `rgb(${r},${g},${b})`\n }\n return 'rgb(255, 255, 255)'\n}\n\nfunction nameToHex(name: string): string | undefined {\n return {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n 'indianred ': '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n }[name.toLowerCase()]\n}\n","import React from 'react'\nimport { Path, Svg, SvgProps } from 'react-native-svg'\n\nexport const SatisfiedEmoji = (props: SvgProps): JSX.Element => (\n <Svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\" {...props}>\n <Path d=\"M626-533q22.5 0 38.25-15.75T680-587q0-22.5-15.75-38.25T626-641q-22.5 0-38.25 15.75T572-587q0 22.5 15.75 38.25T626-533Zm-292 0q22.5 0 38.25-15.75T388-587q0-22.5-15.75-38.25T334-641q-22.5 0-38.25 15.75T280-587q0 22.5 15.75 38.25T334-533Zm146 272q66 0 121.5-35.5T682-393h-52q-23 40-63 61.5T480.5-310q-46.5 0-87-21T331-393h-53q26 61 81 96.5T480-261Zm0 181q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 340q142.375 0 241.188-98.812Q820-337.625 820-480t-98.812-241.188Q622.375-820 480-820t-241.188 98.812Q140-622.375 140-480t98.812 241.188Q337.625-140 480-140Z\" />\n </Svg>\n)\n\nexport const NeutralEmoji = (props: SvgProps): JSX.Element => (\n <Svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\" {...props}>\n <Path d=\"M626-533q22.5 0 38.25-15.75T680-587q0-22.5-15.75-38.25T626-641q-22.5 0-38.25 15.75T572-587q0 22.5 15.75 38.25T626-533Zm-292 0q22.5 0 38.25-15.75T388-587q0-22.5-15.75-38.25T334-641q-22.5 0-38.25 15.75T280-587q0 22.5 15.75 38.25T334-533Zm20 194h253v-49H354v49ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 340q142.375 0 241.188-98.812Q820-337.625 820-480t-98.812-241.188Q622.375-820 480-820t-241.188 98.812Q140-622.375 140-480t98.812 241.188Q337.625-140 480-140Z\" />\n </Svg>\n)\n\nexport const DissatisfiedEmoji = (props: SvgProps): JSX.Element => (\n <Svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\" {...props}>\n <Path d=\"M626-533q22.5 0 38.25-15.75T680-587q0-22.5-15.75-38.25T626-641q-22.5 0-38.25 15.75T572-587q0 22.5 15.75 38.25T626-533Zm-292 0q22.5 0 38.25-15.75T388-587q0-22.5-15.75-38.25T334-641q-22.5 0-38.25 15.75T280-587q0 22.5 15.75 38.25T334-533Zm146.174 116Q413-417 358.5-379.5T278-280h53q22-42 62.173-65t87.5-23Q528-368 567.5-344.5T630-280h52q-25-63-79.826-100-54.826-37-122-37ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 340q142.375 0 241.188-98.812Q820-337.625 820-480t-98.812-241.188Q622.375-820 480-820t-241.188 98.812Q140-622.375 140-480t98.812 241.188Q337.625-140 480-140Z\" />\n </Svg>\n)\n\nexport const VeryDissatisfiedEmoji = (props: SvgProps): JSX.Element => (\n <Svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\" {...props}>\n <Path d=\"M480-417q-67 0-121.5 37.5T278-280h404q-25-63-80-100t-122-37Zm-183-72 50-45 45 45 31-36-45-45 45-45-31-36-45 45-50-45-31 36 45 45-45 45 31 36Zm272 0 44-45 51 45 31-36-45-45 45-45-31-36-51 45-44-45-31 36 44 45-44 45 31 36ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 340q142 0 241-99t99-241q0-142-99-241t-241-99q-142 0-241 99t-99 241q0 142 99 241t241 99Z\" />\n </Svg>\n)\n\nexport const VerySatisfiedEmoji = (props: SvgProps): JSX.Element => (\n <Svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\" {...props}>\n <Path d=\"M479.504-261Q537-261 585.5-287q48.5-26 78.5-72.4 6-11.6-.75-22.6-6.75-11-20.25-11H316.918Q303-393 296.5-382t-.5 22.6q30 46.4 78.5 72.4 48.5 26 105.004 26ZM347-578l27 27q7.636 8 17.818 8Q402-543 410-551q8-8 8-18t-8-18l-42-42q-8.8-9-20.9-9-12.1 0-21.1 9l-42 42q-8 7.636-8 17.818Q276-559 284-551q8 8 18 8t18-8l27-27Zm267 0 27 27q7.714 8 18 8t18-8q8-7.636 8-17.818Q685-579 677-587l-42-42q-8.8-9-20.9-9-12.1 0-21.1 9l-42 42q-8 7.714-8 18t8 18q7.636 8 17.818 8Q579-543 587-551l27-27ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 340q142.375 0 241.188-98.812Q820-337.625 820-480t-98.812-241.188Q622.375-820 480-820t-241.188 98.812Q140-622.375 140-480t98.812 241.188Q337.625-140 480-140Z\" />\n </Svg>\n)\n\nexport const CheckSVG = (props: SvgProps): JSX.Element => (\n <Svg width=\"16\" height=\"16\" viewBox=\"0 0 16 12\" {...props}>\n <Path d=\"M5.30769 10.6923L4.77736 11.2226C4.91801 11.3633 5.10878 11.4423 5.30769 11.4423C5.5066 11.4423 5.69737 11.3633 5.83802 11.2226L5.30769 10.6923ZM15.5303 1.53033C15.8232 1.23744 15.8232 0.762563 15.5303 0.46967C15.2374 0.176777 14.7626 0.176777 14.4697 0.46967L15.5303 1.53033ZM1.53033 5.85429C1.23744 5.56139 0.762563 5.56139 0.46967 5.85429C0.176777 6.14718 0.176777 6.62205 0.46967 6.91495L1.53033 5.85429ZM5.83802 11.2226L15.5303 1.53033L14.4697 0.46967L4.77736 10.162L5.83802 11.2226ZM0.46967 6.91495L4.77736 11.2226L5.83802 10.162L1.53033 5.85429L0.46967 6.91495Z\" />\n </Svg>\n)\n\nexport const CancelSVG = (props: SvgProps): JSX.Element => (\n <Svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" {...props}>\n <Path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M0.164752 0.164752C0.384422 -0.0549175 0.740578 -0.0549175 0.960248 0.164752L6 5.20451L11.0398 0.164752C11.2594 -0.0549175 11.6156 -0.0549175 11.8352 0.164752C12.0549 0.384422 12.0549 0.740578 11.8352 0.960248L6.79549 6L11.8352 11.0398C12.0549 11.2594 12.0549 11.6156 11.8352 11.8352C11.6156 12.0549 11.2594 12.0549 11.0398 11.8352L6 6.79549L0.960248 11.8352C0.740578 12.0549 0.384422 12.0549 0.164752 11.8352C-0.0549175 11.6156 -0.0549175 11.2594 0.164752 11.0398L5.20451 6L0.164752 0.960248C-0.0549175 0.740578 -0.0549175 0.384422 0.164752 0.164752Z\"\n fill=\"black\"\n />\n </Svg>\n)\n","import React from 'react'\nimport { Linking, StyleSheet, Text, TouchableOpacity, View } from 'react-native'\n\nimport { SurveyAppearanceTheme } from '../surveys-utils'\n\nexport function BottomSection({\n text,\n submitDisabled,\n appearance,\n onSubmit,\n link,\n}: {\n text: string\n submitDisabled: boolean\n appearance: SurveyAppearanceTheme\n onSubmit: () => void\n link?: string | null\n}): JSX.Element {\n return (\n <View style={styles.bottomSection}>\n <TouchableOpacity\n style={[styles.button, { backgroundColor: appearance.submitButtonColor }]}\n disabled={submitDisabled}\n onPress={() => {\n onSubmit()\n if (link) {\n Linking.canOpenURL(link).then((supported) => {\n if (supported) {\n Linking.openURL(link)\n }\n })\n }\n }}\n >\n <Text style={[styles.buttonText, { color: appearance.submitButtonTextColor }]}>{text}</Text>\n </TouchableOpacity>\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n bottomSection: {\n padding: 10,\n },\n button: {\n padding: 10,\n borderRadius: 5,\n alignItems: 'center',\n },\n buttonText: {\n fontSize: 16,\n },\n})\n","import React from 'react'\nimport { StyleSheet, Text, View } from 'react-native'\n\nimport { SurveyQuestionDescriptionContentType } from '../../../../posthog-core/src'\n\nexport function QuestionHeader({\n question,\n description,\n descriptionContentType,\n}: {\n question: string\n description?: string | null\n descriptionContentType?: SurveyQuestionDescriptionContentType\n}): JSX.Element {\n return (\n <View style={styles.container}>\n <Text style={styles.question}>{question}</Text>\n {description && descriptionContentType === SurveyQuestionDescriptionContentType.Text && (\n <Text style={styles.description}>{description}</Text>\n )}\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n padding: 10,\n },\n question: {\n fontSize: 18,\n fontWeight: 'bold',\n },\n description: {\n fontSize: 14,\n marginTop: 5,\n },\n})\n","import React, { useMemo, useState } from 'react'\nimport { Pressable, StyleSheet, Text, TextInput, TouchableOpacity, View } from 'react-native'\n\nimport {\n CheckSVG,\n DissatisfiedEmoji,\n NeutralEmoji,\n SatisfiedEmoji,\n VeryDissatisfiedEmoji,\n VerySatisfiedEmoji,\n} from '../icons'\nimport { getContrastingTextColor, getDisplayOrderChoices, SurveyAppearanceTheme } from '../surveys-utils'\nimport {\n SurveyQuestion,\n SurveyRatingDisplay,\n SurveyQuestionType,\n LinkSurveyQuestion,\n RatingSurveyQuestion,\n MultipleSurveyQuestion,\n} from '../../../../posthog-core/src'\nimport { BottomSection } from './BottomSection'\nimport { QuestionHeader } from './QuestionHeader'\n\ninterface QuestionCommonProps {\n question: SurveyQuestion\n appearance: SurveyAppearanceTheme\n}\n\nexport function OpenTextQuestion({\n question,\n appearance,\n onSubmit,\n}: QuestionCommonProps & {\n onSubmit: (text: string) => void\n}): JSX.Element {\n const [text, setText] = useState('')\n\n return (\n <View>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n />\n <View style={styles.textInputContainer}>\n <TextInput\n style={styles.textInput}\n multiline\n numberOfLines={4}\n placeholder={appearance.placeholder}\n onChangeText={setText}\n value={text}\n />\n </View>\n <BottomSection\n text={question.buttonText ?? appearance.submitButtonText}\n submitDisabled={!text && !question.optional}\n appearance={appearance}\n onSubmit={() => onSubmit(text)}\n />\n </View>\n )\n}\n\nexport function LinkQuestion({\n question,\n appearance,\n onSubmit,\n}: QuestionCommonProps & {\n onSubmit: (clicked: string) => void\n}): JSX.Element {\n question = question as LinkSurveyQuestion\n\n return (\n <>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n />\n <BottomSection\n text={question.buttonText ?? appearance.submitButtonText ?? 'Submit'}\n submitDisabled={false}\n link={question.link}\n appearance={appearance}\n onSubmit={() => onSubmit('link clicked')}\n />\n </>\n )\n}\n\nexport function RatingQuestion({\n question,\n appearance,\n onSubmit,\n}: QuestionCommonProps & {\n onSubmit: (rating: number | null) => void\n}): JSX.Element {\n //const starting = question.scale === 10 ? 0 : 1;\n const [rating, setRating] = useState<number | null>(null)\n question = question as RatingSurveyQuestion\n\n return (\n <>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n />\n <View style={styles.ratingSection}>\n <View style={styles.ratingOptions}>\n {question.display === SurveyRatingDisplay.Emoji && (\n <View style={styles.ratingOptionsEmoji}>\n {(question.scale === 3 ? threeScaleEmojis : fiveScaleEmojis).map((Emoji, idx) => {\n const active = idx + 1 === rating\n return (\n <TouchableOpacity key={idx} style={styles.ratingsEmoji} onPress={() => setRating(idx + 1)}>\n <Emoji fill={active ? appearance.ratingButtonActiveColor : appearance.ratingButtonColor} />\n </TouchableOpacity>\n )\n })}\n </View>\n )}\n {question.display === SurveyRatingDisplay.Number && (\n <View style={[styles.ratingOptionsNumber, { borderColor: appearance.borderColor }]}>\n {getScaleNumbers(question.scale).map((number, idx) => {\n const active = rating === number\n return (\n <RatingButton\n key={idx}\n index={idx}\n active={active}\n appearance={appearance}\n num={number}\n setActiveNumber={setRating}\n />\n )\n })}\n </View>\n )}\n </View>\n <View style={styles.ratingText}>\n <Text>{question.lowerBoundLabel}</Text>\n <Text>{question.upperBoundLabel}</Text>\n </View>\n </View>\n <BottomSection\n text={question.buttonText ?? appearance.submitButtonText}\n submitDisabled={rating === null && !question.optional}\n appearance={appearance}\n onSubmit={() => onSubmit(rating)}\n />\n </>\n )\n}\n\nexport function RatingButton({\n index,\n num,\n active,\n appearance,\n setActiveNumber,\n}: {\n index: number\n num: number\n active: boolean\n appearance: SurveyAppearanceTheme\n setActiveNumber: (num: number) => void\n}): JSX.Element {\n const backgroundColor = active ? appearance.ratingButtonActiveColor : appearance.ratingButtonColor\n const textColor = getContrastingTextColor(backgroundColor)\n\n return (\n <TouchableOpacity\n style={[\n styles.ratingsNumber,\n index === 0 && { borderLeftWidth: 0 },\n { backgroundColor, borderColor: appearance.borderColor },\n ]}\n onPress={() => setActiveNumber(num)}\n >\n <Text style={{ color: textColor }}>{num}</Text>\n </TouchableOpacity>\n )\n}\n\nexport function MultipleChoiceQuestion({\n question,\n appearance,\n onSubmit,\n}: QuestionCommonProps & {\n onSubmit: (choices: string | string[] | null) => void\n}): JSX.Element {\n question = question as MultipleSurveyQuestion\n const allowMultiple = question.type === SurveyQuestionType.MultipleChoice\n const openChoice = question.hasOpenChoice ? question.choices[question.choices.length - 1] : null\n const choices = useMemo(() => getDisplayOrderChoices(question as MultipleSurveyQuestion), [question])\n const [selectedChoices, setSelectedChoices] = useState<string[]>([])\n const [openEndedInput, setOpenEndedInput] = useState('')\n\n return (\n <View>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n />\n <View style={styles.multipleChoiceOptions}>\n {choices.map((choice: string, idx: number) => {\n const isOpenChoice = choice === openChoice\n const isSelected = selectedChoices.includes(choice)\n\n return (\n <Pressable\n key={idx}\n style={[styles.choiceOption, isSelected ? { borderColor: 'black' } : {}]}\n onPress={() => {\n if (allowMultiple) {\n setSelectedChoices(\n isSelected ? selectedChoices.filter((c) => c !== choice) : [...selectedChoices, choice]\n )\n } else {\n setSelectedChoices([choice])\n }\n }}\n >\n <View style={styles.choiceText}>\n <Text style={{ flexGrow: 1 }}>\n {choice}\n {isOpenChoice ? ':' : ''}\n </Text>\n <View style={styles.rightCheckArea}>{isSelected && <CheckSVG />}</View>\n </View>\n {isOpenChoice && (\n <TextInput\n style={styles.openEndedInput}\n onChangeText={(userValue) => {\n setOpenEndedInput(userValue)\n if (!isSelected) {\n setSelectedChoices(allowMultiple ? [...selectedChoices, choice] : [choice])\n }\n }}\n />\n )}\n </Pressable>\n )\n })}\n </View>\n <BottomSection\n text={question.buttonText ?? appearance.submitButtonText}\n submitDisabled={\n !question.optional &&\n (selectedChoices.length === 0 ||\n (openChoice !== null && selectedChoices.includes(openChoice) && openEndedInput.length === 0))\n }\n appearance={appearance}\n onSubmit={() => {\n // If open choice is selected, replace the choice name with the actual value entered\n const result = selectedChoices.map((c) => (c === openChoice ? openEndedInput : c))\n onSubmit(result.length === 1 ? result[0] : result)\n }}\n />\n </View>\n )\n}\n\nconst threeScaleEmojis = [DissatisfiedEmoji, NeutralEmoji, SatisfiedEmoji]\nconst fiveScaleEmojis = [VeryDissatisfiedEmoji, DissatisfiedEmoji, NeutralEmoji, SatisfiedEmoji, VerySatisfiedEmoji]\nconst fiveScaleNumbers = [1, 2, 3, 4, 5]\nconst sevenScaleNumbers = [1, 2, 3, 4, 5, 6, 7]\nconst tenScaleNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n\nfunction getScaleNumbers(scale: number): number[] {\n switch (scale) {\n case 5:\n return fiveScaleNumbers\n case 7:\n return sevenScaleNumbers\n case 10:\n return tenScaleNumbers\n default:\n return fiveScaleNumbers\n }\n}\n\nconst styles = StyleSheet.create({\n textInputContainer: {\n padding: 10,\n },\n textInput: {\n borderColor: '#ccc',\n borderWidth: 1,\n padding: 10,\n marginVertical: 10,\n backgroundColor: 'white',\n fontSize: 16,\n },\n ratingSection: {\n marginVertical: 10,\n },\n ratingOptions: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n ratingOptionsEmoji: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n flexWrap: 'wrap', // Allows items to wrap to a new line\n },\n ratingsEmoji: {\n padding: 10,\n },\n ratingOptionsNumber: {\n margin: 10,\n flexGrow: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderRadius: 5,\n borderWidth: 1,\n overflow: 'hidden',\n },\n ratingsNumber: {\n flex: 1,\n paddingVertical: 10,\n alignItems: 'center',\n borderLeftWidth: 1,\n },\n ratingText: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 10,\n },\n multipleChoiceOptions: {\n padding: 10,\n },\n choiceOption: {\n flexDirection: 'column',\n marginVertical: 5,\n borderWidth: 1,\n borderColor: 'grey',\n borderRadius: 5,\n padding: 10,\n backgroundColor: 'white',\n },\n choiceText: {\n flexDirection: 'row',\n },\n rightCheckArea: {\n flexGrow: 0,\n },\n openEndedInput: {\n padding: 5,\n },\n})\n","import React, { useMemo, useState } from 'react'\nimport { ScrollView, StyleProp, ViewStyle } from 'react-native'\n\nimport { getDisplayOrderQuestions, SurveyAppearanceTheme } from '../surveys-utils'\nimport { Survey, SurveyAppearance, SurveyQuestion } from '../../../../posthog-core/src'\nimport { LinkQuestion, MultipleChoiceQuestion, OpenTextQuestion, RatingQuestion } from './QuestionTypes'\nimport { PostHog } from '../../posthog-rn'\nimport { usePostHog } from '../../hooks/usePostHog'\n\nconst getSurveyInteractionProperty = (survey: Survey, action: string): string => {\n let surveyProperty = `$survey_${action}/${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveyProperty = `$survey_${action}/${survey.id}/${survey.current_iteration}`\n }\n\n return surveyProperty\n}\n\nexport const sendSurveyShownEvent = (survey: Survey, posthog: PostHog): void => {\n posthog.capture('survey shown', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n })\n}\n\nexport const sendSurveyEvent = (\n responses: Record<string, string | number | string[] | null> = {},\n survey: Survey,\n posthog: PostHog\n): void => {\n posthog.capture('survey sent', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n $survey_questions: survey.questions.map((question: SurveyQuestion) => question.question),\n ...responses,\n $set: {\n [getSurveyInteractionProperty(survey, 'responded')]: true,\n },\n })\n}\n\nexport const dismissedSurveyEvent = (survey: Survey, posthog: PostHog): void => {\n posthog.capture('survey dismissed', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n $set: {\n [getSurveyInteractionProperty(survey, 'dismissed')]: true,\n },\n })\n}\n\nexport function Questions({\n survey,\n appearance,\n styleOverrides,\n onSubmit,\n}: {\n survey: Survey\n appearance: SurveyAppearanceTheme\n styleOverrides?: StyleProp<ViewStyle>\n onSubmit: () => void\n}): JSX.Element {\n const [questionsResponses, setQuestionsResponses] = useState({})\n const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0)\n const surveyQuestions = useMemo(() => getDisplayOrderQuestions(survey), [survey])\n const posthog = usePostHog()\n\n const onNextButtonClick = ({\n res,\n originalQuestionIndex,\n }: // displayQuestionIndex,\n {\n res: string | string[] | number | null\n originalQuestionIndex: number\n // displayQuestionIndex: number\n }): void => {\n const responseKey = originalQuestionIndex === 0 ? `$survey_response` : `$survey_response_${originalQuestionIndex}`\n\n setQuestionsResponses({ ...questionsResponses, [responseKey]: res })\n\n const isLastDisplayedQuestion = originalQuestionIndex === survey.questions.length - 1\n if (isLastDisplayedQuestion) {\n sendSurveyEvent({ ...questionsResponses, [responseKey]: res }, survey, posthog)\n onSubmit()\n } else {\n setCurrentQuestionIndex(originalQuestionIndex + 1)\n }\n }\n\n const question = surveyQuestions[currentQuestionIndex]\n\n return (\n <ScrollView style={[styleOverrides, { flexGrow: 0 }]}>\n {getQuestionComponent({\n question,\n appearance,\n onSubmit: (res) =>\n onNextButtonClick({\n res,\n originalQuestionIndex: question.originalQuestionIndex,\n // displayQuestionIndex: currentQuestionIndex,\n }),\n })}\n </ScrollView>\n )\n}\n\ntype GetQuestionComponentProps = {\n question: SurveyQuestion\n appearance: SurveyAppearance\n onSubmit: (res: string | string[] | number | null) => void\n}\n\nconst getQuestionComponent = (props: GetQuestionComponentProps): JSX.Element => {\n const questionComponents = {\n open: OpenTextQuestion,\n link: LinkQuestion,\n rating: RatingQuestion,\n multiple_choice: MultipleChoiceQuestion,\n single_choice: MultipleChoiceQuestion,\n }\n\n const Component = questionComponents[props.question.type]\n\n return <Component key={props.question.originalQuestionIndex} {...(props as any)} />\n}\n","import { canActivateRepeatedly, hasEvents } from './surveys-utils'\nimport { currentDeviceType } from '../native-deps'\nimport { FeatureFlagValue, Survey, SurveyMatchType } from '../../../posthog-core/src'\n\nconst isMatchingRegex = function (value: string, pattern: string): boolean {\n if (!isValidRegex(pattern)) {\n return false\n }\n\n try {\n return new RegExp(pattern).test(value)\n } catch {\n return false\n }\n}\n\nconst isValidRegex = function (str: string): boolean {\n try {\n new RegExp(str)\n } catch {\n return false\n }\n return true\n}\n\nconst surveyValidationMap: Record<SurveyMatchType, (targets: string[], value: string) => boolean> = {\n icontains: (targets, value) => targets.some((target) => value.toLowerCase().includes(target.toLowerCase())),\n\n not_icontains: (targets, value) => targets.every((target) => !value.toLowerCase().includes(target.toLowerCase())),\n\n regex: (targets, value) => targets.some((target) => isMatchingRegex(value, target)),\n\n not_regex: (targets, value) => targets.every((target) => !isMatchingRegex(value, target)),\n\n exact: (targets, value) => targets.some((target) => value === target),\n\n is_not: (targets, value) => targets.every((target) => value !== target),\n}\n\nfunction defaultMatchType(matchType?: SurveyMatchType): SurveyMatchType {\n return matchType ?? SurveyMatchType.Icontains\n}\n\nfunction doesSurveyDeviceTypesMatch(survey: Survey): boolean {\n if (!survey.conditions?.deviceTypes || survey.conditions.deviceTypes.length === 0) {\n return true\n }\n\n const deviceType = currentDeviceType\n return surveyValidationMap[defaultMatchType(survey.conditions.deviceTypesMatchType)](\n survey.conditions.deviceTypes,\n deviceType\n )\n}\n\nexport function getActiveMatchingSurveys(\n surveys: Survey[],\n flags: Record<string, FeatureFlagValue>,\n seenSurveys: string[],\n activatedSurveys: ReadonlySet<string>\n // lastSeenSurveyDate: Date | undefined\n): Survey[] {\n return surveys.filter((survey: Survey) => {\n // Is Active\n if (!survey.start_date || survey.end_date) {\n return false\n }\n\n // device type check\n if (!doesSurveyDeviceTypesMatch(survey)) {\n return false\n }\n\n if (seenSurveys.includes(survey.id) && !canActivateRepeatedly(survey)) {\n return false\n }\n\n // const surveyWaitPeriodInDays = survey.conditions?.seenSurveyWaitPeriodInDays\n // if (surveyWaitPeriodInDays && lastSeenSurveyDate) {\n // const today = new Date()\n // const diff = Math.abs(today.getTime() - lastSeenSurveyDate.getTime())\n // const diffDaysFromToday = Math.ceil(diff / (1000 * 3600 * 24))\n // if (diffDaysFromToday < surveyWaitPeriodInDays) {\n // return false\n // }\n // }\n\n // URL and CSS selector conditions are currently ignored\n\n if (\n !survey.linked_flag_key &&\n !survey.targeting_flag_key &&\n !survey.internal_targeting_flag_key &&\n !survey.feature_flag_keys?.length\n ) {\n // Survey is targeting All Users with no conditions\n return true\n }\n\n const linkedFlagCheck = survey.linked_flag_key ? flags[survey.linked_flag_key] === true : true\n const targetingFlagCheck = survey.targeting_flag_key ? flags[survey.targeting_flag_key] === true : true\n\n const eventBasedTargetingFlagCheck = hasEvents(survey) ? activatedSurveys.has(survey.id) : true\n\n const internalTargetingFlagCheck =\n survey.internal_targeting_flag_key && !canActivateRepeatedly(survey)\n ? flags[survey.internal_targeting_flag_key] === true\n : true\n const flagsCheck = survey.feature_flag_keys?.length\n ? survey.feature_flag_keys.every(({ key, value }: { key: string; value?: string }) => {\n return !key || !value || flags[value] === true\n })\n : true\n\n return (\n linkedFlagCheck && targetingFlagCheck && internalTargetingFlagCheck && eventBasedTargetingFlagCheck && flagsCheck\n )\n })\n}\n","import { PostHogPersistedProperty } from '../../../posthog-core/src'\nimport { useCallback, useEffect, useState } from 'react'\nimport { usePostHog } from '../hooks/usePostHog'\n\ntype SurveyStorage = {\n seenSurveys: string[]\n setSeenSurvey: (surveyId: string) => void\n lastSeenSurveyDate: Date | undefined\n setLastSeenSurveyDate: (date: Date) => void\n}\n\nexport function useSurveyStorage(): SurveyStorage {\n const posthogStorage = usePostHog()\n const [lastSeenSurveyDate, setLastSeenSurveyDate] = useState<Date | undefined>(undefined)\n const [seenSurveys, setSeenSurveys] = useState<string[]>([])\n\n useEffect(() => {\n posthogStorage.ready().then(() => {\n const lastSeenSurveyDate = posthogStorage.getPersistedProperty(PostHogPersistedProperty.SurveyLastSeenDate)\n if (typeof lastSeenSurveyDate === 'string') {\n setLastSeenSurveyDate(new Date(lastSeenSurveyDate))\n }\n\n const serialisedSeenSurveys = posthogStorage.getPersistedProperty(PostHogPersistedProperty.SurveysSeen)\n if (typeof serialisedSeenSurveys === 'string') {\n const parsedSeenSurveys: unknown = JSON.parse(serialisedSeenSurveys)\n if (Array.isArray(parsedSeenSurveys) && typeof parsedSeenSurveys[0] === 'string') {\n setSeenSurveys(parsedSeenSurveys)\n }\n }\n })\n }, [posthogStorage])\n\n return {\n seenSurveys,\n setSeenSurvey: useCallback(\n (surveyId: string) => {\n setSeenSurveys((current) => {\n // To keep storage bounded, only keep the last 20 seen surveys\n const newValue = [surveyId, ...current.filter((id) => id !== surveyId)]\n posthogStorage.setPersistedProperty(\n PostHogPersistedProperty.SurveysSeen,\n JSON.stringify(newValue.slice(0, 20))\n )\n return newValue\n })\n },\n [posthogStorage]\n ),\n lastSeenSurveyDate,\n setLastSeenSurveyDate: useCallback(\n (date: Date) => {\n setLastSeenSurveyDate(date)\n posthogStorage.setPersistedProperty(PostHogPersistedProperty.SurveyLastSeenDate, date.toISOString())\n },\n [posthogStorage]\n ),\n }\n}\n","import { useEffect, useMemo, useState } from 'react'\n\nimport { hasEvents } from './surveys-utils'\nimport { Survey } from '../../../posthog-core/src'\nimport { PostHog } from '../posthog-rn'\n\nconst SURVEY_SHOWN_EVENT_NAME = 'survey shown'\n\nexport function useActivatedSurveys(posthog: PostHog, surveys: Survey[]): ReadonlySet<string> {\n const [activatedSurveys, setActivatedSurveys] = useState<ReadonlySet<string>>(new Set())\n\n const eventMap = useMemo(() => {\n const newEventMap = new Map<string, string[]>()\n for (const survey of surveys.filter(hasEvents)) {\n for (const event of survey.conditions?.events?.values ?? []) {\n const knownSurveys = newEventMap.get(event.name) ?? []\n knownSurveys.push(survey.id)\n newEventMap.set(event.name, knownSurveys)\n }\n }\n return newEventMap\n }, [surveys])\n\n useEffect(() => {\n if (eventMap.size > 0) {\n return posthog.on('capture', (payload: { event: string; properties?: { $survey_id?: string } }) => {\n if (eventMap.has(payload.event)) {\n setActivatedSurveys((current) => new Set([...current, ...(eventMap.get(payload.event) ?? [])]))\n } else if (payload.event === SURVEY_SHOWN_EVENT_NAME) {\n // remove survey that from activatedSurveys here.\n const surveyId = payload.properties?.$survey_id\n if (surveyId) {\n setActivatedSurveys((current) => {\n if (!current.has(surveyId)) {\n return current\n }\n const next = new Set(current)\n next.delete(surveyId)\n return next\n })\n }\n }\n })\n }\n }, [eventMap, posthog])\n\n return activatedSurveys\n}\n","import React from 'react'\nimport { StyleSheet, TouchableOpacity } from 'react-native'\nimport { CancelSVG } from '../icons'\n\nimport { SurveyAppearanceTheme } from '../surveys-utils'\n\nexport function Cancel({\n onPress,\n appearance,\n}: {\n onPress: () => void\n appearance: SurveyAppearanceTheme\n}): JSX.Element {\n return (\n <TouchableOpacity style={[styles.cancelBtnWrapper, { borderColor: appearance.borderColor }]} onPress={onPress}>\n <CancelSVG />\n </TouchableOpacity>\n )\n}\n\nconst styles = StyleSheet.create({\n cancelBtnWrapper: {\n width: 40,\n height: 40,\n borderRadius: 20,\n borderWidth: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n },\n})\n","import React from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { getContrastingTextColor, SurveyAppearanceTheme } from '../surveys-utils'\nimport { SurveyQuestionDescriptionContentType } from '../../../../posthog-core/src'\nimport { BottomSection } from './BottomSection'\n\nexport function ConfirmationMessage({\n appearance,\n header,\n description,\n contentType,\n onClose,\n styleOverrides,\n isModal,\n}: {\n appearance: SurveyAppearanceTheme\n header: string\n description: string\n contentType?: SurveyQuestionDescriptionContentType\n onClose: () => void\n styleOverrides?: ViewStyle\n isModal: boolean\n}): JSX.Element {\n const textColor = getContrastingTextColor(appearance.backgroundColor)\n\n return (\n <View style={styleOverrides}>\n <View style={styles.thankYouMessageContainer}>\n <Text style={[styles.thankYouMessageHeader, { color: textColor }]}>{header}</Text>\n {description && contentType === SurveyQuestionDescriptionContentType.Text && <Text>{description}</Text>}\n </View>\n {isModal && (\n <BottomSection\n text={appearance.thankYouMessageCloseButtonText}\n submitDisabled={false}\n appearance={appearance}\n onSubmit={onClose}\n />\n )}\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n thankYouMessageContainer: {\n padding: 10,\n },\n thankYouMessageHeader: {\n fontSize: 18,\n fontWeight: 'bold',\n },\n})\n","import type RNSafeAreaContext from 'react-native-safe-area-context'\n\nlet OptionalRNSafeArea: typeof RNSafeAreaContext | undefined = undefined\n\ntry {\n OptionalRNSafeArea = require('react-native-safe-area-context')\n} catch (e) {}\n\nfunction createDefaultInsets(): RNSafeAreaContext.EdgeInsets {\n // If the library isn't available, fall back to a default which should cover most devices\n return { top: 60, bottom: 30, left: 0, right: 0 }\n}\n\nexport const useOptionalSafeAreaInsets = (): RNSafeAreaContext.EdgeInsets => {\n const useSafeAreaInsets = OptionalRNSafeArea?.useSafeAreaInsets ?? createDefaultInsets\n try {\n return useSafeAreaInsets()\n } catch (err) {\n return createDefaultInsets()\n }\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport {\n Keyboard,\n KeyboardAvoidingView,\n Modal,\n Platform,\n Pressable,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n} from 'react-native'\n\nimport { Cancel } from './Cancel'\nimport { ConfirmationMessage } from './ConfirmationMessage'\nimport { Questions } from './Surveys'\n\nimport { SurveyAppearanceTheme } from '../surveys-utils'\nimport { Survey, SurveyQuestionDescriptionContentType } from '../../../../posthog-core/src'\nimport { useOptionalSafeAreaInsets } from '../../optional/OptionalReactNativeSafeArea'\n\nexport type SurveyModalProps = {\n survey: Survey\n appearance: SurveyAppearanceTheme\n onShow: () => void\n onClose: (submitted: boolean) => void\n}\n\nexport function SurveyModal(props: SurveyModalProps): JSX.Element | null {\n const { survey, appearance, onShow } = props\n const [isSurveySent, setIsSurveySent] = useState(false)\n const onClose = useCallback(() => props.onClose(isSurveySent), [isSurveySent, props])\n const insets = useOptionalSafeAreaInsets()\n\n const [isVisible] = useState(true)\n\n const shouldShowConfirmation = isSurveySent && appearance.thankYouMessageHeader\n\n useEffect(() => {\n if (isVisible) {\n onShow()\n }\n }, [isVisible, onShow])\n\n if (!isVisible) {\n return null\n }\n\n return (\n <Modal animationType=\"fade\" transparent onRequestClose={onClose} statusBarTranslucent={true}>\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n style={{ flex: 1, justifyContent: 'flex-end' }}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 10 : 0}\n >\n <TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>\n <View style={styles.modalBackdrop}>\n <Pressable onPress={onClose} accessible={false}>\n <View\n style={[\n styles.modalContent,\n {\n borderColor: appearance.borderColor,\n backgroundColor: appearance.backgroundColor,\n marginBottom: insets.bottom + 10,\n marginHorizontal: 10,\n },\n ]}\n >\n {!shouldShowConfirmation ? (\n <Questions survey={survey} appearance={appearance} onSubmit={() => setIsSurveySent(true)} />\n ) : (\n <ConfirmationMessage\n appearance={appearance}\n header={appearance.thankYouMessageHeader}\n description={appearance.thankYouMessageDescription}\n contentType={\n appearance.thankYouMessageDescriptionContentType ?? SurveyQuestionDescriptionContentType.Text\n }\n onClose={onClose}\n isModal={true}\n />\n )}\n <View style={styles.topIconContainer}>\n <Cancel onPress={onClose} appearance={appearance} />\n </View>\n </View>\n </Pressable>\n </View>\n </TouchableWithoutFeedback>\n </KeyboardAvoidingView>\n </Modal>\n )\n}\n\nconst styles = StyleSheet.create({\n modalBackdrop: {\n flex: 1,\n justifyContent: 'flex-end',\n },\n modalContent: {\n borderRadius: 10,\n borderWidth: 1,\n padding: 20,\n width: '90%',\n maxWidth: 400,\n marginHorizontal: 20,\n },\n topIconContainer: {\n position: 'absolute',\n right: -20,\n top: -20,\n },\n})\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport { dismissedSurveyEvent, sendSurveyShownEvent } from './components/Surveys'\n\nimport { getActiveMatchingSurveys } from './getActiveMatchingSurveys'\nimport { useSurveyStorage } from './useSurveyStorage'\nimport { useActivatedSurveys } from './useActivatedSurveys'\nimport { SurveyModal } from './components/SurveyModal'\nimport { defaultSurveyAppearance, getContrastingTextColor, SurveyAppearanceTheme } from './surveys-utils'\nimport { Survey, SurveyAppearance, SurveyType } from '../../../posthog-core/src'\nimport { usePostHog } from '../hooks/usePostHog'\nimport { useFeatureFlags } from '../hooks/useFeatureFlags'\nimport { PostHog } from '../posthog-rn'\n\ntype ActiveSurveyContextType = { survey: Survey; onShow: () => void; onClose: (submitted: boolean) => void } | undefined\nconst ActiveSurveyContext = React.createContext<ActiveSurveyContextType>(undefined)\n// export const useActiveSurvey = (): ActiveSurveyContextType => React.useContext(ActiveSurveyContext)\n\n// type FeedbackSurveyHook = {\n// survey: Survey\n// showSurveyModal: () => void\n// hideSurveyModal: () => void\n// }\nconst FeedbackSurveyContext = React.createContext<\n | {\n surveys: Survey[]\n activeSurvey: Survey | undefined\n setActiveSurvey: React.Dispatch<React.SetStateAction<Survey | undefined>>\n }\n | undefined\n>(undefined)\n// export const useFeedbackSurvey = (selector: string): FeedbackSurveyHook | undefined => {\n// const context = React.useContext(FeedbackSurveyContext)\n// const survey = context?.surveys.find(\n// (survey: Survey) => survey.type === SurveyType.Widget && survey.appearance?.widgetSelector === selector\n// )\n// if (!context || !survey) {\n// return undefined\n// }\n\n// return {\n// survey,\n// showSurveyModal: () => context.setActiveSurvey(survey),\n// hideSurveyModal: () => {\n// if (context.activeSurvey === survey) {\n// context.setActiveSurvey(undefined)\n// }\n// },\n// }\n// }\n\nexport type PostHogSurveyProviderProps = {\n // /**\n // * Whether to show the default survey modal when there is an active survey. (Default true)\n // * If false, you can call useActiveSurvey and render survey content yourself.\n // **/\n // automaticSurveyModal?: boolean\n\n /**\n * The default appearance for surveys when not specified in PostHog.\n */\n defaultSurveyAppearance?: SurveyAppearance\n\n /**\n * If true, PosHog appearance will be ignored and defaultSurveyAppearance is always used.\n */\n overrideAppearanceWithDefault?: boolean\n\n client?: PostHog\n\n children: React.ReactNode\n}\n\nexport function PostHogSurveyProvider(props: PostHogSurveyProviderProps): JSX.Element {\n const posthogFromHook = usePostHog()\n const posthog = props.client ?? posthogFromHook\n const { seenSurveys, setSeenSurvey, setLastSeenSurveyDate } = useSurveyStorage()\n const [surveys, setSurveys] = useState<Survey[]>([])\n const [activeSurvey, setActiveSurvey] = useState<Survey | undefined>(undefined)\n const activatedSurveys = useActivatedSurveys(posthog, surveys)\n\n const flags = useFeatureFlags(posthog)\n\n // Load surveys once\n useEffect(() => {\n // TODO: for the first time, sometimes the surveys are not fetched from storage, so we need to fetch them from the API\n // because the remote config is still being fetched from the API\n posthog\n .ready()\n .then(() => posthog.getSurveys())\n .then(setSurveys)\n .catch(() => {})\n }, [posthog])\n\n // Whenever state changes and there's no active survey, check if there is a new survey to show\n useEffect(() => {\n if (activeSurvey) {\n return\n }\n\n const activeSurveys = getActiveMatchingSurveys(\n surveys,\n flags ?? {},\n seenSurveys,\n activatedSurveys\n // lastSeenSurveyDate\n )\n\n const popoverSurveys = activeSurveys.filter((survey: Survey) => survey.type === SurveyType.Popover)\n // TODO: sort by appearance delay, implement delay\n // const popoverSurveyQueue = sortSurveysByAppearanceDelay(popoverSurveys)\n\n if (popoverSurveys.length > 0) {\n setActiveSurvey(popoverSurveys[0])\n }\n }, [activeSurvey, flags, surveys, seenSurveys, activatedSurveys])\n\n // Merge survey appearance so that components and hooks can use a consistent model\n const surveyAppearance = useMemo<SurveyAppearanceTheme>(() => {\n if (props.overrideAppearanceWithDefault || !activeSurvey) {\n return {\n ...defaultSurveyAppearance,\n ...(props.defaultSurveyAppearance ?? {}),\n }\n }\n return {\n ...defaultSurveyAppearance,\n ...(props.defaultSurveyAppearance ?? {}),\n ...(activeSurvey.appearance ?? {}),\n // If submitButtonColor is set by PostHog, ensure submitButtonTextColor is also set to contrast\n ...(activeSurvey.appearance?.submitButtonColor\n ? {\n submitButtonTextColor:\n activeSurvey.appearance.submitButtonTextColor ??\n getContrastingTextColor(activeSurvey.appearance.submitButtonColor),\n }\n : {}),\n }\n }, [activeSurvey, props.defaultSurveyAppearance, props.overrideAppearanceWithDefault])\n\n const activeContext = useMemo(() => {\n if (!activeSurvey) {\n return undefined\n }\n return {\n survey: activeSurvey,\n onShow: () => {\n sendSurveyShownEvent(activeSurvey, posthog)\n setLastSeenSurveyDate(new Date())\n },\n onClose: (submitted: boolean) => {\n setSeenSurvey(activeSurvey.id)\n setActiveSurvey(undefined)\n if (!submitted) {\n dismissedSurveyEvent(activeSurvey, posthog)\n }\n },\n }\n }, [activeSurvey, posthog, setLastSeenSurveyDate, setSeenSurvey])\n\n // Modal is shown for PopOver surveys or if automaticSurveyModal is true, and for all widget surveys\n // because these would have been invoked by the useFeedbackSurvey hook's showSurveyModal() method\n const shouldShowModal = activeContext && activeContext.survey.type === SurveyType.Popover\n\n return (\n <ActiveSurveyContext.Provider value={activeContext}>\n <FeedbackSurveyContext.Provider value={{ surveys, activeSurvey, setActiveSurvey }}>\n {props.children}\n {shouldShowModal && <SurveyModal appearance={surveyAppearance} {...activeContext} />}\n </FeedbackSurveyContext.Provider>\n </ActiveSurveyContext.Provider>\n )\n}\n\n// function sortSurveysByAppearanceDelay(surveys: Survey[]): Survey[] {\n// return surveys.sort(\n// (a, b) => (a.appearance?.surveyPopupDelaySeconds ?? 0) - (b.appearance?.surveyPopupDelaySeconds ?? 0)\n// )\n// }\n"],"names":["OptionalExpoApplication","undefined","Platform","select","macos","default","require","e","OptionalExpoFileSystem","web","getLegacyValues","OS","posthogFileDirectory","documentDirectory","applicationId","posthogDistinctIdFile","posthogAnonymousIdFile","res","distinctId","anonymousId","JSON","parse","readAsStringAsync","POSTHOG_STORAGE_KEY","POSTHOG_STORAGE_VERSION","PostHogRNStorage","constructor","storage","memoryCache","preloadResult","getItem","isPromise","preloadPromise","then","populateMemoryCache","_a","finally","persist","payload","version","content","setItem","stringify","key","value","removeItem","clear","getAllKeys","Object","keys","data","console","warn","PostHogRNSyncMemoryStorage","cache","OptionalAsyncStorage","OptionalExpoDevice","OptionalExpoLocalization","OptionalReactNativeDeviceInfo","OptionalReactNativeLocalize","getDeviceType","deviceType","currentDeviceType","getAppProperties","properties","$device_type","$app_build","nativeBuildVersion","$app_name","applicationName","$app_namespace","$app_version","nativeApplicationVersion","returnPropertyIfNotUnknown","getBuildNumber","getApplicationName","getBundleId","getVersion","$device_manufacturer","manufacturer","$device_name","modelName","$os_name","osName","$os_version","osVersion","getManufacturerSync","getModel","getSystemName","getSystemVersion","$locale","locale","$timezone","timezone","localesFn","getLocales","locales","length","languageTag","timezoneFn","getTimeZone","buildOptimisiticAsyncStorage","filesystem","uri","stringContent","writeAsStringAsync","Error","OptionalReactNativeNavigationWix","withReactNativeNavigation","posthog","options","Navigation","events","registerComponentDidAppearListener","componentName","passProps","captureScreens","currentRouteName","_c","_b","navigation","routeToName","call","_e","_d","routeToProperties","screen","OptionalReactNativeSessionReplay","PostHog","PostHogCore","apiKey","_appProperties","_isInitialized","_persistence","persistence","_disableSurveys","disableSurveys","_disableRemoteConfig","disableRemoteConfig","customAppProperties","AppState","addEventListener","flush","storagePromise","_storage","customStorage","PostHogPersistedProperty","AnonymousId","legacyValues","DistinctId","initAfterStorage","enablePersistSessionIdAcrossRestart","setPersistedProperty","SessionId","SessionLastTimestamp","setupBootstrap","reloadRemoteConfigAsync","logMsgIfDebug","info","preloadFeatureFlags","reloadFeatureFlags","captureNativeAppLifecycleEvents","persistAppVersion","startSessionReplay","_initPromise","Promise","resolve","ready","getPersistedProperty","fetch","url","getLibraryId","getLibraryVersion","getCustomUserAgent","getCommonEventProperties","$screen_height","Dimensions","get","height","$screen_width","width","name","registerForSession","$screen_name","capture","_isEnableSessionReplay","isDisabled","_enableSessionReplay","_resetSessionId","reactNativeSessionReplay","sessionId","endSession","startSession","getSessionId","_currentSessionId","error","log","resetSessionId","identify","previousDistinctId","getDistinctId","getAnonymousId","initReactNativeNavigation","getSurveys","Surveys","surveys","surveysFromApi","getSurveysStateless","enableSessionReplay","maskAllTextInputs","maskAllImages","maskAllSandboxedViews","maskPhotoLibraryImages","captureLog","captureNetworkTelemetry","iOSdebouncerDelayMs","androidDebouncerDelayMs","sessionReplayConfig","sdkReplayConfig","sessionReplay","SessionReplay","featureFlags","FeatureFlags","decideFeatureFlags","decideReplayConfig","recordingActive","linkedFlag","flag","variant","sdkOptions","host","debug","isDebug","sdkVersion","flushAt","isEnabled","start","appBuild","appVersion","isMemoryPersistence","build","prevAppBuild","InstalledAppBuild","prevAppVersion","InstalledAppVersion","previous_version","previous_build","initialUrl","Linking","getInitialURL","state","OptionalReactNativeNavigation","PostHogContext","React","createContext","client","usePostHog","useContext","_useNavigationTrackerDisabled","_useNavigationTracker","navigationRef","contextClient","routes","useNavigationState","useNavigation","trackRoute","useCallback","currentRoute","isReady","getCurrentRoute","params","route","useEffect","setTimeout","useNavigationTracker","useFeatureFlags","setFeatureFlags","useState","getFeatureFlags","onFeatureFlags","flags","useFeatureFlag","featureFlag","setFeatureFlag","getFeatureFlag","useFeatureFlagWithPayload","getFeatureFlagPayload","flattenStyles","styles","flattened","Array","isArray","style","assign","stringifyStyle","str","map","x","join","sanitiseLabel","label","replace","defaultPostHogLabelProp","autocaptureFromTouchEvent","noCaptureProp","customLabelProp","maxElementsCaptured","ignoreLabels","propsToCapture","_targetInst","elements","currentInst","el","tag_name","props","memoizedProps","forEach","includes","attr__style","$el_text","elementType","displayName","push","return","elAttrLabelKey","lastLabel","i","element","autocapture","$touch_x","nativeEvent","pageX","$touch_y","pageY","PostHogNavigationHook","PostHogProvider","children","captureAll","captureNone","useMemo","parsedOptions","autocaptureOptions","captureLifecycleEvents","captureTouches","phLabelProp","onTouch","type","createElement","View","flex","onTouchEndCapture","Provider","defaultBackgroundColor","defaultSurveyAppearance","backgroundColor","submitButtonColor","submitButtonTextColor","ratingButtonColor","ratingButtonActiveColor","borderColor","placeholder","displayThankYouMessage","thankYouMessageHeader","position","SurveyPosition","Right","submitButtonText","autoDisappear","thankYouMessageDescription","thankYouMessageDescriptionContentType","SurveyQuestionDescriptionContentType","Text","thankYouMessageCloseButtonText","surveyPopupDelaySeconds","getDisplayOrderQuestions","survey","questions","question","idx","originalQuestionIndex","hasEvents","conditions","values","canActivateRepeatedly","repeatedActivation","getDisplayOrderChoices","choices","getContrastingTextColor","color","rgb","startsWith","hex2rgb","nameColorToHex","nameToHex","colorMatch","match","r","parseInt","g","b","hsp","Math","sqrt","c","hexColor","test","slice","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","toLowerCase","SatisfiedEmoji","Svg","_extends","viewBox","Path","d","NeutralEmoji","DissatisfiedEmoji","VeryDissatisfiedEmoji","VerySatisfiedEmoji","CheckSVG","CancelSVG","fill","BottomSection","text","submitDisabled","appearance","onSubmit","link","bottomSection","TouchableOpacity","button","disabled","onPress","canOpenURL","supported","openURL","buttonText","StyleSheet","create","padding","borderRadius","alignItems","fontSize","QuestionHeader","description","descriptionContentType","container","fontWeight","marginTop","OpenTextQuestion","setText","textInputContainer","TextInput","textInput","multiline","numberOfLines","onChangeText","optional","LinkQuestion","Fragment","RatingQuestion","rating","setRating","ratingSection","ratingOptions","display","SurveyRatingDisplay","Emoji","ratingOptionsEmoji","scale","threeScaleEmojis","fiveScaleEmojis","active","ratingsEmoji","Number","ratingOptionsNumber","getScaleNumbers","number","RatingButton","index","num","setActiveNumber","ratingText","lowerBoundLabel","upperBoundLabel","textColor","ratingsNumber","borderLeftWidth","MultipleChoiceQuestion","allowMultiple","SurveyQuestionType","MultipleChoice","openChoice","hasOpenChoice","selectedChoices","setSelectedChoices","openEndedInput","setOpenEndedInput","multipleChoiceOptions","choice","isOpenChoice","isSelected","Pressable","choiceOption","filter","choiceText","flexGrow","rightCheckArea","userValue","result","fiveScaleNumbers","sevenScaleNumbers","tenScaleNumbers","borderWidth","marginVertical","flexDirection","justifyContent","flexWrap","margin","overflow","paddingVertical","getSurveyInteractionProperty","action","surveyProperty","id","current_iteration","sendSurveyShownEvent","$survey_name","$survey_id","$survey_iteration","$survey_iteration_start_date","current_iteration_start_date","sendSurveyEvent","responses","$survey_questions","$set","dismissedSurveyEvent","Questions","styleOverrides","questionsResponses","setQuestionsResponses","currentQuestionIndex","setCurrentQuestionIndex","surveyQuestions","onNextButtonClick","responseKey","isLastDisplayedQuestion","ScrollView","getQuestionComponent","questionComponents","open","multiple_choice","single_choice","Component","isMatchingRegex","pattern","isValidRegex","RegExp","surveyValidationMap","icontains","targets","some","target","not_icontains","every","regex","not_regex","exact","is_not","defaultMatchType","matchType","SurveyMatchType","Icontains","doesSurveyDeviceTypesMatch","deviceTypes","deviceTypesMatchType","getActiveMatchingSurveys","seenSurveys","activatedSurveys","start_date","end_date","linked_flag_key","targeting_flag_key","internal_targeting_flag_key","feature_flag_keys","linkedFlagCheck","targetingFlagCheck","eventBasedTargetingFlagCheck","has","internalTargetingFlagCheck","flagsCheck","useSurveyStorage","posthogStorage","lastSeenSurveyDate","setLastSeenSurveyDate","setSeenSurveys","SurveyLastSeenDate","Date","serialisedSeenSurveys","SurveysSeen","parsedSeenSurveys","setSeenSurvey","surveyId","current","newValue","date","toISOString","SURVEY_SHOWN_EVENT_NAME","useActivatedSurveys","setActivatedSurveys","Set","eventMap","newEventMap","Map","event","knownSurveys","set","size","on","next","delete","Cancel","cancelBtnWrapper","ConfirmationMessage","header","contentType","onClose","isModal","thankYouMessageContainer","OptionalRNSafeArea","createDefaultInsets","top","bottom","left","right","useOptionalSafeAreaInsets","useSafeAreaInsets","err","SurveyModal","onShow","isSurveySent","setIsSurveySent","insets","isVisible","shouldShowConfirmation","Modal","animationType","transparent","onRequestClose","statusBarTranslucent","KeyboardAvoidingView","behavior","keyboardVerticalOffset","TouchableWithoutFeedback","Keyboard","dismiss","accessible","modalBackdrop","modalContent","marginBottom","marginHorizontal","topIconContainer","maxWidth","ActiveSurveyContext","FeedbackSurveyContext","PostHogSurveyProvider","posthogFromHook","setSurveys","activeSurvey","setActiveSurvey","catch","activeSurveys","popoverSurveys","SurveyType","Popover","surveyAppearance","overrideAppearanceWithDefault","activeContext","submitted","shouldShowModal"],"mappings":"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"}
|