2024-12-10

corvée(db) exporte la BDD de production
This commit is contained in:
gcch 2024-12-09 16:22:46 +01:00
commit ac0efab9b2
8 changed files with 15893 additions and 217 deletions

View file

@ -22,14 +22,13 @@ corepack_enable: true
# name: <projectname> # Name of the project, automatically provides
# http://projectname.ddev.site and https://projectname.ddev.site
# type: <projecttype> # backdrop, craftcms, django4, drupal, drupal6, drupal7, laravel, magento, magento2, php, python, shopware6, silverstripe, typo3, wordpress
# type: <projecttype> # backdrop, cakephp, craftcms, drupal, drupal6, drupal7, drupal8, drupal9, drupal10, drupal11, laravel, magento, magento2, php, shopware6, silverstripe, symfony, typo3, wordpress
# See https://ddev.readthedocs.io/en/stable/users/quickstart/ for more
# information on the different project types
# "drupal" covers recent Drupal 8+
# docroot: <relative_path> # Relative path to the directory containing index.php.
# php_version: "8.2" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4"
# php_version: "8.3" # PHP version to use, "5.6" through "8.4"
# You can explicitly specify the webimage but this
# is not recommended, as the images are often closely tied to DDEV's' behavior,
@ -57,7 +56,7 @@ corepack_enable: true
# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better,
# as leaving Xhprof enabled all the time is a big performance hit.
# webserver_type: nginx-fpm, apache-fpm, or nginx-gunicorn
# webserver_type: nginx-fpm or apache-fpm
# timezone: Europe/Berlin
# If timezone is unset, DDEV will attempt to derive it from the host system timezone
@ -83,7 +82,7 @@ corepack_enable: true
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
# To reinstall Composer after the image was built, run "ddev debug rebuild".
# nodejs_version: "20"
# nodejs_version: "22"
# change from the default system Node.js version to any other version.
# See https://ddev.readthedocs.io/en/stable/users/configuration/config/#nodejs_version for more information
# and https://www.npmjs.com/package/n#specifying-nodejs-versions for the full documentation,

View file

@ -38,6 +38,7 @@
"no-void": "off",
"no-optional-chaining": "off",
"no-unused-expressions": "off",
"no-misused-promises": "off"
"no-misused-promises": "off",
"yoda": ["error", "never"]
}
}

View file

@ -1,18 +1,17 @@
- Page Panier
- [-] Bouton « Réinitialiser » pour les Articles
- [-] Bouton « Réinitialiser » pour les Adresses
- Emails
- Gestion des erreurs sur le Panier
- Menu Mobile
- Reprendre pour suivre la maquette initiale
- PayPal à faire
- Styles pour les focus à faire
- Boutons
- Champs
- Reporter toutes les erreurs
- Utiliser un polyfill pour BroadcastChannel
- PAGE SHOP Faire apparaître le menu des catégories de Produits quand on scroll vers le haut
- Comprendre pourquoi les codes promos ont disparus
- PAGE SHOP
- [ ] Faire apparaître le menu des catégories de Produits quand on scroll vers le haut
- MÉTHODES DE LIVRAISON
- [ ] Proposer la livraison à domicile en Belgique et en France pour le coût unique de 12 euros, quel que soit le montant de la commande
---

27
composer.lock generated
View file

