diff --git a/package.json b/package.json index 3e61c778..2ecb76be 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "api:logs": "docker-compose -f ../study-platform-mvp/docker-compose.yml logs -f mvp-app" }, "dependencies": { + "@amplitude/unified": "^1.0.0-beta.9", "@hookform/resolvers": "^5.2.1", "@microsoft/clarity": "^1.0.0", "@next/third-parties": "^15.3.3", diff --git a/src/app/(landing)/layout.tsx b/src/app/(landing)/layout.tsx index 9b54b945..5a2f8620 100644 --- a/src/app/(landing)/layout.tsx +++ b/src/app/(landing)/layout.tsx @@ -1,5 +1,6 @@ import '../global.css'; +import * as amplitude from '@amplitude/unified'; import Clarity from '@microsoft/clarity'; import { GoogleTagManager } from '@next/third-parties/google'; import { clsx } from 'clsx'; @@ -25,14 +26,41 @@ const pretendard = localFont({ const GTM_ID = process.env.NEXT_PUBLIC_GTM_ID; const CLARITY_PROJECT_ID = process.env.NEXT_PUBLIC_CLARITY_PROJECT_ID; +const AMPLITUDE_API_KEY = process.env.NEXT_PUBLIC_AMPLITUDE_API_KEY; export default function LandingPageLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { - if (typeof window !== 'undefined' && CLARITY_PROJECT_ID) { + if ( + typeof window !== 'undefined' && + CLARITY_PROJECT_ID && + AMPLITUDE_API_KEY + ) { Clarity.init(CLARITY_PROJECT_ID); + // Initialize Amplitude and explicitly catch errors to avoid unhandled promise rejections. + amplitude + .initAll(AMPLITUDE_API_KEY, { + analytics: { + autocapture: { + attribution: true, + fileDownloads: true, + formInteractions: true, + pageViews: true, + sessions: true, + elementInteractions: true, + networkTracking: true, + webVitals: true, + frustrationInteractions: true, + }, + }, + sessionReplay: { sampleRate: 1 }, + }) + .catch((err) => { + // optional: surface the error during development + // console.error('Amplitude init failed', err); + }); } return ( diff --git a/src/components/analytics/page-view-tracker.tsx b/src/components/analytics/page-view-tracker.tsx index 0badb1fa..50904144 100644 --- a/src/components/analytics/page-view-tracker.tsx +++ b/src/components/analytics/page-view-tracker.tsx @@ -7,6 +7,7 @@ import { getAttributionParams, trackAttribution, } from '@/utils/attribution-tracker'; +import * as amplitude from '@amplitude/unified'; export default function PageViewTracker(): null { const pathname = usePathname(); @@ -20,6 +21,13 @@ export default function PageViewTracker(): null { // Attribution 파라미터 가져오기 const attributionParams = getAttributionParams(); + amplitude.track('page_view', { + page_title: document.title || pathname, + page_location: window.location.href, + page_path: pathname, + ...attributionParams, + }); + sendGTMEvent({ event: 'page_view', page_title: document.title || pathname, diff --git a/yarn.lock b/yarn.lock index 33d39834..448715c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,251 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@amplitude/analytics-browser@^2.25.2": + version "2.32.2" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-browser/-/analytics-browser-2.32.2.tgz#9a2412a6c27af5452118efd944966ff76b921210" + integrity sha512-qNcY9FCVwSEUObBeQx/KfavZO/1vHJPQ7FkRz82DwMBGMCFGnuO6lAxRtv/qUKhDTLQK0qvT6jmpQTcxbivzIQ== + dependencies: + "@amplitude/analytics-core" "2.34.1" + "@amplitude/plugin-autocapture-browser" "1.18.2" + "@amplitude/plugin-network-capture-browser" "1.7.2" + "@amplitude/plugin-page-url-enrichment-browser" "0.5.8" + "@amplitude/plugin-page-view-tracking-browser" "2.6.5" + "@amplitude/plugin-web-vitals-browser" "1.1.2" + tslib "^2.4.1" + +"@amplitude/analytics-client-common@2.4.18", "@amplitude/analytics-client-common@>=1 <3": + version "2.4.18" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-client-common/-/analytics-client-common-2.4.18.tgz#94e879ba86fc85b6be78332cc01c4fa7cbe2cca2" + integrity sha512-jTssTdiPYaNoInBn69mhxF0VcFsc9rN4fAeC7xCoMx6Gm2N138Ti9Z0fL30dx4Y84uvelVDJCOHTZ5PsfRQ7OA== + dependencies: + "@amplitude/analytics-connector" "^1.4.8" + "@amplitude/analytics-core" "2.34.1" + "@amplitude/analytics-types" "^2.11.0" + tslib "^2.4.1" + +"@amplitude/analytics-connector@^1.4.8", "@amplitude/analytics-connector@^1.6.4": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-connector/-/analytics-connector-1.6.4.tgz#8a811ff5c8ee46bdfea0e8f61c7578769b5778ed" + integrity sha512-SpIv0IQMNIq6SH3UqFGiaZyGSc7PBZwRdq7lvP0pBxW8i4Ny+8zwI0pV+VMfMHQwWY3wdIbWw5WQphNjpdq1/Q== + +"@amplitude/analytics-core@2.34.1", "@amplitude/analytics-core@>=1 <3", "@amplitude/analytics-core@^2.10.0": + version "2.34.1" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-core/-/analytics-core-2.34.1.tgz#3dff5966d14352117dbfd7b13dabea1bbe73707d" + integrity sha512-wnEQVCwUMNzlDmzePiwhJrfu+CCHiCROis0tuyuDmseqYv4EqYUuRiu9PMU9ZZJtWJqmQ1wo+sVDA90qBKe3Sw== + dependencies: + "@amplitude/analytics-connector" "^1.6.4" + tslib "^2.4.1" + zen-observable-ts "^1.1.0" + +"@amplitude/analytics-types@>=1 <3", "@amplitude/analytics-types@^2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-types/-/analytics-types-2.11.0.tgz#7aa83d82f49a5905628a676d44131f5e55ec9a82" + integrity sha512-L1niBXYSWmbyHUE/GNuf6YBljbafaxWI3X5jjEIZDFCjQvdWO3DKalY1VPFUbhgYQgWw7+bC6I/AlUaporyfig== + +"@amplitude/analytics-types@^1.0.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-types/-/analytics-types-1.4.0.tgz#63f84e5ea5e26beeb06745732063e3787194f0d2" + integrity sha512-RiMPHBqdrJ8ktTqG+Wzj2htnN/PCG9jGZG0SXtTFnWwVvcAJYbYm55/nrP1TTyrx1OlLhvF2VG3lVUP/xGAU8w== + +"@amplitude/engagement-browser@^1.0.3": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@amplitude/engagement-browser/-/engagement-browser-1.0.6.tgz#38447494bd29e95a54e3ceb9c01bcd26f0f2f538" + integrity sha512-g689fpbJ8tEgnUQI1bNZj2nVx9WDa+qTWf8H4Q2nHSYpHZP+PMBcI+dRFo73pSdprZgAec4+8Kd4cn8xezFoVw== + dependencies: + "@amplitude/analytics-types" "^1.0.0" + +"@amplitude/experiment-core@0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@amplitude/experiment-core/-/experiment-core-0.7.2.tgz#f94219d68d86322e8d580c8fbe0672dcd29f86bb" + integrity sha512-Wc2NWvgQ+bLJLeF0A9wBSPIaw0XuqqgkPKsoNFQrmS7r5Djd56um75In05tqmVntPJZRvGKU46pAp8o5tdf4mA== + dependencies: + js-base64 "^3.7.5" + +"@amplitude/experiment-core@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@amplitude/experiment-core/-/experiment-core-0.12.0.tgz#9a2ee4c054da6dd629bbabbcbbf20188cdece3dd" + integrity sha512-EiLLxcyJD8T3GFsMPxBfWx9n9fBw6rC0RJwccPXLzResE0HnGZZpVWF86ZndnYmEMD1lUUjWi41N1ymEzodI5w== + dependencies: + js-base64 "^3.7.5" + +"@amplitude/experiment-js-client@^1.15.5": + version "1.20.1" + resolved "https://registry.yarnpkg.com/@amplitude/experiment-js-client/-/experiment-js-client-1.20.1.tgz#769aeb52850fadb1bc60b0900048776f3b54ba4e" + integrity sha512-pNcEPVBxhn13x85aDrTo8bEnBvG97v2P7cObMi8snLxNaUAKatkITPC//I0+daU7zwX2M3c+yeGmrU0Fmk08OA== + dependencies: + "@amplitude/analytics-connector" "^1.6.4" + "@amplitude/experiment-core" "^0.12.0" + "@amplitude/ua-parser-js" "^0.7.31" + base64-js "1.5.1" + unfetch "4.1.0" + +"@amplitude/plugin-autocapture-browser@1.18.2": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-autocapture-browser/-/plugin-autocapture-browser-1.18.2.tgz#1b865f874474906b8635bb71b3a5c18a483cdc61" + integrity sha512-Mm6ekar0HnbDlbcIo8JVTwt/Naq5hVYk1+sQdFExzAulvBDaNxZtFKtE6XuiEo0iLiSLo7dkUEN8YfXzk8F9dQ== + dependencies: + "@amplitude/analytics-core" "2.34.1" + rxjs "^7.8.1" + tslib "^2.4.1" + +"@amplitude/plugin-experiment-browser@^1.0.0-beta.0": + version "1.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-experiment-browser/-/plugin-experiment-browser-1.0.0-beta.0.tgz#8e10a402db2b9ab2df03376148832246b66c213a" + integrity sha512-lJKPxrjHfBzA+3XMDRFrP2wr4eyjFgdaylWuN50+sP+OWuaIBWzWU1lZYjcfXOGyTSf7g/9c5jwDM9A5bY0yHQ== + dependencies: + "@amplitude/analytics-core" "^2.10.0" + "@amplitude/experiment-js-client" "^1.15.5" + +"@amplitude/plugin-network-capture-browser@1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-network-capture-browser/-/plugin-network-capture-browser-1.7.2.tgz#df7845e9f12e957e5e87037156edad6208917fff" + integrity sha512-xi+MCTnTo/zIQrz7M3+zbxHid7WqELB5sjZzo8+Du1ggYNotM+kyMXFtmUNY5It26FQmpB10krPWcn8LB26NfA== + dependencies: + "@amplitude/analytics-core" "2.34.1" + tslib "^2.4.1" + +"@amplitude/plugin-page-url-enrichment-browser@0.5.8": + version "0.5.8" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-page-url-enrichment-browser/-/plugin-page-url-enrichment-browser-0.5.8.tgz#cc4f2ae74909159611995ad5057948c6cdb40b04" + integrity sha512-YakSthesJQ4z0yNAEI/McA3Z83+bVuWmyY493i83l68Kr5KiNqdA4G2C3L/SSqyUuHe1fAkT+rdHJQK7g8lODw== + dependencies: + "@amplitude/analytics-core" "2.34.1" + tslib "^2.4.1" + +"@amplitude/plugin-page-view-tracking-browser@2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-page-view-tracking-browser/-/plugin-page-view-tracking-browser-2.6.5.tgz#268926d6c5a38bda67ad6740c1c3fe2709ddf037" + integrity sha512-uhsJWG5pd1oqWskASWB3+bCzlPgDBWlpybIgSa1azjQSRk9UokEOXVpoQnukdcWThk0KTngtGjXF1ZV05qU+iA== + dependencies: + "@amplitude/analytics-core" "2.34.1" + tslib "^2.4.1" + +"@amplitude/plugin-session-replay-browser@^1.16.0": + version "1.25.3" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-session-replay-browser/-/plugin-session-replay-browser-1.25.3.tgz#af56628ec80cdf8a27fef93ae778a30f3e18e04b" + integrity sha512-0qlFEVz7cH9OIa/CFlcp/gIgKIujpI+Tndoyg9F6dpbRbffbX6ZVb9IPQh+cpn0DNtr0aO6nxtZEteKaFq+cQQ== + dependencies: + "@amplitude/analytics-client-common" "2.4.18" + "@amplitude/analytics-core" "2.34.1" + "@amplitude/analytics-types" "^2.11.0" + "@amplitude/session-replay-browser" "1.30.3" + idb-keyval "^6.2.1" + tslib "^2.4.1" + +"@amplitude/plugin-web-vitals-browser@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-web-vitals-browser/-/plugin-web-vitals-browser-1.1.2.tgz#4cbc095acd5f26f018c6007ddba625c310db570d" + integrity sha512-BKcC+/fiSZV+X2A5sRjpgz6JO7R8Nzlp4AiZdqB47dbFTCnpHPsSPns10A0AZK8/zcKLBEsX6MnoRTIQHWOhQg== + dependencies: + "@amplitude/analytics-core" "2.34.1" + tslib "^2.4.1" + web-vitals "5.0.1" + +"@amplitude/rrdom@^2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrdom/-/rrdom-2.0.0-alpha.34.tgz#b36ec8d43d5a5bdfdd5094ef27836d38294b077f" + integrity sha512-2MhME5qMj6ZiIJQ+WpdSn+FPE0e3EQzCPk11RhITkRnsQRol545FOKjQ0brImj0k+JgtzcjYroWdjrMG46Wm6w== + dependencies: + "@amplitude/rrweb-snapshot" "^2.0.0-alpha.34" + +"@amplitude/rrweb-packer@2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb-packer/-/rrweb-packer-2.0.0-alpha.34.tgz#23837c711232036ab0ede898f29c79c988fd99d1" + integrity sha512-92Ikg/rLS1j1YoORkX7JgNzIOhCEnOcwRA4wrvAnkgBGcAFVQe+hYNMkl+5c/jYBDeJM6uSb4vUDS+kYe8LV1A== + dependencies: + "@amplitude/rrweb-types" "^2.0.0-alpha.34" + fflate "^0.4.4" + +"@amplitude/rrweb-plugin-console-record@2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb-plugin-console-record/-/rrweb-plugin-console-record-2.0.0-alpha.34.tgz#a1526f8856c53d6b0e52053545baa3449207f973" + integrity sha512-qWH4Ddc+F7DJt+E3ASDvGrkI7a1dwRKRNNxL22g58LerB5srcuumakzm9qMP1+GPsDgU3qgMVwUOgFe5ITbHGg== + +"@amplitude/rrweb-record@2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb-record/-/rrweb-record-2.0.0-alpha.34.tgz#fa8658a286cd69fb3ae4428c5dcb80cabca61d3f" + integrity sha512-NHXginyuS7geV+4l3jJVooUO0W7RY2LspKEESx1+hEUjIAju0qMQOIICerW830e7RYb2VijUfqckty0Azm/3Xg== + dependencies: + "@amplitude/rrweb" "^2.0.0-alpha.34" + "@amplitude/rrweb-types" "^2.0.0-alpha.34" + +"@amplitude/rrweb-snapshot@^2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb-snapshot/-/rrweb-snapshot-2.0.0-alpha.34.tgz#1aee396336b1855539cb844013ffb974da7c7749" + integrity sha512-y4wfV47ZQSYtCPk7g/L4tv8MH7Ik4qa5Bfq1f5bUgc0s7r2Ns46fyem7w5OEc+fOh3K8ZyDbLkglgfRhW+IXug== + dependencies: + postcss "^8.4.38" + +"@amplitude/rrweb-types@2.0.0-alpha.34", "@amplitude/rrweb-types@^2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb-types/-/rrweb-types-2.0.0-alpha.34.tgz#67fe0fe882398996f7d06f6c38368cb6406d669b" + integrity sha512-MsvaCNJdw3QRLhmp7EDahDcVB5k+sqwBH37Yl/S7uwCawg30SGHkB+ISciUeLwNqIKcQQ1fqNkkBdjpjwUjmeg== + +"@amplitude/rrweb-utils@2.0.0-alpha.34", "@amplitude/rrweb-utils@^2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb-utils/-/rrweb-utils-2.0.0-alpha.34.tgz#4a471bca7c097c2c7af9b9885e9c2e530f7b180d" + integrity sha512-3cWzBirK/v5ZCsOkYF4rBfkyMcSH1FsyXJ1+raz1YN/VOsmtDFikEYMzQoiIr2JnnxUQC+bDYy43e045hWYl4w== + +"@amplitude/rrweb@^2.0.0-alpha.34": + version "2.0.0-alpha.34" + resolved "https://registry.yarnpkg.com/@amplitude/rrweb/-/rrweb-2.0.0-alpha.34.tgz#3751f937dfd58b3cedd53640f9e84c3a088af799" + integrity sha512-nS7z+xVyo3RsiZOWXvP2s63J+PbsqrbPDY/YnKHhL1QQr5F5CTzkNIYdjTi7seG9Aa+PN4WLIdaw61ddXGQ6eQ== + dependencies: + "@amplitude/rrdom" "^2.0.0-alpha.34" + "@amplitude/rrweb-snapshot" "^2.0.0-alpha.34" + "@amplitude/rrweb-types" "^2.0.0-alpha.34" + "@amplitude/rrweb-utils" "^2.0.0-alpha.34" + "@types/css-font-loading-module" "0.0.7" + "@xstate/fsm" "^1.4.0" + base64-arraybuffer "^1.0.1" + mitt "^3.0.0" + +"@amplitude/session-replay-browser@1.30.3": + version "1.30.3" + resolved "https://registry.yarnpkg.com/@amplitude/session-replay-browser/-/session-replay-browser-1.30.3.tgz#52c575fe9735388d95c2f5e5f2ad92195a209919" + integrity sha512-LxOdne9a+kOgrLY8loAa2F9QrxrHcmeQAwhyZ6jMO5eOmTBXAqjtXrGtoipxv5NTsPkfY7G9e1kyNTzQLBczxw== + dependencies: + "@amplitude/analytics-client-common" "2.4.18" + "@amplitude/analytics-core" "2.34.1" + "@amplitude/analytics-types" "^2.11.0" + "@amplitude/rrweb-packer" "2.0.0-alpha.34" + "@amplitude/rrweb-plugin-console-record" "2.0.0-alpha.34" + "@amplitude/rrweb-record" "2.0.0-alpha.34" + "@amplitude/rrweb-types" "2.0.0-alpha.34" + "@amplitude/rrweb-utils" "2.0.0-alpha.34" + "@amplitude/targeting" "0.2.0" + "@rollup/plugin-replace" "^6.0.1" + idb "8.0.0" + tslib "^2.4.1" + +"@amplitude/targeting@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@amplitude/targeting/-/targeting-0.2.0.tgz#b0c8342fae929c85333190a71a5bc0b7f369010f" + integrity sha512-/50ywTrC4hfcfJVBbh5DFbqMPPfaIOivZeb5Gb+OGM03QrA+lsUqdvtnKLNuWtceD4H6QQ2KFzPJ5aAJLyzVDA== + dependencies: + "@amplitude/analytics-client-common" ">=1 <3" + "@amplitude/analytics-core" ">=1 <3" + "@amplitude/analytics-types" ">=1 <3" + "@amplitude/experiment-core" "0.7.2" + idb "^8.0.0" + tslib "^2.4.1" + +"@amplitude/ua-parser-js@^0.7.31": + version "0.7.33" + resolved "https://registry.yarnpkg.com/@amplitude/ua-parser-js/-/ua-parser-js-0.7.33.tgz#26441a0fb2e956a64e4ede50fb80b848179bb5db" + integrity sha512-wKEtVR4vXuPT9cVEIJkYWnlF++Gx3BdLatPBM+SZ1ztVIvnhdGBZR/mn9x/PzyrMcRlZmyi6L56I2J3doVBnjA== + +"@amplitude/unified@^1.0.0-beta.9": + version "1.0.0-beta.9" + resolved "https://registry.yarnpkg.com/@amplitude/unified/-/unified-1.0.0-beta.9.tgz#75acfbeba699b6b75e3586b1fc59d996cda94518" + integrity sha512-JS7Dq6GJ6amR0olsVu0ekypAUHpcect8pJNTKjWYtEwdUbfQP6giE41Bum8rLR85SOMBqbuMdDr3yO9oj2CKyw== + dependencies: + "@amplitude/analytics-browser" "^2.25.2" + "@amplitude/engagement-browser" "^1.0.3" + "@amplitude/plugin-experiment-browser" "^1.0.0-beta.0" + "@amplitude/plugin-session-replay-browser" "^1.16.0" + "@ampproject/remapping@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" @@ -2056,7 +2301,15 @@ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.1.tgz#78244efe12930c56fd255d7923865857c41ac8cb" integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw== -"@rollup/pluginutils@^5.0.2": +"@rollup/plugin-replace@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz#0f82e41d81f6586ab0f81a1b48bd7fd92fcfb9a2" + integrity sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + magic-string "^0.30.3" + +"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2": version "5.3.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.3.0.tgz#57ba1b0cbda8e7a3c597a4853c807b156e21a7b4" integrity sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q== @@ -2906,6 +3159,11 @@ "@types/deep-eql" "*" assertion-error "^2.0.1" +"@types/css-font-loading-module@0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz#2f98ede46acc0975de85c0b7b0ebe06041d24601" + integrity sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q== + "@types/debug@^4.0.0": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" @@ -3008,6 +3266,11 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== +"@types/zen-observable@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" + integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== + "@typescript-eslint/eslint-plugin@8.50.0", "@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/eslint-plugin@^8.24.0": version "8.50.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.0.tgz#a6ce899690542e2affa9543306d2d3935740abb7" @@ -3448,6 +3711,11 @@ loupe "^3.1.2" tinyrainbow "^1.2.0" +"@xstate/fsm@^1.4.0": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@xstate/fsm/-/fsm-1.6.5.tgz#f599e301997ad7e3c572a0b1ff0696898081bea5" + integrity sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw== + accepts@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895" @@ -3746,7 +4014,12 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.0, base64-js@^1.3.1: +base64-arraybuffer@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" + integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== + +base64-js@1.5.1, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -4317,7 +4590,7 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@^2.0.0, depd@~2.0.0: +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -5136,6 +5409,11 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: node-domexception "^1.0.0" web-streams-polyfill "^3.0.3" +fflate@^0.4.4: + version "0.4.8" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae" + integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5695,6 +5973,21 @@ iconv-lite@^0.7.0, iconv-lite@~0.7.0: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +idb-keyval@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.2.tgz#b0171b5f73944854a3291a5cdba8e12768c4854a" + integrity sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== + +idb@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/idb/-/idb-8.0.0.tgz#33d7ed894ed36e23bcb542fb701ad579bfaad41f" + integrity sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw== + +idb@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/idb/-/idb-8.0.3.tgz#c91e558f15a8d53f1d7f53a094d226fc3ad71fd9" + integrity sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg== + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -5746,7 +6039,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6150,6 +6443,11 @@ jose@^6.1.1: resolved "https://registry.yarnpkg.com/jose/-/jose-6.1.3.tgz#8453d7be88af7bb7d64a0481d6a35a0145ba3ea5" integrity sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ== +js-base64@^3.7.5: + version "3.7.8" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.8.tgz#af44496bc09fa178ed9c4adf67eb2b46f5c6d2a4" + integrity sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6461,7 +6759,7 @@ magic-string@^0.27.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" -magic-string@^0.30.0, magic-string@^0.30.11, magic-string@^0.30.17, magic-string@^0.30.21: +magic-string@^0.30.0, magic-string@^0.30.11, magic-string@^0.30.17, magic-string@^0.30.21, magic-string@^0.30.3: version "0.30.21" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== @@ -6908,6 +7206,11 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +mitt@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + mkdirp@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" @@ -7364,7 +7667,7 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.24, postcss@^8.4.41, postcss@^8.5.2, postcss@^8.5.6: +postcss@^8.4.24, postcss@^8.4.38, postcss@^8.4.41, postcss@^8.5.2, postcss@^8.5.6: version "8.5.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -7832,6 +8135,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.8.1: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + safe-array-concat@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" @@ -7950,7 +8260,7 @@ set-proto@^1.0.0: es-errors "^1.3.0" es-object-atoms "^1.0.0" -setprototypeof@~1.2.0: +setprototypeof@1.2.0, setprototypeof@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -8169,6 +8479,11 @@ stackback@0.0.2: resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + statuses@^2.0.1, statuses@^2.0.2, statuses@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" @@ -8557,7 +8872,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@~1.0.1: +toidentifier@1.0.1, toidentifier@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== @@ -8621,7 +8936,7 @@ tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.8.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.8.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -8744,6 +9059,11 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== +unfetch@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.1.0.tgz#6ec2dd0de887e58a4dee83a050ded80ffc4137db" + integrity sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" @@ -9040,6 +9360,11 @@ web-streams-polyfill@^3.0.3: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== +web-vitals@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-5.0.1.tgz#c8bc10e805f665f9ae468039703d5b2d0a9da22b" + integrity sha512-BsULPWaCKAAtNntUz0aJq1cu1wyuWmDzf4N6vYNMbYA6zzQAf2pzCYbyClf+Ui2MI54bt225AwugXIfL1W+Syg== + webpack-virtual-modules@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" @@ -9202,6 +9527,19 @@ yoctocolors-cjs@^2.1.3: resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== +zen-observable-ts@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz#2d1aa9d79b87058e9b75698b92791c1838551f83" + integrity sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA== + dependencies: + "@types/zen-observable" "0.8.3" + zen-observable "0.8.15" + +zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + zod-to-json-schema@^3.24.5, zod-to-json-schema@^3.25.0: version "3.25.0" resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz#df504c957c4fb0feff467c74d03e6aab0b013e1c"