failproofai 0.0.14-beta.2 → 0.0.15-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +6 -6
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +2 -2
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
  6. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js +2 -2
  8. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  14. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  15. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
  18. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  20. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  24. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  25. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  26. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  29. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  30. package/.next/standalone/.next/server/app/api/audit/invite/route.js +1 -1
  31. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/audit/run/route.js +1 -1
  33. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/auth/login-request/route.js +1 -1
  35. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +1 -1
  37. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
  39. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/auth/reminder/route.js +1 -1
  41. package/.next/standalone/.next/server/app/api/auth/reminder/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/auth/status/route.js +1 -1
  43. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/audit/page/build-manifest.json +3 -3
  47. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  48. package/.next/standalone/.next/server/app/audit/page.js +2 -2
  49. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/index.html +1 -1
  52. package/.next/standalone/.next/server/app/index.rsc +15 -15
  53. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  54. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  55. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  56. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  57. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  58. package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
  59. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  60. package/.next/standalone/.next/server/app/page.js +2 -2
  61. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
  64. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  65. package/.next/standalone/.next/server/app/policies/page.js +2 -2
  66. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +3 -3
  69. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  70. package/.next/standalone/.next/server/app/project/[name]/page.js +4 -4
  71. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +3 -3
  74. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  75. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  76. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +4 -4
  77. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +3 -3
  80. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  81. package/.next/standalone/.next/server/app/projects/page.js +3 -3
  82. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-219ec._.js +1 -1
  85. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0hv08mx._.js → [root-of-the-server]__0-dh5jy._.js} +1 -1
  86. package/.next/standalone/.next/server/chunks/[root-of-the-server]__04_h-a5._.js +1 -1
  87. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06cuf1y._.js +1 -1
  88. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0obaznk._.js → [root-of-the-server]__0h3lfmp._.js} +1 -1
  89. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jnjf2t._.js +1 -1
  90. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0xvsnvt._.js → [root-of-the-server]__0l4vuqm._.js} +1 -1
  91. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0longh-._.js +3 -0
  92. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sb_5m8._.js +4 -4
  93. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xuaoik._.js +6 -4
  94. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1hkdkmz._.js → [root-of-the-server]__10oa-v9._.js} +1 -1
  95. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16le-kd._.js +1 -1
  96. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1i9rknc._.js → [root-of-the-server]__18d-9oi._.js} +1 -1
  97. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19120tr._.js +3 -0
  98. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1fwl2mz._.js +1 -1
  99. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1is3glr._.js +3 -0
  100. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1myjm-d._.js +1 -1
  101. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_17k9e3w.js +6 -6
  102. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +1 -1
  103. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +1 -1
  104. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  105. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hdsupo._.js → [root-of-the-server]__0114ewg._.js} +3 -3
  106. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01od0m6._.js +3 -0
  107. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0s89hoe._.js → [root-of-the-server]__02r5bgf._.js} +3 -3
  108. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__09v9cwb._.js → [root-of-the-server]__04o-kw7._.js} +2 -2
  109. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qeuy9c._.js → [root-of-the-server]__0e8sjqm._.js} +3 -3
  110. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1tkjqka._.js → [root-of-the-server]__0lkzqax._.js} +3 -3
  111. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lpvwqm._.js +21 -0
  112. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ynf7tx._.js → [root-of-the-server]__0qucxyj._.js} +3 -3
  113. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__03lv-pe._.js → [root-of-the-server]__0u02miy._.js} +3 -3
  114. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0uno39i._.js +3 -0
  115. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__170799-._.js +8 -8
  116. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__00cz9as._.js → [root-of-the-server]__1apb7k_._.js} +1 -1
  117. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1ath6v_._.js +4 -0
  118. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1i21qhv._.js +3 -0
  119. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1nq7ivq._.js +1 -1
  120. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1py795m._.js +3 -0
  121. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1qapotl._.js +3 -0
  122. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__015_i4t._.js → [root-of-the-server]__1zqz4v8._.js} +3 -3
  123. package/.next/standalone/.next/server/chunks/ssr/_077y5np._.js +3 -0
  124. package/.next/standalone/.next/server/chunks/ssr/_1-3unkg._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/ssr/_1e19atl._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/ssr/_1m_p7pi._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/app_audit_loading_tsx_1j1kc6j._.js +1 -1
  129. package/.next/standalone/.next/server/chunks/ssr/app_components_project-list_tsx_1ke6anr._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +2 -2
  132. package/.next/standalone/.next/server/chunks/ssr/lib_0xkhw_v._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/lib_hermes-projects_ts_05b8-it._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/ssr/lib_openclaw-projects_ts_0qxq3bp._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_06xsmte.js → node_modules_html-to-image_es_index_0w82veb.js} +1 -1
  136. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +1 -1
  137. package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
  138. package/.next/standalone/.next/server/pages/404.html +1 -1
  139. package/.next/standalone/.next/server/pages/500.html +1 -1
  140. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/server-reference-manifest.json +10 -10
  142. package/.next/standalone/.next/static/chunks/0hn30_j22wpp_.js +6 -0
  143. package/.next/standalone/.next/static/chunks/{2llkdafnaejw_.js → 1_20f96f1253b.js} +1 -1
  144. package/.next/standalone/.next/static/chunks/1hdhteui932bq.js +1 -0
  145. package/.next/standalone/.next/static/chunks/{33u59vf_8xpd-.js → 1j2xm011_aoae.js} +1 -1
  146. package/.next/standalone/.next/static/chunks/{388hgfqye67xa.js → 1qzsbft-jtnf8.js} +1 -1
  147. package/.next/standalone/.next/static/chunks/{3-ogr79xqbw0h.js → 2mazwb1qmur1p.js} +1 -1
  148. package/.next/standalone/.next/static/chunks/2pujpnfx4pws6.css +2 -0
  149. package/.next/standalone/.next/static/chunks/2xbkqlma_-61k.js +1 -0
  150. package/.next/standalone/.next/static/chunks/{29zkom4s9de2d.js → 2y7acsw0--8xf.js} +1 -1
  151. package/.next/standalone/.next/static/chunks/3060a-0fayz96.js +1 -0
  152. package/.next/standalone/.next/static/chunks/312ihvhxeuoi_.js +1 -0
  153. package/.next/standalone/.next/static/chunks/31c084gsop1bb.js +1 -0
  154. package/.next/standalone/.next/static/chunks/{1ua5armwfph8o.js → 31fmsp1soxi07.js} +1 -1
  155. package/.next/standalone/.next/static/chunks/{02jcotghcxrbu.js → 3kmwfieo15mr2.js} +1 -1
  156. package/.next/standalone/.next/static/chunks/{1gg-8e9q_m__9.js → 3q9y67-fobgpc.js} +1 -1
  157. package/.next/standalone/.next/static/chunks/{turbopack-10hj8t5pf33tu.js → turbopack-1lsv92x7klwrn.js} +1 -1
  158. package/.next/standalone/app/actions/get-hooks-config.ts +85 -0
  159. package/.next/standalone/app/components/log-viewer/entry-row.tsx +8 -3
  160. package/.next/standalone/app/components/project-list.tsx +229 -42
  161. package/.next/standalone/app/components/raw-log-viewer.tsx +33 -15
  162. package/.next/standalone/app/policies/hooks-client.tsx +113 -15
  163. package/.next/standalone/app/project/[name]/page.tsx +12 -2
  164. package/.next/standalone/integration-suite/README.md +43 -1
  165. package/.next/standalone/integration-suite/ci-entrypoint.sh +21 -6
  166. package/.next/standalone/integration-suite/install-clis.sh +58 -13
  167. package/.next/standalone/integration-suite/probe-cli.sh +51 -11
  168. package/.next/standalone/integration-suite/report.js +52 -6
  169. package/.next/standalone/integration-suite/run.sh +55 -3
  170. package/.next/standalone/lib/entry-keys.ts +36 -0
  171. package/.next/standalone/lib/hermes-profiles.ts +156 -0
  172. package/.next/standalone/lib/hermes-projects.ts +91 -25
  173. package/.next/standalone/lib/hermes-sessions.ts +65 -10
  174. package/.next/standalone/lib/openclaw-projects.ts +111 -18
  175. package/.next/standalone/lib/openclaw-sessions.ts +20 -0
  176. package/.next/standalone/lib/paths.ts +36 -0
  177. package/.next/standalone/lib/project-tree.ts +193 -0
  178. package/.next/standalone/lib/projects.ts +22 -0
  179. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  180. package/.next/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +3 -114
  181. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  182. package/.next/standalone/node_modules/next/dist/cli/next-test.js +2 -1
  183. package/.next/standalone/node_modules/next/dist/compiled/http-proxy/index.js +5 -5
  184. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +11 -10
  185. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +11 -10
  186. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +2 -2
  187. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +9 -9
  188. package/.next/standalone/node_modules/next/dist/lib/install-dependencies.js +1 -1
  189. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  190. package/.next/standalone/node_modules/next/dist/lib/typescript/loadTsConfig.js +181 -0
  191. package/.next/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +1 -1
  192. package/.next/standalone/node_modules/next/dist/lib/typescript/runTypeCheckCli.js +53 -0
  193. package/.next/standalone/node_modules/next/dist/lib/typescript/runTypeScriptCli.js +256 -0
  194. package/.next/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +97 -56
  195. package/.next/standalone/node_modules/next/dist/server/app-render/action-handler.js +129 -34
  196. package/.next/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +52 -4
  197. package/.next/standalone/node_modules/next/dist/server/config-schema.js +1 -1
  198. package/.next/standalone/node_modules/next/dist/server/config-shared.js +1 -2
  199. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  200. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  201. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  202. package/.next/standalone/node_modules/next/dist/server/image-optimizer.js +8 -27
  203. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  204. package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +90 -53
  205. package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +15 -2
  206. package/.next/standalone/node_modules/next/dist/server/lib/router-utils/proxy-request.js +4 -0
  207. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  208. package/.next/standalone/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +1 -1
  209. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  210. package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +2 -1
  211. package/.next/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +12 -0
  212. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  213. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  214. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  215. package/.next/standalone/node_modules/next/package.json +10 -10
  216. package/.next/standalone/package.json +9 -7
  217. package/.next/standalone/pi-extension/index.ts +38 -5
  218. package/.next/standalone/server.js +1 -1
  219. package/dist/cli.mjs +623 -308
  220. package/lib/entry-keys.ts +36 -0
  221. package/lib/hermes-profiles.ts +156 -0
  222. package/lib/hermes-projects.ts +91 -25
  223. package/lib/hermes-sessions.ts +65 -10
  224. package/lib/openclaw-projects.ts +111 -18
  225. package/lib/openclaw-sessions.ts +20 -0
  226. package/lib/paths.ts +36 -0
  227. package/lib/project-tree.ts +193 -0
  228. package/lib/projects.ts +22 -0
  229. package/package.json +9 -7
  230. package/pi-extension/index.ts +38 -5
  231. package/scripts/launch.ts +7 -0
  232. package/src/audit/cli-adapters/hermes.ts +6 -3
  233. package/src/audit/cli-adapters/openclaw.ts +17 -13
  234. package/src/hooks/configure-wizard.ts +24 -2
  235. package/src/hooks/custom-hooks-loader.ts +58 -4
  236. package/src/hooks/enforcement-capability.ts +266 -0
  237. package/src/hooks/handler.ts +12 -1
  238. package/src/hooks/hook-activity-store.ts +14 -0
  239. package/src/hooks/hooks-config.ts +59 -1
  240. package/src/hooks/integrations.ts +123 -19
  241. package/src/hooks/manager.ts +93 -27
  242. package/src/hooks/policy-evaluator.ts +59 -7
  243. package/src/hooks/policy-types.ts +26 -0
  244. package/src/hooks/types.ts +50 -2
  245. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q2nbsl._.js +0 -3
  246. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1d9qen3._.js +0 -3
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1mrihkj._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/lib_openclaw-projects_ts_0gc-p24._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__030k0c6._.js +0 -3
  250. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__042d3cd._.js +0 -3
  251. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09q1168._.js +0 -3
  252. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0twi4fj._.js +0 -3
  253. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__17ai7sy._.js +0 -4
  254. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1d8omgc._.js +0 -3
  255. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1fax1sl._.js +0 -19
  256. package/.next/standalone/.next/server/chunks/ssr/_05whahf._.js +0 -3
  257. package/.next/standalone/.next/server/chunks/ssr/_0_9_ytf._.js +0 -3
  258. package/.next/standalone/.next/server/chunks/ssr/_1kje4fm._.js +0 -3
  259. package/.next/standalone/.next/server/chunks/ssr/_1p0-leb._.js +0 -3
  260. package/.next/standalone/.next/static/chunks/0h-6ymo9v86b0.js +0 -6
  261. package/.next/standalone/.next/static/chunks/0pndjhcxfu-0t.js +0 -1
  262. package/.next/standalone/.next/static/chunks/1-33f82_l32or.js +0 -1
  263. package/.next/standalone/.next/static/chunks/1bg_g3g359c_d.js +0 -1
  264. package/.next/standalone/.next/static/chunks/36j05kb2x323i.css +0 -2
  265. package/.next/standalone/.next/static/chunks/396764jgd7-9j.js +0 -1
  266. package/.next/standalone/.next/static/chunks/3w7g0n0iwwnbs.js +0 -1
  267. /package/.next/standalone/.next/static/{YKxI22hC-F_nHp7MEKfb1 → QFmU1xD4R9N_HVfwccP6A}/_buildManifest.js +0 -0
  268. /package/.next/standalone/.next/static/{YKxI22hC-F_nHp7MEKfb1 → QFmU1xD4R9N_HVfwccP6A}/_clientMiddlewareManifest.js +0 -0
  269. /package/.next/standalone/.next/static/{YKxI22hC-F_nHp7MEKfb1 → QFmU1xD4R9N_HVfwccP6A}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[28864,e=>{"use strict";let t,r,i,s,a;var n,o=e.i(14747);function l(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}let u=e=>void 0===e?void 0:e.variant??e.enabled,c=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}};var h=((n={}).AnonymousId="anonymous_id",n.DistinctId="distinct_id",n.Props="props",n.EnablePersonProcessing="enable_person_processing",n.PersonMode="person_mode",n.FeatureFlagDetails="feature_flag_details",n.FeatureFlags="feature_flags",n.FeatureFlagPayloads="feature_flag_payloads",n.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",n.BootstrapFeatureFlags="bootstrap_feature_flags",n.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",n.OverrideFeatureFlags="override_feature_flags",n.Queue="queue",n.AiQueue="ai_queue",n.LogsQueue="logs_queue",n.OptedOut="opted_out",n.SessionId="session_id",n.SessionStartTimestamp="session_start_timestamp",n.SessionLastTimestamp="session_timestamp",n.PersonProperties="person_properties",n.GroupProperties="group_properties",n.InstalledAppBuild="installed_app_build",n.InstalledAppVersion="installed_app_version",n.SessionReplay="session_replay",n.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",n.SurveyLastSeenDate="survey_last_seen_date",n.SurveysSeen="surveys_seen",n.Surveys="surveys",n.RemoteConfig="remote_config",n.FlagsEndpointWasHit="flags_endpoint_was_hit",n.DeviceId="device_id",n);let d={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",TIMEOUT:"timeout",CONNECTION_ERROR:"connection_error",UNKNOWN_ERROR:"unknown_error",apiError:e=>`api_error_${e}`},g=e=>{let t=Error(`Native gzip produced invalid output: ${e}`);throw t.name="NativeGzipValidationError",t},p=async(e,r)=>{e.size<18&&g("too-short");let i=new Uint8Array(await e.slice(0,10).arrayBuffer());i.length>=2&&31===i[0]&&139===i[1]&&8===i[2]||g("invalid-header");let s=new DataView(await e.slice(e.size-8).arrayBuffer());s.getUint32(0,!0)!==(e=>{let r=(()=>{if(t)return t;t=[];for(let e=0;e<256;e++){let r=e;for(let e=0;e<8;e++)r=1&r?0xedb88320^r>>>1:r>>>1;t[e]=r>>>0}return t})(),i=0xffffffff;for(let t=0;t<e.length;t++)i=r[(i^e[t])&255]^i>>>8;return(0xffffffff^i)>>>0})(r)&&g("invalid-crc");let a=r.length>>>0;s.getUint32(4,!0)!==a&&g("invalid-size")};async function f(e,t=!0,r){try{let t=new TextEncoder().encode(e),r=new CompressionStream("gzip"),i=r.writable.getWriter(),s=i.write(t).then(()=>i.close()).catch(async e=>{try{await i.abort(e)}catch{}throw e}),a=new Response(r.readable).blob(),[n]=await Promise.all([a,s]);return await p(n,t),n}catch(e){if(r?.rethrow)throw e;return t&&console.error("Failed to gzip compress data",e),null}}function y(e){let t=[];return JSON.stringify(e,function(e,r){if("bigint"==typeof r)return r.toString();if("function"!=typeof r&&"symbol"!=typeof r){if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(r&&"object"==typeof r){for(;t.length>0&&t[t.length-1]!==this;)t.pop();if(t.includes(r))return"[Circular]";t.push(r)}return r}})??"null"}let m=Array.isArray,v=Object.prototype;v.hasOwnProperty;let _=v.toString,b=m||function(e){return"[object Array]"===_.call(e)},w=e=>e===Object(e)&&!b(e),E=e=>void 0===e,F=e=>"[object String]"==_.call(e),P=e=>null===e,x=e=>"[object Number]"==_.call(e)&&e==e;function S(e){return null===e||"object"!=typeof e}function $(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function I(e){return"u">typeof Event&&function(e,t){try{return e instanceof t}catch{return!1}}(e,Event)}let C="Android",k="BlackBerry",A="Nintendo",O="PlayStation",R="Xbox",M="Windows",T="(\\d+(\\.\\d+)?)";RegExp("Version/"+T),RegExp(R,"i"),RegExp(O+" \\w+","i"),RegExp(A+" \\w+","i"),RegExp(k+"|PlayBook|BB10","i");RegExp("rv:"+T),RegExp("Edge?\\/"+T),RegExp("(Chrome|CrMo)\\/"+T),RegExp("CriOS\\/"+T),RegExp("(UCBrowser|UCWEB)\\/"+T),RegExp("(Opera|OPR)\\/"+T),RegExp("Firefox\\/"+T),RegExp("FxiOS\\/"+T),RegExp("Konqueror[:/]?"+T,"i"),RegExp(k+" "+T),RegExp("android\\s"+T,"i"),RegExp("SamsungBrowser\\/"+T),RegExp("OculusBrowser\\/"+T),RegExp("Vivaldi\\/"+T),RegExp("YaBrowser\\/"+T),RegExp("Whale\\/"+T),RegExp("Brave\\/"+T),RegExp("(DuckDuckGo|Ddg)\\/"+T),RegExp("PaleMoon\\/"+T),RegExp("Waterfox\\/"+T),RegExp("GSA\\/"+T),RegExp("(rv:|MSIE )"+T),RegExp("rv:"+T),RegExp(R+"; "+R+" (.*?)[);]","i"),RegExp(A,"i"),RegExp(O,"i"),RegExp(M,"i"),RegExp("("+C+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+C+")","i");let L=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function D(e,t){return"string"==typeof e&&L.test(e)?e:t()}function j(e){return e?e.split("#")[0]:e}async function B(e,t){let r=null;for(let i=0;i<t.retryCount+1;i++){i>0&&await new Promise(e=>setTimeout(e,t.retryDelay));try{return await e()}catch(e){if(r=e,!t.retryCheck(e))throw e}}throw r}function U(){return new Date().toISOString()}function N(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}let q=e=>e instanceof Error;function H(e){return Promise.all(e.map(e=>(e??Promise.resolve()).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))}function W(e){let t=[];for(let r in e){let i=e[r];P(i)||E(i)||t.push({key:r,value:function e(t){if("[object Boolean]"===_.call(t))return{boolValue:t};if("number"==typeof t)return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if("string"==typeof t)return{stringValue:t};if(b(t))return{arrayValue:{values:t.map(t=>e(t))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}(i)})}return t}let z=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function G(e){return String(e)+"000000"}function K(e,t,r,i){let s="";return i&&(s=Object.keys(i).sort().map(e=>`${JSON.stringify(e)}:${JSON.stringify(i[e])}`).join(",")),`${e}\u0000${t}\u0000${r??""}\u0000${s}`}class V{constructor(e,t,r){this._instance=e,this._config=t,this._logger=r,this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._generation=0}count(e,t=1,r){this._capture({name:e,type:"count",value:t,unit:r?.unit,attributes:r?.attributes})}gauge(e,t,r){this._capture({name:e,type:"gauge",value:t,unit:r?.unit,attributes:r?.attributes})}histogram(e,t,r){this._capture({name:e,type:"histogram",value:t,unit:r?.unit,attributes:r?.attributes})}flush(){let e=this._flushPromise,t=(async()=>{e&&await e.catch(()=>{}),await this._doFlush()})().finally(()=>{this._flushPromise===t&&(this._flushPromise=null)});return this._flushPromise=t,t}drainWindow(){if(0===this._series.size)return null;let e=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(e)}reset(){this._generation++,this._clearFlushTimer(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(e){let t,r;if(this._instance.isDisabled||this._instance.optedOut)return;let i=this._runBeforeSend(e);if(null===i)return;if(!i.name||"string"!=typeof i.name)return void this._logger.warn("Dropping metric with empty name");if("number"!=typeof i.value||!Number.isFinite(i.value))return void this._logger.warn(`Dropping metric '${i.name}': value must be a finite number`);if("count"===i.type&&i.value<0)return void this._logger.warn(`Dropping count '${i.name}': counters are monotonic, value must be >= 0`);try{t=i.attributes?{...i.attributes}:void 0,r=K(i.type,i.name,i.unit,t)}catch(e){this._logger.warn(`Dropping metric '${i.name}': attributes could not be serialized`,e);return}let s=this._series.get(r);if(!s){if(!this._admitNewSeries())return;s={name:i.name,type:i.type,unit:i.unit,attributes:t,windowStartMs:Date.now()},this._series.set(r,s)}let a=this._typeByName.get(i.name);void 0===a?this._typeByName.set(i.name,i.type):a===i.type||this._typeCollisionWarned.has(i.name)||(this._typeCollisionWarned.add(i.name),this._logger.warn(`Metric name '${i.name}' is already used as a ${a}; recording it as a ${i.type} too will blend both series in charts. Use a distinct name.`)),this._fold(s,i.value),this._armFlushTimer()}_admitNewSeries(){return this._series.size<this._config.maxSeriesPerFlush||(this._seriesCapWarned||(this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`)),!1)}_fold(e,t){switch(e.type){case"count":e.total=(e.total??0)+t;break;case"gauge":e.last=t;break;case"histogram":{e.hist||(e.hist={count:0,sum:0,min:t,max:t,bucketCounts:Array(z.length+1).fill(0)});let r=e.hist;r.count+=1,r.sum+=t,r.min=Math.min(r.min,t),r.max=Math.max(r.max,t),r.bucketCounts[function(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}(t,z)]+=1}}}_runBeforeSend(e){let t=this._config.beforeSend;if(!t)return e;let r=b(t)?t:[t],i=e;for(let e of r)try{let t=e(i);if(!t)return this._logger.info("Metric was rejected in beforeSend function"),null;i=t}catch(e){return this._logger.error("Error in beforeSend function for metric:",e),null}return i}_armFlushTimer(){this._flushTimer||(this._flushTimer=N(()=>{this._flushTimer=void 0,this.flush().catch(e=>{this._logger.error("Metrics flush failed:",e)})},this._config.flushIntervalMs))}_clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}async _doFlush(){if(0===this._series.size)return;let e=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let t=this._generation,r=await this._instance._sendMetricsBatch(this._buildPayload(e));if(t===this._generation)switch(r.kind){case"ok":return;case"retry-later":this._mergeWindowBack(e),this._armFlushTimer();return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",r.error);return}}_buildPayload(e){var t,r,i,s,a,n,o;return s=this._buildMetrics(e),t=this._config,r=this._instance.getLibraryId(),i=this._instance.getLibraryVersion(),a={...t.resourceAttributes,"service.name":t.serviceName||"unknown_service",...t.environment&&{"deployment.environment":t.environment},...t.serviceVersion&&{"service.version":t.serviceVersion},"telemetry.sdk.name":r,"telemetry.sdk.version":i},n=this._instance.getLibraryId(),o=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:W(a)},scopeMetrics:[{scope:{name:n,version:o},metrics:s}]}]}}_buildMetrics(e){let t=G(Date.now()),r=new Map;for(let i of e.values()){let e=K(i.type,i.name,i.unit,void 0),s=r.get(e);s||(s={name:i.name,...i.unit&&{unit:i.unit}},"count"===i.type?s.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:"gauge"===i.type?s.gauge={dataPoints:[]}:s.histogram={aggregationTemporality:1,dataPoints:[]},r.set(e,s));let a=W(i.attributes??{}),n=G(i.windowStartMs);if("count"===i.type){let e={attributes:a,startTimeUnixNano:n,timeUnixNano:t,asDouble:i.total??0};s.sum.dataPoints.push(e)}else if("gauge"===i.type){let e={attributes:a,timeUnixNano:t,asDouble:i.last??0};s.gauge.dataPoints.push(e)}else if(i.hist){let e={attributes:a,startTimeUnixNano:n,timeUnixNano:t,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:z};s.histogram.dataPoints.push(e)}}return Array.from(r.values())}_mergeWindowBack(e){for(let[t,r]of e){let e=this._series.get(t);if(!e){this._admitNewSeries()&&this._series.set(t,r);continue}switch(e.windowStartMs=Math.min(e.windowStartMs,r.windowStartMs),e.type){case"count":e.total=(e.total??0)+(r.total??0);break;case"gauge":break;case"histogram":if(r.hist)if(e.hist){e.hist.count+=r.hist.count,e.hist.sum+=r.hist.sum,e.hist.min=Math.min(e.hist.min,r.hist.min),e.hist.max=Math.max(e.hist.max,r.hist.max);for(let t=0;t<e.hist.bucketCounts.length;t++)e.hist.bucketCounts[t]+=r.hist.bucketCounts[t]}else e.hist=r.hist}}}}let Q="0123456789abcdef";class J{constructor(e){this.bytes=e}static ofInner(e){if(16===e.length)return new J(e);throw TypeError("not 128-bit length")}static fromFieldsV7(e,t,r,i){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(i)||e<0||t<0||r<0||i<0||e>0xffffffffffff||t>4095||r>0x3fffffff||i>0xffffffff)throw RangeError("invalid field value");let s=new Uint8Array(16);return s[0]=e/0x10000000000,s[1]=e/0x100000000,s[2]=e/0x1000000,s[3]=e/65536,s[4]=e/256,s[5]=e,s[6]=112|t>>>8,s[7]=t,s[8]=128|r>>>24,s[9]=r>>>16,s[10]=r>>>8,s[11]=r,s[12]=i>>>24,s[13]=i>>>16,s[14]=i>>>8,s[15]=i,new J(s)}static parse(e){let t;switch(e.length){case 32:t=/^[0-9a-f]{32}$/i.exec(e)?.[0];break;case 36:t=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;case 38:t=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(e)?.slice(1,6).join("");break;case 45:t=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("")}if(t){let e=new Uint8Array(16);for(let r=0;r<16;r+=4){let i=parseInt(t.substring(2*r,2*r+8),16);e[r+0]=i>>>24,e[r+1]=i>>>16,e[r+2]=i>>>8,e[r+3]=i}return new J(e)}throw SyntaxError("could not parse UUID string")}toString(){let e="";for(let t=0;t<this.bytes.length;t++)e+=Q.charAt(this.bytes[t]>>>4),e+=Q.charAt(15&this.bytes[t]),(3===t||5===t||7===t||9===t)&&(e+="-");return e}toHex(){let e="";for(let t=0;t<this.bytes.length;t++)e+=Q.charAt(this.bytes[t]>>>4),e+=Q.charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error("unreachable");if(e<=7)return this.bytes.every(e=>0===e)?"NIL":"VAR_0";if(e<=11)return"VAR_10";if(e<=13)return"VAR_110";if(e<=15)return this.bytes.every(e=>255===e)?"MAX":"VAR_RESERVED";throw Error("unreachable")}getVersion(){return"VAR_10"===this.getVariant()?this.bytes[6]>>>4:void 0}clone(){return new J(this.bytes.slice(0))}equals(e){return 0===this.compareTo(e)}compareTo(e){for(let t=0;t<16;t++){let r=this.bytes[t]-e.bytes[t];if(0!==r)return Math.sign(r)}return 0}}class Y{constructor(e){this.timestamp=0,this.counter=0,this.random=e??X()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let r=this.generateOrAbortCore(e,t);return void 0===r&&(this.timestamp=0,r=this.generateOrAbortCore(e,t)),r}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>0xffffffffffff)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>0xffffffffffff)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;this.counter++,this.counter>0x3ffffffffff&&(this.timestamp++,this.resetCounter())}return J.fromFieldsV7(this.timestamp,Math.trunc(this.counter/0x40000000),this.counter&0x40000000-1,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,J.ofInner(e)}}let X=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),Z=()=>ee().toString(),ee=()=>(r||(r=new Y)).generate();function et(e){let t={};if(e)for(let r of e.split(";")){let[e,...i]=r.trim().split("=");if(e){let r=i.join("=").trim();try{t[e.trim()]=decodeURIComponent(r)}catch{t[e.trim()]=r}}}return{get:e=>e in t?{value:t[e]}:void 0}}function er(e){let t=e.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ");return`ph_${t}_posthog`}function ei(e){let t=Date.now();return JSON.stringify({distinct_id:e,$device_id:e,$user_state:"anonymous",$sesid:[t,Z(),t]})}function es(e,t){let r=er(t),i=e.get(r);return i?en(i.value):null}function ea(e){if(!e)return;let t={};return e.sessionId&&(t.$session_id=e.sessionId),e.deviceId&&(t.$device_id=e.deviceId),Object.keys(t).length>0?t:void 0}function en(e){if(!e)return null;try{let t=JSON.parse(e);if(!t||"object"!=typeof t||!t.distinct_id)return null;let r=b(t.$sesid)?t.$sesid[1]:void 0;return{distinctId:String(t.distinct_id),isIdentified:"identified"===t.$user_state,sessionId:"string"==typeof r?r:void 0,deviceId:"string"==typeof t.$device_id?t.$device_id:void 0}}catch{return null}}class eo{constructor(){this.events={},this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),()=>{this.events[e]=this.events[e].filter(e=>e!==t)}}emit(e,t){for(let r of this.events[e]||[])r(t);for(let r of this.events["*"]||[])r(e,t)}}class el{add(e){let t=Z(),r=++this.nextId;return this.promiseByIds[t]={id:r,promise:e},e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds).map(e=>e.promise),t=e.length;for(;t>0;)await Promise.all(e),t=(e=Object.values(this.promiseByIds).map(e=>e.promise)).length}getPromises(e=[],t=this.nextId){let r=new Set(e);return Object.values(this.promiseByIds).filter(e=>e.id<=t&&!r.has(e.promise)).map(e=>e.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}}let eu=(e,t,r)=>{function i(s,...a){t(()=>{(0,r[s])(e,...a)})}return{debug:(...e)=>{i("debug",...e)},info:(...e)=>{i("log",...e)},warn:(...e)=>{i("warn",...e)},error:(...e)=>{i("error",...e)},critical:(...t)=>{r.error(e,...t)},createLogger:i=>eu(`${e} ${i}`,t,r)}};class ec{constructor(e,t,r=[]){this.coercers=e,this.stackParser=t,this.modifiers=r}buildFromUnknown(e,t={}){let r=t&&t.mechanism||{handled:!0,type:"generic"},i=this.buildCoercingContext(r,t,0).apply(e),s=this.buildParsingContext(t),a=this.parseStacktrace(i,s);return{$exception_list:this.convertToExceptionList(a,r),$exception_level:"error"}}async modifyFrames(e){for(let t of e)t.stacktrace&&t.stacktrace.frames&&b(t.stacktrace.frames)&&(t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames));return e}coerceFallback(e){return{type:"Error",value:"Unknown error",stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let r,i;return null!=e.cause&&(r=this.parseStacktrace(e.cause,t)),""!=e.stack&&null!=e.stack&&(i=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap)),{...e,cause:r,stack:i}}applyChunkIds(e,t){return e.map(e=>(e.filename&&t&&(e.chunk_id=t[e.filename]),e))}applyCoercers(e,t){for(let r of this.coercers)if(r.match(e))return r.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let e of this.modifiers)t=await e(t);return t}convertToExceptionList(e,t){let r={type:e.type,value:e.value,mechanism:{type:t.type??"generic",handled:t.handled??!0,synthetic:e.synthetic??!1}};e.stack&&(r.stacktrace={type:"raw",frames:e.stack});let i=[r];return null!=e.cause&&i.push(...this.convertToExceptionList(e.cause,{...t,handled:!0})),i}buildParsingContext(e){return{chunkIdMap:function(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return a&&r.length===s?a:(s=r.length,a=r.reduce((r,s)=>{i||(i={});let a=i[s];if(a)r[a[0]]=a[1];else{let a=e(s);for(let e=a.length-1;e>=0;e--){let n=a[e],o=n?.filename,l=t[s];if(o&&l){r[o]=l,i[s]=[o,l];break}}}return r},{}))}(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,r=0){let i=(r,i)=>{if(i<=4){let s=this.buildCoercingContext(e,t,i);return this.applyCoercers(r,s)}};return{...t,syntheticException:0==r?t.syntheticException:void 0,mechanism:e,apply:e=>i(e,r),next:e=>i(e,r+1)}}}function eh(e,t,r,i,s){let a={platform:e,filename:t,function:"<anonymous>"===r?"?":r,in_app:!0};return E(i)||(a.lineno=i),E(s)||(a.colno=s),a}e.s(["ErrorPropertiesBuilder",0,ec],80446);let ed=(e,t)=>{let r=-1!==e.indexOf("safari-extension"),i=-1!==e.indexOf("safari-web-extension");return r||i?[-1!==e.indexOf("@")?e.split("@")[0]:"?",r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]},eg=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,ep=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ef=/\((\S*)(?::(\d+))(?::(\d+))\)/,ey=(e,t)=>{let r=eg.exec(e);if(r){let[,e,i,s]=r;return eh(t,e,"?",+i,+s)}let i=ep.exec(e);if(i){if(i[2]&&0===i[2].indexOf("eval")){let e=ef.exec(i[2]);e&&(i[2]=e[1],i[3]=e[2],i[4]=e[3])}let[e,r]=ed(i[1]||"?",i[2]);return eh(t,r,e,i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},em=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,ev=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,e_=(e,t)=>{let r=em.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let e=ev.exec(r[3]);e&&(r[1]=r[1]||"eval",r[3]=e[1],r[4]=e[2],r[5]="")}let e=r[3],i=r[1]||"?";return[i,e]=ed(i,e),eh(t,e,i,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}},eb=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,ew=(e,t)=>{let r=eb.exec(e);return r?eh(t,r[2],r[1]||"?",+r[3],r[4]?+r[4]:void 0):void 0},eE=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,eF=(e,t)=>{let r=eE.exec(e);return r?eh(t,r[2],r[3]||"?",+r[1]):void 0},eP=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,ex=(e,t)=>{let r=eP.exec(e);return r?eh(t,r[5],r[3]||r[4]||"?",+r[1],+r[2]):void 0},eS=/^\s*[-]{4,}$/,e$=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,eI=(e,t)=>{let r=e.match(e$);if(r){let e,i,s,a,n;if(r[1]){let t=(s=r[1]).lastIndexOf(".");if("."===s[t-1]&&t--,t>0){e=s.slice(0,t),i=s.slice(t+1);let r=e.indexOf(".Module");r>0&&(s=s.slice(r+1),e=e.slice(0,r))}a=void 0}i&&(a=e,n=i),"<anonymous>"===i&&(n=void 0,s=void 0),void 0===s&&(n=n||"?",s=a?`${a}.${n}`:n);let o=r[2]?.startsWith("file://")?r[2].slice(7):r[2],l="native"===r[5];return o?.match(/\/[A-Z]:/)&&(o=o.slice(1)),o||!r[5]||l||(o=r[5]),{filename:o?decodeURI(o):void 0,module:void 0,function:s,lineno:eC(r[3]),colno:eC(r[4]),in_app:function(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&void 0!==e&&!e.includes("node_modules/")}(o||"",l),platform:t}}if(e.match(eS))return{filename:e,platform:t}};function eC(e){return parseInt(e||"",10)||void 0}let ek=/\(error: (.*)\)/;function eA(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,50).map(e=>{var r;return{...e,filename:e.filename||((r=t)[r.length-1]||{}).filename,function:e.function||"?"}})}function eO(){return eR("web:javascript",ey,e_)}function eR(e,...t){return(r,i=0)=>{let s=[],a=r.split("\n");for(let r=i;r<a.length;r++){let i=a[r];if(i.length>1024)continue;let n=ek.test(i)?i.replace(ek,"$1"):i;if(!n.match(/\S*Error: /)){for(let r of t){let t=r(n,e);if(t){s.push(t);break}}if(s.length>=50)break}}return eA(s)}}e.s(["createDefaultStackParser",0,eO,"createStackParser",0,eR,"reverseAndStripFrames",0,eA],34246);class eM{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){let r=F(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:r?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){let t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?`${t}: ${e.message}`:t}isDOMException(e){return $(e,"DOMException")}isDOMError(e){return $(e,"DOMError")}}e.s(["DOMExceptionCoercer",0,eM],29569);class eT{match(e){return e instanceof Error}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let r=e.message;return r.error&&"string"==typeof r.error.message?String(r.error.message):String(r)}getStack(e){return e.stacktrace||e.stack||void 0}}e.s(["ErrorCoercer",0,eT],11475);class eL{match(e){return $(e,"ErrorEvent")&&void 0!=e.error}coerce(e,t){let r=t.apply(e.error);return r||{type:"ErrorEvent",value:e.message,stack:t.syntheticException?.stack,synthetic:!0}}}e.s(["ErrorEventCoercer",0,eL],43179);let eD=["fatal","error","warning","log","info","debug"];function ej(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let e=r.length;e>0;e--){let i=r.slice(0,e).join(", ");if(!(i.length>t)){if(e===r.length)return i;return i.length<=t?i:`${i.slice(0,t)}...`}}return""}class eB{match(e){return"object"==typeof e&&null!==e}coerce(e,t){let r=this.getErrorPropertyFromObject(e);return r?t.apply(r):{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return I(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&"string"==typeof e.name){let t=`'${e.name}' captured as exception`;return"message"in e&&"string"==typeof e.message&&(t+=` with message: '${e.message}'`),t}if("message"in e&&"string"==typeof e.message)return e.message;let t=this.getObjectClassName(e),r=ej(e);return`${t&&"Object"!==t?`'${t}'`:"Object"} captured as exception with keys: ${r}`}isSeverityLevel(e){return F(e)&&!(F(e)&&0===e.trim().length)&&eD.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let r=e[t];if(q(r))return r}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(e){return}}}e.s(["ObjectCoercer",0,eB],6881);class eU{match(e){return I(e)}coerce(e,t){let r=e.constructor.name;return{type:r,value:`${r} captured as exception with keys: ${ej(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}e.s(["EventCoercer",0,eU],80322);class eN{match(e){return S(e)}coerce(e,t){return{type:"Error",value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}e.s(["PrimitiveCoercer",0,eN],80049);class eq{match(e){return $(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!I(e))return!1;try{let t=e.detail;return null!=t&&"object"==typeof t&&"reason"in t}catch{return!1}}coerce(e,t){let r=this.getUnhandledRejectionReason(e);return S(r)?{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(r)}`,stack:t.syntheticException?.stack,synthetic:!0}:t.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&null!=e.detail&&"object"==typeof e.detail&&"reason"in e.detail)return e.detail.reason}catch{}return e}}e.s(["PromiseRejectionEventCoercer",0,eq],98689),e.s([],99573);let eH={MESSAGE:"$message",TIMESTAMP:"$timestamp"},eW=new Set([eH.MESSAGE,eH.TIMESTAMP]),ez={enabled:!0,max_bytes:32768};function eG(e){return e?{enabled:e.enabled??ez.enabled,max_bytes:function(e,t){if(!x(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}(e.max_bytes,ez.max_bytes)}:{...ez}}function eK(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((r,i)=>(eW.has(i)?t.push(i):r[i]=e[i],r),{}),droppedKeys:t}}class eV{constructor(e){this._entries=[],this._totalBytes=0,this._config=eG(e)}setConfig(e){this._config=eG(e),this._trimToMaxBytes()}add(e){let t=function(e){let t;try{t=y(e)}catch{return}try{let e=JSON.parse(t);if(!w(e))return;let r=e[eH.MESSAGE],i=e[eH.TIMESTAMP];if(!F(r)||0===r.trim().length||!F(i)&&!x(i))return;return{step:e,json:t}}catch{return}}(e);if(!t)return;let r=eQ(t.json);r>this._config.max_bytes||(this._entries.push({step:t.step,bytes:r}),this._totalBytes+=r,this._trimToMaxBytes())}getAttachable(){return this._entries.map(e=>e.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let e=this._entries.shift();e&&(this._totalBytes-=e.bytes)}}}function eQ(e){if("u">typeof TextEncoder)return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let e=0;e<t.length;e++)"%"===t[e]?(r+=1,e+=2):r+=1;return r}e.s(["DEFAULT_EXCEPTION_STEPS_CONFIG",0,ez,"EXCEPTION_STEP_INTERNAL_FIELDS",0,eH,"ExceptionStepsBuffer",0,eV,"getUtf8ByteLength",0,eQ,"resolveExceptionStepsConfig",0,eG,"stripReservedExceptionStepFields",0,eK],52001),e.s([],47114);let eJ=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class eY{match(e){return"string"==typeof e}coerce(e,t){let[r,i]=this.getInfos(e);return{type:r??"Error",value:i??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t="Error",r=e,i=e.match(eJ);return i&&(t=i[1],r=i[2]),[t,r]}}e.s(["StringCoercer",0,eY],45098);class eX extends Error{constructor(e,t){super("HTTP error while fetching PostHog: status="+e.status+", reqByteLength="+t),this.response=e,this.reqByteLength=t,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}}class eZ extends Error{constructor(e){super("Network error while fetching PostHog",e instanceof Error?{cause:e}:{}),this.error=e,this.name="PostHogFetchNetworkError"}}async function e0(e){if(e instanceof eX){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function e1(e){return e instanceof eZ}function e4(e){if(e instanceof eX)return 502===e.status||504===e.status;if(!(e instanceof eZ))return!1;let t=e.error;return"ECONNREFUSED"!==(t?.code??t?.cause?.code)}function e2(e){return"object"==typeof e&&e instanceof eX&&413===e.status}function e3(e){return e instanceof eX?408===e.status||429===e.status||e.status>=500:e1(e)}function e5(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let e8="default";class e9{getErrorPropertiesBuilder(){return this._errorPropertiesBuilder||(this._errorPropertiesBuilder=this.createErrorPropertiesBuilder()),this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new ec([new eT,new eB,new eY,new eN],eO())}constructor(e,t={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new el,this._events=new eo,this._isInitialized=!1;const r="string"==typeof e?e.trim():"",i="string"==typeof t.host?t.host.trim():"",s=!r;this._logger=function(e,t=e=>e()){return eu(e,t,function(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}())}("[PostHog]",this.logMsgIfDebug.bind(this)),s&&this._logger.error("You must pass your PostHog project's api key. The client will be disabled."),this.apiKey=r,this.host=function(e){return e?.replace(/\/+$/,"")}(i||"https://us.i.posthog.com"),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1e3),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3e3,retryCheck:e3},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3e3,this.featureFlagsRequestMaxRetries=t.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=t.disableGeoip??!0,this.disabled=(t.disabled??!1)||s,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!("CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&"function"==typeof Response.prototype.blob)||(t?.disableCompression??!1)}logMsgIfDebug(e){this.isDebug&&e()}wrap(e){return this.disabled?void this._logger.warn("The client is disabled"):this._isInitialized?e():void this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(h.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(h.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(h.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let e=this.on("*",(e,t)=>this._logger.info(e,t));this.removeDebugCallback=()=>{e(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){let t=e.properties||{},r={...t,...this.getCommonEventProperties()};for(let e of Object.keys(t))(e.startsWith("$feature/")||"$active_feature_flags"===e)&&(r[e]=t[e]);return{distinct_id:e.distinct_id,event:e.event,properties:r}}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,r){this.wrap(()=>{let i={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};this.enqueue("identify",i,r)})}async identifyStatelessImmediate(e,t,r){let i={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};await this.sendImmediate("identify",i,r)}captureStateless(e,t,r,i){this.wrap(()=>{let s=this.buildPayload({distinct_id:e,event:t,properties:r});this.enqueue("capture",s,i)})}async captureStatelessImmediate(e,t,r,i){let s=this.buildPayload({distinct_id:e,event:t,properties:r});await this.sendImmediate("capture",s,i)}aliasStateless(e,t,r,i){this.wrap(()=>{let s=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...r||{},distinct_id:t,alias:e}});this.enqueue("alias",s,i)})}async aliasStatelessImmediate(e,t,r,i){let s=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...r||{},distinct_id:t,alias:e}});await this.sendImmediate("alias",s,i)}groupIdentifyStateless(e,t,r,i,s,a){this.wrap(()=>{let n=this.buildPayload({distinct_id:s||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{},...a||{}}});this.enqueue("capture",n,i)})}async groupIdentifyStatelessImmediate(e,t,r,i,s,a){let n=this.buildPayload({distinct_id:s||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{},...a||{}}});await this.sendImmediate("capture",n,i)}async getRemoteConfig(){await this._initPromise;let e=this.host;"https://us.i.posthog.com"===e?e="https://us-assets.i.posthog.com":"https://eu.i.posthog.com"===e&&(e="https://eu-assets.i.posthog.com");let t=`${e}/array/${this.apiKey}/config`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(t,r,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(e=>e.json()).catch(e=>{this._logger.error("Remote config could not be loaded",e),this._events.emit("error",e)})}async getFlags(e,t={},r={},i={},s={},a=!1){await this._initPromise;let n=`${this.host}/flags/?v=2${a?"&config=true":""}`,o={token:this.apiKey,distinct_id:e,groups:t,person_properties:r,group_properties:i,...s};r.$device_id&&(o.$device_id=r.$device_id),this.evaluationContexts&&this.evaluationContexts.length>0&&(o.evaluation_contexts=this.evaluationContexts);let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(o)};return this._logger.info("Flags URL",n),this.fetchWithRetry(n,l,{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:e4},this.featureFlagsRequestTimeoutMs).then(e=>e.json()).then(e=>({success:!0,response:(e=>{if("flags"in e){let t,r=Object.fromEntries(Object.entries(e.flags??{}).map(([e,t])=>[e,u(t)]).filter(([,e])=>void 0!==e)),i=Object.fromEntries(Object.keys(t=e.flags??{}).filter(e=>{let r=t[e];return r.enabled&&r.metadata&&void 0!==r.metadata.payload}).map(e=>{let r=t[e].metadata?.payload;return[e,r?c(r):void 0]}));return{...e,featureFlags:r,featureFlagPayloads:i}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([e,t])=>[e,c(t)])),i=Object.fromEntries(Object.entries(t).map(([e,t])=>{var i,s;return[e,{key:e,enabled:"string"==typeof(i=t)||i,variant:"string"==typeof i?i:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:(s=r[e])?JSON.stringify(s):void 0,description:void 0}}]}));return{...e,featureFlags:t,featureFlagPayloads:r,flags:i}}})(e)})).catch(e=>(this._events.emit("error",e),{success:!1,error:this.categorizeRequestError(e)}))}categorizeRequestError(e){if(e instanceof eX)return{type:"api_error",statusCode:e.status};if(e instanceof eZ){let t=e.error;return t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name)?{type:"timeout"}:{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(e,t,r={},i={},s={},a){await this._initPromise;let n=await this.getFeatureFlagDetailStateless(e,t,r,i,s,a);if(void 0===n)return{response:void 0,requestId:void 0};let o=u(n.response);return void 0===o&&(o=!1),{response:o,requestId:n.requestId}}async getFeatureFlagDetailStateless(e,t,r={},i={},s={},a){await this._initPromise;let n=await this.getFeatureFlagDetailsStateless(t,r,i,s,a,[e]);if(void 0!==n)return{response:n.flags[e],requestId:n.requestId,evaluatedAt:n.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,r={},i={},s={},a){await this._initPromise;let n=await this.getFeatureFlagPayloadsStateless(t,r,i,s,a,[e]);if(!n)return;let o=n[e];return void 0===o?null:o}async getFeatureFlagPayloadsStateless(e,t={},r={},i={},s,a){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,r,i,s,a)).payloads}async getFeatureFlagsStateless(e,t={},r={},i={},s,a){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,r,i,s,a)}async getFeatureFlagsAndPayloadsStateless(e,t={},r={},i={},s,a){await this._initPromise;let n=await this.getFeatureFlagDetailsStateless(e,t,r,i,s,a);return n?{flags:n.featureFlags,payloads:n.featureFlagPayloads,requestId:n.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(e,t={},r={},i={},s,a){await this._initPromise;let n={geoip_disable:s??this.disableGeoip};a&&(n.flag_keys_to_evaluate=a);let o=await this.getFlags(e,t,r,i,n);if(!o.success)return;let l=o.response;return(l.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"),l.quotaLimited?.includes("feature_flags"))?(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"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:l?.requestId,quotaLimited:l.quotaLimited}):l}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(!0===this.disableSurveys)return this._logger.info("Loading surveys is disabled."),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},r=await this.fetchWithRetry(e,t).then(e=>{if(200!==e.status||!e.json){let t=`Surveys API could not be loaded: ${e.status}`,r=Error(t);this._logger.error(r),this._events.emit("error",Error(t));return}return e.json()}).catch(e=>{this._logger.error("Surveys API could not be loaded",e),this._events.emit("error",e)}),i=r?.surveys;return i&&this._logger.info("Surveys fetched from API: ",JSON.stringify(i)),i??[]}get props(){return this._props||(this._props=this.getPersistedProperty(h.Props)),this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(h.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(h.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}getQueueRouteKey(e){return e8}persistedQueueKeyForRoute(e){return h.Queue}getActiveQueueRoutes(){return[e8]}getRouteQueue(e){return this.getPersistedProperty(this.persistedQueueKeyForRoute(e))||[]}enqueue(e,t,r){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r);if(null===(i=this.processBeforeEnqueue(i)))return;i=this.normalizeMessage(i);let s=this.persistedQueueKeyForRoute(this.getQueueRouteKey(i)),a=this.getPersistedProperty(s)||[];a.length>=this.maxQueueSize&&(a.shift(),this._logger.warn("Queue is full, the oldest event is dropped.")),a.push({message:i}),this.setPersistedProperty(s,a),this._events.emit(e,i),a.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=N(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(e,t,r){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r);if(null!==(i=this.processBeforeEnqueue(i))){i=this.normalizeMessage(i);try{await this.sendBatch([i],void 0,this.getQueueRouteKey(i))}catch(e){this._events.emit("error",e)}}}normalizeMessage(e){let{type:t,library:r,library_version:i,...s}=e,a=e5(s.properties)?s.properties:void 0;return void 0!==r&&a?.$lib===void 0&&(a={...a||{},$lib:r}),void 0!==i&&a?.$lib_version===void 0&&(a={...a||{},$lib_version:i}),a&&(s.properties=a),s.uuid=D(s.uuid,Z),s}prepareMessage(e,t){let r={...e,timestamp:t?.timestamp?t?.timestamp:U(),uuid:D(t?.uuid,Z)};return(t?.disableGeoip??this.disableGeoip)&&(e5(r.properties)||(r.properties={}),r.properties.$geoip_disable=!0),r.distinctId&&(r.distinct_id=r.distinctId,delete r.distinctId),r}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.pendingFlushPromise||this.flush().catch(async e=>{await e0(e)})}async waitForPendingPromises(e,t=[]){let r=t.filter(e=>!!e),i=0;for(;;){let t=this.promiseQueue.getPromises([...r,...this.flushPromises],e);if(0===t.length)return;i>0&&this._logger.debug(`flush() re-checking ${t.length} pending promise(s) before flushing`),await Promise.all(t.map(e=>e.catch(()=>{}))),i++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(e){if(this.disabled)return Promise.resolve();if(!e&&this.pendingFlushPromise)return this.pendingFlushPromise;let t=this.flushPromise,r=this.promiseQueue.maxId,i=Promise.resolve().then(()=>{if(e)return this.waitForPendingPromises(r,[t,i])}).then(()=>H([t])).then(()=>(this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this._flush()));return this.pendingFlushPromise=i,this.flushPromise=i,this.flushPromises.add(i),this.addPendingPromise(i),H([i]).then(()=>{this.flushPromises.delete(i),this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this.flushPromise===i&&(this.flushPromise=null)}),i}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};return e&&""!==e&&(t["User-Agent"]=e),t}async sendBatch(e,t,r=e8){let i={api_key:this.apiKey,batch:e,sent_at:U()};this.historicalMigration&&(i.historical_migration=!0);let s=y(i),a=`${this.host}/batch/`,n=this.disableCompression?null:await f(s,this.isDebug),o={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...null!==n&&{"Content-Encoding":"gzip"}},body:n||s},l=await this.fetchWithRetry(a,o,t);await l.body?.cancel()?.catch(()=>{})}async _flush(){let e;this.clearFlushTimer(),await this._initPromise;let t=this.getActiveQueueRoutes();if(!t.some(e=>this.getRouteQueue(e).length>0))return;let r=[];for(let i of t)try{await this._flushRoute(i,r)}catch(t){void 0===e&&(e=t)}if(void 0!==e)throw e;this._events.emit("flush",r)}async _flushRoute(e,t){let r=this.persistedQueueKeyForRoute(e),i=this.getPersistedProperty(r)||[];if(!i.length)return;let s=i.length,a=0;for(;i.length>0&&a<s;){let s=i.slice(0,this.maxBatchSize),n=s.map(e=>void 0===e.message?e.message:this.normalizeMessage(e.message)),o=async()=>{let e=(this.getPersistedProperty(r)||[]).slice(s.length);this.setPersistedProperty(r,e),i=e,this._dequeuedMessagesCount+=s.length,await this.flushStorage()},l={retryCheck:e=>!e2(e)&&e3(e)};try{await this.sendBatch(n,l,e)}catch(e){if(e2(e)&&n.length>1){this.maxBatchSize=Math.max(1,Math.floor(n.length/2)),this._logger.warn(`Received 413 when sending batch of size ${n.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw e instanceof eZ||await o(),this._events.emit("error",e),e}await o(),t.push(...n),a+=n.length}}async _sendLogsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),r=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,i=this.disableCompression?null:await f(t,this.isDebug),s={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...null!==i&&{"Content-Encoding":"gzip"}},body:i||t};try{return await this.fetchWithRetry(r,s,{retryCheck:e=>!e2(e)&&e3(e)}),{kind:"ok"}}catch(e){if(e2(e))return{kind:"too-large"};if(e instanceof eZ)return{kind:"retry-later",error:e};return{kind:"fatal",error:e}}}async _sendMetricsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),r=`${this.host}/i/v1/metrics?token=${encodeURIComponent(this.apiKey)}`,i=this.disableCompression?null:await f(t,this.isDebug),s={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...null!==i&&{"Content-Encoding":"gzip"}},body:i||t};try{return await this.fetchWithRetry(r,s,{retryCheck:e=>!e2(e)&&e3(e)}),{kind:"ok"}}catch(e){if(e2(e))return{kind:"too-large"};if(e3(e))return{kind:"retry-later",error:e};return{kind:"fatal",error:e}}}async fetchWithRetry(e,t,r,i){let s=t.body?t.body:"",a=-1;try{a=s instanceof Blob?s.size:Buffer.byteLength(s,"utf8")}catch{a=s instanceof Blob?s.size:new TextEncoder().encode(s).length}return await B(async()=>{let r=new AbortController,s=N(()=>r.abort(),i??this.requestTimeout),n=null;try{n=await this.fetch(e,{signal:r.signal,...t})}catch(e){throw new eZ(e)}finally{clearTimeout(s)}if("no-cors"!==t.mode&&(n.status<200||n.status>=400))throw new eX(n,a);return n},{...this._retryOptions,...r})}async _shutdown(e=3e4){let t;await this._initPromise;let r=!1;if(this.clearFlushTimer(),this.disabled)return;let i=async()=>{try{for(await this.promiseQueue.join();this.getActiveQueueRoutes().some(e=>this.getRouteQueue(e).length>0);){let e=this._dequeuedMessagesCount;if(await this.flush(),r)break;if(this._dequeuedMessagesCount===e){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(e){if(!("object"==typeof e&&(e instanceof eX||e1(e))))throw e;await e0(e)}};try{return await Promise.race([new Promise((i,s)=>{t=N(()=>{this._logger.error("Timed out while shutting down PostHog"),r=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},e)}),i()])}finally{clearTimeout(t)}}async shutdown(e=3e4){return 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"):this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}}e.i(47114),e.i(80446),e.i(34246),e.s(["chromeStackLineParser",0,ey,"createDefaultStackParser",0,eO,"createStackParser",0,eR,"geckoStackLineParser",0,e_,"nodeStackLineParser",0,eI,"opera10StackLineParser",0,eF,"opera11StackLineParser",0,ex,"reverseAndStripFrames",0,eA,"winjsStackLineParser",0,ew],70736),e.i(70736),e.i(99573),e.i(29569),e.i(11475),e.i(43179),e.i(45098),e.i(6881),e.i(80322),e.i(80049),e.i(98689),e.s(["DOMExceptionCoercer",0,eM,"ErrorCoercer",0,eT,"ErrorEventCoercer",0,eL,"EventCoercer",0,eU,"ObjectCoercer",0,eB,"PrimitiveCoercer",0,eN,"PromiseRejectionEventCoercer",0,eq,"StringCoercer",0,eY],21854),e.i(21854);class e6{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(void 0!==t)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){for(;this._cache.size>=this._maxSize;){let e=this._cache.keys().next().value;e&&this._cache.delete(e)}}}e.s(["ReduceableCache",0,e6],46986),e.i(46986),e.i(52001),e.s(["DEFAULT_EXCEPTION_STEPS_CONFIG",0,ez,"DOMExceptionCoercer",0,eM,"EXCEPTION_STEP_INTERNAL_FIELDS",0,eH,"ErrorCoercer",0,eT,"ErrorEventCoercer",0,eL,"ErrorPropertiesBuilder",0,ec,"EventCoercer",0,eU,"ExceptionStepsBuffer",0,eV,"ObjectCoercer",0,eB,"PrimitiveCoercer",0,eN,"PromiseRejectionEventCoercer",0,eq,"ReduceableCache",0,e6,"StringCoercer",0,eY,"chromeStackLineParser",0,ey,"createDefaultStackParser",0,eO,"createStackParser",0,eR,"geckoStackLineParser",0,e_,"getUtf8ByteLength",0,eQ,"nodeStackLineParser",0,eI,"opera10StackLineParser",0,eF,"opera11StackLineParser",0,ex,"resolveExceptionStepsConfig",0,eG,"reverseAndStripFrames",0,eA,"stripReservedExceptionStepFields",0,eK,"winjsStackLineParser",0,ew],96117);var e7=e.i(96117),te=e7,tt=e.i(2157),tr=e.i(1457);let ti=new te.ReduceableCache(25),ts=new te.ReduceableCache(20);async function ta(e){let t={};for(let s=e.length-1;s>=0;s--){var r,i;let a=e[s],n=a?.filename;!(!a||"string"!=typeof n||"number"!=typeof a.lineno||(r=n).startsWith("node:")||r.endsWith(".min.js")||r.endsWith(".min.cjs")||r.endsWith(".min.mjs")||r.startsWith("data:")||void 0!==(i=a).lineno&&i.lineno>1e4||void 0!==i.colno&&i.colno>1e3)&&(t[n]||(t[n]=[]),t[n].push(a.lineno))}let s=Object.keys(t);if(0==s.length)return e;let a=[];for(let e of s){if(ts.get(e))continue;let r=t[e];if(!r)continue;r.sort((e,t)=>e-t);let i=function(e){if(!e.length)return[];let t=0,r=e[0];if("number"!=typeof r)return[];let i=to(r),s=[];for(;;){if(t===e.length-1){s.push(i);break}let r=e[t+1];if("number"!=typeof r)break;r<=i[1]?i[1]=r+7:(s.push(i),i=to(r)),t++}return s}(r);if(i.every(t=>(function(e,t){let r=ti.get(e);if(void 0===r)return!1;for(let e=t[0];e<=t[1];e++)if(void 0===r[e])return!1;return!0})(e,t)))continue;let s=function(e,t,r){let i=e.get(t);return void 0===i?(e.set(t,r),r):i}(ti,e,{});a.push(function(e,t,r){return new Promise(i=>{let s=(0,tt.createReadStream)(e),a=(0,tr.createInterface)({input:s});function n(){s.destroy(),i()}let o=0,l=0,u=t[0];if(void 0===u)return void n();let c=u[0],h=u[1];function d(){ts.set(e,1),a.close(),a.removeAllListeners(),n()}s.on("error",d),a.on("error",d),a.on("close",n),a.on("line",e=>{if(!(++o<c)&&(r[o]=function(e,t){let r=e,i=r.length;if(i<=150)return r;t>i&&(t=i);let s=Math.max(t-60,0);s<5&&(s=0);let a=Math.min(s+140,i);return a>i-5&&(a=i),a===i&&(s=Math.max(a-140,0)),r=r.slice(s,a),s>0&&(r=`...${r}`),a<i&&(r+="..."),r}(e,0),o>=h)){if(l===t.length-1){a.close(),a.removeAllListeners();return}let e=t[++l];if(void 0===e){a.close(),a.removeAllListeners();return}c=e[0],h=e[1]}})})}(e,i,s))}return await Promise.all(a).catch(()=>{}),e&&e.length>0&&function(e,t){for(let r of e)if(r.filename&&void 0===r.context_line&&"number"==typeof r.lineno){let e=t.get(r.filename);if(void 0===e)continue;!function(e,t,r){if(void 0===t.lineno||void 0===r)return;t.pre_context=[];for(let i=tl(e);i<e;i++){let e=r[i];if(void 0===e)return void tn(t);t.pre_context.push(e)}if(void 0===r[e])return tn(t);t.context_line=r[e];let i=function(e){return e+7}(e);t.post_context=[];for(let s=e+1;s<=i;s++){let e=r[s];if(void 0===e)break;t.post_context.push(e)}}(r.lineno,r,e)}}(e,ti),ti.reduce(),e}function tn(e){delete e.pre_context,delete e.context_line,delete e.post_context}function to(e){return[tl(e),e+7]}function tl(e){return Math.max(1,e-7)}let tu=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],tc=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return tu.concat(t).some(e=>{let t=e.toLowerCase();return -1!==r.indexOf(t)})},th={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};e.s(["FeatureFlagError",0,th],58325);class td{constructor(e){this._host=e.host,this._distinctId=e.distinctId,this._groups=e.groups,this._disableGeoip=e.disableGeoip,this._flags=e.flags,this._requestId=e.requestId,this._evaluatedAt=e.evaluatedAt,this._flagDefinitionsLoadedAt=e.flagDefinitionsLoadedAt,this._errorsWhileComputing=e.errorsWhileComputing??!1,this._quotaLimited=e.quotaLimited??!1,this._accessed=e.accessed??new Set,this._isSlice=e.isSlice??!1}isEnabled(e){let t=this._flags[e];return this._recordAccess(e),t?.enabled??!1}getFlag(e){let t=this._flags[e];if(this._recordAccess(e),t)return!!t.enabled&&(t.variant??!0)}getFlagPayload(e){return this._flags[e]?.payload}onlyAccessed(){let e={};for(let t of this._accessed){let r=this._flags[t];r&&(e[t]=r)}return this._cloneWith(e)}only(e){let t={},r=[];for(let i of e){let e=this._flags[i];e?t[i]=e:r.push(i)}return r.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${r.join(", ")}`),this._cloneWith(t)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let e={},t=[];for(let[r,i]of Object.entries(this._flags)){let s=!1!==i.enabled&&(i.variant??!0);e[`$feature/${r}`]=s,i.enabled&&t.push(r)}return t.length>0&&(t.sort(),e.$active_feature_flags=t),e}_cloneWith(e){return new td({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:e,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(e){if(this._accessed.add(e),""===this._distinctId||this._isSlice&&!(e in this._flags))return;let t=this._flags[e],r=void 0===t?void 0:!1!==t.enabled&&(t.variant??!0),i={$feature_flag:e,$feature_flag_response:r,$feature_flag_id:t?.id,$feature_flag_version:t?.version,$feature_flag_reason:t?.reason,locally_evaluated:t?.locallyEvaluated??!1,[`$feature/${e}`]:r,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:t?.locallyEvaluated?Date.now():this._evaluatedAt};t?.locallyEvaluated&&void 0!==this._flagDefinitionsLoadedAt&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let s=[];this._errorsWhileComputing&&s.push(th.ERRORS_WHILE_COMPUTING),this._quotaLimited&&s.push(th.QUOTA_LIMITED),void 0===t&&s.push(th.FLAG_MISSING),s.length>0&&(i.$feature_flag_error=s.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:e,response:r,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}}async function tg(e){let t=globalThis.crypto?.subtle;if(!t)throw Error("SubtleCrypto API not available");return Array.from(new Uint8Array(await t.digest("SHA-1",new TextEncoder().encode(e)))).map(e=>e.toString(16).padStart(2,"0")).join("")}let tp=["is_not","is_set"];class tf extends Error{constructor(e){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=e,Object.setPrototypeOf(this,tf.prototype)}}function ty(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}class tm extends Error{constructor(e){super(e),ty(this,tm)}}class tv extends Error{constructor(e){super(e),ty(this,tv)}}class t_{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:r,timeout:i,host:s,customHeaders:a,...n}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=r,this.host=s,this.poller=void 0,this.fetch=n.fetch||fetch,this.onError=n.onError,this.customHeaders=a,this.onLoad=n.onLoad,this.cacheProvider=n.cacheProvider,this.strictLocalEvaluation=n.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){this.debugMode&&e()}createEvaluationContext(e,t={},r={},i={},s={}){return{distinctId:e,groups:t,personProperties:r,groupProperties:i,evaluationCache:s}}async getFeatureFlag(e,t,r={},i={},s={}){let a,n;if(await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return a;if(void 0!==(n=this.featureFlagsByKey[e])){let o=this.createEvaluationContext(t,r,i,s);try{a=(await this.computeFlagAndPayloadLocally(n,o)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${a}`))}catch(t){t instanceof tv||t instanceof tm?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e}: ${t}`))}}return a}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let r={},i={},s=0==this.featureFlags.length,a=t?t.map(e=>this.featureFlagsByKey[e]).filter(Boolean):this.featureFlags,n={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(a.map(async e=>{try{let{value:t,payload:s}=await this.computeFlagAndPayloadLocally(e,n);r[e.key]=t,s&&(i[e.key]=s)}catch(t){t instanceof tv||t instanceof tm?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e.key}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e.key}: ${t}`)),s=!0}})),{response:r,payloads:i,fallbackToFlags:s}}async computeFlagAndPayloadLocally(e,t,r={}){let i,{matchValue:s,skipLoadCheck:a=!1}=r;if(a||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};i=void 0!==s?s:await this.computeFlagValueLocally(e,t);let n=this.getFeatureFlagPayload(e.key,i);return{value:i,payload:n}}async computeFlagValueLocally(e,t){let{distinctId:r,groups:i,personProperties:s,groupProperties:a}=t;if(!e.active)return!1;if(e.ensure_experience_continuity)throw new tm("Flag has experience continuity enabled");let n=(e.filters||{}).aggregation_group_type_index;if(void 0!=n){let r=this.groupTypeMapping[String(n)];if(!r)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${n} for feature flag ${e.key}`)),new tm("Flag has unknown group type index");if(!(r in i))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;"device_id"===e.bucketing_identifier&&(s?.$device_id===void 0||s?.$device_id===null||s?.$device_id==="")&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let o=a[r];return await this.matchFeatureFlagProperties(e,i[r],o,t)}{let i=this.getBucketingValueForFlag(e,r,s);if(void 0===i)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new tm(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,i,s,t)}}getBucketingValueForFlag(e,t,r){if(e.filters?.aggregation_group_type_index!=void 0)return t;if("device_id"===e.bucketing_identifier){let e=r?.$device_id;if(null==e||""===e)return;return e}return t}getFeatureFlagPayload(e,t){let r=null;if(!1!==t&&null!=t&&("boolean"==typeof t?r=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null:"string"==typeof t&&(r=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null),null!=r)){if("object"==typeof r)return r;if("string"==typeof r)try{return JSON.parse(r)}catch{}return r}return null}async evaluateFlagDependency(e,t,r){let{evaluationCache:i}=r,s=e.key;if(!this.featureFlagsByKey)throw new tm("Feature flags not available for dependency evaluation");if(!("dependency_chain"in e))throw new tm(`Flag dependency property for '${s}' is missing required 'dependency_chain' field`);let a=e.dependency_chain;if(!Array.isArray(a))throw new tm(`Flag dependency property for '${s}' has an invalid 'dependency_chain' (expected array, got ${typeof a})`);if(0===a.length)throw new tm(`Circular dependency detected for flag '${s}' (empty dependency chain)`);for(let e of a){if(!(e in i)){let t=this.featureFlagsByKey[e];if(t)if(t.active)try{let s=await this.computeFlagValueLocally(t,r);i[e]=s}catch(t){throw new tm(`Error evaluating flag dependency '${e}' for flag '${s}': ${t}`)}else i[e]=!1;else throw new tm(`Missing flag dependency '${e}' for flag '${s}'`)}if(null==i[e])throw new tm(`Dependency '${e}' could not be evaluated`)}let n=i[s];return this.flagEvaluatesToExpectedValue(e.value,n)}flagEvaluatesToExpectedValue(e,t){return"boolean"==typeof e?e===t||"string"==typeof t&&""!==t&&!0===e:"string"==typeof e&&t===e}async matchFeatureFlagProperties(e,t,r,i){let s,a=e.filters||{},n=a.groups||[],o=a.aggregation_group_type_index,l=a.early_exit??!1,{groups:u,groupProperties:c}=i,h=!1;for(let d of n)try{let n=void 0!==d.aggregation_group_type_index?d.aggregation_group_type_index:o,g=r,p=t;if(n!==o&&null!=n){let t=this.groupTypeMapping[String(n)];if(!t||!(t in u)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${e.key}': group type index ${n} not available`));continue}if(!(t in c)){h=!0;continue}g=c[t],p=u[t]}let f=await this.isConditionMatch(e,p,d,g,i);if("match"===f){let t=d.variant,r=a.multivariate?.variants||[];s=t&&r.some(e=>e.key===t)?t:await this.getMatchingVariant(e,p)||!0;break}if(l&&"out_of_rollout_bound"===f)return!1}catch(e){if(e instanceof tv)throw e;if(e instanceof tm)h=!0;else throw e}if(void 0!==s)return s;if(h)throw new tm("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(e,t,r,i,s){let a=r.rollout_percentage,n=e=>{this.logMsgIfDebug(()=>console.warn(e))};if((r.properties||[]).length>0){for(let e of r.properties){let t=e.type,r=!1;if("cohort"===t){let t=await tE(e,i,this.cohorts,this.debugMode,e=>this.evaluateFlagDependency(e,i,s));r="not_in"===e.operator?!t:t}else r="flag"===t?await this.evaluateFlagDependency(e,i,s):tw(e,i,n);if(!r)return"no_match"}if(void 0==a)return"match"}return void 0!=a&&await tb(e.key,t)>a/100?"out_of_rollout_bound":"match"}async getMatchingVariant(e,t){let r=await tb(e.key,t,"variant"),i=this.variantLookupTable(e).find(e=>r>=e.valueMin&&r<e.valueMax);if(i)return i.key}variantLookupTable(e){let t=[],r=0,i=0,s=e.filters||{};return(s.multivariate?.variants||[]).forEach(e=>{i=r+e.rollout_percentage/100,t.push({valueMin:r,valueMax:i,key:e.key}),r=i}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((e,t)=>(e[t.key]=t,e),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter(e=>e.ensure_experience_continuity);t.length>0&&console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map(e=>e.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).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();if(t)return this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0;return!1}catch(e){return this.onError?.(Error(`Failed to load from cache: ${e}`)),!1}}async loadFeatureFlags(e=!1){if(!this.loadedSuccessfullyOnce||e)return!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period")):(this.loadingPromise||(this.loadingPromise=this._loadFeatureFlags().catch(e=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${e}`))).finally(()=>{this.loadingPromise=void 0})),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){return this.shouldBeginExponentialBackoff?Math.min(6e4,this.pollingInterval*2**this.backOffCount):this.pollingInterval}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(e){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${e}`))}if(!e&&(await this.loadFromCache("Loaded flags from cache (skipped fetch)")||this.loadedSuccessfullyOnce))return;let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=t.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new tf(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402: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"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new tf(`Your secret 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 secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new tf(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let r=await t.json()??{};if(!("flags"in r))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(r)}`));this.flagsEtag=t.headers?.get("ETag")??void 0;let i={flags:r.flags??[],groupTypeMapping:r.group_type_mapping||{},cohorts:r.cohorts||{}};if(this.updateFlagState(i),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(i)}catch(e){this.onError?.(Error(`Failed to store in cache: ${e}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(i.flags);break}default:return}}catch(e){e instanceof tf&&this.onError?.(e)}}getPersonalApiKeyRequestOptions(e="GET",t){let r={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return t&&(r["If-None-Match"]=t),{method:e,headers:r}}_requestFeatureFlagDefinitions(){let e=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),r=null;if(this.timeout&&"number"==typeof this.timeout){let e=new AbortController;r=N(()=>{e.abort()},this.timeout),t.signal=e.signal}try{return(0,this.fetch)(e,t)}finally{clearTimeout(r)}}async stopPoller(e=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();t instanceof Promise&&await Promise.race([t,new Promise((t,r)=>setTimeout(()=>r(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(e){this.onError?.(Error(`Error during cache shutdown: ${e}`))}}}async function tb(e,t,r=""){return parseInt((await tg(`${e}.${t}${r}`)).slice(0,15),16)/0x1000000000000000}function tw(e,t,r){let i=e.key,s=e.value,a=e.operator||"exact";if(i in t){if("is_not_set"===a)return!1}else{if("is_not_set"===a)return!0;throw new tm(`Property ${i} not found in propertyValues`)}let n=t[i];if(null==n&&!tp.includes(a))return r&&r(`Property ${i} cannot have a value of null/undefined with the ${a} operator`),!1;function o(e,t){return Array.isArray(e)?e.map(e=>String(e).toLowerCase()).includes(String(t).toLowerCase()):String(e).toLowerCase()===String(t).toLowerCase()}function l(e,t,r){if("gt"===r)return e>t;if("gte"===r)return e>=t;if("lt"===r)return e<t;if("lte"===r)return e<=t;throw Error(`Invalid operator: ${r}`)}switch(a){case"exact":return o(s,n);case"is_not":return!o(s,n);case"is_set":return i in t;case"icontains":return String(n).toLowerCase().includes(String(s).toLowerCase());case"not_icontains":return!String(n).toLowerCase().includes(String(s).toLowerCase());case"regex":return tP(String(s))&&null!==String(n).match(String(s));case"not_regex":return tP(String(s))&&null===String(n).match(String(s));case"gt":case"gte":case"lt":case"lte":{let e,t="number"==typeof s?s:parseFloat(String(s));if(e="number"==typeof n?n:null!=n?parseFloat(String(n)):NaN,Number.isFinite(t)&&Number.isFinite(e))return l(e,t,a);return l(String(n),String(s),a)}case"is_date_after":case"is_date_before":{if("boolean"==typeof s)throw new tm("Date operations cannot be performed on boolean values");let e=function(e){let t=e.match(/^-?(?<number>[0-9]+)(?<interval>[a-z])$/),r=new Date(new Date().toISOString());if(!t)return null;{if(!t.groups)return null;let e=parseInt(t.groups.number);if(e>=1e4)return null;let i=t.groups.interval;if("h"==i)r.setUTCHours(r.getUTCHours()-e);else if("d"==i)r.setUTCDate(r.getUTCDate()-e);else if("w"==i)r.setUTCDate(r.getUTCDate()-7*e);else if("m"==i)r.setUTCMonth(r.getUTCMonth()-e);else{if("y"!=i)return null;r.setUTCFullYear(r.getUTCFullYear()-e)}return r}}(String(s));if(null==e&&(e=tI(s)),null==e)throw new tm(`Invalid date: ${s}`);let t=tI(n);if(["is_date_before"].includes(a))return t<e;return t>e}case"semver_eq":return 0===t$(tS(String(n)),tS(String(s)));case"semver_neq":return 0!==t$(tS(String(n)),tS(String(s)));case"semver_gt":return t$(tS(String(n)),tS(String(s)))>0;case"semver_gte":return t$(tS(String(n)),tS(String(s)))>=0;case"semver_lt":return 0>t$(tS(String(n)),tS(String(s)));case"semver_lte":return 0>=t$(tS(String(n)),tS(String(s)));case"semver_tilde":{let e,t=tS(String(n)),{lower:r,upper:i}={lower:[(e=tS(String(s)))[0],e[1],e[2]],upper:[e[0],e[1]+1,0]};return t$(t,r)>=0&&0>t$(t,i)}case"semver_caret":{let e=tS(String(n)),{lower:t,upper:r}=function(e){let[t,r,i]=tS(e);return{lower:[t,r,i],upper:t>0?[t+1,0,0]:r>0?[0,r+1,0]:[0,0,i+1]}}(String(s));return t$(e,t)>=0&&0>t$(e,r)}case"semver_wildcard":{let e=tS(String(n)),{lower:t,upper:r}=function(e){let t,r,i=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!i)throw new tm(`Invalid wildcard semver: ${e}`);let s=i.split("."),a=t=>{try{return tx(t,e)}catch{throw new tm(`Invalid wildcard semver: ${e}`)}},n=a(s[0]);if(1===s.length)t=[n,0,0],r=[n+1,0,0];else{let e=a(s[1]);t=[n,e,0],r=[n,e+1,0]}return{lower:t,upper:r}}(String(s));return t$(e,t)>=0&&0>t$(e,r)}default:throw new tm(`Unknown operator: ${a}`)}}async function tE(e,t,r,i=!1,s){let a=String(e.value);if(!(a in r))throw new tv(`cohort ${a} not found in local cohorts - likely a static cohort that requires server evaluation`);return tF(r[a],t,r,i,s)}async function tF(e,t,r,i=!1,s){if(!e)return!0;let a=e.type,n=e.values;if(!n||0===n.length)return!0;let o=!1;if("values"in n[0]){for(let e of n)try{let n=await tF(e,t,r,i,s);if("AND"===a){if(!n)return!1}else if(n)return!0}catch(t){if(t instanceof tv)throw t;if(t instanceof tm)i&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new tm("Can't match cohort without a given cohort property value");return"AND"===a}for(let e of n)try{let n;if("cohort"===e.type)n=await tE(e,t,r,i,s);else if("flag"===e.type){if(!s)throw new tm(`Flag dependency '${e.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);n=await s(e)}else n=tw(e,t);let o=e.negation||!1;if("AND"===a){if(!n&&!o||n&&o)return!1}else if(n&&!o||!n&&o)return!0}catch(t){if(t instanceof tv)throw t;if(t instanceof tm)i&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new tm("can't match cohort without a given cohort property value");return"AND"===a}function tP(e){try{return new RegExp(e),!0}catch(e){return!1}}function tx(e,t){if(!/^\d+$/.test(e)||e.length>1&&"0"===e[0])throw new tm(`Invalid semver: ${t}`);return parseInt(e,10)}function tS(e){let t=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!t||t.startsWith("."))throw new tm(`Invalid semver: ${e}`);let r=t.split("."),i=t=>void 0===t||""===t?0:tx(t,e);return[i(r[0]),i(r[1]),i(r[2])]}function t$(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return -1;if(e[r]>t[r])return 1}return 0}function tI(e){if(e instanceof Date)return e;if("string"==typeof e||"number"==typeof e){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new tm(`${e} is in an invalid date format`)}throw new tm(`The date provided ${e} must be a string, number, or date object`)}function tC(e,t,r,i,s){if(t>r&&(i.warn("min cannot be greater than max."),t=r),x(e))if(e>r)return i.warn(" cannot be greater than max: "+r+". Using max value instead."),r;else return e<t?(i.warn(" cannot be less than min: "+t+". Using min value instead."),t):e;return i.warn(" must be a number. using max or fallback. max: "+r+", fallback: "+s),tC(s||r,t,r,i)}class tk{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=tC(e.bucketSize,0,100,e._logger),this._refillRate=tC(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=tC(e.refillInterval,0,864e5,e._logger)}_applyRefill(e,t){let r=Math.floor((t-e.lastAccess)/this._refillInterval);if(r>0){let t=r*this._refillRate;e.tokens=Math.min(e.tokens+t,this._bucketSize),e.lastAccess=e.lastAccess+r*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),r=String(e),i=this._buckets[r];return i?this._applyRefill(i,t):(i={tokens:this._bucketSize,lastAccess:t},this._buckets[r]=i),0===i.tokens||(i.tokens--,0===i.tokens&&this._onBucketRateLimited?.(e),0===i.tokens)}stop(){this._buckets={}}}class tA{constructor(e,t,r){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=r,this._rateLimiter=new tk({...function(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??1,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??10}}(t),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return w(e)&&"__posthog_previously_captured_error"in e&&!0===e.__posthog_previously_captured_error}static async buildEventMessage(e,t,r,i,s){let a={...s},n=e.buildFromUnknown(t,r);return n.$exception_list=await e.modifyFrames(n.$exception_list),{event:"$exception",distinctId:i,properties:{...n,...a},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled()){var t,r,i;let s;t=this.onException.bind(this),r=this.onFatalError.bind(this),globalThis.process?.on("uncaughtException",(s=!1,Object.assign(i=>{let a=e.g.process.listeners("uncaughtException").filter(e=>"domainUncaughtExceptionClear"!==e.name&&!0!==e._posthogErrorHandler).length;t(i,{mechanism:{type:"onuncaughtexception",handled:!1}}),s||0!==a||(s=!0,r(i))},{_posthogErrorHandler:!0}))),i=this.onException.bind(this),globalThis.process?.on("unhandledRejection",e=>i(e,{mechanism:{type:"onunhandledrejection",handled:!1}}))}}onException(e,t){this.client.addPendingPromise((async()=>{if(!tA.isPreviouslyCapturedError(e)){let r=await tA.buildEventMessage(this.client.getErrorPropertiesBuilder(),e,t),i=r.properties,s=i?.$exception_list[0]?.type??"Exception";return this._rateLimiter.consumeRateLimit(s)?void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:s}):this.client._capturePreparedEvent(r,!1)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(2e3),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}class tO{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=null!==t?t:void 0}constructor(){this._memoryStorage={}}}let tR="analytics";class tM extends Error{constructor({requestId:e,drops:t,retryExhausted:r,cause:i}){super(tM.buildMessage(e,t,r,i)),this.name="CaptureV1Error",this.requestId=e,this.drops=t,this.retryExhausted=r,this.cause=i}static buildMessage(e,t,r,i){let s=`Capture V1 batch ${e} did not fully deliver: ${t.length} dropped, ${r.length} undelivered`;return i instanceof Error&&(s+=` (${i.message})`),s}}function tT(e){if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;if("string"==typeof e){let t=e.trim().toLowerCase();if("true"===t||"1"===t)return!0;if("false"===t||"0"===t)return!1}}let tL=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:tT},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:tT},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:tT},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:function(e){return"string"==typeof e?e:void 0}}],tD=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function tj(e,t,r){void 0===r||t in e||(e[t]=r)}function tB(e){var t;let r={..."object"==typeof(t=e.properties)&&null!==t&&!Array.isArray(t)?e.properties:{}},i={};for(let{property:e,optionKey:t,coerce:s}of tL)if(e in r){let a=s(r[e]);void 0!==a&&(i[t]=a),delete r[e]}let s={};for(let{property:e,field:t}of tD)if(e in r){let i=r[e];"string"==typeof i&&(s[t]=i),delete r[e]}return delete r.$lib,delete r.$lib_version,tj(r,"$set",e.$set),tj(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:function(e){if("string"==typeof e)return Number.isNaN(new Date(e).getTime())?new Date().toISOString():e;if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=null==e?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}(e.timestamp),...s,options:i,properties:r}}let tU=new Set([408,500,502,503,504]);class tN{constructor(e,t){this.config=e,this.maxBackoffMs=e.maxBackoffMs??3e4,this.fetchFn=t.fetch,this.onError=t.onError,this.now=t.now??Date.now,this.sleep=t.sleep??(e=>new Promise(t=>N(t,e))),this.generateRequestId=t.generateRequestId??Z,this.compress=t.compress??f}async sendV1Batch(e){if(0===e.length)return;let t=this.generateRequestId(),r=new Date(this.now()).toISOString(),{batch:i}=function(e,{createdAt:t,historicalMigration:r}){let i={created_at:t,batch:e.map(tB)};return r&&(i.historical_migration=!0),i}(e,{createdAt:r,historicalMigration:this.config.historicalMigration}),s=`${this.config.host}/i/v1/analytics/events`,a=[],n=i,o=Math.max(1,this.config.maxAttempts);for(let e=1;e<=o;e++){let i,l,u=e===o,c=y({created_at:r,...this.config.historicalMigration?{historical_migration:!0}:{},batch:n});try{i=await this.sendOnce(s,c,e,t)}catch(r){if(u)return this.surfaceBatchFailure(t,a,n,r);await this.sleep(this.backoffDelay(e));continue}let{status:h}=i;if(h<200||h>=300){if(!u&&tU.has(h)){let t=this.parseRetryAfter(i);await this.cancelBody(i),await this.sleep(this.backoffDelay(e,t));continue}let r=await this.buildHttpError(i,h);return this.surfaceBatchFailure(t,a,n,r)}try{l=await this.parseResponse(i)}catch{return this.surfaceBatchFailure(t,a,n,Error(`Capture V1 returned an unparseable ${h} response body`))}let d=this.classify(n,l,a);if(0===d.length)return this.surfacePartialDrops(t,a);if(u)return void this.onError(new tM({requestId:t,drops:a,retryExhausted:d.map(e=>e.uuid)}));n=d;let g=this.parseRetryAfter(i);await this.sleep(this.backoffDelay(e,g))}}async sendOnce(e,t,r,i){let s=this.buildHeaders(r,i),a=t;if(this.config.compressionEnabled){let e=await this.compress(t,this.config.isDebug);null!==e&&(a=e,s["Content-Encoding"]="gzip")}let n=new AbortController,o=N(()=>n.abort(),this.config.requestTimeoutMs);try{return await this.fetchFn(e,{method:"POST",headers:s,body:a,signal:n.signal})}finally{clearTimeout(o)}}buildHeaders(e,t){let r=`${this.config.libraryId}/${this.config.libraryVersion}`,i={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":r,"PostHog-Attempt":String(e),"PostHog-Request-Id":t,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};return this.config.userAgent&&(i["User-Agent"]=this.config.userAgent),i}classify(e,t,r){let i=t.results??{},s=[];for(let t of e){let e=i[t.uuid];e&&("drop"===e.result?r.push({uuid:t.uuid,details:e.details??void 0}):"retry"===e.result&&s.push(t))}return s}backoffDelay(e,t){let r=Math.min(this.config.initialRetryDelayMs*2**(e-1),this.maxBackoffMs);return void 0===t?r:Math.max(r,Math.min(t,this.maxBackoffMs))}parseRetryAfter(e){let t=e.headers?.get("Retry-After");if(!t)return;let r=t.trim();if(/^\d+$/.test(r)){let e=parseInt(r,10);return Number.isFinite(e)&&e>0?1e3*e:void 0}let i=Date.parse(r);if(Number.isNaN(i))return;let s=i-this.now();return s>0?s:void 0}async parseResponse(e){let t=JSON.parse(await e.text());if("object"!=typeof t||null===t||Array.isArray(t))throw Error("unexpected response shape");let r=t.results;if(void 0!==r&&("object"!=typeof r||null===r||Array.isArray(r)))throw Error("unexpected results shape");return{results:r??{}}}async buildHttpError(e,t){let r="";try{r=(await e.text()).slice(0,512)}catch{}let i=r?`: ${r}`:"";return Error(`Capture V1 request failed with HTTP ${t}${i}`)}surfaceBatchFailure(e,t,r,i){this.onError(new tM({requestId:e,drops:t,retryExhausted:r.map(e=>e.uuid),cause:i}))}surfacePartialDrops(e,t){t.length>0&&this.onError(new tM({requestId:e,drops:t,retryExhausted:[]}))}async cancelBody(e){await e.body?.cancel()?.catch(()=>{})}}let tq=new Set;function tH(e,t){tq.has(e)||(tq.add(e),console.warn(`[PostHog] ${t}`))}class tW extends e9{constructor(e,t={}){const r=function(e){return"string"==typeof e?e.trim():""}(e),i={...t,maxQueueSize:t.maxQueueSize??1e4,host:function(e){return("string"==typeof e?e.trim():"")||"https://us.i.posthog.com"}(t.host),personalApiKey:function(e){return("string"==typeof e?e.trim():"")||void 0}(t.secretKey??t.personalApiKey)};if(super(r,i),this._memoryStorage=new tO,this.options=i,this.captureMode=function(){let e="u">typeof process?process.env?.POSTHOG_CAPTURE_MODE:void 0;return"v0"===e||"v1"===e?e:"v0"}(),this.context=this.initializeContext(),this.options.featureFlagsPollingInterval="number"==typeof i.featureFlagsPollingInterval?Math.max(i.featureFlagsPollingInterval,100):3e4,"number"==typeof i.waitUntilDebounceMs&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),"number"==typeof i.waitUntilMaxWaitMs&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),!this.disabled&&i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');!1!==i.enableLocalEvaluation&&(this.featureFlagsPoller=new t_({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:r,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:e=>{this._events.emit("error",e)},onLoad:e=>{this._events.emit("localEvaluationFlagsLoaded",e)},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation}))}this.errorTracking=new tA(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||5e4}enqueue(e,t,r){super.enqueue(e,t,r),this.scheduleDebouncedFlush()}async flush(){let e=this.flushWithPendingPromises(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e||this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let t,r=new Promise(e=>{t=e});try{e(r)}catch{return}this._waitUntilCycle={resolve:t,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt,r=this.options.waitUntilMaxWaitMs??500;if(void 0!==this._waitUntilCycle.timer&&clearTimeout(this._waitUntilCycle.timer),t>=r)return void this.resolveWaitUntilFlush();let i=this.options.waitUntilDebounceMs??50;this._waitUntilCycle.timer=N(()=>{this.resolveWaitUntilFlush()},i)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;return e&&(clearTimeout(e.timer),this._waitUntilCycle=void 0),e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await this.flushWithPendingPromises()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getQueueRouteKey(e){var t;return"v1"===this.captureMode&&"string"==typeof(t=e).event&&t.event.startsWith("$ai_")?"ai":tR}persistedQueueKeyForRoute(e){return"ai"===e?h.AiQueue:h.Queue}getActiveQueueRoutes(){return"v1"===this.captureMode?[tR,"ai"]:[tR]}async sendBatch(e,t,r=tR){if("v1"!==this.captureMode||"ai"===r)return super.sendBatch(e,t,r);let i=e.filter(e=>void 0!==e);await this.getV1Sender().sendV1Batch(i)}getV1Sender(){return this._v1Sender||(this._v1Sender=new tN({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3e3,isDebug:this.isDebug},{fetch:(e,t)=>this.fetch(e,t),onError:e=>this._events.emit("error",e)})),this._v1Sender}getLibraryVersion(){return"5.44.0"}get metrics(){var e;let t;return this._metrics||(this._metrics=new V(this,(e=this.options.metrics,t=e?.resourceAttributes,{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1e3}),this._logger)),this._metrics}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getCommonEventProperties(){let e=super.getCommonEventProperties();return(this.options.isServer??!0)&&(e.$is_server=!0),e}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}_warnIfInvalidCapture(e,t,r){"string"==typeof e&&this._logger.warn(t),"$exception"!==e.event||e._originatedFromCaptureException||this._logger.warn(r)}_sendPreparedEvent(e,t,r,i){return this.addPendingPromise(this._prepareEventMessage(t,i).then(({distinctId:t,event:i,properties:s,options:a})=>{let n={timestamp:a.timestamp,disableGeoip:a.disableGeoip,uuid:a.uuid},o={distinctId:t,event:i,properties:{...s,...this.getCommonEventProperties()}};return r?this.sendImmediate(e,o,n):this.enqueue(e,o,n)}).catch(e=>{e&&console.error(e)}))}_capturePreparedEvent(e,t){return this._sendPreparedEvent("capture",e,t)}capture(e){this._warnIfInvalidCapture(e,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(e,!1)}async captureImmediate(e){return this._warnIfInvalidCapture(e,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(e,!0)}identify({distinctId:e,properties:t={},disableGeoip:r}){let{$set:i,$set_once:s,$anon_distinct_id:a,...n}=t;this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:{$set:i||n,$set_once:s||{},$anon_distinct_id:a??void 0},disableGeoip:r},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:r}){let{$set:i,$set_once:s,$anon_distinct_id:a,...n}=t;await this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:{$set:i||n,$set_once:s||{},$anon_distinct_id:a??void 0},disableGeoip:r},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:e,properties:t={},propertiesOnce:r={}}){if(0===Object.keys(t).length&&0===Object.keys(r).length)return;let i={};Object.keys(t).length>0&&(i.$set=t),Object.keys(r).length>0&&(i.$set_once=r),this.capture({distinctId:e,event:"$set",properties:i})}unsetPersonProperties({distinctId:e,properties:t}){let r=(Array.isArray(t)?t:[t]).filter(e=>"string"==typeof e&&e.trim().length>0);0!==r.length&&this.capture({distinctId:e,event:"$set",properties:{$unset:r}})}alias(e){this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(e){await this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=3e4){return!!this.isLocalEvaluationReady()||void 0!==this.featureFlagsPoller&&new Promise(t=>{let r=setTimeout(()=>{i(),t(!1)},e),i=this._events.on("localEvaluationFlagsLoaded",e=>{clearTimeout(r),i(),t(e>0)})})}_resolveDistinctId(e,t){return"string"==typeof e?{distinctId:e,options:t}:{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,r={},i){let s,a,n,o,l,u,c;if(this.disabled)return void this._logger.warn("The client is disabled");let h=r.sendFeatureFlagEvents??!0;if(void 0!==this._flagOverrides&&e in this._flagOverrides){let t=this._flagOverrides[e];if(void 0===t)return;let r=this._payloadOverrides?.[e];return{key:e,enabled:!1!==t,variant:"string"==typeof t?t:void 0,payload:r}}let{groups:d,disableGeoip:g}=r,{onlyEvaluateLocally:p,personProperties:f,groupProperties:y}=r,m=this.addLocalPersonAndGroupProperties(t,d,f,y);f=m.allPersonProperties,y=m.allGroupProperties;let v=this.createFeatureFlagEvaluationContext(t,d,this.personPropertiesForLocalEvaluation(t,f),y);void 0==p&&(p=this.options.strictLocalEvaluation??!1);let _=!1;if(void 0!==this.featureFlagsPoller){await this.featureFlagsPoller?.loadFeatureFlags();let t=this.featureFlagsPoller?.featureFlagsByKey[e];if(t)try{let r=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(t,v,{matchValue:i});if(r){_=!0;let i=r.value;l=t.id,c="Evaluated locally",s={key:e,enabled:!1!==i,variant:"string"==typeof i?i:void 0,payload:r.payload??void 0}}}catch(t){if(t instanceof tv||t instanceof tm)this._logger?.info(`${t.name} when computing flag locally: ${e}: ${t.message}`);else throw t}}if(!_&&!p){let t=await super.getFeatureFlagDetailsStateless(v.distinctId,v.groups,f,y,g,[e]);if(void 0===t)o=th.UNKNOWN_ERROR;else{a=t.requestId,n=t.evaluatedAt;let r=[];t.errorsWhileComputingFlags&&r.push(th.ERRORS_WHILE_COMPUTING),t.quotaLimited?.includes("feature_flags")&&r.push(th.QUOTA_LIMITED);let i=t.flags[e];if(void 0===i)r.push(th.FLAG_MISSING);else{let t;if(l=i.metadata?.id,u=i.metadata?.version,c=i.reason?.description??i.reason?.code,i.metadata?.payload!==void 0)try{t=JSON.parse(i.metadata.payload)}catch{t=i.metadata.payload}s={key:e,enabled:i.enabled,variant:i.variant,payload:t}}r.length>0&&(o=r.join(","))}}if(h){let r=void 0===s?void 0:!1!==s.enabled&&(s.variant??!0),i={$feature_flag:e,$feature_flag_response:r,$feature_flag_id:l,$feature_flag_version:u,$feature_flag_reason:c,locally_evaluated:_,[`$feature/${e}`]:r,$feature_flag_request_id:a,$feature_flag_evaluated_at:_?Date.now():n};if(_&&this.featureFlagsPoller){let e=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();void 0!==e&&(i.$feature_flag_definitions_loaded_at=e)}o&&(i.$feature_flag_error=o),this._captureFlagCalledEventIfNeeded({distinctId:t,key:e,response:r,groups:d,disableGeoip:g,properties:i})}return void 0!==s&&void 0!==this._payloadOverrides&&e in this._payloadOverrides&&(s={...s,payload:this._payloadOverrides[e]}),s}async getFeatureFlag(e,t,r){tH("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead — this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:r?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(void 0!==i)return!1!==i.enabled&&(i.variant??!0)}async getFeatureFlagPayload(e,t,r,i){if(tH("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead — this consolidates flag evaluation into a single `/flags` request per incoming request."),void 0!==this._payloadOverrides&&e in this._payloadOverrides)return this._payloadOverrides[e];let s=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:!1},r);if(void 0!==s)return s.payload??null}async getFeatureFlagResult(e,t,r){let{distinctId:i,options:s}=this._resolveDistinctId(t,r);return i?this._getFeatureFlagResult(e,i,{...s,sendFeatureFlagEvents:s?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required — pass it explicitly or use withContext()")}async getRemoteConfigPayload(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let t=await this._requestRemoteConfigPayload(e);if(!t)return;let r=await t.json();if("string"==typeof r)try{return JSON.parse(r)}catch(e){}return r}async isFeatureEnabled(e,t,r){tH("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead — this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:r?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return void 0===i?void 0:!1!==i.enabled&&!!(i.variant??!0)}async getAllFlags(e,t){let{distinctId:r,options:i}=this._resolveDistinctId(e,t);return r?(await this.getAllFlagsAndPayloads(r,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags — pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(e,t){let{distinctId:r,options:i}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads — pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:s,disableGeoip:a,flagKeys:n}=i||{},{onlyEvaluateLocally:o,personProperties:l,groupProperties:u}=i||{},c=this.addLocalPersonAndGroupProperties(r,s,l,u);l=c.allPersonProperties,u=c.allGroupProperties;let h=this.createFeatureFlagEvaluationContext(r,s,this.personPropertiesForLocalEvaluation(r,l),u);void 0==o&&(o=this.options.strictLocalEvaluation??!1);let d=await this.featureFlagsPoller?.getAllFlagsAndPayloads(h,n),g={},p={},f=!0;if(d&&(g=d.response,p=d.payloads,f=d.fallbackToFlags),f&&!o){let e=await super.getFeatureFlagsAndPayloadsStateless(h.distinctId,h.groups,l,u,a,n);g={...g,...e.flags||{}},p={...p,...e.payloads||{}}}return void 0!==this._flagOverrides&&(g={...g,...this._flagOverrides}),void 0!==this._payloadOverrides&&(p={...p,...this._payloadOverrides}),{featureFlags:g,featureFlagPayloads:p}}async evaluateFlags(e,t){let r,i,{distinctId:s,options:a}=this._resolveDistinctId(e,t);if(!s)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags — pass it explicitly or use withContext()"),new td({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new td({host:this._getFeatureFlagEvaluationsHost(),distinctId:s,flags:{}});let{groups:n,disableGeoip:o,flagKeys:l}=a||{},{onlyEvaluateLocally:u,personProperties:c,groupProperties:h}=a||{},d=this.addLocalPersonAndGroupProperties(s,n,c,h);c=d.allPersonProperties,h=d.allGroupProperties;let g=this.createFeatureFlagEvaluationContext(s,n,this.personPropertiesForLocalEvaluation(s,c),h);void 0==u&&(u=this.options.strictLocalEvaluation??!1);let p={},f=!1,y=!1,m=await this.featureFlagsPoller?.getAllFlagsAndPayloads(g,l),v=new Set;if(m)for(let[e,t]of Object.entries(m.response)){let r=this.featureFlagsPoller?.featureFlagsByKey[e];p[e]={key:e,enabled:!1!==t,variant:"string"==typeof t?t:void 0,payload:m.payloads[e],id:r?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0},v.add(e)}if((!m||m.fallbackToFlags)&&!u){let e=await super.getFeatureFlagDetailsStateless(g.distinctId,g.groups,c,h,o,l);if(e)for(let[t,s]of(r=e.requestId,i=e.evaluatedAt,f=!!e.errorsWhileComputingFlags,y=Array.isArray(e.quotaLimited)&&e.quotaLimited.includes("feature_flags"),Object.entries(e.flags))){let e;if(!v.has(t)){if(s.metadata?.payload!==void 0)try{e=JSON.parse(s.metadata.payload)}catch{e=s.metadata.payload}p[t]={key:t,enabled:s.enabled,variant:s.variant,payload:e,id:s.metadata?.id,version:s.metadata?.version,reason:s.reason?.description??s.reason?.code,locallyEvaluated:!1}}}}if(void 0!==this._flagOverrides)for(let[e,t]of Object.entries(this._flagOverrides)){if(void 0===t){delete p[e];continue}let r=p[e];p[e]={key:e,enabled:!1!==t,variant:"string"==typeof t?t:void 0,payload:r?.payload,id:r?.id,version:r?.version,reason:r?.reason,locallyEvaluated:r?.locallyEvaluated??!1}}if(void 0!==this._payloadOverrides)for(let[e,t]of Object.entries(this._payloadOverrides)){let r=p[e];r&&(p[e]={...r,payload:t})}return new td({host:this._getFeatureFlagEvaluationsHost(),distinctId:s,groups:n,disableGeoip:o,flags:p,requestId:r,evaluatedAt:i,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:f,quotaLimited:y})}_captureFlagCalledEventIfNeeded(e){let{distinctId:t,key:r,response:i,groups:s,disableGeoip:a,properties:n}=e,o=s&&Object.keys(s).length>0?`_${JSON.stringify(Object.entries(s).sort(([e],[t])=>e<t?-1:+(e>t)))}`:"",l=`${r}_${i}${o}`;t in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[t].has(l)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),this.distinctIdHasSentFlagCalls[t]instanceof Set?this.distinctIdHasSentFlagCalls[t].add(l):this.distinctIdHasSentFlagCalls[t]=new Set([l]),this.capture({distinctId:t,event:"$feature_flag_called",properties:n,groups:s,disableGeoip:a}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:e=>this._captureFlagCalledEventIfNeeded(e),logWarning:e=>{!1!==this.options.featureFlagsLogWarnings&&console.warn(`[PostHog] ${e}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:e,groupKey:t,properties:r,distinctId:i,disableGeoip:s}){this._sendPreparedEvent("capture",{distinctId:i||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{}},disableGeoip:s},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:e,groupKey:t,properties:r,distinctId:i,disableGeoip:s}){await this._sendPreparedEvent("capture",{distinctId:i||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{}},disableGeoip:s},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=e=>Object.fromEntries(e.map(e=>[e,!0]));if(!1===e){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){"flags"in e&&(!1===e.flags?this._flagOverrides=void 0:Array.isArray(e.flags)?this._flagOverrides=t(e.flags):void 0!==e.flags&&(this._flagOverrides={...e.flags})),"payloads"in e&&(!1===e.payloads?this._payloadOverrides=void 0:void 0!==e.payloads&&(this._payloadOverrides={...e.payloads}));return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;if("flags"in e){let t=e.flags;if(!1===t||Array.isArray(t)||"object"==typeof t&&null!==t)return!0}if("payloads"in e){let t=e.payloads;if(!1===t||"object"==typeof t&&null!==t)return!0}return!1}withContext(e,t,r){return this.context?this.context.run(e,t,r):t()}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=Date.now()+(e??3e4),r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown(),this._metrics&&(await Promise.race([this._metrics.flush().catch(()=>{}),new Promise(e=>N(e,Math.max(0,t-Date.now())))]),this._metrics.reset());try{return await super._shutdown(Math.max(0,t-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},r?.()}}async _requestRemoteConfigPayload(e){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&"number"==typeof this.options.requestTimeout){let e=new AbortController;i=N(()=>{e.abort()},this.options.requestTimeout),r.signal=e.signal}try{return await this.fetch(t,r)}catch(e){this._events.emit("error",e);return}finally{i&&clearTimeout(i)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let r={},i={};for(let[s,a]of Object.entries(e))if($(a,"Object")&&t&&s in t){let e={};for(let[t,r]of Object.entries(a))e[String(t)]=String(r);i[String(s)]=e}else r[String(s)]=String(a);return{personProperties:r,groupProperties:i}}async getFeatureFlagsForEvent(e,t,r,i){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let s=i?.personProperties||{},a=i?.groupProperties||{},n=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let i={};for(let[e,r]of Object.entries(t||{}))i[e]=String(r);return await this.getAllFlags(e,{groups:i,personProperties:s,groupProperties:a,disableGeoip:r,onlyEvaluateLocally:!0,flagKeys:n})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let i={};for(let[e,r]of Object.entries(t||{}))i[e]=String(r);return await this.getAllFlags(e,{groups:i,personProperties:s,groupProperties:a,disableGeoip:r,onlyEvaluateLocally:!0,flagKeys:n})}return(await super.getFeatureFlagsStateless(e,t,s,a,r)).flags}addLocalPersonAndGroupProperties(e,t,r,i){let s={...r||{}},a={};if(t)for(let e of Object.keys(t))a[e]={$group_key:t[e],...i?.[e]||{}};return{allPersonProperties:s,allGroupProperties:a}}personPropertiesForLocalEvaluation(e,t){return{distinct_id:e,...t||{}}}createFeatureFlagEvaluationContext(e,t,r,i){return{distinctId:e,groups:t||{},personProperties:r||{},groupProperties:i||{},evaluationCache:{}}}captureException(e,t,r,i,s){if(!tA.isPreviouslyCapturedError(e)){let a=Error("PostHog syntheticException");this.addPendingPromise(tA.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:a},t,r).then(e=>this._capturePreparedEvent({...e,uuid:i,flags:s},!1)))}}async captureExceptionImmediate(e,t,r,i){if(!tA.isPreviouslyCapturedError(e)){let s=Error("PostHog syntheticException");return this.addPendingPromise(tA.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:s},t,r).then(e=>this.captureImmediate({...e,flags:i})))}}async prepareEventMessage(e){return this._prepareEventMessage(e)}async _prepareEventMessage(e,t={}){let{distinctId:r,event:i,properties:s,groups:a,flags:n,sendFeatureFlags:o,timestamp:l,disableGeoip:u,uuid:c}=e,h=this.context?.get(),d=t.includeContextProperties??!0,g=r||h?.distinctId,p=d?{...this.props,...h?.properties||{},...s||{}}:{...s||{}};g||(g=Z(),p.$process_person_profile=!1),d&&h?.sessionId&&!p.$session_id&&(p.$session_id=h.sessionId);let f=this._runBeforeSend({distinctId:g,event:i,properties:p,groups:a,flags:n,sendFeatureFlags:o,timestamp:l,disableGeoip:u,uuid:c});if(!f)return Promise.reject(null);let y=await Promise.resolve().then(async()=>{if(n)return o&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),n._getEventProperties();if(o){tH("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead — it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");var e=await this.getFeatureFlagsForEvent(f.distinctId,a,u,"object"==typeof o?o:void 0);if(!e)return{};let t={};for(let[r,i]of Object.entries(e))t[`$feature/${r}`]=i;let r=Object.keys(e).filter(t=>!1!==e[t]).sort();return r.length>0&&(t.$active_feature_flags=r),t}return{}}).catch(()=>({})).then(e=>{let t=f.groups||a;return{...e,...f.properties||{},...void 0!==t&&Object.keys(t).length>0?{$groups:t}:{}}});return"$pageview"===f.event&&this.options.__preview_capture_bot_pageviews&&"string"==typeof y.$raw_user_agent&&tc(y.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",y.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:y,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let r=Array.isArray(t)?t:[t],i=e;for(let t of r){if(!(i=t(i)))return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!i.properties||0===Object.keys(i.properties).length){let e=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(e)}}return i}}var te=e7,tz=e.i(78500);class tG{constructor(){this.storage=new tz.AsyncLocalStorage}get(){return this.storage.getStore()}run(e,t,r){return this.storage.run(this.resolve(e,r),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let r=this.get()||{};return{distinctId:e.distinctId??r.distinctId,sessionId:e.sessionId??r.sessionId,properties:{...r.properties||{},...e.properties||{}}}}}let tK=/[\x00-\x1f\x7f-\x9f]/g;function tV(e,t,r){null!=r&&""!==r&&(e[t]=r)}function tQ(e){return Array.isArray(e)?e[0]:e}function tJ(e){if(Array.isArray(e)){for(let t of e){let e=tJ(t);if(void 0!==e)return e}return}if("string"!=typeof e)return;let t=e.replace(tK,"").trim();if(t)return t.length>1e3?t.slice(0,1e3):t}function tY(e,t){var r,i;let s,{sessionId:a,distinctId:n}=function(e){if(!e)return{};let t=tJ(e["x-posthog-session-id"]),r=tJ(e["x-posthog-distinct-id"]);return{...void 0!==t?{sessionId:t}:{},...void 0!==r?{distinctId:r}:{}}}(t.headers),o={},l=!0===e.options.disable_capture_url_hashes;return tV(o,"$current_url",(r=t.originalUrl||t.url,l?j(r):r)),tV(o,"$request_method",t.method),tV(o,"$request_path",(i=t.path,s=function(e){if(!e)return e;let t=e.indexOf("?"),r=e.indexOf("#");return -1===t||-1!==r&&r<t?e:`${e.slice(0,t)}${-1===r?"":e.slice(r)}`}(i),l?j(s):s)),tV(o,"$user_agent",tQ(t.headers["user-agent"])),tV(o,"$ip",function(e){let t=tQ(e.headers["x-forwarded-for"]);if(t){let e=t.split(",")[0].trim();if(e)return e}return e.socket?.remoteAddress}(t)),{...void 0!==a?{sessionId:a}:{},...void 0!==n?{distinctId:n}:{},properties:o}}function tX(e,t){var r;t.use((r=e,(e,t,i)=>{r.withContext(tY(r,e),()=>i())}))}function tZ(e,t){var r;t.use((r=e,(e,t,i,s)=>{if(tA.isPreviouslyCapturedError(e))return void s(e);let a=tY(r,t),n=Error("Synthetic exception"),o={...void 0!==a.sessionId?{$session_id:a.sessionId}:{},...a.properties||{},$response_status_code:i.statusCode};r.addPendingPromise(tA.buildEventMessage(r.getErrorPropertiesBuilder(),e,{mechanism:{type:"middleware",handled:!1},syntheticException:n},a.distinctId,o).then(e=>r._capturePreparedEvent(e,!1))),s(e)}))}e.s(["setupExpressErrorHandler",0,tZ,"setupExpressRequestContext",0,tX],93546),e.s([],92998);class t0 extends tW{getLibraryId(){return"posthog-node"}initializeContext(){return new tG}createErrorPropertiesBuilder(){let e;return new te.ErrorPropertiesBuilder([new te.EventCoercer,new te.ErrorCoercer,new te.ObjectCoercer,new te.StringCoercer,new te.PrimitiveCoercer],te.createStackParser("node:javascript",te.nodeStackLineParser),[(e=function(e=process.argv[1]?(0,o.dirname)(process.argv[1]):process.cwd(),t="\\"===o.sep){let r=t?l(e):e;return e=>{if(!e)return;let i=t?l(e):e,{dir:s,base:a,ext:n}=o.posix.parse(i);(".js"===n||".mjs"===n||".cjs"===n)&&(a=a.slice(0,-1*n.length));let u=decodeURIComponent(a);s||(s=".");let c=s.lastIndexOf("/node_modules");if(c>-1)return`${s.slice(c+14).replace(/\//g,".")}:${u}`;if(s.startsWith(r)){let e=s.slice(r.length+1).replace(/\//g,".");return e?`${e}:${u}`:u}return u}}(),async t=>{for(let r of t)r.module=e(r.filename);return t}),ta,function(e=process.cwd()){let t="\\"===o.sep,r=e=>t?e.replace(/\\/g,"/"):e,i=r(e);return async e=>{for(let t of e)!(!t.filename||t.filename.startsWith("node:")||t.filename.startsWith("data:"))&&(0,o.isAbsolute)(t.filename)&&(t.filename=r((0,o.relative)(i,r(t.filename))));return e}}()])}}e.s(["PostHog",0,t0],47839),e.i(47839),e.i(92998);let t1="posthog-node";function t4(e,{organization:t,projectId:r,prefix:i,severityAllowList:s=["error"],sendExceptionsToPostHog:a=!0}={}){return n=>{if(!("*"===s||s.includes(n.level)))return n;n.tags||(n.tags={});let o=n.tags[t3.POSTHOG_ID_TAG];if(void 0===o)return n;let l=e.options.host??"https://us.i.posthog.com",u=new URL(`/project/${e.apiKey}/person/${o}`,l).toString();n.tags["PostHog Person URL"]=u;let c=n.exception?.values||[],h=c.map(e=>({...e,stacktrace:e.stacktrace?{...e.stacktrace,type:"raw",frames:(e.stacktrace.frames||[]).map(e=>({...e,platform:"node:javascript"}))}:void 0})),d={$exception_message:c[0]?.value||n.message,$exception_type:c[0]?.type,$exception_level:n.level,$exception_list:h,$sentry_event_id:n.event_id,$sentry_exception:n.exception,$sentry_exception_message:c[0]?.value||n.message,$sentry_exception_type:c[0]?.type,$sentry_tags:n.tags};return t&&r&&(d.$sentry_url=(i||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+n.event_id),a&&e.capture({event:"$exception",distinctId:o,properties:d}),n}}function t2(e,t){let r=t4(e,t);return{name:t1,processEvent:e=>r(e)}}class t3{static #e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(e,t,r,i,s){this.name=t1,this.name=t1,this.setupOnce=function(a,n){a(t4(e,{organization:t,projectId:n()?.getClient()?.getDsn()?.projectId,prefix:r,severityAllowList:i,sendExceptionsToPostHog:s??!0}))}}}e.s(["PostHogSentryIntegration",0,t3,"createEventProcessor",0,t4,"sentryIntegration",0,t2],91573),e.i(91573),e.i(93546),e.i(58325),e.s(["FeatureFlagError",0,d,"FeatureFlagEvaluations",0,td,"PostHogSentryIntegration",0,t3,"cookieStateToProperties",0,ea,"cookieStoreFromHeader",0,et,"createEventProcessor",0,t4,"getPostHogCookieName",0,er,"parsePostHogCookie",0,en,"readPostHogCookie",0,es,"sentryIntegration",0,t2,"serializePostHogCookie",0,ei,"setupExpressErrorHandler",0,tZ,"setupExpressRequestContext",0,tX,"uuidv7",0,Z],57564),e.i(57564),e.s(["FeatureFlagError",0,d,"FeatureFlagEvaluations",0,td,"PostHog",0,t0,"PostHogSentryIntegration",0,t3,"cookieStateToProperties",0,ea,"cookieStoreFromHeader",0,et,"createEventProcessor",0,t4,"getPostHogCookieName",0,er,"parsePostHogCookie",0,en,"readPostHogCookie",0,es,"sentryIntegration",0,t2,"serializePostHogCookie",0,ei,"setupExpressErrorHandler",0,tZ,"setupExpressRequestContext",0,tX,"uuidv7",0,Z],28864)}];
1
+ module.exports=[28864,e=>{"use strict";let t,i,r,s,a;var n,o=e.i(14747);function l(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}let u=e=>void 0===e?void 0:e.variant??e.enabled,c=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}},h=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],d=(e,t=[])=>{let i={},r=t=>{void 0!==e[t]&&(i[t]=e[t])};return h.forEach(r),t.forEach(r),i};var g=((n={}).AnonymousId="anonymous_id",n.DistinctId="distinct_id",n.Props="props",n.EnablePersonProcessing="enable_person_processing",n.PersonMode="person_mode",n.FeatureFlagDetails="feature_flag_details",n.FeatureFlags="feature_flags",n.FeatureFlagPayloads="feature_flag_payloads",n.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",n.BootstrapFeatureFlags="bootstrap_feature_flags",n.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",n.OverrideFeatureFlags="override_feature_flags",n.Queue="queue",n.AiQueue="ai_queue",n.LogsQueue="logs_queue",n.OptedOut="opted_out",n.SessionId="session_id",n.SessionStartTimestamp="session_start_timestamp",n.SessionLastTimestamp="session_timestamp",n.PersonProperties="person_properties",n.GroupProperties="group_properties",n.InstalledAppBuild="installed_app_build",n.InstalledAppVersion="installed_app_version",n.SessionReplay="session_replay",n.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",n.SurveyLastSeenDate="survey_last_seen_date",n.SurveysSeen="surveys_seen",n.Surveys="surveys",n.RemoteConfig="remote_config",n.FlagsEndpointWasHit="flags_endpoint_was_hit",n.DeviceId="device_id",n);let p={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",TIMEOUT:"timeout",CONNECTION_ERROR:"connection_error",UNKNOWN_ERROR:"unknown_error",apiError:e=>`api_error_${e}`},f=e=>{let t=Error(`Native gzip produced invalid output: ${e}`);throw t.name="NativeGzipValidationError",t},m=async(e,i)=>{e.size<18&&f("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());r.length>=2&&31===r[0]&&139===r[1]&&8===r[2]||f("invalid-header");let s=new DataView(await e.slice(e.size-8).arrayBuffer());s.getUint32(0,!0)!==(e=>{let i=(()=>{if(t)return t;t=[];for(let e=0;e<256;e++){let i=e;for(let e=0;e<8;e++)i=1&i?0xedb88320^i>>>1:i>>>1;t[e]=i>>>0}return t})(),r=0xffffffff;for(let t=0;t<e.length;t++)r=i[(r^e[t])&255]^r>>>8;return(0xffffffff^r)>>>0})(i)&&f("invalid-crc");let a=i.length>>>0;s.getUint32(4,!0)!==a&&f("invalid-size")};async function y(e,t=!0,i){try{let t=new TextEncoder().encode(e),i=new globalThis.CompressionStream("gzip"),r=i.writable.getWriter(),s=r.write(t).then(()=>r.close()).catch(async e=>{try{await r.abort(e)}catch{}throw e}),a=new Response(i.readable).blob(),[n]=await Promise.all([a,s]);return await m(n,t),n}catch(e){if(i?.rethrow)throw e;return t&&console.error("Failed to gzip compress data",e),null}}function _(e){let t=[];return JSON.stringify(e,function(e,i){if("bigint"==typeof i)return i.toString();if("function"!=typeof i&&"symbol"!=typeof i){if(i instanceof Error)return{name:i.name,message:i.message,stack:i.stack};if(i&&"object"==typeof i){for(;t.length>0&&t[t.length-1]!==this;)t.pop();if(t.includes(i))return"[Circular]";t.push(i)}return i}})??"null"}let v=Array.isArray,b=Object.prototype;b.hasOwnProperty;let w=b.toString,E=v||function(e){return"[object Array]"===w.call(e)},F=e=>e===Object(e)&&!E(e),P=e=>void 0===e,x=e=>"[object String]"==w.call(e),S=e=>null===e,$=e=>"[object Number]"==w.call(e)&&e==e;function C(e){return null===e||"object"!=typeof e}function I(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function k(e){return"u">typeof Event&&function(e,t){try{return e instanceof t}catch{return!1}}(e,Event)}let A="Android",O="BlackBerry",M="Nintendo",R="PlayStation",T="Xbox",L="Windows",D="(\\d+(\\.\\d+)?)";RegExp("Version/"+D),RegExp(T,"i"),RegExp(R+" \\w+","i"),RegExp(M+" \\w+","i"),RegExp(O+"|PlayBook|BB10","i");RegExp("rv:"+D),RegExp("Edge?\\/"+D),RegExp("(Chrome|CrMo)\\/"+D),RegExp("CriOS\\/"+D),RegExp("(UCBrowser|UCWEB)\\/"+D),RegExp("(Opera|OPR)\\/"+D),RegExp("Firefox\\/"+D),RegExp("FxiOS\\/"+D),RegExp("Konqueror[:/]?"+D,"i"),RegExp(O+" "+D),RegExp("android\\s"+D,"i"),RegExp("SamsungBrowser\\/"+D),RegExp("OculusBrowser\\/"+D),RegExp("Vivaldi\\/"+D),RegExp("YaBrowser\\/"+D),RegExp("Whale\\/"+D),RegExp("Brave\\/"+D),RegExp("(DuckDuckGo|Ddg)\\/"+D),RegExp("PaleMoon\\/"+D),RegExp("Waterfox\\/"+D),RegExp("GSA\\/"+D),RegExp("(rv:|MSIE )"+D),RegExp("rv:"+D),RegExp(T+"; "+T+" (.*?)[);]","i"),RegExp(M,"i"),RegExp(R,"i"),RegExp(L,"i"),RegExp("("+A+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+A+")","i");let j=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function B(e,t){return"string"==typeof e&&j.test(e)?e:t()}function U(e){return e?e.split("#")[0]:e}async function N(e,t){let i=null;for(let r=0;r<t.retryCount+1;r++){r>0&&await new Promise(e=>setTimeout(e,t.retryDelay));try{return await e()}catch(e){if(i=e,!t.retryCheck(e))throw e}}throw i}function q(){return new Date().toISOString()}function H(e,t){let i=setTimeout(e,t);return i?.unref&&i?.unref(),i}let W=e=>e instanceof Error;function z(e){return Promise.all(e.map(e=>(e??Promise.resolve()).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))}function G(e){let t=[];for(let i in e){let r=e[i];S(r)||P(r)||t.push({key:i,value:function e(t){if("[object Boolean]"===w.call(t))return{boolValue:t};if("number"==typeof t)return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if("string"==typeof t)return{stringValue:t};if(E(t))return{arrayValue:{values:t.map(t=>e(t))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}(r)})}return t}let K=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function V(e){return String(e)+"000000"}function Q(e,t,i,r){let s="";return r&&(s=Object.keys(r).sort().map(e=>`${JSON.stringify(e)}:${JSON.stringify(r[e])}`).join(",")),`${e}\u0000${t}\u0000${i??""}\u0000${s}`}class J{constructor(e,t,i){this._instance=e,this._config=t,this._logger=i,this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._generation=0}count(e,t=1,i){this._capture({name:e,type:"count",value:t,unit:i?.unit,attributes:i?.attributes})}gauge(e,t,i){this._capture({name:e,type:"gauge",value:t,unit:i?.unit,attributes:i?.attributes})}histogram(e,t,i){this._capture({name:e,type:"histogram",value:t,unit:i?.unit,attributes:i?.attributes})}flush(){let e=this._flushPromise,t=(async()=>{e&&await e.catch(()=>{}),await this._doFlush()})().finally(()=>{this._flushPromise===t&&(this._flushPromise=null)});return this._flushPromise=t,t}drainWindow(){if(0===this._series.size)return null;let e=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(e)}reset(){this._generation++,this._clearFlushTimer(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(e){let t,i;if(this._instance.isDisabled||this._instance.optedOut)return;let r=this._runBeforeSend(e);if(null===r)return;if(!r.name||"string"!=typeof r.name)return void this._logger.warn("Dropping metric with empty name");if("number"!=typeof r.value||!Number.isFinite(r.value))return void this._logger.warn(`Dropping metric '${r.name}': value must be a finite number`);if("count"===r.type&&r.value<0)return void this._logger.warn(`Dropping count '${r.name}': counters are monotonic, value must be >= 0`);try{t=r.attributes?{...r.attributes}:void 0,i=Q(r.type,r.name,r.unit,t)}catch(e){this._logger.warn(`Dropping metric '${r.name}': attributes could not be serialized`,e);return}let s=this._series.get(i);if(!s){if(!this._admitNewSeries())return;s={name:r.name,type:r.type,unit:r.unit,attributes:t,windowStartMs:Date.now()},this._series.set(i,s)}let a=this._typeByName.get(r.name);void 0===a?this._typeByName.set(r.name,r.type):a===r.type||this._typeCollisionWarned.has(r.name)||(this._typeCollisionWarned.add(r.name),this._logger.warn(`Metric name '${r.name}' is already used as a ${a}; recording it as a ${r.type} too will blend both series in charts. Use a distinct name.`)),this._fold(s,r.value),this._armFlushTimer()}_admitNewSeries(){return this._series.size<this._config.maxSeriesPerFlush||(this._seriesCapWarned||(this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`)),!1)}_fold(e,t){switch(e.type){case"count":e.total=(e.total??0)+t;break;case"gauge":e.last=t;break;case"histogram":{e.hist||(e.hist={count:0,sum:0,min:t,max:t,bucketCounts:Array(K.length+1).fill(0)});let i=e.hist;i.count+=1,i.sum+=t,i.min=Math.min(i.min,t),i.max=Math.max(i.max,t),i.bucketCounts[function(e,t){for(let i=0;i<t.length;i++)if(e<=t[i])return i;return t.length}(t,K)]+=1}}}_runBeforeSend(e){let t=this._config.beforeSend;if(!t)return e;let i=E(t)?t:[t],r=e;for(let e of i)try{let t=e(r);if(!t)return this._logger.info("Metric was rejected in beforeSend function"),null;r=t}catch(e){return this._logger.error("Error in beforeSend function for metric:",e),null}return r}_armFlushTimer(){this._flushTimer||(this._flushTimer=H(()=>{this._flushTimer=void 0,this.flush().catch(e=>{this._logger.error("Metrics flush failed:",e)})},this._config.flushIntervalMs))}_clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}async _doFlush(){if(0===this._series.size)return;let e=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let t=this._generation,i=await this._instance._sendMetricsBatch(this._buildPayload(e));if(t===this._generation)switch(i.kind){case"ok":return;case"retry-later":this._mergeWindowBack(e),this._armFlushTimer();return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",i.error);return}}_buildPayload(e){var t,i,r,s,a,n,o;return s=this._buildMetrics(e),t=this._config,i=this._instance.getLibraryId(),r=this._instance.getLibraryVersion(),a={...t.resourceAttributes,"service.name":t.serviceName||"unknown_service",...t.environment&&{"deployment.environment":t.environment},...t.serviceVersion&&{"service.version":t.serviceVersion},"telemetry.sdk.name":i,"telemetry.sdk.version":r},n=this._instance.getLibraryId(),o=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:G(a)},scopeMetrics:[{scope:{name:n,version:o},metrics:s}]}]}}_buildMetrics(e){let t=V(Date.now()),i=new Map;for(let r of e.values()){let e=Q(r.type,r.name,r.unit,void 0),s=i.get(e);s||(s={name:r.name,...r.unit&&{unit:r.unit}},"count"===r.type?s.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:"gauge"===r.type?s.gauge={dataPoints:[]}:s.histogram={aggregationTemporality:1,dataPoints:[]},i.set(e,s));let a=G(r.attributes??{}),n=V(r.windowStartMs);if("count"===r.type){let e={attributes:a,startTimeUnixNano:n,timeUnixNano:t,asDouble:r.total??0};s.sum.dataPoints.push(e)}else if("gauge"===r.type){let e={attributes:a,timeUnixNano:t,asDouble:r.last??0};s.gauge.dataPoints.push(e)}else if(r.hist){let e={attributes:a,startTimeUnixNano:n,timeUnixNano:t,count:r.hist.count,sum:r.hist.sum,min:r.hist.min,max:r.hist.max,bucketCounts:r.hist.bucketCounts,explicitBounds:K};s.histogram.dataPoints.push(e)}}return Array.from(i.values())}_mergeWindowBack(e){for(let[t,i]of e){let e=this._series.get(t);if(!e){this._admitNewSeries()&&this._series.set(t,i);continue}switch(e.windowStartMs=Math.min(e.windowStartMs,i.windowStartMs),e.type){case"count":e.total=(e.total??0)+(i.total??0);break;case"gauge":break;case"histogram":if(i.hist)if(e.hist){e.hist.count+=i.hist.count,e.hist.sum+=i.hist.sum,e.hist.min=Math.min(e.hist.min,i.hist.min),e.hist.max=Math.max(e.hist.max,i.hist.max);for(let t=0;t<e.hist.bucketCounts.length;t++)e.hist.bucketCounts[t]+=i.hist.bucketCounts[t]}else e.hist=i.hist}}}}let Y="0123456789abcdef";class X{constructor(e){this.bytes=e}static ofInner(e){if(16===e.length)return new X(e);throw TypeError("not 128-bit length")}static fromFieldsV7(e,t,i,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(i)||!Number.isInteger(r)||e<0||t<0||i<0||r<0||e>0xffffffffffff||t>4095||i>0x3fffffff||r>0xffffffff)throw RangeError("invalid field value");let s=new Uint8Array(16);return s[0]=e/0x10000000000,s[1]=e/0x100000000,s[2]=e/0x1000000,s[3]=e/65536,s[4]=e/256,s[5]=e,s[6]=112|t>>>8,s[7]=t,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new X(s)}static parse(e){let t;switch(e.length){case 32:t=/^[0-9a-f]{32}$/i.exec(e)?.[0];break;case 36:t=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;case 38:t=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(e)?.slice(1,6).join("");break;case 45:t=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("")}if(t){let e=new Uint8Array(16);for(let i=0;i<16;i+=4){let r=parseInt(t.substring(2*i,2*i+8),16);e[i+0]=r>>>24,e[i+1]=r>>>16,e[i+2]=r>>>8,e[i+3]=r}return new X(e)}throw SyntaxError("could not parse UUID string")}toString(){let e="";for(let t=0;t<this.bytes.length;t++)e+=Y.charAt(this.bytes[t]>>>4),e+=Y.charAt(15&this.bytes[t]),(3===t||5===t||7===t||9===t)&&(e+="-");return e}toHex(){let e="";for(let t=0;t<this.bytes.length;t++)e+=Y.charAt(this.bytes[t]>>>4),e+=Y.charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error("unreachable");if(e<=7)return this.bytes.every(e=>0===e)?"NIL":"VAR_0";if(e<=11)return"VAR_10";if(e<=13)return"VAR_110";if(e<=15)return this.bytes.every(e=>255===e)?"MAX":"VAR_RESERVED";throw Error("unreachable")}getVersion(){return"VAR_10"===this.getVariant()?this.bytes[6]>>>4:void 0}clone(){return new X(this.bytes.slice(0))}equals(e){return 0===this.compareTo(e)}compareTo(e){for(let t=0;t<16;t++){let i=this.bytes[t]-e.bytes[t];if(0!==i)return Math.sign(i)}return 0}}class Z{constructor(e){this.timestamp=0,this.counter=0,this.random=e??ee()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let i=this.generateOrAbortCore(e,t);return void 0===i&&(this.timestamp=0,i=this.generateOrAbortCore(e,t)),i}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>0xffffffffffff)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>0xffffffffffff)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;this.counter++,this.counter>0x3ffffffffff&&(this.timestamp++,this.resetCounter())}return X.fromFieldsV7(this.timestamp,Math.trunc(this.counter/0x40000000),this.counter&0x40000000-1,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,X.ofInner(e)}}let ee=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),et=()=>ei().toString(),ei=()=>(i||(i=new Z)).generate();function er(e){let t={};if(e)for(let i of e.split(";")){let[e,...r]=i.trim().split("=");if(e){let i=r.join("=").trim();try{t[e.trim()]=decodeURIComponent(i)}catch{t[e.trim()]=i}}}return{get:e=>e in t?{value:t[e]}:void 0}}function es(e){let t=e.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ");return`ph_${t}_posthog`}function ea(e){let t=Date.now();return JSON.stringify({distinct_id:e,$device_id:e,$user_state:"anonymous",$sesid:[t,et(),t]})}function en(e,t){let i=es(t),r=e.get(i);return r?el(r.value):null}function eo(e){if(!e)return;let t={};return e.sessionId&&(t.$session_id=e.sessionId),e.deviceId&&(t.$device_id=e.deviceId),Object.keys(t).length>0?t:void 0}function el(e){if(!e)return null;try{let t=JSON.parse(e);if(!t||"object"!=typeof t||!t.distinct_id)return null;let i=E(t.$sesid)?t.$sesid[1]:void 0;return{distinctId:String(t.distinct_id),isIdentified:"identified"===t.$user_state,sessionId:"string"==typeof i?i:void 0,deviceId:"string"==typeof t.$device_id?t.$device_id:void 0}}catch{return null}}class eu{constructor(){this.events={},this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),()=>{this.events[e]=this.events[e].filter(e=>e!==t)}}emit(e,t){for(let i of this.events[e]||[])i(t);for(let i of this.events["*"]||[])i(e,t)}}class ec{add(e){let t=et(),i=++this.nextId;return this.promiseByIds[t]={id:i,promise:e},e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds).map(e=>e.promise),t=e.length;for(;t>0;)await Promise.all(e),t=(e=Object.values(this.promiseByIds).map(e=>e.promise)).length}getPromises(e=[],t=this.nextId){let i=new Set(e);return Object.values(this.promiseByIds).filter(e=>e.id<=t&&!i.has(e.promise)).map(e=>e.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}}let eh=(e,t,i)=>{function r(s,...a){t(()=>{(0,i[s])(e,...a)})}return{debug:(...e)=>{r("debug",...e)},info:(...e)=>{r("log",...e)},warn:(...e)=>{r("warn",...e)},error:(...e)=>{r("error",...e)},critical:(...t)=>{i.error(e,...t)},createLogger:r=>eh(`${e} ${r}`,t,i)}};class ed{constructor(e,t,i=[]){this.coercers=e,this.stackParser=t,this.modifiers=i}buildFromUnknown(e,t={}){let i=t&&t.mechanism||{handled:!0,type:"generic"},r=this.buildCoercingContext(i,t,0).apply(e),s=this.buildParsingContext(t),a=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(a,i),$exception_level:"error"}}async modifyFrames(e){for(let t of e)t.stacktrace&&t.stacktrace.frames&&E(t.stacktrace.frames)&&(t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames));return e}coerceFallback(e){return{type:"Error",value:"Unknown error",stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let i,r;return null!=e.cause&&(i=this.parseStacktrace(e.cause,t)),""!=e.stack&&null!=e.stack&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap)),{...e,cause:i,stack:r}}applyChunkIds(e,t){return e.map(e=>(e.filename&&t&&(e.chunk_id=t[e.filename]),e))}applyCoercers(e,t){for(let i of this.coercers)if(i.match(e))return i.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let e of this.modifiers)t=await e(t);return t}convertToExceptionList(e,t){let i={type:e.type,value:e.value,mechanism:{type:t.type??"generic",handled:t.handled??!0,synthetic:e.synthetic??!1}};e.stack&&(i.stacktrace={type:"raw",frames:e.stack});let r=[i];return null!=e.cause&&r.push(...this.convertToExceptionList(e.cause,{...t,handled:!0})),r}buildParsingContext(e){return{chunkIdMap:function(e){let t=globalThis._posthogChunkIds;if(!t)return;let i=Object.keys(t);return a&&i.length===s?a:(s=i.length,a=i.reduce((i,s)=>{r||(r={});let a=r[s];if(a)i[a[0]]=a[1];else{let a=e(s);for(let e=a.length-1;e>=0;e--){let n=a[e],o=n?.filename,l=t[s];if(o&&l){i[o]=l,r[s]=[o,l];break}}}return i},{}))}(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,i=0){let r=(i,r)=>{if(r<=4){let s=this.buildCoercingContext(e,t,r);return this.applyCoercers(i,s)}};return{...t,syntheticException:0==i?t.syntheticException:void 0,mechanism:e,apply:e=>r(e,i),next:e=>r(e,i+1)}}}function eg(e,t,i,r,s){let a={platform:e,filename:t,function:"<anonymous>"===i?"?":i,in_app:!0};return P(r)||(a.lineno=r),P(s)||(a.colno=s),a}e.s(["ErrorPropertiesBuilder",0,ed],80446);let ep=(e,t)=>{let i=-1!==e.indexOf("safari-extension"),r=-1!==e.indexOf("safari-web-extension");return i||r?[-1!==e.indexOf("@")?e.split("@")[0]:"?",i?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]},ef=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,em=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ey=/\((\S*)(?::(\d+))(?::(\d+))\)/,e_=(e,t)=>{let i=ef.exec(e);if(i){let[,e,r,s]=i;return eg(t,e,"?",+r,+s)}let r=em.exec(e);if(r){if(r[2]&&0===r[2].indexOf("eval")){let e=ey.exec(r[2]);e&&(r[2]=e[1],r[3]=e[2],r[4]=e[3])}let[e,i]=ep(r[1]||"?",r[2]);return eg(t,i,e,r[3]?+r[3]:void 0,r[4]?+r[4]:void 0)}},ev=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,eb=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ew=(e,t)=>{let i=ev.exec(e);if(i){if(i[3]&&i[3].indexOf(" > eval")>-1){let e=eb.exec(i[3]);e&&(i[1]=i[1]||"eval",i[3]=e[1],i[4]=e[2],i[5]="")}let e=i[3],r=i[1]||"?";return[r,e]=ep(r,e),eg(t,e,r,i[4]?+i[4]:void 0,i[5]?+i[5]:void 0)}},eE=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,eF=(e,t)=>{let i=eE.exec(e);return i?eg(t,i[2],i[1]||"?",+i[3],i[4]?+i[4]:void 0):void 0},eP=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,ex=(e,t)=>{let i=eP.exec(e);return i?eg(t,i[2],i[3]||"?",+i[1]):void 0},eS=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,e$=(e,t)=>{let i=eS.exec(e);return i?eg(t,i[5],i[3]||i[4]||"?",+i[1],+i[2]):void 0},eC=/^\s*[-]{4,}$/,eI=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,ek=/^Promise\.(?:all|any)$/,eA=/^index \d+$/,eO=(e,t)=>{let i=e.match(eI);if(i){let e,r,s,a,n;if(i[1]){let t=(s=i[1]).lastIndexOf(".");if("."===s[t-1]&&t--,t>0){e=s.slice(0,t),r=s.slice(t+1);let i=e.indexOf(".Module");i>0&&(s=s.slice(i+1),e=e.slice(0,i))}a=void 0}r&&(a=e,n=r),"<anonymous>"===r&&(n=void 0,s=void 0),void 0===s&&(n=n||"?",s=a?`${a}.${n}`:n);let o=i[2]?.startsWith("file://")?i[2].slice(7):i[2],l="native"===i[5];return o?.match(/\/[A-Z]:/)&&(o=o.slice(1)),o||!i[5]||l||(o=i[5]),ek.test(s)&&eA.test(o||"")&&(o="node:internal/promise"),{filename:o?decodeURI(o):void 0,module:void 0,function:s,lineno:eM(i[3]),colno:eM(i[4]),in_app:function(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&void 0!==e&&!e.includes("node_modules/")}(o||"",l),platform:t}}if(e.match(eC))return{filename:e,platform:t}};function eM(e){return parseInt(e||"",10)||void 0}let eR=/\(error: (.*)\)/;function eT(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,50).map(e=>{var i;return{...e,filename:e.filename||((i=t)[i.length-1]||{}).filename,function:e.function||"?"}})}function eL(){return eD("web:javascript",e_,ew)}function eD(e,...t){return(i,r=0)=>{let s=[],a=i.split("\n");for(let i=r;i<a.length;i++){let r=a[i];if(r.length>1024)continue;let n=eR.test(r)?r.replace(eR,"$1"):r;if(!n.match(/\S*Error: /)){for(let i of t){let t=i(n,e);if(t){s.push(t);break}}if(s.length>=50)break}}return eT(s)}}e.s(["createDefaultStackParser",0,eL,"createStackParser",0,eD,"reverseAndStripFrames",0,eT],34246);class ej{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){let i=x(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){let t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?`${t}: ${e.message}`:t}isDOMException(e){return I(e,"DOMException")}isDOMError(e){return I(e,"DOMError")}}e.s(["DOMExceptionCoercer",0,ej],29569);class eB{match(e){return e instanceof Error}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let i=e.message;return i.error&&"string"==typeof i.error.message?String(i.error.message):String(i)}getStack(e){return e.stacktrace||e.stack||void 0}}e.s(["ErrorCoercer",0,eB],11475);class eU{match(e){return I(e,"ErrorEvent")&&void 0!=e.error}coerce(e,t){let i=t.apply(e.error);return i||{type:"ErrorEvent",value:e.message,stack:t.syntheticException?.stack,synthetic:!0}}}e.s(["ErrorEventCoercer",0,eU],43179);let eN=["fatal","error","warning","log","info","debug"];function eq(e,t=40){let i=Object.keys(e);if(i.sort(),!i.length)return"[object has no keys]";for(let e=i.length;e>0;e--){let r=i.slice(0,e).join(", ");if(!(r.length>t)){if(e===i.length)return r;return r.length<=t?r:`${r.slice(0,t)}...`}}return""}class eH{match(e){return"object"==typeof e&&null!==e}coerce(e,t){let i=this.getErrorPropertyFromObject(e);return i?t.apply(i):{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return k(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&"string"==typeof e.name){let t=`'${e.name}' captured as exception`;return"message"in e&&"string"==typeof e.message&&(t+=` with message: '${e.message}'`),t}if("message"in e&&"string"==typeof e.message)return e.message;let t=this.getObjectClassName(e),i=eq(e);return`${t&&"Object"!==t?`'${t}'`:"Object"} captured as exception with keys: ${i}`}isSeverityLevel(e){return x(e)&&!(x(e)&&0===e.trim().length)&&eN.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];if(W(i))return i}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(e){return}}}e.s(["ObjectCoercer",0,eH],6881);class eW{match(e){return k(e)}coerce(e,t){let i=e.constructor.name;return{type:i,value:`${i} captured as exception with keys: ${eq(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}e.s(["EventCoercer",0,eW],80322);class ez{match(e){return C(e)}coerce(e,t){return{type:"Error",value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}e.s(["PrimitiveCoercer",0,ez],80049);class eG{match(e){return I(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!k(e))return!1;try{let t=e.detail;return null!=t&&"object"==typeof t&&"reason"in t}catch{return!1}}coerce(e,t){let i=this.getUnhandledRejectionReason(e);return C(i)?{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(i)}`,stack:t.syntheticException?.stack,synthetic:!0}:t.apply(i)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&null!=e.detail&&"object"==typeof e.detail&&"reason"in e.detail)return e.detail.reason}catch{}return e}}e.s(["PromiseRejectionEventCoercer",0,eG],98689),e.s([],99573);let eK={MESSAGE:"$message",TIMESTAMP:"$timestamp"},eV=new Set([eK.MESSAGE,eK.TIMESTAMP]),eQ={enabled:!0,max_bytes:32768};function eJ(e){return e?{enabled:e.enabled??eQ.enabled,max_bytes:function(e,t){if(!$(e)||e===1/0||e===-1/0)return t;let i=Math.floor(e);return i<0?t:i}(e.max_bytes,eQ.max_bytes)}:{...eQ}}function eY(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((i,r)=>(eV.has(r)?t.push(r):i[r]=e[r],i),{}),droppedKeys:t}}class eX{constructor(e){this._entries=[],this._totalBytes=0,this._config=eJ(e)}setConfig(e){this._config=eJ(e),this._trimToMaxBytes()}add(e){let t=function(e){let t;try{t=_(e)}catch{return}try{let e=JSON.parse(t);if(!F(e))return;let i=e[eK.MESSAGE],r=e[eK.TIMESTAMP];if(!x(i)||0===i.trim().length||!x(r)&&!$(r))return;return{step:e,json:t}}catch{return}}(e);if(!t)return;let i=eZ(t.json);i>this._config.max_bytes||(this._entries.push({step:t.step,bytes:i}),this._totalBytes+=i,this._trimToMaxBytes())}getAttachable(){return this._entries.map(e=>e.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let e=this._entries.shift();e&&(this._totalBytes-=e.bytes)}}}function eZ(e){if("u">typeof TextEncoder)return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),i=0;for(let e=0;e<t.length;e++)"%"===t[e]?(i+=1,e+=2):i+=1;return i}e.s(["DEFAULT_EXCEPTION_STEPS_CONFIG",0,eQ,"EXCEPTION_STEP_INTERNAL_FIELDS",0,eK,"ExceptionStepsBuffer",0,eX,"getUtf8ByteLength",0,eZ,"resolveExceptionStepsConfig",0,eJ,"stripReservedExceptionStepFields",0,eY],52001),e.s([],47114);let e0=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class e1{match(e){return"string"==typeof e}coerce(e,t){let[i,r]=this.getInfos(e);return{type:i??"Error",value:r??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t="Error",i=e,r=e.match(e0);return r&&(t=r[1],i=r[2]),[t,i]}}e.s(["StringCoercer",0,e1],45098);class e4 extends Error{constructor(e,t){super("HTTP error while fetching PostHog: status="+e.status+", reqByteLength="+t),this.response=e,this.reqByteLength=t,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}}class e2 extends Error{constructor(e){super("Network error while fetching PostHog",e instanceof Error?{cause:e}:{}),this.error=e,this.name="PostHogFetchNetworkError"}}async function e3(e){if(e instanceof e4){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function e5(e){return e instanceof e2}function e8(e){if(e instanceof e4)return 502===e.status||504===e.status;if(!(e instanceof e2))return!1;let t=e.error;return"ECONNREFUSED"!==(t?.code??t?.cause?.code)}function e9(e){return"object"==typeof e&&e instanceof e4&&413===e.status}function e6(e){return e instanceof e4?408===e.status||429===e.status||e.status>=500:e5(e)}function e7(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let te="default";class tt{getErrorPropertiesBuilder(){return this._errorPropertiesBuilder||(this._errorPropertiesBuilder=this.createErrorPropertiesBuilder()),this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new ed([new eB,new eH,new e1,new ez],eL())}constructor(e,t={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new ec,this._events=new eu,this._isInitialized=!1;const i="string"==typeof e?e.trim():"",r="string"==typeof t.host?t.host.trim():"",s=!i;this._logger=function(e,t=e=>e()){return eh(e,t,function(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}())}("[PostHog]",this.logMsgIfDebug.bind(this)),s&&this._logger.error("You must pass your PostHog project's api key. The client will be disabled."),this.apiKey=i,this.host=function(e){return e?.replace(/\/+$/,"")}(r||"https://us.i.posthog.com"),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1e3),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3e3,retryCheck:e6},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3e3,this.featureFlagsRequestMaxRetries=t.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=t.disableGeoip??!0,this.disabled=(t.disabled??!1)||s,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!("CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&"function"==typeof Response.prototype.blob)||(t?.disableCompression??!1)}logMsgIfDebug(e){this.isDebug&&e()}wrap(e){return this.disabled?void this._logger.warn("The client is disabled"):this._isInitialized?e():void this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(g.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(g.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(g.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let e=this.on("*",(e,t)=>this._logger.info(e,t));this.removeDebugCallback=()=>{e(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){let t=e.properties||{},i={...t,...this.getCommonEventProperties()};var r=i;for(let e of Object.keys(t))(e.startsWith("$feature/")||"$active_feature_flags"===e)&&(r[e]=t[e]);return"$feature_flag_called"===e.event&&!1===i.$feature_flag_has_experiment&&this.isMinimalFlagCalledEventsEnabled()&&(i=d(i)),{distinct_id:e.distinct_id,event:e.event,properties:i}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,i){this.wrap(()=>{let r={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};this.enqueue("identify",r,i)})}async identifyStatelessImmediate(e,t,i){let r={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};await this.sendImmediate("identify",r,i)}captureStateless(e,t,i,r){this.wrap(()=>{let s=this.buildPayload({distinct_id:e,event:t,properties:i});this.enqueue("capture",s,r)})}async captureStatelessImmediate(e,t,i,r){let s=this.buildPayload({distinct_id:e,event:t,properties:i});await this.sendImmediate("capture",s,r)}aliasStateless(e,t,i,r){this.wrap(()=>{let s=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...i||{},distinct_id:t,alias:e}});this.enqueue("alias",s,r)})}async aliasStatelessImmediate(e,t,i,r){let s=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...i||{},distinct_id:t,alias:e}});await this.sendImmediate("alias",s,r)}groupIdentifyStateless(e,t,i,r,s,a){this.wrap(()=>{let n=this.buildPayload({distinct_id:s||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{},...a||{}}});this.enqueue("capture",n,r)})}async groupIdentifyStatelessImmediate(e,t,i,r,s,a){let n=this.buildPayload({distinct_id:s||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{},...a||{}}});await this.sendImmediate("capture",n,r)}async getRemoteConfig(){await this._initPromise;let e=this.host;"https://us.i.posthog.com"===e?e="https://us-assets.i.posthog.com":"https://eu.i.posthog.com"===e&&(e="https://eu-assets.i.posthog.com");let t=`${e}/array/${this.apiKey}/config`,i={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(t,i,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(e=>e.json()).catch(e=>{this._logger.error("Remote config could not be loaded",e),this._events.emit("error",e)})}async getFlags(e,t={},i={},r={},s={},a=!1){await this._initPromise;let n=`${this.host}/flags/?v=2${a?"&config=true":""}`,o={token:this.apiKey,distinct_id:e,groups:t,person_properties:i,group_properties:r,...s};i.$device_id&&(o.$device_id=i.$device_id),this.evaluationContexts&&this.evaluationContexts.length>0&&(o.evaluation_contexts=this.evaluationContexts);let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(o)};return this._logger.info("Flags URL",n),this.fetchWithRetry(n,l,{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:e8},this.featureFlagsRequestTimeoutMs).then(e=>e.json()).then(e=>({success:!0,response:(e=>{if("flags"in e){let t,i=Object.fromEntries(Object.entries(e.flags??{}).map(([e,t])=>[e,u(t)]).filter(([,e])=>void 0!==e)),r=Object.fromEntries(Object.keys(t=e.flags??{}).filter(e=>{let i=t[e];return i.enabled&&i.metadata&&void 0!==i.metadata.payload}).map(e=>{let i=t[e].metadata?.payload;return[e,i?c(i):void 0]}));return{...e,featureFlags:i,featureFlagPayloads:r}}{let t=e.featureFlags??{},i=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([e,t])=>[e,c(t)])),r=Object.fromEntries(Object.entries(t).map(([e,t])=>{var r,s;return[e,{key:e,enabled:"string"==typeof(r=t)||r,variant:"string"==typeof r?r:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:(s=i[e])?JSON.stringify(s):void 0,description:void 0}}]}));return{...e,featureFlags:t,featureFlagPayloads:i,flags:r}}})(e)})).catch(e=>(this._events.emit("error",e),{success:!1,error:this.categorizeRequestError(e)}))}categorizeRequestError(e){if(e instanceof e4)return{type:"api_error",statusCode:e.status};if(e instanceof e2){let t=e.error;return t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name)?{type:"timeout"}:{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(e,t,i={},r={},s={},a){await this._initPromise;let n=await this.getFeatureFlagDetailStateless(e,t,i,r,s,a);if(void 0===n)return{response:void 0,requestId:void 0};let o=u(n.response);return void 0===o&&(o=!1),{response:o,requestId:n.requestId}}async getFeatureFlagDetailStateless(e,t,i={},r={},s={},a){await this._initPromise;let n=await this.getFeatureFlagDetailsStateless(t,i,r,s,a,[e]);if(void 0!==n)return{response:n.flags[e],requestId:n.requestId,evaluatedAt:n.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,i={},r={},s={},a){await this._initPromise;let n=await this.getFeatureFlagPayloadsStateless(t,i,r,s,a,[e]);if(!n)return;let o=n[e];return void 0===o?null:o}async getFeatureFlagPayloadsStateless(e,t={},i={},r={},s,a){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,i,r,s,a)).payloads}async getFeatureFlagsStateless(e,t={},i={},r={},s,a){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,i,r,s,a)}async getFeatureFlagsAndPayloadsStateless(e,t={},i={},r={},s,a){await this._initPromise;let n=await this.getFeatureFlagDetailsStateless(e,t,i,r,s,a);return n?{flags:n.featureFlags,payloads:n.featureFlagPayloads,requestId:n.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(e,t={},i={},r={},s,a){await this._initPromise;let n={geoip_disable:s??this.disableGeoip};a&&(n.flag_keys_to_evaluate=a);let o=await this.getFlags(e,t,i,r,n);if(!o.success)return;let l=o.response;return(l.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"),l.quotaLimited?.includes("feature_flags"))?(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"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:l?.requestId,quotaLimited:l.quotaLimited}):l}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(!0===this.disableSurveys)return this._logger.info("Loading surveys is disabled."),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=await this.fetchWithRetry(e,t).then(e=>{if(200!==e.status||!e.json){let t=`Surveys API could not be loaded: ${e.status}`,i=Error(t);this._logger.error(i),this._events.emit("error",Error(t));return}return e.json()}).catch(e=>{this._logger.error("Surveys API could not be loaded",e),this._events.emit("error",e)}),r=i?.surveys;return r&&this._logger.info("Surveys fetched from API: ",JSON.stringify(r)),r??[]}get props(){return this._props||(this._props=this.getPersistedProperty(g.Props)),this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(g.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(g.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}getQueueRouteKey(e){return te}persistedQueueKeyForRoute(e){return g.Queue}getActiveQueueRoutes(){return[te]}getRouteQueue(e){return this.getPersistedProperty(this.persistedQueueKeyForRoute(e))||[]}enqueue(e,t,i){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let r=this.prepareMessage(t,i);if(null===(r=this.processBeforeEnqueue(r)))return;r=this.normalizeMessage(r);let s=this.persistedQueueKeyForRoute(this.getQueueRouteKey(r)),a=this.getPersistedProperty(s)||[];a.length>=this.maxQueueSize&&(a.shift(),this._logger.warn("Queue is full, the oldest event is dropped.")),a.push({message:r}),this.setPersistedProperty(s,a),this._events.emit(e,r),a.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=H(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(e,t,i){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let r=this.prepareMessage(t,i);if(null!==(r=this.processBeforeEnqueue(r))){r=this.normalizeMessage(r);try{await this.sendBatch([r],void 0,this.getQueueRouteKey(r))}catch(e){this._events.emit("error",e)}}}normalizeMessage(e){let{type:t,library:i,library_version:r,...s}=e,a=e7(s.properties)?s.properties:void 0;return void 0!==i&&a?.$lib===void 0&&(a={...a||{},$lib:i}),void 0!==r&&a?.$lib_version===void 0&&(a={...a||{},$lib_version:r}),a&&(s.properties=a),s.uuid=B(s.uuid,et),s}prepareMessage(e,t){let i={...e,timestamp:t?.timestamp?t?.timestamp:q(),uuid:B(t?.uuid,et)};return(t?.disableGeoip??this.disableGeoip)&&(e7(i.properties)||(i.properties={}),i.properties.$geoip_disable=!0),i.distinctId&&(i.distinct_id=i.distinctId,delete i.distinctId),i}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.pendingFlushPromise||this.flush().catch(async e=>{await e3(e)})}async waitForPendingPromises(e,t=[]){let i=t.filter(e=>!!e),r=0;for(;;){let t=this.promiseQueue.getPromises([...i,...this.flushPromises],e);if(0===t.length)return;r>0&&this._logger.debug(`flush() re-checking ${t.length} pending promise(s) before flushing`),await Promise.all(t.map(e=>e.catch(()=>{}))),r++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(e){if(this.disabled)return Promise.resolve();if(!e&&this.pendingFlushPromise)return this.pendingFlushPromise;let t=this.flushPromise,i=this.promiseQueue.maxId,r=Promise.resolve().then(()=>{if(e)return this.waitForPendingPromises(i,[t,r])}).then(()=>z([t])).then(()=>(this.pendingFlushPromise===r&&(this.pendingFlushPromise=null),this._flush()));return this.pendingFlushPromise=r,this.flushPromise=r,this.flushPromises.add(r),this.addPendingPromise(r),z([r]).then(()=>{this.flushPromises.delete(r),this.pendingFlushPromise===r&&(this.pendingFlushPromise=null),this.flushPromise===r&&(this.flushPromise=null)}),r}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};return e&&""!==e&&(t["User-Agent"]=e),t}async sendBatch(e,t,i=te){let r={api_key:this.apiKey,batch:e,sent_at:q()};this.historicalMigration&&(r.historical_migration=!0);let s=_(r),a=`${this.host}/batch/`,n=this.disableCompression?null:await y(s,this.isDebug),o={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...null!==n&&{"Content-Encoding":"gzip"}},body:n||s},l=await this.fetchWithRetry(a,o,t);await l.body?.cancel()?.catch(()=>{})}async _flush(){let e;this.clearFlushTimer(),await this._initPromise;let t=this.getActiveQueueRoutes();if(!t.some(e=>this.getRouteQueue(e).length>0))return;let i=[];for(let r of t)try{await this._flushRoute(r,i)}catch(t){void 0===e&&(e=t)}if(void 0!==e)throw e;this._events.emit("flush",i)}async _flushRoute(e,t){let i=this.persistedQueueKeyForRoute(e),r=this.getPersistedProperty(i)||[];if(!r.length)return;let s=r.length,a=0;for(;r.length>0&&a<s;){let s=r.slice(0,this.maxBatchSize),n=s.map(e=>void 0===e.message?e.message:this.normalizeMessage(e.message)),o=async()=>{let e=(this.getPersistedProperty(i)||[]).slice(s.length);this.setPersistedProperty(i,e),r=e,this._dequeuedMessagesCount+=s.length,await this.flushStorage()},l={retryCheck:e=>!e9(e)&&e6(e)};try{await this.sendBatch(n,l,e)}catch(e){if(e9(e)&&n.length>1){this.maxBatchSize=Math.max(1,Math.floor(n.length/2)),this._logger.warn(`Received 413 when sending batch of size ${n.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw e instanceof e2||await o(),this._events.emit("error",e),e}await o(),t.push(...n),a+=n.length}}async _sendLogsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),i=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,r=this.disableCompression?null:await y(t,this.isDebug),s={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...null!==r&&{"Content-Encoding":"gzip"}},body:r||t};try{return await this.fetchWithRetry(i,s,{retryCheck:e=>!e9(e)&&e6(e)}),{kind:"ok"}}catch(e){if(e9(e))return{kind:"too-large"};if(e instanceof e2)return{kind:"retry-later",error:e};return{kind:"fatal",error:e}}}async _sendMetricsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),i=`${this.host}/i/v1/metrics?token=${encodeURIComponent(this.apiKey)}`,r=this.disableCompression?null:await y(t,this.isDebug),s={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...null!==r&&{"Content-Encoding":"gzip"}},body:r||t};try{return await this.fetchWithRetry(i,s,{retryCheck:e=>!e9(e)&&e6(e)}),{kind:"ok"}}catch(e){if(e9(e))return{kind:"too-large"};if(e6(e))return{kind:"retry-later",error:e};return{kind:"fatal",error:e}}}async fetchWithRetry(e,t,i,r){let s=t.body?t.body:"",a=-1;try{a=s instanceof Blob?s.size:Buffer.byteLength(s,"utf8")}catch{a=s instanceof Blob?s.size:new TextEncoder().encode(s).length}return await N(async()=>{let i=new AbortController,s=H(()=>i.abort(),r??this.requestTimeout),n=null;try{n=await this.fetch(e,{signal:i.signal,...t})}catch(e){throw new e2(e)}finally{clearTimeout(s)}if("no-cors"!==t.mode&&(n.status<200||n.status>=400))throw new e4(n,a);return n},{...this._retryOptions,...i})}async _shutdown(e=3e4){let t;await this._initPromise;let i=!1;if(this.clearFlushTimer(),this.disabled)return;let r=async()=>{try{for(await this.promiseQueue.join();this.getActiveQueueRoutes().some(e=>this.getRouteQueue(e).length>0);){let e=this._dequeuedMessagesCount;if(await this.flush(),i)break;if(this._dequeuedMessagesCount===e){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(e){if(!("object"==typeof e&&(e instanceof e4||e5(e))))throw e;await e3(e)}};try{return await Promise.race([new Promise((r,s)=>{t=H(()=>{this._logger.error("Timed out while shutting down PostHog"),i=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},e)}),r()])}finally{clearTimeout(t)}}async shutdown(e=3e4){return 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"):this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}}e.i(47114),e.i(80446),e.i(34246),e.s(["chromeStackLineParser",0,e_,"createDefaultStackParser",0,eL,"createStackParser",0,eD,"geckoStackLineParser",0,ew,"nodeStackLineParser",0,eO,"opera10StackLineParser",0,ex,"opera11StackLineParser",0,e$,"reverseAndStripFrames",0,eT,"winjsStackLineParser",0,eF],70736),e.i(70736),e.i(99573),e.i(29569),e.i(11475),e.i(43179),e.i(45098),e.i(6881),e.i(80322),e.i(80049),e.i(98689),e.s(["DOMExceptionCoercer",0,ej,"ErrorCoercer",0,eB,"ErrorEventCoercer",0,eU,"EventCoercer",0,eW,"ObjectCoercer",0,eH,"PrimitiveCoercer",0,ez,"PromiseRejectionEventCoercer",0,eG,"StringCoercer",0,e1],21854),e.i(21854);class ti{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(void 0!==t)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){for(;this._cache.size>=this._maxSize;){let e=this._cache.keys().next().value;e&&this._cache.delete(e)}}}e.s(["ReduceableCache",0,ti],46986),e.i(46986),e.i(52001),e.s(["DEFAULT_EXCEPTION_STEPS_CONFIG",0,eQ,"DOMExceptionCoercer",0,ej,"EXCEPTION_STEP_INTERNAL_FIELDS",0,eK,"ErrorCoercer",0,eB,"ErrorEventCoercer",0,eU,"ErrorPropertiesBuilder",0,ed,"EventCoercer",0,eW,"ExceptionStepsBuffer",0,eX,"ObjectCoercer",0,eH,"PrimitiveCoercer",0,ez,"PromiseRejectionEventCoercer",0,eG,"ReduceableCache",0,ti,"StringCoercer",0,e1,"chromeStackLineParser",0,e_,"createDefaultStackParser",0,eL,"createStackParser",0,eD,"geckoStackLineParser",0,ew,"getUtf8ByteLength",0,eZ,"nodeStackLineParser",0,eO,"opera10StackLineParser",0,ex,"opera11StackLineParser",0,e$,"resolveExceptionStepsConfig",0,eJ,"reverseAndStripFrames",0,eT,"stripReservedExceptionStepFields",0,eY,"winjsStackLineParser",0,eF],96117);var tr=e.i(96117),ts=tr,ta=e.i(2157),tn=e.i(1457);let to=new ts.ReduceableCache(25),tl=new ts.ReduceableCache(20);async function tu(e){let t={};for(let s=e.length-1;s>=0;s--){var i,r;let a=e[s],n=a?.filename;!(!a||"string"!=typeof n||"number"!=typeof a.lineno||(i=n).startsWith("node:")||i.endsWith(".min.js")||i.endsWith(".min.cjs")||i.endsWith(".min.mjs")||i.startsWith("data:")||void 0!==(r=a).lineno&&r.lineno>1e4||void 0!==r.colno&&r.colno>1e3)&&(t[n]||(t[n]=[]),t[n].push(a.lineno))}let s=Object.keys(t);if(0==s.length)return e;let a=[];for(let e of s){if(tl.get(e))continue;let i=t[e];if(!i)continue;i.sort((e,t)=>e-t);let r=function(e){if(!e.length)return[];let t=0,i=e[0];if("number"!=typeof i)return[];let r=th(i),s=[];for(;;){if(t===e.length-1){s.push(r);break}let i=e[t+1];if("number"!=typeof i)break;i<=r[1]?r[1]=i+7:(s.push(r),r=th(i)),t++}return s}(i);if(r.every(t=>(function(e,t){let i=to.get(e);if(void 0===i)return!1;for(let e=t[0];e<=t[1];e++)if(void 0===i[e])return!1;return!0})(e,t)))continue;let s=function(e,t,i){let r=e.get(t);return void 0===r?(e.set(t,i),i):r}(to,e,{});a.push(function(e,t,i){return new Promise(r=>{let s=(0,ta.createReadStream)(e),a=(0,tn.createInterface)({input:s});function n(){s.destroy(),r()}let o=0,l=0,u=t[0];if(void 0===u)return void n();let c=u[0],h=u[1];function d(){tl.set(e,1),a.close(),a.removeAllListeners(),n()}s.on("error",d),a.on("error",d),a.on("close",n),a.on("line",e=>{if(!(++o<c)&&(i[o]=function(e,t){let i=e,r=i.length;if(r<=150)return i;t>r&&(t=r);let s=Math.max(t-60,0);s<5&&(s=0);let a=Math.min(s+140,r);return a>r-5&&(a=r),a===r&&(s=Math.max(a-140,0)),i=i.slice(s,a),s>0&&(i=`...${i}`),a<r&&(i+="..."),i}(e,0),o>=h)){if(l===t.length-1){a.close(),a.removeAllListeners();return}let e=t[++l];if(void 0===e){a.close(),a.removeAllListeners();return}c=e[0],h=e[1]}})})}(e,r,s))}return await Promise.all(a).catch(()=>{}),e&&e.length>0&&function(e,t){for(let i of e)if(i.filename&&void 0===i.context_line&&"number"==typeof i.lineno){let e=t.get(i.filename);if(void 0===e)continue;!function(e,t,i){if(void 0===t.lineno||void 0===i)return;t.pre_context=[];for(let r=td(e);r<e;r++){let e=i[r];if(void 0===e)return void tc(t);t.pre_context.push(e)}if(void 0===i[e])return tc(t);t.context_line=i[e];let r=function(e){return e+7}(e);t.post_context=[];for(let s=e+1;s<=r;s++){let e=i[s];if(void 0===e)break;t.post_context.push(e)}}(i.lineno,i,e)}}(e,to),to.reduce(),e}function tc(e){delete e.pre_context,delete e.context_line,delete e.post_context}function th(e){return[td(e),e+7]}function td(e){return Math.max(1,e-7)}let tg=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],tp=function(e,t=[]){if(!e)return!1;let i=e.toLowerCase();return tg.concat(t).some(e=>{let t=e.toLowerCase();return -1!==i.indexOf(t)})},tf={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};e.s(["FeatureFlagError",0,tf],58325);class tm{constructor(e){this._host=e.host,this._distinctId=e.distinctId,this._groups=e.groups,this._disableGeoip=e.disableGeoip,this._flags=e.flags,this._requestId=e.requestId,this._evaluatedAt=e.evaluatedAt,this._flagDefinitionsLoadedAt=e.flagDefinitionsLoadedAt,this._errorsWhileComputing=e.errorsWhileComputing??!1,this._quotaLimited=e.quotaLimited??!1,this._accessed=e.accessed??new Set,this._isSlice=e.isSlice??!1}isEnabled(e){let t=this._flags[e];return this._recordAccess(e),t?.enabled??!1}getFlag(e){let t=this._flags[e];if(this._recordAccess(e),t)return!!t.enabled&&(t.variant??!0)}getFlagPayload(e){return this._flags[e]?.payload}onlyAccessed(){let e={};for(let t of this._accessed){let i=this._flags[t];i&&(e[t]=i)}return this._cloneWith(e)}only(e){let t={},i=[];for(let r of e){let e=this._flags[r];e?t[r]=e:i.push(r)}return i.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${i.join(", ")}`),this._cloneWith(t)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let e={},t=[];for(let[i,r]of Object.entries(this._flags)){let s=!1!==r.enabled&&(r.variant??!0);e[`$feature/${i}`]=s,r.enabled&&t.push(i)}return t.length>0&&(t.sort(),e.$active_feature_flags=t),e}_cloneWith(e){return new tm({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:e,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(e){if(this._accessed.add(e),""===this._distinctId||this._isSlice&&!(e in this._flags))return;let t=this._flags[e],i=void 0===t?void 0:!1!==t.enabled&&(t.variant??!0),r={$feature_flag:e,$feature_flag_response:i,$feature_flag_id:t?.id,$feature_flag_version:t?.version,$feature_flag_reason:t?.reason,locally_evaluated:t?.locallyEvaluated??!1,[`$feature/${e}`]:i,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:t?.locallyEvaluated?Date.now():this._evaluatedAt};t?.hasExperiment!==void 0&&(r.$feature_flag_has_experiment=t.hasExperiment),t?.locallyEvaluated&&void 0!==this._flagDefinitionsLoadedAt&&(r.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let s=[];this._errorsWhileComputing&&s.push(tf.ERRORS_WHILE_COMPUTING),this._quotaLimited&&s.push(tf.QUOTA_LIMITED),void 0===t&&s.push(tf.FLAG_MISSING),s.length>0&&(r.$feature_flag_error=s.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:e,response:i,groups:this._groups,disableGeoip:this._disableGeoip,properties:r})}}async function ty(e){let t=globalThis.crypto?.subtle;if(!t)throw Error("SubtleCrypto API not available");return Array.from(new Uint8Array(await t.digest("SHA-1",new TextEncoder().encode(e)))).map(e=>e.toString(16).padStart(2,"0")).join("")}let t_=["is_not","is_set"];class tv extends Error{constructor(e){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=e,Object.setPrototypeOf(this,tv.prototype)}}function tb(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}class tw extends Error{constructor(e){super(e),tb(this,tw)}}class tE extends Error{constructor(e){super(e),tb(this,tE)}}class tF{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:i,timeout:r,host:s,customHeaders:a,...n}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=r,this.projectApiKey=i,this.host=s,this.poller=void 0,this.fetch=n.fetch||fetch,this.onError=n.onError,this.customHeaders=a,this.onLoad=n.onLoad,this.onMinimalFlagCalledEvents=n.onMinimalFlagCalledEvents,this.cacheProvider=n.cacheProvider,this.strictLocalEvaluation=n.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){this.debugMode&&e()}createEvaluationContext(e,t={},i={},r={},s={}){return{distinctId:e,groups:t,personProperties:i,groupProperties:r,evaluationCache:s}}async getFeatureFlag(e,t,i={},r={},s={}){let a,n;if(await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return a;if(void 0!==(n=this.featureFlagsByKey[e])){let o=this.createEvaluationContext(t,i,r,s);try{a=(await this.computeFlagAndPayloadLocally(n,o)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${a}`))}catch(t){t instanceof tE||t instanceof tw?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e}: ${t}`))}}return a}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let i={},r={},s=0==this.featureFlags.length,a=t?t.map(e=>this.featureFlagsByKey[e]).filter(Boolean):this.featureFlags,n={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(a.map(async e=>{try{let{value:t,payload:s}=await this.computeFlagAndPayloadLocally(e,n);i[e.key]=t,s&&(r[e.key]=s)}catch(t){t instanceof tE||t instanceof tw?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e.key}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e.key}: ${t}`)),s=!0}})),{response:i,payloads:r,fallbackToFlags:s}}async computeFlagAndPayloadLocally(e,t,i={}){let r,{matchValue:s,skipLoadCheck:a=!1}=i;if(a||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};r=void 0!==s?s:await this.computeFlagValueLocally(e,t);let n=this.getFeatureFlagPayload(e.key,r);return{value:r,payload:n}}async computeFlagValueLocally(e,t){let{distinctId:i,groups:r,personProperties:s,groupProperties:a}=t;if(!e.active)return!1;if(e.ensure_experience_continuity)throw new tw("Flag has experience continuity enabled");let n=(e.filters||{}).aggregation_group_type_index;if(void 0!=n){let i=this.groupTypeMapping[String(n)];if(!i)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${n} for feature flag ${e.key}`)),new tw("Flag has unknown group type index");if(!(i in r))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;"device_id"===e.bucketing_identifier&&(s?.$device_id===void 0||s?.$device_id===null||s?.$device_id==="")&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let o=a[i];return await this.matchFeatureFlagProperties(e,r[i],o,t)}{let r=this.getBucketingValueForFlag(e,i,s);if(void 0===r)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new tw(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,r,s,t)}}getBucketingValueForFlag(e,t,i){if(e.filters?.aggregation_group_type_index!=void 0)return t;if("device_id"===e.bucketing_identifier){let e=i?.$device_id;if(null==e||""===e)return;return e}return t}getFeatureFlagPayload(e,t){let i=null;if(!1!==t&&null!=t&&("boolean"==typeof t?i=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null:"string"==typeof t&&(i=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null),null!=i)){if("object"==typeof i)return i;if("string"==typeof i)try{return JSON.parse(i)}catch{}return i}return null}async evaluateFlagDependency(e,t,i){let{evaluationCache:r}=i,s=e.key;if(!this.featureFlagsByKey)throw new tw("Feature flags not available for dependency evaluation");if(!("dependency_chain"in e))throw new tw(`Flag dependency property for '${s}' is missing required 'dependency_chain' field`);let a=e.dependency_chain;if(!Array.isArray(a))throw new tw(`Flag dependency property for '${s}' has an invalid 'dependency_chain' (expected array, got ${typeof a})`);if(0===a.length)throw new tw(`Circular dependency detected for flag '${s}' (empty dependency chain)`);for(let e of a){if(!(e in r)){let t=this.featureFlagsByKey[e];if(t)if(t.active)try{let s=await this.computeFlagValueLocally(t,i);r[e]=s}catch(t){throw new tw(`Error evaluating flag dependency '${e}' for flag '${s}': ${t}`)}else r[e]=!1;else throw new tw(`Missing flag dependency '${e}' for flag '${s}'`)}if(null==r[e])throw new tw(`Dependency '${e}' could not be evaluated`)}let n=r[s];return this.flagEvaluatesToExpectedValue(e.value,n)}flagEvaluatesToExpectedValue(e,t){return"boolean"==typeof e?e===t||"string"==typeof t&&""!==t&&!0===e:"string"==typeof e&&t===e}async matchFeatureFlagProperties(e,t,i,r){let s,a=e.filters||{},n=a.groups||[],o=a.aggregation_group_type_index,l=a.early_exit??!1,{groups:u,groupProperties:c}=r,h=!1;for(let d of n)try{let n=void 0!==d.aggregation_group_type_index?d.aggregation_group_type_index:o,g=i,p=t;if(n!==o&&null!=n){let t=this.groupTypeMapping[String(n)];if(!t||!(t in u)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${e.key}': group type index ${n} not available`));continue}if(!(t in c)){h=!0;continue}g=c[t],p=u[t]}let f=await this.isConditionMatch(e,p,d,g,r);if("match"===f){let t=d.variant,i=a.multivariate?.variants||[];s=t&&i.some(e=>e.key===t)?t:await this.getMatchingVariant(e,p)||!0;break}if(l&&"out_of_rollout_bound"===f)return!1}catch(e){if(e instanceof tE)throw e;if(e instanceof tw)h=!0;else throw e}if(void 0!==s)return s;if(h)throw new tw("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(e,t,i,r,s){let a=i.rollout_percentage,n=e=>{this.logMsgIfDebug(()=>console.warn(e))};if((i.properties||[]).length>0){for(let e of i.properties){let t=e.type,i=!1;if("cohort"===t){let t=await tS(e,r,this.cohorts,this.debugMode,e=>this.evaluateFlagDependency(e,r,s));i="not_in"===e.operator?!t:t}else i="flag"===t?await this.evaluateFlagDependency(e,r,s):tx(e,r,n);if(!i)return"no_match"}if(void 0==a)return"match"}return void 0!=a&&await tP(e.key,t)>a/100?"out_of_rollout_bound":"match"}async getMatchingVariant(e,t){let i=await tP(e.key,t,"variant"),r=this.variantLookupTable(e).find(e=>i>=e.valueMin&&i<e.valueMax);if(r)return r.key}variantLookupTable(e){let t=[],i=0,r=0,s=e.filters||{};return(s.multivariate?.variants||[]).forEach(e=>{r=i+e.rollout_percentage/100,t.push({valueMin:i,valueMax:r,key:e.key}),i=r}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((e,t)=>(e[t.key]=t,e),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.(!0===e.minimalFlagCalledEvents)}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter(e=>e.ensure_experience_continuity);t.length>0&&console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map(e=>e.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).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();if(t)return this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0;return!1}catch(e){return this.onError?.(Error(`Failed to load from cache: ${e}`)),!1}}async loadFeatureFlags(e=!1){if(!this.loadedSuccessfullyOnce||e)return!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period")):(this.loadingPromise||(this.loadingPromise=this._loadFeatureFlags().catch(e=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${e}`))).finally(()=>{this.loadingPromise=void 0})),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){return this.shouldBeginExponentialBackoff?Math.min(6e4,this.pollingInterval*2**this.backOffCount):this.pollingInterval}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(e){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${e}`))}if(!e&&(await this.loadFromCache("Loaded flags from cache (skipped fetch)")||this.loadedSuccessfullyOnce))return;let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=t.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new tv(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402: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"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new tv(`Your secret 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 secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new tv(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let i=await t.json()??{};if(!("flags"in i))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(i)}`));this.flagsEtag=t.headers?.get("ETag")??void 0;let r={flags:i.flags??[],groupTypeMapping:i.group_type_mapping||{},cohorts:i.cohorts||{},minimalFlagCalledEvents:!0===i.minimal_flag_called_events};if(this.updateFlagState(r),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(r)}catch(e){this.onError?.(Error(`Failed to store in cache: ${e}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(r.flags);break}default:return}}catch(e){e instanceof tv&&this.onError?.(e)}}getPersonalApiKeyRequestOptions(e="GET",t){let i={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return t&&(i["If-None-Match"]=t),{method:e,headers:i}}_requestFeatureFlagDefinitions(){let e=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),i=null;if(this.timeout&&"number"==typeof this.timeout){let e=new AbortController;i=H(()=>{e.abort()},this.timeout),t.signal=e.signal}try{return(0,this.fetch)(e,t)}finally{clearTimeout(i)}}async stopPoller(e=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();t instanceof Promise&&await Promise.race([t,new Promise((t,i)=>setTimeout(()=>i(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(e){this.onError?.(Error(`Error during cache shutdown: ${e}`))}}}async function tP(e,t,i=""){return parseInt((await ty(`${e}.${t}${i}`)).slice(0,15),16)/0x1000000000000000}function tx(e,t,i){let r=e.key,s=e.value,a=e.operator||"exact";if(r in t){if("is_not_set"===a)return!1}else{if("is_not_set"===a)return!0;throw new tw(`Property ${r} not found in propertyValues`)}let n=t[r];if(null==n&&!t_.includes(a))return i&&i(`Property ${r} cannot have a value of null/undefined with the ${a} operator`),!1;function o(e,t){return Array.isArray(e)?e.map(e=>String(e).toLowerCase()).includes(String(t).toLowerCase()):String(e).toLowerCase()===String(t).toLowerCase()}function l(e,t,i){if("gt"===i)return e>t;if("gte"===i)return e>=t;if("lt"===i)return e<t;if("lte"===i)return e<=t;throw Error(`Invalid operator: ${i}`)}switch(a){case"exact":return o(s,n);case"is_not":return!o(s,n);case"is_set":return r in t;case"icontains":return String(n).toLowerCase().includes(String(s).toLowerCase());case"not_icontains":return!String(n).toLowerCase().includes(String(s).toLowerCase());case"regex":return tC(String(s))&&null!==String(n).match(String(s));case"not_regex":return tC(String(s))&&null===String(n).match(String(s));case"gt":case"gte":case"lt":case"lte":{let e,t="number"==typeof s?s:parseFloat(String(s));if(e="number"==typeof n?n:null!=n?parseFloat(String(n)):NaN,Number.isFinite(t)&&Number.isFinite(e))return l(e,t,a);return l(String(n),String(s),a)}case"is_date_after":case"is_date_before":{if("boolean"==typeof s)throw new tw("Date operations cannot be performed on boolean values");let e=function(e){let t=e.match(/^-?(?<number>[0-9]+)(?<interval>[a-z])$/),i=new Date(new Date().toISOString());if(!t)return null;{if(!t.groups)return null;let e=parseInt(t.groups.number);if(e>=1e4)return null;let r=t.groups.interval;if("h"==r)i.setUTCHours(i.getUTCHours()-e);else if("d"==r)i.setUTCDate(i.getUTCDate()-e);else if("w"==r)i.setUTCDate(i.getUTCDate()-7*e);else if("m"==r)i.setUTCMonth(i.getUTCMonth()-e);else{if("y"!=r)return null;i.setUTCFullYear(i.getUTCFullYear()-e)}return i}}(String(s));if(null==e&&(e=tO(s)),null==e)throw new tw(`Invalid date: ${s}`);let t=tO(n);if(["is_date_before"].includes(a))return t<e;return t>e}case"semver_eq":return 0===tA(tk(String(n)),tk(String(s)));case"semver_neq":return 0!==tA(tk(String(n)),tk(String(s)));case"semver_gt":return tA(tk(String(n)),tk(String(s)))>0;case"semver_gte":return tA(tk(String(n)),tk(String(s)))>=0;case"semver_lt":return 0>tA(tk(String(n)),tk(String(s)));case"semver_lte":return 0>=tA(tk(String(n)),tk(String(s)));case"semver_tilde":{let e,t=tk(String(n)),{lower:i,upper:r}={lower:[(e=tk(String(s)))[0],e[1],e[2]],upper:[e[0],e[1]+1,0]};return tA(t,i)>=0&&0>tA(t,r)}case"semver_caret":{let e=tk(String(n)),{lower:t,upper:i}=function(e){let[t,i,r]=tk(e);return{lower:[t,i,r],upper:t>0?[t+1,0,0]:i>0?[0,i+1,0]:[0,0,r+1]}}(String(s));return tA(e,t)>=0&&0>tA(e,i)}case"semver_wildcard":{let e=tk(String(n)),{lower:t,upper:i}=function(e){let t,i,r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new tw(`Invalid wildcard semver: ${e}`);let s=r.split("."),a=t=>{try{return tI(t,e)}catch{throw new tw(`Invalid wildcard semver: ${e}`)}},n=a(s[0]);if(1===s.length)t=[n,0,0],i=[n+1,0,0];else{let e=a(s[1]);t=[n,e,0],i=[n,e+1,0]}return{lower:t,upper:i}}(String(s));return tA(e,t)>=0&&0>tA(e,i)}default:throw new tw(`Unknown operator: ${a}`)}}async function tS(e,t,i,r=!1,s){let a=String(e.value);if(!(a in i))throw new tE(`cohort ${a} not found in local cohorts - likely a static cohort that requires server evaluation`);return t$(i[a],t,i,r,s)}async function t$(e,t,i,r=!1,s){if(!e)return!0;let a=e.type,n=e.values;if(!n||0===n.length)return!0;let o=!1;if("values"in n[0]){for(let e of n)try{let n=await t$(e,t,i,r,s);if("AND"===a){if(!n)return!1}else if(n)return!0}catch(t){if(t instanceof tE)throw t;if(t instanceof tw)r&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new tw("Can't match cohort without a given cohort property value");return"AND"===a}for(let e of n)try{let n;if("cohort"===e.type)n=await tS(e,t,i,r,s);else if("flag"===e.type){if(!s)throw new tw(`Flag dependency '${e.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);n=await s(e)}else n=tx(e,t);let o=e.negation||!1;if("AND"===a){if(!n&&!o||n&&o)return!1}else if(n&&!o||!n&&o)return!0}catch(t){if(t instanceof tE)throw t;if(t instanceof tw)r&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new tw("can't match cohort without a given cohort property value");return"AND"===a}function tC(e){try{return new RegExp(e),!0}catch(e){return!1}}function tI(e,t){if(!/^\d+$/.test(e)||e.length>1&&"0"===e[0])throw new tw(`Invalid semver: ${t}`);return parseInt(e,10)}function tk(e){let t=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!t||t.startsWith("."))throw new tw(`Invalid semver: ${e}`);let i=t.split("."),r=t=>void 0===t||""===t?0:tI(t,e);return[r(i[0]),r(i[1]),r(i[2])]}function tA(e,t){for(let i=0;i<3;i++){if(e[i]<t[i])return -1;if(e[i]>t[i])return 1}return 0}function tO(e){if(e instanceof Date)return e;if("string"==typeof e||"number"==typeof e){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new tw(`${e} is in an invalid date format`)}throw new tw(`The date provided ${e} must be a string, number, or date object`)}function tM(e,t,i,r,s){if(t>i&&(r.warn("min cannot be greater than max."),t=i),$(e))if(e>i)return r.warn(" cannot be greater than max: "+i+". Using max value instead."),i;else return e<t?(r.warn(" cannot be less than min: "+t+". Using min value instead."),t):e;return r.warn(" must be a number. using max or fallback. max: "+i+", fallback: "+s),tM(s||i,t,i,r)}class tR{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=tM(e.bucketSize,0,100,e._logger),this._refillRate=tM(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=tM(e.refillInterval,0,864e5,e._logger)}_applyRefill(e,t){let i=Math.floor((t-e.lastAccess)/this._refillInterval);if(i>0){let t=i*this._refillRate;e.tokens=Math.min(e.tokens+t,this._bucketSize),e.lastAccess=e.lastAccess+i*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),i=String(e),r=this._buckets[i];return r?this._applyRefill(r,t):(r={tokens:this._bucketSize,lastAccess:t},this._buckets[i]=r),0===r.tokens||(r.tokens--,0===r.tokens&&this._onBucketRateLimited?.(e),0===r.tokens)}stop(){this._buckets={}}}class tT{constructor(e,t,i){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=i,this._rateLimiter=new tR({...function(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??1,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??10}}(t),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return F(e)&&"__posthog_previously_captured_error"in e&&!0===e.__posthog_previously_captured_error}static async buildEventMessage(e,t,i,r,s){let a={...s},n=e.buildFromUnknown(t,i);return n.$exception_list=await e.modifyFrames(n.$exception_list),{event:"$exception",distinctId:r,properties:{...n,...a},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled()){var t,i,r;let s;t=this.onException.bind(this),i=this.onFatalError.bind(this),globalThis.process?.on("uncaughtException",(s=!1,Object.assign(r=>{let a=e.g.process.listeners("uncaughtException").filter(e=>"domainUncaughtExceptionClear"!==e.name&&!0!==e._posthogErrorHandler).length;t(r,{mechanism:{type:"onuncaughtexception",handled:!1}}),s||0!==a||(s=!0,i(r))},{_posthogErrorHandler:!0}))),r=this.onException.bind(this),globalThis.process?.on("unhandledRejection",e=>r(e,{mechanism:{type:"onunhandledrejection",handled:!1}}))}}onException(e,t){this.client.addPendingPromise((async()=>{if(!tT.isPreviouslyCapturedError(e)){let i=await tT.buildEventMessage(this.client.getErrorPropertiesBuilder(),e,t),r=i.properties,s=r?.$exception_list[0]?.type??"Exception";return this._rateLimiter.consumeRateLimit(s)?void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:s}):this.client._capturePreparedEvent(i,!1)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(2e3),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}class tL{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=null!==t?t:void 0}constructor(){this._memoryStorage={}}}let tD="analytics";class tj extends Error{constructor({requestId:e,drops:t,retryExhausted:i,cause:r}){super(tj.buildMessage(e,t,i,r)),this.name="CaptureV1Error",this.requestId=e,this.drops=t,this.retryExhausted=i,this.cause=r}static buildMessage(e,t,i,r){let s=`Capture V1 batch ${e} did not fully deliver: ${t.length} dropped, ${i.length} undelivered`;return r instanceof Error&&(s+=` (${r.message})`),s}}function tB(e){if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;if("string"==typeof e){let t=e.trim().toLowerCase();if("true"===t||"1"===t)return!0;if("false"===t||"0"===t)return!1}}let tU=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:tB},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:tB},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:tB},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:function(e){return"string"==typeof e?e:void 0}}],tN=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function tq(e,t,i){void 0===i||t in e||(e[t]=i)}function tH(e){var t;let i={..."object"==typeof(t=e.properties)&&null!==t&&!Array.isArray(t)?e.properties:{}},r={};for(let{property:e,optionKey:t,coerce:s}of tU)if(e in i){let a=s(i[e]);void 0!==a&&(r[t]=a),delete i[e]}let s={};for(let{property:e,field:t}of tN)if(e in i){let r=i[e];"string"==typeof r&&(s[t]=r),delete i[e]}return delete i.$lib,delete i.$lib_version,tq(i,"$set",e.$set),tq(i,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:function(e){if("string"==typeof e)return Number.isNaN(new Date(e).getTime())?new Date().toISOString():e;if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=null==e?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}(e.timestamp),...s,options:r,properties:i}}let tW=new Set([408,500,502,503,504]);class tz{constructor(e,t){this.config=e,this.maxBackoffMs=e.maxBackoffMs??3e4,this.fetchFn=t.fetch,this.onError=t.onError,this.now=t.now??Date.now,this.sleep=t.sleep??(e=>new Promise(t=>H(t,e))),this.generateRequestId=t.generateRequestId??et,this.compress=t.compress??y}async sendV1Batch(e){if(0===e.length)return;let t=this.generateRequestId(),i=new Date(this.now()).toISOString(),{batch:r}=function(e,{createdAt:t,historicalMigration:i}){let r={created_at:t,batch:e.map(tH)};return i&&(r.historical_migration=!0),r}(e,{createdAt:i,historicalMigration:this.config.historicalMigration}),s=`${this.config.host}/i/v1/analytics/events`,a=[],n=r,o=Math.max(1,this.config.maxAttempts);for(let e=1;e<=o;e++){let r,l,u=e===o,c=_({created_at:i,...this.config.historicalMigration?{historical_migration:!0}:{},batch:n});try{r=await this.sendOnce(s,c,e,t)}catch(i){if(u)return this.surfaceBatchFailure(t,a,n,i);await this.sleep(this.backoffDelay(e));continue}let{status:h}=r;if(h<200||h>=300){if(!u&&tW.has(h)){let t=this.parseRetryAfter(r);await this.cancelBody(r),await this.sleep(this.backoffDelay(e,t));continue}let i=await this.buildHttpError(r,h);return this.surfaceBatchFailure(t,a,n,i)}try{l=await this.parseResponse(r)}catch{return this.surfaceBatchFailure(t,a,n,Error(`Capture V1 returned an unparseable ${h} response body`))}let d=this.classify(n,l,a);if(0===d.length)return this.surfacePartialDrops(t,a);if(u)return void this.onError(new tj({requestId:t,drops:a,retryExhausted:d.map(e=>e.uuid)}));n=d;let g=this.parseRetryAfter(r);await this.sleep(this.backoffDelay(e,g))}}async sendOnce(e,t,i,r){let s=this.buildHeaders(i,r),a=t;if(this.config.compressionEnabled){let e=await this.compress(t,this.config.isDebug);null!==e&&(a=e,s["Content-Encoding"]="gzip")}let n=new AbortController,o=H(()=>n.abort(),this.config.requestTimeoutMs);try{return await this.fetchFn(e,{method:"POST",headers:s,body:a,signal:n.signal})}finally{clearTimeout(o)}}buildHeaders(e,t){let i=`${this.config.libraryId}/${this.config.libraryVersion}`,r={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":i,"PostHog-Attempt":String(e),"PostHog-Request-Id":t,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};return this.config.userAgent&&(r["User-Agent"]=this.config.userAgent),r}classify(e,t,i){let r=t.results??{},s=[];for(let t of e){let e=r[t.uuid];e&&("drop"===e.result?i.push({uuid:t.uuid,details:e.details??void 0}):"retry"===e.result&&s.push(t))}return s}backoffDelay(e,t){let i=Math.min(this.config.initialRetryDelayMs*2**(e-1),this.maxBackoffMs);return void 0===t?i:Math.max(i,Math.min(t,this.maxBackoffMs))}parseRetryAfter(e){let t=e.headers?.get("Retry-After");if(!t)return;let i=t.trim();if(/^\d+$/.test(i)){let e=parseInt(i,10);return Number.isFinite(e)&&e>0?1e3*e:void 0}let r=Date.parse(i);if(Number.isNaN(r))return;let s=r-this.now();return s>0?s:void 0}async parseResponse(e){let t=JSON.parse(await e.text());if("object"!=typeof t||null===t||Array.isArray(t))throw Error("unexpected response shape");let i=t.results;if(void 0!==i&&("object"!=typeof i||null===i||Array.isArray(i)))throw Error("unexpected results shape");return{results:i??{}}}async buildHttpError(e,t){let i="";try{i=(await e.text()).slice(0,512)}catch{}let r=i?`: ${i}`:"";return Error(`Capture V1 request failed with HTTP ${t}${r}`)}surfaceBatchFailure(e,t,i,r){this.onError(new tj({requestId:e,drops:t,retryExhausted:i.map(e=>e.uuid),cause:r}))}surfacePartialDrops(e,t){t.length>0&&this.onError(new tj({requestId:e,drops:t,retryExhausted:[]}))}async cancelBody(e){await e.body?.cancel()?.catch(()=>{})}}let tG=new Set;function tK(e,t){tG.has(e)||(tG.add(e),console.warn(`[PostHog] ${t}`))}class tV extends tt{constructor(e,t={}){const i=function(e){return"string"==typeof e?e.trim():""}(e),r={...t,maxQueueSize:t.maxQueueSize??1e4,flushInterval:t.flushInterval??5e3,host:function(e){return("string"==typeof e?e.trim():"")||"https://us.i.posthog.com"}(t.host),personalApiKey:function(e){return("string"==typeof e?e.trim():"")||void 0}(t.secretKey??t.personalApiKey)};if(super(i,r),this._memoryStorage=new tL,this._minimalFlagCalledEvents=!1,this.options=r,this.captureMode=function(){let e="u">typeof process?process.env?.POSTHOG_CAPTURE_MODE:void 0;return"v0"===e||"v1"===e?e:"v0"}(),this.context=this.initializeContext(),this.options.featureFlagsPollingInterval="number"==typeof r.featureFlagsPollingInterval?Math.max(r.featureFlagsPollingInterval,100):3e4,"number"==typeof r.waitUntilDebounceMs&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),"number"==typeof r.waitUntilMaxWaitMs&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),!this.disabled&&r.personalApiKey){if(r.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');!1!==r.enableLocalEvaluation&&(this.featureFlagsPoller=new tF({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:i,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:e=>{this._events.emit("error",e)},onLoad:e=>{this._events.emit("localEvaluationFlagsLoaded",e)},onMinimalFlagCalledEvents:e=>{this._minimalFlagCalledEvents=e},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new tT(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||5e4}enqueue(e,t,i){super.enqueue(e,t,i),this.scheduleDebouncedFlush()}async flush(){let e=this.flushWithPendingPromises(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e||this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let t,i=new Promise(e=>{t=e});try{e(i)}catch{return}this._waitUntilCycle={resolve:t,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt,i=this.options.waitUntilMaxWaitMs??500;if(void 0!==this._waitUntilCycle.timer&&clearTimeout(this._waitUntilCycle.timer),t>=i)return void this.resolveWaitUntilFlush();let r=this.options.waitUntilDebounceMs??50;this._waitUntilCycle.timer=H(()=>{this.resolveWaitUntilFlush()},r)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;return e&&(clearTimeout(e.timer),this._waitUntilCycle=void 0),e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await this.flushWithPendingPromises()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getQueueRouteKey(e){var t;return"v1"===this.captureMode&&"string"==typeof(t=e).event&&t.event.startsWith("$ai_")?"ai":tD}persistedQueueKeyForRoute(e){return"ai"===e?g.AiQueue:g.Queue}getActiveQueueRoutes(){return"v1"===this.captureMode?[tD,"ai"]:[tD]}async sendBatch(e,t,i=tD){if("v1"!==this.captureMode||"ai"===i)return super.sendBatch(e,t,i);let r=e.filter(e=>void 0!==e);await this.getV1Sender().sendV1Batch(r)}getV1Sender(){return this._v1Sender||(this._v1Sender=new tz({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3e3,isDebug:this.isDebug},{fetch:(e,t)=>this.fetch(e,t),onError:e=>this._events.emit("error",e)})),this._v1Sender}getLibraryVersion(){return"5.46.1"}get metrics(){var e;let t;return this._metrics||(this._metrics=new J(this,(e=this.options.metrics,t=e?.resourceAttributes,{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1e3}),this._logger)),this._metrics}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getCommonEventProperties(){let e=super.getCommonEventProperties();return(this.options.isServer??!0)&&(e.$is_server=!0),e}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}_warnIfInvalidCapture(e,t,i){"string"==typeof e&&this._logger.warn(t),"$exception"!==e.event||e._originatedFromCaptureException||this._logger.warn(i)}_sendPreparedEvent(e,t,i,r){return this.addPendingPromise(this._prepareEventMessage(t,r).then(({distinctId:t,event:r,properties:s,options:a})=>{let n={timestamp:a.timestamp,disableGeoip:a.disableGeoip,uuid:a.uuid},o={distinctId:t,event:r,properties:{...s,...this.getCommonEventProperties()}};return i?this.sendImmediate(e,o,n):this.enqueue(e,o,n)}).catch(e=>{e&&console.error(e)}))}_capturePreparedEvent(e,t){return this._sendPreparedEvent("capture",e,t)}capture(e){this._warnIfInvalidCapture(e,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(e,!1)}async captureImmediate(e){return this._warnIfInvalidCapture(e,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(e,!0)}identify({distinctId:e,properties:t={},disableGeoip:i}){let{$set:r,$set_once:s,$anon_distinct_id:a,...n}=t;this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:{$set:r||n,$set_once:s||{},$anon_distinct_id:a??void 0},disableGeoip:i},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:i}){let{$set:r,$set_once:s,$anon_distinct_id:a,...n}=t;await this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:{$set:r||n,$set_once:s||{},$anon_distinct_id:a??void 0},disableGeoip:i},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:e,properties:t={},propertiesOnce:i={}}){if(0===Object.keys(t).length&&0===Object.keys(i).length)return;let r={};Object.keys(t).length>0&&(r.$set=t),Object.keys(i).length>0&&(r.$set_once=i),this.capture({distinctId:e,event:"$set",properties:r})}unsetPersonProperties({distinctId:e,properties:t}){let i=(Array.isArray(t)?t:[t]).filter(e=>"string"==typeof e&&e.trim().length>0);0!==i.length&&this.capture({distinctId:e,event:"$set",properties:{$unset:i}})}alias(e){this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(e){await this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=3e4){return!!this.isLocalEvaluationReady()||void 0!==this.featureFlagsPoller&&new Promise(t=>{let i=setTimeout(()=>{r(),t(!1)},e),r=this._events.on("localEvaluationFlagsLoaded",e=>{clearTimeout(i),r(),t(e>0)})})}_resolveDistinctId(e,t){return"string"==typeof e?{distinctId:e,options:t}:{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,i={},r){let s,a,n,o,l,u,c,h;if(this.disabled)return void this._logger.warn("The client is disabled");let d=i.sendFeatureFlagEvents??!0;if(void 0!==this._flagOverrides&&e in this._flagOverrides){let t=this._flagOverrides[e];if(void 0===t)return;let i=this._payloadOverrides?.[e];return{key:e,enabled:!1!==t,variant:"string"==typeof t?t:void 0,payload:i}}let{groups:g,disableGeoip:p}=i,{onlyEvaluateLocally:f,personProperties:m,groupProperties:y}=i,_=this.addLocalPersonAndGroupProperties(t,g,m,y);m=_.allPersonProperties,y=_.allGroupProperties;let v=this.createFeatureFlagEvaluationContext(t,g,this.personPropertiesForLocalEvaluation(t,m),y);void 0==f&&(f=this.options.strictLocalEvaluation??!1);let b=!1;if(void 0!==this.featureFlagsPoller){await this.featureFlagsPoller?.loadFeatureFlags();let t=this.featureFlagsPoller?.featureFlagsByKey[e];if(t)try{let i=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(t,v,{matchValue:r});if(i){b=!0;let r=i.value;l=t.id,c="Evaluated locally",h=t.has_experiment,s={key:e,enabled:!1!==r,variant:"string"==typeof r?r:void 0,payload:i.payload??void 0}}}catch(t){if(t instanceof tE||t instanceof tw)this._logger?.info(`${t.name} when computing flag locally: ${e}: ${t.message}`);else throw t}}if(!b&&!f){let t=await super.getFeatureFlagDetailsStateless(v.distinctId,v.groups,m,y,p,[e]);if(void 0===t)o=tf.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=!0===t.minimalFlagCalledEvents,a=t.requestId,n=t.evaluatedAt;let i=[];t.errorsWhileComputingFlags&&i.push(tf.ERRORS_WHILE_COMPUTING),t.quotaLimited?.includes("feature_flags")&&i.push(tf.QUOTA_LIMITED);let r=t.flags[e];if(void 0===r)i.push(tf.FLAG_MISSING);else{let t;if(l=r.metadata?.id,u=r.metadata?.version,c=r.reason?.description??r.reason?.code,h=r.metadata?.has_experiment,r.metadata?.payload!==void 0)try{t=JSON.parse(r.metadata.payload)}catch{t=r.metadata.payload}s={key:e,enabled:r.enabled,variant:r.variant,payload:t}}i.length>0&&(o=i.join(","))}}if(d){let i=void 0===s?void 0:!1!==s.enabled&&(s.variant??!0),r={$feature_flag:e,$feature_flag_response:i,$feature_flag_id:l,$feature_flag_version:u,$feature_flag_reason:c,locally_evaluated:b,[`$feature/${e}`]:i,$feature_flag_request_id:a,$feature_flag_evaluated_at:b?Date.now():n};if(void 0!==h&&(r.$feature_flag_has_experiment=h),b&&this.featureFlagsPoller){let e=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();void 0!==e&&(r.$feature_flag_definitions_loaded_at=e)}o&&(r.$feature_flag_error=o),this._captureFlagCalledEventIfNeeded({distinctId:t,key:e,response:i,groups:g,disableGeoip:p,properties:r})}return void 0!==s&&void 0!==this._payloadOverrides&&e in this._payloadOverrides&&(s={...s,payload:this._payloadOverrides[e]}),s}async getFeatureFlag(e,t,i){tK("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead — this consolidates flag evaluation into a single `/flags` request per incoming request.");let r=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(void 0!==r)return!1!==r.enabled&&(r.variant??!0)}async getFeatureFlagPayload(e,t,i,r){if(tK("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead — this consolidates flag evaluation into a single `/flags` request per incoming request."),void 0!==this._payloadOverrides&&e in this._payloadOverrides)return this._payloadOverrides[e];let s=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:!1},i);if(void 0!==s)return s.payload??null}async getFeatureFlagResult(e,t,i){let{distinctId:r,options:s}=this._resolveDistinctId(t,i);return r?this._getFeatureFlagResult(e,r,{...s,sendFeatureFlagEvents:s?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required — pass it explicitly or use withContext()")}async getRemoteConfigPayload(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let t=await this._requestRemoteConfigPayload(e);if(!t)return;let i=await t.json();if("string"==typeof i)try{return JSON.parse(i)}catch(e){}return i}async isFeatureEnabled(e,t,i){tK("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead — this consolidates flag evaluation into a single `/flags` request per incoming request.");let r=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return void 0===r?void 0:!1!==r.enabled&&!!(r.variant??!0)}async getAllFlags(e,t){let{distinctId:i,options:r}=this._resolveDistinctId(e,t);return i?(await this.getAllFlagsAndPayloads(i,r)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags — pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(e,t){let{distinctId:i,options:r}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads — pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:s,disableGeoip:a,flagKeys:n}=r||{},{onlyEvaluateLocally:o,personProperties:l,groupProperties:u}=r||{},c=this.addLocalPersonAndGroupProperties(i,s,l,u);l=c.allPersonProperties,u=c.allGroupProperties;let h=this.createFeatureFlagEvaluationContext(i,s,this.personPropertiesForLocalEvaluation(i,l),u);void 0==o&&(o=this.options.strictLocalEvaluation??!1);let d=await this.featureFlagsPoller?.getAllFlagsAndPayloads(h,n),g={},p={},f=!0;if(d&&(g=d.response,p=d.payloads,f=d.fallbackToFlags),f&&!o){let e=await super.getFeatureFlagsAndPayloadsStateless(h.distinctId,h.groups,l,u,a,n);g={...g,...e.flags||{}},p={...p,...e.payloads||{}}}return void 0!==this._flagOverrides&&(g={...g,...this._flagOverrides}),void 0!==this._payloadOverrides&&(p={...p,...this._payloadOverrides}),{featureFlags:g,featureFlagPayloads:p}}async evaluateFlags(e,t){let i,r,{distinctId:s,options:a}=this._resolveDistinctId(e,t);if(!s)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags — pass it explicitly or use withContext()"),new tm({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new tm({host:this._getFeatureFlagEvaluationsHost(),distinctId:s,flags:{}});let{groups:n,disableGeoip:o,flagKeys:l}=a||{},{onlyEvaluateLocally:u,personProperties:c,groupProperties:h}=a||{},d=this.addLocalPersonAndGroupProperties(s,n,c,h);c=d.allPersonProperties,h=d.allGroupProperties;let g=this.createFeatureFlagEvaluationContext(s,n,this.personPropertiesForLocalEvaluation(s,c),h);void 0==u&&(u=this.options.strictLocalEvaluation??!1);let p={},f=!1,m=!1,y=await this.featureFlagsPoller?.getAllFlagsAndPayloads(g,l),_=new Set;if(y)for(let[e,t]of Object.entries(y.response)){let i=this.featureFlagsPoller?.featureFlagsByKey[e];p[e]={key:e,enabled:!1!==t,variant:"string"==typeof t?t:void 0,payload:y.payloads[e],id:i?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:i?.has_experiment},_.add(e)}if((!y||y.fallbackToFlags)&&!u){let e=await super.getFeatureFlagDetailsStateless(g.distinctId,g.groups,c,h,o,l);if(e)for(let[t,s]of(this._minimalFlagCalledEvents=!0===e.minimalFlagCalledEvents,i=e.requestId,r=e.evaluatedAt,f=!!e.errorsWhileComputingFlags,m=Array.isArray(e.quotaLimited)&&e.quotaLimited.includes("feature_flags"),Object.entries(e.flags))){let e;if(!_.has(t)){if(s.metadata?.payload!==void 0)try{e=JSON.parse(s.metadata.payload)}catch{e=s.metadata.payload}p[t]={key:t,enabled:s.enabled,variant:s.variant,payload:e,id:s.metadata?.id,version:s.metadata?.version,reason:s.reason?.description??s.reason?.code,locallyEvaluated:!1,hasExperiment:s.metadata?.has_experiment}}}}if(void 0!==this._flagOverrides)for(let[e,t]of Object.entries(this._flagOverrides)){if(void 0===t){delete p[e];continue}let i=p[e];p[e]={key:e,enabled:!1!==t,variant:"string"==typeof t?t:void 0,payload:i?.payload,id:i?.id,version:i?.version,reason:i?.reason,locallyEvaluated:i?.locallyEvaluated??!1,hasExperiment:i?.hasExperiment}}if(void 0!==this._payloadOverrides)for(let[e,t]of Object.entries(this._payloadOverrides)){let i=p[e];i&&(p[e]={...i,payload:t})}return new tm({host:this._getFeatureFlagEvaluationsHost(),distinctId:s,groups:n,disableGeoip:o,flags:p,requestId:i,evaluatedAt:r,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:f,quotaLimited:m})}_shouldSendMinimalFlagCalledEvent(e,t){return"$feature_flag_called"===e&&this._minimalFlagCalledEvents&&!1===t.$feature_flag_has_experiment}_captureFlagCalledEventIfNeeded(e){let{distinctId:t,key:i,response:r,groups:s,disableGeoip:a,properties:n}=e,o=s&&Object.keys(s).length>0?`_${JSON.stringify(Object.entries(s).sort(([e],[t])=>e<t?-1:+(e>t)))}`:"",l=`${i}_${r}${o}`;t in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[t].has(l)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),this.distinctIdHasSentFlagCalls[t]instanceof Set?this.distinctIdHasSentFlagCalls[t].add(l):this.distinctIdHasSentFlagCalls[t]=new Set([l]),this.capture({distinctId:t,event:"$feature_flag_called",properties:n,groups:s,disableGeoip:a}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:e=>this._captureFlagCalledEventIfNeeded(e),logWarning:e=>{!1!==this.options.featureFlagsLogWarnings&&console.warn(`[PostHog] ${e}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:e,groupKey:t,properties:i,distinctId:r,disableGeoip:s}){this._sendPreparedEvent("capture",{distinctId:r||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{}},disableGeoip:s},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:e,groupKey:t,properties:i,distinctId:r,disableGeoip:s}){await this._sendPreparedEvent("capture",{distinctId:r||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{}},disableGeoip:s},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=e=>Object.fromEntries(e.map(e=>[e,!0]));if(!1===e){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){"flags"in e&&(!1===e.flags?this._flagOverrides=void 0:Array.isArray(e.flags)?this._flagOverrides=t(e.flags):void 0!==e.flags&&(this._flagOverrides={...e.flags})),"payloads"in e&&(!1===e.payloads?this._payloadOverrides=void 0:void 0!==e.payloads&&(this._payloadOverrides={...e.payloads}));return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;if("flags"in e){let t=e.flags;if(!1===t||Array.isArray(t)||"object"==typeof t&&null!==t)return!0}if("payloads"in e){let t=e.payloads;if(!1===t||"object"==typeof t&&null!==t)return!0}return!1}withContext(e,t,i){return this.context?this.context.run(e,t,i):t()}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=Date.now()+(e??3e4),i=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown(),this._metrics&&(await Promise.race([this._metrics.flush().catch(()=>{}),new Promise(e=>H(e,Math.max(0,t-Date.now())))]),this._metrics.reset());try{return await super._shutdown(Math.max(0,t-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},i?.()}}async _requestRemoteConfigPayload(e){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,i={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},r=null;if(this.options.requestTimeout&&"number"==typeof this.options.requestTimeout){let e=new AbortController;r=H(()=>{e.abort()},this.options.requestTimeout),i.signal=e.signal}try{return await this.fetch(t,i)}catch(e){this._events.emit("error",e);return}finally{r&&clearTimeout(r)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let i={},r={};for(let[s,a]of Object.entries(e))if(I(a,"Object")&&t&&s in t){let e={};for(let[t,i]of Object.entries(a))e[String(t)]=String(i);r[String(s)]=e}else i[String(s)]=String(a);return{personProperties:i,groupProperties:r}}async getFeatureFlagsForEvent(e,t,i,r){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let s=r?.personProperties||{},a=r?.groupProperties||{},n=r?.flagKeys;if(r?.onlyEvaluateLocally??this.options.strictLocalEvaluation)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let r={};for(let[e,i]of Object.entries(t||{}))r[e]=String(i);return await this.getAllFlags(e,{groups:r,personProperties:s,groupProperties:a,disableGeoip:i,onlyEvaluateLocally:!0,flagKeys:n})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let r={};for(let[e,i]of Object.entries(t||{}))r[e]=String(i);return await this.getAllFlags(e,{groups:r,personProperties:s,groupProperties:a,disableGeoip:i,onlyEvaluateLocally:!0,flagKeys:n})}return(await super.getFeatureFlagsStateless(e,t,s,a,i)).flags}addLocalPersonAndGroupProperties(e,t,i,r){let s={...i||{}},a={};if(t)for(let e of Object.keys(t))a[e]={$group_key:t[e],...r?.[e]||{}};return{allPersonProperties:s,allGroupProperties:a}}personPropertiesForLocalEvaluation(e,t){return{distinct_id:e,...t||{}}}createFeatureFlagEvaluationContext(e,t,i,r){return{distinctId:e,groups:t||{},personProperties:i||{},groupProperties:r||{},evaluationCache:{}}}captureException(e,t,i,r,s){if(!tT.isPreviouslyCapturedError(e)){let a=Error("PostHog syntheticException");this.addPendingPromise(tT.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:a},t,i).then(e=>this._capturePreparedEvent({...e,uuid:r,flags:s},!1)))}}async captureExceptionImmediate(e,t,i,r){if(!tT.isPreviouslyCapturedError(e)){let s=Error("PostHog syntheticException");return this.addPendingPromise(tT.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:s},t,i).then(e=>this.captureImmediate({...e,flags:r})))}}async prepareEventMessage(e){return this._prepareEventMessage(e)}async _prepareEventMessage(e,t={}){let{distinctId:i,event:r,properties:s,groups:a,flags:n,sendFeatureFlags:o,timestamp:l,disableGeoip:u,uuid:c}=e,h=this.context?.get(),g=t.includeContextProperties??!0,p=i||h?.distinctId,f=g?{...this.props,...h?.properties||{},...s||{}}:{...s||{}};p||(p=et(),f.$process_person_profile=!1),g&&h?.sessionId&&!f.$session_id&&(f.$session_id=h.sessionId);let m=this._shouldSendMinimalFlagCalledEvent(r,f)?d(f):f,y=this._runBeforeSend({distinctId:p,event:r,properties:m,groups:a,flags:n,sendFeatureFlags:o,timestamp:l,disableGeoip:u,uuid:c});if(!y)return Promise.reject(null);let _=await Promise.resolve().then(async()=>{if(n)return o&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),n._getEventProperties();if(o){tK("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead — it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");var e=await this.getFeatureFlagsForEvent(y.distinctId,a,u,"object"==typeof o?o:void 0);if(!e)return{};let t={};for(let[i,r]of Object.entries(e))t[`$feature/${i}`]=r;let i=Object.keys(e).filter(t=>!1!==e[t]).sort();return i.length>0&&(t.$active_feature_flags=i),t}return{}}).catch(()=>({})).then(e=>{let t=y.groups||a;return{...e,...y.properties||{},...void 0!==t&&Object.keys(t).length>0?{$groups:t}:{}}});return"$pageview"===y.event&&this.options.__preview_capture_bot_pageviews&&"string"==typeof _.$raw_user_agent&&tp(_.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(y.event="$bot_pageview",_.$browser_type="bot"),{distinctId:y.distinctId,event:y.event,properties:_,options:{timestamp:y.timestamp,disableGeoip:y.disableGeoip,uuid:y.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let i=Array.isArray(t)?t:[t],r=e;for(let t of i){if(!(r=t(r)))return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!r.properties||0===Object.keys(r.properties).length){let e=`Event '${r.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(e)}}return r}}var ts=tr,tQ=e.i(78500);class tJ{constructor(){this.storage=new tQ.AsyncLocalStorage}get(){return this.storage.getStore()}run(e,t,i){return this.storage.run(this.resolve(e,i),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let i=this.get()||{};return{distinctId:e.distinctId??i.distinctId,sessionId:e.sessionId??i.sessionId,properties:{...i.properties||{},...e.properties||{}}}}}let tY=/[\x00-\x1f\x7f-\x9f]/g;function tX(e,t,i){null!=i&&""!==i&&(e[t]=i)}function tZ(e){return Array.isArray(e)?e[0]:e}function t0(e){if(Array.isArray(e)){for(let t of e){let e=t0(t);if(void 0!==e)return e}return}if("string"!=typeof e)return;let t=e.replace(tY,"").trim();if(t)return t.length>1e3?t.slice(0,1e3):t}function t1(e,t){var i,r;let s,{sessionId:a,distinctId:n}=function(e){if(!e)return{};let t=t0(e["x-posthog-session-id"]),i=t0(e["x-posthog-distinct-id"]);return{...void 0!==t?{sessionId:t}:{},...void 0!==i?{distinctId:i}:{}}}(t.headers),o={},l=!0===e.options.disable_capture_url_hashes;return tX(o,"$current_url",(i=t.originalUrl||t.url,l?U(i):i)),tX(o,"$request_method",t.method),tX(o,"$request_path",(r=t.path,s=function(e){if(!e)return e;let t=e.indexOf("?"),i=e.indexOf("#");return -1===t||-1!==i&&i<t?e:`${e.slice(0,t)}${-1===i?"":e.slice(i)}`}(r),l?U(s):s)),tX(o,"$user_agent",tZ(t.headers["user-agent"])),tX(o,"$ip",function(e){let t=tZ(e.headers["x-forwarded-for"]);if(t){let e=t.split(",")[0].trim();if(e)return e}return e.socket?.remoteAddress}(t)),{...void 0!==a?{sessionId:a}:{},...void 0!==n?{distinctId:n}:{},properties:o}}function t4(e,t){var i;t.use((i=e,(e,t,r)=>{i.withContext(t1(i,e),()=>r())}))}function t2(e,t){var i;t.use((i=e,(e,t,r,s)=>{if(tT.isPreviouslyCapturedError(e))return void s(e);let a=t1(i,t),n=Error("Synthetic exception"),o={...void 0!==a.sessionId?{$session_id:a.sessionId}:{},...a.properties||{},$response_status_code:r.statusCode};i.addPendingPromise(tT.buildEventMessage(i.getErrorPropertiesBuilder(),e,{mechanism:{type:"middleware",handled:!1},syntheticException:n},a.distinctId,o).then(e=>i._capturePreparedEvent(e,!1))),s(e)}))}e.s(["setupExpressErrorHandler",0,t2,"setupExpressRequestContext",0,t4],93546),e.s([],92998);class t3 extends tV{getLibraryId(){return"posthog-node"}initializeContext(){return new tJ}createErrorPropertiesBuilder(){let e;return new ts.ErrorPropertiesBuilder([new ts.EventCoercer,new ts.ErrorCoercer,new ts.ObjectCoercer,new ts.StringCoercer,new ts.PrimitiveCoercer],ts.createStackParser("node:javascript",ts.nodeStackLineParser),[(e=function(e=process.argv[1]?(0,o.dirname)(process.argv[1]):process.cwd(),t="\\"===o.sep){let i=t?l(e):e;return e=>{if(!e)return;let r=t?l(e):e,{dir:s,base:a,ext:n}=o.posix.parse(r);(".js"===n||".mjs"===n||".cjs"===n)&&(a=a.slice(0,-1*n.length));let u=decodeURIComponent(a);s||(s=".");let c=s.lastIndexOf("/node_modules");if(c>-1)return`${s.slice(c+14).replace(/\//g,".")}:${u}`;if(s.startsWith(i)){let e=s.slice(i.length+1).replace(/\//g,".");return e?`${e}:${u}`:u}return u}}(),async t=>{for(let i of t)i.module=e(i.filename);return t}),tu,function(e=process.cwd()){let t="\\"===o.sep,i=e=>t?e.replace(/\\/g,"/"):e,r=i(e);return async e=>{for(let t of e)!(!t.filename||t.filename.startsWith("node:")||t.filename.startsWith("data:"))&&(0,o.isAbsolute)(t.filename)&&(t.filename=i((0,o.relative)(r,i(t.filename))));return e}}()])}}e.s(["PostHog",0,t3],47839),e.i(47839),e.i(92998);let t5="posthog-node";function t8(e,{organization:t,projectId:i,prefix:r,severityAllowList:s=["error"],sendExceptionsToPostHog:a=!0}={}){return n=>{if(!("*"===s||s.includes(n.level)))return n;n.tags||(n.tags={});let o=n.tags[t6.POSTHOG_ID_TAG];if(void 0===o)return n;let l=e.options.host??"https://us.i.posthog.com",u=new URL(`/project/${e.apiKey}/person/${o}`,l).toString();n.tags["PostHog Person URL"]=u;let c=n.exception?.values||[],h=c.map(e=>({...e,stacktrace:e.stacktrace?{...e.stacktrace,type:"raw",frames:(e.stacktrace.frames||[]).map(e=>({...e,platform:"node:javascript"}))}:void 0})),d={$exception_message:c[0]?.value||n.message,$exception_type:c[0]?.type,$exception_level:n.level,$exception_list:h,$sentry_event_id:n.event_id,$sentry_exception:n.exception,$sentry_exception_message:c[0]?.value||n.message,$sentry_exception_type:c[0]?.type,$sentry_tags:n.tags};return t&&i&&(d.$sentry_url=(r||"https://sentry.io/organizations/")+t+"/issues/?project="+i+"&query="+n.event_id),a&&e.capture({event:"$exception",distinctId:o,properties:d}),n}}function t9(e,t){let i=t8(e,t);return{name:t5,processEvent:e=>i(e)}}class t6{static #e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(e,t,i,r,s){this.name=t5,this.name=t5,this.setupOnce=function(a,n){a(t8(e,{organization:t,projectId:n()?.getClient()?.getDsn()?.projectId,prefix:i,severityAllowList:r,sendExceptionsToPostHog:s??!0}))}}}e.s(["PostHogSentryIntegration",0,t6,"createEventProcessor",0,t8,"sentryIntegration",0,t9],91573),e.i(91573),e.i(93546),e.i(58325),e.s(["FeatureFlagError",0,p,"FeatureFlagEvaluations",0,tm,"PostHogSentryIntegration",0,t6,"cookieStateToProperties",0,eo,"cookieStoreFromHeader",0,er,"createEventProcessor",0,t8,"getPostHogCookieName",0,es,"parsePostHogCookie",0,el,"readPostHogCookie",0,en,"sentryIntegration",0,t9,"serializePostHogCookie",0,ea,"setupExpressErrorHandler",0,t2,"setupExpressRequestContext",0,t4,"uuidv7",0,et],57564),e.i(57564),e.s(["FeatureFlagError",0,p,"FeatureFlagEvaluations",0,tm,"PostHog",0,t3,"PostHogSentryIntegration",0,t6,"cookieStateToProperties",0,eo,"cookieStoreFromHeader",0,er,"createEventProcessor",0,t8,"getPostHogCookieName",0,es,"parsePostHogCookie",0,el,"readPostHogCookie",0,en,"sentryIntegration",0,t9,"serializePostHogCookie",0,ea,"setupExpressErrorHandler",0,t2,"setupExpressRequestContext",0,t4,"uuidv7",0,et],28864)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js.map