@ -2532,8 +2532,8 @@
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
@ -3248,16 +3248,16 @@
},
{
"name": "twig/twig",
"version": "v3.16.0",
"version": "v3.17.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561"
"reference": "d3a64b742a5e74c57e3964d766e1032982145872"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561",
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/d3a64b742a5e74c57e3964d766e1032982145872",
"reference": "d3a64b742a5e74c57e3964d766e1032982145872",
"shasum": ""
},
"require": {
@ -3312,7 +3312,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.16.0"
"source": "https://github.com/twigphp/Twig/tree/v3.17.0"
},
"funding": [
{
@ -3324,7 +3324,7 @@
"type": "tidelift"
}
],
"time": "2024-11-29T08:27:05+00:00"
"time": "2024-12-10T15:19:11+00:00"
},
{
"name": "vlucas/phpdotenv",
@ -3844,12 +3844,12 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "dcb2bdb48e1d9b0b5b1c333b61f49772aee879ff"
"reference": "7a60033d5e61698bf3ed203afb4f4a2323801990"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/dcb2bdb48e1d9b0b5b1c333b61f49772aee879ff",
"reference": "dcb2bdb48e1d9b0b5b1c333b61f49772aee879ff",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7a60033d5e61698bf3ed203afb4f4a2323801990",
"reference": "7a60033d5e61698bf3ed203afb4f4a2323801990",
"shasum": ""
},
"conflict": {
@ -4178,7 +4178,7 @@
"latte/latte": "<2.10.8",
"lavalite/cms": "<=9|==10.1",
"lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
"league/commonmark": "<0.18.3",
"league/commonmark": "<2.6",
"league/flysystem": "<1.1.4|>=2,<2.1.1",
"league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
@ -4579,6 +4579,7 @@
"wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
"winter/wn-backend-module": "<1.2.4",
"winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7",
"winter/wn-dusk-plugin": "<2.1",
"winter/wn-system-module": "<1.2.4",
"wintercms/winter": "<=1.2.3",
@ -4685,7 +4686,7 @@
"type": "tidelift"
}
],
"time": "2024-12-06T23:05:03+00:00"
"time": "2024-12-09T21:04:47+00:00"
},
{
"name": "squizlabs/php_codesniffer",

File diff suppressed because one or more lines are too long

View file

@ -8,10 +8,13 @@
"packageManager": "pnpm@9.14.4",
"main": "index.js",
"keywords": [],
"scripts": { "knip": "knip", "test": "echo \"Error: no test specified\" && exit 1" },
"scripts": {
"knip": "knip",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"@mobily/ts-belt": "4.0.0-rc.5",
"@sentry/browser": "8.42.0",
"@sentry/browser": "8.43.0",
"@swan-io/boxed": "^3.1.2",
"a11y-dialog": "^8.1.1",
"optics-ts": "^2.4.1",
@ -24,7 +27,7 @@
"@eslint/js": "^9.16.0",
"@prettier/plugin-php": "^0.22.2",
"@prettier/plugin-xml": "^3.4.1",
"@sentry/core": "^8.42.0",
"@sentry/core": "^8.43.0",
"@swc/cli": "0.5.2",
"@types/eslint__js": "^8.42.3",
"@types/node": "^22.10.1",
@ -50,7 +53,7 @@
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
"stylelint-plugin-logical-css": "^1.2.1",
"typescript": "5.8.0-dev.20241122",
"typescript-eslint": "^8.17.0",
"typescript-eslint": "^8.18.0",
"vite": "^6.0.3",
"vite-plugin-manifest-sri": "^0.2.0",
"vite-plugin-node-polyfills": "^0.22.0",
@ -68,8 +71,15 @@
"ios >0 and last 3 years"
],
"knip": {
"entry": ["web/app/themes/haiku-atelier-2024/src/scripts/*.ts"],
"project": ["web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"]
"entry": [
"web/app/themes/haiku-atelier-2024/src/scripts/*.ts"
],
"project": [
"web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"
]
},
"trustedDependencies": ["@biomejs/biome", "@parcel/watcher"]
"trustedDependencies": [
"@biomejs/biome",
"@parcel/watcher"
]
}

248
pnpm-lock.yaml generated
View file

