diff --git a/.storybook/main.ts b/.storybook/main.ts index c012a18064..6db5faffde 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import type { StorybookConfig } from "@storybook/nextjs"; const path = require('path'); diff --git a/config/headers.js b/config/headers.js index db9a97b597..e61398c5f6 100644 --- a/config/headers.js +++ b/config/headers.js @@ -3,17 +3,15 @@ const LOCAL_MODE_HEADERS = []; const STRAPI_MEDIA_HOST = new URL(process.env.STRAPI_MEDIA_URL).hostname; const TRUSTED_SOURCES = '*.fabrique.social.gouv.fr *.meilisearch.io/multi-search *.meilisearch.com/multi-search 1j1s-front.osc-fr1.scalingo.io *.1jeune1solution.gouv.fr'; const ANALYTICS_SOURCES = `${process.env.NEXT_PUBLIC_ANALYTICS_DOMAIN} ${process.env.NEXT_PUBLIC_ANALYTICS_MATOMO_HOST}`; -// FIXME (GAFI 16-10-2024): Si on passait par un Record, ça pourrait nous éviter les typos et améliorer la lisibilité const contentSecurityPolicy = ` default-src 'self' ${TRUSTED_SOURCES}; - script-src 'self' ${ANALYTICS_SOURCES} https://*.adform.net www.googletagmanager.com analytics.tiktok.com *.adnxs.com *.adsrvr.org *.facebook.com *.facebook.net sc-static.net tr.snapchat.com; - img-src 'self' *.google.com data: ${STRAPI_MEDIA_HOST} ${ANALYTICS_SOURCES} img.youtube.com jedonnemonavis.numerique.gouv.fr *.adnxs.com *.adsrvr.org *.doubleclick.net p1.zemanta.com *.facebook.com; + script-src 'self' ${ANALYTICS_SOURCES} https://*.adform.net; + img-src 'self' *.google.com data: ${STRAPI_MEDIA_HOST} ${ANALYTICS_SOURCES} img.youtube.com jedonnemonavis.numerique.gouv.fr; style-src 'self' 'unsafe-inline' ${ANALYTICS_SOURCES}; frame-ancestors 'none'; - frame-src 'self' *.apprentissage.beta.gouv.fr immersion-facile.beta.gouv.fr deposer-offre.www.1jeune1solution.gouv.fr *.youtube-nocookie.com simulateur-alternance.1jeune1solution.gouv.fr https://*.adform.net mes-aides.francetravail.fr *.doubleclick.net *.adsrvr.org tr.snapchat.com; + frame-src 'self' *.apprentissage.beta.gouv.fr immersion-facile.beta.gouv.fr deposer-offre.www.1jeune1solution.gouv.fr *.youtube-nocookie.com simulateur-alternance.1jeune1solution.gouv.fr https://*.adform.net mes-aides.francetravail.fr; form-action 'self'; base-uri 'none'; - connect-src 'self' ${TRUSTED_SOURCES} analytics.tiktok.com *.facebook.com *.adnxs.com www.google.com tr.snapchat.com; `; const SECURITY_MODE_HEADERS = [{ diff --git a/package-lock.json b/package-lock.json index 2b2cde9acc..96606f08ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2349,384 +2349,10 @@ "tslib": "^2.4.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { + "node_modules/@esbuild/darwin-arm64": { "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], @@ -2734,41 +2360,7 @@ "license": "MIT", "optional": true, "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" + "darwin" ], "engines": { "node": ">=18" @@ -5546,27 +5138,27 @@ } }, "node_modules/@sentry-internal/tracing": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.2.tgz", - "integrity": "sha512-eo2F8cP6X+vr54Mp6vu+NoQEDz0M5O24Tz8jPY0T1CpiWdwCmHb7Sln+oLXeQ3/LlWdVQihBfKDBZfBdUfsBTg==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz", + "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.2", - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/core": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", - "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" @@ -5770,14 +5362,14 @@ } }, "node_modules/@sentry/integrations": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.2.tgz", - "integrity": "sha512-bMvL2fD3TGLM5YAUoQ2Qz6bYeVU8f7YRFNSjKNxK4EbvFgAU9j1FD6EKg0V0RNOJYnJjGIZYMmcWTXBbVTJL6w==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz", + "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.2", - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3", "localforage": "^1.8.1" }, "engines": { @@ -5785,13 +5377,13 @@ } }, "node_modules/@sentry/integrations/node_modules/@sentry/core": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", - "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" @@ -5908,21 +5500,21 @@ } }, "node_modules/@sentry/types": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", - "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", - "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2" + "@sentry/types": "7.120.3" }, "engines": { "node": ">=8" @@ -6840,9 +6432,9 @@ } }, "node_modules/@storybook/csf-plugin/node_modules/unplugin": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.0.tgz", - "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", "dev": true, "license": "MIT", "dependencies": { @@ -7696,9 +7288,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.17", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", - "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "license": "MIT" }, "node_modules/@types/react": { @@ -7861,69 +7453,6 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", - "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", - "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", - "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.20.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", @@ -7938,16 +7467,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", - "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.21.0.tgz", + "integrity": "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.19.0", - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/typescript-estree": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", "debug": "^4.3.4" }, "engines": { @@ -7962,35 +7491,15 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", - "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", - "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", + "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.20.0", - "@typescript-eslint/utils": "8.20.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.0" + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7998,16 +7507,12 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", - "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", + "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", "dev": true, "license": "MIT", "engines": { @@ -8018,15 +7523,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", - "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", + "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8045,14 +7550,14 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", - "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", + "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/types": "8.21.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8063,7 +7568,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", @@ -8076,7 +7581,7 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "node_modules/@typescript-eslint/parser/node_modules/ts-api-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", @@ -8089,35 +7594,15 @@ "typescript": ">=4.8.4" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", - "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", - "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", + "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8125,22 +7610,19 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/utils": { + "node_modules/@typescript-eslint/type-utils": { "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", - "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", + "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.20.0", - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/typescript-estree": "8.20.0" + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8154,25 +7636,20 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", - "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", + "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18.12" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/types": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", @@ -8186,7 +7663,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", @@ -8213,15 +7690,30 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/@typescript-eslint/utils": { "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", - "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", + "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", "dev": true, "license": "MIT", "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.20.0", "@typescript-eslint/types": "8.20.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/typescript-estree": "8.20.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8229,42 +7721,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", - "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.8.4" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", - "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", + "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/types": "8.20.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -18842,29 +18312,29 @@ } }, "node_modules/pino-sentry/node_modules/@sentry/core": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", - "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/pino-sentry/node_modules/@sentry/node": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.2.tgz", - "integrity": "sha512-ZnW9gpIGaoU+vYZyVZca9dObfmWYiXEWIMUM/JXaFb8AhP1OXvYweNiU0Pe/gNrz4oGAogU8scJc70ar7Vj0ww==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.3.tgz", + "integrity": "sha512-t+QtekZedEfiZjbkRAk1QWJPnJlFBH/ti96tQhEq7wmlk3VszDXraZvLWZA0P2vXyglKzbWRGkT31aD3/kX+5Q==", "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.120.2", - "@sentry/core": "7.120.2", - "@sentry/integrations": "7.120.2", - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/integrations": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" @@ -19021,9 +18491,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", "dev": true, "funding": [ { @@ -19041,7 +18511,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -19767,9 +19237,9 @@ } }, "node_modules/readable-stream": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz", - "integrity": "sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -21908,9 +21378,9 @@ } }, "node_modules/tough-cookie": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", - "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -21949,6 +21419,8 @@ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=16" }, diff --git a/public/scripts/tarteaucitron/lang/tarteaucitron.fr.js b/public/scripts/tarteaucitron/lang/tarteaucitron.fr.js index bb6d84b737..fc06dd839b 100644 --- a/public/scripts/tarteaucitron/lang/tarteaucitron.fr.js +++ b/public/scripts/tarteaucitron/lang/tarteaucitron.fr.js @@ -3,11 +3,10 @@ tarteaucitron.lang = { acceptAll: 'Tout accepter', adblock: 'Bonjour! Ce site joue la transparence et vous donne le choix des services tiers à activer.', adblock_call: 'Merci de désactiver votre adblocker pour commencer la personnalisation.', - adform: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur AdForm contient des cookies provenant de la régie Adform.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', + adform: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur AdForm contient des cookies provenant des régies Amnet, Seedtag, Yahoo, Snapchhat, Meta, Tiktok.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', alertBig: 'vous acceptez l‘utilisation de services tiers pouvant installer des cookies', alertBigClick: 'En poursuivant votre navigation,', alertBigPrivacy: 'Ce site utilise des cookies et vous donne le contrôle sur ceux que vous souhaitez activer', - // FIXME (GAFI 08-10-2024): Renomme juste la catégorie Ads avec les infos des campagnes ... ads: { details: 'Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise.', title: 'Campagnes d’informations gouvernementales', @@ -74,15 +73,6 @@ tarteaucitron.lang = { useCookieCurrent: 'Ce service a déposé', useNoCookie: 'Ce service n‘a déposé aucun cookie.', youtube: '

