autotel-subscribers 15.0.0 → 16.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/vendor/uuidv7.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/bot-detection.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/string-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/number-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/promise-queue.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/logger.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/utils/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/eventemitter.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/gzip.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/posthog-core-stateless.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/posthog-core.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/coercers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/error-tracking/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.0/node_modules/@posthog/core/dist/index.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/version.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/types.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/storage-memory.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/client.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/context/context.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/sentry-integration.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/extensions/express.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/exports.mjs","../../../node_modules/.pnpm/posthog-node@5.18.1/node_modules/posthog-node/dist/entrypoints/index.node.mjs","../src/event-subscriber-base.ts","../src/posthog.ts"],"names":["response","depth","line","init_types","init_utils","range","init_error_tracking","value","overrideValue","operator","props","PostHog"],"mappings":"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","file":"posthog.js","sourcesContent":["import { dirname, posix, sep } from \"path\";\nfunction createModulerModifier() {\n const getModuleFromFileName = createGetModuleFromFilename();\n return async (frames)=>{\n for (const frame of frames)frame.module = getModuleFromFileName(frame.filename);\n return frames;\n };\n}\nfunction createGetModuleFromFilename(basePath = process.argv[1] ? dirname(process.argv[1]) : process.cwd(), isWindows = '\\\\' === sep) {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n return (filename)=>{\n if (!filename) return;\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n if ('.js' === ext || '.mjs' === ext || '.cjs' === ext) file = file.slice(0, -1 * ext.length);\n const decodedFile = decodeURIComponent(file);\n if (!dir) dir = '.';\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n return decodedFile;\n };\n}\nfunction normalizeWindowsPath(path) {\n return path.replace(/^[A-Z]:/, '').replace(/\\\\/g, '/');\n}\nexport { createModulerModifier };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{\n const flags = flagsResponse.featureFlags ?? {};\n const payloads = flagsResponse.featureFlagPayloads ?? {};\n return Object.fromEntries(Object.entries(flags).map(([key, value])=>[\n key,\n {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payloads?.[key] ? JSON.stringify(payloads[key]) : void 0,\n description: void 0\n }\n }\n ]));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nexport { createFlagsResponseFromFlagsAndPayloads, getFeatureFlagValue, getFlagDetailsFromFlagsAndPayloads, getFlagValuesFromFlags, getPayloadsFromFlags, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","/*! For license information please see uuidv7.mjs.LICENSE.txt */\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 */ const DIGITS = \"0123456789abcdef\";\nclass UUID {\n constructor(bytes){\n this.bytes = bytes;\n }\n static ofInner(bytes) {\n if (16 === bytes.length) return new UUID(bytes);\n throw new TypeError(\"not 128-bit length\");\n }\n static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n if (!Number.isInteger(unixTsMs) || !Number.isInteger(randA) || !Number.isInteger(randBHi) || !Number.isInteger(randBLo) || unixTsMs < 0 || randA < 0 || randBHi < 0 || randBLo < 0 || unixTsMs > 0xffffffffffff || randA > 0xfff || randBHi > 0x3fffffff || randBLo > 0xffffffff) throw new RangeError(\"invalid field value\");\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 / 256;\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 static parse(uuid) {\n let hex;\n switch(uuid.length){\n case 32:\n hex = /^[0-9a-f]{32}$/i.exec(uuid)?.[0];\n break;\n case 36:\n hex = /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 38:\n hex = /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 45:\n hex = /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n default:\n break;\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 }\n throw new SyntaxError(\"could not parse UUID string\");\n }\n toString() {\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(0xf & this.bytes[i]);\n if (3 === i || 5 === i || 7 === i || 9 === i) text += \"-\";\n }\n return text;\n }\n toHex() {\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(0xf & this.bytes[i]);\n }\n return text;\n }\n toJSON() {\n return this.toString();\n }\n getVariant() {\n const n = this.bytes[8] >>> 4;\n if (n < 0) throw new Error(\"unreachable\");\n if (n <= 7) return this.bytes.every((e)=>0 === e) ? \"NIL\" : \"VAR_0\";\n if (n <= 11) return \"VAR_10\";\n if (n <= 13) return \"VAR_110\";\n if (n <= 15) return this.bytes.every((e)=>0xff === e) ? \"MAX\" : \"VAR_RESERVED\";\n else throw new Error(\"unreachable\");\n }\n getVersion() {\n return \"VAR_10\" === this.getVariant() ? this.bytes[6] >>> 4 : void 0;\n }\n clone() {\n return new UUID(this.bytes.slice(0));\n }\n equals(other) {\n return 0 === this.compareTo(other);\n }\n compareTo(other) {\n for(let i = 0; i < 16; i++){\n const diff = this.bytes[i] - other.bytes[i];\n if (0 !== diff) return Math.sign(diff);\n }\n return 0;\n }\n}\nclass V7Generator {\n constructor(randomNumberGenerator){\n this.timestamp = 0;\n this.counter = 0;\n this.random = randomNumberGenerator ?? getDefaultRandom();\n }\n generate() {\n return this.generateOrResetCore(Date.now(), 10000);\n }\n generateOrAbort() {\n return this.generateOrAbortCore(Date.now(), 10000);\n }\n generateOrResetCore(unixTsMs, rollbackAllowance) {\n let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n if (void 0 === value) {\n this.timestamp = 0;\n value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n }\n return value;\n }\n generateOrAbortCore(unixTsMs, rollbackAllowance) {\n const MAX_COUNTER = 0x3ffffffffff;\n if (!Number.isInteger(unixTsMs) || unixTsMs < 1 || unixTsMs > 0xffffffffffff) throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n if (rollbackAllowance < 0 || rollbackAllowance > 0xffffffffffff) throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n if (unixTsMs > this.timestamp) {\n this.timestamp = unixTsMs;\n this.resetCounter();\n } else {\n if (!(unixTsMs + rollbackAllowance >= this.timestamp)) return;\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n this.timestamp++;\n this.resetCounter();\n }\n }\n return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / 2 ** 30), this.counter & 2 ** 30 - 1, this.random.nextUint32());\n }\n resetCounter() {\n this.counter = 0x400 * this.random.nextUint32() + (0x3ff & this.random.nextUint32());\n }\n generateV4() {\n const bytes = new Uint8Array(Uint32Array.of(this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32()).buffer);\n bytes[6] = 0x40 | bytes[6] >>> 4;\n bytes[8] = 0x80 | bytes[8] >>> 2;\n return UUID.ofInner(bytes);\n }\n}\nconst getDefaultRandom = ()=>({\n nextUint32: ()=>0x10000 * Math.trunc(0x10000 * Math.random()) + Math.trunc(0x10000 * Math.random())\n });\nlet defaultGenerator;\nconst uuidv7 = ()=>uuidv7obj().toString();\nconst uuidv7obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generate();\nconst uuidv4 = ()=>uuidv4obj().toString();\nconst uuidv4obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\nexport { UUID, V7Generator, uuidv4, uuidv4obj, uuidv7, uuidv7obj };\n","const DEFAULT_BLOCKED_UA_STRS = [\n 'amazonbot',\n 'amazonproductbot',\n 'app.hypefactors.com',\n 'applebot',\n 'archive.org_bot',\n 'awariobot',\n 'backlinksextendedbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'dataforseobot',\n 'deepscan',\n 'duckduckbot',\n 'facebookexternal',\n 'facebookcatalog',\n 'http://yandex.com/bots',\n 'hubspot',\n 'ia_archiver',\n 'leikibot',\n 'linkedinbot',\n 'meta-externalagent',\n 'mj12bot',\n 'msnbot',\n 'nessus',\n 'petalbot',\n 'pinterest',\n 'prerender',\n 'rogerbot',\n 'screaming frog',\n 'sebot-wa',\n 'sitebulb',\n 'slackbot',\n 'slurp',\n 'trendictionbot',\n 'turnitin',\n 'twitterbot',\n 'vercel-screenshot',\n 'vercelbot',\n 'yahoo! slurp',\n 'yandexbot',\n 'zoombot',\n 'bot.htm',\n 'bot.php',\n '(bot;',\n 'bot/',\n 'crawler',\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'semrushbot',\n 'siteauditbot',\n 'splitsignalbot',\n 'gptbot',\n 'oai-searchbot',\n 'chatgpt-user',\n 'perplexitybot',\n 'better uptime bot',\n 'sentryuptimebot',\n 'uptimerobot',\n 'headlesschrome',\n 'cypress',\n 'google-hoteladsverifier',\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleother',\n 'google-cloudvertexbot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google',\n 'google-inspectiontool',\n 'bytespider'\n];\nconst isBlockedUA = function(ua, customBlockedUserAgents = []) {\n if (!ua) return false;\n const uaLower = ua.toLowerCase();\n return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents).some((blockedUA)=>{\n const blockedUaLower = blockedUA.toLowerCase();\n return -1 !== uaLower.indexOf(blockedUaLower);\n });\n};\nexport { DEFAULT_BLOCKED_UA_STRS, isBlockedUA };\n","var types_PostHogPersistedProperty = /*#__PURE__*/ function(PostHogPersistedProperty) {\n PostHogPersistedProperty[\"AnonymousId\"] = \"anonymous_id\";\n PostHogPersistedProperty[\"DistinctId\"] = \"distinct_id\";\n PostHogPersistedProperty[\"Props\"] = \"props\";\n PostHogPersistedProperty[\"FeatureFlagDetails\"] = \"feature_flag_details\";\n PostHogPersistedProperty[\"FeatureFlags\"] = \"feature_flags\";\n PostHogPersistedProperty[\"FeatureFlagPayloads\"] = \"feature_flag_payloads\";\n PostHogPersistedProperty[\"BootstrapFeatureFlagDetails\"] = \"bootstrap_feature_flag_details\";\n PostHogPersistedProperty[\"BootstrapFeatureFlags\"] = \"bootstrap_feature_flags\";\n PostHogPersistedProperty[\"BootstrapFeatureFlagPayloads\"] = \"bootstrap_feature_flag_payloads\";\n PostHogPersistedProperty[\"OverrideFeatureFlags\"] = \"override_feature_flags\";\n PostHogPersistedProperty[\"Queue\"] = \"queue\";\n PostHogPersistedProperty[\"OptedOut\"] = \"opted_out\";\n PostHogPersistedProperty[\"SessionId\"] = \"session_id\";\n PostHogPersistedProperty[\"SessionStartTimestamp\"] = \"session_start_timestamp\";\n PostHogPersistedProperty[\"SessionLastTimestamp\"] = \"session_timestamp\";\n PostHogPersistedProperty[\"PersonProperties\"] = \"person_properties\";\n PostHogPersistedProperty[\"GroupProperties\"] = \"group_properties\";\n PostHogPersistedProperty[\"InstalledAppBuild\"] = \"installed_app_build\";\n PostHogPersistedProperty[\"InstalledAppVersion\"] = \"installed_app_version\";\n PostHogPersistedProperty[\"SessionReplay\"] = \"session_replay\";\n PostHogPersistedProperty[\"SurveyLastSeenDate\"] = \"survey_last_seen_date\";\n PostHogPersistedProperty[\"SurveysSeen\"] = \"surveys_seen\";\n PostHogPersistedProperty[\"Surveys\"] = \"surveys\";\n PostHogPersistedProperty[\"RemoteConfig\"] = \"remote_config\";\n PostHogPersistedProperty[\"FlagsEndpointWasHit\"] = \"flags_endpoint_was_hit\";\n return PostHogPersistedProperty;\n}({});\nvar types_Compression = /*#__PURE__*/ function(Compression) {\n Compression[\"GZipJS\"] = \"gzip-js\";\n Compression[\"Base64\"] = \"base64\";\n return Compression;\n}({});\nvar types_SurveyPosition = /*#__PURE__*/ function(SurveyPosition) {\n SurveyPosition[\"TopLeft\"] = \"top_left\";\n SurveyPosition[\"TopCenter\"] = \"top_center\";\n SurveyPosition[\"TopRight\"] = \"top_right\";\n SurveyPosition[\"MiddleLeft\"] = \"middle_left\";\n SurveyPosition[\"MiddleCenter\"] = \"middle_center\";\n SurveyPosition[\"MiddleRight\"] = \"middle_right\";\n SurveyPosition[\"Left\"] = \"left\";\n SurveyPosition[\"Right\"] = \"right\";\n SurveyPosition[\"Center\"] = \"center\";\n return SurveyPosition;\n}({});\nvar types_SurveyWidgetType = /*#__PURE__*/ function(SurveyWidgetType) {\n SurveyWidgetType[\"Button\"] = \"button\";\n SurveyWidgetType[\"Tab\"] = \"tab\";\n SurveyWidgetType[\"Selector\"] = \"selector\";\n return SurveyWidgetType;\n}({});\nvar types_SurveyType = /*#__PURE__*/ function(SurveyType) {\n SurveyType[\"Popover\"] = \"popover\";\n SurveyType[\"API\"] = \"api\";\n SurveyType[\"Widget\"] = \"widget\";\n SurveyType[\"ExternalSurvey\"] = \"external_survey\";\n return SurveyType;\n}({});\nvar types_SurveyQuestionDescriptionContentType = /*#__PURE__*/ function(SurveyQuestionDescriptionContentType) {\n SurveyQuestionDescriptionContentType[\"Html\"] = \"html\";\n SurveyQuestionDescriptionContentType[\"Text\"] = \"text\";\n return SurveyQuestionDescriptionContentType;\n}({});\nvar types_SurveyRatingDisplay = /*#__PURE__*/ function(SurveyRatingDisplay) {\n SurveyRatingDisplay[\"Number\"] = \"number\";\n SurveyRatingDisplay[\"Emoji\"] = \"emoji\";\n return SurveyRatingDisplay;\n}({});\nvar types_SurveyQuestionType = /*#__PURE__*/ function(SurveyQuestionType) {\n SurveyQuestionType[\"Open\"] = \"open\";\n SurveyQuestionType[\"MultipleChoice\"] = \"multiple_choice\";\n SurveyQuestionType[\"SingleChoice\"] = \"single_choice\";\n SurveyQuestionType[\"Rating\"] = \"rating\";\n SurveyQuestionType[\"Link\"] = \"link\";\n return SurveyQuestionType;\n}({});\nvar types_SurveyQuestionBranchingType = /*#__PURE__*/ function(SurveyQuestionBranchingType) {\n SurveyQuestionBranchingType[\"NextQuestion\"] = \"next_question\";\n SurveyQuestionBranchingType[\"End\"] = \"end\";\n SurveyQuestionBranchingType[\"ResponseBased\"] = \"response_based\";\n SurveyQuestionBranchingType[\"SpecificQuestion\"] = \"specific_question\";\n return SurveyQuestionBranchingType;\n}({});\nvar types_SurveyMatchType = /*#__PURE__*/ function(SurveyMatchType) {\n SurveyMatchType[\"Regex\"] = \"regex\";\n SurveyMatchType[\"NotRegex\"] = \"not_regex\";\n SurveyMatchType[\"Exact\"] = \"exact\";\n SurveyMatchType[\"IsNot\"] = \"is_not\";\n SurveyMatchType[\"Icontains\"] = \"icontains\";\n SurveyMatchType[\"NotIcontains\"] = \"not_icontains\";\n return SurveyMatchType;\n}({});\nvar types_ActionStepStringMatching = /*#__PURE__*/ function(ActionStepStringMatching) {\n ActionStepStringMatching[\"Contains\"] = \"contains\";\n ActionStepStringMatching[\"Exact\"] = \"exact\";\n ActionStepStringMatching[\"Regex\"] = \"regex\";\n return ActionStepStringMatching;\n}({});\nconst knownUnsafeEditableEvent = [\n '$snapshot',\n '$pageview',\n '$pageleave',\n '$set',\n 'survey dismissed',\n 'survey sent',\n 'survey shown',\n '$identify',\n '$groupidentify',\n '$create_alias',\n '$$client_ingestion_warning',\n '$web_experiment_applied',\n '$feature_enrollment_update',\n '$feature_flag_called'\n];\nexport { types_ActionStepStringMatching as ActionStepStringMatching, types_Compression as Compression, types_PostHogPersistedProperty as PostHogPersistedProperty, types_SurveyMatchType as SurveyMatchType, types_SurveyPosition as SurveyPosition, types_SurveyQuestionBranchingType as SurveyQuestionBranchingType, types_SurveyQuestionDescriptionContentType as SurveyQuestionDescriptionContentType, types_SurveyQuestionType as SurveyQuestionType, types_SurveyRatingDisplay as SurveyRatingDisplay, types_SurveyType as SurveyType, types_SurveyWidgetType as SurveyWidgetType, knownUnsafeEditableEvent };\n","function includes(str, needle) {\n return -1 !== str.indexOf(needle);\n}\nconst trim = function(str) {\n return str.trim();\n};\nconst stripLeadingDollar = function(s) {\n return s.replace(/^\\$/, '');\n};\nfunction isDistinctIdStringLike(value) {\n return [\n 'distinct_id',\n 'distinctid'\n ].includes(value.toLowerCase());\n}\nexport { includes, isDistinctIdStringLike, stripLeadingDollar, trim };\n","import { knownUnsafeEditableEvent } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x);\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return !isUndefined(Event) && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isInstanceOf, isKnownUnsafeEditableEvent, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","import { isNumber } from \"./type-utils.mjs\";\nfunction clampToRange(value, min, max, logger, fallbackValue) {\n if (min > max) {\n logger.warn('min cannot be greater than max.');\n min = max;\n }\n if (isNumber(value)) if (value > max) {\n logger.warn(' cannot be greater than max: ' + max + '. Using max value instead.');\n return max;\n } else {\n if (!(value < min)) return value;\n logger.warn(' cannot be less than min: ' + min + '. Using min value instead.');\n return min;\n }\n logger.warn(' must be a number. using max or fallback. max: ' + max + ', fallback: ' + fallbackValue);\n return clampToRange(fallbackValue || max, min, max, logger);\n}\nexport { clampToRange };\n","import { clampToRange } from \"./number-utils.mjs\";\nconst ONE_DAY_IN_MS = 86400000;\nclass BucketedRateLimiter {\n constructor(options){\n this._buckets = {};\n this._onBucketRateLimited = options._onBucketRateLimited;\n this._bucketSize = clampToRange(options.bucketSize, 0, 100, options._logger);\n this._refillRate = clampToRange(options.refillRate, 0, this._bucketSize, options._logger);\n this._refillInterval = clampToRange(options.refillInterval, 0, ONE_DAY_IN_MS, options._logger);\n }\n _applyRefill(bucket, now) {\n const elapsedMs = now - bucket.lastAccess;\n const refillIntervals = Math.floor(elapsedMs / this._refillInterval);\n if (refillIntervals > 0) {\n const tokensToAdd = refillIntervals * this._refillRate;\n bucket.tokens = Math.min(bucket.tokens + tokensToAdd, this._bucketSize);\n bucket.lastAccess = bucket.lastAccess + refillIntervals * this._refillInterval;\n }\n }\n consumeRateLimit(key) {\n const now = Date.now();\n const keyStr = String(key);\n let bucket = this._buckets[keyStr];\n if (bucket) this._applyRefill(bucket, now);\n else {\n bucket = {\n tokens: this._bucketSize,\n lastAccess: now\n };\n this._buckets[keyStr] = bucket;\n }\n if (0 === bucket.tokens) return true;\n bucket.tokens--;\n if (0 === bucket.tokens) this._onBucketRateLimited?.(key);\n return 0 === bucket.tokens;\n }\n stop() {\n this._buckets = {};\n }\n}\nexport { BucketedRateLimiter };\n","import { uuidv7 } from \"../vendor/uuidv7.mjs\";\nclass PromiseQueue {\n add(promise) {\n const promiseUUID = uuidv7();\n this.promiseByIds[promiseUUID] = promise;\n promise.catch(()=>{}).finally(()=>{\n delete this.promiseByIds[promiseUUID];\n });\n return promise;\n }\n async join() {\n let promises = Object.values(this.promiseByIds);\n let length = promises.length;\n while(length > 0){\n await Promise.all(promises);\n promises = Object.values(this.promiseByIds);\n length = promises.length;\n }\n }\n get length() {\n return Object.keys(this.promiseByIds).length;\n }\n constructor(){\n this.promiseByIds = {};\n }\n}\nexport { PromiseQueue };\n","function createConsole(consoleLike = console) {\n const lockedMethods = {\n log: consoleLike.log.bind(consoleLike),\n warn: consoleLike.warn.bind(consoleLike),\n error: consoleLike.error.bind(consoleLike),\n debug: consoleLike.debug.bind(consoleLike)\n };\n return lockedMethods;\n}\nconst _createLogger = (prefix, maybeCall, consoleLike)=>{\n function _log(level, ...args) {\n maybeCall(()=>{\n const consoleMethod = consoleLike[level];\n consoleMethod(prefix, ...args);\n });\n }\n const logger = {\n info: (...args)=>{\n _log('log', ...args);\n },\n warn: (...args)=>{\n _log('warn', ...args);\n },\n error: (...args)=>{\n _log('error', ...args);\n },\n critical: (...args)=>{\n consoleLike['error'](prefix, ...args);\n },\n createLogger: (additionalPrefix)=>_createLogger(`${prefix} ${additionalPrefix}`, maybeCall, consoleLike)\n };\n return logger;\n};\nconst passThrough = (fn)=>fn();\nfunction createLogger(prefix, maybeCall = passThrough) {\n return _createLogger(prefix, maybeCall, createConsole());\n}\nexport { _createLogger, createLogger };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor) {\n vendor = vendor || '';\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor) {\n const browser = detectBrowser(userAgent, vendor);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","export * from \"./bot-detection.mjs\";\nexport * from \"./bucketed-rate-limiter.mjs\";\nexport * from \"./number-utils.mjs\";\nexport * from \"./string-utils.mjs\";\nexport * from \"./type-utils.mjs\";\nexport * from \"./promise-queue.mjs\";\nexport * from \"./logger.mjs\";\nexport * from \"./user-agent-utils.mjs\";\nconst STRING_FORMAT = 'utf8';\nfunction assert(truthyValue, message) {\n if (!truthyValue || 'string' != typeof truthyValue || isEmpty(truthyValue)) throw new Error(message);\n}\nfunction isEmpty(truthyValue) {\n if (0 === truthyValue.trim().length) return true;\n return false;\n}\nfunction removeTrailingSlash(url) {\n return url?.replace(/\\/+$/, '');\n}\nasync function retriable(fn, props) {\n let lastError = null;\n for(let i = 0; i < props.retryCount + 1; i++){\n if (i > 0) await new Promise((r)=>setTimeout(r, props.retryDelay));\n try {\n const res = await fn();\n return res;\n } catch (e) {\n lastError = e;\n if (!props.retryCheck(e)) throw e;\n }\n }\n throw lastError;\n}\nfunction currentTimestamp() {\n return new Date().getTime();\n}\nfunction currentISOTime() {\n return new Date().toISOString();\n}\nfunction safeSetTimeout(fn, timeout) {\n const t = setTimeout(fn, timeout);\n t?.unref && t?.unref();\n return t;\n}\nconst isPromise = (obj)=>obj && 'function' == typeof obj.then;\nconst isError = (x)=>x instanceof Error;\nfunction getFetch() {\n return 'undefined' != typeof fetch ? fetch : void 0 !== globalThis.fetch ? globalThis.fetch : void 0;\n}\nfunction allSettled(promises) {\n return Promise.all(promises.map((p)=>(p ?? Promise.resolve()).then((value)=>({\n status: 'fulfilled',\n value\n }), (reason)=>({\n status: 'rejected',\n reason\n }))));\n}\nexport { STRING_FORMAT, allSettled, assert, currentISOTime, currentTimestamp, getFetch, isError, isPromise, removeTrailingSlash, retriable, safeSetTimeout };\n","class SimpleEventEmitter {\n constructor(){\n this.events = {};\n this.events = {};\n }\n on(event, listener) {\n if (!this.events[event]) this.events[event] = [];\n this.events[event].push(listener);\n return ()=>{\n this.events[event] = this.events[event].filter((x)=>x !== listener);\n };\n }\n emit(event, payload) {\n for (const listener of this.events[event] || [])listener(payload);\n for (const listener of this.events['*'] || [])listener(event, payload);\n }\n}\nexport { SimpleEventEmitter };\n","function isGzipSupported() {\n return 'CompressionStream' in globalThis;\n}\nasync function gzipCompress(input, isDebug = true) {\n try {\n const dataStream = new Blob([\n input\n ], {\n type: 'text/plain'\n }).stream();\n const compressedStream = dataStream.pipeThrough(new CompressionStream('gzip'));\n return await new Response(compressedStream).blob();\n } catch (error) {\n if (isDebug) console.error('Failed to gzip compress data', error);\n return null;\n }\n}\nexport { gzipCompress, isGzipSupported };\n","import { SimpleEventEmitter } from \"./eventemitter.mjs\";\nimport { getFeatureFlagValue, normalizeFlagsResponse } from \"./featureFlagUtils.mjs\";\nimport { gzipCompress, isGzipSupported } from \"./gzip.mjs\";\nimport { PostHogPersistedProperty } from \"./types.mjs\";\nimport { PromiseQueue, STRING_FORMAT, allSettled, assert, createLogger, currentISOTime, removeTrailingSlash, retriable, safeSetTimeout } from \"./utils/index.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nclass PostHogFetchHttpError extends Error {\n constructor(response, reqByteLength){\n super('HTTP error while fetching PostHog: status=' + response.status + ', reqByteLength=' + reqByteLength), this.response = response, this.reqByteLength = reqByteLength, this.name = 'PostHogFetchHttpError';\n }\n get status() {\n return this.response.status;\n }\n get text() {\n return this.response.text();\n }\n get json() {\n return this.response.json();\n }\n}\nclass PostHogFetchNetworkError extends Error {\n constructor(error){\n super('Network error while fetching PostHog', error instanceof Error ? {\n cause: error\n } : {}), this.error = error, this.name = 'PostHogFetchNetworkError';\n }\n}\nconst maybeAdd = (key, value)=>void 0 !== value ? {\n [key]: value\n } : {};\nasync function logFlushError(err) {\n if (err instanceof PostHogFetchHttpError) {\n let text = '';\n try {\n text = await err.text;\n } catch {}\n console.error(`Error while flushing PostHog: message=${err.message}, response body=${text}`, err);\n } else console.error('Error while flushing PostHog', err);\n return Promise.resolve();\n}\nfunction isPostHogFetchError(err) {\n return 'object' == typeof err && (err instanceof PostHogFetchHttpError || err instanceof PostHogFetchNetworkError);\n}\nfunction isPostHogFetchContentTooLargeError(err) {\n return 'object' == typeof err && err instanceof PostHogFetchHttpError && 413 === err.status;\n}\nvar posthog_core_stateless_QuotaLimitedFeature = /*#__PURE__*/ function(QuotaLimitedFeature) {\n QuotaLimitedFeature[\"FeatureFlags\"] = \"feature_flags\";\n QuotaLimitedFeature[\"Recordings\"] = \"recordings\";\n return QuotaLimitedFeature;\n}({});\nclass PostHogCoreStateless {\n constructor(apiKey, options = {}){\n this.flushPromise = null;\n this.shutdownPromise = null;\n this.promiseQueue = new PromiseQueue();\n this._events = new SimpleEventEmitter();\n this._isInitialized = false;\n assert(apiKey, \"You must pass your PostHog project's api key.\");\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.preloadFeatureFlags = options.preloadFeatureFlags ?? true;\n this.defaultOptIn = options.defaultOptIn ?? true;\n this.disableSurveys = options.disableSurveys ?? false;\n this._retryOptions = {\n retryCount: options.fetchRetryCount ?? 3,\n retryDelay: options.fetchRetryDelay ?? 3000,\n retryCheck: isPostHogFetchError\n };\n this.requestTimeout = options.requestTimeout ?? 10000;\n this.featureFlagsRequestTimeoutMs = options.featureFlagsRequestTimeoutMs ?? 3000;\n this.remoteConfigRequestTimeoutMs = options.remoteConfigRequestTimeoutMs ?? 3000;\n this.disableGeoip = options.disableGeoip ?? true;\n this.disabled = options.disabled ?? false;\n this.historicalMigration = options?.historicalMigration ?? false;\n this.evaluationEnvironments = options?.evaluationEnvironments;\n this._initPromise = Promise.resolve();\n this._isInitialized = true;\n this._logger = createLogger('[PostHog]', this.logMsgIfDebug.bind(this));\n this.disableCompression = !isGzipSupported() || (options?.disableCompression ?? false);\n }\n logMsgIfDebug(fn) {\n if (this.isDebug) fn();\n }\n wrap(fn) {\n if (this.disabled) return void this._logger.warn('The client is disabled');\n if (this._isInitialized) return fn();\n this._initPromise.then(()=>fn());\n }\n getCommonEventProperties() {\n return {\n $lib: this.getLibraryId(),\n $lib_version: this.getLibraryVersion()\n };\n }\n get optedOut() {\n return this.getPersistedProperty(PostHogPersistedProperty.OptedOut) ?? !this.defaultOptIn;\n }\n async optIn() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, false);\n });\n }\n async optOut() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, true);\n });\n }\n on(event, cb) {\n return this._events.on(event, cb);\n }\n debug(enabled = true) {\n this.removeDebugCallback?.();\n if (enabled) {\n const removeDebugCallback = this.on('*', (event, payload)=>this._logger.info(event, payload));\n this.removeDebugCallback = ()=>{\n removeDebugCallback();\n this.removeDebugCallback = void 0;\n };\n }\n }\n get isDebug() {\n return !!this.removeDebugCallback;\n }\n get isDisabled() {\n return this.disabled;\n }\n buildPayload(payload) {\n return {\n distinct_id: payload.distinct_id,\n event: payload.event,\n properties: {\n ...payload.properties || {},\n ...this.getCommonEventProperties()\n }\n };\n }\n addPendingPromise(promise) {\n return this.promiseQueue.add(promise);\n }\n identifyStateless(distinctId, properties, options) {\n this.wrap(()=>{\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties\n })\n };\n this.enqueue('identify', payload, options);\n });\n }\n async identifyStatelessImmediate(distinctId, properties, options) {\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties\n })\n };\n await this.sendImmediate('identify', payload, options);\n }\n captureStateless(distinctId, event, properties, options) {\n this.wrap(()=>{\n const payload = this.buildPayload({\n distinct_id: distinctId,\n event,\n properties\n });\n this.enqueue('capture', payload, options);\n });\n }\n async captureStatelessImmediate(distinctId, event, properties, options) {\n const payload = this.buildPayload({\n distinct_id: distinctId,\n event,\n properties\n });\n await this.sendImmediate('capture', payload, options);\n }\n aliasStateless(alias, distinctId, properties, options) {\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 this.enqueue('alias', payload, options);\n });\n }\n async aliasStatelessImmediate(alias, distinctId, properties, options) {\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 await this.sendImmediate('alias', payload, options);\n }\n groupIdentifyStateless(groupType, groupKey, groupProperties, options, distinctId, eventProperties) {\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 this.enqueue('capture', payload, options);\n });\n }\n async getRemoteConfig() {\n await this._initPromise;\n let host = this.host;\n if ('https://us.i.posthog.com' === host) host = 'https://us-assets.i.posthog.com';\n else if ('https://eu.i.posthog.com' === host) host = 'https://eu-assets.i.posthog.com';\n const url = `${host}/array/${this.apiKey}/config`;\n const fetchOptions = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n }\n };\n return this.fetchWithRetry(url, fetchOptions, {\n retryCount: 0\n }, this.remoteConfigRequestTimeoutMs).then((response)=>response.json()).catch((error)=>{\n this._logger.error('Remote config could not be loaded', error);\n this._events.emit('error', error);\n });\n }\n async getFlags(distinctId, groups = {}, personProperties = {}, groupProperties = {}, extraPayload = {}, fetchConfig = true) {\n await this._initPromise;\n const configParam = fetchConfig ? '&config=true' : '';\n const url = `${this.host}/flags/?v=2${configParam}`;\n const requestData = {\n token: this.apiKey,\n distinct_id: distinctId,\n groups,\n person_properties: personProperties,\n group_properties: groupProperties,\n ...extraPayload\n };\n if (this.evaluationEnvironments && this.evaluationEnvironments.length > 0) requestData.evaluation_environments = this.evaluationEnvironments;\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(requestData)\n };\n this._logger.info('Flags URL', url);\n return this.fetchWithRetry(url, fetchOptions, {\n retryCount: 0\n }, this.featureFlagsRequestTimeoutMs).then((response)=>response.json()).then((response)=>normalizeFlagsResponse(response)).catch((error)=>{\n this._events.emit('error', error);\n });\n }\n async getFeatureFlagStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const flagDetailResponse = await this.getFeatureFlagDetailStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);\n if (void 0 === flagDetailResponse) return {\n response: void 0,\n requestId: void 0\n };\n let response = getFeatureFlagValue(flagDetailResponse.response);\n if (void 0 === response) response = false;\n return {\n response,\n requestId: flagDetailResponse.requestId\n };\n }\n async getFeatureFlagDetailStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const flagsResponse = await this.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (void 0 === flagsResponse) return;\n const featureFlags = flagsResponse.flags;\n const flagDetail = featureFlags[key];\n return {\n response: flagDetail,\n requestId: flagsResponse.requestId,\n evaluatedAt: flagsResponse.evaluatedAt\n };\n }\n async getFeatureFlagPayloadStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const payloads = await this.getFeatureFlagPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (!payloads) return;\n const response = payloads[key];\n if (void 0 === response) return null;\n return response;\n }\n async getFeatureFlagPayloadsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const payloads = (await this.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate)).payloads;\n return payloads;\n }\n async getFeatureFlagsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n return await this.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate);\n }\n async getFeatureFlagsAndPayloadsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const featureFlagDetails = await this.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate);\n if (!featureFlagDetails) return {\n flags: void 0,\n payloads: void 0,\n requestId: void 0\n };\n return {\n flags: featureFlagDetails.featureFlags,\n payloads: featureFlagDetails.featureFlagPayloads,\n requestId: featureFlagDetails.requestId\n };\n }\n async getFeatureFlagDetailsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const extraPayload = {};\n if (disableGeoip ?? this.disableGeoip) extraPayload['geoip_disable'] = true;\n if (flagKeysToEvaluate) extraPayload['flag_keys_to_evaluate'] = flagKeysToEvaluate;\n const flagsResponse = await this.getFlags(distinctId, groups, personProperties, groupProperties, extraPayload);\n if (void 0 === flagsResponse) return;\n if (flagsResponse.errorsWhileComputingFlags) console.error('[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 if (flagsResponse.quotaLimited?.includes(\"feature_flags\")) {\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n return {\n flags: {},\n featureFlags: {},\n featureFlagPayloads: {},\n requestId: flagsResponse?.requestId,\n quotaLimited: flagsResponse.quotaLimited\n };\n }\n return flagsResponse;\n }\n async getSurveysStateless() {\n await this._initPromise;\n if (true === this.disableSurveys) {\n this._logger.info('Loading surveys is disabled.');\n return [];\n }\n const url = `${this.host}/api/surveys/?token=${this.apiKey}`;\n const fetchOptions = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n }\n };\n const response = await this.fetchWithRetry(url, fetchOptions).then((response)=>{\n if (200 !== response.status || !response.json) {\n const msg = `Surveys API could not be loaded: ${response.status}`;\n const error = new Error(msg);\n this._logger.error(error);\n this._events.emit('error', new Error(msg));\n return;\n }\n return response.json();\n }).catch((error)=>{\n this._logger.error('Surveys API could not be loaded', error);\n this._events.emit('error', error);\n });\n const newSurveys = response?.surveys;\n if (newSurveys) this._logger.info('Surveys fetched from API: ', JSON.stringify(newSurveys));\n return newSurveys ?? [];\n }\n get props() {\n if (!this._props) this._props = this.getPersistedProperty(PostHogPersistedProperty.Props);\n return this._props || {};\n }\n set props(val) {\n this._props = val;\n }\n async register(properties) {\n this.wrap(()=>{\n this.props = {\n ...this.props,\n ...properties\n };\n this.setPersistedProperty(PostHogPersistedProperty.Props, this.props);\n });\n }\n async unregister(property) {\n this.wrap(()=>{\n delete this.props[property];\n this.setPersistedProperty(PostHogPersistedProperty.Props, this.props);\n });\n }\n enqueue(type, _message, options) {\n this.wrap(()=>{\n if (this.optedOut) return void this._events.emit(type, \"Library is disabled. Not sending event. To re-enable, call posthog.optIn()\");\n const message = this.prepareMessage(type, _message, options);\n const queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (queue.length >= this.maxQueueSize) {\n queue.shift();\n this._logger.info('Queue is full, the oldest event is dropped.');\n }\n queue.push({\n message\n });\n this.setPersistedProperty(PostHogPersistedProperty.Queue, queue);\n this._events.emit(type, message);\n if (queue.length >= this.flushAt) this.flushBackground();\n if (this.flushInterval && !this._flushTimer) this._flushTimer = safeSetTimeout(()=>this.flushBackground(), this.flushInterval);\n });\n }\n async sendImmediate(type, _message, options) {\n if (this.disabled) return void this._logger.warn('The client is disabled');\n if (!this._isInitialized) await this._initPromise;\n if (this.optedOut) return void this._events.emit(type, \"Library is disabled. Not sending event. To re-enable, call posthog.optIn()\");\n const data = {\n api_key: this.apiKey,\n batch: [\n this.prepareMessage(type, _message, options)\n ],\n sent_at: currentISOTime()\n };\n if (this.historicalMigration) data.historical_migration = true;\n const payload = JSON.stringify(data);\n const url = `${this.host}/batch/`;\n const gzippedPayload = this.disableCompression ? null : await gzipCompress(payload, this.isDebug);\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n ...null !== gzippedPayload && {\n 'Content-Encoding': 'gzip'\n }\n },\n body: gzippedPayload || payload\n };\n try {\n await this.fetchWithRetry(url, fetchOptions);\n } catch (err) {\n this._events.emit('error', err);\n }\n }\n prepareMessage(type, _message, options) {\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 const addGeoipDisableProperty = options?.disableGeoip ?? this.disableGeoip;\n if (addGeoipDisableProperty) {\n if (!message.properties) message.properties = {};\n message['properties']['$geoip_disable'] = true;\n }\n if (message.distinctId) {\n message.distinct_id = message.distinctId;\n delete message.distinctId;\n }\n return message;\n }\n clearFlushTimer() {\n if (this._flushTimer) {\n clearTimeout(this._flushTimer);\n this._flushTimer = void 0;\n }\n }\n flushBackground() {\n this.flush().catch(async (err)=>{\n await logFlushError(err);\n });\n }\n async flush() {\n const nextFlushPromise = allSettled([\n this.flushPromise\n ]).then(()=>this._flush());\n this.flushPromise = nextFlushPromise;\n this.addPendingPromise(nextFlushPromise);\n allSettled([\n nextFlushPromise\n ]).then(()=>{\n if (this.flushPromise === nextFlushPromise) this.flushPromise = null;\n });\n return nextFlushPromise;\n }\n getCustomHeaders() {\n const customUserAgent = this.getCustomUserAgent();\n const headers = {};\n if (customUserAgent && '' !== customUserAgent) headers['User-Agent'] = customUserAgent;\n return headers;\n }\n async _flush() {\n this.clearFlushTimer();\n await this._initPromise;\n let queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (!queue.length) return;\n const sentMessages = [];\n const originalQueueLength = queue.length;\n while(queue.length > 0 && sentMessages.length < originalQueueLength){\n const batchItems = queue.slice(0, this.maxBatchSize);\n const batchMessages = batchItems.map((item)=>item.message);\n const persistQueueChange = ()=>{\n const refreshedQueue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n const newQueue = refreshedQueue.slice(batchItems.length);\n this.setPersistedProperty(PostHogPersistedProperty.Queue, newQueue);\n queue = newQueue;\n };\n const data = {\n api_key: this.apiKey,\n batch: batchMessages,\n sent_at: currentISOTime()\n };\n if (this.historicalMigration) data.historical_migration = true;\n const payload = JSON.stringify(data);\n const url = `${this.host}/batch/`;\n const gzippedPayload = this.disableCompression ? null : await gzipCompress(payload, this.isDebug);\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n ...null !== gzippedPayload && {\n 'Content-Encoding': 'gzip'\n }\n },\n body: gzippedPayload || payload\n };\n const retryOptions = {\n retryCheck: (err)=>{\n if (isPostHogFetchContentTooLargeError(err)) return false;\n return isPostHogFetchError(err);\n }\n };\n try {\n await this.fetchWithRetry(url, fetchOptions, retryOptions);\n } catch (err) {\n if (isPostHogFetchContentTooLargeError(err) && batchMessages.length > 1) {\n this.maxBatchSize = Math.max(1, Math.floor(batchMessages.length / 2));\n this._logger.warn(`Received 413 when sending batch of size ${batchMessages.length}, reducing batch size to ${this.maxBatchSize}`);\n continue;\n }\n if (!(err instanceof PostHogFetchNetworkError)) persistQueueChange();\n this._events.emit('error', err);\n throw err;\n }\n persistQueueChange();\n sentMessages.push(...batchMessages);\n }\n this._events.emit('flush', sentMessages);\n }\n async fetchWithRetry(url, options, retryOptions, requestTimeout) {\n AbortSignal.timeout ??= function(ms) {\n const ctrl = new AbortController();\n setTimeout(()=>ctrl.abort(), ms);\n return ctrl.signal;\n };\n const body = options.body ? options.body : '';\n let reqByteLength = -1;\n try {\n reqByteLength = body instanceof Blob ? body.size : Buffer.byteLength(body, STRING_FORMAT);\n } catch {\n if (body instanceof Blob) reqByteLength = body.size;\n else {\n const encoded = new TextEncoder().encode(body);\n reqByteLength = encoded.length;\n }\n }\n return await retriable(async ()=>{\n let res = null;\n try {\n res = await this.fetch(url, {\n signal: AbortSignal.timeout(requestTimeout ?? this.requestTimeout),\n ...options\n });\n } catch (e) {\n throw new PostHogFetchNetworkError(e);\n }\n const isNoCors = 'no-cors' === options.mode;\n if (!isNoCors && (res.status < 200 || res.status >= 400)) throw new PostHogFetchHttpError(res, reqByteLength);\n return res;\n }, {\n ...this._retryOptions,\n ...retryOptions\n });\n }\n async _shutdown(shutdownTimeoutMs = 30000) {\n await this._initPromise;\n let hasTimedOut = false;\n this.clearFlushTimer();\n const doShutdown = async ()=>{\n try {\n await this.promiseQueue.join();\n while(true){\n const queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (0 === queue.length) break;\n await this.flush();\n if (hasTimedOut) break;\n }\n } catch (e) {\n if (!isPostHogFetchError(e)) throw e;\n await logFlushError(e);\n }\n };\n return Promise.race([\n new Promise((_, reject)=>{\n safeSetTimeout(()=>{\n this._logger.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 async shutdown(shutdownTimeoutMs = 30000) {\n if (this.shutdownPromise) this._logger.warn('shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup');\n else this.shutdownPromise = this._shutdown(shutdownTimeoutMs).finally(()=>{\n this.shutdownPromise = null;\n });\n return this.shutdownPromise;\n }\n}\nexport { PostHogCoreStateless, posthog_core_stateless_QuotaLimitedFeature as QuotaLimitedFeature, logFlushError, maybeAdd };\n","import { createFlagsResponseFromFlagsAndPayloads, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, normalizeFlagsResponse, updateFlagValue } from \"./featureFlagUtils.mjs\";\nimport { Compression, PostHogPersistedProperty } from \"./types.mjs\";\nimport { PostHogCoreStateless, QuotaLimitedFeature, maybeAdd } from \"./posthog-core-stateless.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nimport { isPlainError } from \"./utils/index.mjs\";\nclass PostHogCore extends PostHogCoreStateless {\n constructor(apiKey, options){\n const disableGeoipOption = options?.disableGeoip ?? false;\n const featureFlagsRequestTimeoutMs = options?.featureFlagsRequestTimeoutMs ?? 10000;\n super(apiKey, {\n ...options,\n disableGeoip: disableGeoipOption,\n featureFlagsRequestTimeoutMs\n }), this.flagCallReported = {}, this._sessionMaxLengthSeconds = 86400, this.sessionProps = {};\n this.sendFeatureFlagEvent = options?.sendFeatureFlagEvent ?? true;\n this._sessionExpirationTimeSeconds = options?.sessionExpirationTimeSeconds ?? 1800;\n }\n setupBootstrap(options) {\n const bootstrap = options?.bootstrap;\n if (!bootstrap) return;\n if (bootstrap.distinctId) if (bootstrap.isIdentifiedId) {\n const distinctId = this.getPersistedProperty(PostHogPersistedProperty.DistinctId);\n if (!distinctId) this.setPersistedProperty(PostHogPersistedProperty.DistinctId, bootstrap.distinctId);\n } else {\n const anonymousId = this.getPersistedProperty(PostHogPersistedProperty.AnonymousId);\n if (!anonymousId) this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, bootstrap.distinctId);\n }\n const bootstrapFeatureFlags = bootstrap.featureFlags;\n const bootstrapFeatureFlagPayloads = bootstrap.featureFlagPayloads ?? {};\n if (bootstrapFeatureFlags && Object.keys(bootstrapFeatureFlags).length) {\n const normalizedBootstrapFeatureFlagDetails = createFlagsResponseFromFlagsAndPayloads(bootstrapFeatureFlags, bootstrapFeatureFlagPayloads);\n if (Object.keys(normalizedBootstrapFeatureFlagDetails.flags).length > 0) {\n this.setBootstrappedFeatureFlagDetails(normalizedBootstrapFeatureFlagDetails);\n const currentFeatureFlagDetails = this.getKnownFeatureFlagDetails() || {\n flags: {},\n requestId: void 0\n };\n const newFeatureFlagDetails = {\n flags: {\n ...normalizedBootstrapFeatureFlagDetails.flags,\n ...currentFeatureFlagDetails.flags\n },\n requestId: normalizedBootstrapFeatureFlagDetails.requestId\n };\n this.setKnownFeatureFlagDetails(newFeatureFlagDetails);\n }\n }\n }\n clearProps() {\n this.props = void 0;\n this.sessionProps = {};\n this.flagCallReported = {};\n }\n on(event, cb) {\n return this._events.on(event, cb);\n }\n reset(propertiesToKeep) {\n this.wrap(()=>{\n const allPropertiesToKeep = [\n PostHogPersistedProperty.Queue,\n ...propertiesToKeep || []\n ];\n this.clearProps();\n for (const key of Object.keys(PostHogPersistedProperty))if (!allPropertiesToKeep.includes(PostHogPersistedProperty[key])) this.setPersistedProperty(PostHogPersistedProperty[key], null);\n this.reloadFeatureFlags();\n });\n }\n getCommonEventProperties() {\n const featureFlags = this.getFeatureFlags();\n const featureVariantProperties = {};\n if (featureFlags) for (const [feature, variant] of Object.entries(featureFlags))featureVariantProperties[`$feature/${feature}`] = variant;\n return {\n ...maybeAdd('$active_feature_flags', featureFlags ? Object.keys(featureFlags) : void 0),\n ...featureVariantProperties,\n ...super.getCommonEventProperties()\n };\n }\n enrichProperties(properties) {\n return {\n ...this.props,\n ...this.sessionProps,\n ...properties || {},\n ...this.getCommonEventProperties(),\n $session_id: this.getSessionId()\n };\n }\n getSessionId() {\n if (!this._isInitialized) return '';\n let sessionId = this.getPersistedProperty(PostHogPersistedProperty.SessionId);\n const sessionLastTimestamp = this.getPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp) || 0;\n const sessionStartTimestamp = this.getPersistedProperty(PostHogPersistedProperty.SessionStartTimestamp) || 0;\n const now = Date.now();\n const sessionLastDif = now - sessionLastTimestamp;\n const sessionStartDif = now - sessionStartTimestamp;\n if (!sessionId || sessionLastDif > 1000 * this._sessionExpirationTimeSeconds || sessionStartDif > 1000 * this._sessionMaxLengthSeconds) {\n sessionId = uuidv7();\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, sessionId);\n this.setPersistedProperty(PostHogPersistedProperty.SessionStartTimestamp, now);\n }\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, now);\n return sessionId;\n }\n resetSessionId() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, null);\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, null);\n this.setPersistedProperty(PostHogPersistedProperty.SessionStartTimestamp, null);\n });\n }\n getAnonymousId() {\n if (!this._isInitialized) return '';\n let anonId = this.getPersistedProperty(PostHogPersistedProperty.AnonymousId);\n if (!anonId) {\n anonId = uuidv7();\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, anonId);\n }\n return anonId;\n }\n getDistinctId() {\n if (!this._isInitialized) return '';\n return this.getPersistedProperty(PostHogPersistedProperty.DistinctId) || this.getAnonymousId();\n }\n registerForSession(properties) {\n this.sessionProps = {\n ...this.sessionProps,\n ...properties\n };\n }\n unregisterForSession(property) {\n delete this.sessionProps[property];\n }\n identify(distinctId, properties, options) {\n this.wrap(()=>{\n const previousDistinctId = this.getDistinctId();\n distinctId = distinctId || previousDistinctId;\n if (properties?.$groups) this.groups(properties.$groups);\n const userPropsOnce = properties?.$set_once;\n delete properties?.$set_once;\n const userProps = properties?.$set || properties;\n const allProperties = this.enrichProperties({\n $anon_distinct_id: this.getAnonymousId(),\n ...maybeAdd('$set', userProps),\n ...maybeAdd('$set_once', userPropsOnce)\n });\n if (distinctId !== previousDistinctId) {\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, previousDistinctId);\n this.setPersistedProperty(PostHogPersistedProperty.DistinctId, distinctId);\n this.reloadFeatureFlags();\n }\n super.identifyStateless(distinctId, allProperties, options);\n });\n }\n capture(event, properties, options) {\n this.wrap(()=>{\n const distinctId = this.getDistinctId();\n if (properties?.$groups) this.groups(properties.$groups);\n const allProperties = this.enrichProperties(properties);\n super.captureStateless(distinctId, event, allProperties, options);\n });\n }\n alias(alias) {\n this.wrap(()=>{\n const distinctId = this.getDistinctId();\n const allProperties = this.enrichProperties({});\n super.aliasStateless(alias, distinctId, allProperties);\n });\n }\n autocapture(eventType, elements, properties = {}, options) {\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 this.enqueue('autocapture', payload, options);\n });\n }\n groups(groups) {\n this.wrap(()=>{\n const existingGroups = this.props.$groups || {};\n this.register({\n $groups: {\n ...existingGroups,\n ...groups\n }\n });\n if (Object.keys(groups).find((type)=>existingGroups[type] !== groups[type])) this.reloadFeatureFlags();\n });\n }\n group(groupType, groupKey, groupProperties, options) {\n this.wrap(()=>{\n this.groups({\n [groupType]: groupKey\n });\n if (groupProperties) this.groupIdentify(groupType, groupKey, groupProperties, options);\n });\n }\n groupIdentify(groupType, groupKey, groupProperties, options) {\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 setPersonPropertiesForFlags(properties) {\n this.wrap(()=>{\n const existingProperties = this.getPersistedProperty(PostHogPersistedProperty.PersonProperties) || {};\n this.setPersistedProperty(PostHogPersistedProperty.PersonProperties, {\n ...existingProperties,\n ...properties\n });\n });\n }\n resetPersonPropertiesForFlags() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.PersonProperties, null);\n });\n }\n setGroupPropertiesForFlags(properties) {\n this.wrap(()=>{\n const existingProperties = this.getPersistedProperty(PostHogPersistedProperty.GroupProperties) || {};\n if (0 !== Object.keys(existingProperties).length) Object.keys(existingProperties).forEach((groupType)=>{\n existingProperties[groupType] = {\n ...existingProperties[groupType],\n ...properties[groupType]\n };\n delete properties[groupType];\n });\n this.setPersistedProperty(PostHogPersistedProperty.GroupProperties, {\n ...existingProperties,\n ...properties\n });\n });\n }\n resetGroupPropertiesForFlags() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.GroupProperties, null);\n });\n }\n async remoteConfigAsync() {\n await this._initPromise;\n if (this._remoteConfigResponsePromise) return this._remoteConfigResponsePromise;\n return this._remoteConfigAsync();\n }\n async flagsAsync(sendAnonDistinctId = true, fetchConfig = true) {\n await this._initPromise;\n if (this._flagsResponsePromise) return this._flagsResponsePromise;\n return this._flagsAsync(sendAnonDistinctId, fetchConfig);\n }\n cacheSessionReplay(source, response) {\n const sessionReplay = response?.sessionRecording;\n if (sessionReplay) {\n this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, sessionReplay);\n this._logger.info(`Session replay config from ${source}: `, JSON.stringify(sessionReplay));\n } else if ('boolean' == typeof sessionReplay && false === sessionReplay) {\n this._logger.info(`Session replay config from ${source} disabled.`);\n this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, null);\n }\n }\n async _remoteConfigAsync() {\n this._remoteConfigResponsePromise = this._initPromise.then(()=>{\n let remoteConfig = this.getPersistedProperty(PostHogPersistedProperty.RemoteConfig);\n this._logger.info('Cached remote config: ', JSON.stringify(remoteConfig));\n return super.getRemoteConfig().then((response)=>{\n if (response) {\n const remoteConfigWithoutSurveys = {\n ...response\n };\n delete remoteConfigWithoutSurveys.surveys;\n this._logger.info('Fetched remote config: ', JSON.stringify(remoteConfigWithoutSurveys));\n if (false === this.disableSurveys) {\n const surveys = response.surveys;\n let hasSurveys = true;\n if (Array.isArray(surveys)) this._logger.info('Surveys fetched from remote config: ', JSON.stringify(surveys));\n else {\n this._logger.info('There are no surveys.');\n hasSurveys = false;\n }\n if (hasSurveys) this.setPersistedProperty(PostHogPersistedProperty.Surveys, surveys);\n else this.setPersistedProperty(PostHogPersistedProperty.Surveys, null);\n } else this.setPersistedProperty(PostHogPersistedProperty.Surveys, null);\n this.setPersistedProperty(PostHogPersistedProperty.RemoteConfig, remoteConfigWithoutSurveys);\n this.cacheSessionReplay('remote config', response);\n if (false === response.hasFeatureFlags) {\n this.setKnownFeatureFlagDetails({\n flags: {}\n });\n this._logger.warn('Remote config has no feature flags, will not load feature flags.');\n } else if (false !== this.preloadFeatureFlags) this.reloadFeatureFlags();\n if (!response.supportedCompression?.includes(Compression.GZipJS)) this.disableCompression = true;\n remoteConfig = response;\n }\n return remoteConfig;\n });\n }).finally(()=>{\n this._remoteConfigResponsePromise = void 0;\n });\n return this._remoteConfigResponsePromise;\n }\n async _flagsAsync(sendAnonDistinctId = true, fetchConfig = true) {\n this._flagsResponsePromise = this._initPromise.then(async ()=>{\n const distinctId = this.getDistinctId();\n const groups = this.props.$groups || {};\n const personProperties = this.getPersistedProperty(PostHogPersistedProperty.PersonProperties) || {};\n const groupProperties = this.getPersistedProperty(PostHogPersistedProperty.GroupProperties) || {};\n const extraProperties = {\n $anon_distinct_id: sendAnonDistinctId ? this.getAnonymousId() : void 0\n };\n const res = await super.getFlags(distinctId, groups, personProperties, groupProperties, extraProperties, fetchConfig);\n if (res?.quotaLimited?.includes(QuotaLimitedFeature.FeatureFlags)) {\n this.setKnownFeatureFlagDetails(null);\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n return res;\n }\n if (res?.featureFlags) {\n if (this.sendFeatureFlagEvent) this.flagCallReported = {};\n let newFeatureFlagDetails = res;\n if (res.errorsWhileComputingFlags) {\n const currentFlagDetails = this.getKnownFeatureFlagDetails();\n this._logger.info('Cached feature flags: ', JSON.stringify(currentFlagDetails));\n newFeatureFlagDetails = {\n ...res,\n flags: {\n ...currentFlagDetails?.flags,\n ...res.flags\n }\n };\n }\n this.setKnownFeatureFlagDetails(newFeatureFlagDetails);\n this.setPersistedProperty(PostHogPersistedProperty.FlagsEndpointWasHit, true);\n this.cacheSessionReplay('flags', res);\n }\n return res;\n }).finally(()=>{\n this._flagsResponsePromise = void 0;\n });\n return this._flagsResponsePromise;\n }\n setKnownFeatureFlagDetails(flagsResponse) {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.FeatureFlagDetails, flagsResponse);\n this._events.emit('featureflags', getFlagValuesFromFlags(flagsResponse?.flags ?? {}));\n });\n }\n getKnownFeatureFlagDetails() {\n const storedDetails = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlagDetails);\n if (!storedDetails) {\n const featureFlags = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlags);\n const featureFlagPayloads = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlagPayloads);\n if (void 0 === featureFlags && void 0 === featureFlagPayloads) return;\n return createFlagsResponseFromFlagsAndPayloads(featureFlags ?? {}, featureFlagPayloads ?? {});\n }\n return normalizeFlagsResponse(storedDetails);\n }\n getKnownFeatureFlags() {\n const featureFlagDetails = this.getKnownFeatureFlagDetails();\n if (!featureFlagDetails) return;\n return getFlagValuesFromFlags(featureFlagDetails.flags);\n }\n getKnownFeatureFlagPayloads() {\n const featureFlagDetails = this.getKnownFeatureFlagDetails();\n if (!featureFlagDetails) return;\n return getPayloadsFromFlags(featureFlagDetails.flags);\n }\n getBootstrappedFeatureFlagDetails() {\n const details = this.getPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlagDetails);\n if (!details) return;\n return details;\n }\n setBootstrappedFeatureFlagDetails(details) {\n this.setPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlagDetails, details);\n }\n getBootstrappedFeatureFlags() {\n const details = this.getBootstrappedFeatureFlagDetails();\n if (!details) return;\n return getFlagValuesFromFlags(details.flags);\n }\n getBootstrappedFeatureFlagPayloads() {\n const details = this.getBootstrappedFeatureFlagDetails();\n if (!details) return;\n return getPayloadsFromFlags(details.flags);\n }\n getFeatureFlag(key) {\n const details = this.getFeatureFlagDetails();\n if (!details) return;\n const featureFlag = details.flags[key];\n let response = getFeatureFlagValue(featureFlag);\n if (void 0 === response) response = false;\n if (this.sendFeatureFlagEvent && !this.flagCallReported[key]) {\n const bootstrappedResponse = this.getBootstrappedFeatureFlags()?.[key];\n const bootstrappedPayload = this.getBootstrappedFeatureFlagPayloads()?.[key];\n this.flagCallReported[key] = true;\n this.capture('$feature_flag_called', {\n $feature_flag: key,\n $feature_flag_response: response,\n ...maybeAdd('$feature_flag_id', featureFlag?.metadata?.id),\n ...maybeAdd('$feature_flag_version', featureFlag?.metadata?.version),\n ...maybeAdd('$feature_flag_reason', featureFlag?.reason?.description ?? featureFlag?.reason?.code),\n ...maybeAdd('$feature_flag_bootstrapped_response', bootstrappedResponse),\n ...maybeAdd('$feature_flag_bootstrapped_payload', bootstrappedPayload),\n $used_bootstrap_value: !this.getPersistedProperty(PostHogPersistedProperty.FlagsEndpointWasHit),\n ...maybeAdd('$feature_flag_request_id', details.requestId),\n ...maybeAdd('$feature_flag_evaluated_at', details.evaluatedAt)\n });\n }\n return response;\n }\n getFeatureFlagPayload(key) {\n const payloads = this.getFeatureFlagPayloads();\n if (!payloads) return;\n const response = payloads[key];\n if (void 0 === response) return null;\n return response;\n }\n getFeatureFlagPayloads() {\n return this.getFeatureFlagDetails()?.featureFlagPayloads;\n }\n getFeatureFlags() {\n return this.getFeatureFlagDetails()?.featureFlags;\n }\n getFeatureFlagDetails() {\n let details = this.getKnownFeatureFlagDetails();\n const overriddenFlags = this.getPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags);\n if (!overriddenFlags) return details;\n details = details ?? {\n featureFlags: {},\n featureFlagPayloads: {},\n flags: {}\n };\n const flags = details.flags ?? {};\n for(const key in overriddenFlags)if (overriddenFlags[key]) flags[key] = updateFlagValue(flags[key], overriddenFlags[key]);\n else delete flags[key];\n const result = {\n ...details,\n flags\n };\n return normalizeFlagsResponse(result);\n }\n getFeatureFlagsAndPayloads() {\n const flags = this.getFeatureFlags();\n const payloads = this.getFeatureFlagPayloads();\n return {\n flags,\n payloads\n };\n }\n isFeatureEnabled(key) {\n const response = this.getFeatureFlag(key);\n if (void 0 === response) return;\n return !!response;\n }\n reloadFeatureFlags(options) {\n this.flagsAsync(true).then((res)=>{\n options?.cb?.(void 0, res?.featureFlags);\n }).catch((e)=>{\n options?.cb?.(e, void 0);\n if (!options?.cb) this._logger.info('Error reloading feature flags', e);\n });\n }\n async reloadRemoteConfigAsync() {\n return await this.remoteConfigAsync();\n }\n async reloadFeatureFlagsAsync(sendAnonDistinctId) {\n return (await this.flagsAsync(sendAnonDistinctId ?? true))?.featureFlags;\n }\n onFeatureFlags(cb) {\n return this.on('featureflags', async ()=>{\n const flags = this.getFeatureFlags();\n if (flags) cb(flags);\n });\n }\n onFeatureFlag(key, cb) {\n return this.on('featureflags', async ()=>{\n const flagResponse = this.getFeatureFlag(key);\n if (void 0 !== flagResponse) cb(flagResponse);\n });\n }\n async overrideFeatureFlag(flags) {\n this.wrap(()=>{\n if (null === flags) return this.setPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags, null);\n return this.setPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags, flags);\n });\n }\n captureException(error, additionalProperties) {\n const properties = {\n $exception_level: 'error',\n $exception_list: [\n {\n type: isPlainError(error) ? error.name : 'Error',\n value: isPlainError(error) ? error.message : error,\n mechanism: {\n handled: true,\n synthetic: false\n }\n }\n ],\n ...additionalProperties\n };\n this.capture('$exception', properties);\n }\n captureTraceFeedback(traceId, userFeedback) {\n this.capture('$ai_feedback', {\n $ai_feedback_text: userFeedback,\n $ai_trace_id: String(traceId)\n });\n }\n captureTraceMetric(traceId, metricName, metricValue) {\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}\nexport { PostHogCore };\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext();\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? 1 : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext() {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser)\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { isUndefined } from \"../../utils/index.mjs\";\nconst UNKNOWN_FUNCTION = '?';\nfunction createFrame(platform, filename, func, lineno, colno) {\n const frame = {\n platform,\n filename,\n function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,\n in_app: true\n };\n if (!isUndefined(lineno)) frame.lineno = lineno;\n if (!isUndefined(colno)) frame.colno = colno;\n return frame;\n}\nexport { UNKNOWN_FUNCTION, createFrame };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst extractSafariExtensionDetails = (func, filename)=>{\n const isSafariExtension = -1 !== func.indexOf('safari-extension');\n const isSafariWebExtension = -1 !== func.indexOf('safari-web-extension');\n return isSafariExtension || isSafariWebExtension ? [\n -1 !== func.indexOf('@') ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n ] : [\n func,\n filename\n ];\n};\nexport { extractSafariExtensionDetails };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeStackLineParser = (line, platform)=>{\n const noFnParts = chromeRegexNoFnName.exec(line);\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);\n }\n const parts = chromeRegex.exec(line);\n if (parts) {\n const isEval = parts[2] && 0 === parts[2].indexOf('eval');\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n if (subMatch) {\n parts[2] = subMatch[1];\n parts[3] = subMatch[2];\n parts[4] = subMatch[3];\n }\n }\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n }\n};\nexport { chromeStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjsStackLineParser = (line, platform)=>{\n const parts = winjsRegex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nexport { winjsStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst geckoStackLineParser = (line, platform)=>{\n const parts = geckoREgex.exec(line);\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n if (subMatch) {\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = '';\n }\n }\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n }\n};\nexport { geckoStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10StackLineParser = (line, platform)=>{\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11StackLineParser = (line, platform)=>{\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nexport { opera10StackLineParser, opera11StackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isBuiltin, isString } from \"../../utils/index.mjs\";\nclass DOMExceptionCoercer {\n match(err) {\n return this.isDOMException(err) || this.isDOMError(err);\n }\n coerce(err, ctx) {\n const hasStack = isString(err.stack);\n return {\n type: this.getType(err),\n value: this.getValue(err),\n stack: hasStack ? err.stack : void 0,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(candidate) {\n return this.isDOMError(candidate) ? 'DOMError' : 'DOMException';\n }\n getValue(err) {\n const name = err.name || (this.isDOMError(err) ? 'DOMError' : 'DOMException');\n const message = err.message ? `${name}: ${err.message}` : name;\n return message;\n }\n isDOMException(err) {\n return isBuiltin(err, 'DOMException');\n }\n isDOMError(err) {\n return isBuiltin(err, 'DOMError');\n }\n}\nexport { DOMExceptionCoercer };\n","import { isPlainError } from \"../../utils/index.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isPlainError(err);\n }\n coerce(err, ctx) {\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: this.getStack(err),\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","import { isErrorEvent } from \"../../utils/index.mjs\";\nclass ErrorEventCoercer {\n constructor(){}\n match(err) {\n return isErrorEvent(err) && void 0 != err.error;\n }\n coerce(err, ctx) {\n const exceptionLike = ctx.apply(err.error);\n if (!exceptionLike) return {\n type: 'ErrorEvent',\n value: err.message,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return exceptionLike;\n }\n}\nexport { ErrorEventCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n return isEvent(err) ? err.constructor.name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","import { isBuiltin, isPrimitive } from \"../../utils/index.mjs\";\nclass PromiseRejectionEventCoercer {\n match(err) {\n return isBuiltin(err, 'PromiseRejectionEvent');\n }\n coerce(err, ctx) {\n const reason = this.getUnhandledRejectionReason(err);\n if (isPrimitive(reason)) return {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return ctx.apply(reason);\n }\n getUnhandledRejectionReason(error) {\n if (isPrimitive(error)) return error;\n try {\n if ('reason' in error) return error.reason;\n if ('detail' in error && 'reason' in error.detail) return error.detail.reason;\n } catch {}\n return error;\n }\n}\nexport { PromiseRejectionEventCoercer };\n","export * from \"./dom-exception-coercer.mjs\";\nexport * from \"./error-coercer.mjs\";\nexport * from \"./error-event-coercer.mjs\";\nexport * from \"./string-coercer.mjs\";\nexport * from \"./object-coercer.mjs\";\nexport * from \"./event-coercer.mjs\";\nexport * from \"./primitive-coercer.mjs\";\nexport * from \"./promise-rejection-event.mjs\";\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","export * from \"./error-properties-builder.mjs\";\nexport * from \"./parsers/index.mjs\";\nexport * from \"./coercers/index.mjs\";\nexport * from \"./utils.mjs\";\n","import { getFeatureFlagValue } from \"./featureFlagUtils.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nexport * from \"./utils/index.mjs\";\nexport * from \"./posthog-core.mjs\";\nexport * from \"./posthog-core-stateless.mjs\";\nexport * from \"./types.mjs\";\nimport * as __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ from \"./error-tracking/index.mjs\";\nexport { __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ as ErrorTracking, getFeatureFlagValue, uuidv7 };\n","import { ErrorTracking } from \"@posthog/core\";\nimport { createReadStream } from \"node:fs\";\nimport { createInterface } from \"node:readline\";\nconst LRU_FILE_CONTENTS_CACHE = new ErrorTracking.ReduceableCache(25);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new ErrorTracking.ReduceableCache(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\nasync function addSourceContext(frames) {\n const filesToLines = {};\n for(let i = frames.length - 1; i >= 0; i--){\n const frame = frames[i];\n const filename = frame?.filename;\n if (!frame || 'string' != typeof filename || 'number' != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n filesToLines[filename].push(frame.lineno);\n }\n const files = Object.keys(filesToLines);\n if (0 == files.length) return frames;\n const readlinePromises = [];\n for (const file of files){\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) continue;\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) continue;\n filesToLineRanges.sort((a, b)=>a - b);\n const ranges = makeLineReaderRanges(filesToLineRanges);\n if (ranges.every((r)=>rangeExistsInContentCache(file, r))) continue;\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n await Promise.all(readlinePromises).catch(()=>{});\n if (frames && frames.length > 0) addSourceContextToFrames(frames, LRU_FILE_CONTENTS_CACHE);\n LRU_FILE_CONTENTS_CACHE.reduce();\n return frames;\n}\nfunction getContextLinesFromFile(path, ranges, output) {\n return new Promise((resolve)=>{\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream\n });\n function destroyStreamAndResolve() {\n stream.destroy();\n resolve();\n }\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) return void destroyStreamAndResolve();\n let rangeStart = range[0];\n let rangeEnd = range[1];\n function onStreamError() {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n lineReaded.on('line', (line)=>{\n lineNumber++;\n if (lineNumber < rangeStart) return;\n output[lineNumber] = snipLine(line, 0);\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\nfunction addSourceContextToFrames(frames, cache) {\n for (const frame of frames)if (frame.filename && void 0 === frame.context_line && 'number' == typeof frame.lineno) {\n const contents = cache.get(frame.filename);\n if (void 0 === contents) continue;\n addContextToFrame(frame.lineno, frame, contents);\n }\n}\nfunction addContextToFrame(lineno, frame, contents) {\n if (void 0 === frame.lineno || void 0 === contents) return;\n frame.pre_context = [];\n for(let i = makeRangeStart(lineno); i < lineno; i++){\n const line = contents[i];\n if (void 0 === line) return void clearLineContext(frame);\n frame.pre_context.push(line);\n }\n if (void 0 === contents[lineno]) return void clearLineContext(frame);\n frame.context_line = contents[lineno];\n const end = makeRangeEnd(lineno);\n frame.post_context = [];\n for(let i = lineno + 1; i <= end; i++){\n const line = contents[i];\n if (void 0 === line) break;\n frame.post_context.push(line);\n }\n}\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\nfunction shouldSkipContextLinesForFile(path) {\n return path.startsWith('node:') || path.endsWith('.min.js') || path.endsWith('.min.cjs') || path.endsWith('.min.mjs') || path.startsWith('data:');\n}\nfunction shouldSkipContextLinesForFrame(frame) {\n if (void 0 !== frame.lineno && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (void 0 !== frame.colno && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\nfunction rangeExistsInContentCache(file, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (void 0 === contents) return false;\n for(let i = range[0]; i <= range[1]; i++)if (void 0 === contents[i]) return false;\n return true;\n}\nfunction makeLineReaderRanges(lines) {\n if (!lines.length) return [];\n let i = 0;\n const line = lines[0];\n if ('number' != typeof line) return [];\n let current = makeContextRange(line);\n const out = [];\n while(true){\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n const next = lines[i + 1];\n if ('number' != typeof next) break;\n if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;\n else {\n out.push(current);\n current = makeContextRange(next);\n }\n i++;\n }\n return out;\n}\nfunction makeContextRange(line) {\n return [\n makeRangeStart(line),\n makeRangeEnd(line)\n ];\n}\nfunction makeRangeStart(line) {\n return Math.max(1, line - DEFAULT_LINES_OF_CONTEXT);\n}\nfunction makeRangeEnd(line) {\n return line + DEFAULT_LINES_OF_CONTEXT;\n}\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n if (void 0 === value) {\n map.set(key, contents);\n return contents;\n }\n return value;\n}\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) return newLine;\n if (colno > lineLength) colno = lineLength;\n let start = Math.max(colno - 60, 0);\n if (start < 5) start = 0;\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) end = lineLength;\n if (end === lineLength) start = Math.max(end - 140, 0);\n newLine = newLine.slice(start, end);\n if (start > 0) newLine = `...${newLine}`;\n if (end < lineLength) newLine += '...';\n return newLine;\n}\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_LINENO, addSourceContext };\n","function makeUncaughtExceptionHandler(captureFn, onFatalFn) {\n let calledFatalError = false;\n return Object.assign((error)=>{\n const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;\n const processWouldExit = 0 === userProvidedListenersCount;\n captureFn(error, {\n mechanism: {\n type: 'onuncaughtexception',\n handled: false\n }\n });\n if (!calledFatalError && processWouldExit) {\n calledFatalError = true;\n onFatalFn(error);\n }\n }, {\n _posthogErrorHandler: true\n });\n}\nfunction addUncaughtExceptionListener(captureFn, onFatalFn) {\n globalThis.process?.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));\n}\nfunction addUnhandledRejectionListener(captureFn) {\n globalThis.process?.on('unhandledRejection', (reason)=>captureFn(reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n }));\n}\nexport { addUncaughtExceptionListener, addUnhandledRejectionListener };\n","import { addUncaughtExceptionListener, addUnhandledRejectionListener } from \"./autocapture.mjs\";\nimport { BucketedRateLimiter, uuidv7 } from \"@posthog/core\";\nconst SHUTDOWN_TIMEOUT = 2000;\nclass ErrorTracking {\n constructor(client, options, _logger){\n this.client = client;\n this._exceptionAutocaptureEnabled = options.enableExceptionAutocapture || false;\n this._logger = _logger;\n this._rateLimiter = new BucketedRateLimiter({\n refillRate: 1,\n bucketSize: 10,\n refillInterval: 10000,\n _logger: this._logger\n });\n this.startAutocaptureIfEnabled();\n }\n static async buildEventMessage(error, hint, distinctId, additionalProperties) {\n const properties = {\n ...additionalProperties\n };\n if (!distinctId) properties.$process_person_profile = false;\n const exceptionProperties = this.errorPropertiesBuilder.buildFromUnknown(error, hint);\n exceptionProperties.$exception_list = await this.errorPropertiesBuilder.modifyFrames(exceptionProperties.$exception_list);\n return {\n event: '$exception',\n distinctId: distinctId || uuidv7(),\n properties: {\n ...exceptionProperties,\n ...properties\n }\n };\n }\n startAutocaptureIfEnabled() {\n if (this.isEnabled()) {\n addUncaughtExceptionListener(this.onException.bind(this), this.onFatalError.bind(this));\n addUnhandledRejectionListener(this.onException.bind(this));\n }\n }\n onException(exception, hint) {\n this.client.addPendingPromise((async ()=>{\n const eventMessage = await ErrorTracking.buildEventMessage(exception, hint);\n const exceptionProperties = eventMessage.properties;\n const exceptionType = exceptionProperties?.$exception_list[0]?.type ?? 'Exception';\n const isRateLimited = this._rateLimiter.consumeRateLimit(exceptionType);\n if (isRateLimited) return void this._logger.info('Skipping exception capture because of client rate limiting.', {\n exception: exceptionType\n });\n return this.client.capture(eventMessage);\n })());\n }\n async onFatalError(exception) {\n console.error(exception);\n await this.client.shutdown(SHUTDOWN_TIMEOUT);\n process.exit(1);\n }\n isEnabled() {\n return !this.client.isDisabled && this._exceptionAutocaptureEnabled;\n }\n shutdown() {\n this._rateLimiter.stop();\n }\n}\nexport { ErrorTracking as default };\n","const version = '5.18.1';\nexport { version };\n","const FeatureFlagError = {\n ERRORS_WHILE_COMPUTING: 'errors_while_computing_flags',\n FLAG_MISSING: 'flag_missing',\n QUOTA_LIMITED: 'quota_limited',\n UNKNOWN_ERROR: 'unknown_error'\n};\nexport { FeatureFlagError };\n","async function hashSHA1(text) {\n const subtle = globalThis.crypto?.subtle;\n if (!subtle) throw new Error('SubtleCrypto API not available');\n const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text));\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((byte)=>byte.toString(16).padStart(2, '0')).join('');\n}\nexport { hashSHA1 };\n","import { safeSetTimeout } from \"@posthog/core\";\nimport { hashSHA1 } from \"./crypto.mjs\";\nconst SIXTY_SECONDS = 60000;\nconst LONG_SCALE = 0xfffffffffffffff;\nconst NULL_VALUES_ALLOWED_OPERATORS = [\n 'is_not'\n];\nclass ClientError extends Error {\n constructor(message){\n super();\n Error.captureStackTrace(this, this.constructor);\n this.name = 'ClientError';\n this.message = message;\n Object.setPrototypeOf(this, ClientError.prototype);\n }\n}\nclass InconclusiveMatchError extends Error {\n constructor(message){\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n Object.setPrototypeOf(this, InconclusiveMatchError.prototype);\n }\n}\nclass RequiresServerEvaluation extends Error {\n constructor(message){\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n Object.setPrototypeOf(this, RequiresServerEvaluation.prototype);\n }\n}\nclass FeatureFlagsPoller {\n constructor({ pollingInterval, personalApiKey, projectApiKey, timeout, host, customHeaders, ...options }){\n this.debugMode = false;\n this.shouldBeginExponentialBackoff = false;\n this.backOffCount = 0;\n this.pollingInterval = pollingInterval;\n this.personalApiKey = personalApiKey;\n this.featureFlags = [];\n this.featureFlagsByKey = {};\n this.groupTypeMapping = {};\n this.cohorts = {};\n this.loadedSuccessfullyOnce = false;\n this.timeout = timeout;\n this.projectApiKey = projectApiKey;\n this.host = host;\n this.poller = void 0;\n this.fetch = options.fetch || fetch;\n this.onError = options.onError;\n this.customHeaders = customHeaders;\n this.onLoad = options.onLoad;\n this.cacheProvider = options.cacheProvider;\n this.loadFeatureFlags();\n }\n debug(enabled = true) {\n this.debugMode = enabled;\n }\n logMsgIfDebug(fn) {\n if (this.debugMode) fn();\n }\n async getFeatureFlag(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}) {\n await this.loadFeatureFlags();\n let response;\n let featureFlag;\n if (!this.loadedSuccessfullyOnce) return response;\n featureFlag = this.featureFlagsByKey[key];\n if (void 0 !== featureFlag) try {\n const result = await this.computeFlagAndPayloadLocally(featureFlag, distinctId, groups, personProperties, groupProperties);\n response = result.value;\n this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${key} -> ${response}`));\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${key}: ${e.message}`));\n else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${key}: ${e}`));\n }\n return response;\n }\n async getAllFlagsAndPayloads(distinctId, groups = {}, personProperties = {}, groupProperties = {}, flagKeysToExplicitlyEvaluate) {\n await this.loadFeatureFlags();\n const response = {};\n const payloads = {};\n let fallbackToFlags = 0 == this.featureFlags.length;\n const flagsToEvaluate = flagKeysToExplicitlyEvaluate ? flagKeysToExplicitlyEvaluate.map((key)=>this.featureFlagsByKey[key]).filter(Boolean) : this.featureFlags;\n const sharedEvaluationCache = {};\n await Promise.all(flagsToEvaluate.map(async (flag)=>{\n try {\n const { value: matchValue, payload: matchPayload } = await this.computeFlagAndPayloadLocally(flag, distinctId, groups, personProperties, groupProperties, void 0, sharedEvaluationCache);\n response[flag.key] = matchValue;\n if (matchPayload) payloads[flag.key] = matchPayload;\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`));\n else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${flag.key}: ${e}`));\n fallbackToFlags = true;\n }\n }));\n return {\n response,\n payloads,\n fallbackToFlags\n };\n }\n async computeFlagAndPayloadLocally(flag, distinctId, groups = {}, personProperties = {}, groupProperties = {}, matchValue, evaluationCache, skipLoadCheck = false) {\n if (!skipLoadCheck) await this.loadFeatureFlags();\n if (!this.loadedSuccessfullyOnce) return {\n value: false,\n payload: null\n };\n let flagValue;\n flagValue = void 0 !== matchValue ? matchValue : await this.computeFlagValueLocally(flag, distinctId, groups, personProperties, groupProperties, evaluationCache);\n const payload = this.getFeatureFlagPayload(flag.key, flagValue);\n return {\n value: flagValue,\n payload\n };\n }\n async computeFlagValueLocally(flag, distinctId, groups = {}, personProperties = {}, groupProperties = {}, evaluationCache = {}) {\n if (flag.ensure_experience_continuity) throw new InconclusiveMatchError('Flag has experience continuity enabled');\n if (!flag.active) return false;\n const flagFilters = flag.filters || {};\n const aggregation_group_type_index = flagFilters.aggregation_group_type_index;\n if (void 0 == aggregation_group_type_index) return await this.matchFeatureFlagProperties(flag, distinctId, personProperties, evaluationCache);\n {\n const groupName = this.groupTypeMapping[String(aggregation_group_type_index)];\n if (!groupName) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${aggregation_group_type_index} for feature flag ${flag.key}`));\n throw new InconclusiveMatchError('Flag has unknown group type index');\n }\n if (!(groupName in groups)) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${flag.key} without group names passed in`));\n return false;\n }\n const focusedGroupProperties = groupProperties[groupName];\n return await this.matchFeatureFlagProperties(flag, groups[groupName], focusedGroupProperties, evaluationCache);\n }\n }\n getFeatureFlagPayload(key, flagValue) {\n let payload = null;\n if (false !== flagValue && null != flagValue) {\n if ('boolean' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue.toString()] || null;\n else if ('string' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue] || null;\n if (null != payload) {\n if ('object' == typeof payload) return payload;\n if ('string' == typeof payload) try {\n return JSON.parse(payload);\n } catch {}\n return payload;\n }\n }\n return null;\n }\n async evaluateFlagDependency(property, distinctId, properties, evaluationCache) {\n const targetFlagKey = property.key;\n if (!this.featureFlagsByKey) throw new InconclusiveMatchError('Feature flags not available for dependency evaluation');\n if (!('dependency_chain' in property)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' is missing required 'dependency_chain' field`);\n const dependencyChain = property.dependency_chain;\n if (!Array.isArray(dependencyChain)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' has an invalid 'dependency_chain' (expected array, got ${typeof dependencyChain})`);\n if (0 === dependencyChain.length) throw new InconclusiveMatchError(`Circular dependency detected for flag '${targetFlagKey}' (empty dependency chain)`);\n for (const depFlagKey of dependencyChain){\n if (!(depFlagKey in evaluationCache)) {\n const depFlag = this.featureFlagsByKey[depFlagKey];\n if (depFlag) if (depFlag.active) try {\n const depResult = await this.matchFeatureFlagProperties(depFlag, distinctId, properties, evaluationCache);\n evaluationCache[depFlagKey] = depResult;\n } catch (error) {\n throw new InconclusiveMatchError(`Error evaluating flag dependency '${depFlagKey}' for flag '${targetFlagKey}': ${error}`);\n }\n else evaluationCache[depFlagKey] = false;\n else throw new InconclusiveMatchError(`Missing flag dependency '${depFlagKey}' for flag '${targetFlagKey}'`);\n }\n const cachedResult = evaluationCache[depFlagKey];\n if (null == cachedResult) throw new InconclusiveMatchError(`Dependency '${depFlagKey}' could not be evaluated`);\n }\n const targetFlagValue = evaluationCache[targetFlagKey];\n return this.flagEvaluatesToExpectedValue(property.value, targetFlagValue);\n }\n flagEvaluatesToExpectedValue(expectedValue, flagValue) {\n if ('boolean' == typeof expectedValue) return expectedValue === flagValue || 'string' == typeof flagValue && '' !== flagValue && true === expectedValue;\n if ('string' == typeof expectedValue) return flagValue === expectedValue;\n return false;\n }\n async matchFeatureFlagProperties(flag, distinctId, properties, evaluationCache = {}) {\n const flagFilters = flag.filters || {};\n const flagConditions = flagFilters.groups || [];\n let isInconclusive = false;\n let result;\n for (const condition of flagConditions)try {\n if (await this.isConditionMatch(flag, distinctId, condition, properties, evaluationCache)) {\n const variantOverride = condition.variant;\n const flagVariants = flagFilters.multivariate?.variants || [];\n result = variantOverride && flagVariants.some((variant)=>variant.key === variantOverride) ? variantOverride : await this.getMatchingVariant(flag, distinctId) || true;\n break;\n }\n } catch (e) {\n if (e instanceof RequiresServerEvaluation) throw e;\n if (e instanceof InconclusiveMatchError) isInconclusive = true;\n else throw e;\n }\n if (void 0 !== result) return result;\n if (isInconclusive) throw new InconclusiveMatchError(\"Can't determine if feature flag is enabled or not with given properties\");\n return false;\n }\n async isConditionMatch(flag, distinctId, condition, properties, evaluationCache = {}) {\n const rolloutPercentage = condition.rollout_percentage;\n const warnFunction = (msg)=>{\n this.logMsgIfDebug(()=>console.warn(msg));\n };\n if ((condition.properties || []).length > 0) {\n for (const prop of condition.properties){\n const propertyType = prop.type;\n let matches = false;\n matches = 'cohort' === propertyType ? matchCohort(prop, properties, this.cohorts, this.debugMode) : 'flag' === propertyType ? await this.evaluateFlagDependency(prop, distinctId, properties, evaluationCache) : matchProperty(prop, properties, warnFunction);\n if (!matches) return false;\n }\n if (void 0 == rolloutPercentage) return true;\n }\n if (void 0 != rolloutPercentage && await _hash(flag.key, distinctId) > rolloutPercentage / 100.0) return false;\n return true;\n }\n async getMatchingVariant(flag, distinctId) {\n const hashValue = await _hash(flag.key, distinctId, 'variant');\n const matchingVariant = this.variantLookupTable(flag).find((variant)=>hashValue >= variant.valueMin && hashValue < variant.valueMax);\n if (matchingVariant) return matchingVariant.key;\n }\n variantLookupTable(flag) {\n const lookupTable = [];\n let valueMin = 0;\n let valueMax = 0;\n const flagFilters = flag.filters || {};\n const multivariates = flagFilters.multivariate?.variants || [];\n multivariates.forEach((variant)=>{\n valueMax = valueMin + variant.rollout_percentage / 100.0;\n lookupTable.push({\n valueMin,\n valueMax,\n key: variant.key\n });\n valueMin = valueMax;\n });\n return lookupTable;\n }\n updateFlagState(flagData) {\n this.featureFlags = flagData.flags;\n this.featureFlagsByKey = flagData.flags.reduce((acc, curr)=>(acc[curr.key] = curr, acc), {});\n this.groupTypeMapping = flagData.groupTypeMapping;\n this.cohorts = flagData.cohorts;\n this.loadedSuccessfullyOnce = true;\n }\n async loadFromCache(debugMessage) {\n if (!this.cacheProvider) return false;\n try {\n const cached = await this.cacheProvider.getFlagDefinitions();\n if (cached) {\n this.updateFlagState(cached);\n this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${debugMessage} (${cached.flags.length} flags)`));\n this.onLoad?.(this.featureFlags.length);\n return true;\n }\n return false;\n } catch (err) {\n this.onError?.(new Error(`Failed to load from cache: ${err}`));\n return false;\n }\n }\n async loadFeatureFlags(forceReload = false) {\n if (this.loadedSuccessfullyOnce && !forceReload) return;\n if (!forceReload && this.nextFetchAllowedAt && Date.now() < this.nextFetchAllowedAt) return void this.logMsgIfDebug(()=>console.debug('[FEATURE FLAGS] Skipping fetch, in backoff period'));\n if (!this.loadingPromise) this.loadingPromise = this._loadFeatureFlags().catch((err)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${err}`))).finally(()=>{\n this.loadingPromise = void 0;\n });\n return this.loadingPromise;\n }\n isLocalEvaluationReady() {\n return (this.loadedSuccessfullyOnce ?? false) && (this.featureFlags?.length ?? 0) > 0;\n }\n getPollingInterval() {\n if (!this.shouldBeginExponentialBackoff) return this.pollingInterval;\n return Math.min(SIXTY_SECONDS, this.pollingInterval * 2 ** this.backOffCount);\n }\n beginBackoff() {\n this.shouldBeginExponentialBackoff = true;\n this.backOffCount += 1;\n this.nextFetchAllowedAt = Date.now() + this.getPollingInterval();\n }\n clearBackoff() {\n this.shouldBeginExponentialBackoff = false;\n this.backOffCount = 0;\n this.nextFetchAllowedAt = void 0;\n }\n async _loadFeatureFlags() {\n if (this.poller) {\n clearTimeout(this.poller);\n this.poller = void 0;\n }\n this.poller = setTimeout(()=>this.loadFeatureFlags(true), this.getPollingInterval());\n try {\n let shouldFetch = true;\n if (this.cacheProvider) try {\n shouldFetch = await this.cacheProvider.shouldFetchFlagDefinitions();\n } catch (err) {\n this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${err}`));\n }\n if (!shouldFetch) {\n const loaded = await this.loadFromCache('Loaded flags from cache (skipped fetch)');\n if (loaded) return;\n if (this.loadedSuccessfullyOnce) return;\n }\n const res = await this._requestFeatureFlagDefinitions();\n if (!res) return;\n switch(res.status){\n case 304:\n this.logMsgIfDebug(()=>console.debug('[FEATURE FLAGS] Flags not modified (304), using cached data'));\n this.flagsEtag = res.headers?.get('ETag') ?? this.flagsEtag;\n this.loadedSuccessfullyOnce = true;\n this.clearBackoff();\n return;\n case 401:\n this.beginBackoff();\n throw new ClientError(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);\n case 402:\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n this.featureFlags = [];\n this.featureFlagsByKey = {};\n this.groupTypeMapping = {};\n this.cohorts = {};\n return;\n case 403:\n this.beginBackoff();\n throw new ClientError(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);\n case 429:\n this.beginBackoff();\n throw new ClientError(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);\n case 200:\n {\n const responseJson = await res.json() ?? {};\n if (!('flags' in responseJson)) return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(responseJson)}`));\n this.flagsEtag = res.headers?.get('ETag') ?? void 0;\n const flagData = {\n flags: responseJson.flags ?? [],\n groupTypeMapping: responseJson.group_type_mapping || {},\n cohorts: responseJson.cohorts || {}\n };\n this.updateFlagState(flagData);\n this.clearBackoff();\n if (this.cacheProvider && shouldFetch) try {\n await this.cacheProvider.onFlagDefinitionsReceived(flagData);\n } catch (err) {\n this.onError?.(new Error(`Failed to store in cache: ${err}`));\n }\n this.onLoad?.(this.featureFlags.length);\n break;\n }\n default:\n return;\n }\n } catch (err) {\n if (err instanceof ClientError) this.onError?.(err);\n }\n }\n getPersonalApiKeyRequestOptions(method = 'GET', etag) {\n const headers = {\n ...this.customHeaders,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.personalApiKey}`\n };\n if (etag) headers['If-None-Match'] = etag;\n return {\n method,\n headers\n };\n }\n _requestFeatureFlagDefinitions() {\n const url = `${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`;\n const options = this.getPersonalApiKeyRequestOptions('GET', this.flagsEtag);\n let abortTimeout = null;\n if (this.timeout && 'number' == typeof this.timeout) {\n const controller = new AbortController();\n abortTimeout = safeSetTimeout(()=>{\n controller.abort();\n }, this.timeout);\n options.signal = controller.signal;\n }\n try {\n const fetch1 = this.fetch;\n return fetch1(url, options);\n } finally{\n clearTimeout(abortTimeout);\n }\n }\n async stopPoller(timeoutMs = 30000) {\n clearTimeout(this.poller);\n if (this.cacheProvider) try {\n const shutdownResult = this.cacheProvider.shutdown();\n if (shutdownResult instanceof Promise) await Promise.race([\n shutdownResult,\n new Promise((_, reject)=>setTimeout(()=>reject(new Error(`Cache shutdown timeout after ${timeoutMs}ms`)), timeoutMs))\n ]);\n } catch (err) {\n this.onError?.(new Error(`Error during cache shutdown: ${err}`));\n }\n }\n}\nasync function _hash(key, distinctId, salt = '') {\n const hashString = await hashSHA1(`${key}.${distinctId}${salt}`);\n return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE;\n}\nfunction matchProperty(property, propertyValues, warnFunction) {\n const key = property.key;\n const value = property.value;\n const operator = property.operator || 'exact';\n if (key in propertyValues) {\n if ('is_not_set' === operator) throw new InconclusiveMatchError(\"Operator is_not_set is not supported\");\n } else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`);\n const overrideValue = propertyValues[key];\n if (null == overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {\n if (warnFunction) warnFunction(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`);\n return false;\n }\n function computeExactMatch(value, overrideValue) {\n if (Array.isArray(value)) return value.map((val)=>String(val).toLowerCase()).includes(String(overrideValue).toLowerCase());\n return String(value).toLowerCase() === String(overrideValue).toLowerCase();\n }\n function compare(lhs, rhs, operator) {\n if ('gt' === operator) return lhs > rhs;\n if ('gte' === operator) return lhs >= rhs;\n if ('lt' === operator) return lhs < rhs;\n if ('lte' === operator) return lhs <= rhs;\n throw new Error(`Invalid operator: ${operator}`);\n }\n switch(operator){\n case 'exact':\n return computeExactMatch(value, overrideValue);\n case 'is_not':\n return !computeExactMatch(value, overrideValue);\n case 'is_set':\n return key in propertyValues;\n case 'icontains':\n return String(overrideValue).toLowerCase().includes(String(value).toLowerCase());\n case 'not_icontains':\n return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase());\n case 'regex':\n return isValidRegex(String(value)) && null !== String(overrideValue).match(String(value));\n case 'not_regex':\n return isValidRegex(String(value)) && null === String(overrideValue).match(String(value));\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n {\n let parsedValue = 'number' == typeof value ? value : null;\n if ('string' == typeof value) try {\n parsedValue = parseFloat(value);\n } catch (err) {}\n if (null == parsedValue || null == overrideValue) return compare(String(overrideValue), String(value), operator);\n if ('string' == typeof overrideValue) return compare(overrideValue, String(value), operator);\n return compare(overrideValue, parsedValue, operator);\n }\n case 'is_date_after':\n case 'is_date_before':\n {\n if ('boolean' == typeof value) throw new InconclusiveMatchError(\"Date operations cannot be performed on boolean values\");\n let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));\n if (null == parsedDate) parsedDate = convertToDateTime(value);\n if (null == parsedDate) throw new InconclusiveMatchError(`Invalid date: ${value}`);\n const overrideDate = convertToDateTime(overrideValue);\n if ([\n 'is_date_before'\n ].includes(operator)) return overrideDate < parsedDate;\n return overrideDate > parsedDate;\n }\n default:\n throw new InconclusiveMatchError(`Unknown operator: ${operator}`);\n }\n}\nfunction checkCohortExists(cohortId, cohortProperties) {\n if (!(cohortId in cohortProperties)) throw new RequiresServerEvaluation(`cohort ${cohortId} not found in local cohorts - likely a static cohort that requires server evaluation`);\n}\nfunction matchCohort(property, propertyValues, cohortProperties, debugMode = false) {\n const cohortId = String(property.value);\n checkCohortExists(cohortId, cohortProperties);\n const propertyGroup = cohortProperties[cohortId];\n return matchPropertyGroup(propertyGroup, propertyValues, cohortProperties, debugMode);\n}\nfunction matchPropertyGroup(propertyGroup, propertyValues, cohortProperties, debugMode = false) {\n if (!propertyGroup) return true;\n const propertyGroupType = propertyGroup.type;\n const properties = propertyGroup.values;\n if (!properties || 0 === properties.length) return true;\n let errorMatchingLocally = false;\n if ('values' in properties[0]) {\n for (const prop of properties)try {\n const matches = matchPropertyGroup(prop, propertyValues, cohortProperties, debugMode);\n if ('AND' === propertyGroupType) {\n if (!matches) return false;\n } else if (matches) return true;\n } catch (err) {\n if (err instanceof RequiresServerEvaluation) throw err;\n if (err instanceof InconclusiveMatchError) {\n if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`);\n errorMatchingLocally = true;\n } else throw err;\n }\n if (errorMatchingLocally) throw new InconclusiveMatchError(\"Can't match cohort without a given cohort property value\");\n return 'AND' === propertyGroupType;\n }\n for (const prop of properties)try {\n let matches;\n if ('cohort' === prop.type) matches = matchCohort(prop, propertyValues, cohortProperties, debugMode);\n else if ('flag' === prop.type) {\n if (debugMode) console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${prop.key || 'unknown'}'`);\n continue;\n } else matches = matchProperty(prop, propertyValues);\n const negation = prop.negation || false;\n if ('AND' === propertyGroupType) {\n if (!matches && !negation) return false;\n if (matches && negation) return false;\n } else {\n if (matches && !negation) return true;\n if (!matches && negation) return true;\n }\n } catch (err) {\n if (err instanceof RequiresServerEvaluation) throw err;\n if (err instanceof InconclusiveMatchError) {\n if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`);\n errorMatchingLocally = true;\n } else throw err;\n }\n if (errorMatchingLocally) throw new InconclusiveMatchError(\"can't match cohort without a given cohort property value\");\n return 'AND' === propertyGroupType;\n}\nfunction isValidRegex(regex) {\n try {\n new RegExp(regex);\n return true;\n } catch (err) {\n return false;\n }\n}\nfunction convertToDateTime(value) {\n if (value instanceof Date) return value;\n if ('string' == typeof value || 'number' == typeof value) {\n const date = new Date(value);\n if (!isNaN(date.valueOf())) return date;\n throw new InconclusiveMatchError(`${value} is in an invalid date format`);\n }\n throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`);\n}\nfunction relativeDateParseForFeatureFlagMatching(value) {\n const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/;\n const match = value.match(regex);\n const parsedDt = new Date(new Date().toISOString());\n if (!match) return null;\n {\n if (!match.groups) return null;\n const number = parseInt(match.groups['number']);\n if (number >= 10000) return null;\n const interval = match.groups['interval'];\n if ('h' == interval) parsedDt.setUTCHours(parsedDt.getUTCHours() - number);\n else if ('d' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - number);\n else if ('w' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - 7 * number);\n else if ('m' == interval) parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number);\n else {\n if ('y' != interval) return null;\n parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number);\n }\n return parsedDt;\n }\n}\nexport { ClientError, FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation, matchProperty, relativeDateParseForFeatureFlagMatching };\n","class PostHogMemoryStorage {\n getProperty(key) {\n return this._memoryStorage[key];\n }\n setProperty(key, value) {\n this._memoryStorage[key] = null !== value ? value : void 0;\n }\n constructor(){\n this._memoryStorage = {};\n }\n}\nexport { PostHogMemoryStorage };\n","import { version } from \"./version.mjs\";\nimport { PostHogCoreStateless, getFeatureFlagValue, isBlockedUA, isPlainObject, safeSetTimeout, uuidv7 } from \"@posthog/core\";\nimport { FeatureFlagError } from \"./types.mjs\";\nimport { FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation } from \"./extensions/feature-flags/feature-flags.mjs\";\nimport error_tracking from \"./extensions/error-tracking/index.mjs\";\nimport { PostHogMemoryStorage } from \"./storage-memory.mjs\";\nconst MINIMUM_POLLING_INTERVAL = 100;\nconst THIRTY_SECONDS = 30000;\nconst MAX_CACHE_SIZE = 50000;\nclass PostHogBackendClient extends PostHogCoreStateless {\n constructor(apiKey, options = {}){\n super(apiKey, options), this._memoryStorage = new PostHogMemoryStorage();\n this.options = options;\n this.context = this.initializeContext();\n this.options.featureFlagsPollingInterval = 'number' == typeof options.featureFlagsPollingInterval ? Math.max(options.featureFlagsPollingInterval, MINIMUM_POLLING_INTERVAL) : THIRTY_SECONDS;\n if (options.personalApiKey) {\n if (options.personalApiKey.includes('phc_')) throw new Error('Your Personal API key is invalid. These keys are prefixed with \"phx_\" and can be created in PostHog project settings.');\n const shouldEnableLocalEvaluation = false !== options.enableLocalEvaluation;\n if (shouldEnableLocalEvaluation) this.featureFlagsPoller = new FeatureFlagsPoller({\n pollingInterval: this.options.featureFlagsPollingInterval,\n personalApiKey: options.personalApiKey,\n projectApiKey: apiKey,\n timeout: options.requestTimeout ?? 10000,\n host: this.host,\n fetch: options.fetch,\n onError: (err)=>{\n this._events.emit('error', err);\n },\n onLoad: (count)=>{\n this._events.emit('localEvaluationFlagsLoaded', count);\n },\n customHeaders: this.getCustomHeaders(),\n cacheProvider: options.flagDefinitionCacheProvider\n });\n }\n this.errorTracking = new error_tracking(this, options, this._logger);\n this.distinctIdHasSentFlagCalls = {};\n this.maxCacheSize = options.maxCacheSize || MAX_CACHE_SIZE;\n }\n getPersistedProperty(key) {\n return this._memoryStorage.getProperty(key);\n }\n setPersistedProperty(key, value) {\n return this._memoryStorage.setProperty(key, value);\n }\n fetch(url, options) {\n return this.options.fetch ? this.options.fetch(url, options) : fetch(url, options);\n }\n getLibraryVersion() {\n return version;\n }\n getCustomUserAgent() {\n return `${this.getLibraryId()}/${this.getLibraryVersion()}`;\n }\n enable() {\n return super.optIn();\n }\n disable() {\n return super.optOut();\n }\n debug(enabled = true) {\n super.debug(enabled);\n this.featureFlagsPoller?.debug(enabled);\n }\n capture(props) {\n if ('string' == typeof props) this._logger.warn('Called capture() with a string as the first argument when an object was expected.');\n this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStateless(distinctId, event, properties, {\n timestamp: options.timestamp,\n disableGeoip: options.disableGeoip,\n uuid: options.uuid\n })).catch((err)=>{\n if (err) console.error(err);\n }));\n }\n async captureImmediate(props) {\n if ('string' == typeof props) this._logger.warn('Called captureImmediate() with a string as the first argument when an object was expected.');\n return this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStatelessImmediate(distinctId, event, properties, {\n timestamp: options.timestamp,\n disableGeoip: options.disableGeoip,\n uuid: options.uuid\n })).catch((err)=>{\n if (err) console.error(err);\n }));\n }\n identify({ distinctId, properties = {}, disableGeoip }) {\n const { $set, $set_once, $anon_distinct_id, ...rest } = properties;\n const setProps = $set || rest;\n const setOnceProps = $set_once || {};\n const eventProperties = {\n $set: setProps,\n $set_once: setOnceProps,\n $anon_distinct_id: $anon_distinct_id ?? void 0\n };\n super.identifyStateless(distinctId, eventProperties, {\n disableGeoip\n });\n }\n async identifyImmediate({ distinctId, properties = {}, disableGeoip }) {\n const { $set, $set_once, $anon_distinct_id, ...rest } = properties;\n const setProps = $set || rest;\n const setOnceProps = $set_once || {};\n const eventProperties = {\n $set: setProps,\n $set_once: setOnceProps,\n $anon_distinct_id: $anon_distinct_id ?? void 0\n };\n super.identifyStatelessImmediate(distinctId, eventProperties, {\n disableGeoip\n });\n }\n alias(data) {\n super.aliasStateless(data.alias, data.distinctId, void 0, {\n disableGeoip: data.disableGeoip\n });\n }\n async aliasImmediate(data) {\n await super.aliasStatelessImmediate(data.alias, data.distinctId, void 0, {\n disableGeoip: data.disableGeoip\n });\n }\n isLocalEvaluationReady() {\n return this.featureFlagsPoller?.isLocalEvaluationReady() ?? false;\n }\n async waitForLocalEvaluationReady(timeoutMs = THIRTY_SECONDS) {\n if (this.isLocalEvaluationReady()) return true;\n if (void 0 === this.featureFlagsPoller) return false;\n return new Promise((resolve)=>{\n const timeout = setTimeout(()=>{\n cleanup();\n resolve(false);\n }, timeoutMs);\n const cleanup = this._events.on('localEvaluationFlagsLoaded', (count)=>{\n clearTimeout(timeout);\n cleanup();\n resolve(count > 0);\n });\n });\n }\n async getFeatureFlag(key, distinctId, options) {\n const { groups, disableGeoip } = options || {};\n let { onlyEvaluateLocally, sendFeatureFlagEvents, personProperties, groupProperties } = options || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = false;\n if (void 0 == sendFeatureFlagEvents) sendFeatureFlagEvents = this.options.sendFeatureFlagEvent ?? true;\n let response = await this.featureFlagsPoller?.getFeatureFlag(key, distinctId, groups, personProperties, groupProperties);\n const flagWasLocallyEvaluated = void 0 !== response;\n let requestId;\n let evaluatedAt;\n let flagDetail;\n let featureFlagError;\n if (!flagWasLocallyEvaluated && !onlyEvaluateLocally) {\n const flagsResponse = await super.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (void 0 === flagsResponse) featureFlagError = FeatureFlagError.UNKNOWN_ERROR;\n else {\n requestId = flagsResponse.requestId;\n evaluatedAt = flagsResponse.evaluatedAt;\n const errors = [];\n if (flagsResponse.errorsWhileComputingFlags) errors.push(FeatureFlagError.ERRORS_WHILE_COMPUTING);\n if (flagsResponse.quotaLimited?.includes('feature_flags')) errors.push(FeatureFlagError.QUOTA_LIMITED);\n flagDetail = flagsResponse.flags[key];\n if (void 0 === flagDetail) errors.push(FeatureFlagError.FLAG_MISSING);\n if (errors.length > 0) featureFlagError = errors.join(',');\n response = getFeatureFlagValue(flagDetail);\n }\n }\n const featureFlagReportedKey = `${key}_${response}`;\n if (sendFeatureFlagEvents && (!(distinctId in this.distinctIdHasSentFlagCalls) || !this.distinctIdHasSentFlagCalls[distinctId].includes(featureFlagReportedKey))) {\n if (Object.keys(this.distinctIdHasSentFlagCalls).length >= this.maxCacheSize) this.distinctIdHasSentFlagCalls = {};\n if (Array.isArray(this.distinctIdHasSentFlagCalls[distinctId])) this.distinctIdHasSentFlagCalls[distinctId].push(featureFlagReportedKey);\n else this.distinctIdHasSentFlagCalls[distinctId] = [\n featureFlagReportedKey\n ];\n const properties = {\n $feature_flag: key,\n $feature_flag_response: response,\n $feature_flag_id: flagDetail?.metadata?.id,\n $feature_flag_version: flagDetail?.metadata?.version,\n $feature_flag_reason: flagDetail?.reason?.description ?? flagDetail?.reason?.code,\n locally_evaluated: flagWasLocallyEvaluated,\n [`$feature/${key}`]: response,\n $feature_flag_request_id: requestId,\n $feature_flag_evaluated_at: evaluatedAt\n };\n if (featureFlagError) properties.$feature_flag_error = featureFlagError;\n this.capture({\n distinctId,\n event: '$feature_flag_called',\n properties,\n groups,\n disableGeoip\n });\n }\n return response;\n }\n async getFeatureFlagPayload(key, distinctId, matchValue, options) {\n const { groups, disableGeoip } = options || {};\n let { onlyEvaluateLocally, personProperties, groupProperties } = options || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n let response;\n const localEvaluationEnabled = void 0 !== this.featureFlagsPoller;\n if (localEvaluationEnabled) {\n await this.featureFlagsPoller?.loadFeatureFlags();\n const flag = this.featureFlagsPoller?.featureFlagsByKey[key];\n if (flag) try {\n const result = await this.featureFlagsPoller?.computeFlagAndPayloadLocally(flag, distinctId, groups, personProperties, groupProperties, matchValue);\n if (result) {\n matchValue = result.value;\n response = result.payload;\n }\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this._logger?.info(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`);\n else throw e;\n }\n }\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = false;\n const payloadWasLocallyEvaluated = void 0 !== response;\n if (!payloadWasLocallyEvaluated && !onlyEvaluateLocally) response = await super.getFeatureFlagPayloadStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);\n return response;\n }\n async getRemoteConfigPayload(flagKey) {\n if (!this.options.personalApiKey) throw new Error('Personal API key is required for remote config payload decryption');\n const response = await this._requestRemoteConfigPayload(flagKey);\n if (!response) return;\n const parsed = await response.json();\n if ('string' == typeof parsed) try {\n return JSON.parse(parsed);\n } catch (e) {}\n return parsed;\n }\n async isFeatureEnabled(key, distinctId, options) {\n const feat = await this.getFeatureFlag(key, distinctId, options);\n if (void 0 === feat) return;\n return !!feat || false;\n }\n async getAllFlags(distinctId, options) {\n const response = await this.getAllFlagsAndPayloads(distinctId, options);\n return response.featureFlags || {};\n }\n async getAllFlagsAndPayloads(distinctId, options) {\n const { groups, disableGeoip, flagKeys } = options || {};\n let { onlyEvaluateLocally, personProperties, groupProperties } = options || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = false;\n const localEvaluationResult = await this.featureFlagsPoller?.getAllFlagsAndPayloads(distinctId, groups, personProperties, groupProperties, flagKeys);\n let featureFlags = {};\n let featureFlagPayloads = {};\n let fallbackToFlags = true;\n if (localEvaluationResult) {\n featureFlags = localEvaluationResult.response;\n featureFlagPayloads = localEvaluationResult.payloads;\n fallbackToFlags = localEvaluationResult.fallbackToFlags;\n }\n if (fallbackToFlags && !onlyEvaluateLocally) {\n const remoteEvaluationResult = await super.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeys);\n featureFlags = {\n ...featureFlags,\n ...remoteEvaluationResult.flags || {}\n };\n featureFlagPayloads = {\n ...featureFlagPayloads,\n ...remoteEvaluationResult.payloads || {}\n };\n }\n return {\n featureFlags,\n featureFlagPayloads\n };\n }\n groupIdentify({ groupType, groupKey, properties, distinctId, disableGeoip }) {\n super.groupIdentifyStateless(groupType, groupKey, properties, {\n disableGeoip\n }, distinctId);\n }\n async reloadFeatureFlags() {\n await this.featureFlagsPoller?.loadFeatureFlags(true);\n }\n withContext(data, fn, options) {\n if (!this.context) return fn();\n return this.context.run(data, fn, options);\n }\n getContext() {\n return this.context?.get();\n }\n async _shutdown(shutdownTimeoutMs) {\n this.featureFlagsPoller?.stopPoller(shutdownTimeoutMs);\n this.errorTracking.shutdown();\n return super._shutdown(shutdownTimeoutMs);\n }\n async _requestRemoteConfigPayload(flagKey) {\n if (!this.options.personalApiKey) return;\n const url = `${this.host}/api/projects/@current/feature_flags/${flagKey}/remote_config?token=${encodeURIComponent(this.apiKey)}`;\n const options = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.options.personalApiKey}`\n }\n };\n let abortTimeout = null;\n if (this.options.requestTimeout && 'number' == typeof this.options.requestTimeout) {\n const controller = new AbortController();\n abortTimeout = safeSetTimeout(()=>{\n controller.abort();\n }, this.options.requestTimeout);\n options.signal = controller.signal;\n }\n try {\n return await this.fetch(url, options);\n } catch (error) {\n this._events.emit('error', error);\n return;\n } finally{\n if (abortTimeout) clearTimeout(abortTimeout);\n }\n }\n extractPropertiesFromEvent(eventProperties, groups) {\n if (!eventProperties) return {\n personProperties: {},\n groupProperties: {}\n };\n const personProperties = {};\n const groupProperties = {};\n for (const [key, value] of Object.entries(eventProperties))if (isPlainObject(value) && groups && key in groups) {\n const groupProps = {};\n for (const [groupKey, groupValue] of Object.entries(value))groupProps[String(groupKey)] = String(groupValue);\n groupProperties[String(key)] = groupProps;\n } else personProperties[String(key)] = String(value);\n return {\n personProperties,\n groupProperties\n };\n }\n async getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions) {\n const finalPersonProperties = sendFeatureFlagsOptions?.personProperties || {};\n const finalGroupProperties = sendFeatureFlagsOptions?.groupProperties || {};\n const flagKeys = sendFeatureFlagsOptions?.flagKeys;\n const onlyEvaluateLocally = sendFeatureFlagsOptions?.onlyEvaluateLocally ?? false;\n if (onlyEvaluateLocally) if (!((this.featureFlagsPoller?.featureFlags?.length || 0) > 0)) return {};\n else {\n const groupsWithStringValues = {};\n for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);\n return await this.getAllFlags(distinctId, {\n groups: groupsWithStringValues,\n personProperties: finalPersonProperties,\n groupProperties: finalGroupProperties,\n disableGeoip,\n onlyEvaluateLocally: true,\n flagKeys\n });\n }\n if ((this.featureFlagsPoller?.featureFlags?.length || 0) > 0) {\n const groupsWithStringValues = {};\n for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);\n return await this.getAllFlags(distinctId, {\n groups: groupsWithStringValues,\n personProperties: finalPersonProperties,\n groupProperties: finalGroupProperties,\n disableGeoip,\n onlyEvaluateLocally: true,\n flagKeys\n });\n }\n return (await super.getFeatureFlagsStateless(distinctId, groups, finalPersonProperties, finalGroupProperties, disableGeoip)).flags;\n }\n addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties) {\n const allPersonProperties = {\n distinct_id: distinctId,\n ...personProperties || {}\n };\n const allGroupProperties = {};\n if (groups) for (const groupName of Object.keys(groups))allGroupProperties[groupName] = {\n $group_key: groups[groupName],\n ...groupProperties?.[groupName] || {}\n };\n return {\n allPersonProperties,\n allGroupProperties\n };\n }\n captureException(error, distinctId, additionalProperties) {\n const syntheticException = new Error('PostHog syntheticException');\n this.addPendingPromise(error_tracking.buildEventMessage(error, {\n syntheticException\n }, distinctId, additionalProperties).then((msg)=>this.capture(msg)));\n }\n async captureExceptionImmediate(error, distinctId, additionalProperties) {\n const syntheticException = new Error('PostHog syntheticException');\n this.addPendingPromise(error_tracking.buildEventMessage(error, {\n syntheticException\n }, distinctId, additionalProperties).then((msg)=>this.captureImmediate(msg)));\n }\n async prepareEventMessage(props) {\n const { distinctId, event, properties, groups, sendFeatureFlags, timestamp, disableGeoip, uuid } = props;\n const contextData = this.context?.get();\n let mergedDistinctId = distinctId || contextData?.distinctId;\n const mergedProperties = {\n ...contextData?.properties || {},\n ...properties || {}\n };\n if (!mergedDistinctId) {\n mergedDistinctId = uuidv7();\n mergedProperties.$process_person_profile = false;\n }\n if (contextData?.sessionId && !mergedProperties.$session_id) mergedProperties.$session_id = contextData.sessionId;\n const eventMessage = this._runBeforeSend({\n distinctId: mergedDistinctId,\n event,\n properties: mergedProperties,\n groups,\n sendFeatureFlags,\n timestamp,\n disableGeoip,\n uuid\n });\n if (!eventMessage) return Promise.reject(null);\n const eventProperties = await Promise.resolve().then(async ()=>{\n if (sendFeatureFlags) {\n const sendFeatureFlagsOptions = 'object' == typeof sendFeatureFlags ? sendFeatureFlags : void 0;\n return await this.getFeatureFlagsForEvent(eventMessage.distinctId, groups, disableGeoip, sendFeatureFlagsOptions);\n }\n eventMessage.event;\n return {};\n }).then((flags)=>{\n const additionalProperties = {};\n if (flags) for (const [feature, variant] of Object.entries(flags))additionalProperties[`$feature/${feature}`] = variant;\n const activeFlags = Object.keys(flags || {}).filter((flag)=>flags?.[flag] !== false).sort();\n if (activeFlags.length > 0) additionalProperties['$active_feature_flags'] = activeFlags;\n return additionalProperties;\n }).catch(()=>({})).then((additionalProperties)=>{\n const props = {\n ...additionalProperties,\n ...eventMessage.properties || {},\n $groups: eventMessage.groups || groups\n };\n return props;\n });\n if ('$pageview' === eventMessage.event && this.options.__preview_capture_bot_pageviews && 'string' == typeof eventProperties.$raw_user_agent) {\n if (isBlockedUA(eventProperties.$raw_user_agent, this.options.custom_blocked_useragents || [])) {\n eventMessage.event = '$bot_pageview';\n eventProperties.$browser_type = 'bot';\n }\n }\n return {\n distinctId: eventMessage.distinctId,\n event: eventMessage.event,\n properties: eventProperties,\n options: {\n timestamp: eventMessage.timestamp,\n disableGeoip: eventMessage.disableGeoip,\n uuid: eventMessage.uuid\n }\n };\n }\n _runBeforeSend(eventMessage) {\n const beforeSend = this.options.before_send;\n if (!beforeSend) return eventMessage;\n const fns = Array.isArray(beforeSend) ? beforeSend : [\n beforeSend\n ];\n let result = eventMessage;\n for (const fn of fns){\n result = fn(result);\n if (!result) {\n this._logger.info(`Event '${eventMessage.event}' was rejected in beforeSend function`);\n return null;\n }\n if (!result.properties || 0 === Object.keys(result.properties).length) {\n const message = `Event '${result.event}' has no properties after beforeSend function, this is likely an error.`;\n this._logger.warn(message);\n }\n }\n return result;\n }\n}\nexport { PostHogBackendClient };\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nclass PostHogContext {\n constructor(){\n this.storage = new AsyncLocalStorage();\n }\n get() {\n return this.storage.getStore();\n }\n run(context, fn, options) {\n const fresh = options?.fresh === true;\n if (fresh) return this.storage.run(context, fn);\n {\n const currentContext = this.get() || {};\n const mergedContext = {\n distinctId: context.distinctId ?? currentContext.distinctId,\n sessionId: context.sessionId ?? currentContext.sessionId,\n properties: {\n ...currentContext.properties || {},\n ...context.properties || {}\n }\n };\n return this.storage.run(mergedContext, fn);\n }\n }\n}\nexport { PostHogContext };\n","const NAME = 'posthog-node';\nfunction createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [\n 'error'\n], sendExceptionsToPostHog = true } = {}) {\n return (event)=>{\n const shouldProcessLevel = '*' === severityAllowList || severityAllowList.includes(event.level);\n if (!shouldProcessLevel) return event;\n if (!event.tags) event.tags = {};\n const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];\n if (void 0 === userId) return event;\n const uiHost = _posthog.options.host ?? 'https://us.i.posthog.com';\n const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();\n event.tags['PostHog Person URL'] = personUrl;\n const exceptions = event.exception?.values || [];\n const exceptionList = exceptions.map((exception)=>({\n ...exception,\n stacktrace: exception.stacktrace ? {\n ...exception.stacktrace,\n type: 'raw',\n frames: (exception.stacktrace.frames || []).map((frame)=>({\n ...frame,\n platform: \"node:javascript\"\n }))\n } : void 0\n }));\n const properties = {\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_level: event.level,\n $exception_list: exceptionList,\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags\n };\n if (organization && projectId) properties['$sentry_url'] = (prefix || 'https://sentry.io/organizations/') + organization + '/issues/?project=' + projectId + '&query=' + event.event_id;\n if (sendExceptionsToPostHog) _posthog.capture({\n event: '$exception',\n distinctId: userId,\n properties\n });\n return event;\n };\n}\nfunction sentryIntegration(_posthog, options) {\n const processor = createEventProcessor(_posthog, options);\n return {\n name: NAME,\n processEvent (event) {\n return processor(event);\n }\n };\n}\nclass PostHogSentryIntegration {\n static #_ = this.POSTHOG_ID_TAG = 'posthog_distinct_id';\n constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog){\n this.name = NAME;\n this.name = NAME;\n this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {\n const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;\n addGlobalEventProcessor(createEventProcessor(_posthog, {\n organization,\n projectId,\n prefix,\n severityAllowList,\n sendExceptionsToPostHog: sendExceptionsToPostHog ?? true\n }));\n };\n }\n}\nexport { PostHogSentryIntegration, createEventProcessor, sentryIntegration };\n","import error_tracking from \"./error-tracking/index.mjs\";\nfunction setupExpressErrorHandler(_posthog, app) {\n app.use(posthogErrorHandler(_posthog));\n}\nfunction posthogErrorHandler(posthog) {\n return (error, req, res, next)=>{\n const sessionId = req.headers['x-posthog-session-id'];\n const distinctId = req.headers['x-posthog-distinct-id'];\n const syntheticException = new Error('Synthetic exception');\n const hint = {\n mechanism: {\n type: 'middleware',\n handled: false\n },\n syntheticException\n };\n posthog.addPendingPromise(error_tracking.buildEventMessage(error, hint, distinctId, {\n $session_id: sessionId,\n $current_url: req.url,\n $request_method: req.method,\n $request_path: req.path,\n $user_agent: req.headers['user-agent'],\n $response_status_code: res.statusCode,\n $ip: req.headers['x-forwarded-for'] || req?.socket?.remoteAddress\n }).then((msg)=>{\n posthog.capture(msg);\n }));\n next(error);\n };\n}\nexport { setupExpressErrorHandler };\n","export * from \"./extensions/sentry-integration.mjs\";\nexport * from \"./extensions/express.mjs\";\nexport * from \"./types.mjs\";\n","import { createModulerModifier } from \"../extensions/error-tracking/modifiers/module.node.mjs\";\nimport { addSourceContext } from \"../extensions/error-tracking/modifiers/context-lines.node.mjs\";\nimport error_tracking from \"../extensions/error-tracking/index.mjs\";\nimport { PostHogBackendClient } from \"../client.mjs\";\nimport { ErrorTracking } from \"@posthog/core\";\nimport { PostHogContext } from \"../extensions/context/context.mjs\";\nexport * from \"../exports.mjs\";\nerror_tracking.errorPropertiesBuilder = new ErrorTracking.ErrorPropertiesBuilder([\n new ErrorTracking.EventCoercer(),\n new ErrorTracking.ErrorCoercer(),\n new ErrorTracking.ObjectCoercer(),\n new ErrorTracking.StringCoercer(),\n new ErrorTracking.PrimitiveCoercer()\n], ErrorTracking.createStackParser(\"node:javascript\", ErrorTracking.nodeStackLineParser), [\n createModulerModifier(),\n addSourceContext\n]);\nclass PostHog extends PostHogBackendClient {\n getLibraryId() {\n return 'posthog-node';\n }\n initializeContext() {\n return new PostHogContext();\n }\n}\nexport { PostHog };\n","/**\n * EventSubscriber - Standard base class for building custom subscribers\n *\n * This is the recommended base class for creating custom events subscribers.\n * It provides production-ready features out of the box:\n *\n * **Built-in Features:**\n * - **Error Handling**: Automatic error catching with customizable handlers\n * - **Pending Request Tracking**: Ensures all requests complete during shutdown\n * - **Graceful Shutdown**: Drains pending requests before closing\n * - **Enable/Disable**: Runtime control to turn subscriber on/off\n * - **Normalized Payload**: Consistent event structure across all event types\n *\n * **When to use:**\n * - Building custom subscribers for any platform\n * - Production deployments requiring reliability\n * - Need graceful shutdown and error handling\n *\n * @example Basic usage\n * ```typescript\n * import { EventSubscriber, EventPayload } from 'autotel-subscribers';\n *\n * class SnowflakeSubscriber extends EventSubscriber {\n * name = 'SnowflakeSubscriber';\n * version = '1.0.0';\n *\n * protected async sendToDestination(payload: EventPayload): Promise<void> {\n * await snowflakeClient.execute(\n * `INSERT INTO events VALUES (?, ?, ?)`,\n * [payload.type, payload.name, JSON.stringify(payload.attributes)]\n * );\n * }\n * }\n * ```\n *\n * @example With buffering\n * ```typescript\n * class BufferedSubscriber extends EventSubscriber {\n * name = 'BufferedSubscriber';\n * private buffer: EventPayload[] = [];\n *\n * protected async sendToDestination(payload: EventPayload): Promise<void> {\n * this.buffer.push(payload);\n *\n * if (this.buffer.length >= 100) {\n * await this.flush();\n * }\n * }\n *\n * async shutdown(): Promise<void> {\n * await super.shutdown(); // Drain pending requests first\n * await this.flush(); // Then flush buffer\n * }\n *\n * private async flush(): Promise<void> {\n * if (this.buffer.length === 0) return;\n *\n * const batch = [...this.buffer];\n * this.buffer = [];\n *\n * await apiClient.sendBatch(batch);\n * }\n * }\n * ```\n */\n\nimport type {\n EventSubscriber as IEventSubscriber,\n EventAttributes,\n EventAttributesInput,\n FunnelStatus,\n OutcomeStatus,\n} from 'autotel/event-subscriber';\n\n// Re-export types for convenience\n\n\n/**\n * Payload sent to destination\n */\nexport interface EventPayload {\n /** Event type: 'event', 'funnel', 'outcome', or 'value' */\n type: 'event' | 'funnel' | 'outcome' | 'value';\n\n /** Event name or metric name */\n name: string;\n\n /** Optional attributes */\n attributes?: EventAttributes;\n\n /** For funnel events: funnel name */\n funnel?: string;\n\n /** For funnel events: step status (from FunnelStatus enum) */\n step?: FunnelStatus | string;\n\n /** For funnel events: custom step name (from trackFunnelProgression) */\n stepName?: string;\n\n /** For funnel events: numeric position in funnel */\n stepNumber?: number;\n\n /** For outcome events: operation name */\n operation?: string;\n\n /** For outcome events: outcome status */\n outcome?: OutcomeStatus;\n\n /** For value events: numeric value */\n value?: number;\n\n /** Timestamp (ISO 8601) */\n timestamp: string;\n}\n\n/**\n * Standard base class for building custom events subscribers\n *\n * **What it provides:**\n * - Consistent payload structure (normalized across all event types)\n * - Enable/disable flag (runtime control)\n * - Automatic error handling (with customizable error handlers)\n * - Pending requests tracking (ensures no lost events during shutdown)\n * - Graceful shutdown (drains pending requests before closing)\n *\n * **Usage:**\n * Extend this class and implement `sendToDestination()`. All other methods\n * (trackEvent, trackFunnelStep, trackOutcome, trackValue, shutdown) are handled automatically.\n *\n * For high-throughput streaming platforms (Kafka, Kinesis, Pub/Sub), use `StreamingEventSubscriber` instead.\n */\nexport abstract class EventSubscriber implements IEventSubscriber {\n /**\n * Subscriber name (required for debugging)\n */\n abstract readonly name: string;\n\n /**\n * Subscriber version (optional)\n */\n readonly version?: string;\n\n /**\n * Enable/disable the subscriber (default: true)\n */\n protected enabled: boolean = true;\n\n /**\n * Track pending requests for graceful shutdown\n */\n private pendingRequests: Set<Promise<void>> = new Set();\n\n /**\n * Send payload to destination\n *\n * Override this method to implement your destination-specific logic.\n * This is called for all event types (event, funnel, outcome, value).\n *\n * @param payload - Normalized event payload\n */\n protected abstract sendToDestination(payload: EventPayload): Promise<void>;\n\n /**\n * Optional: Handle errors\n *\n * Override this to customize error handling (logging, retries, etc.).\n * Default behavior: log to console.error\n *\n * @param error - Error that occurred\n * @param payload - Event payload that failed\n */\n protected handleError(error: Error, payload: EventPayload): void {\n console.error(\n `[${this.name}] Failed to send ${payload.type}:`,\n error,\n payload,\n );\n }\n\n /**\n * Filter out undefined and null values from attributes\n *\n * This improves DX by allowing callers to pass objects with optional properties\n * without having to manually filter them first.\n *\n * @param attributes - Input attributes (may contain undefined/null)\n * @returns Filtered attributes with only defined values, or undefined if empty\n *\n * @example\n * ```typescript\n * const filtered = this.filterAttributes({\n * userId: user.id,\n * email: user.email, // might be undefined\n * plan: null, // will be filtered out\n * });\n * // Result: { userId: 'abc', email: 'test@example.com' } or { userId: 'abc' }\n * ```\n */\n protected filterAttributes(\n attributes?: EventAttributesInput,\n ): EventAttributes | undefined {\n if (!attributes) return undefined;\n\n const filtered: EventAttributes = {};\n for (const [key, value] of Object.entries(attributes)) {\n if (value !== undefined && value !== null) {\n filtered[key] = value;\n }\n }\n\n // Return undefined if no attributes remain after filtering\n return Object.keys(filtered).length > 0 ? filtered : undefined;\n }\n\n /**\n * Track an event\n */\n async trackEvent(name: string, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'event',\n name,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track a funnel step\n */\n async trackFunnelStep(\n funnelName: string,\n step: FunnelStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'funnel',\n name: `${funnelName}.${step}`,\n funnel: funnelName,\n step,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track an outcome\n */\n async trackOutcome(\n operationName: string,\n outcome: OutcomeStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'outcome',\n name: `${operationName}.${outcome}`,\n operation: operationName,\n outcome,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track a value/metric\n */\n async trackValue(\n name: string,\n value: number,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'value',\n name,\n value,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track funnel progression with custom step names\n *\n * Unlike trackFunnelStep which uses FunnelStatus enum values,\n * this method allows any string as the step name for flexible funnel tracking.\n *\n * @param funnelName - Name of the funnel (e.g., \"checkout\", \"onboarding\")\n * @param stepName - Custom step name (e.g., \"cart_viewed\", \"payment_entered\")\n * @param stepNumber - Optional numeric position in the funnel\n * @param attributes - Optional event attributes\n */\n async trackFunnelProgression(\n funnelName: string,\n stepName: string,\n stepNumber?: number,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'funnel',\n name: `${funnelName}.${stepName}`,\n funnel: funnelName,\n step: stepName,\n stepName,\n stepNumber,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Flush pending requests and clean up\n *\n * CRITICAL: Prevents race condition during shutdown\n * 1. Disables subscriber to stop new events\n * 2. Drains all pending requests (with retry logic)\n * 3. Ensures flush guarantee\n *\n * Override this if you need custom cleanup logic (close connections, flush buffers, etc.),\n * but ALWAYS call super.shutdown() first to drain pending requests.\n */\n async shutdown(): Promise<void> {\n // 1. Stop accepting new events (prevents race condition)\n this.enabled = false;\n\n // 2. Drain pending requests with retry logic\n // Loop until empty to handle race where new requests added during Promise.allSettled\n const maxDrainAttempts = 10;\n const drainIntervalMs = 50;\n\n for (let attempt = 0; attempt < maxDrainAttempts; attempt++) {\n if (this.pendingRequests.size === 0) {\n break;\n }\n\n // Wait for current batch\n await Promise.allSettled(this.pendingRequests);\n\n // Small delay to catch any stragglers added during allSettled\n if (this.pendingRequests.size > 0 && attempt < maxDrainAttempts - 1) {\n await new Promise((resolve) => setTimeout(resolve, drainIntervalMs));\n }\n }\n\n // 3. Warn if we still have pending requests (shouldn't happen, but be defensive)\n if (this.pendingRequests.size > 0) {\n console.warn(\n `[${this.name}] Shutdown completed with ${this.pendingRequests.size} pending requests still in-flight. ` +\n `This may indicate a bug in the subscriber or extremely slow destination.`\n );\n }\n }\n\n /**\n * Internal: Send payload and track request\n */\n private async send(payload: EventPayload): Promise<void> {\n const request = this.sendWithErrorHandling(payload);\n this.pendingRequests.add(request);\n\n void request.finally(() => {\n this.pendingRequests.delete(request);\n });\n\n return request;\n }\n\n /**\n * Internal: Send with error handling\n */\n private async sendWithErrorHandling(\n payload: EventPayload,\n ): Promise<void> {\n try {\n await this.sendToDestination(payload);\n } catch (error) {\n this.handleError(error as Error, payload);\n }\n }\n}\n\nexport {\n type EventAttributes,\n type EventAttributesInput,\n type FunnelStatus,\n type OutcomeStatus,\n} from 'autotel/event-subscriber';","/**\n * PostHog Subscriber for autotel\n *\n * Send events to PostHog for product events, feature flags, and A/B testing.\n *\n * @example Basic usage\n * ```typescript\n * import { Events } from 'autotel/events';\n * import { PostHogSubscriber } from 'autotel-subscribers/posthog';\n *\n * const events = new Events('checkout', {\n * subscribers: [\n * new PostHogSubscriber({\n * apiKey: process.env.POSTHOG_API_KEY!,\n * host: 'https://us.i.posthog.com' // optional, defaults to US cloud\n * })\n * ]\n * });\n *\n * // Events go to both OpenTelemetry AND PostHog\n * events.trackEvent('order.completed', { userId: '123', amount: 99.99 });\n * ```\n *\n * @example Feature flags\n * ```typescript\n * const subscriber = new PostHogSubscriber({ apiKey: 'phc_...' });\n *\n * // Check if feature is enabled\n * const isEnabled = await subscriber.isFeatureEnabled('new-checkout', 'user-123');\n *\n * // Get feature flag value (string, boolean, number)\n * const variant = await subscriber.getFeatureFlag('experiment-variant', 'user-123');\n *\n * // Get all flags for a user\n * const allFlags = await subscriber.getAllFlags('user-123');\n * ```\n *\n * @example Person and group events\n * ```typescript\n * // Identify user and set properties\n * await subscriber.identify('user-123', {\n * email: 'user@example.com',\n * plan: 'premium'\n * });\n *\n * // Identify a group (e.g., organization)\n * await subscriber.groupIdentify('company', 'acme-corp', {\n * industry: 'saas',\n * employees: 500\n * });\n * ```\n *\n * @example Serverless configuration\n * ```typescript\n * // Optimized for AWS Lambda / Vercel Functions\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * flushAt: 1, // Send immediately (don't batch)\n * flushInterval: 0, // Disable interval-based flushing\n * });\n * ```\n *\n * @example Custom PostHog client\n * ```typescript\n * import { PostHog } from 'posthog-node';\n *\n * const customClient = new PostHog('phc_...', {\n * host: 'https://eu.i.posthog.com',\n * // ... other PostHog options\n * });\n *\n * const subscriber = new PostHogSubscriber({\n * client: customClient\n * });\n * ```\n *\n * @example Error handling\n * ```typescript\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * onError: (error) => {\n * console.error('PostHog error:', error);\n * // Send to error tracking service\n * }\n * });\n * ```\n */\n\nimport type { EventAttributes, EventAttributesInput } from 'autotel/event-subscriber';\nimport { EventSubscriber, type EventPayload } from './event-subscriber-base';\n\n// Type-only import to avoid runtime dependency\nimport type { PostHog } from 'posthog-node';\n\n/**\n * Error context for enhanced error handling\n *\n * Provides detailed context about the event that caused an error.\n */\nexport interface ErrorContext {\n /** The error that occurred */\n error: Error;\n\n /** Event name (if applicable) */\n eventName?: string;\n\n /** Event type (event, funnel, outcome, value) */\n eventType?: 'event' | 'funnel' | 'outcome' | 'value';\n\n /** Event attributes (filtered) */\n attributes?: EventAttributes;\n\n /** Subscriber name */\n subscriberName: string;\n}\n\nexport interface PostHogConfig {\n /** PostHog API key (starts with phc_) - required if not providing custom client */\n apiKey?: string;\n\n /** PostHog host (defaults to US cloud) */\n host?: string;\n\n /** Enable/disable the subscriber */\n enabled?: boolean;\n\n /** Custom PostHog client instance (bypasses apiKey/host) */\n client?: PostHog;\n\n /**\n * Use global browser client (window.posthog)\n *\n * When true, uses the PostHog client already loaded on the page via script tag.\n * This is useful for Next.js apps that initialize PostHog in _app.tsx.\n *\n * @example\n * ```typescript\n * // Browser - uses window.posthog\n * const subscriber = new PostHogSubscriber({\n * useGlobalClient: true,\n * });\n * ```\n */\n useGlobalClient?: boolean;\n\n /**\n * Serverless mode preset (AWS Lambda, Vercel Functions, Next.js API routes)\n *\n * When true, auto-configures for serverless environments:\n * - flushAt: 1 (send immediately, don't batch)\n * - flushInterval: 0 (disable interval-based flushing)\n * - requestTimeout: 3000 (shorter timeout for fast responses)\n *\n * @example\n * ```typescript\n * // Vercel / Next.js API route\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * serverless: true,\n * });\n * ```\n */\n serverless?: boolean;\n\n // Serverless optimizations\n /** Flush batch when it reaches this size (default: 20, set to 1 for immediate send) */\n flushAt?: number;\n\n /** Flush interval in milliseconds (default: 10000, set to 0 to disable) */\n flushInterval?: number;\n\n // Performance tuning\n /** Disable geoip lookup to reduce request size (default: false) */\n disableGeoip?: boolean;\n\n /** Request timeout in milliseconds (default: 10000) */\n requestTimeout?: number;\n\n /** Send feature flag evaluation events (default: true) */\n sendFeatureFlags?: boolean;\n\n /**\n * Automatically filter out undefined and null values from attributes\n *\n * When true (default), undefined and null values are removed before sending.\n * This improves DX when passing objects with optional properties.\n *\n * @default true\n *\n * @example\n * ```typescript\n * // With filterUndefinedValues: true (default)\n * subscriber.trackEvent('user.action', {\n * userId: user.id,\n * email: user.email, // might be undefined - will be filtered\n * plan: user.subscription, // might be null - will be filtered\n * });\n * ```\n */\n filterUndefinedValues?: boolean;\n\n // Error handling\n /** Error callback for debugging and monitoring */\n onError?: (error: Error) => void;\n\n /**\n * Enhanced error callback with event context\n *\n * Provides detailed context about the event that caused the error.\n * If both onError and onErrorWithContext are provided, both are called.\n *\n * @example\n * ```typescript\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * onErrorWithContext: (ctx) => {\n * console.error(`Failed to track ${ctx.eventType}: ${ctx.eventName}`, ctx.error);\n * Sentry.captureException(ctx.error, { extra: ctx });\n * }\n * });\n * ```\n */\n onErrorWithContext?: (context: ErrorContext) => void;\n\n /** Enable debug logging (default: false) */\n debug?: boolean;\n}\n\n/**\n * PostHog feature flag options\n */\nexport interface FeatureFlagOptions {\n /** Group context for group-based feature flags */\n groups?: Record<string, string | number>;\n\n /** Group properties for feature flag evaluation */\n groupProperties?: Record<string, Record<string, any>>;\n\n /** Person properties for feature flag evaluation */\n personProperties?: Record<string, any>;\n\n /** Only evaluate locally, don't send $feature_flag_called event */\n onlyEvaluateLocally?: boolean;\n\n /** Send feature flag events even if disabled globally */\n sendFeatureFlagEvents?: boolean;\n}\n\n/**\n * Person properties for identify calls\n */\nexport interface PersonProperties {\n /** Set properties (will update existing values) */\n $set?: Record<string, any>;\n\n /** Set properties only if they don't exist */\n $set_once?: Record<string, any>;\n\n /** Any custom properties */\n [key: string]: any;\n}\n\nexport class PostHogSubscriber extends EventSubscriber {\n readonly name = 'PostHogSubscriber';\n readonly version = '2.0.0';\n\n private posthog: PostHog | null = null;\n private config: PostHogConfig;\n private initPromise: Promise<void> | null = null;\n /** True when using browser's window.posthog (different API signature) */\n private isBrowserClient = false;\n\n constructor(config: PostHogConfig) {\n super();\n\n // Apply serverless preset first (can be overridden by explicit config)\n if (config.serverless) {\n config = {\n flushAt: 1,\n flushInterval: 0,\n requestTimeout: 3000,\n ...config, // User config overrides serverless defaults\n };\n }\n\n // Validate: need either apiKey, client, or useGlobalClient\n if (!config.apiKey && !config.client && !config.useGlobalClient) {\n throw new Error(\n 'PostHogSubscriber requires either apiKey, client, or useGlobalClient to be provided',\n );\n }\n\n this.enabled = config.enabled ?? true;\n // Default filterUndefinedValues to true\n this.config = {\n filterUndefinedValues: true,\n ...config,\n };\n\n if (this.enabled) {\n // Start initialization immediately but don't block constructor\n this.initPromise = this.initialize();\n }\n }\n\n private async initialize(): Promise<void> {\n try {\n // Option 1: Use global browser client (window.posthog)\n if (this.config.useGlobalClient) {\n const globalWindow = typeof globalThis === 'undefined' ? undefined : (globalThis as Record<string, unknown>);\n if (globalWindow?.posthog) {\n this.posthog = globalWindow.posthog as PostHog;\n this.isBrowserClient = true;\n this.setupErrorHandling();\n return;\n }\n throw new Error(\n 'useGlobalClient enabled but window.posthog not found. ' +\n 'Ensure PostHog script is loaded before initializing the subscriber.',\n );\n }\n\n // Option 2: Use custom client if provided\n if (this.config.client) {\n this.posthog = this.config.client;\n this.setupErrorHandling();\n return;\n }\n\n // Option 3: Create new PostHog client with dynamic import\n const { PostHog } = await import('posthog-node');\n\n this.posthog = new PostHog(this.config.apiKey!, {\n host: this.config.host || 'https://us.i.posthog.com',\n flushAt: this.config.flushAt,\n flushInterval: this.config.flushInterval,\n requestTimeout: this.config.requestTimeout,\n disableGeoip: this.config.disableGeoip,\n sendFeatureFlagEvent: this.config.sendFeatureFlags,\n });\n\n this.setupErrorHandling();\n } catch (error) {\n console.error(\n 'PostHog subscriber failed to initialize. Install posthog-node: pnpm add posthog-node',\n error,\n );\n this.enabled = false;\n this.config.onError?.(error as Error);\n }\n }\n\n private setupErrorHandling(): void {\n if (this.config.debug) {\n this.posthog?.debug();\n }\n\n if (this.config.onError && this.posthog?.on) {\n this.posthog.on('error', this.config.onError);\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n }\n\n private extractDistinctId(attributes?: EventAttributes): string {\n return (attributes?.userId || attributes?.user_id || 'anonymous') as string;\n }\n\n /**\n * Send payload to PostHog\n */\n protected async sendToDestination(payload: EventPayload): Promise<void> {\n await this.ensureInitialized();\n\n // Filter attributes if enabled (default: true)\n const filteredAttributes =\n this.config.filterUndefinedValues === false\n ? payload.attributes\n : this.filterAttributes(payload.attributes as EventAttributesInput);\n\n // Build properties object, including value and funnel metadata if present\n const properties: Record<string, unknown> = { ...filteredAttributes };\n if (payload.value !== undefined) {\n properties.value = payload.value;\n }\n // Add funnel progression metadata\n if (payload.stepNumber !== undefined) {\n properties.step_number = payload.stepNumber;\n }\n if (payload.stepName !== undefined) {\n properties.step_name = payload.stepName;\n }\n\n const distinctId = this.extractDistinctId(filteredAttributes);\n\n // Browser client has different API signature\n if (this.isBrowserClient) {\n // Browser API: capture(eventName, properties)\n (this.posthog as any)?.capture(payload.name, properties);\n } else {\n // Server API: capture({ distinctId, event, properties, groups })\n const capturePayload: any = {\n distinctId,\n event: payload.name,\n properties,\n };\n\n // Add groups if present in attributes\n if (filteredAttributes?.groups) {\n capturePayload.groups = filteredAttributes.groups;\n }\n\n this.posthog?.capture(capturePayload);\n }\n }\n\n // Feature Flag Methods\n\n /**\n * Check if a feature flag is enabled for a user\n *\n * @param flagKey - Feature flag key\n * @param distinctId - User ID or anonymous ID\n * @param options - Feature flag evaluation options\n * @returns true if enabled, false otherwise\n *\n * @example\n * ```typescript\n * const isEnabled = await subscriber.isFeatureEnabled('new-checkout', 'user-123');\n *\n * // With groups\n * const isEnabled = await subscriber.isFeatureEnabled('beta-features', 'user-123', {\n * groups: { company: 'acme-corp' }\n * });\n * ```\n */\n async isFeatureEnabled(\n flagKey: string,\n distinctId: string,\n options?: FeatureFlagOptions,\n ): Promise<boolean> {\n if (!this.enabled) return false;\n await this.ensureInitialized();\n\n try {\n return await this.posthog?.isFeatureEnabled(flagKey, distinctId, options as any) ?? false;\n } catch (error) {\n this.config.onError?.(error as Error);\n return false;\n }\n }\n\n /**\n * Get feature flag value for a user\n *\n * @param flagKey - Feature flag key\n * @param distinctId - User ID or anonymous ID\n * @param options - Feature flag evaluation options\n * @returns Flag value (string, boolean, or undefined)\n *\n * @example\n * ```typescript\n * const variant = await subscriber.getFeatureFlag('experiment-variant', 'user-123');\n * // Returns: 'control' | 'test' | 'test-2' | undefined\n *\n * // With person properties\n * const variant = await subscriber.getFeatureFlag('premium-feature', 'user-123', {\n * personProperties: { plan: 'premium' }\n * });\n * ```\n */\n async getFeatureFlag(\n flagKey: string,\n distinctId: string,\n options?: FeatureFlagOptions,\n ): Promise<string | boolean | undefined> {\n if (!this.enabled) return undefined;\n await this.ensureInitialized();\n\n try {\n return await this.posthog?.getFeatureFlag(flagKey, distinctId, options as any);\n } catch (error) {\n this.config.onError?.(error as Error);\n return undefined;\n }\n }\n\n /**\n * Get all feature flags for a user\n *\n * @param distinctId - User ID or anonymous ID\n * @param options - Feature flag evaluation options\n * @returns Object mapping flag keys to their values\n *\n * @example\n * ```typescript\n * const flags = await subscriber.getAllFlags('user-123');\n * // Returns: { 'new-checkout': true, 'experiment-variant': 'test', ... }\n * ```\n */\n async getAllFlags(\n distinctId: string,\n options?: FeatureFlagOptions,\n ): Promise<Record<string, string | number | boolean>> {\n if (!this.enabled) return {};\n await this.ensureInitialized();\n\n try {\n const flags = await this.posthog?.getAllFlags(distinctId, options as any);\n return flags ?? {};\n } catch (error) {\n this.config.onError?.(error as Error);\n return {};\n }\n }\n\n /**\n * Reload feature flags from PostHog server\n *\n * Call this to refresh feature flag definitions without restarting.\n *\n * @example\n * ```typescript\n * await subscriber.reloadFeatureFlags();\n * ```\n */\n async reloadFeatureFlags(): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n try {\n await this.posthog?.reloadFeatureFlags();\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n\n // Person and Group Events\n\n /**\n * Identify a user and set their properties\n *\n * @param distinctId - User ID\n * @param properties - Person properties ($set, $set_once, or custom properties)\n *\n * @example\n * ```typescript\n * // Set properties (will update existing values)\n * await subscriber.identify('user-123', {\n * $set: {\n * email: 'user@example.com',\n * plan: 'premium'\n * }\n * });\n *\n * // Set properties only once (won't update if already exists)\n * await subscriber.identify('user-123', {\n * $set_once: {\n * signup_date: '2025-01-17'\n * }\n * });\n * ```\n */\n async identify(distinctId: string, properties?: PersonProperties): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n try {\n this.posthog?.identify({\n distinctId,\n properties,\n });\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n\n /**\n * Identify a group and set its properties\n *\n * Groups are useful for B2B SaaS to track organizations, teams, or accounts.\n *\n * @param groupType - Type of group (e.g., 'company', 'organization', 'team')\n * @param groupKey - Unique identifier for the group\n * @param properties - Group properties\n *\n * @example\n * ```typescript\n * await subscriber.groupIdentify('company', 'acme-corp', {\n * $set: {\n * name: 'Acme Corporation',\n * industry: 'saas',\n * employees: 500,\n * plan: 'enterprise'\n * }\n * });\n * ```\n */\n async groupIdentify(\n groupType: string,\n groupKey: string | number,\n properties?: Record<string, any>,\n ): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n try {\n this.posthog?.groupIdentify({\n groupType,\n groupKey: String(groupKey), // Convert to string for PostHog SDK\n properties,\n });\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n\n /**\n * Track an event with group context\n *\n * Use this to associate events with groups (e.g., organizations).\n *\n * @param name - Event name\n * @param attributes - Event attributes\n * @param groups - Group context (e.g., { company: 'acme-corp' })\n *\n * @example\n * ```typescript\n * await subscriber.trackEventWithGroups('feature.used', {\n * userId: 'user-123',\n * feature: 'advanced-events'\n * }, {\n * company: 'acme-corp'\n * });\n * ```\n */\n async trackEventWithGroups(\n name: string,\n attributes?: EventAttributes,\n groups?: Record<string, string | number>,\n ): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n const eventAttributes: EventAttributes = { ...attributes } as EventAttributes;\n if (groups) {\n (eventAttributes as any).groups = groups;\n }\n\n await this.trackEvent(name, eventAttributes);\n }\n\n /**\n * Flush pending events and clean up resources\n */\n async shutdown(): Promise<void> {\n await super.shutdown(); // Drain pending requests first\n await this.ensureInitialized();\n\n if (this.posthog) {\n try {\n await this.posthog.shutdown();\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n }\n\n /**\n * Handle errors with custom error handler\n */\n protected handleError(error: Error, payload: EventPayload): void {\n // Call basic onError if provided\n this.config.onError?.(error);\n\n // Call enhanced onErrorWithContext if provided\n if (this.config.onErrorWithContext) {\n this.config.onErrorWithContext({\n error,\n eventName: payload.name,\n eventType: payload.type,\n attributes: payload.attributes,\n subscriberName: this.name,\n });\n }\n\n super.handleError(error, payload);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/vendor/uuidv7.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/bot-detection.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/string-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/number-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/promise-queue.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/logger.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/utils/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/eventemitter.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/gzip.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/posthog-core-stateless.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/posthog-core.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/coercers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/error-tracking/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.9.1/node_modules/@posthog/core/dist/index.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/version.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/types.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/storage-memory.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/client.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/context/context.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/sentry-integration.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/extensions/express.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/exports.mjs","../../../node_modules/.pnpm/posthog-node@5.21.0/node_modules/posthog-node/dist/entrypoints/index.node.mjs","../src/event-subscriber-base.ts","../src/posthog.ts"],"names":["response","depth","line","init_types","init_utils","range","init_error_tracking","value","overrideValue","operator","props","PostHog"],"mappings":"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","file":"posthog.js","sourcesContent":["import { dirname, posix, sep } from \"path\";\nfunction createModulerModifier() {\n const getModuleFromFileName = createGetModuleFromFilename();\n return async (frames)=>{\n for (const frame of frames)frame.module = getModuleFromFileName(frame.filename);\n return frames;\n };\n}\nfunction createGetModuleFromFilename(basePath = process.argv[1] ? dirname(process.argv[1]) : process.cwd(), isWindows = '\\\\' === sep) {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n return (filename)=>{\n if (!filename) return;\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n if ('.js' === ext || '.mjs' === ext || '.cjs' === ext) file = file.slice(0, -1 * ext.length);\n const decodedFile = decodeURIComponent(file);\n if (!dir) dir = '.';\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n return decodedFile;\n };\n}\nfunction normalizeWindowsPath(path) {\n return path.replace(/^[A-Z]:/, '').replace(/\\\\/g, '/');\n}\nexport { createModulerModifier };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{\n const flags = flagsResponse.featureFlags ?? {};\n const payloads = flagsResponse.featureFlagPayloads ?? {};\n return Object.fromEntries(Object.entries(flags).map(([key, value])=>[\n key,\n {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payloads?.[key] ? JSON.stringify(payloads[key]) : void 0,\n description: void 0\n }\n }\n ]));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nexport { createFlagsResponseFromFlagsAndPayloads, getFeatureFlagValue, getFlagDetailsFromFlagsAndPayloads, getFlagValuesFromFlags, getPayloadsFromFlags, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","/*! For license information please see uuidv7.mjs.LICENSE.txt */\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 */ const DIGITS = \"0123456789abcdef\";\nclass UUID {\n constructor(bytes){\n this.bytes = bytes;\n }\n static ofInner(bytes) {\n if (16 === bytes.length) return new UUID(bytes);\n throw new TypeError(\"not 128-bit length\");\n }\n static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n if (!Number.isInteger(unixTsMs) || !Number.isInteger(randA) || !Number.isInteger(randBHi) || !Number.isInteger(randBLo) || unixTsMs < 0 || randA < 0 || randBHi < 0 || randBLo < 0 || unixTsMs > 0xffffffffffff || randA > 0xfff || randBHi > 0x3fffffff || randBLo > 0xffffffff) throw new RangeError(\"invalid field value\");\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 / 256;\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 static parse(uuid) {\n let hex;\n switch(uuid.length){\n case 32:\n hex = /^[0-9a-f]{32}$/i.exec(uuid)?.[0];\n break;\n case 36:\n hex = /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 38:\n hex = /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 45:\n hex = /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n default:\n break;\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 }\n throw new SyntaxError(\"could not parse UUID string\");\n }\n toString() {\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(0xf & this.bytes[i]);\n if (3 === i || 5 === i || 7 === i || 9 === i) text += \"-\";\n }\n return text;\n }\n toHex() {\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(0xf & this.bytes[i]);\n }\n return text;\n }\n toJSON() {\n return this.toString();\n }\n getVariant() {\n const n = this.bytes[8] >>> 4;\n if (n < 0) throw new Error(\"unreachable\");\n if (n <= 7) return this.bytes.every((e)=>0 === e) ? \"NIL\" : \"VAR_0\";\n if (n <= 11) return \"VAR_10\";\n if (n <= 13) return \"VAR_110\";\n if (n <= 15) return this.bytes.every((e)=>0xff === e) ? \"MAX\" : \"VAR_RESERVED\";\n else throw new Error(\"unreachable\");\n }\n getVersion() {\n return \"VAR_10\" === this.getVariant() ? this.bytes[6] >>> 4 : void 0;\n }\n clone() {\n return new UUID(this.bytes.slice(0));\n }\n equals(other) {\n return 0 === this.compareTo(other);\n }\n compareTo(other) {\n for(let i = 0; i < 16; i++){\n const diff = this.bytes[i] - other.bytes[i];\n if (0 !== diff) return Math.sign(diff);\n }\n return 0;\n }\n}\nclass V7Generator {\n constructor(randomNumberGenerator){\n this.timestamp = 0;\n this.counter = 0;\n this.random = randomNumberGenerator ?? getDefaultRandom();\n }\n generate() {\n return this.generateOrResetCore(Date.now(), 10000);\n }\n generateOrAbort() {\n return this.generateOrAbortCore(Date.now(), 10000);\n }\n generateOrResetCore(unixTsMs, rollbackAllowance) {\n let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n if (void 0 === value) {\n this.timestamp = 0;\n value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n }\n return value;\n }\n generateOrAbortCore(unixTsMs, rollbackAllowance) {\n const MAX_COUNTER = 0x3ffffffffff;\n if (!Number.isInteger(unixTsMs) || unixTsMs < 1 || unixTsMs > 0xffffffffffff) throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n if (rollbackAllowance < 0 || rollbackAllowance > 0xffffffffffff) throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n if (unixTsMs > this.timestamp) {\n this.timestamp = unixTsMs;\n this.resetCounter();\n } else {\n if (!(unixTsMs + rollbackAllowance >= this.timestamp)) return;\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n this.timestamp++;\n this.resetCounter();\n }\n }\n return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / 2 ** 30), this.counter & 2 ** 30 - 1, this.random.nextUint32());\n }\n resetCounter() {\n this.counter = 0x400 * this.random.nextUint32() + (0x3ff & this.random.nextUint32());\n }\n generateV4() {\n const bytes = new Uint8Array(Uint32Array.of(this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32()).buffer);\n bytes[6] = 0x40 | bytes[6] >>> 4;\n bytes[8] = 0x80 | bytes[8] >>> 2;\n return UUID.ofInner(bytes);\n }\n}\nconst getDefaultRandom = ()=>({\n nextUint32: ()=>0x10000 * Math.trunc(0x10000 * Math.random()) + Math.trunc(0x10000 * Math.random())\n });\nlet defaultGenerator;\nconst uuidv7 = ()=>uuidv7obj().toString();\nconst uuidv7obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generate();\nconst uuidv4 = ()=>uuidv4obj().toString();\nconst uuidv4obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\nexport { UUID, V7Generator, uuidv4, uuidv4obj, uuidv7, uuidv7obj };\n","const DEFAULT_BLOCKED_UA_STRS = [\n 'amazonbot',\n 'amazonproductbot',\n 'app.hypefactors.com',\n 'applebot',\n 'archive.org_bot',\n 'awariobot',\n 'backlinksextendedbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'dataforseobot',\n 'deepscan',\n 'duckduckbot',\n 'facebookexternal',\n 'facebookcatalog',\n 'http://yandex.com/bots',\n 'hubspot',\n 'ia_archiver',\n 'leikibot',\n 'linkedinbot',\n 'meta-externalagent',\n 'mj12bot',\n 'msnbot',\n 'nessus',\n 'petalbot',\n 'pinterest',\n 'prerender',\n 'rogerbot',\n 'screaming frog',\n 'sebot-wa',\n 'sitebulb',\n 'slackbot',\n 'slurp',\n 'trendictionbot',\n 'turnitin',\n 'twitterbot',\n 'vercel-screenshot',\n 'vercelbot',\n 'yahoo! slurp',\n 'yandexbot',\n 'zoombot',\n 'bot.htm',\n 'bot.php',\n '(bot;',\n 'bot/',\n 'crawler',\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'semrushbot',\n 'siteauditbot',\n 'splitsignalbot',\n 'gptbot',\n 'oai-searchbot',\n 'chatgpt-user',\n 'perplexitybot',\n 'better uptime bot',\n 'sentryuptimebot',\n 'uptimerobot',\n 'headlesschrome',\n 'cypress',\n 'google-hoteladsverifier',\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleother',\n 'google-cloudvertexbot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google',\n 'google-inspectiontool',\n 'bytespider'\n];\nconst isBlockedUA = function(ua, customBlockedUserAgents = []) {\n if (!ua) return false;\n const uaLower = ua.toLowerCase();\n return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents).some((blockedUA)=>{\n const blockedUaLower = blockedUA.toLowerCase();\n return -1 !== uaLower.indexOf(blockedUaLower);\n });\n};\nexport { DEFAULT_BLOCKED_UA_STRS, isBlockedUA };\n","var types_PostHogPersistedProperty = /*#__PURE__*/ function(PostHogPersistedProperty) {\n PostHogPersistedProperty[\"AnonymousId\"] = \"anonymous_id\";\n PostHogPersistedProperty[\"DistinctId\"] = \"distinct_id\";\n PostHogPersistedProperty[\"Props\"] = \"props\";\n PostHogPersistedProperty[\"FeatureFlagDetails\"] = \"feature_flag_details\";\n PostHogPersistedProperty[\"FeatureFlags\"] = \"feature_flags\";\n PostHogPersistedProperty[\"FeatureFlagPayloads\"] = \"feature_flag_payloads\";\n PostHogPersistedProperty[\"BootstrapFeatureFlagDetails\"] = \"bootstrap_feature_flag_details\";\n PostHogPersistedProperty[\"BootstrapFeatureFlags\"] = \"bootstrap_feature_flags\";\n PostHogPersistedProperty[\"BootstrapFeatureFlagPayloads\"] = \"bootstrap_feature_flag_payloads\";\n PostHogPersistedProperty[\"OverrideFeatureFlags\"] = \"override_feature_flags\";\n PostHogPersistedProperty[\"Queue\"] = \"queue\";\n PostHogPersistedProperty[\"OptedOut\"] = \"opted_out\";\n PostHogPersistedProperty[\"SessionId\"] = \"session_id\";\n PostHogPersistedProperty[\"SessionStartTimestamp\"] = \"session_start_timestamp\";\n PostHogPersistedProperty[\"SessionLastTimestamp\"] = \"session_timestamp\";\n PostHogPersistedProperty[\"PersonProperties\"] = \"person_properties\";\n PostHogPersistedProperty[\"GroupProperties\"] = \"group_properties\";\n PostHogPersistedProperty[\"InstalledAppBuild\"] = \"installed_app_build\";\n PostHogPersistedProperty[\"InstalledAppVersion\"] = \"installed_app_version\";\n PostHogPersistedProperty[\"SessionReplay\"] = \"session_replay\";\n PostHogPersistedProperty[\"SurveyLastSeenDate\"] = \"survey_last_seen_date\";\n PostHogPersistedProperty[\"SurveysSeen\"] = \"surveys_seen\";\n PostHogPersistedProperty[\"Surveys\"] = \"surveys\";\n PostHogPersistedProperty[\"RemoteConfig\"] = \"remote_config\";\n PostHogPersistedProperty[\"FlagsEndpointWasHit\"] = \"flags_endpoint_was_hit\";\n return PostHogPersistedProperty;\n}({});\nvar types_Compression = /*#__PURE__*/ function(Compression) {\n Compression[\"GZipJS\"] = \"gzip-js\";\n Compression[\"Base64\"] = \"base64\";\n return Compression;\n}({});\nvar types_SurveyPosition = /*#__PURE__*/ function(SurveyPosition) {\n SurveyPosition[\"TopLeft\"] = \"top_left\";\n SurveyPosition[\"TopCenter\"] = \"top_center\";\n SurveyPosition[\"TopRight\"] = \"top_right\";\n SurveyPosition[\"MiddleLeft\"] = \"middle_left\";\n SurveyPosition[\"MiddleCenter\"] = \"middle_center\";\n SurveyPosition[\"MiddleRight\"] = \"middle_right\";\n SurveyPosition[\"Left\"] = \"left\";\n SurveyPosition[\"Right\"] = \"right\";\n SurveyPosition[\"Center\"] = \"center\";\n return SurveyPosition;\n}({});\nvar types_SurveyWidgetType = /*#__PURE__*/ function(SurveyWidgetType) {\n SurveyWidgetType[\"Button\"] = \"button\";\n SurveyWidgetType[\"Tab\"] = \"tab\";\n SurveyWidgetType[\"Selector\"] = \"selector\";\n return SurveyWidgetType;\n}({});\nvar types_SurveyType = /*#__PURE__*/ function(SurveyType) {\n SurveyType[\"Popover\"] = \"popover\";\n SurveyType[\"API\"] = \"api\";\n SurveyType[\"Widget\"] = \"widget\";\n SurveyType[\"ExternalSurvey\"] = \"external_survey\";\n return SurveyType;\n}({});\nvar types_SurveyQuestionDescriptionContentType = /*#__PURE__*/ function(SurveyQuestionDescriptionContentType) {\n SurveyQuestionDescriptionContentType[\"Html\"] = \"html\";\n SurveyQuestionDescriptionContentType[\"Text\"] = \"text\";\n return SurveyQuestionDescriptionContentType;\n}({});\nvar types_SurveyRatingDisplay = /*#__PURE__*/ function(SurveyRatingDisplay) {\n SurveyRatingDisplay[\"Number\"] = \"number\";\n SurveyRatingDisplay[\"Emoji\"] = \"emoji\";\n return SurveyRatingDisplay;\n}({});\nvar types_SurveyQuestionType = /*#__PURE__*/ function(SurveyQuestionType) {\n SurveyQuestionType[\"Open\"] = \"open\";\n SurveyQuestionType[\"MultipleChoice\"] = \"multiple_choice\";\n SurveyQuestionType[\"SingleChoice\"] = \"single_choice\";\n SurveyQuestionType[\"Rating\"] = \"rating\";\n SurveyQuestionType[\"Link\"] = \"link\";\n return SurveyQuestionType;\n}({});\nvar types_SurveyQuestionBranchingType = /*#__PURE__*/ function(SurveyQuestionBranchingType) {\n SurveyQuestionBranchingType[\"NextQuestion\"] = \"next_question\";\n SurveyQuestionBranchingType[\"End\"] = \"end\";\n SurveyQuestionBranchingType[\"ResponseBased\"] = \"response_based\";\n SurveyQuestionBranchingType[\"SpecificQuestion\"] = \"specific_question\";\n return SurveyQuestionBranchingType;\n}({});\nvar types_SurveyMatchType = /*#__PURE__*/ function(SurveyMatchType) {\n SurveyMatchType[\"Regex\"] = \"regex\";\n SurveyMatchType[\"NotRegex\"] = \"not_regex\";\n SurveyMatchType[\"Exact\"] = \"exact\";\n SurveyMatchType[\"IsNot\"] = \"is_not\";\n SurveyMatchType[\"Icontains\"] = \"icontains\";\n SurveyMatchType[\"NotIcontains\"] = \"not_icontains\";\n return SurveyMatchType;\n}({});\nvar types_ActionStepStringMatching = /*#__PURE__*/ function(ActionStepStringMatching) {\n ActionStepStringMatching[\"Contains\"] = \"contains\";\n ActionStepStringMatching[\"Exact\"] = \"exact\";\n ActionStepStringMatching[\"Regex\"] = \"regex\";\n return ActionStepStringMatching;\n}({});\nconst knownUnsafeEditableEvent = [\n '$snapshot',\n '$pageview',\n '$pageleave',\n '$set',\n 'survey dismissed',\n 'survey sent',\n 'survey shown',\n '$identify',\n '$groupidentify',\n '$create_alias',\n '$$client_ingestion_warning',\n '$web_experiment_applied',\n '$feature_enrollment_update',\n '$feature_flag_called'\n];\nexport { types_ActionStepStringMatching as ActionStepStringMatching, types_Compression as Compression, types_PostHogPersistedProperty as PostHogPersistedProperty, types_SurveyMatchType as SurveyMatchType, types_SurveyPosition as SurveyPosition, types_SurveyQuestionBranchingType as SurveyQuestionBranchingType, types_SurveyQuestionDescriptionContentType as SurveyQuestionDescriptionContentType, types_SurveyQuestionType as SurveyQuestionType, types_SurveyRatingDisplay as SurveyRatingDisplay, types_SurveyType as SurveyType, types_SurveyWidgetType as SurveyWidgetType, knownUnsafeEditableEvent };\n","function includes(str, needle) {\n return -1 !== str.indexOf(needle);\n}\nconst trim = function(str) {\n return str.trim();\n};\nconst stripLeadingDollar = function(s) {\n return s.replace(/^\\$/, '');\n};\nfunction isDistinctIdStringLike(value) {\n return [\n 'distinct_id',\n 'distinctid'\n ].includes(value.toLowerCase());\n}\nexport { includes, isDistinctIdStringLike, stripLeadingDollar, trim };\n","import { knownUnsafeEditableEvent } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x);\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return !isUndefined(Event) && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isKnownUnsafeEditableEvent, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","import { isNumber } from \"./type-utils.mjs\";\nfunction clampToRange(value, min, max, logger, fallbackValue) {\n if (min > max) {\n logger.warn('min cannot be greater than max.');\n min = max;\n }\n if (isNumber(value)) if (value > max) {\n logger.warn(' cannot be greater than max: ' + max + '. Using max value instead.');\n return max;\n } else {\n if (!(value < min)) return value;\n logger.warn(' cannot be less than min: ' + min + '. Using min value instead.');\n return min;\n }\n logger.warn(' must be a number. using max or fallback. max: ' + max + ', fallback: ' + fallbackValue);\n return clampToRange(fallbackValue || max, min, max, logger);\n}\nexport { clampToRange };\n","import { clampToRange } from \"./number-utils.mjs\";\nconst ONE_DAY_IN_MS = 86400000;\nclass BucketedRateLimiter {\n constructor(options){\n this._buckets = {};\n this._onBucketRateLimited = options._onBucketRateLimited;\n this._bucketSize = clampToRange(options.bucketSize, 0, 100, options._logger);\n this._refillRate = clampToRange(options.refillRate, 0, this._bucketSize, options._logger);\n this._refillInterval = clampToRange(options.refillInterval, 0, ONE_DAY_IN_MS, options._logger);\n }\n _applyRefill(bucket, now) {\n const elapsedMs = now - bucket.lastAccess;\n const refillIntervals = Math.floor(elapsedMs / this._refillInterval);\n if (refillIntervals > 0) {\n const tokensToAdd = refillIntervals * this._refillRate;\n bucket.tokens = Math.min(bucket.tokens + tokensToAdd, this._bucketSize);\n bucket.lastAccess = bucket.lastAccess + refillIntervals * this._refillInterval;\n }\n }\n consumeRateLimit(key) {\n const now = Date.now();\n const keyStr = String(key);\n let bucket = this._buckets[keyStr];\n if (bucket) this._applyRefill(bucket, now);\n else {\n bucket = {\n tokens: this._bucketSize,\n lastAccess: now\n };\n this._buckets[keyStr] = bucket;\n }\n if (0 === bucket.tokens) return true;\n bucket.tokens--;\n if (0 === bucket.tokens) this._onBucketRateLimited?.(key);\n return 0 === bucket.tokens;\n }\n stop() {\n this._buckets = {};\n }\n}\nexport { BucketedRateLimiter };\n","import { uuidv7 } from \"../vendor/uuidv7.mjs\";\nclass PromiseQueue {\n add(promise) {\n const promiseUUID = uuidv7();\n this.promiseByIds[promiseUUID] = promise;\n promise.catch(()=>{}).finally(()=>{\n delete this.promiseByIds[promiseUUID];\n });\n return promise;\n }\n async join() {\n let promises = Object.values(this.promiseByIds);\n let length = promises.length;\n while(length > 0){\n await Promise.all(promises);\n promises = Object.values(this.promiseByIds);\n length = promises.length;\n }\n }\n get length() {\n return Object.keys(this.promiseByIds).length;\n }\n constructor(){\n this.promiseByIds = {};\n }\n}\nexport { PromiseQueue };\n","function createConsole(consoleLike = console) {\n const lockedMethods = {\n log: consoleLike.log.bind(consoleLike),\n warn: consoleLike.warn.bind(consoleLike),\n error: consoleLike.error.bind(consoleLike),\n debug: consoleLike.debug.bind(consoleLike)\n };\n return lockedMethods;\n}\nconst _createLogger = (prefix, maybeCall, consoleLike)=>{\n function _log(level, ...args) {\n maybeCall(()=>{\n const consoleMethod = consoleLike[level];\n consoleMethod(prefix, ...args);\n });\n }\n const logger = {\n info: (...args)=>{\n _log('log', ...args);\n },\n warn: (...args)=>{\n _log('warn', ...args);\n },\n error: (...args)=>{\n _log('error', ...args);\n },\n critical: (...args)=>{\n consoleLike['error'](prefix, ...args);\n },\n createLogger: (additionalPrefix)=>_createLogger(`${prefix} ${additionalPrefix}`, maybeCall, consoleLike)\n };\n return logger;\n};\nconst passThrough = (fn)=>fn();\nfunction createLogger(prefix, maybeCall = passThrough) {\n return _createLogger(prefix, maybeCall, createConsole());\n}\nexport { _createLogger, createLogger };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor) {\n vendor = vendor || '';\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor) {\n const browser = detectBrowser(userAgent, vendor);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","export * from \"./bot-detection.mjs\";\nexport * from \"./bucketed-rate-limiter.mjs\";\nexport * from \"./number-utils.mjs\";\nexport * from \"./string-utils.mjs\";\nexport * from \"./type-utils.mjs\";\nexport * from \"./promise-queue.mjs\";\nexport * from \"./logger.mjs\";\nexport * from \"./user-agent-utils.mjs\";\nconst STRING_FORMAT = 'utf8';\nfunction assert(truthyValue, message) {\n if (!truthyValue || 'string' != typeof truthyValue || isEmpty(truthyValue)) throw new Error(message);\n}\nfunction isEmpty(truthyValue) {\n if (0 === truthyValue.trim().length) return true;\n return false;\n}\nfunction removeTrailingSlash(url) {\n return url?.replace(/\\/+$/, '');\n}\nasync function retriable(fn, props) {\n let lastError = null;\n for(let i = 0; i < props.retryCount + 1; i++){\n if (i > 0) await new Promise((r)=>setTimeout(r, props.retryDelay));\n try {\n const res = await fn();\n return res;\n } catch (e) {\n lastError = e;\n if (!props.retryCheck(e)) throw e;\n }\n }\n throw lastError;\n}\nfunction currentTimestamp() {\n return new Date().getTime();\n}\nfunction currentISOTime() {\n return new Date().toISOString();\n}\nfunction safeSetTimeout(fn, timeout) {\n const t = setTimeout(fn, timeout);\n t?.unref && t?.unref();\n return t;\n}\nconst isPromise = (obj)=>obj && 'function' == typeof obj.then;\nconst isError = (x)=>x instanceof Error;\nfunction getFetch() {\n return 'undefined' != typeof fetch ? fetch : void 0 !== globalThis.fetch ? globalThis.fetch : void 0;\n}\nfunction allSettled(promises) {\n return Promise.all(promises.map((p)=>(p ?? Promise.resolve()).then((value)=>({\n status: 'fulfilled',\n value\n }), (reason)=>({\n status: 'rejected',\n reason\n }))));\n}\nexport { STRING_FORMAT, allSettled, assert, currentISOTime, currentTimestamp, getFetch, isError, isPromise, removeTrailingSlash, retriable, safeSetTimeout };\n","class SimpleEventEmitter {\n constructor(){\n this.events = {};\n this.events = {};\n }\n on(event, listener) {\n if (!this.events[event]) this.events[event] = [];\n this.events[event].push(listener);\n return ()=>{\n this.events[event] = this.events[event].filter((x)=>x !== listener);\n };\n }\n emit(event, payload) {\n for (const listener of this.events[event] || [])listener(payload);\n for (const listener of this.events['*'] || [])listener(event, payload);\n }\n}\nexport { SimpleEventEmitter };\n","function isGzipSupported() {\n return 'CompressionStream' in globalThis;\n}\nasync function gzipCompress(input, isDebug = true) {\n try {\n const dataStream = new Blob([\n input\n ], {\n type: 'text/plain'\n }).stream();\n const compressedStream = dataStream.pipeThrough(new CompressionStream('gzip'));\n return await new Response(compressedStream).blob();\n } catch (error) {\n if (isDebug) console.error('Failed to gzip compress data', error);\n return null;\n }\n}\nexport { gzipCompress, isGzipSupported };\n","import { SimpleEventEmitter } from \"./eventemitter.mjs\";\nimport { getFeatureFlagValue, normalizeFlagsResponse } from \"./featureFlagUtils.mjs\";\nimport { gzipCompress, isGzipSupported } from \"./gzip.mjs\";\nimport { PostHogPersistedProperty } from \"./types.mjs\";\nimport { PromiseQueue, STRING_FORMAT, allSettled, assert, createLogger, currentISOTime, removeTrailingSlash, retriable, safeSetTimeout } from \"./utils/index.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nclass PostHogFetchHttpError extends Error {\n constructor(response, reqByteLength){\n super('HTTP error while fetching PostHog: status=' + response.status + ', reqByteLength=' + reqByteLength), this.response = response, this.reqByteLength = reqByteLength, this.name = 'PostHogFetchHttpError';\n }\n get status() {\n return this.response.status;\n }\n get text() {\n return this.response.text();\n }\n get json() {\n return this.response.json();\n }\n}\nclass PostHogFetchNetworkError extends Error {\n constructor(error){\n super('Network error while fetching PostHog', error instanceof Error ? {\n cause: error\n } : {}), this.error = error, this.name = 'PostHogFetchNetworkError';\n }\n}\nconst maybeAdd = (key, value)=>void 0 !== value ? {\n [key]: value\n } : {};\nasync function logFlushError(err) {\n if (err instanceof PostHogFetchHttpError) {\n let text = '';\n try {\n text = await err.text;\n } catch {}\n console.error(`Error while flushing PostHog: message=${err.message}, response body=${text}`, err);\n } else console.error('Error while flushing PostHog', err);\n return Promise.resolve();\n}\nfunction isPostHogFetchError(err) {\n return 'object' == typeof err && (err instanceof PostHogFetchHttpError || err instanceof PostHogFetchNetworkError);\n}\nfunction isPostHogFetchContentTooLargeError(err) {\n return 'object' == typeof err && err instanceof PostHogFetchHttpError && 413 === err.status;\n}\nvar posthog_core_stateless_QuotaLimitedFeature = /*#__PURE__*/ function(QuotaLimitedFeature) {\n QuotaLimitedFeature[\"FeatureFlags\"] = \"feature_flags\";\n QuotaLimitedFeature[\"Recordings\"] = \"recordings\";\n return QuotaLimitedFeature;\n}({});\nclass PostHogCoreStateless {\n constructor(apiKey, options = {}){\n this.flushPromise = null;\n this.shutdownPromise = null;\n this.promiseQueue = new PromiseQueue();\n this._events = new SimpleEventEmitter();\n this._isInitialized = false;\n assert(apiKey, \"You must pass your PostHog project's api key.\");\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.preloadFeatureFlags = options.preloadFeatureFlags ?? true;\n this.defaultOptIn = options.defaultOptIn ?? true;\n this.disableSurveys = options.disableSurveys ?? false;\n this._retryOptions = {\n retryCount: options.fetchRetryCount ?? 3,\n retryDelay: options.fetchRetryDelay ?? 3000,\n retryCheck: isPostHogFetchError\n };\n this.requestTimeout = options.requestTimeout ?? 10000;\n this.featureFlagsRequestTimeoutMs = options.featureFlagsRequestTimeoutMs ?? 3000;\n this.remoteConfigRequestTimeoutMs = options.remoteConfigRequestTimeoutMs ?? 3000;\n this.disableGeoip = options.disableGeoip ?? true;\n this.disabled = options.disabled ?? false;\n this.historicalMigration = options?.historicalMigration ?? false;\n this.evaluationEnvironments = options?.evaluationEnvironments;\n this._initPromise = Promise.resolve();\n this._isInitialized = true;\n this._logger = createLogger('[PostHog]', this.logMsgIfDebug.bind(this));\n this.disableCompression = !isGzipSupported() || (options?.disableCompression ?? false);\n }\n logMsgIfDebug(fn) {\n if (this.isDebug) fn();\n }\n wrap(fn) {\n if (this.disabled) return void this._logger.warn('The client is disabled');\n if (this._isInitialized) return fn();\n this._initPromise.then(()=>fn());\n }\n getCommonEventProperties() {\n return {\n $lib: this.getLibraryId(),\n $lib_version: this.getLibraryVersion()\n };\n }\n get optedOut() {\n return this.getPersistedProperty(PostHogPersistedProperty.OptedOut) ?? !this.defaultOptIn;\n }\n async optIn() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, false);\n });\n }\n async optOut() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, true);\n });\n }\n on(event, cb) {\n return this._events.on(event, cb);\n }\n debug(enabled = true) {\n this.removeDebugCallback?.();\n if (enabled) {\n const removeDebugCallback = this.on('*', (event, payload)=>this._logger.info(event, payload));\n this.removeDebugCallback = ()=>{\n removeDebugCallback();\n this.removeDebugCallback = void 0;\n };\n }\n }\n get isDebug() {\n return !!this.removeDebugCallback;\n }\n get isDisabled() {\n return this.disabled;\n }\n buildPayload(payload) {\n return {\n distinct_id: payload.distinct_id,\n event: payload.event,\n properties: {\n ...payload.properties || {},\n ...this.getCommonEventProperties()\n }\n };\n }\n addPendingPromise(promise) {\n return this.promiseQueue.add(promise);\n }\n identifyStateless(distinctId, properties, options) {\n this.wrap(()=>{\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties\n })\n };\n this.enqueue('identify', payload, options);\n });\n }\n async identifyStatelessImmediate(distinctId, properties, options) {\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties\n })\n };\n await this.sendImmediate('identify', payload, options);\n }\n captureStateless(distinctId, event, properties, options) {\n this.wrap(()=>{\n const payload = this.buildPayload({\n distinct_id: distinctId,\n event,\n properties\n });\n this.enqueue('capture', payload, options);\n });\n }\n async captureStatelessImmediate(distinctId, event, properties, options) {\n const payload = this.buildPayload({\n distinct_id: distinctId,\n event,\n properties\n });\n await this.sendImmediate('capture', payload, options);\n }\n aliasStateless(alias, distinctId, properties, options) {\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 this.enqueue('alias', payload, options);\n });\n }\n async aliasStatelessImmediate(alias, distinctId, properties, options) {\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 await this.sendImmediate('alias', payload, options);\n }\n groupIdentifyStateless(groupType, groupKey, groupProperties, options, distinctId, eventProperties) {\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 this.enqueue('capture', payload, options);\n });\n }\n async getRemoteConfig() {\n await this._initPromise;\n let host = this.host;\n if ('https://us.i.posthog.com' === host) host = 'https://us-assets.i.posthog.com';\n else if ('https://eu.i.posthog.com' === host) host = 'https://eu-assets.i.posthog.com';\n const url = `${host}/array/${this.apiKey}/config`;\n const fetchOptions = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n }\n };\n return this.fetchWithRetry(url, fetchOptions, {\n retryCount: 0\n }, this.remoteConfigRequestTimeoutMs).then((response)=>response.json()).catch((error)=>{\n this._logger.error('Remote config could not be loaded', error);\n this._events.emit('error', error);\n });\n }\n async getFlags(distinctId, groups = {}, personProperties = {}, groupProperties = {}, extraPayload = {}, fetchConfig = true) {\n await this._initPromise;\n const configParam = fetchConfig ? '&config=true' : '';\n const url = `${this.host}/flags/?v=2${configParam}`;\n const requestData = {\n token: this.apiKey,\n distinct_id: distinctId,\n groups,\n person_properties: personProperties,\n group_properties: groupProperties,\n ...extraPayload\n };\n if (this.evaluationEnvironments && this.evaluationEnvironments.length > 0) requestData.evaluation_environments = this.evaluationEnvironments;\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(requestData)\n };\n this._logger.info('Flags URL', url);\n return this.fetchWithRetry(url, fetchOptions, {\n retryCount: 0\n }, this.featureFlagsRequestTimeoutMs).then((response)=>response.json()).then((response)=>normalizeFlagsResponse(response)).catch((error)=>{\n this._events.emit('error', error);\n });\n }\n async getFeatureFlagStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const flagDetailResponse = await this.getFeatureFlagDetailStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);\n if (void 0 === flagDetailResponse) return {\n response: void 0,\n requestId: void 0\n };\n let response = getFeatureFlagValue(flagDetailResponse.response);\n if (void 0 === response) response = false;\n return {\n response,\n requestId: flagDetailResponse.requestId\n };\n }\n async getFeatureFlagDetailStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const flagsResponse = await this.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (void 0 === flagsResponse) return;\n const featureFlags = flagsResponse.flags;\n const flagDetail = featureFlags[key];\n return {\n response: flagDetail,\n requestId: flagsResponse.requestId,\n evaluatedAt: flagsResponse.evaluatedAt\n };\n }\n async getFeatureFlagPayloadStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const payloads = await this.getFeatureFlagPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (!payloads) return;\n const response = payloads[key];\n if (void 0 === response) return null;\n return response;\n }\n async getFeatureFlagPayloadsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const payloads = (await this.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate)).payloads;\n return payloads;\n }\n async getFeatureFlagsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n return await this.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate);\n }\n async getFeatureFlagsAndPayloadsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const featureFlagDetails = await this.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate);\n if (!featureFlagDetails) return {\n flags: void 0,\n payloads: void 0,\n requestId: void 0\n };\n return {\n flags: featureFlagDetails.featureFlags,\n payloads: featureFlagDetails.featureFlagPayloads,\n requestId: featureFlagDetails.requestId\n };\n }\n async getFeatureFlagDetailsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const extraPayload = {};\n if (disableGeoip ?? this.disableGeoip) extraPayload['geoip_disable'] = true;\n if (flagKeysToEvaluate) extraPayload['flag_keys_to_evaluate'] = flagKeysToEvaluate;\n const flagsResponse = await this.getFlags(distinctId, groups, personProperties, groupProperties, extraPayload);\n if (void 0 === flagsResponse) return;\n if (flagsResponse.errorsWhileComputingFlags) console.error('[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 if (flagsResponse.quotaLimited?.includes(\"feature_flags\")) {\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n return {\n flags: {},\n featureFlags: {},\n featureFlagPayloads: {},\n requestId: flagsResponse?.requestId,\n quotaLimited: flagsResponse.quotaLimited\n };\n }\n return flagsResponse;\n }\n async getSurveysStateless() {\n await this._initPromise;\n if (true === this.disableSurveys) {\n this._logger.info('Loading surveys is disabled.');\n return [];\n }\n const url = `${this.host}/api/surveys/?token=${this.apiKey}`;\n const fetchOptions = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n }\n };\n const response = await this.fetchWithRetry(url, fetchOptions).then((response)=>{\n if (200 !== response.status || !response.json) {\n const msg = `Surveys API could not be loaded: ${response.status}`;\n const error = new Error(msg);\n this._logger.error(error);\n this._events.emit('error', new Error(msg));\n return;\n }\n return response.json();\n }).catch((error)=>{\n this._logger.error('Surveys API could not be loaded', error);\n this._events.emit('error', error);\n });\n const newSurveys = response?.surveys;\n if (newSurveys) this._logger.info('Surveys fetched from API: ', JSON.stringify(newSurveys));\n return newSurveys ?? [];\n }\n get props() {\n if (!this._props) this._props = this.getPersistedProperty(PostHogPersistedProperty.Props);\n return this._props || {};\n }\n set props(val) {\n this._props = val;\n }\n async register(properties) {\n this.wrap(()=>{\n this.props = {\n ...this.props,\n ...properties\n };\n this.setPersistedProperty(PostHogPersistedProperty.Props, this.props);\n });\n }\n async unregister(property) {\n this.wrap(()=>{\n delete this.props[property];\n this.setPersistedProperty(PostHogPersistedProperty.Props, this.props);\n });\n }\n enqueue(type, _message, options) {\n this.wrap(()=>{\n if (this.optedOut) return void this._events.emit(type, \"Library is disabled. Not sending event. To re-enable, call posthog.optIn()\");\n const message = this.prepareMessage(type, _message, options);\n const queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (queue.length >= this.maxQueueSize) {\n queue.shift();\n this._logger.info('Queue is full, the oldest event is dropped.');\n }\n queue.push({\n message\n });\n this.setPersistedProperty(PostHogPersistedProperty.Queue, queue);\n this._events.emit(type, message);\n if (queue.length >= this.flushAt) this.flushBackground();\n if (this.flushInterval && !this._flushTimer) this._flushTimer = safeSetTimeout(()=>this.flushBackground(), this.flushInterval);\n });\n }\n async sendImmediate(type, _message, options) {\n if (this.disabled) return void this._logger.warn('The client is disabled');\n if (!this._isInitialized) await this._initPromise;\n if (this.optedOut) return void this._events.emit(type, \"Library is disabled. Not sending event. To re-enable, call posthog.optIn()\");\n const data = {\n api_key: this.apiKey,\n batch: [\n this.prepareMessage(type, _message, options)\n ],\n sent_at: currentISOTime()\n };\n if (this.historicalMigration) data.historical_migration = true;\n const payload = JSON.stringify(data);\n const url = `${this.host}/batch/`;\n const gzippedPayload = this.disableCompression ? null : await gzipCompress(payload, this.isDebug);\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n ...null !== gzippedPayload && {\n 'Content-Encoding': 'gzip'\n }\n },\n body: gzippedPayload || payload\n };\n try {\n await this.fetchWithRetry(url, fetchOptions);\n } catch (err) {\n this._events.emit('error', err);\n }\n }\n prepareMessage(type, _message, options) {\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 const addGeoipDisableProperty = options?.disableGeoip ?? this.disableGeoip;\n if (addGeoipDisableProperty) {\n if (!message.properties) message.properties = {};\n message['properties']['$geoip_disable'] = true;\n }\n if (message.distinctId) {\n message.distinct_id = message.distinctId;\n delete message.distinctId;\n }\n return message;\n }\n clearFlushTimer() {\n if (this._flushTimer) {\n clearTimeout(this._flushTimer);\n this._flushTimer = void 0;\n }\n }\n flushBackground() {\n this.flush().catch(async (err)=>{\n await logFlushError(err);\n });\n }\n async flush() {\n const nextFlushPromise = allSettled([\n this.flushPromise\n ]).then(()=>this._flush());\n this.flushPromise = nextFlushPromise;\n this.addPendingPromise(nextFlushPromise);\n allSettled([\n nextFlushPromise\n ]).then(()=>{\n if (this.flushPromise === nextFlushPromise) this.flushPromise = null;\n });\n return nextFlushPromise;\n }\n getCustomHeaders() {\n const customUserAgent = this.getCustomUserAgent();\n const headers = {};\n if (customUserAgent && '' !== customUserAgent) headers['User-Agent'] = customUserAgent;\n return headers;\n }\n async _flush() {\n this.clearFlushTimer();\n await this._initPromise;\n let queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (!queue.length) return;\n const sentMessages = [];\n const originalQueueLength = queue.length;\n while(queue.length > 0 && sentMessages.length < originalQueueLength){\n const batchItems = queue.slice(0, this.maxBatchSize);\n const batchMessages = batchItems.map((item)=>item.message);\n const persistQueueChange = ()=>{\n const refreshedQueue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n const newQueue = refreshedQueue.slice(batchItems.length);\n this.setPersistedProperty(PostHogPersistedProperty.Queue, newQueue);\n queue = newQueue;\n };\n const data = {\n api_key: this.apiKey,\n batch: batchMessages,\n sent_at: currentISOTime()\n };\n if (this.historicalMigration) data.historical_migration = true;\n const payload = JSON.stringify(data);\n const url = `${this.host}/batch/`;\n const gzippedPayload = this.disableCompression ? null : await gzipCompress(payload, this.isDebug);\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n ...null !== gzippedPayload && {\n 'Content-Encoding': 'gzip'\n }\n },\n body: gzippedPayload || payload\n };\n const retryOptions = {\n retryCheck: (err)=>{\n if (isPostHogFetchContentTooLargeError(err)) return false;\n return isPostHogFetchError(err);\n }\n };\n try {\n await this.fetchWithRetry(url, fetchOptions, retryOptions);\n } catch (err) {\n if (isPostHogFetchContentTooLargeError(err) && batchMessages.length > 1) {\n this.maxBatchSize = Math.max(1, Math.floor(batchMessages.length / 2));\n this._logger.warn(`Received 413 when sending batch of size ${batchMessages.length}, reducing batch size to ${this.maxBatchSize}`);\n continue;\n }\n if (!(err instanceof PostHogFetchNetworkError)) persistQueueChange();\n this._events.emit('error', err);\n throw err;\n }\n persistQueueChange();\n sentMessages.push(...batchMessages);\n }\n this._events.emit('flush', sentMessages);\n }\n async fetchWithRetry(url, options, retryOptions, requestTimeout) {\n AbortSignal.timeout ??= function(ms) {\n const ctrl = new AbortController();\n setTimeout(()=>ctrl.abort(), ms);\n return ctrl.signal;\n };\n const body = options.body ? options.body : '';\n let reqByteLength = -1;\n try {\n reqByteLength = body instanceof Blob ? body.size : Buffer.byteLength(body, STRING_FORMAT);\n } catch {\n if (body instanceof Blob) reqByteLength = body.size;\n else {\n const encoded = new TextEncoder().encode(body);\n reqByteLength = encoded.length;\n }\n }\n return await retriable(async ()=>{\n let res = null;\n try {\n res = await this.fetch(url, {\n signal: AbortSignal.timeout(requestTimeout ?? this.requestTimeout),\n ...options\n });\n } catch (e) {\n throw new PostHogFetchNetworkError(e);\n }\n const isNoCors = 'no-cors' === options.mode;\n if (!isNoCors && (res.status < 200 || res.status >= 400)) throw new PostHogFetchHttpError(res, reqByteLength);\n return res;\n }, {\n ...this._retryOptions,\n ...retryOptions\n });\n }\n async _shutdown(shutdownTimeoutMs = 30000) {\n await this._initPromise;\n let hasTimedOut = false;\n this.clearFlushTimer();\n const doShutdown = async ()=>{\n try {\n await this.promiseQueue.join();\n while(true){\n const queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (0 === queue.length) break;\n await this.flush();\n if (hasTimedOut) break;\n }\n } catch (e) {\n if (!isPostHogFetchError(e)) throw e;\n await logFlushError(e);\n }\n };\n return Promise.race([\n new Promise((_, reject)=>{\n safeSetTimeout(()=>{\n this._logger.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 async shutdown(shutdownTimeoutMs = 30000) {\n if (this.shutdownPromise) this._logger.warn('shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup');\n else this.shutdownPromise = this._shutdown(shutdownTimeoutMs).finally(()=>{\n this.shutdownPromise = null;\n });\n return this.shutdownPromise;\n }\n}\nexport { PostHogCoreStateless, posthog_core_stateless_QuotaLimitedFeature as QuotaLimitedFeature, logFlushError, maybeAdd };\n","import { createFlagsResponseFromFlagsAndPayloads, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, normalizeFlagsResponse, updateFlagValue } from \"./featureFlagUtils.mjs\";\nimport { Compression, PostHogPersistedProperty } from \"./types.mjs\";\nimport { PostHogCoreStateless, QuotaLimitedFeature, maybeAdd } from \"./posthog-core-stateless.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nimport { isPlainError } from \"./utils/index.mjs\";\nclass PostHogCore extends PostHogCoreStateless {\n constructor(apiKey, options){\n const disableGeoipOption = options?.disableGeoip ?? false;\n const featureFlagsRequestTimeoutMs = options?.featureFlagsRequestTimeoutMs ?? 10000;\n super(apiKey, {\n ...options,\n disableGeoip: disableGeoipOption,\n featureFlagsRequestTimeoutMs\n }), this.flagCallReported = {}, this._sessionMaxLengthSeconds = 86400, this.sessionProps = {};\n this.sendFeatureFlagEvent = options?.sendFeatureFlagEvent ?? true;\n this._sessionExpirationTimeSeconds = options?.sessionExpirationTimeSeconds ?? 1800;\n }\n setupBootstrap(options) {\n const bootstrap = options?.bootstrap;\n if (!bootstrap) return;\n if (bootstrap.distinctId) if (bootstrap.isIdentifiedId) {\n const distinctId = this.getPersistedProperty(PostHogPersistedProperty.DistinctId);\n if (!distinctId) this.setPersistedProperty(PostHogPersistedProperty.DistinctId, bootstrap.distinctId);\n } else {\n const anonymousId = this.getPersistedProperty(PostHogPersistedProperty.AnonymousId);\n if (!anonymousId) this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, bootstrap.distinctId);\n }\n const bootstrapFeatureFlags = bootstrap.featureFlags;\n const bootstrapFeatureFlagPayloads = bootstrap.featureFlagPayloads ?? {};\n if (bootstrapFeatureFlags && Object.keys(bootstrapFeatureFlags).length) {\n const normalizedBootstrapFeatureFlagDetails = createFlagsResponseFromFlagsAndPayloads(bootstrapFeatureFlags, bootstrapFeatureFlagPayloads);\n if (Object.keys(normalizedBootstrapFeatureFlagDetails.flags).length > 0) {\n this.setBootstrappedFeatureFlagDetails(normalizedBootstrapFeatureFlagDetails);\n const currentFeatureFlagDetails = this.getKnownFeatureFlagDetails() || {\n flags: {},\n requestId: void 0\n };\n const newFeatureFlagDetails = {\n flags: {\n ...normalizedBootstrapFeatureFlagDetails.flags,\n ...currentFeatureFlagDetails.flags\n },\n requestId: normalizedBootstrapFeatureFlagDetails.requestId\n };\n this.setKnownFeatureFlagDetails(newFeatureFlagDetails);\n }\n }\n }\n clearProps() {\n this.props = void 0;\n this.sessionProps = {};\n this.flagCallReported = {};\n }\n on(event, cb) {\n return this._events.on(event, cb);\n }\n reset(propertiesToKeep) {\n this.wrap(()=>{\n const allPropertiesToKeep = [\n PostHogPersistedProperty.Queue,\n ...propertiesToKeep || []\n ];\n this.clearProps();\n for (const key of Object.keys(PostHogPersistedProperty))if (!allPropertiesToKeep.includes(PostHogPersistedProperty[key])) this.setPersistedProperty(PostHogPersistedProperty[key], null);\n this.reloadFeatureFlags();\n });\n }\n getCommonEventProperties() {\n const featureFlags = this.getFeatureFlags();\n const featureVariantProperties = {};\n if (featureFlags) for (const [feature, variant] of Object.entries(featureFlags))featureVariantProperties[`$feature/${feature}`] = variant;\n return {\n ...maybeAdd('$active_feature_flags', featureFlags ? Object.keys(featureFlags) : void 0),\n ...featureVariantProperties,\n ...super.getCommonEventProperties()\n };\n }\n enrichProperties(properties) {\n return {\n ...this.props,\n ...this.sessionProps,\n ...properties || {},\n ...this.getCommonEventProperties(),\n $session_id: this.getSessionId()\n };\n }\n getSessionId() {\n if (!this._isInitialized) return '';\n let sessionId = this.getPersistedProperty(PostHogPersistedProperty.SessionId);\n const sessionLastTimestamp = this.getPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp) || 0;\n const sessionStartTimestamp = this.getPersistedProperty(PostHogPersistedProperty.SessionStartTimestamp) || 0;\n const now = Date.now();\n const sessionLastDif = now - sessionLastTimestamp;\n const sessionStartDif = now - sessionStartTimestamp;\n if (!sessionId || sessionLastDif > 1000 * this._sessionExpirationTimeSeconds || sessionStartDif > 1000 * this._sessionMaxLengthSeconds) {\n sessionId = uuidv7();\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, sessionId);\n this.setPersistedProperty(PostHogPersistedProperty.SessionStartTimestamp, now);\n }\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, now);\n return sessionId;\n }\n resetSessionId() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.SessionId, null);\n this.setPersistedProperty(PostHogPersistedProperty.SessionLastTimestamp, null);\n this.setPersistedProperty(PostHogPersistedProperty.SessionStartTimestamp, null);\n });\n }\n getAnonymousId() {\n if (!this._isInitialized) return '';\n let anonId = this.getPersistedProperty(PostHogPersistedProperty.AnonymousId);\n if (!anonId) {\n anonId = uuidv7();\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, anonId);\n }\n return anonId;\n }\n getDistinctId() {\n if (!this._isInitialized) return '';\n return this.getPersistedProperty(PostHogPersistedProperty.DistinctId) || this.getAnonymousId();\n }\n registerForSession(properties) {\n this.sessionProps = {\n ...this.sessionProps,\n ...properties\n };\n }\n unregisterForSession(property) {\n delete this.sessionProps[property];\n }\n identify(distinctId, properties, options) {\n this.wrap(()=>{\n const previousDistinctId = this.getDistinctId();\n distinctId = distinctId || previousDistinctId;\n if (properties?.$groups) this.groups(properties.$groups);\n const userPropsOnce = properties?.$set_once;\n delete properties?.$set_once;\n const userProps = properties?.$set || properties;\n const allProperties = this.enrichProperties({\n $anon_distinct_id: this.getAnonymousId(),\n ...maybeAdd('$set', userProps),\n ...maybeAdd('$set_once', userPropsOnce)\n });\n if (distinctId !== previousDistinctId) {\n this.setPersistedProperty(PostHogPersistedProperty.AnonymousId, previousDistinctId);\n this.setPersistedProperty(PostHogPersistedProperty.DistinctId, distinctId);\n this.reloadFeatureFlags();\n }\n super.identifyStateless(distinctId, allProperties, options);\n });\n }\n capture(event, properties, options) {\n this.wrap(()=>{\n const distinctId = this.getDistinctId();\n if (properties?.$groups) this.groups(properties.$groups);\n const allProperties = this.enrichProperties(properties);\n super.captureStateless(distinctId, event, allProperties, options);\n });\n }\n alias(alias) {\n this.wrap(()=>{\n const distinctId = this.getDistinctId();\n const allProperties = this.enrichProperties({});\n super.aliasStateless(alias, distinctId, allProperties);\n });\n }\n autocapture(eventType, elements, properties = {}, options) {\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 this.enqueue('autocapture', payload, options);\n });\n }\n groups(groups) {\n this.wrap(()=>{\n const existingGroups = this.props.$groups || {};\n this.register({\n $groups: {\n ...existingGroups,\n ...groups\n }\n });\n if (Object.keys(groups).find((type)=>existingGroups[type] !== groups[type])) this.reloadFeatureFlags();\n });\n }\n group(groupType, groupKey, groupProperties, options) {\n this.wrap(()=>{\n this.groups({\n [groupType]: groupKey\n });\n if (groupProperties) this.groupIdentify(groupType, groupKey, groupProperties, options);\n });\n }\n groupIdentify(groupType, groupKey, groupProperties, options) {\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 setPersonPropertiesForFlags(properties) {\n this.wrap(()=>{\n const existingProperties = this.getPersistedProperty(PostHogPersistedProperty.PersonProperties) || {};\n this.setPersistedProperty(PostHogPersistedProperty.PersonProperties, {\n ...existingProperties,\n ...properties\n });\n });\n }\n resetPersonPropertiesForFlags() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.PersonProperties, null);\n });\n }\n setGroupPropertiesForFlags(properties) {\n this.wrap(()=>{\n const existingProperties = this.getPersistedProperty(PostHogPersistedProperty.GroupProperties) || {};\n if (0 !== Object.keys(existingProperties).length) Object.keys(existingProperties).forEach((groupType)=>{\n existingProperties[groupType] = {\n ...existingProperties[groupType],\n ...properties[groupType]\n };\n delete properties[groupType];\n });\n this.setPersistedProperty(PostHogPersistedProperty.GroupProperties, {\n ...existingProperties,\n ...properties\n });\n });\n }\n resetGroupPropertiesForFlags() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.GroupProperties, null);\n });\n }\n async remoteConfigAsync() {\n await this._initPromise;\n if (this._remoteConfigResponsePromise) return this._remoteConfigResponsePromise;\n return this._remoteConfigAsync();\n }\n async flagsAsync(sendAnonDistinctId = true, fetchConfig = true) {\n await this._initPromise;\n if (this._flagsResponsePromise) return this._flagsResponsePromise;\n return this._flagsAsync(sendAnonDistinctId, fetchConfig);\n }\n cacheSessionReplay(source, response) {\n const sessionReplay = response?.sessionRecording;\n if (sessionReplay) {\n this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, sessionReplay);\n this._logger.info(`Session replay config from ${source}: `, JSON.stringify(sessionReplay));\n } else if ('boolean' == typeof sessionReplay && false === sessionReplay) {\n this._logger.info(`Session replay config from ${source} disabled.`);\n this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, null);\n }\n }\n async _remoteConfigAsync() {\n this._remoteConfigResponsePromise = this._initPromise.then(()=>{\n let remoteConfig = this.getPersistedProperty(PostHogPersistedProperty.RemoteConfig);\n this._logger.info('Cached remote config: ', JSON.stringify(remoteConfig));\n return super.getRemoteConfig().then((response)=>{\n if (response) {\n const remoteConfigWithoutSurveys = {\n ...response\n };\n delete remoteConfigWithoutSurveys.surveys;\n this._logger.info('Fetched remote config: ', JSON.stringify(remoteConfigWithoutSurveys));\n if (false === this.disableSurveys) {\n const surveys = response.surveys;\n let hasSurveys = true;\n if (Array.isArray(surveys)) this._logger.info('Surveys fetched from remote config: ', JSON.stringify(surveys));\n else {\n this._logger.info('There are no surveys.');\n hasSurveys = false;\n }\n if (hasSurveys) this.setPersistedProperty(PostHogPersistedProperty.Surveys, surveys);\n else this.setPersistedProperty(PostHogPersistedProperty.Surveys, null);\n } else this.setPersistedProperty(PostHogPersistedProperty.Surveys, null);\n this.setPersistedProperty(PostHogPersistedProperty.RemoteConfig, remoteConfigWithoutSurveys);\n this.cacheSessionReplay('remote config', response);\n if (false === response.hasFeatureFlags) {\n this.setKnownFeatureFlagDetails({\n flags: {}\n });\n this._logger.warn('Remote config has no feature flags, will not load feature flags.');\n } else if (false !== this.preloadFeatureFlags) this.reloadFeatureFlags();\n if (!response.supportedCompression?.includes(Compression.GZipJS)) this.disableCompression = true;\n remoteConfig = response;\n }\n return remoteConfig;\n });\n }).finally(()=>{\n this._remoteConfigResponsePromise = void 0;\n });\n return this._remoteConfigResponsePromise;\n }\n async _flagsAsync(sendAnonDistinctId = true, fetchConfig = true) {\n this._flagsResponsePromise = this._initPromise.then(async ()=>{\n const distinctId = this.getDistinctId();\n const groups = this.props.$groups || {};\n const personProperties = this.getPersistedProperty(PostHogPersistedProperty.PersonProperties) || {};\n const groupProperties = this.getPersistedProperty(PostHogPersistedProperty.GroupProperties) || {};\n const extraProperties = {\n $anon_distinct_id: sendAnonDistinctId ? this.getAnonymousId() : void 0\n };\n const res = await super.getFlags(distinctId, groups, personProperties, groupProperties, extraProperties, fetchConfig);\n if (res?.quotaLimited?.includes(QuotaLimitedFeature.FeatureFlags)) {\n this.setKnownFeatureFlagDetails(null);\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n return res;\n }\n if (res?.featureFlags) {\n if (this.sendFeatureFlagEvent) this.flagCallReported = {};\n let newFeatureFlagDetails = res;\n if (res.errorsWhileComputingFlags) {\n const currentFlagDetails = this.getKnownFeatureFlagDetails();\n this._logger.info('Cached feature flags: ', JSON.stringify(currentFlagDetails));\n newFeatureFlagDetails = {\n ...res,\n flags: {\n ...currentFlagDetails?.flags,\n ...res.flags\n }\n };\n }\n this.setKnownFeatureFlagDetails(newFeatureFlagDetails);\n this.setPersistedProperty(PostHogPersistedProperty.FlagsEndpointWasHit, true);\n this.cacheSessionReplay('flags', res);\n }\n return res;\n }).finally(()=>{\n this._flagsResponsePromise = void 0;\n });\n return this._flagsResponsePromise;\n }\n setKnownFeatureFlagDetails(flagsResponse) {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.FeatureFlagDetails, flagsResponse);\n this._events.emit('featureflags', getFlagValuesFromFlags(flagsResponse?.flags ?? {}));\n });\n }\n getKnownFeatureFlagDetails() {\n const storedDetails = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlagDetails);\n if (!storedDetails) {\n const featureFlags = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlags);\n const featureFlagPayloads = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlagPayloads);\n if (void 0 === featureFlags && void 0 === featureFlagPayloads) return;\n return createFlagsResponseFromFlagsAndPayloads(featureFlags ?? {}, featureFlagPayloads ?? {});\n }\n return normalizeFlagsResponse(storedDetails);\n }\n getKnownFeatureFlags() {\n const featureFlagDetails = this.getKnownFeatureFlagDetails();\n if (!featureFlagDetails) return;\n return getFlagValuesFromFlags(featureFlagDetails.flags);\n }\n getKnownFeatureFlagPayloads() {\n const featureFlagDetails = this.getKnownFeatureFlagDetails();\n if (!featureFlagDetails) return;\n return getPayloadsFromFlags(featureFlagDetails.flags);\n }\n getBootstrappedFeatureFlagDetails() {\n const details = this.getPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlagDetails);\n if (!details) return;\n return details;\n }\n setBootstrappedFeatureFlagDetails(details) {\n this.setPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlagDetails, details);\n }\n getBootstrappedFeatureFlags() {\n const details = this.getBootstrappedFeatureFlagDetails();\n if (!details) return;\n return getFlagValuesFromFlags(details.flags);\n }\n getBootstrappedFeatureFlagPayloads() {\n const details = this.getBootstrappedFeatureFlagDetails();\n if (!details) return;\n return getPayloadsFromFlags(details.flags);\n }\n getFeatureFlag(key) {\n const details = this.getFeatureFlagDetails();\n if (!details) return;\n const featureFlag = details.flags[key];\n let response = getFeatureFlagValue(featureFlag);\n if (void 0 === response) response = false;\n if (this.sendFeatureFlagEvent && !this.flagCallReported[key]) {\n const bootstrappedResponse = this.getBootstrappedFeatureFlags()?.[key];\n const bootstrappedPayload = this.getBootstrappedFeatureFlagPayloads()?.[key];\n this.flagCallReported[key] = true;\n this.capture('$feature_flag_called', {\n $feature_flag: key,\n $feature_flag_response: response,\n ...maybeAdd('$feature_flag_id', featureFlag?.metadata?.id),\n ...maybeAdd('$feature_flag_version', featureFlag?.metadata?.version),\n ...maybeAdd('$feature_flag_reason', featureFlag?.reason?.description ?? featureFlag?.reason?.code),\n ...maybeAdd('$feature_flag_bootstrapped_response', bootstrappedResponse),\n ...maybeAdd('$feature_flag_bootstrapped_payload', bootstrappedPayload),\n $used_bootstrap_value: !this.getPersistedProperty(PostHogPersistedProperty.FlagsEndpointWasHit),\n ...maybeAdd('$feature_flag_request_id', details.requestId),\n ...maybeAdd('$feature_flag_evaluated_at', details.evaluatedAt)\n });\n }\n return response;\n }\n getFeatureFlagPayload(key) {\n const payloads = this.getFeatureFlagPayloads();\n if (!payloads) return;\n const response = payloads[key];\n if (void 0 === response) return null;\n return response;\n }\n getFeatureFlagPayloads() {\n return this.getFeatureFlagDetails()?.featureFlagPayloads;\n }\n getFeatureFlags() {\n return this.getFeatureFlagDetails()?.featureFlags;\n }\n getFeatureFlagDetails() {\n let details = this.getKnownFeatureFlagDetails();\n const overriddenFlags = this.getPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags);\n if (!overriddenFlags) return details;\n details = details ?? {\n featureFlags: {},\n featureFlagPayloads: {},\n flags: {}\n };\n const flags = details.flags ?? {};\n for(const key in overriddenFlags)if (overriddenFlags[key]) flags[key] = updateFlagValue(flags[key], overriddenFlags[key]);\n else delete flags[key];\n const result = {\n ...details,\n flags\n };\n return normalizeFlagsResponse(result);\n }\n getFeatureFlagsAndPayloads() {\n const flags = this.getFeatureFlags();\n const payloads = this.getFeatureFlagPayloads();\n return {\n flags,\n payloads\n };\n }\n isFeatureEnabled(key) {\n const response = this.getFeatureFlag(key);\n if (void 0 === response) return;\n return !!response;\n }\n reloadFeatureFlags(options) {\n this.flagsAsync(true).then((res)=>{\n options?.cb?.(void 0, res?.featureFlags);\n }).catch((e)=>{\n options?.cb?.(e, void 0);\n if (!options?.cb) this._logger.info('Error reloading feature flags', e);\n });\n }\n async reloadRemoteConfigAsync() {\n return await this.remoteConfigAsync();\n }\n async reloadFeatureFlagsAsync(sendAnonDistinctId) {\n return (await this.flagsAsync(sendAnonDistinctId ?? true))?.featureFlags;\n }\n onFeatureFlags(cb) {\n return this.on('featureflags', async ()=>{\n const flags = this.getFeatureFlags();\n if (flags) cb(flags);\n });\n }\n onFeatureFlag(key, cb) {\n return this.on('featureflags', async ()=>{\n const flagResponse = this.getFeatureFlag(key);\n if (void 0 !== flagResponse) cb(flagResponse);\n });\n }\n async overrideFeatureFlag(flags) {\n this.wrap(()=>{\n if (null === flags) return this.setPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags, null);\n return this.setPersistedProperty(PostHogPersistedProperty.OverrideFeatureFlags, flags);\n });\n }\n captureException(error, additionalProperties) {\n const properties = {\n $exception_level: 'error',\n $exception_list: [\n {\n type: isPlainError(error) ? error.name : 'Error',\n value: isPlainError(error) ? error.message : error,\n mechanism: {\n handled: true,\n synthetic: false\n }\n }\n ],\n ...additionalProperties\n };\n this.capture('$exception', properties);\n }\n captureTraceFeedback(traceId, userFeedback) {\n this.capture('$ai_feedback', {\n $ai_feedback_text: userFeedback,\n $ai_trace_id: String(traceId)\n });\n }\n captureTraceMetric(traceId, metricName, metricValue) {\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}\nexport { PostHogCore };\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext();\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? 1 : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext() {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser)\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { isUndefined } from \"../../utils/index.mjs\";\nconst UNKNOWN_FUNCTION = '?';\nfunction createFrame(platform, filename, func, lineno, colno) {\n const frame = {\n platform,\n filename,\n function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,\n in_app: true\n };\n if (!isUndefined(lineno)) frame.lineno = lineno;\n if (!isUndefined(colno)) frame.colno = colno;\n return frame;\n}\nexport { UNKNOWN_FUNCTION, createFrame };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst extractSafariExtensionDetails = (func, filename)=>{\n const isSafariExtension = -1 !== func.indexOf('safari-extension');\n const isSafariWebExtension = -1 !== func.indexOf('safari-web-extension');\n return isSafariExtension || isSafariWebExtension ? [\n -1 !== func.indexOf('@') ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n ] : [\n func,\n filename\n ];\n};\nexport { extractSafariExtensionDetails };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeStackLineParser = (line, platform)=>{\n const noFnParts = chromeRegexNoFnName.exec(line);\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);\n }\n const parts = chromeRegex.exec(line);\n if (parts) {\n const isEval = parts[2] && 0 === parts[2].indexOf('eval');\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n if (subMatch) {\n parts[2] = subMatch[1];\n parts[3] = subMatch[2];\n parts[4] = subMatch[3];\n }\n }\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n }\n};\nexport { chromeStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst geckoStackLineParser = (line, platform)=>{\n const parts = geckoREgex.exec(line);\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n if (subMatch) {\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = '';\n }\n }\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n }\n};\nexport { geckoStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjsStackLineParser = (line, platform)=>{\n const parts = winjsRegex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nexport { winjsStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10StackLineParser = (line, platform)=>{\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11StackLineParser = (line, platform)=>{\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nexport { opera10StackLineParser, opera11StackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createDefaultStackParser() {\n return createStackParser(\"web:javascript\", chromeStackLineParser, geckoStackLineParser);\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createDefaultStackParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isBuiltin, isString } from \"../../utils/index.mjs\";\nclass DOMExceptionCoercer {\n match(err) {\n return this.isDOMException(err) || this.isDOMError(err);\n }\n coerce(err, ctx) {\n const hasStack = isString(err.stack);\n return {\n type: this.getType(err),\n value: this.getValue(err),\n stack: hasStack ? err.stack : void 0,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(candidate) {\n return this.isDOMError(candidate) ? 'DOMError' : 'DOMException';\n }\n getValue(err) {\n const name = err.name || (this.isDOMError(err) ? 'DOMError' : 'DOMException');\n const message = err.message ? `${name}: ${err.message}` : name;\n return message;\n }\n isDOMException(err) {\n return isBuiltin(err, 'DOMException');\n }\n isDOMError(err) {\n return isBuiltin(err, 'DOMError');\n }\n}\nexport { DOMExceptionCoercer };\n","import { isPlainError } from \"../../utils/index.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isPlainError(err);\n }\n coerce(err, ctx) {\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: this.getStack(err),\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","import { isErrorEvent } from \"../../utils/index.mjs\";\nclass ErrorEventCoercer {\n constructor(){}\n match(err) {\n return isErrorEvent(err) && void 0 != err.error;\n }\n coerce(err, ctx) {\n const exceptionLike = ctx.apply(err.error);\n if (!exceptionLike) return {\n type: 'ErrorEvent',\n value: err.message,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return exceptionLike;\n }\n}\nexport { ErrorEventCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n return isEvent(err) ? err.constructor.name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","import { isBuiltin, isPrimitive } from \"../../utils/index.mjs\";\nclass PromiseRejectionEventCoercer {\n match(err) {\n return isBuiltin(err, 'PromiseRejectionEvent');\n }\n coerce(err, ctx) {\n const reason = this.getUnhandledRejectionReason(err);\n if (isPrimitive(reason)) return {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return ctx.apply(reason);\n }\n getUnhandledRejectionReason(error) {\n if (isPrimitive(error)) return error;\n try {\n if ('reason' in error) return error.reason;\n if ('detail' in error && 'reason' in error.detail) return error.detail.reason;\n } catch {}\n return error;\n }\n}\nexport { PromiseRejectionEventCoercer };\n","export * from \"./dom-exception-coercer.mjs\";\nexport * from \"./error-coercer.mjs\";\nexport * from \"./error-event-coercer.mjs\";\nexport * from \"./string-coercer.mjs\";\nexport * from \"./object-coercer.mjs\";\nexport * from \"./event-coercer.mjs\";\nexport * from \"./primitive-coercer.mjs\";\nexport * from \"./promise-rejection-event.mjs\";\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","export * from \"./error-properties-builder.mjs\";\nexport * from \"./parsers/index.mjs\";\nexport * from \"./coercers/index.mjs\";\nexport * from \"./utils.mjs\";\n","import { getFeatureFlagValue } from \"./featureFlagUtils.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nexport * from \"./utils/index.mjs\";\nexport * from \"./posthog-core.mjs\";\nexport * from \"./posthog-core-stateless.mjs\";\nexport * from \"./types.mjs\";\nimport * as __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ from \"./error-tracking/index.mjs\";\nexport { __WEBPACK_EXTERNAL_MODULE__error_tracking_index_mjs_b3406d6f__ as ErrorTracking, getFeatureFlagValue, uuidv7 };\n","import { ErrorTracking } from \"@posthog/core\";\nimport { createReadStream } from \"node:fs\";\nimport { createInterface } from \"node:readline\";\nconst LRU_FILE_CONTENTS_CACHE = new ErrorTracking.ReduceableCache(25);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new ErrorTracking.ReduceableCache(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\nasync function addSourceContext(frames) {\n const filesToLines = {};\n for(let i = frames.length - 1; i >= 0; i--){\n const frame = frames[i];\n const filename = frame?.filename;\n if (!frame || 'string' != typeof filename || 'number' != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n filesToLines[filename].push(frame.lineno);\n }\n const files = Object.keys(filesToLines);\n if (0 == files.length) return frames;\n const readlinePromises = [];\n for (const file of files){\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) continue;\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) continue;\n filesToLineRanges.sort((a, b)=>a - b);\n const ranges = makeLineReaderRanges(filesToLineRanges);\n if (ranges.every((r)=>rangeExistsInContentCache(file, r))) continue;\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n await Promise.all(readlinePromises).catch(()=>{});\n if (frames && frames.length > 0) addSourceContextToFrames(frames, LRU_FILE_CONTENTS_CACHE);\n LRU_FILE_CONTENTS_CACHE.reduce();\n return frames;\n}\nfunction getContextLinesFromFile(path, ranges, output) {\n return new Promise((resolve)=>{\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream\n });\n function destroyStreamAndResolve() {\n stream.destroy();\n resolve();\n }\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) return void destroyStreamAndResolve();\n let rangeStart = range[0];\n let rangeEnd = range[1];\n function onStreamError() {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n lineReaded.on('line', (line)=>{\n lineNumber++;\n if (lineNumber < rangeStart) return;\n output[lineNumber] = snipLine(line, 0);\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\nfunction addSourceContextToFrames(frames, cache) {\n for (const frame of frames)if (frame.filename && void 0 === frame.context_line && 'number' == typeof frame.lineno) {\n const contents = cache.get(frame.filename);\n if (void 0 === contents) continue;\n addContextToFrame(frame.lineno, frame, contents);\n }\n}\nfunction addContextToFrame(lineno, frame, contents) {\n if (void 0 === frame.lineno || void 0 === contents) return;\n frame.pre_context = [];\n for(let i = makeRangeStart(lineno); i < lineno; i++){\n const line = contents[i];\n if (void 0 === line) return void clearLineContext(frame);\n frame.pre_context.push(line);\n }\n if (void 0 === contents[lineno]) return void clearLineContext(frame);\n frame.context_line = contents[lineno];\n const end = makeRangeEnd(lineno);\n frame.post_context = [];\n for(let i = lineno + 1; i <= end; i++){\n const line = contents[i];\n if (void 0 === line) break;\n frame.post_context.push(line);\n }\n}\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\nfunction shouldSkipContextLinesForFile(path) {\n return path.startsWith('node:') || path.endsWith('.min.js') || path.endsWith('.min.cjs') || path.endsWith('.min.mjs') || path.startsWith('data:');\n}\nfunction shouldSkipContextLinesForFrame(frame) {\n if (void 0 !== frame.lineno && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (void 0 !== frame.colno && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\nfunction rangeExistsInContentCache(file, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (void 0 === contents) return false;\n for(let i = range[0]; i <= range[1]; i++)if (void 0 === contents[i]) return false;\n return true;\n}\nfunction makeLineReaderRanges(lines) {\n if (!lines.length) return [];\n let i = 0;\n const line = lines[0];\n if ('number' != typeof line) return [];\n let current = makeContextRange(line);\n const out = [];\n while(true){\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n const next = lines[i + 1];\n if ('number' != typeof next) break;\n if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;\n else {\n out.push(current);\n current = makeContextRange(next);\n }\n i++;\n }\n return out;\n}\nfunction makeContextRange(line) {\n return [\n makeRangeStart(line),\n makeRangeEnd(line)\n ];\n}\nfunction makeRangeStart(line) {\n return Math.max(1, line - DEFAULT_LINES_OF_CONTEXT);\n}\nfunction makeRangeEnd(line) {\n return line + DEFAULT_LINES_OF_CONTEXT;\n}\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n if (void 0 === value) {\n map.set(key, contents);\n return contents;\n }\n return value;\n}\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) return newLine;\n if (colno > lineLength) colno = lineLength;\n let start = Math.max(colno - 60, 0);\n if (start < 5) start = 0;\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) end = lineLength;\n if (end === lineLength) start = Math.max(end - 140, 0);\n newLine = newLine.slice(start, end);\n if (start > 0) newLine = `...${newLine}`;\n if (end < lineLength) newLine += '...';\n return newLine;\n}\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_LINENO, addSourceContext };\n","function makeUncaughtExceptionHandler(captureFn, onFatalFn) {\n let calledFatalError = false;\n return Object.assign((error)=>{\n const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;\n const processWouldExit = 0 === userProvidedListenersCount;\n captureFn(error, {\n mechanism: {\n type: 'onuncaughtexception',\n handled: false\n }\n });\n if (!calledFatalError && processWouldExit) {\n calledFatalError = true;\n onFatalFn(error);\n }\n }, {\n _posthogErrorHandler: true\n });\n}\nfunction addUncaughtExceptionListener(captureFn, onFatalFn) {\n globalThis.process?.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));\n}\nfunction addUnhandledRejectionListener(captureFn) {\n globalThis.process?.on('unhandledRejection', (reason)=>captureFn(reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n }));\n}\nexport { addUncaughtExceptionListener, addUnhandledRejectionListener };\n","import { addUncaughtExceptionListener, addUnhandledRejectionListener } from \"./autocapture.mjs\";\nimport { BucketedRateLimiter, isObject, uuidv7 } from \"@posthog/core\";\nconst SHUTDOWN_TIMEOUT = 2000;\nclass ErrorTracking {\n constructor(client, options, _logger){\n this.client = client;\n this._exceptionAutocaptureEnabled = options.enableExceptionAutocapture || false;\n this._logger = _logger;\n this._rateLimiter = new BucketedRateLimiter({\n refillRate: 1,\n bucketSize: 10,\n refillInterval: 10000,\n _logger: this._logger\n });\n this.startAutocaptureIfEnabled();\n }\n static isPreviouslyCapturedError(x) {\n return isObject(x) && '__posthog_previously_captured_error' in x && true === x.__posthog_previously_captured_error;\n }\n static async buildEventMessage(error, hint, distinctId, additionalProperties) {\n const properties = {\n ...additionalProperties\n };\n if (!distinctId) properties.$process_person_profile = false;\n const exceptionProperties = this.errorPropertiesBuilder.buildFromUnknown(error, hint);\n exceptionProperties.$exception_list = await this.errorPropertiesBuilder.modifyFrames(exceptionProperties.$exception_list);\n return {\n event: '$exception',\n distinctId: distinctId || uuidv7(),\n properties: {\n ...exceptionProperties,\n ...properties\n }\n };\n }\n startAutocaptureIfEnabled() {\n if (this.isEnabled()) {\n addUncaughtExceptionListener(this.onException.bind(this), this.onFatalError.bind(this));\n addUnhandledRejectionListener(this.onException.bind(this));\n }\n }\n onException(exception, hint) {\n this.client.addPendingPromise((async ()=>{\n if (!ErrorTracking.isPreviouslyCapturedError(exception)) {\n const eventMessage = await ErrorTracking.buildEventMessage(exception, hint);\n const exceptionProperties = eventMessage.properties;\n const exceptionType = exceptionProperties?.$exception_list[0]?.type ?? 'Exception';\n const isRateLimited = this._rateLimiter.consumeRateLimit(exceptionType);\n if (isRateLimited) return void this._logger.info('Skipping exception capture because of client rate limiting.', {\n exception: exceptionType\n });\n return this.client.capture(eventMessage);\n }\n })());\n }\n async onFatalError(exception) {\n console.error(exception);\n await this.client.shutdown(SHUTDOWN_TIMEOUT);\n process.exit(1);\n }\n isEnabled() {\n return !this.client.isDisabled && this._exceptionAutocaptureEnabled;\n }\n shutdown() {\n this._rateLimiter.stop();\n }\n}\nexport { ErrorTracking as default };\n","const version = '5.21.0';\nexport { version };\n","const FeatureFlagError = {\n ERRORS_WHILE_COMPUTING: 'errors_while_computing_flags',\n FLAG_MISSING: 'flag_missing',\n QUOTA_LIMITED: 'quota_limited',\n UNKNOWN_ERROR: 'unknown_error'\n};\nexport { FeatureFlagError };\n","async function hashSHA1(text) {\n const subtle = globalThis.crypto?.subtle;\n if (!subtle) throw new Error('SubtleCrypto API not available');\n const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text));\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((byte)=>byte.toString(16).padStart(2, '0')).join('');\n}\nexport { hashSHA1 };\n","import { safeSetTimeout } from \"@posthog/core\";\nimport { hashSHA1 } from \"./crypto.mjs\";\nconst SIXTY_SECONDS = 60000;\nconst LONG_SCALE = 0xfffffffffffffff;\nconst NULL_VALUES_ALLOWED_OPERATORS = [\n 'is_not'\n];\nclass ClientError extends Error {\n constructor(message){\n super();\n Error.captureStackTrace(this, this.constructor);\n this.name = 'ClientError';\n this.message = message;\n Object.setPrototypeOf(this, ClientError.prototype);\n }\n}\nclass InconclusiveMatchError extends Error {\n constructor(message){\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n Object.setPrototypeOf(this, InconclusiveMatchError.prototype);\n }\n}\nclass RequiresServerEvaluation extends Error {\n constructor(message){\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n Object.setPrototypeOf(this, RequiresServerEvaluation.prototype);\n }\n}\nclass FeatureFlagsPoller {\n constructor({ pollingInterval, personalApiKey, projectApiKey, timeout, host, customHeaders, ...options }){\n this.debugMode = false;\n this.shouldBeginExponentialBackoff = false;\n this.backOffCount = 0;\n this.pollingInterval = pollingInterval;\n this.personalApiKey = personalApiKey;\n this.featureFlags = [];\n this.featureFlagsByKey = {};\n this.groupTypeMapping = {};\n this.cohorts = {};\n this.loadedSuccessfullyOnce = false;\n this.timeout = timeout;\n this.projectApiKey = projectApiKey;\n this.host = host;\n this.poller = void 0;\n this.fetch = options.fetch || fetch;\n this.onError = options.onError;\n this.customHeaders = customHeaders;\n this.onLoad = options.onLoad;\n this.cacheProvider = options.cacheProvider;\n this.strictLocalEvaluation = options.strictLocalEvaluation ?? false;\n this.loadFeatureFlags();\n }\n debug(enabled = true) {\n this.debugMode = enabled;\n }\n logMsgIfDebug(fn) {\n if (this.debugMode) fn();\n }\n async getFeatureFlag(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}) {\n await this.loadFeatureFlags();\n let response;\n let featureFlag;\n if (!this.loadedSuccessfullyOnce) return response;\n featureFlag = this.featureFlagsByKey[key];\n if (void 0 !== featureFlag) try {\n const result = await this.computeFlagAndPayloadLocally(featureFlag, distinctId, groups, personProperties, groupProperties);\n response = result.value;\n this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${key} -> ${response}`));\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${key}: ${e.message}`));\n else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${key}: ${e}`));\n }\n return response;\n }\n async getAllFlagsAndPayloads(distinctId, groups = {}, personProperties = {}, groupProperties = {}, flagKeysToExplicitlyEvaluate) {\n await this.loadFeatureFlags();\n const response = {};\n const payloads = {};\n let fallbackToFlags = 0 == this.featureFlags.length;\n const flagsToEvaluate = flagKeysToExplicitlyEvaluate ? flagKeysToExplicitlyEvaluate.map((key)=>this.featureFlagsByKey[key]).filter(Boolean) : this.featureFlags;\n const sharedEvaluationCache = {};\n await Promise.all(flagsToEvaluate.map(async (flag)=>{\n try {\n const { value: matchValue, payload: matchPayload } = await this.computeFlagAndPayloadLocally(flag, distinctId, groups, personProperties, groupProperties, void 0, sharedEvaluationCache);\n response[flag.key] = matchValue;\n if (matchPayload) payloads[flag.key] = matchPayload;\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`));\n else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${flag.key}: ${e}`));\n fallbackToFlags = true;\n }\n }));\n return {\n response,\n payloads,\n fallbackToFlags\n };\n }\n async computeFlagAndPayloadLocally(flag, distinctId, groups = {}, personProperties = {}, groupProperties = {}, matchValue, evaluationCache, skipLoadCheck = false) {\n if (!skipLoadCheck) await this.loadFeatureFlags();\n if (!this.loadedSuccessfullyOnce) return {\n value: false,\n payload: null\n };\n let flagValue;\n flagValue = void 0 !== matchValue ? matchValue : await this.computeFlagValueLocally(flag, distinctId, groups, personProperties, groupProperties, evaluationCache);\n const payload = this.getFeatureFlagPayload(flag.key, flagValue);\n return {\n value: flagValue,\n payload\n };\n }\n async computeFlagValueLocally(flag, distinctId, groups = {}, personProperties = {}, groupProperties = {}, evaluationCache = {}) {\n if (flag.ensure_experience_continuity) throw new InconclusiveMatchError('Flag has experience continuity enabled');\n if (!flag.active) return false;\n const flagFilters = flag.filters || {};\n const aggregation_group_type_index = flagFilters.aggregation_group_type_index;\n if (void 0 == aggregation_group_type_index) return await this.matchFeatureFlagProperties(flag, distinctId, personProperties, evaluationCache);\n {\n const groupName = this.groupTypeMapping[String(aggregation_group_type_index)];\n if (!groupName) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${aggregation_group_type_index} for feature flag ${flag.key}`));\n throw new InconclusiveMatchError('Flag has unknown group type index');\n }\n if (!(groupName in groups)) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${flag.key} without group names passed in`));\n return false;\n }\n const focusedGroupProperties = groupProperties[groupName];\n return await this.matchFeatureFlagProperties(flag, groups[groupName], focusedGroupProperties, evaluationCache);\n }\n }\n getFeatureFlagPayload(key, flagValue) {\n let payload = null;\n if (false !== flagValue && null != flagValue) {\n if ('boolean' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue.toString()] || null;\n else if ('string' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue] || null;\n if (null != payload) {\n if ('object' == typeof payload) return payload;\n if ('string' == typeof payload) try {\n return JSON.parse(payload);\n } catch {}\n return payload;\n }\n }\n return null;\n }\n async evaluateFlagDependency(property, distinctId, properties, evaluationCache) {\n const targetFlagKey = property.key;\n if (!this.featureFlagsByKey) throw new InconclusiveMatchError('Feature flags not available for dependency evaluation');\n if (!('dependency_chain' in property)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' is missing required 'dependency_chain' field`);\n const dependencyChain = property.dependency_chain;\n if (!Array.isArray(dependencyChain)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' has an invalid 'dependency_chain' (expected array, got ${typeof dependencyChain})`);\n if (0 === dependencyChain.length) throw new InconclusiveMatchError(`Circular dependency detected for flag '${targetFlagKey}' (empty dependency chain)`);\n for (const depFlagKey of dependencyChain){\n if (!(depFlagKey in evaluationCache)) {\n const depFlag = this.featureFlagsByKey[depFlagKey];\n if (depFlag) if (depFlag.active) try {\n const depResult = await this.matchFeatureFlagProperties(depFlag, distinctId, properties, evaluationCache);\n evaluationCache[depFlagKey] = depResult;\n } catch (error) {\n throw new InconclusiveMatchError(`Error evaluating flag dependency '${depFlagKey}' for flag '${targetFlagKey}': ${error}`);\n }\n else evaluationCache[depFlagKey] = false;\n else throw new InconclusiveMatchError(`Missing flag dependency '${depFlagKey}' for flag '${targetFlagKey}'`);\n }\n const cachedResult = evaluationCache[depFlagKey];\n if (null == cachedResult) throw new InconclusiveMatchError(`Dependency '${depFlagKey}' could not be evaluated`);\n }\n const targetFlagValue = evaluationCache[targetFlagKey];\n return this.flagEvaluatesToExpectedValue(property.value, targetFlagValue);\n }\n flagEvaluatesToExpectedValue(expectedValue, flagValue) {\n if ('boolean' == typeof expectedValue) return expectedValue === flagValue || 'string' == typeof flagValue && '' !== flagValue && true === expectedValue;\n if ('string' == typeof expectedValue) return flagValue === expectedValue;\n return false;\n }\n async matchFeatureFlagProperties(flag, distinctId, properties, evaluationCache = {}) {\n const flagFilters = flag.filters || {};\n const flagConditions = flagFilters.groups || [];\n let isInconclusive = false;\n let result;\n for (const condition of flagConditions)try {\n if (await this.isConditionMatch(flag, distinctId, condition, properties, evaluationCache)) {\n const variantOverride = condition.variant;\n const flagVariants = flagFilters.multivariate?.variants || [];\n result = variantOverride && flagVariants.some((variant)=>variant.key === variantOverride) ? variantOverride : await this.getMatchingVariant(flag, distinctId) || true;\n break;\n }\n } catch (e) {\n if (e instanceof RequiresServerEvaluation) throw e;\n if (e instanceof InconclusiveMatchError) isInconclusive = true;\n else throw e;\n }\n if (void 0 !== result) return result;\n if (isInconclusive) throw new InconclusiveMatchError(\"Can't determine if feature flag is enabled or not with given properties\");\n return false;\n }\n async isConditionMatch(flag, distinctId, condition, properties, evaluationCache = {}) {\n const rolloutPercentage = condition.rollout_percentage;\n const warnFunction = (msg)=>{\n this.logMsgIfDebug(()=>console.warn(msg));\n };\n if ((condition.properties || []).length > 0) {\n for (const prop of condition.properties){\n const propertyType = prop.type;\n let matches = false;\n matches = 'cohort' === propertyType ? matchCohort(prop, properties, this.cohorts, this.debugMode) : 'flag' === propertyType ? await this.evaluateFlagDependency(prop, distinctId, properties, evaluationCache) : matchProperty(prop, properties, warnFunction);\n if (!matches) return false;\n }\n if (void 0 == rolloutPercentage) return true;\n }\n if (void 0 != rolloutPercentage && await _hash(flag.key, distinctId) > rolloutPercentage / 100.0) return false;\n return true;\n }\n async getMatchingVariant(flag, distinctId) {\n const hashValue = await _hash(flag.key, distinctId, 'variant');\n const matchingVariant = this.variantLookupTable(flag).find((variant)=>hashValue >= variant.valueMin && hashValue < variant.valueMax);\n if (matchingVariant) return matchingVariant.key;\n }\n variantLookupTable(flag) {\n const lookupTable = [];\n let valueMin = 0;\n let valueMax = 0;\n const flagFilters = flag.filters || {};\n const multivariates = flagFilters.multivariate?.variants || [];\n multivariates.forEach((variant)=>{\n valueMax = valueMin + variant.rollout_percentage / 100.0;\n lookupTable.push({\n valueMin,\n valueMax,\n key: variant.key\n });\n valueMin = valueMax;\n });\n return lookupTable;\n }\n updateFlagState(flagData) {\n this.featureFlags = flagData.flags;\n this.featureFlagsByKey = flagData.flags.reduce((acc, curr)=>(acc[curr.key] = curr, acc), {});\n this.groupTypeMapping = flagData.groupTypeMapping;\n this.cohorts = flagData.cohorts;\n this.loadedSuccessfullyOnce = true;\n }\n warnAboutExperienceContinuityFlags(flags) {\n if (this.strictLocalEvaluation) return;\n const experienceContinuityFlags = flags.filter((f)=>f.ensure_experience_continuity);\n if (experienceContinuityFlags.length > 0) console.warn(`[PostHog] You are using local evaluation but ${experienceContinuityFlags.length} flag(s) have experience continuity enabled: ${experienceContinuityFlags.map((f)=>f.key).join(', ')}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`);\n }\n async loadFromCache(debugMessage) {\n if (!this.cacheProvider) return false;\n try {\n const cached = await this.cacheProvider.getFlagDefinitions();\n if (cached) {\n this.updateFlagState(cached);\n this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${debugMessage} (${cached.flags.length} flags)`));\n this.onLoad?.(this.featureFlags.length);\n this.warnAboutExperienceContinuityFlags(cached.flags);\n return true;\n }\n return false;\n } catch (err) {\n this.onError?.(new Error(`Failed to load from cache: ${err}`));\n return false;\n }\n }\n async loadFeatureFlags(forceReload = false) {\n if (this.loadedSuccessfullyOnce && !forceReload) return;\n if (!forceReload && this.nextFetchAllowedAt && Date.now() < this.nextFetchAllowedAt) return void this.logMsgIfDebug(()=>console.debug('[FEATURE FLAGS] Skipping fetch, in backoff period'));\n if (!this.loadingPromise) this.loadingPromise = this._loadFeatureFlags().catch((err)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${err}`))).finally(()=>{\n this.loadingPromise = void 0;\n });\n return this.loadingPromise;\n }\n isLocalEvaluationReady() {\n return (this.loadedSuccessfullyOnce ?? false) && (this.featureFlags?.length ?? 0) > 0;\n }\n getPollingInterval() {\n if (!this.shouldBeginExponentialBackoff) return this.pollingInterval;\n return Math.min(SIXTY_SECONDS, this.pollingInterval * 2 ** this.backOffCount);\n }\n beginBackoff() {\n this.shouldBeginExponentialBackoff = true;\n this.backOffCount += 1;\n this.nextFetchAllowedAt = Date.now() + this.getPollingInterval();\n }\n clearBackoff() {\n this.shouldBeginExponentialBackoff = false;\n this.backOffCount = 0;\n this.nextFetchAllowedAt = void 0;\n }\n async _loadFeatureFlags() {\n if (this.poller) {\n clearTimeout(this.poller);\n this.poller = void 0;\n }\n this.poller = setTimeout(()=>this.loadFeatureFlags(true), this.getPollingInterval());\n try {\n let shouldFetch = true;\n if (this.cacheProvider) try {\n shouldFetch = await this.cacheProvider.shouldFetchFlagDefinitions();\n } catch (err) {\n this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${err}`));\n }\n if (!shouldFetch) {\n const loaded = await this.loadFromCache('Loaded flags from cache (skipped fetch)');\n if (loaded) return;\n if (this.loadedSuccessfullyOnce) return;\n }\n const res = await this._requestFeatureFlagDefinitions();\n if (!res) return;\n switch(res.status){\n case 304:\n this.logMsgIfDebug(()=>console.debug('[FEATURE FLAGS] Flags not modified (304), using cached data'));\n this.flagsEtag = res.headers?.get('ETag') ?? this.flagsEtag;\n this.loadedSuccessfullyOnce = true;\n this.clearBackoff();\n return;\n case 401:\n this.beginBackoff();\n throw new ClientError(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);\n case 402:\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n this.featureFlags = [];\n this.featureFlagsByKey = {};\n this.groupTypeMapping = {};\n this.cohorts = {};\n return;\n case 403:\n this.beginBackoff();\n throw new ClientError(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);\n case 429:\n this.beginBackoff();\n throw new ClientError(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);\n case 200:\n {\n const responseJson = await res.json() ?? {};\n if (!('flags' in responseJson)) return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(responseJson)}`));\n this.flagsEtag = res.headers?.get('ETag') ?? void 0;\n const flagData = {\n flags: responseJson.flags ?? [],\n groupTypeMapping: responseJson.group_type_mapping || {},\n cohorts: responseJson.cohorts || {}\n };\n this.updateFlagState(flagData);\n this.clearBackoff();\n if (this.cacheProvider && shouldFetch) try {\n await this.cacheProvider.onFlagDefinitionsReceived(flagData);\n } catch (err) {\n this.onError?.(new Error(`Failed to store in cache: ${err}`));\n }\n this.onLoad?.(this.featureFlags.length);\n this.warnAboutExperienceContinuityFlags(flagData.flags);\n break;\n }\n default:\n return;\n }\n } catch (err) {\n if (err instanceof ClientError) this.onError?.(err);\n }\n }\n getPersonalApiKeyRequestOptions(method = 'GET', etag) {\n const headers = {\n ...this.customHeaders,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.personalApiKey}`\n };\n if (etag) headers['If-None-Match'] = etag;\n return {\n method,\n headers\n };\n }\n _requestFeatureFlagDefinitions() {\n const url = `${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`;\n const options = this.getPersonalApiKeyRequestOptions('GET', this.flagsEtag);\n let abortTimeout = null;\n if (this.timeout && 'number' == typeof this.timeout) {\n const controller = new AbortController();\n abortTimeout = safeSetTimeout(()=>{\n controller.abort();\n }, this.timeout);\n options.signal = controller.signal;\n }\n try {\n const fetch1 = this.fetch;\n return fetch1(url, options);\n } finally{\n clearTimeout(abortTimeout);\n }\n }\n async stopPoller(timeoutMs = 30000) {\n clearTimeout(this.poller);\n if (this.cacheProvider) try {\n const shutdownResult = this.cacheProvider.shutdown();\n if (shutdownResult instanceof Promise) await Promise.race([\n shutdownResult,\n new Promise((_, reject)=>setTimeout(()=>reject(new Error(`Cache shutdown timeout after ${timeoutMs}ms`)), timeoutMs))\n ]);\n } catch (err) {\n this.onError?.(new Error(`Error during cache shutdown: ${err}`));\n }\n }\n}\nasync function _hash(key, distinctId, salt = '') {\n const hashString = await hashSHA1(`${key}.${distinctId}${salt}`);\n return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE;\n}\nfunction matchProperty(property, propertyValues, warnFunction) {\n const key = property.key;\n const value = property.value;\n const operator = property.operator || 'exact';\n if (key in propertyValues) {\n if ('is_not_set' === operator) throw new InconclusiveMatchError(\"Operator is_not_set is not supported\");\n } else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`);\n const overrideValue = propertyValues[key];\n if (null == overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {\n if (warnFunction) warnFunction(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`);\n return false;\n }\n function computeExactMatch(value, overrideValue) {\n if (Array.isArray(value)) return value.map((val)=>String(val).toLowerCase()).includes(String(overrideValue).toLowerCase());\n return String(value).toLowerCase() === String(overrideValue).toLowerCase();\n }\n function compare(lhs, rhs, operator) {\n if ('gt' === operator) return lhs > rhs;\n if ('gte' === operator) return lhs >= rhs;\n if ('lt' === operator) return lhs < rhs;\n if ('lte' === operator) return lhs <= rhs;\n throw new Error(`Invalid operator: ${operator}`);\n }\n switch(operator){\n case 'exact':\n return computeExactMatch(value, overrideValue);\n case 'is_not':\n return !computeExactMatch(value, overrideValue);\n case 'is_set':\n return key in propertyValues;\n case 'icontains':\n return String(overrideValue).toLowerCase().includes(String(value).toLowerCase());\n case 'not_icontains':\n return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase());\n case 'regex':\n return isValidRegex(String(value)) && null !== String(overrideValue).match(String(value));\n case 'not_regex':\n return isValidRegex(String(value)) && null === String(overrideValue).match(String(value));\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n {\n let parsedValue = 'number' == typeof value ? value : null;\n if ('string' == typeof value) try {\n parsedValue = parseFloat(value);\n } catch (err) {}\n if (null == parsedValue || null == overrideValue) return compare(String(overrideValue), String(value), operator);\n if ('string' == typeof overrideValue) return compare(overrideValue, String(value), operator);\n return compare(overrideValue, parsedValue, operator);\n }\n case 'is_date_after':\n case 'is_date_before':\n {\n if ('boolean' == typeof value) throw new InconclusiveMatchError(\"Date operations cannot be performed on boolean values\");\n let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));\n if (null == parsedDate) parsedDate = convertToDateTime(value);\n if (null == parsedDate) throw new InconclusiveMatchError(`Invalid date: ${value}`);\n const overrideDate = convertToDateTime(overrideValue);\n if ([\n 'is_date_before'\n ].includes(operator)) return overrideDate < parsedDate;\n return overrideDate > parsedDate;\n }\n default:\n throw new InconclusiveMatchError(`Unknown operator: ${operator}`);\n }\n}\nfunction checkCohortExists(cohortId, cohortProperties) {\n if (!(cohortId in cohortProperties)) throw new RequiresServerEvaluation(`cohort ${cohortId} not found in local cohorts - likely a static cohort that requires server evaluation`);\n}\nfunction matchCohort(property, propertyValues, cohortProperties, debugMode = false) {\n const cohortId = String(property.value);\n checkCohortExists(cohortId, cohortProperties);\n const propertyGroup = cohortProperties[cohortId];\n return matchPropertyGroup(propertyGroup, propertyValues, cohortProperties, debugMode);\n}\nfunction matchPropertyGroup(propertyGroup, propertyValues, cohortProperties, debugMode = false) {\n if (!propertyGroup) return true;\n const propertyGroupType = propertyGroup.type;\n const properties = propertyGroup.values;\n if (!properties || 0 === properties.length) return true;\n let errorMatchingLocally = false;\n if ('values' in properties[0]) {\n for (const prop of properties)try {\n const matches = matchPropertyGroup(prop, propertyValues, cohortProperties, debugMode);\n if ('AND' === propertyGroupType) {\n if (!matches) return false;\n } else if (matches) return true;\n } catch (err) {\n if (err instanceof RequiresServerEvaluation) throw err;\n if (err instanceof InconclusiveMatchError) {\n if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`);\n errorMatchingLocally = true;\n } else throw err;\n }\n if (errorMatchingLocally) throw new InconclusiveMatchError(\"Can't match cohort without a given cohort property value\");\n return 'AND' === propertyGroupType;\n }\n for (const prop of properties)try {\n let matches;\n if ('cohort' === prop.type) matches = matchCohort(prop, propertyValues, cohortProperties, debugMode);\n else if ('flag' === prop.type) {\n if (debugMode) console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${prop.key || 'unknown'}'`);\n continue;\n } else matches = matchProperty(prop, propertyValues);\n const negation = prop.negation || false;\n if ('AND' === propertyGroupType) {\n if (!matches && !negation) return false;\n if (matches && negation) return false;\n } else {\n if (matches && !negation) return true;\n if (!matches && negation) return true;\n }\n } catch (err) {\n if (err instanceof RequiresServerEvaluation) throw err;\n if (err instanceof InconclusiveMatchError) {\n if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`);\n errorMatchingLocally = true;\n } else throw err;\n }\n if (errorMatchingLocally) throw new InconclusiveMatchError(\"can't match cohort without a given cohort property value\");\n return 'AND' === propertyGroupType;\n}\nfunction isValidRegex(regex) {\n try {\n new RegExp(regex);\n return true;\n } catch (err) {\n return false;\n }\n}\nfunction convertToDateTime(value) {\n if (value instanceof Date) return value;\n if ('string' == typeof value || 'number' == typeof value) {\n const date = new Date(value);\n if (!isNaN(date.valueOf())) return date;\n throw new InconclusiveMatchError(`${value} is in an invalid date format`);\n }\n throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`);\n}\nfunction relativeDateParseForFeatureFlagMatching(value) {\n const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/;\n const match = value.match(regex);\n const parsedDt = new Date(new Date().toISOString());\n if (!match) return null;\n {\n if (!match.groups) return null;\n const number = parseInt(match.groups['number']);\n if (number >= 10000) return null;\n const interval = match.groups['interval'];\n if ('h' == interval) parsedDt.setUTCHours(parsedDt.getUTCHours() - number);\n else if ('d' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - number);\n else if ('w' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - 7 * number);\n else if ('m' == interval) parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number);\n else {\n if ('y' != interval) return null;\n parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number);\n }\n return parsedDt;\n }\n}\nexport { ClientError, FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation, matchProperty, relativeDateParseForFeatureFlagMatching };\n","class PostHogMemoryStorage {\n getProperty(key) {\n return this._memoryStorage[key];\n }\n setProperty(key, value) {\n this._memoryStorage[key] = null !== value ? value : void 0;\n }\n constructor(){\n this._memoryStorage = {};\n }\n}\nexport { PostHogMemoryStorage };\n","import { version } from \"./version.mjs\";\nimport { PostHogCoreStateless, getFeatureFlagValue, isBlockedUA, isPlainObject, safeSetTimeout, uuidv7 } from \"@posthog/core\";\nimport { FeatureFlagError } from \"./types.mjs\";\nimport { FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation } from \"./extensions/feature-flags/feature-flags.mjs\";\nimport error_tracking from \"./extensions/error-tracking/index.mjs\";\nimport { PostHogMemoryStorage } from \"./storage-memory.mjs\";\nconst MINIMUM_POLLING_INTERVAL = 100;\nconst THIRTY_SECONDS = 30000;\nconst MAX_CACHE_SIZE = 50000;\nclass PostHogBackendClient extends PostHogCoreStateless {\n constructor(apiKey, options = {}){\n super(apiKey, options), this._memoryStorage = new PostHogMemoryStorage();\n this.options = options;\n this.context = this.initializeContext();\n this.options.featureFlagsPollingInterval = 'number' == typeof options.featureFlagsPollingInterval ? Math.max(options.featureFlagsPollingInterval, MINIMUM_POLLING_INTERVAL) : THIRTY_SECONDS;\n if (options.personalApiKey) {\n if (options.personalApiKey.includes('phc_')) throw new Error('Your Personal API key is invalid. These keys are prefixed with \"phx_\" and can be created in PostHog project settings.');\n const shouldEnableLocalEvaluation = false !== options.enableLocalEvaluation;\n if (shouldEnableLocalEvaluation) this.featureFlagsPoller = new FeatureFlagsPoller({\n pollingInterval: this.options.featureFlagsPollingInterval,\n personalApiKey: options.personalApiKey,\n projectApiKey: apiKey,\n timeout: options.requestTimeout ?? 10000,\n host: this.host,\n fetch: options.fetch,\n onError: (err)=>{\n this._events.emit('error', err);\n },\n onLoad: (count)=>{\n this._events.emit('localEvaluationFlagsLoaded', count);\n },\n customHeaders: this.getCustomHeaders(),\n cacheProvider: options.flagDefinitionCacheProvider,\n strictLocalEvaluation: options.strictLocalEvaluation\n });\n }\n this.errorTracking = new error_tracking(this, options, this._logger);\n this.distinctIdHasSentFlagCalls = {};\n this.maxCacheSize = options.maxCacheSize || MAX_CACHE_SIZE;\n }\n getPersistedProperty(key) {\n return this._memoryStorage.getProperty(key);\n }\n setPersistedProperty(key, value) {\n return this._memoryStorage.setProperty(key, value);\n }\n fetch(url, options) {\n return this.options.fetch ? this.options.fetch(url, options) : fetch(url, options);\n }\n getLibraryVersion() {\n return version;\n }\n getCustomUserAgent() {\n return `${this.getLibraryId()}/${this.getLibraryVersion()}`;\n }\n enable() {\n return super.optIn();\n }\n disable() {\n return super.optOut();\n }\n debug(enabled = true) {\n super.debug(enabled);\n this.featureFlagsPoller?.debug(enabled);\n }\n capture(props) {\n if ('string' == typeof props) this._logger.warn('Called capture() with a string as the first argument when an object was expected.');\n this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStateless(distinctId, event, properties, {\n timestamp: options.timestamp,\n disableGeoip: options.disableGeoip,\n uuid: options.uuid\n })).catch((err)=>{\n if (err) console.error(err);\n }));\n }\n async captureImmediate(props) {\n if ('string' == typeof props) this._logger.warn('Called captureImmediate() with a string as the first argument when an object was expected.');\n return this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStatelessImmediate(distinctId, event, properties, {\n timestamp: options.timestamp,\n disableGeoip: options.disableGeoip,\n uuid: options.uuid\n })).catch((err)=>{\n if (err) console.error(err);\n }));\n }\n identify({ distinctId, properties = {}, disableGeoip }) {\n const { $set, $set_once, $anon_distinct_id, ...rest } = properties;\n const setProps = $set || rest;\n const setOnceProps = $set_once || {};\n const eventProperties = {\n $set: setProps,\n $set_once: setOnceProps,\n $anon_distinct_id: $anon_distinct_id ?? void 0\n };\n super.identifyStateless(distinctId, eventProperties, {\n disableGeoip\n });\n }\n async identifyImmediate({ distinctId, properties = {}, disableGeoip }) {\n const { $set, $set_once, $anon_distinct_id, ...rest } = properties;\n const setProps = $set || rest;\n const setOnceProps = $set_once || {};\n const eventProperties = {\n $set: setProps,\n $set_once: setOnceProps,\n $anon_distinct_id: $anon_distinct_id ?? void 0\n };\n super.identifyStatelessImmediate(distinctId, eventProperties, {\n disableGeoip\n });\n }\n alias(data) {\n super.aliasStateless(data.alias, data.distinctId, void 0, {\n disableGeoip: data.disableGeoip\n });\n }\n async aliasImmediate(data) {\n await super.aliasStatelessImmediate(data.alias, data.distinctId, void 0, {\n disableGeoip: data.disableGeoip\n });\n }\n isLocalEvaluationReady() {\n return this.featureFlagsPoller?.isLocalEvaluationReady() ?? false;\n }\n async waitForLocalEvaluationReady(timeoutMs = THIRTY_SECONDS) {\n if (this.isLocalEvaluationReady()) return true;\n if (void 0 === this.featureFlagsPoller) return false;\n return new Promise((resolve)=>{\n const timeout = setTimeout(()=>{\n cleanup();\n resolve(false);\n }, timeoutMs);\n const cleanup = this._events.on('localEvaluationFlagsLoaded', (count)=>{\n clearTimeout(timeout);\n cleanup();\n resolve(count > 0);\n });\n });\n }\n async getFeatureFlag(key, distinctId, options) {\n if (void 0 !== this._flagOverrides && key in this._flagOverrides) return this._flagOverrides[key];\n const { groups, disableGeoip } = options || {};\n let { onlyEvaluateLocally, sendFeatureFlagEvents, personProperties, groupProperties } = options || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = this.options.strictLocalEvaluation ?? false;\n if (void 0 == sendFeatureFlagEvents) sendFeatureFlagEvents = this.options.sendFeatureFlagEvent ?? true;\n let response = await this.featureFlagsPoller?.getFeatureFlag(key, distinctId, groups, personProperties, groupProperties);\n const flagWasLocallyEvaluated = void 0 !== response;\n let requestId;\n let evaluatedAt;\n let flagDetail;\n let featureFlagError;\n if (!flagWasLocallyEvaluated && !onlyEvaluateLocally) {\n const flagsResponse = await super.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (void 0 === flagsResponse) featureFlagError = FeatureFlagError.UNKNOWN_ERROR;\n else {\n requestId = flagsResponse.requestId;\n evaluatedAt = flagsResponse.evaluatedAt;\n const errors = [];\n if (flagsResponse.errorsWhileComputingFlags) errors.push(FeatureFlagError.ERRORS_WHILE_COMPUTING);\n if (flagsResponse.quotaLimited?.includes('feature_flags')) errors.push(FeatureFlagError.QUOTA_LIMITED);\n flagDetail = flagsResponse.flags[key];\n if (void 0 === flagDetail) errors.push(FeatureFlagError.FLAG_MISSING);\n if (errors.length > 0) featureFlagError = errors.join(',');\n response = getFeatureFlagValue(flagDetail);\n }\n }\n const featureFlagReportedKey = `${key}_${response}`;\n if (sendFeatureFlagEvents && (!(distinctId in this.distinctIdHasSentFlagCalls) || !this.distinctIdHasSentFlagCalls[distinctId].includes(featureFlagReportedKey))) {\n if (Object.keys(this.distinctIdHasSentFlagCalls).length >= this.maxCacheSize) this.distinctIdHasSentFlagCalls = {};\n if (Array.isArray(this.distinctIdHasSentFlagCalls[distinctId])) this.distinctIdHasSentFlagCalls[distinctId].push(featureFlagReportedKey);\n else this.distinctIdHasSentFlagCalls[distinctId] = [\n featureFlagReportedKey\n ];\n const properties = {\n $feature_flag: key,\n $feature_flag_response: response,\n $feature_flag_id: flagDetail?.metadata?.id,\n $feature_flag_version: flagDetail?.metadata?.version,\n $feature_flag_reason: flagDetail?.reason?.description ?? flagDetail?.reason?.code,\n locally_evaluated: flagWasLocallyEvaluated,\n [`$feature/${key}`]: response,\n $feature_flag_request_id: requestId,\n $feature_flag_evaluated_at: evaluatedAt\n };\n if (featureFlagError) properties.$feature_flag_error = featureFlagError;\n this.capture({\n distinctId,\n event: '$feature_flag_called',\n properties,\n groups,\n disableGeoip\n });\n }\n return response;\n }\n async getFeatureFlagPayload(key, distinctId, matchValue, options) {\n if (void 0 !== this._payloadOverrides && key in this._payloadOverrides) return this._payloadOverrides[key];\n const { groups, disableGeoip } = options || {};\n let { onlyEvaluateLocally, personProperties, groupProperties } = options || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n let response;\n const localEvaluationEnabled = void 0 !== this.featureFlagsPoller;\n if (localEvaluationEnabled) {\n await this.featureFlagsPoller?.loadFeatureFlags();\n const flag = this.featureFlagsPoller?.featureFlagsByKey[key];\n if (flag) try {\n const result = await this.featureFlagsPoller?.computeFlagAndPayloadLocally(flag, distinctId, groups, personProperties, groupProperties, matchValue);\n if (result) {\n matchValue = result.value;\n response = result.payload;\n }\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this._logger?.info(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`);\n else throw e;\n }\n }\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = this.options.strictLocalEvaluation ?? false;\n const payloadWasLocallyEvaluated = void 0 !== response;\n if (!payloadWasLocallyEvaluated && !onlyEvaluateLocally) response = await super.getFeatureFlagPayloadStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);\n return response;\n }\n async getRemoteConfigPayload(flagKey) {\n if (!this.options.personalApiKey) throw new Error('Personal API key is required for remote config payload decryption');\n const response = await this._requestRemoteConfigPayload(flagKey);\n if (!response) return;\n const parsed = await response.json();\n if ('string' == typeof parsed) try {\n return JSON.parse(parsed);\n } catch (e) {}\n return parsed;\n }\n async isFeatureEnabled(key, distinctId, options) {\n const feat = await this.getFeatureFlag(key, distinctId, options);\n if (void 0 === feat) return;\n return !!feat || false;\n }\n async getAllFlags(distinctId, options) {\n const response = await this.getAllFlagsAndPayloads(distinctId, options);\n return response.featureFlags || {};\n }\n async getAllFlagsAndPayloads(distinctId, options) {\n const { groups, disableGeoip, flagKeys } = options || {};\n let { onlyEvaluateLocally, personProperties, groupProperties } = options || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = this.options.strictLocalEvaluation ?? false;\n const localEvaluationResult = await this.featureFlagsPoller?.getAllFlagsAndPayloads(distinctId, groups, personProperties, groupProperties, flagKeys);\n let featureFlags = {};\n let featureFlagPayloads = {};\n let fallbackToFlags = true;\n if (localEvaluationResult) {\n featureFlags = localEvaluationResult.response;\n featureFlagPayloads = localEvaluationResult.payloads;\n fallbackToFlags = localEvaluationResult.fallbackToFlags;\n }\n if (fallbackToFlags && !onlyEvaluateLocally) {\n const remoteEvaluationResult = await super.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeys);\n featureFlags = {\n ...featureFlags,\n ...remoteEvaluationResult.flags || {}\n };\n featureFlagPayloads = {\n ...featureFlagPayloads,\n ...remoteEvaluationResult.payloads || {}\n };\n }\n if (void 0 !== this._flagOverrides) featureFlags = {\n ...featureFlags,\n ...this._flagOverrides\n };\n if (void 0 !== this._payloadOverrides) featureFlagPayloads = {\n ...featureFlagPayloads,\n ...this._payloadOverrides\n };\n return {\n featureFlags,\n featureFlagPayloads\n };\n }\n groupIdentify({ groupType, groupKey, properties, distinctId, disableGeoip }) {\n super.groupIdentifyStateless(groupType, groupKey, properties, {\n disableGeoip\n }, distinctId);\n }\n async reloadFeatureFlags() {\n await this.featureFlagsPoller?.loadFeatureFlags(true);\n }\n overrideFeatureFlags(overrides) {\n const flagArrayToRecord = (flags)=>Object.fromEntries(flags.map((f)=>[\n f,\n true\n ]));\n if (false === overrides) {\n this._flagOverrides = void 0;\n this._payloadOverrides = void 0;\n return;\n }\n if (Array.isArray(overrides)) {\n this._flagOverrides = flagArrayToRecord(overrides);\n return;\n }\n if (this._isFeatureFlagOverrideOptions(overrides)) {\n if ('flags' in overrides) {\n if (false === overrides.flags) this._flagOverrides = void 0;\n else if (Array.isArray(overrides.flags)) this._flagOverrides = flagArrayToRecord(overrides.flags);\n else if (void 0 !== overrides.flags) this._flagOverrides = {\n ...overrides.flags\n };\n }\n if ('payloads' in overrides) {\n if (false === overrides.payloads) this._payloadOverrides = void 0;\n else if (void 0 !== overrides.payloads) this._payloadOverrides = {\n ...overrides.payloads\n };\n }\n return;\n }\n this._flagOverrides = {\n ...overrides\n };\n }\n _isFeatureFlagOverrideOptions(overrides) {\n if ('object' != typeof overrides || null === overrides || Array.isArray(overrides)) return false;\n const obj = overrides;\n if ('flags' in obj) {\n const flagsValue = obj['flags'];\n if (false === flagsValue || Array.isArray(flagsValue) || 'object' == typeof flagsValue && null !== flagsValue) return true;\n }\n if ('payloads' in obj) {\n const payloadsValue = obj['payloads'];\n if (false === payloadsValue || 'object' == typeof payloadsValue && null !== payloadsValue) return true;\n }\n return false;\n }\n withContext(data, fn, options) {\n if (!this.context) return fn();\n return this.context.run(data, fn, options);\n }\n getContext() {\n return this.context?.get();\n }\n async _shutdown(shutdownTimeoutMs) {\n this.featureFlagsPoller?.stopPoller(shutdownTimeoutMs);\n this.errorTracking.shutdown();\n return super._shutdown(shutdownTimeoutMs);\n }\n async _requestRemoteConfigPayload(flagKey) {\n if (!this.options.personalApiKey) return;\n const url = `${this.host}/api/projects/@current/feature_flags/${flagKey}/remote_config?token=${encodeURIComponent(this.apiKey)}`;\n const options = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.options.personalApiKey}`\n }\n };\n let abortTimeout = null;\n if (this.options.requestTimeout && 'number' == typeof this.options.requestTimeout) {\n const controller = new AbortController();\n abortTimeout = safeSetTimeout(()=>{\n controller.abort();\n }, this.options.requestTimeout);\n options.signal = controller.signal;\n }\n try {\n return await this.fetch(url, options);\n } catch (error) {\n this._events.emit('error', error);\n return;\n } finally{\n if (abortTimeout) clearTimeout(abortTimeout);\n }\n }\n extractPropertiesFromEvent(eventProperties, groups) {\n if (!eventProperties) return {\n personProperties: {},\n groupProperties: {}\n };\n const personProperties = {};\n const groupProperties = {};\n for (const [key, value] of Object.entries(eventProperties))if (isPlainObject(value) && groups && key in groups) {\n const groupProps = {};\n for (const [groupKey, groupValue] of Object.entries(value))groupProps[String(groupKey)] = String(groupValue);\n groupProperties[String(key)] = groupProps;\n } else personProperties[String(key)] = String(value);\n return {\n personProperties,\n groupProperties\n };\n }\n async getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions) {\n const finalPersonProperties = sendFeatureFlagsOptions?.personProperties || {};\n const finalGroupProperties = sendFeatureFlagsOptions?.groupProperties || {};\n const flagKeys = sendFeatureFlagsOptions?.flagKeys;\n const onlyEvaluateLocally = sendFeatureFlagsOptions?.onlyEvaluateLocally ?? this.options.strictLocalEvaluation ?? false;\n if (onlyEvaluateLocally) if (!((this.featureFlagsPoller?.featureFlags?.length || 0) > 0)) return {};\n else {\n const groupsWithStringValues = {};\n for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);\n return await this.getAllFlags(distinctId, {\n groups: groupsWithStringValues,\n personProperties: finalPersonProperties,\n groupProperties: finalGroupProperties,\n disableGeoip,\n onlyEvaluateLocally: true,\n flagKeys\n });\n }\n if ((this.featureFlagsPoller?.featureFlags?.length || 0) > 0) {\n const groupsWithStringValues = {};\n for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);\n return await this.getAllFlags(distinctId, {\n groups: groupsWithStringValues,\n personProperties: finalPersonProperties,\n groupProperties: finalGroupProperties,\n disableGeoip,\n onlyEvaluateLocally: true,\n flagKeys\n });\n }\n return (await super.getFeatureFlagsStateless(distinctId, groups, finalPersonProperties, finalGroupProperties, disableGeoip)).flags;\n }\n addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties) {\n const allPersonProperties = {\n distinct_id: distinctId,\n ...personProperties || {}\n };\n const allGroupProperties = {};\n if (groups) for (const groupName of Object.keys(groups))allGroupProperties[groupName] = {\n $group_key: groups[groupName],\n ...groupProperties?.[groupName] || {}\n };\n return {\n allPersonProperties,\n allGroupProperties\n };\n }\n captureException(error, distinctId, additionalProperties, uuid) {\n if (!error_tracking.isPreviouslyCapturedError(error)) {\n const syntheticException = new Error('PostHog syntheticException');\n this.addPendingPromise(error_tracking.buildEventMessage(error, {\n syntheticException\n }, distinctId, additionalProperties).then((msg)=>this.capture({\n ...msg,\n uuid\n })));\n }\n }\n async captureExceptionImmediate(error, distinctId, additionalProperties) {\n if (!error_tracking.isPreviouslyCapturedError(error)) {\n const syntheticException = new Error('PostHog syntheticException');\n this.addPendingPromise(error_tracking.buildEventMessage(error, {\n syntheticException\n }, distinctId, additionalProperties).then((msg)=>this.captureImmediate(msg)));\n }\n }\n async prepareEventMessage(props) {\n const { distinctId, event, properties, groups, sendFeatureFlags, timestamp, disableGeoip, uuid } = props;\n const contextData = this.context?.get();\n let mergedDistinctId = distinctId || contextData?.distinctId;\n const mergedProperties = {\n ...contextData?.properties || {},\n ...properties || {}\n };\n if (!mergedDistinctId) {\n mergedDistinctId = uuidv7();\n mergedProperties.$process_person_profile = false;\n }\n if (contextData?.sessionId && !mergedProperties.$session_id) mergedProperties.$session_id = contextData.sessionId;\n const eventMessage = this._runBeforeSend({\n distinctId: mergedDistinctId,\n event,\n properties: mergedProperties,\n groups,\n sendFeatureFlags,\n timestamp,\n disableGeoip,\n uuid\n });\n if (!eventMessage) return Promise.reject(null);\n const eventProperties = await Promise.resolve().then(async ()=>{\n if (sendFeatureFlags) {\n const sendFeatureFlagsOptions = 'object' == typeof sendFeatureFlags ? sendFeatureFlags : void 0;\n return await this.getFeatureFlagsForEvent(eventMessage.distinctId, groups, disableGeoip, sendFeatureFlagsOptions);\n }\n eventMessage.event;\n return {};\n }).then((flags)=>{\n const additionalProperties = {};\n if (flags) for (const [feature, variant] of Object.entries(flags))additionalProperties[`$feature/${feature}`] = variant;\n const activeFlags = Object.keys(flags || {}).filter((flag)=>flags?.[flag] !== false).sort();\n if (activeFlags.length > 0) additionalProperties['$active_feature_flags'] = activeFlags;\n return additionalProperties;\n }).catch(()=>({})).then((additionalProperties)=>{\n const props = {\n ...additionalProperties,\n ...eventMessage.properties || {},\n $groups: eventMessage.groups || groups\n };\n return props;\n });\n if ('$pageview' === eventMessage.event && this.options.__preview_capture_bot_pageviews && 'string' == typeof eventProperties.$raw_user_agent) {\n if (isBlockedUA(eventProperties.$raw_user_agent, this.options.custom_blocked_useragents || [])) {\n eventMessage.event = '$bot_pageview';\n eventProperties.$browser_type = 'bot';\n }\n }\n return {\n distinctId: eventMessage.distinctId,\n event: eventMessage.event,\n properties: eventProperties,\n options: {\n timestamp: eventMessage.timestamp,\n disableGeoip: eventMessage.disableGeoip,\n uuid: eventMessage.uuid\n }\n };\n }\n _runBeforeSend(eventMessage) {\n const beforeSend = this.options.before_send;\n if (!beforeSend) return eventMessage;\n const fns = Array.isArray(beforeSend) ? beforeSend : [\n beforeSend\n ];\n let result = eventMessage;\n for (const fn of fns){\n result = fn(result);\n if (!result) {\n this._logger.info(`Event '${eventMessage.event}' was rejected in beforeSend function`);\n return null;\n }\n if (!result.properties || 0 === Object.keys(result.properties).length) {\n const message = `Event '${result.event}' has no properties after beforeSend function, this is likely an error.`;\n this._logger.warn(message);\n }\n }\n return result;\n }\n}\nexport { PostHogBackendClient };\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nclass PostHogContext {\n constructor(){\n this.storage = new AsyncLocalStorage();\n }\n get() {\n return this.storage.getStore();\n }\n run(context, fn, options) {\n const fresh = options?.fresh === true;\n if (fresh) return this.storage.run(context, fn);\n {\n const currentContext = this.get() || {};\n const mergedContext = {\n distinctId: context.distinctId ?? currentContext.distinctId,\n sessionId: context.sessionId ?? currentContext.sessionId,\n properties: {\n ...currentContext.properties || {},\n ...context.properties || {}\n }\n };\n return this.storage.run(mergedContext, fn);\n }\n }\n}\nexport { PostHogContext };\n","const NAME = 'posthog-node';\nfunction createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [\n 'error'\n], sendExceptionsToPostHog = true } = {}) {\n return (event)=>{\n const shouldProcessLevel = '*' === severityAllowList || severityAllowList.includes(event.level);\n if (!shouldProcessLevel) return event;\n if (!event.tags) event.tags = {};\n const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];\n if (void 0 === userId) return event;\n const uiHost = _posthog.options.host ?? 'https://us.i.posthog.com';\n const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();\n event.tags['PostHog Person URL'] = personUrl;\n const exceptions = event.exception?.values || [];\n const exceptionList = exceptions.map((exception)=>({\n ...exception,\n stacktrace: exception.stacktrace ? {\n ...exception.stacktrace,\n type: 'raw',\n frames: (exception.stacktrace.frames || []).map((frame)=>({\n ...frame,\n platform: \"node:javascript\"\n }))\n } : void 0\n }));\n const properties = {\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_level: event.level,\n $exception_list: exceptionList,\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags\n };\n if (organization && projectId) properties['$sentry_url'] = (prefix || 'https://sentry.io/organizations/') + organization + '/issues/?project=' + projectId + '&query=' + event.event_id;\n if (sendExceptionsToPostHog) _posthog.capture({\n event: '$exception',\n distinctId: userId,\n properties\n });\n return event;\n };\n}\nfunction sentryIntegration(_posthog, options) {\n const processor = createEventProcessor(_posthog, options);\n return {\n name: NAME,\n processEvent (event) {\n return processor(event);\n }\n };\n}\nclass PostHogSentryIntegration {\n static #_ = this.POSTHOG_ID_TAG = 'posthog_distinct_id';\n constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog){\n this.name = NAME;\n this.name = NAME;\n this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {\n const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;\n addGlobalEventProcessor(createEventProcessor(_posthog, {\n organization,\n projectId,\n prefix,\n severityAllowList,\n sendExceptionsToPostHog: sendExceptionsToPostHog ?? true\n }));\n };\n }\n}\nexport { PostHogSentryIntegration, createEventProcessor, sentryIntegration };\n","import error_tracking from \"./error-tracking/index.mjs\";\nfunction setupExpressErrorHandler(_posthog, app) {\n app.use(posthogErrorHandler(_posthog));\n}\nfunction posthogErrorHandler(posthog) {\n return (error, req, res, next)=>{\n if (error_tracking.isPreviouslyCapturedError(error)) return void next(error);\n const sessionId = req.headers['x-posthog-session-id'];\n const distinctId = req.headers['x-posthog-distinct-id'];\n const syntheticException = new Error('Synthetic exception');\n const hint = {\n mechanism: {\n type: 'middleware',\n handled: false\n },\n syntheticException\n };\n posthog.addPendingPromise(error_tracking.buildEventMessage(error, hint, distinctId, {\n $session_id: sessionId,\n $current_url: req.url,\n $request_method: req.method,\n $request_path: req.path,\n $user_agent: req.headers['user-agent'],\n $response_status_code: res.statusCode,\n $ip: req.headers['x-forwarded-for'] || req?.socket?.remoteAddress\n }).then((msg)=>{\n posthog.capture(msg);\n }));\n next(error);\n };\n}\nexport { setupExpressErrorHandler };\n","export * from \"./extensions/sentry-integration.mjs\";\nexport * from \"./extensions/express.mjs\";\nexport * from \"./types.mjs\";\n","import { createModulerModifier } from \"../extensions/error-tracking/modifiers/module.node.mjs\";\nimport { addSourceContext } from \"../extensions/error-tracking/modifiers/context-lines.node.mjs\";\nimport error_tracking from \"../extensions/error-tracking/index.mjs\";\nimport { PostHogBackendClient } from \"../client.mjs\";\nimport { ErrorTracking } from \"@posthog/core\";\nimport { PostHogContext } from \"../extensions/context/context.mjs\";\nexport * from \"../exports.mjs\";\nerror_tracking.errorPropertiesBuilder = new ErrorTracking.ErrorPropertiesBuilder([\n new ErrorTracking.EventCoercer(),\n new ErrorTracking.ErrorCoercer(),\n new ErrorTracking.ObjectCoercer(),\n new ErrorTracking.StringCoercer(),\n new ErrorTracking.PrimitiveCoercer()\n], ErrorTracking.createStackParser(\"node:javascript\", ErrorTracking.nodeStackLineParser), [\n createModulerModifier(),\n addSourceContext\n]);\nclass PostHog extends PostHogBackendClient {\n getLibraryId() {\n return 'posthog-node';\n }\n initializeContext() {\n return new PostHogContext();\n }\n}\nexport { PostHog };\n","/**\n * EventSubscriber - Standard base class for building custom subscribers\n *\n * This is the recommended base class for creating custom events subscribers.\n * It provides production-ready features out of the box:\n *\n * **Built-in Features:**\n * - **Error Handling**: Automatic error catching with customizable handlers\n * - **Pending Request Tracking**: Ensures all requests complete during shutdown\n * - **Graceful Shutdown**: Drains pending requests before closing\n * - **Enable/Disable**: Runtime control to turn subscriber on/off\n * - **Normalized Payload**: Consistent event structure across all event types\n *\n * **When to use:**\n * - Building custom subscribers for any platform\n * - Production deployments requiring reliability\n * - Need graceful shutdown and error handling\n *\n * @example Basic usage\n * ```typescript\n * import { EventSubscriber, EventPayload } from 'autotel-subscribers';\n *\n * class SnowflakeSubscriber extends EventSubscriber {\n * name = 'SnowflakeSubscriber';\n * version = '1.0.0';\n *\n * protected async sendToDestination(payload: EventPayload): Promise<void> {\n * await snowflakeClient.execute(\n * `INSERT INTO events VALUES (?, ?, ?)`,\n * [payload.type, payload.name, JSON.stringify(payload.attributes)]\n * );\n * }\n * }\n * ```\n *\n * @example With buffering\n * ```typescript\n * class BufferedSubscriber extends EventSubscriber {\n * name = 'BufferedSubscriber';\n * private buffer: EventPayload[] = [];\n *\n * protected async sendToDestination(payload: EventPayload): Promise<void> {\n * this.buffer.push(payload);\n *\n * if (this.buffer.length >= 100) {\n * await this.flush();\n * }\n * }\n *\n * async shutdown(): Promise<void> {\n * await super.shutdown(); // Drain pending requests first\n * await this.flush(); // Then flush buffer\n * }\n *\n * private async flush(): Promise<void> {\n * if (this.buffer.length === 0) return;\n *\n * const batch = [...this.buffer];\n * this.buffer = [];\n *\n * await apiClient.sendBatch(batch);\n * }\n * }\n * ```\n */\n\nimport type {\n EventSubscriber as IEventSubscriber,\n EventAttributes,\n EventAttributesInput,\n FunnelStatus,\n OutcomeStatus,\n} from 'autotel/event-subscriber';\n\n// Re-export types for convenience\n\n\n/**\n * Payload sent to destination\n */\nexport interface EventPayload {\n /** Event type: 'event', 'funnel', 'outcome', or 'value' */\n type: 'event' | 'funnel' | 'outcome' | 'value';\n\n /** Event name or metric name */\n name: string;\n\n /** Optional attributes */\n attributes?: EventAttributes;\n\n /** For funnel events: funnel name */\n funnel?: string;\n\n /** For funnel events: step status (from FunnelStatus enum) */\n step?: FunnelStatus | string;\n\n /** For funnel events: custom step name (from trackFunnelProgression) */\n stepName?: string;\n\n /** For funnel events: numeric position in funnel */\n stepNumber?: number;\n\n /** For outcome events: operation name */\n operation?: string;\n\n /** For outcome events: outcome status */\n outcome?: OutcomeStatus;\n\n /** For value events: numeric value */\n value?: number;\n\n /** Timestamp (ISO 8601) */\n timestamp: string;\n}\n\n/**\n * Standard base class for building custom events subscribers\n *\n * **What it provides:**\n * - Consistent payload structure (normalized across all event types)\n * - Enable/disable flag (runtime control)\n * - Automatic error handling (with customizable error handlers)\n * - Pending requests tracking (ensures no lost events during shutdown)\n * - Graceful shutdown (drains pending requests before closing)\n *\n * **Usage:**\n * Extend this class and implement `sendToDestination()`. All other methods\n * (trackEvent, trackFunnelStep, trackOutcome, trackValue, shutdown) are handled automatically.\n *\n * For high-throughput streaming platforms (Kafka, Kinesis, Pub/Sub), use `StreamingEventSubscriber` instead.\n */\nexport abstract class EventSubscriber implements IEventSubscriber {\n /**\n * Subscriber name (required for debugging)\n */\n abstract readonly name: string;\n\n /**\n * Subscriber version (optional)\n */\n readonly version?: string;\n\n /**\n * Enable/disable the subscriber (default: true)\n */\n protected enabled: boolean = true;\n\n /**\n * Track pending requests for graceful shutdown\n */\n private pendingRequests: Set<Promise<void>> = new Set();\n\n /**\n * Send payload to destination\n *\n * Override this method to implement your destination-specific logic.\n * This is called for all event types (event, funnel, outcome, value).\n *\n * @param payload - Normalized event payload\n */\n protected abstract sendToDestination(payload: EventPayload): Promise<void>;\n\n /**\n * Optional: Handle errors\n *\n * Override this to customize error handling (logging, retries, etc.).\n * Default behavior: log to console.error\n *\n * @param error - Error that occurred\n * @param payload - Event payload that failed\n */\n protected handleError(error: Error, payload: EventPayload): void {\n console.error(\n `[${this.name}] Failed to send ${payload.type}:`,\n error,\n payload,\n );\n }\n\n /**\n * Filter out undefined and null values from attributes\n *\n * This improves DX by allowing callers to pass objects with optional properties\n * without having to manually filter them first.\n *\n * @param attributes - Input attributes (may contain undefined/null)\n * @returns Filtered attributes with only defined values, or undefined if empty\n *\n * @example\n * ```typescript\n * const filtered = this.filterAttributes({\n * userId: user.id,\n * email: user.email, // might be undefined\n * plan: null, // will be filtered out\n * });\n * // Result: { userId: 'abc', email: 'test@example.com' } or { userId: 'abc' }\n * ```\n */\n protected filterAttributes(\n attributes?: EventAttributesInput,\n ): EventAttributes | undefined {\n if (!attributes) return undefined;\n\n const filtered: EventAttributes = {};\n for (const [key, value] of Object.entries(attributes)) {\n if (value !== undefined && value !== null) {\n filtered[key] = value;\n }\n }\n\n // Return undefined if no attributes remain after filtering\n return Object.keys(filtered).length > 0 ? filtered : undefined;\n }\n\n /**\n * Track an event\n */\n async trackEvent(name: string, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'event',\n name,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track a funnel step\n */\n async trackFunnelStep(\n funnelName: string,\n step: FunnelStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'funnel',\n name: `${funnelName}.${step}`,\n funnel: funnelName,\n step,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track an outcome\n */\n async trackOutcome(\n operationName: string,\n outcome: OutcomeStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'outcome',\n name: `${operationName}.${outcome}`,\n operation: operationName,\n outcome,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track a value/metric\n */\n async trackValue(\n name: string,\n value: number,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'value',\n name,\n value,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Track funnel progression with custom step names\n *\n * Unlike trackFunnelStep which uses FunnelStatus enum values,\n * this method allows any string as the step name for flexible funnel tracking.\n *\n * @param funnelName - Name of the funnel (e.g., \"checkout\", \"onboarding\")\n * @param stepName - Custom step name (e.g., \"cart_viewed\", \"payment_entered\")\n * @param stepNumber - Optional numeric position in the funnel\n * @param attributes - Optional event attributes\n */\n async trackFunnelProgression(\n funnelName: string,\n stepName: string,\n stepNumber?: number,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const payload: EventPayload = {\n type: 'funnel',\n name: `${funnelName}.${stepName}`,\n funnel: funnelName,\n step: stepName,\n stepName,\n stepNumber,\n attributes,\n timestamp: new Date().toISOString(),\n };\n\n await this.send(payload);\n }\n\n /**\n * Flush pending requests and clean up\n *\n * CRITICAL: Prevents race condition during shutdown\n * 1. Disables subscriber to stop new events\n * 2. Drains all pending requests (with retry logic)\n * 3. Ensures flush guarantee\n *\n * Override this if you need custom cleanup logic (close connections, flush buffers, etc.),\n * but ALWAYS call super.shutdown() first to drain pending requests.\n */\n async shutdown(): Promise<void> {\n // 1. Stop accepting new events (prevents race condition)\n this.enabled = false;\n\n // 2. Drain pending requests with retry logic\n // Loop until empty to handle race where new requests added during Promise.allSettled\n const maxDrainAttempts = 10;\n const drainIntervalMs = 50;\n\n for (let attempt = 0; attempt < maxDrainAttempts; attempt++) {\n if (this.pendingRequests.size === 0) {\n break;\n }\n\n // Wait for current batch\n await Promise.allSettled(this.pendingRequests);\n\n // Small delay to catch any stragglers added during allSettled\n if (this.pendingRequests.size > 0 && attempt < maxDrainAttempts - 1) {\n await new Promise((resolve) => setTimeout(resolve, drainIntervalMs));\n }\n }\n\n // 3. Warn if we still have pending requests (shouldn't happen, but be defensive)\n if (this.pendingRequests.size > 0) {\n console.warn(\n `[${this.name}] Shutdown completed with ${this.pendingRequests.size} pending requests still in-flight. ` +\n `This may indicate a bug in the subscriber or extremely slow destination.`\n );\n }\n }\n\n /**\n * Internal: Send payload and track request\n */\n private async send(payload: EventPayload): Promise<void> {\n const request = this.sendWithErrorHandling(payload);\n this.pendingRequests.add(request);\n\n void request.finally(() => {\n this.pendingRequests.delete(request);\n });\n\n return request;\n }\n\n /**\n * Internal: Send with error handling\n */\n private async sendWithErrorHandling(\n payload: EventPayload,\n ): Promise<void> {\n try {\n await this.sendToDestination(payload);\n } catch (error) {\n this.handleError(error as Error, payload);\n }\n }\n}\n\nexport {\n type EventAttributes,\n type EventAttributesInput,\n type FunnelStatus,\n type OutcomeStatus,\n} from 'autotel/event-subscriber';","/**\n * PostHog Subscriber for autotel\n *\n * Send events to PostHog for product events, feature flags, and A/B testing.\n *\n * @example Basic usage\n * ```typescript\n * import { Events } from 'autotel/events';\n * import { PostHogSubscriber } from 'autotel-subscribers/posthog';\n *\n * const events = new Events('checkout', {\n * subscribers: [\n * new PostHogSubscriber({\n * apiKey: process.env.POSTHOG_API_KEY!,\n * host: 'https://us.i.posthog.com' // optional, defaults to US cloud\n * })\n * ]\n * });\n *\n * // Events go to both OpenTelemetry AND PostHog\n * events.trackEvent('order.completed', { userId: '123', amount: 99.99 });\n * ```\n *\n * @example Feature flags\n * ```typescript\n * const subscriber = new PostHogSubscriber({ apiKey: 'phc_...' });\n *\n * // Check if feature is enabled\n * const isEnabled = await subscriber.isFeatureEnabled('new-checkout', 'user-123');\n *\n * // Get feature flag value (string, boolean, number)\n * const variant = await subscriber.getFeatureFlag('experiment-variant', 'user-123');\n *\n * // Get all flags for a user\n * const allFlags = await subscriber.getAllFlags('user-123');\n * ```\n *\n * @example Person and group events\n * ```typescript\n * // Identify user and set properties\n * await subscriber.identify('user-123', {\n * email: 'user@example.com',\n * plan: 'premium'\n * });\n *\n * // Identify a group (e.g., organization)\n * await subscriber.groupIdentify('company', 'acme-corp', {\n * industry: 'saas',\n * employees: 500\n * });\n * ```\n *\n * @example Serverless configuration\n * ```typescript\n * // Optimized for AWS Lambda / Vercel Functions\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * flushAt: 1, // Send immediately (don't batch)\n * flushInterval: 0, // Disable interval-based flushing\n * });\n * ```\n *\n * @example Custom PostHog client\n * ```typescript\n * import { PostHog } from 'posthog-node';\n *\n * const customClient = new PostHog('phc_...', {\n * host: 'https://eu.i.posthog.com',\n * // ... other PostHog options\n * });\n *\n * const subscriber = new PostHogSubscriber({\n * client: customClient\n * });\n * ```\n *\n * @example Error handling\n * ```typescript\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * onError: (error) => {\n * console.error('PostHog error:', error);\n * // Send to error tracking service\n * }\n * });\n * ```\n */\n\nimport type { EventAttributes, EventAttributesInput } from 'autotel/event-subscriber';\nimport { EventSubscriber, type EventPayload } from './event-subscriber-base';\n\n// Type-only import to avoid runtime dependency\nimport type { PostHog } from 'posthog-node';\n\n/**\n * Error context for enhanced error handling\n *\n * Provides detailed context about the event that caused an error.\n */\nexport interface ErrorContext {\n /** The error that occurred */\n error: Error;\n\n /** Event name (if applicable) */\n eventName?: string;\n\n /** Event type (event, funnel, outcome, value) */\n eventType?: 'event' | 'funnel' | 'outcome' | 'value';\n\n /** Event attributes (filtered) */\n attributes?: EventAttributes;\n\n /** Subscriber name */\n subscriberName: string;\n}\n\nexport interface PostHogConfig {\n /** PostHog API key (starts with phc_) - required if not providing custom client */\n apiKey?: string;\n\n /** PostHog host (defaults to US cloud) */\n host?: string;\n\n /** Enable/disable the subscriber */\n enabled?: boolean;\n\n /** Custom PostHog client instance (bypasses apiKey/host) */\n client?: PostHog;\n\n /**\n * Use global browser client (window.posthog)\n *\n * When true, uses the PostHog client already loaded on the page via script tag.\n * This is useful for Next.js apps that initialize PostHog in _app.tsx.\n *\n * @example\n * ```typescript\n * // Browser - uses window.posthog\n * const subscriber = new PostHogSubscriber({\n * useGlobalClient: true,\n * });\n * ```\n */\n useGlobalClient?: boolean;\n\n /**\n * Serverless mode preset (AWS Lambda, Vercel Functions, Next.js API routes)\n *\n * When true, auto-configures for serverless environments:\n * - flushAt: 1 (send immediately, don't batch)\n * - flushInterval: 0 (disable interval-based flushing)\n * - requestTimeout: 3000 (shorter timeout for fast responses)\n *\n * @example\n * ```typescript\n * // Vercel / Next.js API route\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * serverless: true,\n * });\n * ```\n */\n serverless?: boolean;\n\n // Serverless optimizations\n /** Flush batch when it reaches this size (default: 20, set to 1 for immediate send) */\n flushAt?: number;\n\n /** Flush interval in milliseconds (default: 10000, set to 0 to disable) */\n flushInterval?: number;\n\n // Performance tuning\n /** Disable geoip lookup to reduce request size (default: false) */\n disableGeoip?: boolean;\n\n /** Request timeout in milliseconds (default: 10000) */\n requestTimeout?: number;\n\n /** Send feature flag evaluation events (default: true) */\n sendFeatureFlags?: boolean;\n\n /**\n * Automatically filter out undefined and null values from attributes\n *\n * When true (default), undefined and null values are removed before sending.\n * This improves DX when passing objects with optional properties.\n *\n * @default true\n *\n * @example\n * ```typescript\n * // With filterUndefinedValues: true (default)\n * subscriber.trackEvent('user.action', {\n * userId: user.id,\n * email: user.email, // might be undefined - will be filtered\n * plan: user.subscription, // might be null - will be filtered\n * });\n * ```\n */\n filterUndefinedValues?: boolean;\n\n // Error handling\n /** Error callback for debugging and monitoring */\n onError?: (error: Error) => void;\n\n /**\n * Enhanced error callback with event context\n *\n * Provides detailed context about the event that caused the error.\n * If both onError and onErrorWithContext are provided, both are called.\n *\n * @example\n * ```typescript\n * const subscriber = new PostHogSubscriber({\n * apiKey: 'phc_...',\n * onErrorWithContext: (ctx) => {\n * console.error(`Failed to track ${ctx.eventType}: ${ctx.eventName}`, ctx.error);\n * Sentry.captureException(ctx.error, { extra: ctx });\n * }\n * });\n * ```\n */\n onErrorWithContext?: (context: ErrorContext) => void;\n\n /** Enable debug logging (default: false) */\n debug?: boolean;\n}\n\n/**\n * PostHog feature flag options\n */\nexport interface FeatureFlagOptions {\n /** Group context for group-based feature flags */\n groups?: Record<string, string | number>;\n\n /** Group properties for feature flag evaluation */\n groupProperties?: Record<string, Record<string, any>>;\n\n /** Person properties for feature flag evaluation */\n personProperties?: Record<string, any>;\n\n /** Only evaluate locally, don't send $feature_flag_called event */\n onlyEvaluateLocally?: boolean;\n\n /** Send feature flag events even if disabled globally */\n sendFeatureFlagEvents?: boolean;\n}\n\n/**\n * Person properties for identify calls\n */\nexport interface PersonProperties {\n /** Set properties (will update existing values) */\n $set?: Record<string, any>;\n\n /** Set properties only if they don't exist */\n $set_once?: Record<string, any>;\n\n /** Any custom properties */\n [key: string]: any;\n}\n\nexport class PostHogSubscriber extends EventSubscriber {\n readonly name = 'PostHogSubscriber';\n readonly version = '2.0.0';\n\n private posthog: PostHog | null = null;\n private config: PostHogConfig;\n private initPromise: Promise<void> | null = null;\n /** True when using browser's window.posthog (different API signature) */\n private isBrowserClient = false;\n\n constructor(config: PostHogConfig) {\n super();\n\n // Apply serverless preset first (can be overridden by explicit config)\n if (config.serverless) {\n config = {\n flushAt: 1,\n flushInterval: 0,\n requestTimeout: 3000,\n ...config, // User config overrides serverless defaults\n };\n }\n\n // Validate: need either apiKey, client, or useGlobalClient\n if (!config.apiKey && !config.client && !config.useGlobalClient) {\n throw new Error(\n 'PostHogSubscriber requires either apiKey, client, or useGlobalClient to be provided',\n );\n }\n\n this.enabled = config.enabled ?? true;\n // Default filterUndefinedValues to true\n this.config = {\n filterUndefinedValues: true,\n ...config,\n };\n\n if (this.enabled) {\n // Start initialization immediately but don't block constructor\n this.initPromise = this.initialize();\n }\n }\n\n private async initialize(): Promise<void> {\n try {\n // Option 1: Use global browser client (window.posthog)\n if (this.config.useGlobalClient) {\n const globalWindow = typeof globalThis === 'undefined' ? undefined : (globalThis as Record<string, unknown>);\n if (globalWindow?.posthog) {\n this.posthog = globalWindow.posthog as PostHog;\n this.isBrowserClient = true;\n this.setupErrorHandling();\n return;\n }\n throw new Error(\n 'useGlobalClient enabled but window.posthog not found. ' +\n 'Ensure PostHog script is loaded before initializing the subscriber.',\n );\n }\n\n // Option 2: Use custom client if provided\n if (this.config.client) {\n this.posthog = this.config.client;\n this.setupErrorHandling();\n return;\n }\n\n // Option 3: Create new PostHog client with dynamic import\n const { PostHog } = await import('posthog-node');\n\n this.posthog = new PostHog(this.config.apiKey!, {\n host: this.config.host || 'https://us.i.posthog.com',\n flushAt: this.config.flushAt,\n flushInterval: this.config.flushInterval,\n requestTimeout: this.config.requestTimeout,\n disableGeoip: this.config.disableGeoip,\n sendFeatureFlagEvent: this.config.sendFeatureFlags,\n });\n\n this.setupErrorHandling();\n } catch (error) {\n console.error(\n 'PostHog subscriber failed to initialize. Install posthog-node: pnpm add posthog-node',\n error,\n );\n this.enabled = false;\n this.config.onError?.(error as Error);\n }\n }\n\n private setupErrorHandling(): void {\n if (this.config.debug) {\n this.posthog?.debug();\n }\n\n if (this.config.onError && this.posthog?.on) {\n this.posthog.on('error', this.config.onError);\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n }\n\n private extractDistinctId(attributes?: EventAttributes): string {\n return (attributes?.userId || attributes?.user_id || 'anonymous') as string;\n }\n\n /**\n * Send payload to PostHog\n */\n protected async sendToDestination(payload: EventPayload): Promise<void> {\n await this.ensureInitialized();\n\n // Filter attributes if enabled (default: true)\n const filteredAttributes =\n this.config.filterUndefinedValues === false\n ? payload.attributes\n : this.filterAttributes(payload.attributes as EventAttributesInput);\n\n // Build properties object, including value and funnel metadata if present\n const properties: Record<string, unknown> = { ...filteredAttributes };\n if (payload.value !== undefined) {\n properties.value = payload.value;\n }\n // Add funnel progression metadata\n if (payload.stepNumber !== undefined) {\n properties.step_number = payload.stepNumber;\n }\n if (payload.stepName !== undefined) {\n properties.step_name = payload.stepName;\n }\n\n const distinctId = this.extractDistinctId(filteredAttributes);\n\n // Browser client has different API signature\n if (this.isBrowserClient) {\n // Browser API: capture(eventName, properties)\n (this.posthog as any)?.capture(payload.name, properties);\n } else {\n // Server API: capture({ distinctId, event, properties, groups })\n const capturePayload: any = {\n distinctId,\n event: payload.name,\n properties,\n };\n\n // Add groups if present in attributes\n if (filteredAttributes?.groups) {\n capturePayload.groups = filteredAttributes.groups;\n }\n\n this.posthog?.capture(capturePayload);\n }\n }\n\n // Feature Flag Methods\n\n /**\n * Check if a feature flag is enabled for a user\n *\n * @param flagKey - Feature flag key\n * @param distinctId - User ID or anonymous ID\n * @param options - Feature flag evaluation options\n * @returns true if enabled, false otherwise\n *\n * @example\n * ```typescript\n * const isEnabled = await subscriber.isFeatureEnabled('new-checkout', 'user-123');\n *\n * // With groups\n * const isEnabled = await subscriber.isFeatureEnabled('beta-features', 'user-123', {\n * groups: { company: 'acme-corp' }\n * });\n * ```\n */\n async isFeatureEnabled(\n flagKey: string,\n distinctId: string,\n options?: FeatureFlagOptions,\n ): Promise<boolean> {\n if (!this.enabled) return false;\n await this.ensureInitialized();\n\n try {\n return await this.posthog?.isFeatureEnabled(flagKey, distinctId, options as any) ?? false;\n } catch (error) {\n this.config.onError?.(error as Error);\n return false;\n }\n }\n\n /**\n * Get feature flag value for a user\n *\n * @param flagKey - Feature flag key\n * @param distinctId - User ID or anonymous ID\n * @param options - Feature flag evaluation options\n * @returns Flag value (string, boolean, or undefined)\n *\n * @example\n * ```typescript\n * const variant = await subscriber.getFeatureFlag('experiment-variant', 'user-123');\n * // Returns: 'control' | 'test' | 'test-2' | undefined\n *\n * // With person properties\n * const variant = await subscriber.getFeatureFlag('premium-feature', 'user-123', {\n * personProperties: { plan: 'premium' }\n * });\n * ```\n */\n async getFeatureFlag(\n flagKey: string,\n distinctId: string,\n options?: FeatureFlagOptions,\n ): Promise<string | boolean | undefined> {\n if (!this.enabled) return undefined;\n await this.ensureInitialized();\n\n try {\n return await this.posthog?.getFeatureFlag(flagKey, distinctId, options as any);\n } catch (error) {\n this.config.onError?.(error as Error);\n return undefined;\n }\n }\n\n /**\n * Get all feature flags for a user\n *\n * @param distinctId - User ID or anonymous ID\n * @param options - Feature flag evaluation options\n * @returns Object mapping flag keys to their values\n *\n * @example\n * ```typescript\n * const flags = await subscriber.getAllFlags('user-123');\n * // Returns: { 'new-checkout': true, 'experiment-variant': 'test', ... }\n * ```\n */\n async getAllFlags(\n distinctId: string,\n options?: FeatureFlagOptions,\n ): Promise<Record<string, string | number | boolean>> {\n if (!this.enabled) return {};\n await this.ensureInitialized();\n\n try {\n const flags = await this.posthog?.getAllFlags(distinctId, options as any);\n return flags ?? {};\n } catch (error) {\n this.config.onError?.(error as Error);\n return {};\n }\n }\n\n /**\n * Reload feature flags from PostHog server\n *\n * Call this to refresh feature flag definitions without restarting.\n *\n * @example\n * ```typescript\n * await subscriber.reloadFeatureFlags();\n * ```\n */\n async reloadFeatureFlags(): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n try {\n await this.posthog?.reloadFeatureFlags();\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n\n // Person and Group Events\n\n /**\n * Identify a user and set their properties\n *\n * @param distinctId - User ID\n * @param properties - Person properties ($set, $set_once, or custom properties)\n *\n * @example\n * ```typescript\n * // Set properties (will update existing values)\n * await subscriber.identify('user-123', {\n * $set: {\n * email: 'user@example.com',\n * plan: 'premium'\n * }\n * });\n *\n * // Set properties only once (won't update if already exists)\n * await subscriber.identify('user-123', {\n * $set_once: {\n * signup_date: '2025-01-17'\n * }\n * });\n * ```\n */\n async identify(distinctId: string, properties?: PersonProperties): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n try {\n this.posthog?.identify({\n distinctId,\n properties,\n });\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n\n /**\n * Identify a group and set its properties\n *\n * Groups are useful for B2B SaaS to track organizations, teams, or accounts.\n *\n * @param groupType - Type of group (e.g., 'company', 'organization', 'team')\n * @param groupKey - Unique identifier for the group\n * @param properties - Group properties\n *\n * @example\n * ```typescript\n * await subscriber.groupIdentify('company', 'acme-corp', {\n * $set: {\n * name: 'Acme Corporation',\n * industry: 'saas',\n * employees: 500,\n * plan: 'enterprise'\n * }\n * });\n * ```\n */\n async groupIdentify(\n groupType: string,\n groupKey: string | number,\n properties?: Record<string, any>,\n ): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n try {\n this.posthog?.groupIdentify({\n groupType,\n groupKey: String(groupKey), // Convert to string for PostHog SDK\n properties,\n });\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n\n /**\n * Track an event with group context\n *\n * Use this to associate events with groups (e.g., organizations).\n *\n * @param name - Event name\n * @param attributes - Event attributes\n * @param groups - Group context (e.g., { company: 'acme-corp' })\n *\n * @example\n * ```typescript\n * await subscriber.trackEventWithGroups('feature.used', {\n * userId: 'user-123',\n * feature: 'advanced-events'\n * }, {\n * company: 'acme-corp'\n * });\n * ```\n */\n async trackEventWithGroups(\n name: string,\n attributes?: EventAttributes,\n groups?: Record<string, string | number>,\n ): Promise<void> {\n if (!this.enabled) return;\n await this.ensureInitialized();\n\n const eventAttributes: EventAttributes = { ...attributes } as EventAttributes;\n if (groups) {\n (eventAttributes as any).groups = groups;\n }\n\n await this.trackEvent(name, eventAttributes);\n }\n\n /**\n * Flush pending events and clean up resources\n */\n async shutdown(): Promise<void> {\n await super.shutdown(); // Drain pending requests first\n await this.ensureInitialized();\n\n if (this.posthog) {\n try {\n await this.posthog.shutdown();\n } catch (error) {\n this.config.onError?.(error as Error);\n }\n }\n }\n\n /**\n * Handle errors with custom error handler\n */\n protected handleError(error: Error, payload: EventPayload): void {\n // Call basic onError if provided\n this.config.onError?.(error);\n\n // Call enhanced onErrorWithContext if provided\n if (this.config.onErrorWithContext) {\n this.config.onErrorWithContext({\n error,\n eventName: payload.name,\n eventType: payload.type,\n attributes: payload.attributes,\n subscriberName: this.name,\n });\n }\n\n super.handleError(error, payload);\n }\n}\n"]}