@ -12,8 +12,8 @@ importers:
specifier: 4.0.0-rc.5
version: 4.0.0-rc.5
'@sentry/browser':
specifier: 8.42.0
version: 8.42.0
specifier: 8.43.0
version: 8.43.0
'@swan-io/boxed':
specifier: ^3.1.2
version: 3.1.2(typescript@5.8.0-dev.20241122)
@ -46,8 +46,8 @@ importers:
specifier: ^3.4.1
version: 3.4.1(prettier@3.4.2)
'@sentry/core':
specifier: ^8.42.0
version: 8.42.0
specifier: ^8.43.0
version: 8.43.0
'@swc/cli':
specifier: 0.5.2
version: 0.5.2(@swc/core@1.9.1)
@ -124,8 +124,8 @@ importers:
specifier: 5.8.0-dev.20241122
version: 5.8.0-dev.20241122
typescript-eslint:
specifier: ^8.17.0
version: 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
specifier: ^8.18.0
version: 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
vite:
specifier: ^6.0.3
version: 6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
@ -1393,28 +1393,28 @@ packages:
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
'@sentry-internal/browser-utils@8.42.0':
resolution: {integrity: sha512-xzgRI0wglKYsPrna574w1t38aftuvo44gjOKFvPNGPnYfiW9y4m+64kUz3JFbtanvOrKPcaITpdYiB4DeJXEbA==}
'@sentry-internal/browser-utils@8.43.0':
resolution: {integrity: sha512-5WhJZ3SA5sZVDBwOsChDd5JCzYcwBX7sEqBqEcm3pFru6TUihEnFIJmDIbreIyrQMwUhs3dTxnfnidgjr5z1Ag==}
engines: {node: '>=14.18'}
'@sentry-internal/feedback@8.42.0':
resolution: {integrity: sha512-dkIw5Wdukwzngg5gNJ0QcK48LyJaMAnBspqTqZ3ItR01STi6Z+6+/Bt5XgmrvDgRD+FNBinflc5zMmfdFXXhvw==}
'@sentry-internal/feedback@8.43.0':
resolution: {integrity: sha512-rcGR2kzFu4vLXBQbI9eGJwjyToyjl36O2q/UKbiZBNJ5IFtDvKRLke6jIHq/YqiHPfFGpVtq5M/lYduDfA/eaQ==}
engines: {node: '>=14.18'}
'@sentry-internal/replay-canvas@8.42.0':
resolution: {integrity: sha512-XrPErqVhPsPh/oFLVKvz7Wb+Fi2J1zCPLeZCxWqFuPWI2agRyLVu0KvqJyzSpSrRAEJC/XFzuSVILlYlXXSfgA==}
'@sentry-internal/replay-canvas@8.43.0':
resolution: {integrity: sha512-rL8G7E1GtozH8VNalRrBQNjYDJ5ChWS/vpQI5hUG11PZfvQFXEVatLvT3uO2l0xIlHm4idTsHOSLTe/usxnogQ==}
engines: {node: '>=14.18'}
'@sentry-internal/replay@8.42.0':
resolution: {integrity: sha512-oNcJEBlDfXnRFYC5Mxj5fairyZHNqlnU4g8kPuztB9G5zlsyLgWfPxzcn1ixVQunth2/WZRklDi4o1ZfyHww7w==}
'@sentry-internal/replay@8.43.0':
resolution: {integrity: sha512-geV5/zejLfGGwWHjylzrb1w8NI3U37GMG9/53nmv13FmTXUDF5XF2lh41KXFVYwvp7Ha4bd1FRQ9IU9YtBWskw==}
engines: {node: '>=14.18'}
'@sentry/browser@8.42.0':
resolution: {integrity: sha512-lStrEk609KJHwXfDrOgoYVVoFFExixHywxSExk7ZDtwj2YPv6r6Y1gogvgr7dAZj7jWzadHkxZ33l9EOSJBfug==}
'@sentry/browser@8.43.0':
resolution: {integrity: sha512-LGvLLnfmR8+AEgFmd7Q7KHiOTiV0P1Lvio2ENDELhEqJOIiICauttibVmig+AW02qg4kMeywvleMsUYaZv2RVA==}
engines: {node: '>=14.18'}
'@sentry/core@8.42.0':
resolution: {integrity: sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw==}
'@sentry/core@8.43.0':
resolution: {integrity: sha512-ktyovtjkTMNud+kC/XfqHVCoQKreIKgx/hgeRvzPwuPyd1t1KzYmRL3DBkbcWVnyOPpVTHn+RsEI1eRcVYHtvw==}
engines: {node: '>=14.18'}
'@sindresorhus/is@5.6.0':
@ -1551,66 +1551,51 @@ packages:
'@types/node@22.10.1':
resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
'@typescript-eslint/eslint-plugin@8.17.0':
resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==}
'@typescript-eslint/eslint-plugin@8.18.0':
resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
typescript: '>=4.8.4 <5.8.0'
'@typescript-eslint/parser@8.17.0':
resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==}
'@typescript-eslint/parser@8.18.0':
resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
typescript: '>=4.8.4 <5.8.0'
'@typescript-eslint/scope-manager@8.17.0':
resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==}
'@typescript-eslint/scope-manager@8.18.0':
resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.17.0':
resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==}
'@typescript-eslint/type-utils@8.18.0':
resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
typescript: '>=4.8.4 <5.8.0'
'@typescript-eslint/types@8.17.0':
resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==}
'@typescript-eslint/types@8.18.0':
resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.17.0':
resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==}
'@typescript-eslint/typescript-estree@8.18.0':
resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
typescript: '>=4.8.4 <5.8.0'
'@typescript-eslint/utils@8.17.0':
resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==}
'@typescript-eslint/utils@8.18.0':
resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
typescript: '>=4.8.4 <5.8.0'
'@typescript-eslint/visitor-keys@8.17.0':
resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==}
'@typescript-eslint/visitor-keys@8.18.0':
resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-legacy@6.0.0':
@ -2035,8 +2020,8 @@ packages:
easy-table@1.2.0:
resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==}
electron-to-chromium@1.5.71:
resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==}
electron-to-chromium@1.5.72:
resolution: {integrity: sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==}
elliptic@6.6.1:
resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
@ -2565,8 +2550,8 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
magic-string@0.30.14:
resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==}
magic-string@0.30.15:
resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==}
make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
@ -2656,8 +2641,8 @@ packages:
node-addon-api@7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
node-releases@2.0.18:
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
node-stdlib-browser@1.3.0:
resolution: {integrity: sha512-g/koYzOr9Fb1Jc+tHUHlFd5gODjGn48tHexUK8q6iqOVriEgSnd3/1T7myBYc+0KBVze/7F7n65ec9rW6OD7xw==}
@ -3424,15 +3409,12 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
typescript-eslint@8.17.0:
resolution: {integrity: sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==}
typescript-eslint@8.18.0:
resolution: {integrity: sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
typescript: '>=4.8.4 <5.8.0'
typescript@5.7.2:
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
@ -3618,8 +3600,8 @@ packages:
peerDependencies:
zod: ^3.18.0
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
zod@3.24.0:
resolution: {integrity: sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w==}
snapshots:
@ -4724,7 +4706,7 @@ snapshots:
dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.28.1)
estree-walker: 2.0.2
magic-string: 0.30.14
magic-string: 0.30.15
optionalDependencies:
rollup: 4.28.1
@ -4795,33 +4777,33 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
'@sentry-internal/browser-utils@8.42.0':
'@sentry-internal/browser-utils@8.43.0':
dependencies:
'@sentry/core': 8.42.0
'@sentry/core': 8.43.0
'@sentry-internal/feedback@8.42.0':
'@sentry-internal/feedback@8.43.0':
dependencies:
'@sentry/core': 8.42.0
'@sentry/core': 8.43.0
'@sentry-internal/replay-canvas@8.42.0':
'@sentry-internal/replay-canvas@8.43.0':
dependencies:
'@sentry-internal/replay': 8.42.0
'@sentry/core': 8.42.0
'@sentry-internal/replay': 8.43.0
'@sentry/core': 8.43.0
'@sentry-internal/replay@8.42.0':
'@sentry-internal/replay@8.43.0':
dependencies:
'@sentry-internal/browser-utils': 8.42.0
'@sentry/core': 8.42.0
'@sentry-internal/browser-utils': 8.43.0
'@sentry/core': 8.43.0
'@sentry/browser@8.42.0':
'@sentry/browser@8.43.0':
dependencies:
'@sentry-internal/browser-utils': 8.42.0
'@sentry-internal/feedback': 8.42.0
'@sentry-internal/replay': 8.42.0
'@sentry-internal/replay-canvas': 8.42.0
'@sentry/core': 8.42.0
'@sentry-internal/browser-utils': 8.43.0
'@sentry-internal/feedback': 8.43.0
'@sentry-internal/replay': 8.43.0
'@sentry-internal/replay-canvas': 8.43.0
'@sentry/core': 8.43.0
'@sentry/core@8.42.0': {}
'@sentry/core@8.43.0': {}
'@sindresorhus/is@5.6.0': {}
@ -4936,86 +4918,81 @@ snapshots:
dependencies:
undici-types: 6.20.0
'@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
'@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
dependencies:
'@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/scope-manager': 8.17.0
'@typescript-eslint/type-utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/visitor-keys': 8.17.0
'@typescript-eslint/parser': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/scope-manager': 8.18.0
'@typescript-eslint/type-utils': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/utils': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/visitor-keys': 8.18.0
eslint: 9.16.0(jiti@2.4.1)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
ts-api-utils: 1.4.3(typescript@5.8.0-dev.20241122)
optionalDependencies:
typescript: 5.8.0-dev.20241122
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
'@typescript-eslint/parser@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
dependencies:
'@typescript-eslint/scope-manager': 8.17.0
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.8.0-dev.20241122)
'@typescript-eslint/visitor-keys': 8.17.0
'@typescript-eslint/scope-manager': 8.18.0
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/typescript-estree': 8.18.0(typescript@5.8.0-dev.20241122)
'@typescript-eslint/visitor-keys': 8.18.0
debug: 4.4.0
eslint: 9.16.0(jiti@2.4.1)
optionalDependencies:
typescript: 5.8.0-dev.20241122
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.17.0':
'@typescript-eslint/scope-manager@8.18.0':
dependencies:
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/visitor-keys': 8.17.0
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/visitor-keys': 8.18.0
'@typescript-eslint/type-utils@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
'@typescript-eslint/type-utils@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
dependencies:
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.8.0-dev.20241122)
'@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/typescript-estree': 8.18.0(typescript@5.8.0-dev.20241122)
'@typescript-eslint/utils': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
debug: 4.4.0
eslint: 9.16.0(jiti@2.4.1)
ts-api-utils: 1.4.3(typescript@5.8.0-dev.20241122)
optionalDependencies:
typescript: 5.8.0-dev.20241122
transitivePeerDependencies:
- supports-color
'@typescript-eslint/types@8.17.0': {}
'@typescript-eslint/types@8.18.0': {}
'@typescript-eslint/typescript-estree@8.17.0(typescript@5.8.0-dev.20241122)':
'@typescript-eslint/typescript-estree@8.18.0(typescript@5.8.0-dev.20241122)':
dependencies:
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/visitor-keys': 8.17.0
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/visitor-keys': 8.18.0
debug: 4.4.0
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
ts-api-utils: 1.4.3(typescript@5.8.0-dev.20241122)
optionalDependencies:
typescript: 5.8.0-dev.20241122
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
'@typescript-eslint/utils@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.1))
'@typescript-eslint/scope-manager': 8.17.0
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.8.0-dev.20241122)
'@typescript-eslint/scope-manager': 8.18.0
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/typescript-estree': 8.18.0(typescript@5.8.0-dev.20241122)
eslint: 9.16.0(jiti@2.4.1)
optionalDependencies:
typescript: 5.8.0-dev.20241122
transitivePeerDependencies:
- supports-color
'@typescript-eslint/visitor-keys@8.17.0':
'@typescript-eslint/visitor-keys@8.18.0':
dependencies:
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/types': 8.18.0
eslint-visitor-keys: 4.2.0
'@vitejs/plugin-legacy@6.0.0(terser@5.36.0)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))':
@ -5025,7 +5002,7 @@ snapshots:
browserslist: 4.24.2
browserslist-to-esbuild: 2.1.1(browserslist@4.24.2)
core-js: 3.39.0
magic-string: 0.30.14
magic-string: 0.30.15
regenerator-runtime: 0.14.1
systemjs: 6.15.1
terser: 5.36.0
@ -5309,8 +5286,8 @@ snapshots:
browserslist@4.24.2:
dependencies:
caniuse-lite: 1.0.30001687
electron-to-chromium: 1.5.71
node-releases: 2.0.18
electron-to-chromium: 1.5.72
node-releases: 2.0.19
update-browserslist-db: 1.1.1(browserslist@4.24.2)
buffer-builder@0.2.0: {}
@ -5544,7 +5521,7 @@ snapshots:
optionalDependencies:
wcwidth: 1.0.1
electron-to-chromium@1.5.71: {}
electron-to-chromium@1.5.72: {}
elliptic@6.6.1:
dependencies:
@ -5610,8 +5587,8 @@ snapshots:
eslint-plugin-perfectionist@4.2.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
dependencies:
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/utils': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
eslint: 9.16.0(jiti@2.4.1)
natural-orderby: 5.0.0
transitivePeerDependencies:
@ -6055,8 +6032,8 @@ snapshots:
strip-json-comments: 5.0.1
summary: 2.1.0
typescript: 5.8.0-dev.20241122
zod: 3.23.8
zod-validation-error: 3.4.0(zod@3.23.8)
zod: 3.24.0
zod-validation-error: 3.4.0(zod@3.24.0)
known-css-properties@0.35.0: {}
@ -6090,7 +6067,7 @@ snapshots:
dependencies:
yallist: 3.1.1
magic-string@0.30.14:
magic-string@0.30.15:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
@ -6161,7 +6138,7 @@ snapshots:
node-addon-api@7.1.1:
optional: true
node-releases@2.0.18: {}
node-releases@2.0.19: {}
node-stdlib-browser@1.3.0:
dependencies:
@ -6960,13 +6937,12 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
typescript-eslint@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
typescript-eslint@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
dependencies:
'@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/parser': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/parser': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
'@typescript-eslint/utils': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
eslint: 9.16.0(jiti@2.4.1)
optionalDependencies:
typescript: 5.8.0-dev.20241122
transitivePeerDependencies:
- supports-color
@ -7114,8 +7090,8 @@ snapshots:
yoctocolors@2.1.1: {}
zod-validation-error@3.4.0(zod@3.23.8):
zod-validation-error@3.4.0(zod@3.24.0):
dependencies:
zod: 3.23.8
zod: 3.24.0
zod@3.23.8: {}
zod@3.24.0: {}

