diff --git a/.env.example b/.env.example index 275ddd4..ddaada4 100644 --- a/.env.example +++ b/.env.example @@ -22,3 +22,6 @@ NEXT_PUBLIC_UPLOAD_API_KEY= CAREERS_WEBHOOK_URL= CONTACT_WEBHOOK_URL= NEXT_PUBLIC_OG_URL= + +NEXT_PUBLIC_POSTHOG_KEY= +NEXT_PUBLIC_POSTHOG_HOST= diff --git a/app/Analytics.tsx b/app/Analytics.tsx deleted file mode 100644 index 72c823b..0000000 --- a/app/Analytics.tsx +++ /dev/null @@ -1,7 +0,0 @@ -'use client' - -import { Analytics } from '@vercel/analytics/react' - -export function AnalyticsWrapper() { - return -} diff --git a/app/PostHogProvider.tsx b/app/PostHogProvider.tsx new file mode 100644 index 0000000..0bdafbc --- /dev/null +++ b/app/PostHogProvider.tsx @@ -0,0 +1,35 @@ +'use client' + +import { usePathname, useSearchParams } from 'next/navigation' +import posthog from 'posthog-js' +import { PostHogProvider } from 'posthog-js/react' +import { useEffect } from 'react' + +if (typeof window !== 'undefined' && process.env.NEXT_PUBLIC_POSTHOG_KEY) { + posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY, { + api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST, + capture_pageview: false, // Disable automatic pageview capture, as we capture manually + }) +} + +export function PostHogPageview() { + const pathname = usePathname() + const searchParams = useSearchParams() + // Track pageviews + useEffect(() => { + if (pathname) { + let url = window.origin + pathname + if (searchParams && searchParams.toString()) { + url = url + `?${searchParams.toString()}` + } + posthog.capture('$pageview', { + $current_url: url, + }) + } + }, [pathname, searchParams]) + return <> +} + +export function PHProvider({ children }: { children: React.ReactNode }) { + return {children} +} diff --git a/app/[locale]/careers/Careers.tsx b/app/[locale]/careers/Careers.tsx index 37977e8..4356034 100644 --- a/app/[locale]/careers/Careers.tsx +++ b/app/[locale]/careers/Careers.tsx @@ -13,6 +13,7 @@ import { cva } from 'class-variance-authority' import { AnimatePresence, motion } from 'framer-motion' import { Link, useTranslations } from 'next-intl' import Image from 'next/image' +import { usePostHog } from 'posthog-js/react' import React from 'react' import { useForm } from 'react-hook-form' import { BsFileEarmarkPdf } from 'react-icons/bs' @@ -36,6 +37,7 @@ function makeJobLink(job: Job) { } export function Careers({ jobs }: { jobs: Job[] }) { + const posthog = usePostHog() const t = useTranslations('Careers') // extract mapper with squad.slug as keys and squad.title as values @@ -76,7 +78,12 @@ export function Careers({ jobs }: { jobs: Job[] }) {

{t.rich('Heading')}

{t.rich('Intro')}

- + { + posthog?.capture('click_see_all_cta') + }} + > {t('SeeAllCTA')}  diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 26b0af3..14500c1 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -1,8 +1,11 @@ +import type { Metadata } from 'next' +import { Manrope } from 'next/font/google' +import { notFound } from 'next/navigation' +import { Suspense } from 'react' import 'tailwindcss/tailwind.css' -import '~/app/globals.css' -import { AnalyticsWrapper } from '~/app/Analytics' import { Background } from '~/app/Background' import { Footer } from '~/app/Footer' +import '~/app/globals.css' import IntlProvider from '~/app/IntlProvider' import { Rulers } from '~/app/Rulers' import { Sidebar } from '~/app/Sidebar' @@ -11,9 +14,10 @@ import { Toasts } from '~/app/Toasts' import { i18n } from '~/i18n' import { getMessages } from '~/i18n.server' import { getOpenGraphImage } from '~/lib/helper' -import type { Metadata } from 'next' -import { Manrope } from 'next/font/google' -import { notFound } from 'next/navigation' +import { + PostHogPageview, + PHProvider as PostHogProvider, +} from '../PostHogProvider' const fontSansEn = Manrope({ weight: ['400', '500', '700'], @@ -101,33 +105,37 @@ export default async function RootLayout({ suppressHydrationWarning className={`font-sans ${fontSansEn.variable}`} > - - - - -
- - -
-
- {children} -
+ + + -
-
-
-
+ + + + + +
+ + +
+
+ {children} +
- - +
+
+
+
- - + +
+ +
) } diff --git a/components/members/OurMembers.tsx b/components/members/OurMembers.tsx index 7f6f53b..8ad92b7 100644 --- a/components/members/OurMembers.tsx +++ b/components/members/OurMembers.tsx @@ -11,6 +11,7 @@ import { atom, useAtom } from 'jotai' import { useFormatter, useTranslations } from 'next-intl' import Image from 'next/image' import Link from 'next/link' +import { usePostHog } from 'posthog-js/react' import React from 'react' import { CgWebsite } from 'react-icons/cg' import { @@ -65,11 +66,17 @@ const SocialIconMap: Record['platform'], Component> = xiaohongshu: CgWebsite, website: CgWebsite, } -function SocialLink({ social }: { social: Unarray }) { +function SocialLink({ + social, + onClick, +}: { + social: Unarray + onClick?: () => void +}) { const Icon = SocialIconMap[social.platform] return ( -
  • +
  • }) { } function MemberCard({ member }: { member: Member }) { + const posthog = usePostHog() + const { dateTime: formatDateTime } = useFormatter() const joined = React.useMemo( () => @@ -158,7 +167,16 @@ function MemberCard({ member }: { member: Member }) { {member.social && member.social.length > 0 && (
      {member.social.map((social) => ( - + { + posthog?.capture('click_social', { + name: member.name, + platform: social.platform, + }) + }} + /> ))}
    )} diff --git a/package.json b/package.json index 559eae0..9f3dc52 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "@sanity/document-internationalization": "^1.1.1", "@sanity/image-url": "^1.0.2", "@sanity/vision": "^3.10.1", - "@vercel/analytics": "^0.1.11", "@vercel/og": "^0.2.0", "@zolplay/react": "^0.5.1", "@zolplay/utils": "^1.3.4", @@ -32,6 +31,7 @@ "next-intl": "2.14.0-beta.4", "next-sanity": "^4.3.2", "next-themes": "^0.2.1", + "posthog-js": "^1.87.6", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.43.9", @@ -66,6 +66,7 @@ "tailwindcss": "^3.3.2", "typescript": "^4.9.5" }, + "packageManager": "pnpm@8.10.2", "pnpm": { "peerDependencyRules": { "ignoreMissing": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e896251..4bfe672 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -26,9 +26,6 @@ dependencies: '@sanity/vision': specifier: ^3.10.1 version: 3.10.1(@babel/runtime@7.21.5)(@codemirror/lint@6.2.1)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.2)(@lezer/common@1.0.2)(codemirror@6.0.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(styled-components@5.3.10) - '@vercel/analytics': - specifier: ^0.1.11 - version: 0.1.11(react@18.2.0) '@vercel/og': specifier: ^0.2.0 version: 0.2.0 @@ -71,6 +68,9 @@ dependencies: next-themes: specifier: ^0.2.1 version: 0.2.1(next@13.4.1)(react-dom@18.2.0)(react@18.2.0) + posthog-js: + specifier: ^1.87.6 + version: 1.87.6 react: specifier: ^18.2.0 version: 18.2.0 @@ -395,7 +395,6 @@ packages: integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==, } engines: { node: '>=6.0.0' } - hasBin: true dependencies: '@babel/types': 7.21.5 @@ -689,6 +688,7 @@ packages: { integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==, } + requiresBuild: true dev: false optional: true @@ -2408,7 +2408,6 @@ packages: integrity: sha512-DAbhRPhue2LECLn/H1sLOpYtCgOzHrmHAKw98CGEI6KUNe03Wj2BHYoC+ZEjxNJdaK9Y3A2vJocQre36n3TLRQ==, } engines: { node: '>=14.18.0' } - hasBin: true dependencies: '@babel/traverse': 7.21.5(supports-color@5.5.0) '@vercel/frameworks': 1.3.4 @@ -2903,7 +2902,6 @@ packages: integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==, } engines: { node: '>= 8.0.0' } - hasBin: true dependencies: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 @@ -3301,6 +3299,7 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false /@typescript-eslint/scope-manager@5.59.11: resolution: @@ -3322,6 +3321,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.5 '@typescript-eslint/visitor-keys': 5.59.5 + dev: false /@typescript-eslint/type-utils@5.59.11(eslint@8.40.0)(typescript@4.9.5): resolution: @@ -3383,6 +3383,7 @@ packages: integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: false /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): resolution: @@ -3430,6 +3431,7 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false /@typescript-eslint/utils@5.59.11(eslint@8.40.0)(typescript@4.9.5): resolution: @@ -3497,6 +3499,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.5 eslint-visitor-keys: 3.4.1 + dev: false /@uiw/codemirror-extensions-basic-setup@4.19.16(@codemirror/autocomplete@6.6.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.1)(@codemirror/search@6.4.0)(@codemirror/state@6.2.0)(@codemirror/view@6.11.1): resolution: @@ -3558,17 +3561,6 @@ packages: } dev: false - /@vercel/analytics@0.1.11(react@18.2.0): - resolution: - { - integrity: sha512-mj5CPR02y0BRs1tN3oZcBNAX9a8NxsIUl9vElDPcqxnMfP0RbRc9fI9Ud7+QDg/1Izvt5uMumsr+6YsmVHcyuw==, - } - peerDependencies: - react: ^16.8||^17||^18 - dependencies: - react: 18.2.0 - dev: false - /@vercel/error-utils@1.0.9: resolution: { @@ -3692,7 +3684,7 @@ packages: eslint-plugin-antfu: 0.39.5(eslint@8.40.0)(typescript@4.9.5) eslint-plugin-eslint-comments: 3.2.0(eslint@8.40.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0) eslint-plugin-jsonc: 2.9.0(eslint@8.40.0) eslint-plugin-markdown: 3.0.0(eslint@8.40.0) eslint-plugin-n: 16.0.0(eslint@8.40.0) @@ -3916,7 +3908,6 @@ packages: integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, } engines: { node: '>=0.4.0' } - hasBin: true /agent-base@6.0.2: resolution: @@ -4348,7 +4339,6 @@ packages: integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true dependencies: caniuse-lite: 1.0.30001486 electron-to-chromium: 1.4.388 @@ -4770,7 +4760,6 @@ packages: integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==, } engines: { node: '>=0.8' } - hasBin: true dev: false /crc32-stream@4.0.2: @@ -4859,7 +4848,6 @@ packages: integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, } engines: { node: '>=4' } - hasBin: true dev: true /cssom@0.3.8: @@ -5170,7 +5158,6 @@ packages: { integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==, } - hasBin: true dev: false /dlv@1.1.3: @@ -5511,7 +5498,6 @@ packages: integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==, } engines: { node: '>=12' } - hasBin: true requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.16.17 @@ -5544,7 +5530,6 @@ packages: integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==, } engines: { node: '>=12' } - hasBin: true requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.17.18 @@ -5598,7 +5583,6 @@ packages: integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==, } engines: { node: '>=6.0' } - hasBin: true dependencies: esprima: 4.0.1 estraverse: 5.3.0 @@ -5752,6 +5736,7 @@ packages: - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color + dev: false /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.40.0): resolution: @@ -5817,6 +5802,7 @@ packages: eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.40.0) transitivePeerDependencies: - supports-color + dev: false /eslint-plugin-antfu@0.39.5(eslint@8.40.0)(typescript@4.9.5): resolution: @@ -5938,6 +5924,7 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: false /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.40.0)(typescript@4.9.5): resolution: @@ -6250,7 +6237,6 @@ packages: integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) '@eslint-community/regexpp': 4.5.1 @@ -6312,7 +6298,6 @@ packages: integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, } engines: { node: '>=4' } - hasBin: true dev: false /esquery@1.5.0: @@ -6488,6 +6473,13 @@ packages: dependencies: reusify: 1.0.4 + /fflate@0.4.8: + resolution: + { + integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==, + } + dev: false + /fflate@0.7.4: resolution: { @@ -7078,7 +7070,6 @@ packages: integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==, } engines: { node: '>=12.0.0' } - hasBin: true dependencies: node-forge: 1.3.1 dev: false @@ -7178,7 +7169,6 @@ packages: { integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==, } - hasBin: true dependencies: browserify-zlib: 0.1.4 is-deflate: 1.0.0 @@ -7657,7 +7647,6 @@ packages: integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, } engines: { node: '>=8' } - hasBin: true /is-docker@3.0.0: resolution: @@ -7665,7 +7654,6 @@ packages: integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - hasBin: true /is-extglob@2.1.1: resolution: @@ -7718,7 +7706,6 @@ packages: integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, } engines: { node: '>=14.16' } - hasBin: true dependencies: is-docker: 3.0.0 @@ -7944,7 +7931,6 @@ packages: { integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==, } - hasBin: true dev: true /jotai@2.1.0(react@18.2.0): @@ -7979,7 +7965,6 @@ packages: { integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==, } - hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -7990,7 +7975,6 @@ packages: { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, } - hasBin: true dependencies: argparse: 2.0.1 @@ -8054,7 +8038,6 @@ packages: { integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==, } - hasBin: true dev: true /jsesc@2.5.2: @@ -8063,7 +8046,6 @@ packages: integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, } engines: { node: '>=4' } - hasBin: true /jsesc@3.0.2: resolution: @@ -8071,7 +8053,6 @@ packages: integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, } engines: { node: '>=6' } - hasBin: true dev: true /json-bigint@1.0.0: @@ -8120,7 +8101,6 @@ packages: { integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, } - hasBin: true dependencies: minimist: 1.2.8 @@ -8130,7 +8110,6 @@ packages: integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==, } engines: { node: '>=6' } - hasBin: true dev: false /json5@2.2.3: @@ -8139,7 +8118,6 @@ packages: integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, } engines: { node: '>=6' } - hasBin: true /jsonc-eslint-parser@2.3.0: resolution: @@ -8396,7 +8374,6 @@ packages: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, } - hasBin: true dependencies: js-tokens: 4.0.0 @@ -8578,7 +8555,6 @@ packages: { integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, } - hasBin: true dev: true /minimatch@3.1.2: @@ -8688,7 +8664,6 @@ packages: integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true /natural-compare-lite@1.4.0: resolution: @@ -9353,7 +9328,6 @@ packages: integrity: sha512-B4dYmf6nEXg1NpDSB+orYWvKa5Kfmz5KzWC29U59dpVM4S/+xp0ak/JMEsw04UQTNNKps7klu0BUalr343Gt9g==, } engines: { node: '>=10.0.0' } - hasBin: true dependencies: fromentries: 1.3.2 dev: false @@ -9512,6 +9486,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /posthog-js@1.87.6: + resolution: + { + integrity: sha512-ocVNosPVXViFfdRi1VB5IVGLgTvFerIljJ308v9irQ3MZosuegs6tPFFCOefr6RUmyQF2gI/mDbMZafRoFS+KA==, + } + dependencies: + fflate: 0.4.8 + dev: false + /preact@10.13.2: resolution: { @@ -9625,7 +9608,6 @@ packages: integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, } engines: { node: '>=10.13.0' } - hasBin: true /pretty-ms@7.0.1: resolution: @@ -10178,7 +10160,6 @@ packages: { integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==, } - hasBin: true dev: true /regexp.prototype.flags@1.5.0: @@ -10197,7 +10178,6 @@ packages: { integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==, } - hasBin: true dependencies: jsesc: 0.5.0 dev: true @@ -10237,7 +10217,6 @@ packages: { integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==, } - hasBin: true dependencies: is-core-module: 2.12.0 path-parse: 1.0.7 @@ -10248,7 +10227,6 @@ packages: { integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==, } - hasBin: true dependencies: is-core-module: 2.12.0 path-parse: 1.0.7 @@ -10266,7 +10244,6 @@ packages: { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, } - hasBin: true dependencies: glob: 7.2.3 @@ -10276,7 +10253,6 @@ packages: integrity: sha512-SXIICxvxQxR3D4dp/3LDHZIJPC8a4anKMHd4E3Jiz2/JnY+2bEjqrOokAauc5ShGVNFHlEFjBXAXlaxkJqIqSg==, } engines: { node: '>=14.18.0', npm: '>=8.0.0' } - hasBin: true optionalDependencies: fsevents: 2.3.2 dev: false @@ -10577,14 +10553,12 @@ packages: { integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, } - hasBin: true /semver@6.1.1: resolution: { integrity: sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==, } - hasBin: true dev: false /semver@6.3.0: @@ -10592,7 +10566,6 @@ packages: { integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, } - hasBin: true /semver@7.5.0: resolution: @@ -10600,7 +10573,6 @@ packages: integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==, } engines: { node: '>=10' } - hasBin: true dependencies: lru-cache: 6.0.0 @@ -10732,7 +10704,6 @@ packages: { integrity: sha512-Nd3rgLBJcZ4iw7tpuOhwBupG6SvUDU0Fy1cZGAMorA2JmDUb+29Dg5phJK9gapa2Ak9d15w/RuMl/viwX+nKwQ==, } - hasBin: true dependencies: detect-indent: 7.0.1 detect-newline: 4.0.0 @@ -11089,7 +11060,6 @@ packages: integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==, } engines: { node: '>=8' } - hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 @@ -11177,7 +11147,6 @@ packages: integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==, } engines: { node: '>=14.0.0' } - hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -11541,7 +11510,6 @@ packages: integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, } engines: { node: '>=4.2.0' } - hasBin: true /unbox-primitive@1.0.2: resolution: @@ -11802,7 +11770,6 @@ packages: { integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, } - hasBin: true dev: false /uuid@9.0.0: @@ -11810,7 +11777,6 @@ packages: { integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==, } - hasBin: true dev: false /validate-npm-package-license@3.0.4: @@ -11972,7 +11938,6 @@ packages: integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, } engines: { node: '>= 8' } - hasBin: true dependencies: isexe: 2.0.0