Finalité : Les services de vidéo permettent d’enrichir le site de contenu multimédia et augmentent sa visibilité. Ces traceurs sont mis en œuvre par Google.

Conséquences en cas de refus : En cas de refus, vous ne pouvez pas visualiser les vidéos sur le site.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - adsrvr: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Adsrvr est utilisé par la régie Amnet.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - xandr: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Xandr est utilisé par la régie Amnet.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - 'amnet-outbrain': '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Outbrain DSP est utilisé par la régie Amnet.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - seedtag: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Googletagmanager est utilisé par la régie Seedtag.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - floodlight: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Googletagmanager est utilisé par la régie Floodlight.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - azerion: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Azerion est utilisé par la régie Azerion.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - tiktok: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Tiktok est utilisé par la régie Tiktok.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - 'snapchat-custom': '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Snapchat est utilisé par la régie Snapchat.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', - meta: '

Finalité : Les campagnes d’informations gouvernementales permettent le partage d’informations utiles diffusées dans le cadre de grandes campagnes d’information, ou en cas de crise. Dans le détail : le traceur Facebook est utilisé par la régie Meta.

Conséquences en cas de refus : En cas de refus, vos visites sur les pages concernés ne sont pas comptabilisés dans les statistiques de suivi de campagne.

Consentement : Oui nécessaire

Durée de conservation : 13 mois