View file

@ -3,6 +3,7 @@ import { find as arrayFind, head as arrayHead } from "@mobily/ts-belt/Array";
import { get as dictGet, map as dictMap, values as dictValues } from "@mobily/ts-belt/Dict";
import { flatMap as optionFlatMap, getWithDefault as optionGetWithDefault } from "@mobily/ts-belt/Option";
import { trim as stringTrim } from "@mobily/ts-belt/String";
import { Option } from "@swan-io/boxed";
import { EitherAsync, Maybe } from "purify-ts";
import { match, P } from "ts-pattern";
import { type AnySchema, ValiError } from "valibot";
@ -10,7 +11,6 @@ import { type AnySchema, ValiError } from "valibot";
import type { WCStoreCart, WCStoreShippingRateShippingRate } from "../lib/types/api/cart";
import type { WCStoreCartUpdateCustomerArgs } from "../lib/types/api/cart-update-customer";
import type { WCStoreShippingRateShippingRates } from "../lib/types/api/couts-livraison";
import type { APIFetchErrors } from "../lib/types/api/erreurs";
import type { WCV3Order, WCV3OrdersArgs } from "../lib/types/api/v3/orders";
import type { EtatsPageGenerique } from "../lib/types/pages";
import type { FetchErrors, HttpCodeErrors } from "../lib/types/reseau";
@ -36,14 +36,7 @@ import {
ERREUR_GENERIQUE_SOUMISSION_ADRESSES,
} from "../constantes/messages-utilisateur";
import { eitherJsonParse, eitherSessionStorageGet } from "../lib/dom";
import {
BadRequestError,
leveErreur,
NonExistingKeyError,
reporteErreur,
reporteEtJournaliseErreur,
ServerError,
} from "../lib/erreurs";
import { leveErreur, type NonExistingKeyError, reporteErreur, reporteEtJournaliseErreur } from "../lib/erreurs";
import { ErreurAdresseInvalide } from "../lib/erreurs/adresses";
import { emetUniqueMessageBroadcastChannel } from "../lib/messages";
import { diviseParCent, formateEnEuros } from "../lib/nombres";
@ -172,20 +165,18 @@ export const initialiseBoutonCalculLivraison = (): void => {
)
// 4. Traite les cas d'Erreurs et récupère le Corps de la Réponse
.chain((reponse: Response) =>
EitherAsync<ErreurAdresseInvalide | HttpCodeErrors, unknown>(async ({ throwE }) =>
// Simplifie les données à matcher
EitherAsync<ErreurAdresseInvalide | HttpCodeErrors, unknown>(async ({ throwE }): Promise<unknown> =>
match(await creeReponseSimplifiee(reponse))
.with({ status: 200 }, rs => rs.body)
// Problème d'adresse
.with({ status: 200 }, (rs): unknown => rs.body)
.with(
{ body: P.when(body => estWCAddressError(body)), status: 400 },
(r): never => throwE(new ErreurAdresseInvalide(r.body.data.params)),
(rs): never => throwE(new ErreurAdresseInvalide(rs.body.data.params)),
)
.otherwise((rs): never => throwE(traiteErreursBackendWooCommerce(rs)))
)
)
// 5. Vérifie le Schéma de la Réponse
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema)))
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCStoreCartSchema)))
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
.ifRight((panier: WCStoreCart): void => {
E.MESSAGE_ADRESSES.textContent = " ";
@ -294,11 +285,7 @@ export const initialiseBoutonCreationCommande = (): void => {
reporteErreur(e);
console.error(e.issues);
})
.with(P.instanceOf(SyntaxError), P.instanceOf(NonExistingKeyError), (e): void => {
reporteErreur(e);
console.error(e);
})
.exhaustive();
.otherwise(reporteEtJournaliseErreur);
// Nettoie un stockage de session erroné
sessionStorage.removeItem("shipping_rates");
@ -372,64 +359,60 @@ export const initialiseBoutonCreationCommande = (): void => {
.liftEither(eitherParse(argumentsFormulaire, WCV3OrdersArgsSchema))
// 2. Exécute un Effet pour empêcher les requêtes concurrentes et lancer une animation de chargement
.ifRight((): void => {
// Désactive le Bouton pour empêcher des requêtes concurrentes
majEtatChargementBouton(E.BOUTON_ACTIONS_FORMULAIRE, true);
})
// 3. Exécute la requête via fetch sous form d'EitherAsync
.chain((args: WCV3OrdersArgs) =>
EitherAsync<DOMException | Error | TypeError, Response>((): Promise<Response> =>
eitherAsyncFetch(
postBackend({
authString: ETATS_PAGE.authString,
corps: JSON.stringify(args),
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_NOUVELLE_COMMANDES,
})
}),
)
)
// 4. Traite les cas d'Erreurs et récupère le Corps de la Réponse
.chain((reponse: Response) =>
EitherAsync<APIFetchErrors, unknown>(async ({ throwE }): Promise<unknown> =>
EitherAsync<HttpCodeErrors, unknown>(async ({ throwE }): Promise<unknown> =>
match(await creeReponseSimplifiee(reponse))
.with({ status: 201 }, (rs): unknown => rs.body)
.with({ status: 500 }, (): never => throwE(new ServerError("500 Serveur Error")))
.with({ status: 400 }, (): never => throwE(new BadRequestError("400 Bad Request Error")))
.run()
.otherwise((rs): never => throwE(traiteErreursBackendWooCommerce(rs)))
)
)
// 5. Vérifie le Schéma de la Réponse
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCV3OrderSchema)))
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCV3OrderSchema)))
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
.ifRight((commande: WCV3Order): void => {
E.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_CHARGEMENT);
E.BOUTON_ACTIONS_FORMULAIRE.textContent = "OK!";
E.MESSAGE_ADRESSES.textContent = " ";
const url = new URL(`https://${window.location.host}/checkout`);
url.searchParams.append("order_key", commande.order_key);
url.searchParams.append("order_id", String(commande.id));
location.assign(url);
// Redirige vers Stripe
Option
.fromNullable(new URL(`https://${window.location.host}/checkout`))
.tapSome(url => url.searchParams.append("order_key", commande.order_key))
.tapSome(url => url.searchParams.append("order_id", String(commande.id)))
.tapSome(url => location.assign(url));
})
.ifLeft((erreur: BadRequestError | DOMException | ServerError | TypeError | ValiError<AnySchema>): void => {
// 7. Traite les Erreurs et affiche un message à l'Utilisateur
.ifLeft((erreur: FetchErrors | HttpCodeErrors | ValiError<AnySchema>): void => {
match(erreur)
.with(P.instanceOf(ValiError), (e): void => {
reporteErreur(e);
console.error("ValiError", e.issues);
.with(P.instanceOf(ValiError), (e: ValiError<AnySchema>): void => {
reporteEtJournaliseErreur(e);
console.error(e.issues);
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_CREATION_COMMANDE;
})
.with(
P.instanceOf(BadRequestError),
P.instanceOf(DOMException),
P.instanceOf(ServerError),
P.instanceOf(TypeError),
(e): void => {
reporteErreur(e);
console.error(e);
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_CREATION_COMMANDE;
},
)
.otherwise((e): void => {
reporteErreur(e);
console.error("erreur inconnu", e);
});
.when(estErreurHttp, (e): void => {
reporteEtJournaliseErreur(e);
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
})
.when(estErreurFetch, (e): void => {
reporteEtJournaliseErreur(e);
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_RESEAU;
})
.exhaustive();
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
majEtatChargementBouton(E.BOUTON_ACTIONS_FORMULAIRE, false);