', video: { details: 'Les services de partage de vidéo permettent d‘enrichir le site de contenu multimédia et augmentent sa visibilité.', title: 'Vidéos', diff --git a/public/scripts/tarteaucitron/tarteaucitron.services.js b/public/scripts/tarteaucitron/tarteaucitron.services.js index 423ac92fbb..833885cb5d 100644 --- a/public/scripts/tarteaucitron/tarteaucitron.services.js +++ b/public/scripts/tarteaucitron/tarteaucitron.services.js @@ -1257,10 +1257,10 @@ tarteaucitron.services.xandr = { }); }, key: 'xandr', - name: 'Amnet - Xandr', + name: 'Xandr (Universal)', needConsent: true, type: 'ads', - uri: 'https://support.google.com/displayvideo/topic/3528231?hl=en&ref_topic=9059505&sjid=9933903973918710720-EU', + uri: 'https://www.xandr.com/privacy/cookie-policy/', }; // xandr segment @@ -5984,28 +5984,11 @@ tarteaucitron.services.outbrain = { cookies: [], js: function () { 'use strict'; - if (tarteaucitron.user.zemTagId == null) { - return; - } - if (window.zemApi) { - return; - } - var api = window.zemApi = function() { - api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments); - }; - api.version = '1.0'; - api.loaded = true; - api.marketerId = [tarteaucitron.user.zemTagId]; - document.addEventListener('navigate', () => { - api.marketerId = [] - }) - api.queue = []; - tarteaucitron.addScript('//js-tag.zemanta.com/zcpt.js', undefined,function() { - window.zemApi('track', 'PAGE_VIEW'); - }, undefined, 'defer', 'true'); + + tarteaucitron.addScript('https://widgets.outbrain.com/outbrain.js'); }, key: 'outbrain', - name: 'Amnet - Outbrain', + name: 'Outbrain', needConsent: true, type: 'ads', uri: 'https://www.outbrain.com/fr/advertisers/guidelines/', @@ -6349,7 +6332,7 @@ tarteaucitron.services.weborama = { // tiktok tarteaucitron.services.tiktok = { - cookies: ['_tt_enable_cookie', '_ttp'], + cookies: [], js: function () { 'use strict'; @@ -6366,8 +6349,8 @@ tarteaucitron.services.tiktok = { key: 'tiktok', name: 'Tiktok', needConsent: true, - type: 'ads', - uri: 'https://www.tiktok.com/legal/page/global/cookie-policy/fr', + type: 'analytic', + uri: 'https://www.tiktok.com/legal/tiktok-website-cookies-policy', }; // Klaviyo diff --git a/src/client/dependencies.container.ts b/src/client/dependencies.container.ts index 2230ca1dd7..938efd21e8 100644 --- a/src/client/dependencies.container.ts +++ b/src/client/dependencies.container.ts @@ -31,16 +31,8 @@ import { BffLocalisationService } from '~/client/services/localisation/bff.local import { LocalisationService } from '~/client/services/localisation/localisation.service'; import { LoggerService } from '~/client/services/logger.service'; import { AdformMarketingService } from '~/client/services/marketing/adform/adform.marketing.service'; -import AmnetMarketingService from '~/client/services/marketing/amnet/amnet.marketing.service'; -import AzerionMarketingService from '~/client/services/marketing/azerion/azerion.marketing.service'; -import FloodlightMarketingService from '~/client/services/marketing/floodlight/floodlight.marketing.service'; -import GoogleTagManagerService from '~/client/services/marketing/googleTagManager.service'; import { MarketingService } from '~/client/services/marketing/marketing.service'; -import MetaMarketingService from '~/client/services/marketing/meta/meta.marketing.service'; import { NullMarketingService } from '~/client/services/marketing/null/null.marketing.service'; -import SeedtagMarketingService from '~/client/services/marketing/seedtag/seedtag.marketing.service'; -import SnapchatMarketingService from '~/client/services/marketing/snapchat/snapchat.marketing.service'; -import TiktokMarketingService from '~/client/services/marketing/TikTok/tiktok.marketing.service'; import { BffAlternanceMetierService } from '~/client/services/metiers/bff.alternance.metier.service'; import { MetierService } from '~/client/services/metiers/metier.service'; import { BffMissionEngagementService } from '~/client/services/missionEngagement/bff.missionEngagement.service'; @@ -98,13 +90,6 @@ export type Dependencies = { stageDeposerOffreEtape3PersistenceService: StageDeposerOffreEtape3PersistenceService localStorageService: StorageService sessionStorageService: StorageService - seedtagService: MarketingService - tiktokService: MarketingService - azerionService: MarketingService - amnetService: MarketingService - metaService: MarketingService - floodlightService: MarketingService - snapchatService: MarketingService } class DependencyInitException extends Error { @@ -132,14 +117,6 @@ export default function dependenciesContainer(sessionId?: string): Dependencies const emploiEuropeService = new BffEmploiEuropeService(httpClientService); const stageService = new BffStageService(httpClientService); const cookiesService = getCookieService(); - const googleTagManagerService = new GoogleTagManagerService(); - const seedtagService = new SeedtagMarketingService(cookiesService, googleTagManagerService); - const floodlightService = new FloodlightMarketingService(cookiesService, googleTagManagerService); - const tiktokService = new TiktokMarketingService(cookiesService); - const snapchatService = new SnapchatMarketingService(cookiesService); - const azerionService = new AzerionMarketingService(cookiesService); - const amnetService = new AmnetMarketingService(cookiesService); - const metaService = new MetaMarketingService(cookiesService); const marketingService = process.env.NEXT_PUBLIC_CAMPAGNE_ADFORM_FEATURE === '1' ? new AdformMarketingService(cookiesService) : new NullMarketingService(); @@ -188,32 +165,25 @@ export default function dependenciesContainer(sessionId?: string): Dependencies getStorageServiceWithFallback(localStorageService, new NullStorageService())); return { - amnetService, analyticsService, - azerionService, cookiesService, dateService, demandeDeContactService, emploiEuropeService, - floodlightService, formationInitialeService, localStorageService, localisationService, marketingService, - metaService, metierLbaService, metierStage3eEt2deService, missionEngagementService, rechercheClientService, - seedtagService, sessionStorageService, - snapchatService, stage3eEt2deService, stageDeposerOffreEtape1PersistenceService, stageDeposerOffreEtape2PersistenceService, stageDeposerOffreEtape3PersistenceService, stageService, - tiktokService, youtubeService, établissementAccompagnementService, }; diff --git a/src/client/services/cookies/cookies.service.fixture.ts b/src/client/services/cookies/cookies.service.fixture.ts index 0b07edac85..777b5d7f42 100644 --- a/src/client/services/cookies/cookies.service.fixture.ts +++ b/src/client/services/cookies/cookies.service.fixture.ts @@ -7,7 +7,6 @@ export function aCookiesService(override?: Partial): CookiesServ allowService: jest.fn(), isServiceAllowed: jest.fn(() => true), openPanel: jest.fn(), - triggerJobs: jest.fn(), ...override, }; } diff --git a/src/client/services/cookies/cookies.service.ts b/src/client/services/cookies/cookies.service.ts index 57c260cac8..a45adcc696 100644 --- a/src/client/services/cookies/cookies.service.ts +++ b/src/client/services/cookies/cookies.service.ts @@ -13,6 +13,4 @@ export interface CookiesService { allowService(nom: string): void; openPanel(): void; - - triggerJobs(): void; } diff --git a/src/client/services/cookies/null/null.cookies.service.ts b/src/client/services/cookies/null/null.cookies.service.ts index 2321eb1ea6..cf6c849b24 100644 --- a/src/client/services/cookies/null/null.cookies.service.ts +++ b/src/client/services/cookies/null/null.cookies.service.ts @@ -20,8 +20,4 @@ export class NullCookiesService implements CookiesService { openPanel(): void { return; } - - triggerJobs(): void { - return; - } } diff --git a/src/client/services/cookies/tarteaucitron/tarteAuCitron.cookies.service.ts b/src/client/services/cookies/tarteaucitron/tarteAuCitron.cookies.service.ts index 5e8cf545a8..8bdaf17a84 100644 --- a/src/client/services/cookies/tarteaucitron/tarteAuCitron.cookies.service.ts +++ b/src/client/services/cookies/tarteaucitron/tarteAuCitron.cookies.service.ts @@ -17,7 +17,6 @@ export type TarteAuCitron = { openPanel: () => void, } state: Record; - triggerJobsAfterAjaxCall: () => void; } export class TarteAuCitronCookiesService implements CookiesService { @@ -59,10 +58,7 @@ export class TarteAuCitronCookiesService implements CookiesService { addService(nom: string, config?: TarteAuCitron.ServiceConfig): void { if (config != undefined) { - this.tarteaucitron.services[nom] = { - ...(this.tarteaucitron.services[nom] ?? {}), - ...config, - }; + this.tarteaucitron.services[nom] = config; } this.tarteaucitron.job?.push(nom); } @@ -88,8 +84,4 @@ export class TarteAuCitronCookiesService implements CookiesService { openPanel(): void { return this.tarteaucitron.userInterface.openPanel(); } - - triggerJobs(): void { - return this.tarteaucitron.triggerJobsAfterAjaxCall(); - } } diff --git a/src/client/services/cookies/tarteaucitron/tarteAuCitron.fixture.ts b/src/client/services/cookies/tarteaucitron/tarteAuCitron.fixture.ts index 16a6c27108..505003f421 100644 --- a/src/client/services/cookies/tarteaucitron/tarteAuCitron.fixture.ts +++ b/src/client/services/cookies/tarteaucitron/tarteAuCitron.fixture.ts @@ -6,7 +6,6 @@ export function aTarteAuCitron(override?: Partial): TarteAuCitron job: undefined, services: {}, state: {}, - triggerJobsAfterAjaxCall: jest.fn(), user: {}, userInterface: { openPanel: jest.fn(), diff --git a/src/client/services/marketing/TikTok/tiktok.marketing.service.ts b/src/client/services/marketing/TikTok/tiktok.marketing.service.ts deleted file mode 100644 index dd6839c60b..0000000000 --- a/src/client/services/marketing/TikTok/tiktok.marketing.service.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CookiesService } from '../../cookies/cookies.service'; -import { MarketingService } from '../marketing.service'; - -export default class TiktokMarketingService implements MarketingService { - private static SERVICE_NAME = 'tiktok'; - private static TIKTOK_ID = 'C90RBUPHLSUPN04HH210'; - - private readonly cookiesService: CookiesService; - - constructor(cookiesService: CookiesService) { - this.cookiesService = cookiesService; - this.cookiesService.addService(TiktokMarketingService.SERVICE_NAME); - } - - trackPage(pagename: string): void { - if (pagename === 'off') { - this.cookiesService.addUser('tiktokId', undefined); - } else { - this.cookiesService.addUser('tiktokId', TiktokMarketingService.TIKTOK_ID); - } - } -} diff --git a/src/client/services/marketing/amnet/amnet.marketing.service.ts b/src/client/services/marketing/amnet/amnet.marketing.service.ts deleted file mode 100644 index 9be1b68d1e..0000000000 --- a/src/client/services/marketing/amnet/amnet.marketing.service.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* eslint-disable */ -// @ts-nocheck - -import { CookiesService } from '../../cookies/cookies.service'; -import { MarketingService } from '../marketing.service'; - -export default class AmnetMarketingService implements MarketingService { - private cookieService: CookiesService; - private static readonly xandrId = '0cfe1200-c50d-4658-a08d-8967a78bfaeb'; - private static readonly zemTagId = '118693'; - - private addXandr() { - this.cookieService.addService('xandr'); - } - private addOutbrain() { - const config = { - cookies: ['sync', 'zpb', 'zpbid', 'zuid'], // from https://www.zemanta.com/cookies/ - js: function () { - 'use strict'; - if (!window.tarteaucitron.user.xandrId) return; - const pixel = document.createElement('img'); - pixel.src = `https://p1.zemanta.com/v2/p/ns/${AmnetMarketingService.zemTagId}/PAGE_VIEW/`; - pixel.width = 1; - pixel.height = 1; - pixel.alt = ''; - pixel.referrerPolicy = 'no-referrer-when-downgrade'; - pixel.setAttribute('style', 'position: absolute; transform: translateX(-101%);'); - document.body.prepend(pixel); - document.addEventListener('navigate', () => { - pixel.remove(); - }); - }, - key: 'amnet-outbrain', - name: 'Amnet - Outbrain', - needConsent: true, - type: 'ads', - uri: 'https://support.google.com/displayvideo/topic/3528231?hl=en&ref_topic=9059505&sjid=9933903973918710720-EU', - }; - this.cookieService.addService('amnet-outbrain', config); - } - private addAdsrvr() { - const config = { - cookies: ['TDCPM', 'TDID'], - js: function () { - 'use strict'; - if (!window.tarteaucitron.user.xandrId) return; - window.tarteaucitron.addScript('https://js.adsrvr.org/up_loader.1.1.0.js', '', function () { - ttd_dom_ready(function () { - if (typeof TTDUniversalPixelApi === 'function') { - const universalPixelApi = new TTDUniversalPixelApi(); - universalPixelApi.init('qj8wadw', ['muuud1z'], 'https://insight.adsrvr.org/track/up'); - } - }); - }); - }, - key: 'adsrvr', - name: 'Amnet - Adsrvr', - needConsent: true, - type: 'ads', - uri: 'https://support.google.com/displayvideo/topic/3528231?hl=en&ref_topic=9059505&sjid=9933903973918710720-EU', - }; - - this.cookieService.addService('adsrvr', config); - } - - constructor(cookieService: CookiesService) { - this.cookieService = cookieService; - this.addAdsrvr(); - this.addOutbrain(); - this.addXandr(); - } - - trackPage(pagename: string): void { - if (pagename === 'off') { - this.cookieService.addUser('xandrId', undefined); - } else { - this.cookieService.addUser('xandrId', AmnetMarketingService.xandrId); - } - } -} diff --git a/src/client/services/marketing/azerion/azerion.marketing.service.ts b/src/client/services/marketing/azerion/azerion.marketing.service.ts deleted file mode 100644 index 41fa0c566f..0000000000 --- a/src/client/services/marketing/azerion/azerion.marketing.service.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { CookiesService } from '../../cookies/cookies.service'; -import { MarketingService } from '../marketing.service'; - -export default class AzerionMarketingService implements MarketingService { - private cookieService: CookiesService; - constructor(cookieService: CookiesService) { - this.cookieService = cookieService; - const config = { - cookies: ['XANDR_PANID', 'uuid2'], - js: function () { - 'use strict'; - if (location.pathname === '/apprentissage-entreprises') { - const pixel = document.createElement('img'); - pixel.src = 'https://secure.adnxs.com/px?id=1824703&t=2'; - pixel.width = 1; - pixel.height = 1; - pixel.alt = ''; - pixel.setAttribute('style', 'position: absolute; transform: translateX(-101%);'); - document.body.prepend(pixel); - document.addEventListener('navigate', () => { - pixel.remove(); - }); - } - }, - key: 'azerion', - name: 'Azerion', - needConsent: true, - type: 'ads', - uri: 'https://www.azerion.com/azerion-global-corporate-cookie-notice/', - }; - this.cookieService.addService('azerion', config); - } - trackPage(): void { - } -} diff --git a/src/client/services/marketing/floodlight/floodlight.marketing.service.ts b/src/client/services/marketing/floodlight/floodlight.marketing.service.ts deleted file mode 100644 index 209483bd03..0000000000 --- a/src/client/services/marketing/floodlight/floodlight.marketing.service.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { CookiesService } from '~/client/services/cookies/cookies.service'; -import { TarteAuCitron } from '~/client/services/cookies/tarteaucitron/tarteAuCitron.cookies.service'; - -import GoogleTagManagerService from '../googleTagManager.service'; -import { MarketingService } from '../marketing.service'; - -export default class FloodlightMarketingService implements MarketingService { - static readonly SERVICE_NAME = 'floodlight'; - private ready = false; - - constructor(private readonly cookiesService: CookiesService, private readonly gtagService: GoogleTagManagerService) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const service = this; - // eslint-disable-next-line - type ConfigObject = any; - const config: TarteAuCitron.ServiceConfig = { - cookies: this.gtagService.cookies(), - js: function () { - 'use strict'; - gtagService.mount().then(() => { - // eslint-disable-next-line - // @ts-ignore - window.gtag('config', GoogleTagManagerService.ADS_ID); - service.ready = true; - document.dispatchEvent(new CustomEvent('floodlight_ready')); - }); - }, - key: FloodlightMarketingService.SERVICE_NAME, - name: 'Floodlight', - needConsent: true, - type: 'ads', - uri: 'https://policies.google.com/technologies/cookies', - }; - this.cookiesService.addService(FloodlightMarketingService.SERVICE_NAME, config); - } - - // eslint-disable-next-line - trackPage(pagename: string): void { - const cookiesService = this.cookiesService; - function sendAnalytics() { - if (!cookiesService.isServiceAllowed(FloodlightMarketingService.SERVICE_NAME)) { return; } - - // eslint-disable-next-line - // @ts-ignore - window.gtag('event', 'conversion', { - allow_custom_scripts: true, - send_to: 'DC-3048978/appre0/24appren+unique', - u1: '[URL]', - }); - } - if (this.ready) { - sendAnalytics(); - } else { - document.addEventListener('floodlight_ready', sendAnalytics, { once: true }); - } - } -} diff --git a/src/client/services/marketing/googleTagManager.service.ts b/src/client/services/marketing/googleTagManager.service.ts deleted file mode 100644 index 263408fd01..0000000000 --- a/src/client/services/marketing/googleTagManager.service.ts +++ /dev/null @@ -1,44 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck - -export default class GoogleTagManagerService { - static readonly ADS_ID = 'DC-10089018'; - private status: 'unmounted' | 'mounting' | 'mounted' = 'unmounted'; - private pending = []; - - async mount() { - if (this.status === 'mounted') { return; } - // eslint-disable-next-line @typescript-eslint/no-this-alias - const service = this; - const result = new Promise((resolve) => {this.pending.push(resolve);}); - if (this.status === 'mounting') { return result; } - - this.status = 'mounting'; - window.dataLayer = window.dataLayer || []; - window.tarteaucitron.addScript('https://www.googletagmanager.com/gtag/js?id=' + GoogleTagManagerService.ADS_ID, '', function () { - window.gtag = function gtag() { - // eslint-disable-next-line prefer-rest-params - window.dataLayer.push(arguments); - }; - window.gtag('js', new Date()); - - if (typeof window.tarteaucitron.user.googleadsMore === 'function') { - window.tarteaucitron.user.googleadsMore(); - } - service.pending.forEach((resolve) => resolve()); - service.status = 'mounted'; - }); - return result; - } - - cookies() { - const googleIdentifier = GoogleTagManagerService.ADS_ID; - let tagUaCookie = '_gat_gtag_' + googleIdentifier, - tagGCookie = '_ga_' + googleIdentifier; - - tagUaCookie = tagUaCookie.replace(/-/g, '_'); - tagGCookie = tagGCookie.replace(/G-/g, ''); - - return ['_ga', '_gat', '_gid', '__utma', '__utmb', '__utmc', '__utmt', '__utmz', tagUaCookie, tagGCookie, '_gcl_au']; - } -} diff --git a/src/client/services/marketing/meta/meta.marketing.service.ts b/src/client/services/marketing/meta/meta.marketing.service.ts deleted file mode 100644 index ea15414820..0000000000 --- a/src/client/services/marketing/meta/meta.marketing.service.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* eslint-disable */ -// @ts-nocheck - -import { CookiesService } from '../../cookies/cookies.service'; -import { MarketingService } from '../marketing.service'; - -export default class MetaMarketingService implements MarketingService { - private cookieService: CookiesService; - private static readonly metaId = '523325854541523'; - - constructor(cookieService: CookiesService) { - this.cookieService = cookieService; - const config = { - - cookies: ['xs', 'sb', 'fr', 'datr', 'dpr', 'c_user', '_fbp'], - js: function () { - - if (location.pathname === '/choisir-apprentissage') { - const pixel = document.createElement('img'); - pixel.src = `https://www.facebook.com/tr?id=${MetaMarketingService.metaId}&ev=PageView&noscript=1`; - pixel.width = 1; - pixel.height = 1; - pixel.alt = ''; - pixel.setAttribute('style', 'position: absolute; transform: translateX(-101%);'); - document.body.prepend(pixel); - document.addEventListener('navigate', () => { - pixel.remove(); - }); - } - }, - key: 'meta', - name: 'Meta', - needConsent: true, - type: 'ads', - uri: 'https://www.facebook.com/privacy/policies/cookies/', - }; - - this.cookieService.addService('meta', config); - } - - trackPage(pagename: string): void { - } -} diff --git a/src/client/services/marketing/seedtag/seedtag.marketing.service.ts b/src/client/services/marketing/seedtag/seedtag.marketing.service.ts deleted file mode 100644 index b3a5941463..0000000000 --- a/src/client/services/marketing/seedtag/seedtag.marketing.service.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { CookiesService } from '~/client/services/cookies/cookies.service'; -import GoogleTagManagerService from '~/client/services/marketing/googleTagManager.service'; - -import { TarteAuCitron } from '../../cookies/tarteaucitron/tarteAuCitron.cookies.service'; -import { MarketingService } from '../marketing.service'; - -export default class SeedtagMarketingService implements MarketingService { - static readonly SEEDTAG_SERVICE_NAME = 'seedtag'; - private ready = false; - - constructor(private readonly cookiesService: CookiesService, private readonly gtagService: GoogleTagManagerService) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const service = this; - // eslint-disable-next-line - type ConfigObject = any; - const config: TarteAuCitron.ServiceConfig = { - cookies: this.gtagService.cookies(), - js: function () { - 'use strict'; - const promise = gtagService.mount(); - promise.then(() => { - // eslint-disable-next-line - // @ts-ignore - window.gtag('config', GoogleTagManagerService.ADS_ID); - service.ready = true; - document.dispatchEvent(new CustomEvent('seedtag_ready')); - }); - }, - key: SeedtagMarketingService.SEEDTAG_SERVICE_NAME, - name: 'Seedtag', - needConsent: true, - type: 'ads', - uri: 'https://www.seedtag.com/fr/cookies-policy/', - }; - this.cookiesService.addService(SeedtagMarketingService.SEEDTAG_SERVICE_NAME, config); - } - - // eslint-disable-next-line - trackPage(pagename: string): void { - const cookiesService = this.cookiesService; - function sendAnalytics() { - if (!cookiesService.isServiceAllowed(SeedtagMarketingService.SEEDTAG_SERVICE_NAME)) { return; } - // eslint-disable-next-line - // @ts-ignore - window.gtag('event', 'conversion', { - allow_custom_scripts: true, - send_to: `${GoogleTagManagerService.ADS_ID}/invmedia/fr_ga005+standard`, - u2: '[URL_Info]', - }); - } - if (!this.cookiesService.isServiceAllowed(SeedtagMarketingService.SEEDTAG_SERVICE_NAME)) { return; } - - if (this.ready) { - sendAnalytics(); - } else { - document.addEventListener('seedtag_ready', sendAnalytics, { once: true }); - } - } -} diff --git a/src/client/services/marketing/snapchat/snapchat.marketing.service.ts b/src/client/services/marketing/snapchat/snapchat.marketing.service.ts deleted file mode 100644 index 76db72c33c..0000000000 --- a/src/client/services/marketing/snapchat/snapchat.marketing.service.ts +++ /dev/null @@ -1,71 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck -import { CookiesService } from '~/client/services/cookies/cookies.service'; -import { TarteAuCitron } from '~/client/services/cookies/tarteaucitron/tarteAuCitron.cookies.service'; - -import { MarketingService } from '../marketing.service'; - -export default class SnapchatMarketingService implements MarketingService { - private static SERVICE_NAME = 'snapchat-custom'; - private ready = false; - - constructor(private readonly cookiesService: CookiesService) { - this.cookiesService.addUser('snapchatId', 'd48efe29-caa9-4f0c-86e8-353fc35a8b3f'); - // eslint-disable-next-line @typescript-eslint/no-this-alias - const service = this; - // eslint-disable-next-line - type ConfigObject = any; - const config: TarteAuCitron.ServiceConfig = { - cookies: [], - js: function () { - 'use strict'; - - // eslint-disable-next-line no-undef - if (tarteaucitron.user.snapchatId === undefined) { - return; - } - - const a = window.snaptr = function () { - // eslint-disable-next-line prefer-rest-params, prefer-spread - a.handleRequest ? a.handleRequest.apply(a, arguments) : a.queue.push(arguments); - }; - a.queue = []; - // eslint-disable-next-line no-undef - window.snaptr('init', tarteaucitron.user.snapchatId, {}); - - // eslint-disable-next-line no-undef - tarteaucitron.addScript('https://sc-static.net/scevent.min.js', undefined, () => { - service.ready = true; - document.dispatchEvent(new CustomEvent('snapchat_ready')); - }); - - // eslint-disable-next-line no-undef - if (typeof tarteaucitron.user.snapchatMore === 'function') { - // eslint-disable-next-line no-undef - tarteaucitron.user.snapchatMore(); - } - }, - key: SnapchatMarketingService.SERVICE_NAME, - name: 'Snapchat', - needConsent: true, - type: 'analytic', - uri: 'https://snap.com/fr-FR/privacy/privacy-policy', - }; - this.cookiesService.addService(SnapchatMarketingService.SERVICE_NAME, config); - } - - // eslint-disable-next-line - trackPage(pagename: string): void { - const cookiesService = this.cookiesService; - function sendAnalytics() { - if (!cookiesService.isServiceAllowed(SnapchatMarketingService.SERVICE_NAME)) { return; } - - window.snaptr('track', 'PAGE_VIEW'); - } - if (this.ready) { - sendAnalytics(); - } else { - document.addEventListener('snapchat_ready', sendAnalytics); - } - } -} diff --git a/src/pages/_app.page.tsx b/src/pages/_app.page.tsx index 42a9a11b84..2ae7d02674 100644 --- a/src/pages/_app.page.tsx +++ b/src/pages/_app.page.tsx @@ -4,7 +4,7 @@ import { NextPage } from 'next'; import { AppProps } from 'next/app'; import Head from 'next/head'; import { useRouter } from 'next/router'; -import React, { ReactElement, ReactNode, useEffect, useMemo, useRef } from 'react'; +import React, { ReactElement, ReactNode, useEffect, useMemo } from 'react'; import ErrorServer from '~/client/components/layouts/Error/ErrorServer'; import { Layout } from '~/client/components/layouts/Layout'; @@ -34,27 +34,13 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) { usePageHistory(); - // FIXME (GAFI 08-10-2024): Extraire dans un hook pour expliciter useEffect(() => { - // FIXME (GAFI 08-10-2024): apparement il y a un truc qui s'appelle router.scrollToHash(). - // Tester si ça déplace bien le focus aussi, pas juste le viewport const [/* full path */, targetId] = router.asPath.match(/^[^#]*#(.+)$/) ?? []; if (targetId) { document.getElementById(targetId)?.focus(); } }, [router.asPath, sessionId]); - - const previousPath = useRef(''); - const cookiesService = dependenciesContainerInstance.cookiesService; - useEffect(() => { - if (previousPath.current && previousPath.current !== router.asPath) { - cookiesService.triggerJobs(); - } - previousPath.current = router.asPath; - return () => { document.dispatchEvent(new Event('navigate')); }; - }, [cookiesService, router.asPath, sessionId]); - const getLayout = Component.getLayout ?? defaultLayout; return ( <> @@ -67,8 +53,6 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) { { dependenciesContainerInstance && ( - - {getLayout( pageProps.error ? diff --git a/src/pages/apprentissage-entreprises/index.page.test.tsx b/src/pages/apprentissage-entreprises/index.page.test.tsx index e358ce69be..92b088ca67 100644 --- a/src/pages/apprentissage-entreprises/index.page.test.tsx +++ b/src/pages/apprentissage-entreprises/index.page.test.tsx @@ -9,7 +9,6 @@ import { render, screen } from '@testing-library/react'; import { mockSmallScreen } from '~/client/components/window.mock'; import { DependenciesProvider } from '~/client/context/dependenciesContainer.context'; import { aManualAnalyticsService } from '~/client/services/analytics/analytics.service.fixture'; -import { aMarketingService } from '~/client/services/marketing/marketing.service.fixture'; import { aVideoService } from '~/client/services/video/video.service.fixture'; import { aVideoCampagneApprentissage } from '~/server/campagne-apprentissage/domain/videoCampagneApprentissage.fixture'; import { createFailure, createSuccess } from '~/server/errors/either'; @@ -46,18 +45,13 @@ describe('', () => { const { container } = render( ); expect(container.outerHTML).toHTMLValidate(); }); - it('n’a pas de défaut d‘accessibilité', async () => { mockSmallScreen(); const videos = [ @@ -71,11 +65,7 @@ describe('', () => { const { container } = render( ); ); diff --git a/src/pages/apprentissage-entreprises/index.page.tsx b/src/pages/apprentissage-entreprises/index.page.tsx index 6330b22c7a..d1107104a8 100644 --- a/src/pages/apprentissage-entreprises/index.page.tsx +++ b/src/pages/apprentissage-entreprises/index.page.tsx @@ -1,13 +1,10 @@ import { GetServerSidePropsResult } from 'next'; -import { useEffect } from 'react'; import { CampagneApprentissageEntreprises, } from '~/client/components/features/CampagneApprentissage/CampagneApprentissageEntreprises/CampagneApprentissageEntreprises'; import { Head } from '~/client/components/head/Head'; -import { useDependency } from '~/client/context/dependenciesContainer.context'; import useAnalytics from '~/client/hooks/useAnalytics'; -import { MarketingService } from '~/client/services/marketing/marketing.service'; import styles from '~/pages/apprentissage/index.module.scss'; import analyticsPageConfig from '~/pages/apprentissage-entreprises/index.analytics'; import { VideoCampagneApprentissage } from '~/server/campagne-apprentissage/domain/videoCampagneApprentissage'; @@ -20,21 +17,6 @@ type ApprentissageEntreprisesPageProps = { export default function ApprentissageEntreprises ({ videos }: ApprentissageEntreprisesPageProps) { useAnalytics(analyticsPageConfig); - const adformService: MarketingService = useDependency('marketingService'); - adformService.trackPage('2024-09-1jeune1solution.gouv.fr-PageAccueil-PageAccueil'); - useEffect(() => { - // @ts-expect-error - return () => adformService.trackPage(undefined); - // eslint-disable-next-line - }, []); - const seedtagService: MarketingService = useDependency('seedtagService'); - useEffect(() => { - seedtagService.trackPage(''); - // eslint-disable-next-line - }, []); - - const azerionService: MarketingService = useDependency('azerionService'); - azerionService.trackPage(''); return ( <> diff --git a/src/pages/choisir-apprentissage/index.page.test.tsx b/src/pages/choisir-apprentissage/index.page.test.tsx index a9287a1e29..fc76d1df37 100644 --- a/src/pages/choisir-apprentissage/index.page.test.tsx +++ b/src/pages/choisir-apprentissage/index.page.test.tsx @@ -12,7 +12,6 @@ import { mockSmallScreen } from '~/client/components/window.mock'; import { DependenciesProvider } from '~/client/context/dependenciesContainer.context'; import { ManualAnalyticsService } from '~/client/services/analytics/analytics.service'; import { aManualAnalyticsService } from '~/client/services/analytics/analytics.service.fixture'; -import { aMarketingService } from '~/client/services/marketing/marketing.service.fixture'; import { aVideoService } from '~/client/services/video/video.service.fixture'; import { aVideoCampagneApprentissage } from '~/server/campagne-apprentissage/domain/videoCampagneApprentissage.fixture'; import { createFailure, createSuccess } from '~/server/errors/either'; @@ -52,11 +51,9 @@ describe('Page Apprentissage Jeunes', () => { const result = await getServerSideProps(); - expect(result).toMatchObject({ - props: { - videos: [], - }, - }); + expect(result).toMatchObject({ props: { + videos: [], + } }); }); }); @@ -65,7 +62,7 @@ describe('Page Apprentissage Jeunes', () => { const videos = [ aVideoCampagneApprentissage(), aVideoCampagneApprentissage({ - titre: 'Qu\'est-ce que le Contrat d\'Engagement Jeune CEJ ?', + titre: "Qu'est-ce que le Contrat d'Engagement Jeune CEJ ?", transcription: '[transcription]', videoId: '7zD4PCOiUvw', }), @@ -74,11 +71,9 @@ describe('Page Apprentissage Jeunes', () => { const result = await getServerSideProps(); - expect(result).toMatchObject({ - props: { - videos: videos, - }, - }); + expect(result).toMatchObject({ props: { + videos: videos, + } }); }); }); }); @@ -89,24 +84,16 @@ describe('Page Apprentissage Jeunes', () => { const videos = [ aVideoCampagneApprentissage(), aVideoCampagneApprentissage({ - titre: 'Qu\'est-ce que le Contrat d\'Engagement Jeune CEJ ?', + titre: "Qu'est-ce que le Contrat d'Engagement Jeune CEJ ?", transcription: '[transcription]', videoId: '7zD4PCOiUvw', }), ]; const { container } = render( - + - ); + ); await screen.findByText('Avec l’apprentissage, vous apprenez directement'); @@ -118,7 +105,7 @@ describe('Page Apprentissage Jeunes', () => { const videos = [ aVideoCampagneApprentissage(), aVideoCampagneApprentissage({ - titre: 'Qu\'est-ce que le Contrat d\'Engagement Jeune CEJ ?', + titre: "Qu'est-ce que le Contrat d'Engagement Jeune CEJ ?", transcription: '[transcription]', videoId: '7zD4PCOiUvw', }), @@ -126,12 +113,6 @@ describe('Page Apprentissage Jeunes', () => { const { container } = render( @@ -144,16 +125,9 @@ describe('Page Apprentissage Jeunes', () => { }); it('affiche une section principale avec ancre pour le lien d‘évitement', () => { - // WHEN + // WHEN render( - + , ); @@ -166,36 +140,19 @@ describe('Page Apprentissage Jeunes', () => { it('affiche la bonne page', () => { render( - + , ); - const titrePage = screen.getByRole('heading', { - level: 1, - name: /Avec l’apprentissage, vous apprenez directement sur le terrain et vous êtes payés !/i, - }); + const titrePage = screen.getByRole('heading', { level: 1, name: /Avec l’apprentissage, vous apprenez directement sur le terrain et vous êtes payés !/i }); expect(titrePage).toBeVisible(); }); it('affiche le titre du document', () => { render( - + , ); diff --git a/src/pages/choisir-apprentissage/index.page.tsx b/src/pages/choisir-apprentissage/index.page.tsx index dd840d35a6..d480092cdf 100644 --- a/src/pages/choisir-apprentissage/index.page.tsx +++ b/src/pages/choisir-apprentissage/index.page.tsx @@ -1,13 +1,10 @@ import { GetServerSidePropsResult } from 'next'; -import { useEffect } from 'react'; import { CampagneApprentissageJeunes, } from '~/client/components/features/CampagneApprentissage/CampagneApprentissageJeunes/CampagneApprentissageJeunes'; import { Head } from '~/client/components/head/Head'; -import { useDependency } from '~/client/context/dependenciesContainer.context'; import useAnalytics from '~/client/hooks/useAnalytics'; -import { MarketingService } from '~/client/services/marketing/marketing.service'; import styles from '~/pages/apprentissage/index.module.scss'; import { VideoCampagneApprentissage } from '~/server/campagne-apprentissage/domain/videoCampagneApprentissage'; import { isFailure } from '~/server/errors/either'; @@ -22,42 +19,6 @@ type ApprentissageJeunesPageProps = { export default function ApprentissageJeunes(props: ApprentissageJeunesPageProps) { useAnalytics(analyticsPageConfig); - const adformService: MarketingService = useDependency('marketingService'); - adformService.trackPage('2024-10-1jeune1solution.gouv.fr-PageAccueil-PageAccueil'); - useEffect(() => { - // @ts-expect-error - return () => adformService.trackPage(undefined); - // eslint-disable-next-line - }, []); - const snapchatService: MarketingService = useDependency('snapchatService'); - useEffect(() => { - snapchatService.trackPage(''); - // eslint-disable-next-line - }, []); - const amnetService: MarketingService = useDependency('amnetService'); - useEffect(() => { - amnetService.trackPage(''); - // eslint-disable-next-line - }, []); - useEffect(() => { - return () => { - amnetService.trackPage('off'); - }; - // eslint-disable-next-line - }, []); - const metaService: MarketingService = useDependency('metaService'); - metaService.trackPage(''); - useEffect(() => { - return () => { - metaService.trackPage('off'); - }; - // eslint-disable-next-line - }, []); - const floodlightService = useDependency('floodlightService'); - useEffect(() => { - floodlightService.trackPage(''); - // eslint-disable-next-line - }, []); return ( <> diff --git a/src/pages/formations/apprentissage/index.page.test.tsx b/src/pages/formations/apprentissage/index.page.test.tsx index e189a06113..a7912e33e0 100644 --- a/src/pages/formations/apprentissage/index.page.test.tsx +++ b/src/pages/formations/apprentissage/index.page.test.tsx @@ -12,7 +12,6 @@ import { DependenciesProvider } from '~/client/context/dependenciesContainer.con import { aCommuneQuery } from '~/client/hooks/useCommuneQuery'; import { aManualAnalyticsService } from '~/client/services/analytics/analytics.service.fixture'; import { aLocalisationService } from '~/client/services/localisation/localisation.service.fixture'; -import { aMarketingService } from '~/client/services/marketing/marketing.service.fixture'; import { aMetierService } from '~/client/services/metiers/metier.fixture'; import FormationAlternancePage, { getServerSideProps } from '~/pages/formations/apprentissage/index.page'; import { aGetServerSidePropsContext } from '~/server/aGetServerSidePropsContext.fixture'; @@ -82,7 +81,6 @@ describe('Page Formations en Apprentissage', () => { , @@ -108,7 +106,6 @@ describe('Page Formations en Apprentissage', () => { , diff --git a/src/pages/formations/apprentissage/index.page.tsx b/src/pages/formations/apprentissage/index.page.tsx index c41586c04b..63e918fe99 100644 --- a/src/pages/formations/apprentissage/index.page.tsx +++ b/src/pages/formations/apprentissage/index.page.tsx @@ -1,13 +1,11 @@ import Joi from 'joi'; import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next'; import { ParsedUrlQuery } from 'querystring'; -import React, { useEffect } from 'react'; +import React from 'react'; import RechercherFormationAlternance from '~/client/components/features/FormationAlternance/Rechercher/RechercherFormationAlternance'; -import { useDependency } from '~/client/context/dependenciesContainer.context'; import useAnalytics from '~/client/hooks/useAnalytics'; -import { MarketingService } from '~/client/services/marketing/marketing.service'; import empty from '~/client/utils/empty'; import { transformQueryToArray } from '~/pages/api/utils/joi/joi.util'; import { queryToArray } from '~/pages/api/utils/queryToArray.util'; @@ -38,11 +36,6 @@ type RechercherFormationApprentissagePageProps = { export default function FormationAlternancePage(props: RechercherFormationApprentissagePageProps) { useAnalytics(analytics); - const floodlightService: MarketingService = useDependency('floodlightService'); - useEffect(() => { - floodlightService.trackPage(''); - // eslint-disable-next-line - }, []); return (