2024-10-16

This commit is contained in:
gcch 2024-10-16 22:06:13 +02:00
commit 5793fcb710
72 changed files with 1586 additions and 667 deletions

View file

@ -5,6 +5,8 @@
"controle",
"controles",
"coordonnee",
"COUT",
"couts",
"Crell",
"defini",
"deplie",
@ -25,6 +27,7 @@
"mobily",
"paypal",
"phpstan",
"prenom",
"Proprietes",
"rafraichissement",
"rapprochee",

18
composer.lock generated
View file

@ -2313,15 +2313,15 @@
},
{
"name": "wpackagist-plugin/wc-multishipping",
"version": "2.5.2",
"version": "2.5.3",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/wc-multishipping/",
"reference": "tags/2.5.2"
"reference": "tags/2.5.3"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/wc-multishipping.2.5.2.zip"
"url": "https://downloads.wordpress.org/plugin/wc-multishipping.2.5.3.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@ -3301,16 +3301,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "1.32.0",
"version": "1.33.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4"
"reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
"reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140",
"reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140",
"shasum": ""
},
"require": {
@ -3342,9 +3342,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0"
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0"
},
"time": "2024-09-26T07:23:32+00:00"
"time": "2024-10-13T11:25:22+00:00"
},
{
"name": "phpstan/phpstan",

View file

@ -12,9 +12,10 @@
"dependencies": {
"@mobily/ts-belt": "^3.13.1",
"@sentry/browser": "8.34.0",
"html-template-tag": "^4.1.0",
"purify-ts": "^2.1.0",
"remeda": "^2.15.0",
"ts-pattern": "^5.4.0",
"ts-pattern": "^5.5.0",
"valibot": "1.0.0-beta.0"
},
"devDependencies": {
@ -30,8 +31,8 @@
"configurations-js": "git+https://git.gcch.fr/gcch/configurations-js.git",
"eslint": "^9.12.0",
"eslint-plugin-oxlint": "^0.9.10",
"eslint-plugin-perfectionist": "^3.8.0",
"fdir": "^6.4.0",
"eslint-plugin-perfectionist": "^3.9.0",
"fdir": "^6.4.2",
"globals": "^15.11.0",
"oxlint": "^0.9.10",
"picomatch": "^4.0.2",
@ -46,10 +47,10 @@
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
"stylelint-plugin-logical-css": "^1.2.1",
"typescript": "5.7.0-dev.20241010",
"typescript-eslint": "^8.8.1",
"vite": "^5.4.8",
"typescript-eslint": "^8.9.0",
"vite": "^5.4.9",
"vite-plugin-manifest-sri": "^0.2.0",
"vite-plugin-valibot-env": "^0.8.0",
"vite-plugin-valibot-env": "^0.8.1",
"vite-tsconfig-paths": "^5.0.1",
"wp-types": "^4.66.1"
},

289
pnpm-lock.yaml generated
View file

@ -14,6 +14,9 @@ importers:
'@sentry/browser':
specifier: 8.34.0
version: 8.34.0
html-template-tag:
specifier: ^4.1.0
version: 4.1.0
purify-ts:
specifier: ^2.1.0
version: 2.1.0
@ -21,8 +24,8 @@ importers:
specifier: ^2.15.0
version: 2.15.0
ts-pattern:
specifier: ^5.4.0
version: 5.4.0
specifier: ^5.5.0
version: 5.5.0
valibot:
specifier: 1.0.0-beta.0
version: 1.0.0-beta.0(typescript@5.7.0-dev.20241010)
@ -64,11 +67,11 @@ importers:
specifier: ^0.9.10
version: 0.9.10
eslint-plugin-perfectionist:
specifier: ^3.8.0
version: 3.8.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
specifier: ^3.9.0
version: 3.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
fdir:
specifier: ^6.4.0
version: 6.4.0(picomatch@4.0.2)
specifier: ^6.4.2
version: 6.4.2(picomatch@4.0.2)
globals:
specifier: ^15.11.0
version: 15.11.0
@ -112,20 +115,20 @@ importers:
specifier: 5.7.0-dev.20241010
version: 5.7.0-dev.20241010
typescript-eslint:
specifier: ^8.8.1
version: 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
specifier: ^8.9.0
version: 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
vite:
specifier: ^5.4.8
version: 5.4.8(@types/node@22.7.5)(sass@1.79.5)
specifier: ^5.4.9
version: 5.4.9(@types/node@22.7.5)(sass@1.79.5)
vite-plugin-manifest-sri:
specifier: ^0.2.0
version: 0.2.0
vite-plugin-valibot-env:
specifier: ^0.8.0
version: 0.8.0(valibot@1.0.0-beta.0(typescript@5.7.0-dev.20241010))(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5))
specifier: ^0.8.1
version: 0.8.1(valibot@1.0.0-beta.0(typescript@5.7.0-dev.20241010))(vite@5.4.9(@types/node@22.7.5)(sass@1.79.5))
vite-tsconfig-paths:
specifier: ^5.0.1
version: 5.0.1(typescript@5.7.0-dev.20241010)(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5))
version: 5.0.1(typescript@5.7.0-dev.20241010)(vite@5.4.9(@types/node@22.7.5)(sass@1.79.5))
wp-types:
specifier: ^4.66.1
version: 4.66.1
@ -979,8 +982,8 @@ packages:
'@types/responselike@1.0.3':
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
'@typescript-eslint/eslint-plugin@8.8.1':
resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==}
'@typescript-eslint/eslint-plugin@8.9.0':
resolution: {integrity: sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@ -990,8 +993,8 @@ packages:
typescript:
optional: true
'@typescript-eslint/parser@8.8.1':
resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==}
'@typescript-eslint/parser@8.9.0':
resolution: {integrity: sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@ -1000,12 +1003,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/scope-manager@8.8.1':
resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==}
'@typescript-eslint/scope-manager@8.9.0':
resolution: {integrity: sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.8.1':
resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==}
'@typescript-eslint/type-utils@8.9.0':
resolution: {integrity: sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@ -1013,12 +1016,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/types@8.8.1':
resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==}
'@typescript-eslint/types@8.9.0':
resolution: {integrity: sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.8.1':
resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==}
'@typescript-eslint/typescript-estree@8.9.0':
resolution: {integrity: sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@ -1026,14 +1029,14 @@ packages:
typescript:
optional: true
'@typescript-eslint/utils@8.8.1':
resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==}
'@typescript-eslint/utils@8.9.0':
resolution: {integrity: sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
'@typescript-eslint/visitor-keys@8.8.1':
resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==}
'@typescript-eslint/visitor-keys@8.9.0':
resolution: {integrity: sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@xml-tools/parser@1.0.11':
@ -1044,8 +1047,8 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn@8.12.1:
resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
acorn@8.13.0:
resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==}
engines: {node: '>=0.4.0'}
hasBin: true
@ -1131,8 +1134,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
caniuse-lite@1.0.30001668:
resolution: {integrity: sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==}
caniuse-lite@1.0.30001669:
resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==}
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@ -1203,10 +1206,6 @@ packages:
resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==}
engines: {node: '>=12 || >=16'}
css-tree@2.3.1:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
css-tree@3.0.0:
resolution: {integrity: sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@ -1245,8 +1244,8 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
electron-to-chromium@1.5.36:
resolution: {integrity: sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw==}
electron-to-chromium@1.5.39:
resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -1285,8 +1284,8 @@ packages:
eslint-plugin-oxlint@0.9.10:
resolution: {integrity: sha512-8AyknsmYBJ/82dNChwUDnR4PmE9jKfNn9W+dQ3buzmrwoTvpSIuho2A/KoaGv6B7Lz0cMaEloR6BGo/a0b/xOw==}
eslint-plugin-perfectionist@3.8.0:
resolution: {integrity: sha512-BYJWbQVOjvIGK9V1xUfn790HuvkePjxti8epOi1H6sdzo0N4RehBmQ8coHPbgA/f12BUG1NIoDtQhI9mUm+o2A==}
eslint-plugin-perfectionist@3.9.0:
resolution: {integrity: sha512-qLsV6/94hokK+k77wUeLMEtB3tS/NtC9ke5OZCAaeCyK1VyVv7Ct0il16vkNNw/1IwNo8Fy60PKjQZSBcsVX5A==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
astro-eslint-parser: ^1.0.2
@ -1379,8 +1378,8 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
fast-uri@3.0.2:
resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==}
fast-uri@3.0.3:
resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==}
fastest-levenshtein@1.0.16:
resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
@ -1389,8 +1388,8 @@ packages:
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
fdir@6.4.0:
resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==}
fdir@6.4.2:
resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@ -1506,10 +1505,19 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
html-element-attributes@3.4.0:
resolution: {integrity: sha512-u76G07278nacmHiSKs1yxbB2se0aiuQH8uJidyDMc6har3HRpFAR/sDKrZR426p03vu7QuvPAcaLMhp4kWcRbg==}
html-es6cape@2.0.2:
resolution: {integrity: sha512-utzhH8rq2VABdW1LsPdv5tmxeMNOtP83If0jKCa79xPBgLWfcMvdf9K+EZoxJ5P7KioCxTs6WBnSDWLQHJ2lWA==}
html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
engines: {node: '>=8'}
html-template-tag@4.1.0:
resolution: {integrity: sha512-ZaKbMF8Udd00Wvy1aabnO8mKZoat3TdYeM5BMoj5gkyLqBmuT8UTSCIp44EKzzMmP31wTni+mlim8pSw/MbS7Q==}
http-cache-semantics@4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
@ -1661,12 +1669,12 @@ packages:
mathml-tag-names@2.1.3:
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
mdn-data@2.10.0:
resolution: {integrity: sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==}
mdn-data@2.11.1:
resolution: {integrity: sha512-Hdx3wmyqPFrhd6YHVuSkUK2eIGAcxR0xlndcgZqjA68yMJTbfXrjJwbgsBOsNjI7LnBIVUQnmyMVSdi/ob0GpQ==}
meow@13.2.0:
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
engines: {node: '>=18'}
@ -1804,15 +1812,15 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
peek-readable@5.2.0:
resolution: {integrity: sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw==}
peek-readable@5.3.1:
resolution: {integrity: sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==}
engines: {node: '>=14.16'}
php-parser@3.1.5:
resolution: {integrity: sha512-jEY2DcbgCm5aclzBdfW86GM6VEIWcSlhTBSHN1qhJguVePlYe28GhwS0yoeLYXpM2K8y6wzLwrbq814n2PHSoQ==}
picocolors@1.1.0:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@ -2122,8 +2130,8 @@ packages:
peerDependencies:
stylelint: ^14.0.0 || ^15.0.0 || ^16.0.0
stylelint-scss@6.7.0:
resolution: {integrity: sha512-RFIa2A+pVWS5wjNT+whtK7wsbZEWazyqesCuSaPbPlZ8lh2TujwVJSnCYJijg6ChZzwI8pZPRZS1L6A9aCbXDg==}
stylelint-scss@6.8.0:
resolution: {integrity: sha512-6gjsCZ30UUF6ivjZB2Z+1lb6k0+JFa1uR2MgGbYu76xRjEfvNTpSS1nQim1Gom1ijFF9GzauOiq1Kr7zKptQOw==}
engines: {node: '>=18.12.0'}
peerDependencies:
stylelint: ^16.0.2
@ -2173,8 +2181,8 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
ts-pattern@5.4.0:
resolution: {integrity: sha512-hgfOMfjlrARCnYtGD/xEAkFHDXuSyuqjzFSltyQCbN689uNvoQL20TVN2XFcLMjfNuwSsQGU+xtH6MrjIwhwUg==}
ts-pattern@5.5.0:
resolution: {integrity: sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg==}
tsconfck@3.1.4:
resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==}
@ -2186,8 +2194,8 @@ packages:
typescript:
optional: true
tslib@2.7.0:
resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
tslib@2.8.0:
resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@ -2197,8 +2205,8 @@ packages:
resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==}
engines: {node: '>=16'}
typescript-eslint@8.8.1:
resolution: {integrity: sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==}
typescript-eslint@8.9.0:
resolution: {integrity: sha512-AuD/FXGYRQyqyOBCpNLldMlsCGvmDNxptQ3Dp58/NXeB+FqyvTfXmMyba3PYa0Vi9ybnj7G8S/yd/4Cw8y47eA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@ -2242,11 +2250,11 @@ packages:
vite-plugin-manifest-sri@0.2.0:
resolution: {integrity: sha512-Zt5jt19xTIJ91LOuQTCtNG7rTFc5OziAjBz2H5NdCGqaOD1nxrWExLhcKW+W4/q8/jOPCg/n5ncYEQmqCxiGQQ==}
vite-plugin-valibot-env@0.8.0:
resolution: {integrity: sha512-uMxgu7qpR/nJlVrOCTvxXSc6KnWAxT4eqINenPvHau6kHuIdHO3N7eQlffUKKZNMWqbuM9MURv4dTAZVLTPYzQ==}
vite-plugin-valibot-env@0.8.1:
resolution: {integrity: sha512-TKS0F/G24gIVaDpPSNGe835QRqibvulF13N7vYry73mvLErJppLAQQAsBBYEMMf6HTg//lXaAcA9kzF8OxOS9Q==}
engines: {node: '>=18.0.0'}
peerDependencies:
valibot: '>=0.30 <0.43 || 1.0.0-beta.0'
valibot: '>=0.30 <0.43 || 1.0.0-beta.0 || 1.0.0-beta.1'
vite: '>=2 <6'
vite-tsconfig-paths@5.0.1:
@ -2257,8 +2265,8 @@ packages:
vite:
optional: true
vite@5.4.8:
resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
vite@5.4.9:
resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@ -2327,7 +2335,7 @@ snapshots:
'@babel/code-frame@7.25.7':
dependencies:
'@babel/highlight': 7.25.7
picocolors: 1.1.0
picocolors: 1.1.1
'@babel/helper-validator-identifier@7.25.7': {}
@ -2336,7 +2344,7 @@ snapshots:
'@babel/helper-validator-identifier': 7.25.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.1.0
picocolors: 1.1.1
'@better-typescript-lib/decorators@2.9.0(typescript@5.7.0-dev.20241010)':
dependencies:
@ -2970,14 +2978,14 @@ snapshots:
dependencies:
'@types/node': 22.7.5
'@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010))(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
'@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010))(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
dependencies:
'@eslint-community/regexpp': 4.11.1
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/scope-manager': 8.8.1
'@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/visitor-keys': 8.8.1
'@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/scope-manager': 8.9.0
'@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/visitor-keys': 8.9.0
eslint: 9.12.0
graphemer: 1.4.0
ignore: 5.3.2
@ -2988,12 +2996,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
'@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
dependencies:
'@typescript-eslint/scope-manager': 8.8.1
'@typescript-eslint/types': 8.8.1
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.7.0-dev.20241010)
'@typescript-eslint/visitor-keys': 8.8.1
'@typescript-eslint/scope-manager': 8.9.0
'@typescript-eslint/types': 8.9.0
'@typescript-eslint/typescript-estree': 8.9.0(typescript@5.7.0-dev.20241010)
'@typescript-eslint/visitor-keys': 8.9.0
debug: 4.3.7
eslint: 9.12.0
optionalDependencies:
@ -3001,15 +3009,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.8.1':
'@typescript-eslint/scope-manager@8.9.0':
dependencies:
'@typescript-eslint/types': 8.8.1
'@typescript-eslint/visitor-keys': 8.8.1
'@typescript-eslint/types': 8.9.0
'@typescript-eslint/visitor-keys': 8.9.0
'@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
'@typescript-eslint/type-utils@8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
dependencies:
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.7.0-dev.20241010)
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/typescript-estree': 8.9.0(typescript@5.7.0-dev.20241010)
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
debug: 4.3.7
ts-api-utils: 1.3.0(typescript@5.7.0-dev.20241010)
optionalDependencies:
@ -3018,12 +3026,12 @@ snapshots:
- eslint
- supports-color
'@typescript-eslint/types@8.8.1': {}
'@typescript-eslint/types@8.9.0': {}
'@typescript-eslint/typescript-estree@8.8.1(typescript@5.7.0-dev.20241010)':
'@typescript-eslint/typescript-estree@8.9.0(typescript@5.7.0-dev.20241010)':
dependencies:
'@typescript-eslint/types': 8.8.1
'@typescript-eslint/visitor-keys': 8.8.1
'@typescript-eslint/types': 8.9.0
'@typescript-eslint/visitor-keys': 8.9.0
debug: 4.3.7
fast-glob: 3.3.2
is-glob: 4.0.3
@ -3035,31 +3043,31 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
'@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0)
'@typescript-eslint/scope-manager': 8.8.1
'@typescript-eslint/types': 8.8.1
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.7.0-dev.20241010)
'@typescript-eslint/scope-manager': 8.9.0
'@typescript-eslint/types': 8.9.0
'@typescript-eslint/typescript-estree': 8.9.0(typescript@5.7.0-dev.20241010)
eslint: 9.12.0
transitivePeerDependencies:
- supports-color
- typescript
'@typescript-eslint/visitor-keys@8.8.1':
'@typescript-eslint/visitor-keys@8.9.0':
dependencies:
'@typescript-eslint/types': 8.8.1
'@typescript-eslint/types': 8.9.0
eslint-visitor-keys: 3.4.3
'@xml-tools/parser@1.0.11':
dependencies:
chevrotain: 7.1.1
acorn-jsx@5.3.2(acorn@8.12.1):
acorn-jsx@5.3.2(acorn@8.13.0):
dependencies:
acorn: 8.12.1
acorn: 8.13.0
acorn@8.12.1: {}
acorn@8.13.0: {}
ajv@6.12.6:
dependencies:
@ -3071,7 +3079,7 @@ snapshots:
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
fast-uri: 3.0.2
fast-uri: 3.0.3
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
@ -3148,8 +3156,8 @@ snapshots:
browserslist@4.24.0:
dependencies:
caniuse-lite: 1.0.30001668
electron-to-chromium: 1.5.36
caniuse-lite: 1.0.30001669
electron-to-chromium: 1.5.39
node-releases: 2.0.18
update-browserslist-db: 1.1.1(browserslist@4.24.0)
@ -3167,7 +3175,7 @@ snapshots:
callsites@3.1.0: {}
caniuse-lite@1.0.30001668: {}
caniuse-lite@1.0.30001669: {}
chalk@2.4.2:
dependencies:
@ -3239,11 +3247,6 @@ snapshots:
css-functions-list@3.2.3: {}
css-tree@2.3.1:
dependencies:
mdn-data: 2.0.30
source-map-js: 1.2.1
css-tree@3.0.0:
dependencies:
mdn-data: 2.10.0
@ -3269,7 +3272,7 @@ snapshots:
dependencies:
path-type: 4.0.0
electron-to-chromium@1.5.36: {}
electron-to-chromium@1.5.39: {}
emoji-regex@8.0.0: {}
@ -3321,10 +3324,10 @@ snapshots:
dependencies:
scule: 1.3.0
eslint-plugin-perfectionist@3.8.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010):
eslint-plugin-perfectionist@3.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010):
dependencies:
'@typescript-eslint/types': 8.8.1
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/types': 8.9.0
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
eslint: 9.12.0
minimatch: 9.0.5
natural-compare-lite: 1.4.0
@ -3383,8 +3386,8 @@ snapshots:
espree@10.2.0:
dependencies:
acorn: 8.12.1
acorn-jsx: 5.3.2(acorn@8.12.1)
acorn: 8.13.0
acorn-jsx: 5.3.2(acorn@8.13.0)
eslint-visitor-keys: 4.1.0
esquery@1.6.0:
@ -3448,7 +3451,7 @@ snapshots:
fast-levenshtein@2.0.6: {}
fast-uri@3.0.2: {}
fast-uri@3.0.3: {}
fastest-levenshtein@1.0.16: {}
@ -3456,7 +3459,7 @@ snapshots:
dependencies:
reusify: 1.0.4
fdir@6.4.0(picomatch@4.0.2):
fdir@6.4.2(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@ -3573,8 +3576,17 @@ snapshots:
has-flag@4.0.0: {}
html-element-attributes@3.4.0: {}
html-es6cape@2.0.2: {}
html-tags@3.3.1: {}
html-template-tag@4.1.0:
dependencies:
html-element-attributes: 3.4.0
html-es6cape: 2.0.2
http-cache-semantics@4.1.1: {}
http2-wrapper@1.0.3:
@ -3684,10 +3696,10 @@ snapshots:
mathml-tag-names@2.1.3: {}
mdn-data@2.0.30: {}
mdn-data@2.10.0: {}
mdn-data@2.11.1: {}
meow@13.2.0: {}
merge-stream@2.0.0: {}
@ -3804,11 +3816,11 @@ snapshots:
path-type@4.0.0: {}
peek-readable@5.2.0: {}
peek-readable@5.3.1: {}
php-parser@3.1.5: {}
picocolors@1.1.0: {}
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@ -3846,7 +3858,7 @@ snapshots:
postcss@8.4.47:
dependencies:
nanoid: 3.3.7
picocolors: 1.1.0
picocolors: 1.1.1
source-map-js: 1.2.1
prelude-ls@1.2.1: {}
@ -3959,7 +3971,7 @@ snapshots:
sh-syntax@0.4.2:
dependencies:
tslib: 2.7.0
tslib: 2.8.0
shebang-command@1.2.0:
dependencies:
@ -4022,7 +4034,7 @@ snapshots:
strtok3@7.1.1:
dependencies:
'@tokenizer/token': 0.3.0
peek-readable: 5.2.0
peek-readable: 5.3.1
style-search@0.1.0: {}
@ -4036,7 +4048,7 @@ snapshots:
postcss-scss: 4.0.9(postcss@8.4.47)
stylelint: 16.10.0(typescript@5.7.0-dev.20241010)
stylelint-config-recommended: 14.0.1(stylelint@16.10.0(typescript@5.7.0-dev.20241010))
stylelint-scss: 6.7.0(stylelint@16.10.0(typescript@5.7.0-dev.20241010))
stylelint-scss: 6.8.0(stylelint@16.10.0(typescript@5.7.0-dev.20241010))
optionalDependencies:
postcss: 8.4.47
@ -4050,7 +4062,7 @@ snapshots:
postcss: 8.4.47
postcss-scss: 4.0.9(postcss@8.4.47)
stylelint: 16.10.0(typescript@5.7.0-dev.20241010)
stylelint-scss: 6.7.0(stylelint@16.10.0(typescript@5.7.0-dev.20241010))
stylelint-scss: 6.8.0(stylelint@16.10.0(typescript@5.7.0-dev.20241010))
stylelint-config-standard-scss@13.1.0(postcss@8.4.47)(stylelint@16.10.0(typescript@5.7.0-dev.20241010)):
dependencies:
@ -4079,11 +4091,12 @@ snapshots:
dependencies:
stylelint: 16.10.0(typescript@5.7.0-dev.20241010)
stylelint-scss@6.7.0(stylelint@16.10.0(typescript@5.7.0-dev.20241010)):
stylelint-scss@6.8.0(stylelint@16.10.0(typescript@5.7.0-dev.20241010)):
dependencies:
css-tree: 2.3.1
css-tree: 3.0.0
is-plain-object: 5.0.0
known-css-properties: 0.34.0
mdn-data: 2.11.1
postcss-media-query-parser: 0.2.3
postcss-resolve-nested-selector: 0.1.6
postcss-selector-parser: 6.1.2
@ -4118,7 +4131,7 @@ snapshots:
meow: 13.2.0
micromatch: 4.0.8
normalize-path: 3.0.0
picocolors: 1.1.0
picocolors: 1.1.1
postcss: 8.4.47
postcss-resolve-nested-selector: 0.1.6
postcss-safe-parser: 7.0.1(postcss@8.4.47)
@ -4176,13 +4189,13 @@ snapshots:
dependencies:
typescript: 5.7.0-dev.20241010
ts-pattern@5.4.0: {}
ts-pattern@5.5.0: {}
tsconfck@3.1.4(typescript@5.7.0-dev.20241010):
optionalDependencies:
typescript: 5.7.0-dev.20241010
tslib@2.7.0: {}
tslib@2.8.0: {}
type-check@0.4.0:
dependencies:
@ -4190,11 +4203,11 @@ snapshots:
type-fest@4.26.1: {}
typescript-eslint@8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010):
typescript-eslint@8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010):
dependencies:
'@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010))(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010))(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
'@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.7.0-dev.20241010)
optionalDependencies:
typescript: 5.7.0-dev.20241010
transitivePeerDependencies:
@ -4211,7 +4224,7 @@ snapshots:
dependencies:
browserslist: 4.24.0
escalade: 3.2.0
picocolors: 1.1.0
picocolors: 1.1.1
uri-js@4.4.1:
dependencies:
@ -4225,25 +4238,25 @@ snapshots:
vite-plugin-manifest-sri@0.2.0: {}
vite-plugin-valibot-env@0.8.0(valibot@1.0.0-beta.0(typescript@5.7.0-dev.20241010))(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)):
vite-plugin-valibot-env@0.8.1(valibot@1.0.0-beta.0(typescript@5.7.0-dev.20241010))(vite@5.4.9(@types/node@22.7.5)(sass@1.79.5)):
dependencies:
kleur: 4.1.5
log-symbols: 7.0.0
valibot: 1.0.0-beta.0(typescript@5.7.0-dev.20241010)
vite: 5.4.8(@types/node@22.7.5)(sass@1.79.5)
vite: 5.4.9(@types/node@22.7.5)(sass@1.79.5)
vite-tsconfig-paths@5.0.1(typescript@5.7.0-dev.20241010)(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)):
vite-tsconfig-paths@5.0.1(typescript@5.7.0-dev.20241010)(vite@5.4.9(@types/node@22.7.5)(sass@1.79.5)):
dependencies:
debug: 4.3.7
globrex: 0.1.2
tsconfck: 3.1.4(typescript@5.7.0-dev.20241010)
optionalDependencies:
vite: 5.4.8(@types/node@22.7.5)(sass@1.79.5)
vite: 5.4.9(@types/node@22.7.5)(sass@1.79.5)
transitivePeerDependencies:
- supports-color
- typescript
vite@5.4.8(@types/node@22.7.5)(sass@1.79.5):
vite@5.4.9(@types/node@22.7.5)(sass@1.79.5):
dependencies:
esbuild: 0.21.5
postcss: 8.4.47

View file

@ -15,12 +15,26 @@ $modeles = ["boutique.twig"];
/** @var array<WC_Product> $informations_produits Les informations brutes des Produits. */
$informations_produits = wc_get_products([
"orderby" => "date",
"limit" => 12,
"order" => "DESC",
"orderby" => "date",
]);
/** @var InformationsProduitShop $produits Les informations strictement nécessaires pour la grille des Produits. */
$produits = array_map(callback: "recupere_informations_produit_shop", array: $informations_produits);
$contexte["produits"] = $produits;
/**
* Charge les Scripts nécessaires pour la page Boutique.
*/
function charge_scripts_page_boutique(): void {
wp_enqueue_script_module(
id: "haiku-atelier-2024-scripts-page-boutique",
src: get_template_directory_uri() . "/assets/js/scripts-page-boutique.js",
deps: [],
version: filemtime(get_template_directory() . "/assets/js/scripts-page-boutique.js"),
);
}
add_action("wp_enqueue_scripts", "charge_scripts_page_boutique");
// Rendu
Timber::render($filenames = $modeles, $data = $contexte);

View file

@ -459,7 +459,7 @@ ul.avec-puce-cercle a {
*/
}
#en-tete .compte-panier a {
min-width: 9ch; /* 1 */
min-width: 10ch; /* 1 */
text-transform: lowercase;
}
#en-tete .compte-panier a.lien-compte {

View file

@ -405,7 +405,7 @@ ul.avec-puce-cercle a {
#en-tete .compte-panier a {
text-transform: lowercase;
min-width: 9ch;
min-width: 10ch;
}
#en-tete .compte-panier a.lien-compte {

File diff suppressed because one or more lines are too long

View file

@ -175,14 +175,11 @@
border-left: initial;
}
#panneau-panier .panneau__sous-totaux {
width: fit-content;
width: min(30rem, 100%);
margin: auto;
padding: var(--espace-l) 0;
padding: var(--espace-l) var(--espace-xl);
text-align: center;
}
#panneau-panier .panneau__sous-totaux p + p {
margin-top: var(--espace-l);
}
#panneau-panier .panneau__sous-totaux__ligne {
display: flex;
flex-flow: row nowrap;
@ -190,12 +187,17 @@
font-style: italic;
}
#panneau-panier .panneau__sous-totaux__ligne strong {
text-align: right;
text-transform: lowercase;
}
#panneau-panier .panneau__sous-totaux__ligne.sous-total strong {
font-style: normal;
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type {
text-align: right;
}
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type span {
color: grey;
}
#panneau-panier .panneau__sous-totaux__conditions-livraison {
margin-top: var(--espace-l);
font-size: 0.8rem;
font-weight: 450;
color: grey;
@ -361,6 +363,7 @@
}
#page-panier .panneau__en-tete {
position: sticky;
z-index: 2;
top: var(--menu-section-marges-bloc-debut);
display: block;
align-content: center;

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;AAOA;AAOA;AAAA;AAAA;AAAA;AAmBA;AAOA;;AAtCA;EACE;;AAKF;EACE;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;IACE;IACA;;;AASZ;EACE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAMN;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;ACjQJ;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAMR;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC/IN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAON;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA","file":"page-panier.css"}
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;AAOA;AAOA;AAAA;AAAA;AAAA;AAmBA;AAOA;;AAtCA;EACE;;AAKF;EACE;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;IACE;IACA;;;AASZ;EACE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAMN;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;ACtQJ;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAMR;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC/IN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAON;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA","file":"page-panier.css"}

View file

@ -191,16 +191,12 @@
}
#panneau-panier .panneau__sous-totaux {
padding: var(--espace-l) 0;
padding: var(--espace-l) var(--espace-xl);
text-align: center;
width: fit-content;
width: min(30rem, 100%);
margin: auto;
}
#panneau-panier .panneau__sous-totaux p + p {
margin-top: var(--espace-l);
}
#panneau-panier .panneau__sous-totaux__ligne {
flex-flow: row;
justify-content: space-between;
@ -209,14 +205,20 @@
}
#panneau-panier .panneau__sous-totaux__ligne strong {
text-align: right;
text-transform: lowercase;
}
#panneau-panier .panneau__sous-totaux__ligne.sous-total strong {
font-style: normal;
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type {
text-align: right;
}
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type span {
color: gray;
}
#panneau-panier .panneau__sous-totaux__conditions-livraison {
margin-top: var(--espace-l);
color: gray;
letter-spacing: var(--espacement-inter-lettres-etendu-s);
font-size: .8rem;
@ -402,6 +404,7 @@
}
#page-panier .panneau__en-tete {
z-index: 2;
top: var(--menu-section-marges-bloc-debut);
min-height: var(--menu-categories-produits-hauteur);
max-height: var(--menu-categories-produits-hauteur);

File diff suppressed because one or more lines are too long

View file

@ -4,6 +4,14 @@
"name": "Either",
"integrity": "sha512-iA88qYfaqIo+2/H0VzUP5VPULY8gMF4bgybyguKQQj/k1/LKHmurwKDvKCIPz3/kdz+2jUjG9/vlqu9+i6/klg=="
},
"_MaybeAsync.AE1jnxuc.js": {
"file": "MaybeAsync.AE1jnxuc.js",
"name": "MaybeAsync",
"imports": [
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-zBecrvIRiJOu6YYRpnc0k8S2hhntD+UpPtg3zhLd4KQSyWdXQTt6ubhfDTOhBtMYi/W1LLcZX89krSQqxkWfGA=="
},
"_chunk-7BKSRZNG.C39W3Wne.js": {
"file": "chunk-7BKSRZNG.C39W3Wne.js",
"name": "chunk-7BKSRZNG",
@ -22,10 +30,10 @@
"name": "exports",
"integrity": "sha512-4L1NzKs7XuOMvUiv40ZQLFZJItYzg2xO1M1/o+W9uoqJCevPc0wu43ims0AqUOnFutsTK+5kwQMlOUa82vCTdA=="
},
"_index.CCa5Y_L9.js": {
"file": "index.CCa5Y_L9.js",
"_index.BgFo03XT.js": {
"file": "index.BgFo03XT.js",
"name": "index",
"integrity": "sha512-90fLqYbmnlMjhgjkHf4kDEY5l9tWpXgXpK3UZHKW6v9OsRy/984W2biSAMatbQDVAdGBAc1qilsYHB881LHY5w=="
"integrity": "sha512-mkUDAVXY6FYNwZLm2RKwfRhpeDzJmsQXUZRCBb0qzw4E663VOhzr3KVUZYKFwER5/sVOSEhzENOr0L0Be37xMA=="
},
"_index.CeK6pfoJ.js": {
"file": "index.CeK6pfoJ.js",
@ -37,7 +45,7 @@
"name": "api",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"isEntry": true,
"integrity": "sha512-isSbYHck1VApW4KWFvzCqcYoJ7U4biNCdQ3ow29jcLclrNvPSUarq5a4fuGtSU62V05477qOQygpvqRjkFQVUQ=="
"integrity": "sha512-KlQ3CP8fpSdVqqlBACQdu8tIF+UfpFqyN9VzMFUMg67ePX4Rw4quG7F0MXv061/kmH2gic+/W+9UFUStvO94mQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts": {
"file": "cart2.js",
@ -51,7 +59,7 @@
"name": "dom",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"isEntry": true,
"integrity": "sha512-TRKlKpx3Dv5K4Vh0v/dJ+coW8iGh7cI/HVHStw2Un0CaL9qAEGEulyM8wNSQU+j8F4YEjFDkvIe+xdl0zhqK+g=="
"integrity": "sha512-xwz5v6vA/BIYqmNwycPaoCRusHiZFuQcuUKamfU48ZyhJS1KTfBuTbg14KSioNySU7X/xFTI8KYTYujdXJ+/+Q=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts": {
"file": "messages3.js",
@ -60,6 +68,13 @@
"isEntry": true,
"integrity": "sha512-M8me/iGRLfItVHaEf+BhA3xdEIxEwdyNuN+H87daJ1jl1oOENbROB7ub6RPP47NdFsQUChTRphEhQglT+qc6RA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts": {
"file": "products2.js",
"name": "products",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts",
"isEntry": true,
"integrity": "sha512-/zFsvDZX1rrqufbSChpUygVykHsMrhiyH+UnMYe2FmVjAoHeW62C8DyS13nboxkBdBVWVB5eC0DH5x6klYGhTQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/gaffe.ts": {
"file": "gaffe.js",
"name": "gaffe",
@ -109,9 +124,10 @@
"isEntry": true,
"imports": [
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"_MaybeAsync.AE1jnxuc.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-/I7wyKvxLmRqqV/VPkMIpCO6ERcFxsNVO2qaF8vp9tFc00GtuFFzBpCnJZeeFR1FW9cGENex9Sq5bBBcmW2dfw=="
"integrity": "sha512-tGCX6+XL+3Dhu/qmMH5NTKonqdCqHpyjAg+EdaArvuHgW1IXl7sQ/89n4PLfaeete/zs2+3d4ZDYBAhdMtrzxw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts": {
"file": "messages.js",
@ -119,16 +135,18 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"_Either.wHNxn7Os.js",
"_exports.DMCTjIlP.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts"
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts"
],
"integrity": "sha512-txyIVexRgXbPLkSwTFO9si1mvKV1dO2v04q8wozhdn1YHfnCojwbJBciVP6MyGat6TQqNI/hBdpeOnvFcOGc8A=="
"integrity": "sha512-e9MTWFujks17HJeMP6TlzT/GqEW5Dpe8+uHYwqXPpoeFZeU6M2Z+TmdfN2Fc49o03Ula2Um5ar5sc41cK+fUSQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts": {
"file": "nombres.js",
@ -145,13 +163,13 @@
"imports": [
"_chunk-7BKSRZNG.C39W3Wne.js",
"_index.CeK6pfoJ.js",
"_index.CCa5Y_L9.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts",
"_exports.DMCTjIlP.js"
],
"integrity": "sha512-NvN86x4tFNVdlV/fniGzu20tlqfPTk2VaElCMfu+DofDgvceQOh9c6smO+KrrT9G7tXm7Lz6FGUjdSoIoasY2A=="
"integrity": "sha512-GJBtNFtSQsddbW8ZQKquJktaJ3oyVDmg87XsjWSNDgIbcIDoGs9/RSR+WOzRdGKX0aWTDGRHpZzkRTFTgZBiWA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts": {
"file": "adresses.js",
@ -159,9 +177,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js"
"_index.BgFo03XT.js"
],
"integrity": "sha512-jKIONskkSs0NFR/cmkT7qtXsnMDNRXS9tPRhT+rKzwoErAgAnHuBKooSpf/OFsDKC1lkZrzbVZjBcKTXgFubzg=="
"integrity": "sha512-PWB/yz54toSPVvIpyT6zCJIHOzVNIX+M154xCc2xtvUCRKlZfUCkLYrBkBakB61b3NpGBmEclPVxmX8X/coW2g=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-add-item.ts": {
"file": "cart-add-item.js",
@ -169,9 +187,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-add-item.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js"
"_index.BgFo03XT.js"
],
"integrity": "sha512-Fv0Uo9mdDj+0r41caJbUsgI/Y9l2DORQdWGNriQcmSbZa01rgFBO0cbmvdXFd/SLtuXAsou0LR2+tcopArD62A=="
"integrity": "sha512-3TBIZu8/bsHhYY02HEQESgI0+LjS+vprxbZZwZ7j5S49Juma4bd3ALdAPsO5Ja2l4P+C2wRs7O+zkhigx4w/oA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-remove-item.ts": {
"file": "cart-remove-item.js",
@ -179,9 +197,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-remove-item.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js"
"_index.BgFo03XT.js"
],
"integrity": "sha512-+yl2DCnj7GEme8NFHsHXiDRXvtmiu5k2rAYjFIKC4+vj0OcdwwMe1PiA5NmxY7trJVlQ+cbod1jXuih52BwbyQ=="
"integrity": "sha512-KZPK9mt1gojaqHvTt0kjsv3XuqR8pL+fjUYBfaYztCXySS1aZhK5bVTvJ7j3gl7L1DSaYgl0QW0BAxCzhiZwMA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-update-customer.ts": {
"file": "cart-update-customer.js",
@ -189,10 +207,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-update-customer.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts"
],
"integrity": "sha512-THkmTxVm3dNONEjEq2KYH8OSWdZLz1DRgMDz5VaFxjvl+vitvyGaXdIFJrU+l+1TI+q5DtFJPFbqxnysmT0r3g=="
"integrity": "sha512-WL31TJPcQlZIa6+H232n5HgcWvg0m2RGT0I6aTvNyJYdDNtlhAoDBRVaJM+pYaY11W4YuMNwOkCefvdcYcknBQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-update-item.ts": {
"file": "cart-update-item.js",
@ -200,9 +218,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart-update-item.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js"
"_index.BgFo03XT.js"
],
"integrity": "sha512-yMT1BHxguhSAOOcT+w+x9qEs8IyKsDvA+Efap2v+ZJcxjp5Re5bMmQpqM/PmdhusBOLKkMJIdculJj0Z3Ml+ng=="
"integrity": "sha512-49LIvn0U3OOvPPmzSh9iq8j+VOD+bb4OqdXBuxJh/KLS7jgxq35OcUrJQKiERMwk9klgSE/OCnY/As8a7mVTEQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts": {
"file": "cart.js",
@ -210,10 +228,23 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts"
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts"
],
"integrity": "sha512-fQTej3IG0FYaDBUsiAI19t5iloXlcHSUTb0RsXrE3VgieIVfdUDWiBxN+bIoTrsRMi8ZJVITSQtV4PVyQk4Rsw=="
"integrity": "sha512-o+jIghAfwI7OEahl1kLA1AqSO/61slG+vWVzKllNF78u6mPcTX/rxUZa9sXlxLQ16UQqkNOxVqQ5fiiTG1hu7Q=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts": {
"file": "couts-livraison.js",
"name": "couts-livraison",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts",
"isEntry": true,
"imports": [
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts"
],
"integrity": "sha512-65X1bR5sntwf7hF6ZRi5snb8/8dYXQjiOi0o385K0SGO6xmtiWZUUv+5On8HiGVbm0BdCUuOIMepobxReFGnLQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts": {
"file": "erreurs2.js",
@ -221,9 +252,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js"
"_index.BgFo03XT.js"
],
"integrity": "sha512-WnxjO9YyxH/KqyeIyTxMrWQ9Z10G/645ajz2fACKfJCAWuuiYEXXItwRsoFnnKfeYlyZRXEepcJJWxzubBsSeQ=="
"integrity": "sha512-hjLUa8RcdczGiS1xy8y/Gs6sQ9XQSlgFJXNw78nXtSM1EcMcBEJrwM3lV/VAh2Z2nS1C592/ANRhJicnXknpqw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts": {
"file": "messages2.js",
@ -231,12 +262,25 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"isEntry": true,
"imports": [
"_index.CCa5Y_L9.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts"
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts"
],
"integrity": "sha512-dsnjuUCQSYJFqA7Vp7sP28s35HhIa1VYSWUHWK7vXhgW2WjDwUbpDzieqN7vyRgwgsXVKGdD8hLS+NJm23O19w=="
"integrity": "sha512-gDKxylkDFbH2NALf/lIfPyDRpd9S563DGaADkIkXeWAOjcQTYu9RuFwC9DMuN2lDQJn+IYEnmz1EiZIDpfkv7Q=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/products.ts": {
"file": "products.js",
"name": "products",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/products.ts",
"isEntry": true,
"imports": [
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
],
"integrity": "sha512-QlHEB2GFBcjh0Sll/7biVUiji3iP9QbGKaSfzg5avjUHVO2tTKCgAvqkvsUW48kND8cJeDYT6u7O2fKmBYN3sQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts": {
"file": "utils.js",
@ -267,12 +311,14 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"_exports.DMCTjIlP.js",
"_Either.wHNxn7Os.js",
"_index.CCa5Y_L9.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts"
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts"
],
"integrity": "sha512-5kXYj+AE5jMTevcUBOZGPCwHBU4dhilcFP9NQe3SvI2VvJIiGzlr/aVh1OLJ6w/X/iNYvf3cl0f+p+lo2BKwoA=="
"integrity": "sha512-Pb4GVNTRHc/chtjbSl4vP97cucG+qqZ9MTajnUEYrfv0mGwJxCjn7rk6FV+Hk05LODX23ljAdEPxx5Kp3uPdXA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-accueil.ts": {
"file": "scripts-page-accueil.js",
@ -291,6 +337,31 @@
],
"integrity": "sha512-FPEzyKVN5yR1bFurSMzgKI+mnFQqWe/VJVWv7ZakzzqicbKDak6yGjbuxV+Em/pffaDttGmNhO7bW83t3dB08A=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-boutique.ts": {
"file": "scripts-page-boutique.js",
"name": "scripts-page-boutique",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-boutique.ts",
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/gardes.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/products.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
"_MaybeAsync.AE1jnxuc.js",
"_Either.wHNxn7Os.js",
"_exports.DMCTjIlP.js",
"_chunk-7BKSRZNG.C39W3Wne.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts"
],
"integrity": "sha512-3DRzmFpKHx9rO8GDPwrs0eZmVE1ZzvivU6h1ajuDfaymWdEdzlEcX1wcvwyWrTBu6tsSrEEEfktG25BEpzx1Cg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
"file": "scripts-page-panier.js",
"name": "scripts-page-panier",
@ -300,7 +371,8 @@
"_chunk-RU7WR4KH.D5j7HXCF.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
"_chunk-7BKSRZNG.C39W3Wne.js",
"_index.CCa5Y_L9.js",
"_index.CeK6pfoJ.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
@ -316,12 +388,12 @@
"_Either.wHNxn7Os.js",
"_exports.DMCTjIlP.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"_index.CeK6pfoJ.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts"
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts"
],
"integrity": "sha512-8GSJr7ShZETNpEpcyGSYv4uohHCOibRIbWct+4Qppcc5g8W9YmBMxQ6zOFD3mUHWpq/MHcqfeyA00hAAb6+8TQ=="
"integrity": "sha512-XHUsI1LLTWRlSCATokiesk5hfsEJWCwy3DGjmyzOixzn+RmTIqN9qzW3eh8ZRmSgSIBwBlIqSuSg0fY9kifVEQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
"file": "scripts-page-produit.js",
@ -333,7 +405,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
"_chunk-7BKSRZNG.C39W3Wne.js",
"_index.CeK6pfoJ.js",
"_index.CCa5Y_L9.js",
"_index.BgFo03XT.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
@ -347,8 +419,10 @@
"_exports.DMCTjIlP.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts"
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/couts-livraison.ts"
],
"integrity": "sha512-nCQjnWYyJKCD6nxZIQHC2S20lpQH3u5DHf4mXHaT+K0/NeltuwhIWs3REhHsFo4XVhp3uInBv9KQMhkTi1nwFQ=="
"integrity": "sha512-9KSU2DK2nWVp5khzZuZRx1o5YAeB4L8PxfbGUpshm6fK8yp4r409y5DqfXe3ubguUs9SAhH8sz0TS3tg2NHhwA=="
}
}

View file

@ -0,0 +1,314 @@
import { E as Either, r as right, l as left, M as Maybe, n as nothing, j as just } from "./Either.wHNxn7Os.js";
var _a$1;
const helpers$1 = {
liftEither(either) {
if (either.isRight()) {
return Promise.resolve(either.extract());
}
throw either.extract();
},
fromPromise(promise) {
return promise.then(helpers$1.liftEither);
},
throwE(error) {
throw error;
}
};
class EitherAsyncImpl {
constructor(runPromise) {
this.runPromise = runPromise;
this[_a$1] = "EitherAsync";
this["fantasy-land/chain"] = this.chain;
this["fantasy-land/alt"] = this.alt;
this.then = (onfulfilled, onrejected) => {
return this.run().then(onfulfilled, onrejected);
};
}
leftOrDefault(defaultValue) {
return this.run().then((x) => x.leftOrDefault(defaultValue));
}
orDefault(defaultValue) {
return this.run().then((x) => x.orDefault(defaultValue));
}
join() {
return EitherAsync(async (helpers2) => {
const either = await this;
if (either.isRight()) {
const nestedEither = await either.extract();
return helpers2.liftEither(nestedEither);
}
return helpers2.liftEither(either);
});
}
ap(eitherF) {
return EitherAsync(async (helpers2) => {
const otherValue = await eitherF;
if (otherValue.isRight()) {
const thisValue = await this.run();
if (thisValue.isRight()) {
return otherValue.extract()(thisValue.extract());
} else {
return helpers2.liftEither(thisValue);
}
}
return helpers2.liftEither(otherValue);
});
}
alt(other) {
return EitherAsync(async (helpers2) => {
const thisValue = await this.run();
if (thisValue.isRight()) {
return thisValue.extract();
} else {
const otherValue = await other;
return helpers2.liftEither(otherValue);
}
});
}
extend(f) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
if (either.isRight()) {
const v = EitherAsync.liftEither(either);
return helpers2.liftEither(right(f(v)));
}
return helpers2.liftEither(either);
});
}
async run() {
try {
return right(await this.runPromise(helpers$1));
} catch (e) {
return left(e);
}
}
bimap(f, g) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
try {
return await helpers2.liftEither(either.bimap(f, g));
} catch (e) {
throw await e;
}
});
}
map(f) {
return EitherAsync((helpers2) => this.runPromise(helpers2).then(f));
}
mapLeft(f) {
return EitherAsync(async (helpers2) => {
try {
return await this.runPromise(helpers2);
} catch (e) {
throw await f(e);
}
});
}
chain(f) {
return EitherAsync(async (helpers2) => {
const value = await this.runPromise(helpers2);
return helpers2.fromPromise(f(value));
});
}
chainLeft(f) {
return EitherAsync(async (helpers2) => {
try {
return await this.runPromise(helpers2);
} catch (e) {
return helpers2.fromPromise(f(e));
}
});
}
toMaybeAsync() {
return MaybeAsync(async ({ liftMaybe }) => {
const either = await this.run();
return liftMaybe(either.toMaybe());
});
}
swap() {
return EitherAsync(async (helpers2) => {
const either = await this.run();
if (either.isRight())
helpers2.throwE(either.extract());
return helpers2.liftEither(right(either.extract()));
});
}
ifLeft(effect) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
either.ifLeft(effect);
return helpers2.liftEither(either);
});
}
ifRight(effect) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
either.ifRight(effect);
return helpers2.liftEither(either);
});
}
void() {
return this.map((_) => {
});
}
caseOf(patterns) {
return this.run().then((x) => x.caseOf(patterns));
}
finally(effect) {
return EitherAsync(({ fromPromise }) => fromPromise(this.run().finally(effect)));
}
}
_a$1 = Symbol.toStringTag;
const EitherAsync = Object.assign((runPromise) => new EitherAsyncImpl(runPromise), {
fromPromise: (f) => EitherAsync(({ fromPromise: fP }) => fP(f())),
liftEither: (either) => EitherAsync(({ liftEither }) => liftEither(either)),
lefts: (list) => Promise.all(list.map((x) => x.run())).then(Either.lefts),
rights: (list) => Promise.all(list.map((x) => x.run())).then(Either.rights),
sequence: (eas) => EitherAsync(async (helpers2) => {
let res = [];
for await (const e of eas) {
if (e.isLeft()) {
return helpers2.liftEither(e);
}
res.push(e.extract());
}
return helpers2.liftEither(right(res));
}),
all: (eas) => EitherAsync.fromPromise(async () => Promise.all(eas).then(Either.sequence))
});
EitherAsyncImpl.prototype.constructor = EitherAsync;
var _a;
const helpers = {
liftMaybe(maybe) {
if (maybe.isJust()) {
return Promise.resolve(maybe.extract());
}
throw nothing;
},
fromPromise(promise) {
return promise.then(helpers.liftMaybe);
}
};
class MaybeAsyncImpl {
constructor(runPromise) {
this.runPromise = runPromise;
this[_a] = "MaybeAsync";
this["fantasy-land/chain"] = this.chain;
this["fantasy-land/filter"] = this.filter;
this["fantasy-land/alt"] = this.alt;
}
orDefault(defaultValue) {
return this.run().then((x) => x.orDefault(defaultValue));
}
join() {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
if (maybe.isJust()) {
const nestedMaybe = await maybe.extract();
return helpers2.liftMaybe(nestedMaybe);
}
return helpers2.liftMaybe(nothing);
});
}
ap(maybeF) {
return MaybeAsync(async (helpers2) => {
const otherValue = await maybeF;
if (otherValue.isJust()) {
const thisValue = await this.run();
if (thisValue.isJust()) {
return otherValue.extract()(thisValue.extract());
} else {
return helpers2.liftMaybe(nothing);
}
}
return helpers2.liftMaybe(nothing);
});
}
alt(other) {
return MaybeAsync(async (helpers2) => {
const thisValue = await this.run();
if (thisValue.isJust()) {
return thisValue.extract();
} else {
const otherValue = await other;
return helpers2.liftMaybe(otherValue);
}
});
}
extend(f) {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
if (maybe.isJust()) {
const v = MaybeAsync.liftMaybe(maybe);
return helpers2.liftMaybe(just(f(v)));
}
return helpers2.liftMaybe(nothing);
});
}
filter(pred) {
return MaybeAsync(async (helpers2) => {
const value = await this.run();
return helpers2.liftMaybe(value.filter(pred));
});
}
async run() {
try {
return just(await this.runPromise(helpers));
} catch {
return nothing;
}
}
map(f) {
return MaybeAsync((helpers2) => this.runPromise(helpers2).then(f));
}
chain(f) {
return MaybeAsync(async (helpers2) => {
const value = await this.runPromise(helpers2);
return helpers2.fromPromise(f(value));
});
}
toEitherAsync(error) {
return EitherAsync(async ({ liftEither }) => {
const maybe = await this.run();
return liftEither(maybe.toEither(error));
});
}
ifJust(effect) {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
maybe.ifJust(effect);
return helpers2.liftMaybe(maybe);
});
}
ifNothing(effect) {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
maybe.ifNothing(effect);
return helpers2.liftMaybe(maybe);
});
}
void() {
return this.map((_) => {
});
}
caseOf(patterns) {
return this.run().then((x) => x.caseOf(patterns));
}
finally(effect) {
return MaybeAsync(({ fromPromise }) => fromPromise(this.run().finally(effect)));
}
then(onfulfilled, onrejected) {
return this.run().then(onfulfilled, onrejected);
}
}
_a = Symbol.toStringTag;
const MaybeAsync = Object.assign((runPromise) => new MaybeAsyncImpl(runPromise), {
catMaybes: (list) => Promise.all(list).then(Maybe.catMaybes),
fromPromise: (f) => MaybeAsync(({ fromPromise: fP }) => fP(f())),
liftMaybe: (maybe) => MaybeAsync(({ liftMaybe }) => liftMaybe(maybe))
});
MaybeAsyncImpl.prototype.constructor = MaybeAsync;
export {
EitherAsync as E
};
//# sourceMappingURL=MaybeAsync.AE1jnxuc.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,11 +1,12 @@
import { o as object, s as string, c as pipe, e as email } from "./index.CCa5Y_L9.js";
import { o as object, s as string } from "./index.BgFo03XT.js";
const WCStoreBillingAddressSchema = object({
address_1: string(),
address_2: string(),
city: string(),
company: string(),
country: string(),
email: pipe(string(), email()),
// email: v.optional(v.pipe(v.string(), v.email())),
email: string(),
first_name: string(),
last_name: string(),
phone: string(),

View file

@ -1 +1 @@
{"version":3,"file":"adresses.js","sources":["../../src/scripts/lib/schemas/adresses.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nexport const WCStoreBillingAddressSchema = v.object({\n address_1: v.string(),\n address_2: v.string(),\n city: v.string(),\n company: v.string(),\n country: v.string(),\n email: v.pipe(v.string(), v.email()),\n first_name: v.string(),\n last_name: v.string(),\n phone: v.string(),\n postcode: v.string(),\n state: v.string(),\n});\n\nexport const WCStoreShippingAddressSchema = v.object({\n address_1: v.string(),\n address_2: v.string(),\n city: v.string(),\n company: v.string(),\n country: v.string(),\n first_name: v.string(),\n last_name: v.string(),\n phone: v.string(),\n postcode: v.string(),\n state: v.string(),\n});\n"],"names":["v.object","v.string","v.pipe","v.email"],"mappings":";AAEa,MAAA,8BAA8BA,OAAS;AAAA,EAClD,WAAWC,OAAS;AAAA,EACpB,WAAWA,OAAS;AAAA,EACpB,MAAMA,OAAS;AAAA,EACf,SAASA,OAAS;AAAA,EAClB,SAASA,OAAS;AAAA,EAClB,OAAOC,KAAOD,OAAY,GAAAE,OAAS;AAAA,EACnC,YAAYF,OAAS;AAAA,EACrB,WAAWA,OAAS;AAAA,EACpB,OAAOA,OAAS;AAAA,EAChB,UAAUA,OAAS;AAAA,EACnB,OAAOA,OAAS;AAClB,CAAC;AAEY,MAAA,+BAA+BD,OAAS;AAAA,EACnD,WAAWC,OAAS;AAAA,EACpB,WAAWA,OAAS;AAAA,EACpB,MAAMA,OAAS;AAAA,EACf,SAASA,OAAS;AAAA,EAClB,SAASA,OAAS;AAAA,EAClB,YAAYA,OAAS;AAAA,EACrB,WAAWA,OAAS;AAAA,EACpB,OAAOA,OAAS;AAAA,EAChB,UAAUA,OAAS;AAAA,EACnB,OAAOA,OAAS;AAClB,CAAC;"}
{"version":3,"file":"adresses.js","sources":["../../src/scripts/lib/schemas/adresses.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nexport const WCStoreBillingAddressSchema = v.object({\n address_1: v.string(),\n address_2: v.string(),\n city: v.string(),\n company: v.string(),\n country: v.string(),\n // email: v.optional(v.pipe(v.string(), v.email())),\n email: v.string(),\n first_name: v.string(),\n last_name: v.string(),\n phone: v.string(),\n postcode: v.string(),\n state: v.string(),\n});\n\nexport const WCStoreShippingAddressSchema = v.object({\n address_1: v.string(),\n address_2: v.string(),\n city: v.string(),\n company: v.string(),\n country: v.string(),\n first_name: v.string(),\n last_name: v.string(),\n phone: v.string(),\n postcode: v.string(),\n state: v.string(),\n});\n"],"names":["v.object","v.string"],"mappings":";AAEa,MAAA,8BAA8BA,OAAS;AAAA,EAClD,WAAWC,OAAS;AAAA,EACpB,WAAWA,OAAS;AAAA,EACpB,MAAMA,OAAS;AAAA,EACf,SAASA,OAAS;AAAA,EAClB,SAASA,OAAS;AAAA;AAAA,EAElB,OAAOA,OAAS;AAAA,EAChB,YAAYA,OAAS;AAAA,EACrB,WAAWA,OAAS;AAAA,EACpB,OAAOA,OAAS;AAAA,EAChB,UAAUA,OAAS;AAAA,EACnB,OAAOA,OAAS;AAClB,CAAC;AAEY,MAAA,+BAA+BD,OAAS;AAAA,EACnD,WAAWC,OAAS;AAAA,EACpB,WAAWA,OAAS;AAAA,EACpB,MAAMA,OAAS;AAAA,EACf,SAASA,OAAS;AAAA,EAClB,SAASA,OAAS;AAAA,EAClB,YAAYA,OAAS;AAAA,EACrB,WAAWA,OAAS;AAAA,EACpB,OAAOA,OAAS;AAAA,EAChB,UAAUA,OAAS;AAAA,EACnB,OAAOA,OAAS;AAClB,CAAC;"}

View file

@ -4,17 +4,19 @@ const ROUTE_API_AJOUTE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/add-i
const ROUTE_API_RETIRE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/remove-item`;
const ROUTE_API_MAJ_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/update-item`;
const ROUTE_API_MAJ_CLIENT = `/${CHEMIN_API_REST}/wc/store/cart/update-customer`;
const ROUTE_API_PRODUITS = `/${CHEMIN_API_REST}/wc/store/products`;
const ENTETE_WC_NONCE = "Nonce";
const ENTETE_GLITCHTIP_RETRY_AFTER = "retry-after";
const ENTETE_GLITCHTIP_RATE_LIMITS = "x-sentry-rate-limits";
export {
ENTETE_GLITCHTIP_RATE_LIMITS as E,
ROUTE_API_RETIRE_ARTICLE_PANIER as R,
ROUTE_API_PRODUITS as R,
ENTETE_GLITCHTIP_RETRY_AFTER as a,
ROUTE_API_MAJ_ARTICLE_PANIER as b,
ROUTE_API_MAJ_CLIENT as c,
ROUTE_API_AJOUTE_ARTICLE_PANIER as d,
ENTETE_WC_NONCE as e,
ROUTE_API_PANIER as f
ROUTE_API_RETIRE_ARTICLE_PANIER as b,
ROUTE_API_MAJ_ARTICLE_PANIER as c,
ROUTE_API_MAJ_CLIENT as d,
ROUTE_API_AJOUTE_ARTICLE_PANIER as e,
ENTETE_WC_NONCE as f,
ROUTE_API_PANIER as g
};
//# sourceMappingURL=api.js.map

View file

@ -1 +1 @@
{"version":3,"file":"api.js","sources":["../../src/scripts/constantes/api.ts"],"sourcesContent":["// Chemins et Routes pour l'API WordPress\nexport const CHEMIN_API_REST = \"wp-json\";\nexport const ROUTE_API_PANIER = `/${CHEMIN_API_REST}/wc/store/cart`;\nexport const ROUTE_API_AJOUTE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/add-item`;\nexport const ROUTE_API_RETIRE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/remove-item`;\nexport const ROUTE_API_MAJ_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/update-item`;\nexport const ROUTE_API_MAJ_CLIENT = `/${CHEMIN_API_REST}/wc/store/cart/update-customer`;\n\n// En-têtes\nexport const ENTETE_WC_NONCE = \"Nonce\";\nexport const ENTETE_GLITCHTIP_RETRY_AFTER = \"retry-after\";\nexport const ENTETE_GLITCHTIP_RATE_LIMITS = \"x-sentry-rate-limits\";\n"],"names":[],"mappings":"AACO,MAAM,kBAAkB;AAClB,MAAA,mBAAmB,IAAI,eAAe;AACtC,MAAA,kCAAkC,IAAI,eAAe;AACrD,MAAA,kCAAkC,IAAI,eAAe;AACrD,MAAA,+BAA+B,IAAI,eAAe;AAClD,MAAA,uBAAuB,IAAI,eAAe;AAGhD,MAAM,kBAAkB;AACxB,MAAM,+BAA+B;AACrC,MAAM,+BAA+B;"}
{"version":3,"file":"api.js","sources":["../../src/scripts/constantes/api.ts"],"sourcesContent":["// Chemins et Routes pour l'API WordPress\nexport const CHEMIN_API_REST = \"wp-json\";\nexport const ROUTE_API_PANIER = `/${CHEMIN_API_REST}/wc/store/cart`;\nexport const ROUTE_API_AJOUTE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/add-item`;\nexport const ROUTE_API_RETIRE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/remove-item`;\nexport const ROUTE_API_MAJ_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/update-item`;\nexport const ROUTE_API_MAJ_CLIENT = `/${CHEMIN_API_REST}/wc/store/cart/update-customer`;\nexport const ROUTE_API_PRODUITS = `/${CHEMIN_API_REST}/wc/store/products`;\n\n// En-têtes\nexport const ENTETE_WC_NONCE = \"Nonce\";\nexport const ENTETE_GLITCHTIP_RETRY_AFTER = \"retry-after\";\nexport const ENTETE_GLITCHTIP_RATE_LIMITS = \"x-sentry-rate-limits\";\n"],"names":[],"mappings":"AACO,MAAM,kBAAkB;AAClB,MAAA,mBAAmB,IAAI,eAAe;AACtC,MAAA,kCAAkC,IAAI,eAAe;AACrD,MAAA,kCAAkC,IAAI,eAAe;AACrD,MAAA,+BAA+B,IAAI,eAAe;AAClD,MAAA,uBAAuB,IAAI,eAAe;AAC1C,MAAA,qBAAqB,IAAI,eAAe;AAG9C,MAAM,kBAAkB;AACxB,MAAM,+BAA+B;AACrC,MAAM,+BAA+B;"}

View file

@ -1,4 +1,4 @@
import { o as object, a as optional, p as parse, n as number, b as array, s as string } from "./index.CCa5Y_L9.js";
import { o as object, a as optional, n as number, b as array, p as parse, s as string } from "./index.BgFo03XT.js";
const WCStoreCartAddItemArgsItemsSchema = object({
/** Variation attribute name. */
attribute: string(),

View file

@ -1,4 +1,4 @@
import { o as object, s as string } from "./index.CCa5Y_L9.js";
import { o as object, s as string } from "./index.BgFo03XT.js";
const WCStoreCartRemoveItemArgsSchema = object({
/** Unique identifier (key) for the basket item. */
key: string()

View file

@ -1,4 +1,4 @@
import { o as object, a as optional } from "./index.CCa5Y_L9.js";
import { o as object, a as optional } from "./index.BgFo03XT.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCStoreCartUpdateCustomerArgsSchema = object({
billing_address: optional(WCStoreBillingAddressSchema),

View file

@ -1,4 +1,4 @@
import { o as object, s as string, c as pipe, m as minValue, n as number } from "./index.CCa5Y_L9.js";
import { o as object, s as string, c as pipe, m as minValue, n as number } from "./index.BgFo03XT.js";
const WCStoreCartUpdateItemArgsSchema = object({
/** Unique identifier (key) for the basket item to update. */
key: string(),

View file

@ -1,5 +1,7 @@
import { o as object, f as boolean, d as enum_, s as string, u as unknown, n as number, b as array, g as union, c as pipe, h as null_, j as url, k as integer } from "./index.CCa5Y_L9.js";
import { o as object, d as boolean, e as enum_, s as string, u as unknown, n as number, b as array, f as union, c as pipe, g as null_, h as url, j as integer } from "./index.BgFo03XT.js";
import { C as CATALOG_VISIBILITIES } from "./cart2.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
import { W as WCStoreShippingRateSchema } from "./couts-livraison.js";
const WCStoreCartItemTotalsSchema = object({
currency_code: string(),
currency_decimal_separator: string(),
@ -57,22 +59,22 @@ const WCStoreCartTotalsSchema = object({
total_tax: string()
});
const WCStoreCartSchema = object({
billing_address: unknown(),
billing_address: WCStoreBillingAddressSchema,
coupons: unknown(),
cross_sells: unknown(),
errors: unknown(),
extensions: unknown(),
fees: unknown(),
has_calculated_shipping: unknown(),
has_calculated_shipping: boolean(),
items: array(WCStoreCartItemSchema),
items_count: pipe(number(), integer()),
items_weight: unknown(),
needs_payment: unknown(),
needs_shipping: unknown(),
items_weight: pipe(number(), integer()),
needs_payment: boolean(),
needs_shipping: boolean(),
payment_methods: unknown(),
payment_requirements: unknown(),
shipping_address: unknown(),
shipping_rates: unknown(),
shipping_address: WCStoreShippingAddressSchema,
shipping_rates: array(WCStoreShippingRateSchema),
totals: WCStoreCartTotalsSchema
});
export {

View file

@ -1 +1 @@
{"version":3,"file":"cart.js","sources":["../../src/scripts/lib/schemas/cart.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport { CATALOG_VISIBILITIES } from \"../../constantes/cart.ts\";\n\nexport const WCStoreCartItemTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n line_subtotal: v.string(),\n line_subtotal_tax: v.string(),\n line_total: v.string(),\n line_total_tax: v.string(),\n});\n\nexport const WCStoreCartItemSchema = v.object({\n backorders_allowed: v.boolean(),\n catalog_visibility: v.enum(CATALOG_VISIBILITIES),\n description: v.string(),\n extensions: v.unknown(),\n id: v.number(),\n images: v.array(v.unknown()),\n item_data: v.array(v.unknown()),\n key: v.string(),\n low_stock_remaining: v.union([v.null()]),\n name: v.string(),\n permalink: v.pipe(v.string(), v.url()),\n prices: v.unknown(),\n quantity: v.number(),\n quantity_limits: v.unknown(),\n short_description: v.string(),\n show_backorder_badge: v.boolean(),\n sku: v.string(),\n sold_individually: v.boolean(),\n totals: WCStoreCartItemTotalsSchema,\n type: v.string(),\n variation: v.array(v.unknown()),\n});\n\nexport const WCStoreCartTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n tax_lines: v.array(v.unknown()),\n total_discount: v.string(),\n total_discount_tax: v.string(),\n total_fees: v.string(),\n total_fees_tax: v.string(),\n total_items: v.string(),\n total_items_tax: v.string(),\n total_price: v.string(),\n total_shipping: v.union([v.string(), v.null()]),\n total_shipping_tax: v.union([v.string(), v.null()]),\n total_tax: v.string(),\n});\n\nexport const WCStoreCartSchema = v.object({\n billing_address: v.unknown(),\n coupons: v.unknown(),\n cross_sells: v.unknown(),\n errors: v.unknown(),\n extensions: v.unknown(),\n fees: v.unknown(),\n has_calculated_shipping: v.unknown(),\n items: v.array(WCStoreCartItemSchema),\n items_count: v.pipe(v.number(), v.integer()),\n items_weight: v.unknown(),\n needs_payment: v.unknown(),\n needs_shipping: v.unknown(),\n payment_methods: v.unknown(),\n payment_requirements: v.unknown(),\n shipping_address: v.unknown(),\n shipping_rates: v.unknown(),\n totals: WCStoreCartTotalsSchema,\n});\n"],"names":["v.object","v.string","v.number","v.boolean","v.enum","v.unknown","v.array","v.union","v.null","v.pipe","v.url","v.integer"],"mappings":";;AAIa,MAAA,8BAA8BA,OAAS;AAAA,EAClD,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,eAAeA,OAAS;AAAA,EACxB,mBAAmBA,OAAS;AAAA,EAC5B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAC3B,CAAC;AAEY,MAAA,wBAAwBD,OAAS;AAAA,EAC5C,oBAAoBG,QAAU;AAAA,EAC9B,oBAAoBC,MAAO,oBAAoB;AAAA,EAC/C,aAAaH,OAAS;AAAA,EACtB,YAAYI,QAAU;AAAA,EACtB,IAAIH,OAAS;AAAA,EACb,QAAQI,MAAQD,SAAW;AAAA,EAC3B,WAAWC,MAAQD,SAAW;AAAA,EAC9B,KAAKJ,OAAS;AAAA,EACd,qBAAqBM,MAAQ,CAACC,MAAE,CAAM,CAAC;AAAA,EACvC,MAAMP,OAAS;AAAA,EACf,WAAWQ,KAAOR,OAAY,GAAAS,KAAO;AAAA,EACrC,QAAQL,QAAU;AAAA,EAClB,UAAUH,OAAS;AAAA,EACnB,iBAAiBG,QAAU;AAAA,EAC3B,mBAAmBJ,OAAS;AAAA,EAC5B,sBAAsBE,QAAU;AAAA,EAChC,KAAKF,OAAS;AAAA,EACd,mBAAmBE,QAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAMF,OAAS;AAAA,EACf,WAAWK,MAAQD,SAAW;AAChC,CAAC;AAEY,MAAA,0BAA0BL,OAAS;AAAA,EAC9C,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,WAAWK,MAAQD,SAAW;AAAA,EAC9B,gBAAgBJ,OAAS;AAAA,EACzB,oBAAoBA,OAAS;AAAA,EAC7B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAAA,EACzB,aAAaA,OAAS;AAAA,EACtB,iBAAiBA,OAAS;AAAA,EAC1B,aAAaA,OAAS;AAAA,EACtB,gBAAgBM,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAC9C,oBAAoBD,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAClD,WAAWP,OAAS;AACtB,CAAC;AAEY,MAAA,oBAAoBD,OAAS;AAAA,EACxC,iBAAiBK,QAAU;AAAA,EAC3B,SAASA,QAAU;AAAA,EACnB,aAAaA,QAAU;AAAA,EACvB,QAAQA,QAAU;AAAA,EAClB,YAAYA,QAAU;AAAA,EACtB,MAAMA,QAAU;AAAA,EAChB,yBAAyBA,QAAU;AAAA,EACnC,OAAOC,MAAQ,qBAAqB;AAAA,EACpC,aAAaG,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC3C,cAAcN,QAAU;AAAA,EACxB,eAAeA,QAAU;AAAA,EACzB,gBAAgBA,QAAU;AAAA,EAC1B,iBAAiBA,QAAU;AAAA,EAC3B,sBAAsBA,QAAU;AAAA,EAChC,kBAAkBA,QAAU;AAAA,EAC5B,gBAAgBA,QAAU;AAAA,EAC1B,QAAQ;AACV,CAAC;"}
{"version":3,"file":"cart.js","sources":["../../src/scripts/lib/schemas/cart.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport { CATALOG_VISIBILITIES } from \"../../constantes/cart.ts\";\nimport { WCStoreBillingAddressSchema, WCStoreShippingAddressSchema } from \"./adresses.ts\";\nimport { WCStoreShippingRateSchema } from \"./couts-livraison.ts\";\n\nexport const WCStoreCartItemTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n line_subtotal: v.string(),\n line_subtotal_tax: v.string(),\n line_total: v.string(),\n line_total_tax: v.string(),\n});\n\nexport const WCStoreCartItemSchema = v.object({\n backorders_allowed: v.boolean(),\n catalog_visibility: v.enum(CATALOG_VISIBILITIES),\n description: v.string(),\n extensions: v.unknown(),\n id: v.number(),\n images: v.array(v.unknown()),\n item_data: v.array(v.unknown()),\n key: v.string(),\n low_stock_remaining: v.union([v.null()]),\n name: v.string(),\n permalink: v.pipe(v.string(), v.url()),\n prices: v.unknown(),\n quantity: v.number(),\n quantity_limits: v.unknown(),\n short_description: v.string(),\n show_backorder_badge: v.boolean(),\n sku: v.string(),\n sold_individually: v.boolean(),\n totals: WCStoreCartItemTotalsSchema,\n type: v.string(),\n variation: v.array(v.unknown()),\n});\n\nexport const WCStoreCartTotalsSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n tax_lines: v.array(v.unknown()),\n total_discount: v.string(),\n total_discount_tax: v.string(),\n total_fees: v.string(),\n total_fees_tax: v.string(),\n total_items: v.string(),\n total_items_tax: v.string(),\n total_price: v.string(),\n total_shipping: v.union([v.string(), v.null()]),\n total_shipping_tax: v.union([v.string(), v.null()]),\n total_tax: v.string(),\n});\n\nexport const WCStoreCartSchema = v.object({\n billing_address: WCStoreBillingAddressSchema,\n coupons: v.unknown(),\n cross_sells: v.unknown(),\n errors: v.unknown(),\n extensions: v.unknown(),\n fees: v.unknown(),\n has_calculated_shipping: v.boolean(),\n items: v.array(WCStoreCartItemSchema),\n items_count: v.pipe(v.number(), v.integer()),\n items_weight: v.pipe(v.number(), v.integer()),\n needs_payment: v.boolean(),\n needs_shipping: v.boolean(),\n payment_methods: v.unknown(),\n payment_requirements: v.unknown(),\n shipping_address: WCStoreShippingAddressSchema,\n shipping_rates: v.array(WCStoreShippingRateSchema),\n totals: WCStoreCartTotalsSchema,\n});\n"],"names":["v.object","v.string","v.number","v.boolean","v.enum","v.unknown","v.array","v.union","v.null","v.pipe","v.url","v.integer"],"mappings":";;;;AAMa,MAAA,8BAA8BA,OAAS;AAAA,EAClD,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,eAAeA,OAAS;AAAA,EACxB,mBAAmBA,OAAS;AAAA,EAC5B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAC3B,CAAC;AAEY,MAAA,wBAAwBD,OAAS;AAAA,EAC5C,oBAAoBG,QAAU;AAAA,EAC9B,oBAAoBC,MAAO,oBAAoB;AAAA,EAC/C,aAAaH,OAAS;AAAA,EACtB,YAAYI,QAAU;AAAA,EACtB,IAAIH,OAAS;AAAA,EACb,QAAQI,MAAQD,SAAW;AAAA,EAC3B,WAAWC,MAAQD,SAAW;AAAA,EAC9B,KAAKJ,OAAS;AAAA,EACd,qBAAqBM,MAAQ,CAACC,MAAE,CAAM,CAAC;AAAA,EACvC,MAAMP,OAAS;AAAA,EACf,WAAWQ,KAAOR,OAAY,GAAAS,KAAO;AAAA,EACrC,QAAQL,QAAU;AAAA,EAClB,UAAUH,OAAS;AAAA,EACnB,iBAAiBG,QAAU;AAAA,EAC3B,mBAAmBJ,OAAS;AAAA,EAC5B,sBAAsBE,QAAU;AAAA,EAChC,KAAKF,OAAS;AAAA,EACd,mBAAmBE,QAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAMF,OAAS;AAAA,EACf,WAAWK,MAAQD,SAAW;AAChC,CAAC;AAEY,MAAA,0BAA0BL,OAAS;AAAA,EAC9C,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,WAAWK,MAAQD,SAAW;AAAA,EAC9B,gBAAgBJ,OAAS;AAAA,EACzB,oBAAoBA,OAAS;AAAA,EAC7B,YAAYA,OAAS;AAAA,EACrB,gBAAgBA,OAAS;AAAA,EACzB,aAAaA,OAAS;AAAA,EACtB,iBAAiBA,OAAS;AAAA,EAC1B,aAAaA,OAAS;AAAA,EACtB,gBAAgBM,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAC9C,oBAAoBD,MAAQ,CAACN,UAAYO,MAAQ,CAAA,CAAC;AAAA,EAClD,WAAWP,OAAS;AACtB,CAAC;AAEY,MAAA,oBAAoBD,OAAS;AAAA,EACxC,iBAAiB;AAAA,EACjB,SAASK,QAAU;AAAA,EACnB,aAAaA,QAAU;AAAA,EACvB,QAAQA,QAAU;AAAA,EAClB,YAAYA,QAAU;AAAA,EACtB,MAAMA,QAAU;AAAA,EAChB,yBAAyBF,QAAU;AAAA,EACnC,OAAOG,MAAQ,qBAAqB;AAAA,EACpC,aAAaG,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC3C,cAAcF,KAAOP,OAAY,GAAAS,SAAW;AAAA,EAC5C,eAAeR,QAAU;AAAA,EACzB,gBAAgBA,QAAU;AAAA,EAC1B,iBAAiBE,QAAU;AAAA,EAC3B,sBAAsBA,QAAU;AAAA,EAChC,kBAAkB;AAAA,EAClB,gBAAgBC,MAAQ,yBAAyB;AAAA,EACjD,QAAQ;AACV,CAAC;"}

View file

@ -0,0 +1,37 @@
import { o as object, k as omit, b as array, s as string, n as number, u as unknown, d as boolean } from "./index.BgFo03XT.js";
import { a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCStoreShippingRateItemSchema = object({
key: string(),
name: string(),
quantity: number()
});
const WCStoreShippingRateShippingRateSchema = object({
currency_code: string(),
currency_decimal_separator: string(),
currency_minor_unit: number(),
currency_prefix: string(),
currency_suffix: string(),
currency_symbol: string(),
currency_thousand_separator: string(),
delivery_time: string(),
description: string(),
instance_id: number(),
meta_data: array(unknown()),
method_id: string(),
name: string(),
price: string(),
rate_id: string(),
selected: boolean(),
taxes: string()
});
const WCStoreShippingRateSchema = object({
destination: omit(WCStoreShippingAddressSchema, ["company", "first_name", "last_name", "phone"]),
items: array(WCStoreShippingRateItemSchema),
name: string(),
package_id: number(),
shipping_rates: array(WCStoreShippingRateShippingRateSchema)
});
export {
WCStoreShippingRateSchema as W
};
//# sourceMappingURL=couts-livraison.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"couts-livraison.js","sources":["../../src/scripts/lib/schemas/couts-livraison.ts"],"sourcesContent":["// Coûts de livraison (\"shipping rates\")\n\nimport * as v from \"valibot\";\n\nimport { WCStoreShippingAddressSchema } from \"./adresses.ts\";\n\nexport const WCStoreShippingRateItemSchema = v.object({\n key: v.string(),\n name: v.string(),\n quantity: v.number(),\n});\n\nexport const WCStoreShippingRateShippingRateSchema = v.object({\n currency_code: v.string(),\n currency_decimal_separator: v.string(),\n currency_minor_unit: v.number(),\n currency_prefix: v.string(),\n currency_suffix: v.string(),\n currency_symbol: v.string(),\n currency_thousand_separator: v.string(),\n delivery_time: v.string(),\n description: v.string(),\n instance_id: v.number(),\n meta_data: v.array(v.unknown()),\n method_id: v.string(),\n name: v.string(),\n price: v.string(),\n rate_id: v.string(),\n selected: v.boolean(),\n taxes: v.string(),\n});\n\nexport const WCStoreShippingRateSchema = v.object({\n destination: v.omit(WCStoreShippingAddressSchema, [\"company\", \"first_name\", \"last_name\", \"phone\"]),\n items: v.array(WCStoreShippingRateItemSchema),\n name: v.string(),\n package_id: v.number(),\n shipping_rates: v.array(WCStoreShippingRateShippingRateSchema),\n});\n"],"names":["v.object","v.string","v.number","v.array","v.unknown","v.boolean","v.omit"],"mappings":";;AAMa,MAAA,gCAAgCA,OAAS;AAAA,EACpD,KAAKC,OAAS;AAAA,EACd,MAAMA,OAAS;AAAA,EACf,UAAUC,OAAS;AACrB,CAAC;AAEY,MAAA,wCAAwCF,OAAS;AAAA,EAC5D,eAAeC,OAAS;AAAA,EACxB,4BAA4BA,OAAS;AAAA,EACrC,qBAAqBC,OAAS;AAAA,EAC9B,iBAAiBD,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,iBAAiBA,OAAS;AAAA,EAC1B,6BAA6BA,OAAS;AAAA,EACtC,eAAeA,OAAS;AAAA,EACxB,aAAaA,OAAS;AAAA,EACtB,aAAaC,OAAS;AAAA,EACtB,WAAWC,MAAQC,SAAW;AAAA,EAC9B,WAAWH,OAAS;AAAA,EACpB,MAAMA,OAAS;AAAA,EACf,OAAOA,OAAS;AAAA,EAChB,SAASA,OAAS;AAAA,EAClB,UAAUI,QAAU;AAAA,EACpB,OAAOJ,OAAS;AAClB,CAAC;AAEY,MAAA,4BAA4BD,OAAS;AAAA,EAChD,aAAaM,KAAO,8BAA8B,CAAC,WAAW,cAAc,aAAa,OAAO,CAAC;AAAA,EACjG,OAAOH,MAAQ,6BAA6B;AAAA,EAC5C,MAAMF,OAAS;AAAA,EACf,YAAYC,OAAS;AAAA,EACrB,gBAAgBC,MAAQ,qCAAqC;AAC/D,CAAC;"}

View file

@ -18,7 +18,9 @@ const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = "button.detail-produit__actions__
const SELECTEUR_BOUTON_ADDITION_QUANTITE = "button.detail-produit__actions__addition";
const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = "input";
const SELECTEUR_PRIX_LIGNE_PANIER = ".detail-produit__nom-prix span";
const SELECTEUR_SOUS_TOTAL_PANIER = "#panneau-panier .panneau__sous-totaux__ligne strong";
const SELECTEUR_SOUS_TOTAL_PRODUITS = "#panneau-panier #sous-total-produits strong";
const SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT = "#panneau-panier #sous-total-livraison strong";
const SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE = "#panneau-panier #sous-total-livraison span";
const SELECTEUR_TOTAL_PANIER = "#panneau-panier .panneau__pied-de-page p span";
const SELECTEUR_BOUTON_SEPARATION_ADRESSES = "#separation-adresses";
const SELECTEUR_FORMULAIRE_PANIER = "#panneau-informations-client form";
@ -27,35 +29,41 @@ const SELECTEUR_FORMULAIRE_FACTURATION = "#panneau-informations-client .panneau_
const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = "#panneau-informations-client .panneau__pied-de-page button";
const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling";
const SELECTEUR_IMAGES_STORYTELLING = ".storytelling__image";
const SELECTEUR_GRILLE_PRODUITS = "#page-boutique .grille-produits";
const SELECTEUR_BOUTON_PLUS_PRODUITS = "#page-boutique #bouton-plus-de-produits";
export {
ATTRIBUT_CONTIENT_ARTICLES as A,
ATTRIBUT_ARIA_SELECTED as B,
SELECTEUR_BOUTON_AJOUT_PANIER as B,
SELECTEUR_SELECTEUR_QUANTITE as C,
SELECTEUR_LIENS_ONGLETS as D,
SELECTEUR_SECTIONS_CONTENUS as E,
ATTRIBUT_ARIA_SELECTED as F,
SELECTEUR_BOUTON_PANIER as S,
SELECTEUR_CONTENEUR_STORYTELLING as a,
SELECTEUR_IMAGES_STORYTELLING as b,
ATTRIBUT_INDEX as c,
ATTRIBUT_CACHE as d,
ATTRIBUT_ARIA_HIDDEN as e,
SELECTEUR_ENTREES_PANIER as f,
SELECTEUR_CONTENEUR_PANIER as g,
SELECTEUR_SOUS_TOTAL_PANIER as h,
SELECTEUR_TOTAL_PANIER as i,
SELECTEUR_BOUTON_SEPARATION_ADRESSES as j,
SELECTEUR_FORMULAIRE_PANIER as k,
SELECTEUR_FORMULAIRE_LIVRAISON as l,
SELECTEUR_FORMULAIRE_FACTURATION as m,
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as n,
ATTRIBUT_CLE_PANIER as o,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as p,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as q,
SELECTEUR_BOUTON_ADDITION_QUANTITE as r,
SELECTEUR_BOUTON_SUPPRESSION_PANIER as s,
SELECTEUR_PRIX_LIGNE_PANIER as t,
ATTRIBUT_HIDDEN as u,
ATTRIBUT_DESACTIVE as v,
SELECTEUR_BOUTON_AJOUT_PANIER as w,
SELECTEUR_SELECTEUR_QUANTITE as x,
SELECTEUR_LIENS_ONGLETS as y,
SELECTEUR_SECTIONS_CONTENUS as z
SELECTEUR_GRILLE_PRODUITS as f,
SELECTEUR_BOUTON_PLUS_PRODUITS as g,
SELECTEUR_ENTREES_PANIER as h,
SELECTEUR_CONTENEUR_PANIER as i,
SELECTEUR_SOUS_TOTAL_PRODUITS as j,
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT as k,
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE as l,
SELECTEUR_TOTAL_PANIER as m,
SELECTEUR_BOUTON_SEPARATION_ADRESSES as n,
SELECTEUR_FORMULAIRE_PANIER as o,
SELECTEUR_FORMULAIRE_LIVRAISON as p,
SELECTEUR_FORMULAIRE_FACTURATION as q,
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as r,
ATTRIBUT_CLE_PANIER as s,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as t,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as u,
SELECTEUR_BOUTON_ADDITION_QUANTITE as v,
SELECTEUR_BOUTON_SUPPRESSION_PANIER as w,
SELECTEUR_PRIX_LIGNE_PANIER as x,
ATTRIBUT_HIDDEN as y,
ATTRIBUT_DESACTIVE as z
};
//# sourceMappingURL=dom.js.map

View file

@ -1 +1 @@
{"version":3,"file":"dom.js","sources":["../../src/scripts/constantes/dom.ts"],"sourcesContent":["/** Constantes de valeurs pour la manipulation du DOM : sélecteurs et attributs. */\n\nexport const ATTRIBUT_ARIA_HIDDEN = \"aria-hidden\";\nexport const ATTRIBUT_ARIA_SELECTED = \"aria-selected\";\nexport const ATTRIBUT_CACHE = \"data-cache\";\nexport const ATTRIBUT_CLE_PANIER = \"data-cle-panier\";\nexport const ATTRIBUT_CONTIENT_ARTICLES = \"data-contient-articles\";\nexport const ATTRIBUT_DESACTIVE = \"disabled\";\nexport const ATTRIBUT_HIDDEN = \"hidden\";\nexport const ATTRIBUT_INDEX = \"data-index\";\n\nexport const SELECTEUR_CONTENEUR_PANIER = \"#page-panier\";\nexport const SELECTEUR_BOUTON_PANIER = \".compte-panier a[rel='cart']\";\nexport const SELECTEUR_SELECTEUR_QUANTITE = \"#selecteur-variation\";\nexport const SELECTEUR_BOUTON_AJOUT_PANIER = \"#bouton-ajout-panier\";\nexport const SELECTEUR_LIENS_ONGLETS = \"a[role='tab']\";\nexport const SELECTEUR_SECTIONS_CONTENUS = \"section[role='tabpanel']\";\n\n// Panier\nexport const SELECTEUR_ENTREES_PANIER = \"article\";\nexport const SELECTEUR_BOUTON_SUPPRESSION_PANIER = \"button.detail-produit__actions__suppression\";\nexport const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = \"button.detail-produit__actions__soustraction\";\nexport const SELECTEUR_BOUTON_ADDITION_QUANTITE = \"button.detail-produit__actions__addition\";\nexport const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = \"input\";\nexport const SELECTEUR_PRIX_LIGNE_PANIER = \".detail-produit__nom-prix span\";\nexport const SELECTEUR_SOUS_TOTAL_PANIER = \"#panneau-panier .panneau__sous-totaux__ligne strong\";\nexport const SELECTEUR_TOTAL_PANIER = \"#panneau-panier .panneau__pied-de-page p span\";\nexport const SELECTEUR_BOUTON_SEPARATION_ADRESSES = \"#separation-adresses\";\nexport const SELECTEUR_FORMULAIRE_PANIER = \"#panneau-informations-client form\";\nexport const SELECTEUR_FORMULAIRE_LIVRAISON = \"#panneau-informations-client .panneau__formulaires__livraison\";\nexport const SELECTEUR_FORMULAIRE_FACTURATION = \"#panneau-informations-client .panneau__formulaires__facturation\";\nexport const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = \"#panneau-informations-client .panneau__pied-de-page button\";\n\n// Accueil\nexport const SELECTEUR_CONTENEUR_STORYTELLING = \".storytelling\";\nexport const SELECTEUR_IMAGES_STORYTELLING = \".storytelling__image\";\n"],"names":[],"mappings":"AAEO,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;AAC/B,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAC3B,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AAEvB,MAAM,6BAA6B;AACnC,MAAM,0BAA0B;AAChC,MAAM,+BAA+B;AACrC,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AAGpC,MAAM,2BAA2B;AACjC,MAAM,sCAAsC;AAC5C,MAAM,yCAAyC;AAC/C,MAAM,qCAAqC;AAC3C,MAAM,wCAAwC;AAC9C,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,yBAAyB;AAC/B,MAAM,uCAAuC;AAC7C,MAAM,8BAA8B;AACpC,MAAM,iCAAiC;AACvC,MAAM,mCAAmC;AACzC,MAAM,sCAAsC;AAG5C,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;"}
{"version":3,"file":"dom.js","sources":["../../src/scripts/constantes/dom.ts"],"sourcesContent":["/** Constantes de valeurs pour la manipulation du DOM : sélecteurs et attributs. */\n\nexport const ATTRIBUT_ARIA_HIDDEN = \"aria-hidden\";\nexport const ATTRIBUT_ARIA_SELECTED = \"aria-selected\";\nexport const ATTRIBUT_CACHE = \"data-cache\";\nexport const ATTRIBUT_CLE_PANIER = \"data-cle-panier\";\nexport const ATTRIBUT_CONTIENT_ARTICLES = \"data-contient-articles\";\nexport const ATTRIBUT_DESACTIVE = \"disabled\";\nexport const ATTRIBUT_HIDDEN = \"hidden\";\nexport const ATTRIBUT_INDEX = \"data-index\";\nexport const ATTRIBUT_PAGE = \"data-page\";\n\nexport const SELECTEUR_CONTENEUR_PANIER = \"#page-panier\";\nexport const SELECTEUR_BOUTON_PANIER = \".compte-panier a[rel='cart']\";\nexport const SELECTEUR_SELECTEUR_QUANTITE = \"#selecteur-variation\";\nexport const SELECTEUR_BOUTON_AJOUT_PANIER = \"#bouton-ajout-panier\";\nexport const SELECTEUR_LIENS_ONGLETS = \"a[role='tab']\";\nexport const SELECTEUR_SECTIONS_CONTENUS = \"section[role='tabpanel']\";\n\n// Panier\nexport const SELECTEUR_ENTREES_PANIER = \"article\";\nexport const SELECTEUR_BOUTON_SUPPRESSION_PANIER = \"button.detail-produit__actions__suppression\";\nexport const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = \"button.detail-produit__actions__soustraction\";\nexport const SELECTEUR_BOUTON_ADDITION_QUANTITE = \"button.detail-produit__actions__addition\";\nexport const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = \"input\";\nexport const SELECTEUR_PRIX_LIGNE_PANIER = \".detail-produit__nom-prix span\";\nexport const SELECTEUR_SOUS_TOTAL_PRODUITS = \"#panneau-panier #sous-total-produits strong\";\nexport const SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT = \"#panneau-panier #sous-total-livraison strong\";\nexport const SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE = \"#panneau-panier #sous-total-livraison span\";\nexport const SELECTEUR_TOTAL_PANIER = \"#panneau-panier .panneau__pied-de-page p span\";\nexport const SELECTEUR_BOUTON_SEPARATION_ADRESSES = \"#separation-adresses\";\nexport const SELECTEUR_FORMULAIRE_PANIER = \"#panneau-informations-client form\";\nexport const SELECTEUR_FORMULAIRE_LIVRAISON = \"#panneau-informations-client .panneau__formulaires__livraison\";\nexport const SELECTEUR_FORMULAIRE_FACTURATION = \"#panneau-informations-client .panneau__formulaires__facturation\";\nexport const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = \"#panneau-informations-client .panneau__pied-de-page button\";\n\n// Accueil\nexport const SELECTEUR_CONTENEUR_STORYTELLING = \".storytelling\";\nexport const SELECTEUR_IMAGES_STORYTELLING = \".storytelling__image\";\n\n// Boutique\nexport const SELECTEUR_GRILLE_PRODUITS = \"#page-boutique .grille-produits\";\nexport const SELECTEUR_BOUTON_PLUS_PRODUITS = \"#page-boutique #bouton-plus-de-produits\";\n"],"names":[],"mappings":"AAEO,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;AAC/B,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAC3B,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AAGvB,MAAM,6BAA6B;AACnC,MAAM,0BAA0B;AAChC,MAAM,+BAA+B;AACrC,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AAGpC,MAAM,2BAA2B;AACjC,MAAM,sCAAsC;AAC5C,MAAM,yCAAyC;AAC/C,MAAM,qCAAqC;AAC3C,MAAM,wCAAwC;AAC9C,MAAM,8BAA8B;AACpC,MAAM,gCAAgC;AACtC,MAAM,sCAAsC;AAC5C,MAAM,6CAA6C;AACnD,MAAM,yBAAyB;AAC/B,MAAM,uCAAuC;AAC7C,MAAM,8BAA8B;AACpC,MAAM,iCAAiC;AACvC,MAAM,mCAAmC;AACzC,MAAM,sCAAsC;AAG5C,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AAGtC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;"}

View file

@ -1,4 +1,4 @@
import { i as is, o as object, n as number, s as string } from "./index.CCa5Y_L9.js";
import { i as is, o as object, n as number, s as string } from "./index.BgFo03XT.js";
const WCErrorBodySchema = object({
code: string(),
data: object({

View file

@ -1,314 +1,6 @@
import { f as ROUTE_API_PANIER, e as ENTETE_WC_NONCE } from "./api.js";
import { E as Either, r as right, l as left, M as Maybe, n as nothing, j as just } from "./Either.wHNxn7Os.js";
var _a$1;
const helpers$1 = {
liftEither(either) {
if (either.isRight()) {
return Promise.resolve(either.extract());
}
throw either.extract();
},
fromPromise(promise) {
return promise.then(helpers$1.liftEither);
},
throwE(error) {
throw error;
}
};
class EitherAsyncImpl {
constructor(runPromise) {
this.runPromise = runPromise;
this[_a$1] = "EitherAsync";
this["fantasy-land/chain"] = this.chain;
this["fantasy-land/alt"] = this.alt;
this.then = (onfulfilled, onrejected) => {
return this.run().then(onfulfilled, onrejected);
};
}
leftOrDefault(defaultValue) {
return this.run().then((x) => x.leftOrDefault(defaultValue));
}
orDefault(defaultValue) {
return this.run().then((x) => x.orDefault(defaultValue));
}
join() {
return EitherAsync(async (helpers2) => {
const either = await this;
if (either.isRight()) {
const nestedEither = await either.extract();
return helpers2.liftEither(nestedEither);
}
return helpers2.liftEither(either);
});
}
ap(eitherF) {
return EitherAsync(async (helpers2) => {
const otherValue = await eitherF;
if (otherValue.isRight()) {
const thisValue = await this.run();
if (thisValue.isRight()) {
return otherValue.extract()(thisValue.extract());
} else {
return helpers2.liftEither(thisValue);
}
}
return helpers2.liftEither(otherValue);
});
}
alt(other) {
return EitherAsync(async (helpers2) => {
const thisValue = await this.run();
if (thisValue.isRight()) {
return thisValue.extract();
} else {
const otherValue = await other;
return helpers2.liftEither(otherValue);
}
});
}
extend(f) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
if (either.isRight()) {
const v = EitherAsync.liftEither(either);
return helpers2.liftEither(right(f(v)));
}
return helpers2.liftEither(either);
});
}
async run() {
try {
return right(await this.runPromise(helpers$1));
} catch (e) {
return left(e);
}
}
bimap(f, g) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
try {
return await helpers2.liftEither(either.bimap(f, g));
} catch (e) {
throw await e;
}
});
}
map(f) {
return EitherAsync((helpers2) => this.runPromise(helpers2).then(f));
}
mapLeft(f) {
return EitherAsync(async (helpers2) => {
try {
return await this.runPromise(helpers2);
} catch (e) {
throw await f(e);
}
});
}
chain(f) {
return EitherAsync(async (helpers2) => {
const value = await this.runPromise(helpers2);
return helpers2.fromPromise(f(value));
});
}
chainLeft(f) {
return EitherAsync(async (helpers2) => {
try {
return await this.runPromise(helpers2);
} catch (e) {
return helpers2.fromPromise(f(e));
}
});
}
toMaybeAsync() {
return MaybeAsync(async ({ liftMaybe }) => {
const either = await this.run();
return liftMaybe(either.toMaybe());
});
}
swap() {
return EitherAsync(async (helpers2) => {
const either = await this.run();
if (either.isRight())
helpers2.throwE(either.extract());
return helpers2.liftEither(right(either.extract()));
});
}
ifLeft(effect) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
either.ifLeft(effect);
return helpers2.liftEither(either);
});
}
ifRight(effect) {
return EitherAsync(async (helpers2) => {
const either = await this.run();
either.ifRight(effect);
return helpers2.liftEither(either);
});
}
void() {
return this.map((_) => {
});
}
caseOf(patterns) {
return this.run().then((x) => x.caseOf(patterns));
}
finally(effect) {
return EitherAsync(({ fromPromise }) => fromPromise(this.run().finally(effect)));
}
}
_a$1 = Symbol.toStringTag;
const EitherAsync = Object.assign((runPromise) => new EitherAsyncImpl(runPromise), {
fromPromise: (f) => EitherAsync(({ fromPromise: fP }) => fP(f())),
liftEither: (either) => EitherAsync(({ liftEither }) => liftEither(either)),
lefts: (list) => Promise.all(list.map((x) => x.run())).then(Either.lefts),
rights: (list) => Promise.all(list.map((x) => x.run())).then(Either.rights),
sequence: (eas) => EitherAsync(async (helpers2) => {
let res = [];
for await (const e of eas) {
if (e.isLeft()) {
return helpers2.liftEither(e);
}
res.push(e.extract());
}
return helpers2.liftEither(right(res));
}),
all: (eas) => EitherAsync.fromPromise(async () => Promise.all(eas).then(Either.sequence))
});
EitherAsyncImpl.prototype.constructor = EitherAsync;
var _a;
const helpers = {
liftMaybe(maybe) {
if (maybe.isJust()) {
return Promise.resolve(maybe.extract());
}
throw nothing;
},
fromPromise(promise) {
return promise.then(helpers.liftMaybe);
}
};
class MaybeAsyncImpl {
constructor(runPromise) {
this.runPromise = runPromise;
this[_a] = "MaybeAsync";
this["fantasy-land/chain"] = this.chain;
this["fantasy-land/filter"] = this.filter;
this["fantasy-land/alt"] = this.alt;
}
orDefault(defaultValue) {
return this.run().then((x) => x.orDefault(defaultValue));
}
join() {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
if (maybe.isJust()) {
const nestedMaybe = await maybe.extract();
return helpers2.liftMaybe(nestedMaybe);
}
return helpers2.liftMaybe(nothing);
});
}
ap(maybeF) {
return MaybeAsync(async (helpers2) => {
const otherValue = await maybeF;
if (otherValue.isJust()) {
const thisValue = await this.run();
if (thisValue.isJust()) {
return otherValue.extract()(thisValue.extract());
} else {
return helpers2.liftMaybe(nothing);
}
}
return helpers2.liftMaybe(nothing);
});
}
alt(other) {
return MaybeAsync(async (helpers2) => {
const thisValue = await this.run();
if (thisValue.isJust()) {
return thisValue.extract();
} else {
const otherValue = await other;
return helpers2.liftMaybe(otherValue);
}
});
}
extend(f) {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
if (maybe.isJust()) {
const v = MaybeAsync.liftMaybe(maybe);
return helpers2.liftMaybe(just(f(v)));
}
return helpers2.liftMaybe(nothing);
});
}
filter(pred) {
return MaybeAsync(async (helpers2) => {
const value = await this.run();
return helpers2.liftMaybe(value.filter(pred));
});
}
async run() {
try {
return just(await this.runPromise(helpers));
} catch {
return nothing;
}
}
map(f) {
return MaybeAsync((helpers2) => this.runPromise(helpers2).then(f));
}
chain(f) {
return MaybeAsync(async (helpers2) => {
const value = await this.runPromise(helpers2);
return helpers2.fromPromise(f(value));
});
}
toEitherAsync(error) {
return EitherAsync(async ({ liftEither }) => {
const maybe = await this.run();
return liftEither(maybe.toEither(error));
});
}
ifJust(effect) {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
maybe.ifJust(effect);
return helpers2.liftMaybe(maybe);
});
}
ifNothing(effect) {
return MaybeAsync(async (helpers2) => {
const maybe = await this.run();
maybe.ifNothing(effect);
return helpers2.liftMaybe(maybe);
});
}
void() {
return this.map((_) => {
});
}
caseOf(patterns) {
return this.run().then((x) => x.caseOf(patterns));
}
finally(effect) {
return MaybeAsync(({ fromPromise }) => fromPromise(this.run().finally(effect)));
}
then(onfulfilled, onrejected) {
return this.run().then(onfulfilled, onrejected);
}
}
_a = Symbol.toStringTag;
const MaybeAsync = Object.assign((runPromise) => new MaybeAsyncImpl(runPromise), {
catMaybes: (list) => Promise.all(list).then(Maybe.catMaybes),
fromPromise: (f) => MaybeAsync(({ fromPromise: fP }) => fP(f())),
liftMaybe: (maybe) => MaybeAsync(({ liftMaybe }) => liftMaybe(maybe))
});
MaybeAsyncImpl.prototype.constructor = MaybeAsync;
import { g as ROUTE_API_PANIER, f as ENTETE_WC_NONCE } from "./api.js";
import { E as EitherAsync } from "./MaybeAsync.AE1jnxuc.js";
import { r as right, l as left } from "./Either.wHNxn7Os.js";
const ETATS = _etats;
const requeteRecuperePanier = () => fetch(
ROUTE_API_PANIER,

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,6 @@
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key] = value2;
var __publicField = (obj, key, value2) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value2);
var EMAIL_REGEX = /^[\w+-]+(?:\.[\w+-]+)*@[\da-z]+(?:[.-][\da-z]+)*\.[a-z]{2,}$/iu;
var store;
function getGlobalConfig(config2) {
return {
@ -94,23 +93,6 @@ var ValiError = class extends Error {
this.issues = issues;
}
};
function email(message) {
return {
kind: "validation",
type: "email",
reference: email,
expects: null,
async: false,
requirement: EMAIL_REGEX,
message,
"~validate"(dataset, config2) {
if (dataset.typed && !this.requirement.test(dataset.value)) {
_addIssue(this, "email", dataset, config2);
}
return dataset;
}
};
}
function integer(message) {
return {
kind: "validation",
@ -128,6 +110,25 @@ function integer(message) {
}
};
}
function maxValue(requirement, message) {
return {
kind: "validation",
type: "max_value",
reference: maxValue,
async: false,
expects: `<=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,
requirement,
message,
"~validate"(dataset, config2) {
if (dataset.typed && dataset.value > this.requirement) {
_addIssue(this, "value", dataset, config2, {
received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)
});
}
return dataset;
}
};
}
function minValue(requirement, message) {
return {
kind: "validation",
@ -540,6 +541,15 @@ function unknown() {
}
};
}
function omit(schema, keys) {
const entries = {
...schema.entries
};
for (const key of keys) {
delete entries[key];
}
return { ...schema, entries };
}
function parse(schema, input, config2) {
const dataset = schema["~validate"](
{ value: input },
@ -574,14 +584,15 @@ export {
optional as a,
array as b,
pipe as c,
enum_ as d,
email as e,
boolean as f,
union as g,
null_ as h,
boolean as d,
enum_ as e,
union as f,
null_ as g,
url as h,
is as i,
url as j,
integer as k,
integer as j,
omit as k,
maxValue as l,
minValue as m,
number as n,
object as o,
@ -590,4 +601,4 @@ export {
unknown as u,
value as v
};
//# sourceMappingURL=index.CCa5Y_L9.js.map
//# sourceMappingURL=index.BgFo03XT.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
import { p as parse } from "./index.CCa5Y_L9.js";
import { p as parse } from "./index.BgFo03XT.js";
import { N as NOM_CANAL_BOUTON_PANIER, T as TYPES_MESSAGES, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
import { r as reporteErreur } from "./erreurs.js";
import { M as MessageMajBoutonPanierSchema, a as MessageMajContenuPanierSchema } from "./messages2.js";
@ -6,6 +6,8 @@ import { E as Either } from "./Either.wHNxn7Os.js";
import "./exports.DMCTjIlP.js";
import "./cart.js";
import "./cart2.js";
import "./adresses.js";
import "./couts-livraison.js";
const emetMessageMajBoutonPanier = (args) => {
new BroadcastChannel(NOM_CANAL_BOUTON_PANIER).postMessage({
donnees: {

View file

@ -1 +1 @@
{"version":3,"file":"messages.js","sources":["../../src/scripts/lib/messages.ts"],"sourcesContent":["import { Either } from \"purify-ts\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type {\n MessageMajBoutonPanier,\n MessageMajBoutonPanierDonnees,\n MessageMajContenuPanier,\n MessageMajContenuPanierDonnees,\n} from \"./types/messages\";\n\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from \"../constantes/messages.ts\";\nimport { reporteErreur } from \"./erreurs.ts\";\nimport { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from \"./schemas/messages.ts\";\n\n// Émissions\nexport const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {\n new BroadcastChannel(NOM_CANAL_BOUTON_PANIER).postMessage({\n donnees: {\n quantiteProduits: args.quantiteProduits,\n },\n type: TYPES_MESSAGES.MajBoutonPanier,\n } as MessageMajBoutonPanier);\n};\n\nexport const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees): void =>\n new BroadcastChannel(NOM_CANAL_CONTENU_PANIER).postMessage({\n donnees: {\n produits: args.produits,\n sousTotalPanier: args.sousTotalPanier,\n totalPanier: args.totalPanier,\n },\n type: TYPES_MESSAGES.MajContenuPanier,\n } as MessageMajContenuPanier);\n\n// Validations\nexport const valideMessageMajBoutonPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier> =>\n Either\n .of<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier>(\n parse(MessageMajBoutonPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\nexport const valideMessageMajContenuPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier> =>\n Either\n .of<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier>(\n parse(MessageMajContenuPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n"],"names":[],"mappings":";;;;;;;;AAea,MAAA,6BAA6B,CAAC,SAA8C;AACnF,MAAA,iBAAiB,uBAAuB,EAAE,YAAY;AAAA,IACxD,SAAS;AAAA,MACP,kBAAkB,KAAK;AAAA,IACzB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACI;AAC7B;AAEO,MAAM,8BAA8B,CAAC,SAC1C,IAAI,iBAAiB,wBAAwB,EAAE,YAAY;AAAA,EACzD,SAAS;AAAA,IACP,UAAU,KAAK;AAAA,IACf,iBAAiB,KAAK;AAAA,IACtB,aAAa,KAAK;AAAA,EACpB;AAAA,EACA,MAAM,eAAe;AACvB,CAA4B;AAGjB,MAAA,+BAA+B,CAC1C,qBAEA,OACG;AAAA,EACC,MAAM,8BAA8B,iBAAiB,IAAI;AAC3D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAE9B,MAAA,gCAAgC,CAC3C,qBAEA,OACG;AAAA,EACC,MAAM,+BAA+B,iBAAiB,IAAI;AAC5D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;"}
{"version":3,"file":"messages.js","sources":["../../src/scripts/lib/messages.ts"],"sourcesContent":["import { Either } from \"purify-ts\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type {\n MessageMajBoutonPanier,\n MessageMajBoutonPanierDonnees,\n MessageMajContenuPanier,\n MessageMajContenuPanierDonnees,\n} from \"./types/messages\";\n\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from \"../constantes/messages.ts\";\nimport { reporteErreur } from \"./erreurs.ts\";\nimport { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from \"./schemas/messages.ts\";\n\n// Émissions\nexport const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {\n new BroadcastChannel(NOM_CANAL_BOUTON_PANIER).postMessage({\n donnees: {\n quantiteProduits: args.quantiteProduits,\n },\n type: TYPES_MESSAGES.MajBoutonPanier,\n } as MessageMajBoutonPanier);\n};\n\nexport const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees): void =>\n new BroadcastChannel(NOM_CANAL_CONTENU_PANIER).postMessage({\n donnees: {\n produits: args.produits,\n sousTotalPanier: args.sousTotalPanier,\n totalPanier: args.totalPanier,\n },\n type: TYPES_MESSAGES.MajContenuPanier,\n } as MessageMajContenuPanier);\n\n// Validations\nexport const valideMessageMajBoutonPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier> =>\n Either\n .of<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier>(\n parse(MessageMajBoutonPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\nexport const valideMessageMajContenuPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier> =>\n Either\n .of<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier>(\n parse(MessageMajContenuPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n"],"names":[],"mappings":";;;;;;;;;;AAea,MAAA,6BAA6B,CAAC,SAA8C;AACnF,MAAA,iBAAiB,uBAAuB,EAAE,YAAY;AAAA,IACxD,SAAS;AAAA,MACP,kBAAkB,KAAK;AAAA,IACzB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACI;AAC7B;AAEO,MAAM,8BAA8B,CAAC,SAC1C,IAAI,iBAAiB,wBAAwB,EAAE,YAAY;AAAA,EACzD,SAAS;AAAA,IACP,UAAU,KAAK;AAAA,IACf,iBAAiB,KAAK;AAAA,IACtB,aAAa,KAAK;AAAA,EACpB;AAAA,EACA,MAAM,eAAe;AACvB,CAA4B;AAGjB,MAAA,+BAA+B,CAC1C,qBAEA,OACG;AAAA,EACC,MAAM,8BAA8B,iBAAiB,IAAI;AAC3D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAE9B,MAAA,gCAAgC,CAC3C,qBAEA,OACG;AAAA,EACC,MAAM,+BAA+B,iBAAiB,IAAI;AAC5D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;"}

View file

@ -1,7 +1,9 @@
import { d as enum_, o as object, c as pipe, v as value, s as string, n as number, b as array } from "./index.CCa5Y_L9.js";
import { e as enum_, o as object, c as pipe, v as value, s as string, n as number, b as array } from "./index.BgFo03XT.js";
import { T as TYPES_MESSAGES } from "./messages3.js";
import { a as WCStoreCartItemSchema } from "./cart.js";
import "./cart2.js";
import "./adresses.js";
import "./couts-livraison.js";
enum_(TYPES_MESSAGES);
const MessageMajBoutonPanierDonneesSchema = object({
quantiteProduits: number()

View file

@ -1 +1 @@
{"version":3,"file":"messages2.js","sources":["../../src/scripts/lib/schemas/messages.ts"],"sourcesContent":["/**\n * Schémas des Messages passés avec BroadcastChannel.\n */\n\nimport * as v from \"valibot\";\n\nimport { TYPES_MESSAGES } from \"../../constantes/messages.ts\";\nimport { WCStoreCartItemSchema } from \"./cart.ts\";\n\nexport const TypesMessagesSchema = v.enum(TYPES_MESSAGES);\n\nexport const MessageMajBoutonPanierDonneesSchema = v.object({\n quantiteProduits: v.number(),\n});\n\nexport const MessageMajBoutonPanierSchema = v.object({\n donnees: MessageMajBoutonPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajBoutonPanier)),\n});\n\nexport const MessageMajContenuPanierDonneesSchema = v.object({\n produits: v.array(WCStoreCartItemSchema),\n sousTotalPanier: v.number(),\n totalPanier: v.number(),\n});\n\nexport const MessageMajContenuPanierSchema = v.object({\n donnees: MessageMajContenuPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajContenuPanier)),\n});\n"],"names":["v.enum","v.object","v.number","v.pipe","v.string","v.value","v.array"],"mappings":";;;;AASmCA,MAAO,cAAc;AAE3C,MAAA,sCAAsCC,OAAS;AAAA,EAC1D,kBAAkBC,OAAS;AAC7B,CAAC;AAEY,MAAA,+BAA+BD,OAAS;AAAA,EACnD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,eAAe,CAAC;AAClE,CAAC;AAEY,MAAA,uCAAuCJ,OAAS;AAAA,EAC3D,UAAUK,MAAQ,qBAAqB;AAAA,EACvC,iBAAiBJ,OAAS;AAAA,EAC1B,aAAaA,OAAS;AACxB,CAAC;AAEY,MAAA,gCAAgCD,OAAS;AAAA,EACpD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,gBAAgB,CAAC;AACnE,CAAC;"}
{"version":3,"file":"messages2.js","sources":["../../src/scripts/lib/schemas/messages.ts"],"sourcesContent":["/**\n * Schémas des Messages passés avec BroadcastChannel.\n */\n\nimport * as v from \"valibot\";\n\nimport { TYPES_MESSAGES } from \"../../constantes/messages.ts\";\nimport { WCStoreCartItemSchema } from \"./cart.ts\";\n\nexport const TypesMessagesSchema = v.enum(TYPES_MESSAGES);\n\nexport const MessageMajBoutonPanierDonneesSchema = v.object({\n quantiteProduits: v.number(),\n});\n\nexport const MessageMajBoutonPanierSchema = v.object({\n donnees: MessageMajBoutonPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajBoutonPanier)),\n});\n\nexport const MessageMajContenuPanierDonneesSchema = v.object({\n produits: v.array(WCStoreCartItemSchema),\n sousTotalPanier: v.number(),\n totalPanier: v.number(),\n});\n\nexport const MessageMajContenuPanierSchema = v.object({\n donnees: MessageMajContenuPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajContenuPanier)),\n});\n"],"names":["v.enum","v.object","v.number","v.pipe","v.string","v.value","v.array"],"mappings":";;;;;;AASmCA,MAAO,cAAc;AAE3C,MAAA,sCAAsCC,OAAS;AAAA,EAC1D,kBAAkBC,OAAS;AAC7B,CAAC;AAEY,MAAA,+BAA+BD,OAAS;AAAA,EACnD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,eAAe,CAAC;AAClE,CAAC;AAEY,MAAA,uCAAuCJ,OAAS;AAAA,EAC3D,UAAUK,MAAQ,qBAAqB;AAAA,EACvC,iBAAiBJ,OAAS;AAAA,EAC1B,aAAaA,OAAS;AACxB,CAAC;AAEY,MAAA,gCAAgCD,OAAS;AAAA,EACpD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,gBAAgB,CAAC;AACnE,CAAC;"}

View file

@ -0,0 +1,110 @@
import { o as object, a as optional, s as string, e as enum_, c as pipe, m as minValue, n as number, l as maxValue, b as array, u as unknown, d as boolean, f as union, g as null_, j as integer } from "./index.BgFo03XT.js";
import { A as ATTRIBUTES_RELATIONS, C as CATALOG_VISIBILITIES, a as CATEGORY_OPERATORS, P as PRODUCTS_CONTEXTES, D as DATE_COLUMN_VALUES, O as ORDER_VALUES, b as ORDERBY_VALUES, R as RATINGS, S as STOCK_STATUSES, T as TAG_OPERATORS, c as PRODUCT_TYPES } from "./products2.js";
const WCProductsArgsSchema = object({
// Date ISO8601
after: optional(optional(string())),
attribute_relation: optional(enum_(ATTRIBUTES_RELATIONS)),
attributes: optional(array(unknown())),
// Date ISO8601
before: optional(string()),
catalog_visibility: optional(enum_(CATALOG_VISIBILITIES)),
category: optional(string()),
category_operator: optional(enum_(CATEGORY_OPERATORS)),
context: optional(enum_(PRODUCTS_CONTEXTES)),
date_column: optional(enum_(DATE_COLUMN_VALUES)),
exclude: optional(array(pipe(number(), integer()))),
featured: optional(boolean()),
include: optional(array(pipe(number(), integer()))),
max_price: optional(string()),
min_price: optional(string()),
offset: optional(number()),
on_sale: optional(boolean()),
order: optional(enum_(ORDER_VALUES)),
orderby: optional(enum_(ORDERBY_VALUES)),
page: optional(pipe(number(), minValue(1))),
parent: optional(array(pipe(number(), integer()))),
parent_exclude: optional(array(pipe(number(), integer()))),
per_page: optional(pipe(number(), minValue(0), maxValue(100))),
rating: optional(array(enum_(RATINGS))),
search: optional(string()),
sku: optional(string()),
slug: optional(string()),
stock_status: optional(array(enum_(STOCK_STATUSES))),
tag: optional(string()),
tag_operator: optional(enum_(TAG_OPERATORS)),
type: optional(enum_(PRODUCT_TYPES))
});
const WCProductSchema = object({
add_to_cart: object({
description: string(),
maximum: number(),
minimum: number(),
multiple_of: number(),
text: string(),
url: string()
}),
attributes: array(unknown()),
average_rating: string(),
categories: array(object({
id: number(),
link: string(),
name: string(),
slug: string()
})),
description: string(),
extensions: unknown(),
has_options: boolean(),
id: number(),
images: array(object({
alt: string(),
id: number(),
name: string(),
sizes: string(),
src: string(),
srcset: string(),
thumbnail: string()
})),
is_in_stock: boolean(),
is_on_backorder: boolean(),
is_purchasable: boolean(),
low_stock_remaining: union([string(), null_()]),
name: string(),
on_sale: boolean(),
parent: number(),
permalink: string(),
price_html: string(),
prices: object({
currency_code: string(),
currency_decimal_separator: string(),
currency_minor_unit: number(),
currency_prefix: string(),
currency_suffix: string(),
currency_symbol: string(),
currency_thousand_separator: string(),
price: string(),
price_range: optional(unknown()),
regular_price: string(),
sale_price: string()
}),
review_count: number(),
short_description: string(),
sku: string(),
slug: string(),
sold_individually: boolean(),
tags: array(string()),
type: string(),
variation: unknown(),
variations: array(object({
attributes: array(object({
name: string(),
value: string()
})),
id: number()
}))
});
const WCProductsSchema = array(WCProductSchema);
export {
WCProductsArgsSchema as W,
WCProductsSchema as a
};
//# sourceMappingURL=products.js.map

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,81 @@
const PRODUCTS_CONTEXTES = {
EDIT: "edit",
VIEW: "view"
};
const DATE_COLUMN_VALUES = {
DATE: "date",
DATE_GMT: "date_gmt",
MODIFIED: "modified",
MODIFIED_GMT: "modified_gmt"
};
const ORDER_VALUES = {
ASC: "asc",
DESC: "desc"
};
const ORDERBY_VALUES = {
COMMENT_COUNT: "comment_count",
DATE: "date",
ID: "id",
INCLUDE: "include",
MENU_ORDER: "menu_order",
MODIFIED: "modified",
POPULARITY: "popularity",
PRICE: "price",
RATING: "rating",
SLUG: "slug",
TITLE: "title"
};
const PRODUCT_TYPES = {
EXTERNAL: "external",
GROUPED: "grouped",
SIMPLE: "simple",
VARIABLE: "variable",
VARIATION: "variation"
};
const CATEGORY_OPERATORS = {
AND: "and",
IN: "in",
NOT_IN: "not_in"
};
const TAG_OPERATORS = {
AND: "and",
IN: "in",
NOT_IN: "not_in"
};
const STOCK_STATUSES = {
IN_STOCK: "instock",
ON_BACK_ORDER: "onbackorder",
OUT_OF_STOCK: "outofstock"
};
const ATTRIBUTES_RELATIONS = {
AND: "and",
IN: "in"
};
const CATALOG_VISIBILITIES = {
ANY: "any",
CATALOG: "catalog",
HIDDEN: "hidden",
SEARCH: "search",
VISIBLE: "visible"
};
const RATINGS = {
1: 1,
2: 2,
3: 3,
4: 4,
5: 5
};
export {
ATTRIBUTES_RELATIONS as A,
CATALOG_VISIBILITIES as C,
DATE_COLUMN_VALUES as D,
ORDER_VALUES as O,
PRODUCTS_CONTEXTES as P,
RATINGS as R,
STOCK_STATUSES as S,
TAG_OPERATORS as T,
CATEGORY_OPERATORS as a,
ORDERBY_VALUES as b,
PRODUCT_TYPES as c
};
//# sourceMappingURL=products2.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"products2.js","sources":["../../src/scripts/constantes/products.ts"],"sourcesContent":["export const PRODUCTS_CONTEXTES = {\n EDIT: \"edit\",\n VIEW: \"view\",\n} as const;\n\nexport const DATE_COLUMN_VALUES = {\n DATE: \"date\",\n DATE_GMT: \"date_gmt\",\n MODIFIED: \"modified\",\n MODIFIED_GMT: \"modified_gmt\",\n} as const;\n\nexport const ORDER_VALUES = {\n ASC: \"asc\",\n DESC: \"desc\",\n} as const;\n\nexport const ORDERBY_VALUES = {\n COMMENT_COUNT: \"comment_count\",\n DATE: \"date\",\n ID: \"id\",\n INCLUDE: \"include\",\n MENU_ORDER: \"menu_order\",\n MODIFIED: \"modified\",\n POPULARITY: \"popularity\",\n PRICE: \"price\",\n RATING: \"rating\",\n SLUG: \"slug\",\n TITLE: \"title\",\n} as const;\n\nexport const PRODUCT_TYPES = {\n EXTERNAL: \"external\",\n GROUPED: \"grouped\",\n SIMPLE: \"simple\",\n VARIABLE: \"variable\",\n VARIATION: \"variation\",\n} as const;\n\nexport const CATEGORY_OPERATORS = {\n AND: \"and\",\n IN: \"in\",\n NOT_IN: \"not_in\",\n} as const;\n\nexport const TAG_OPERATORS = {\n AND: \"and\",\n IN: \"in\",\n NOT_IN: \"not_in\",\n} as const;\n\nexport const STOCK_STATUSES = {\n IN_STOCK: \"instock\",\n ON_BACK_ORDER: \"onbackorder\",\n OUT_OF_STOCK: \"outofstock\",\n} as const;\n\nexport const ATTRIBUTES_RELATIONS = {\n AND: \"and\",\n IN: \"in\",\n} as const;\n\nexport const CATALOG_VISIBILITIES = {\n ANY: \"any\",\n CATALOG: \"catalog\",\n HIDDEN: \"hidden\",\n SEARCH: \"search\",\n VISIBLE: \"visible\",\n} as const;\n\nexport const RATINGS = {\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n} as const;\n"],"names":[],"mappings":"AAAO,MAAM,qBAAqB;AAAA,EAChC,MAAM;AAAA,EACN,MAAM;AACR;AAEO,MAAM,qBAAqB;AAAA,EAChC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAChB;AAEO,MAAM,eAAe;AAAA,EAC1B,KAAK;AAAA,EACL,MAAM;AACR;AAEO,MAAM,iBAAiB;AAAA,EAC5B,eAAe;AAAA,EACf,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT;AAEO,MAAM,gBAAgB;AAAA,EAC3B,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AACb;AAEO,MAAM,qBAAqB;AAAA,EAChC,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,QAAQ;AACV;AAEO,MAAM,gBAAgB;AAAA,EAC3B,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,QAAQ;AACV;AAEO,MAAM,iBAAiB;AAAA,EAC5B,UAAU;AAAA,EACV,eAAe;AAAA,EACf,cAAc;AAChB;AAEO,MAAM,uBAAuB;AAAA,EAClC,KAAK;AAAA,EACL,IAAI;AACN;AAEO,MAAM,uBAAuB;AAAA,EAClC,KAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,MAAM,UAAU;AAAA,EACrB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;"}

View file

@ -1,10 +1,24 @@
import { x } from "./chunk-7BKSRZNG.C39W3Wne.js";
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.CCa5Y_L9.js";
import { e as ENTETE_WC_NONCE } from "./api.js";
import { p as parse } from "./index.BgFo03XT.js";
import { f as ENTETE_WC_NONCE } from "./api.js";
import { a as leveBadRequestError, b as leveUnauthorizedError, c as leveNotFoundError, d as leveErreur, E as ErreurInconnue } from "./erreurs.js";
import { e as estWCError } from "./erreurs2.js";
import "./exports.DMCTjIlP.js";
const getBackend = (args) => fetch(
`${args.route}?${args.searchParams}`,
{
credentials: "same-origin",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
[ENTETE_WC_NONCE]: args.nonce
},
method: "GET",
mode: "same-origin",
signal: AbortSignal.timeout(5e3)
}
);
const postBackend = (args) => fetch(
args.route,
{
@ -22,6 +36,7 @@ const postBackend = (args) => fetch(
);
const traiteReponseBackendWCSelonCodesHTTP = (corpsReponse, schemaReponse) => z(corpsReponse).with({ body: N.select(), status: 400 }, estWCError, leveBadRequestError).with({ body: N.select(), status: 401 }, estWCError, leveUnauthorizedError).with({ body: N.select(), status: 404 }, estWCError, leveNotFoundError).with(N._, (corpsOkInconnu) => parse(schemaReponse, corpsOkInconnu)).otherwise((e) => x(e, ErreurInconnue, leveErreur));
export {
getBackend as g,
postBackend as p,
traiteReponseBackendWCSelonCodesHTTP as t
};

View file

@ -1 +1 @@
{"version":3,"file":"reseau.js","sources":["../../src/scripts/lib/reseau.ts"],"sourcesContent":["import { pipe } from \"remeda\";\nimport { match, P } from \"ts-pattern\";\nimport { type GenericSchema, parse } from \"valibot\";\n\nimport { ENTETE_WC_NONCE } from \"../constantes/api.ts\";\nimport {\n ErreurInconnue,\n leveBadRequestError,\n leveErreur,\n leveNotFoundError,\n leveUnauthorizedError,\n type UnknownError,\n} from \"./erreurs.ts\";\nimport { estWCError } from \"./schemas/erreurs.ts\";\n\ntype ArgumentsPostBackendWC = {\n /** Le corps de la requête (ses arguments). */\n corps: BodyInit;\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n};\n\nexport const postBackend = (args: ArgumentsPostBackendWC) =>\n fetch(\n args.route,\n {\n body: args.corps,\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n },\n method: \"POST\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n\nexport const traiteReponseBackendWCSelonCodesHTTP = <R, S extends GenericSchema<R>>(\n corpsReponse: unknown,\n schemaReponse: S,\n): R =>\n match(corpsReponse)\n // Réponses problématiques\n .with({ body: P.select(), status: 400 }, estWCError, leveBadRequestError)\n .with({ body: P.select(), status: 401 }, estWCError, leveUnauthorizedError)\n .with({ body: P.select(), status: 404 }, estWCError, leveNotFoundError)\n // Réponse OK (201)\n .with(P._, corpsOkInconnu => parse<S>(schemaReponse, corpsOkInconnu))\n // Réponses inconnues\n .otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>));\n"],"names":["match","P","pipe"],"mappings":";;;;;;;AAwBa,MAAA,cAAc,CAAC,SAC1B;AAAA,EACE,KAAK;AAAA,EACL;AAAA,IACE,MAAM,KAAK;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC;AACF;AAEW,MAAA,uCAAuC,CAClD,cACA,kBAEAA,EAAM,YAAY,EAEf,KAAK,EAAE,MAAMC,EAAE,OAAO,GAAG,QAAQ,IAAO,GAAA,YAAY,mBAAmB,EACvE,KAAK,EAAE,MAAMA,EAAE,UAAU,QAAQ,IAAA,GAAO,YAAY,qBAAqB,EACzE,KAAK,EAAE,MAAMA,EAAE,OAAA,GAAU,QAAQ,IAAI,GAAG,YAAY,iBAAiB,EAErE,KAAKA,EAAE,GAAG,CAAkB,mBAAA,MAAS,eAAe,cAAc,CAAC,EAEnE,UAAU,CAAA,MAAKC,EAAK,GAAG,gBAAgB,UAAwB,CAAC;"}
{"version":3,"file":"reseau.js","sources":["../../src/scripts/lib/reseau.ts"],"sourcesContent":["import { pipe } from \"remeda\";\nimport { match, P } from \"ts-pattern\";\nimport { type GenericSchema, parse } from \"valibot\";\n\nimport { ENTETE_WC_NONCE } from \"../constantes/api.ts\";\nimport {\n ErreurInconnue,\n leveBadRequestError,\n leveErreur,\n leveNotFoundError,\n leveUnauthorizedError,\n type UnknownError,\n} from \"./erreurs.ts\";\nimport { estWCError } from \"./schemas/erreurs.ts\";\n\ntype ArgumentsGetBackendWC = {\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n /** Paramètres de recherche (« query args ») à injecter dans l'URL de la requête. */\n searchParams: string;\n};\n\ntype ArgumentsPostBackendWC = {\n /** Le corps de la requête (ses arguments). */\n corps: BodyInit;\n /** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */\n nonce: string;\n /** La route, ou chemin, de l'API à demander au backend. */\n route: string;\n};\n\nexport const getBackend = (args: ArgumentsGetBackendWC) =>\n fetch(\n `${args.route}?${args.searchParams}`,\n {\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n },\n method: \"GET\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n\nexport const postBackend = (args: ArgumentsPostBackendWC) =>\n fetch(\n args.route,\n {\n body: args.corps,\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n [ENTETE_WC_NONCE]: args.nonce,\n },\n method: \"POST\",\n mode: \"same-origin\",\n signal: AbortSignal.timeout(5000),\n },\n );\n\nexport const traiteReponseBackendWCSelonCodesHTTP = <R, S extends GenericSchema<R>>(\n corpsReponse: unknown,\n schemaReponse: S,\n): R =>\n match(corpsReponse)\n // Réponses problématiques\n .with({ body: P.select(), status: 400 }, estWCError, leveBadRequestError)\n .with({ body: P.select(), status: 401 }, estWCError, leveUnauthorizedError)\n .with({ body: P.select(), status: 404 }, estWCError, leveNotFoundError)\n // Réponse OK (201)\n .with(P._, corpsOkInconnu => parse<S>(schemaReponse, corpsOkInconnu))\n // Réponses inconnues\n .otherwise(e => pipe(e, ErreurInconnue, leveErreur<UnknownError>));\n"],"names":["match","P","pipe"],"mappings":";;;;;;;AAiCa,MAAA,aAAa,CAAC,SACzB;AAAA,EACE,GAAG,KAAK,KAAK,IAAI,KAAK,YAAY;AAAA,EAClC;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC;AACF;AAEW,MAAA,cAAc,CAAC,SAC1B;AAAA,EACE,KAAK;AAAA,EACL;AAAA,IACE,MAAM,KAAK;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,CAAC,eAAe,GAAG,KAAK;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC;AACF;AAEW,MAAA,uCAAuC,CAClD,cACA,kBAEAA,EAAM,YAAY,EAEf,KAAK,EAAE,MAAMC,EAAE,OAAO,GAAG,QAAQ,IAAO,GAAA,YAAY,mBAAmB,EACvE,KAAK,EAAE,MAAMA,EAAE,UAAU,QAAQ,IAAA,GAAO,YAAY,qBAAqB,EACzE,KAAK,EAAE,MAAMA,EAAE,OAAA,GAAU,QAAQ,IAAI,GAAG,YAAY,iBAAiB,EAErE,KAAKA,EAAE,GAAG,CAAkB,mBAAA,MAAS,eAAe,cAAc,CAAC,EAEnE,UAAU,CAAA,MAAKC,EAAK,GAAG,gBAAgB,UAAwB,CAAC;"}

View file

@ -7,10 +7,12 @@ import { r as recupereElementDocumentEither } from "./utils.js";
import "./erreurs.js";
import "./exports.DMCTjIlP.js";
import "./Either.wHNxn7Os.js";
import "./index.CCa5Y_L9.js";
import "./index.BgFo03XT.js";
import "./messages2.js";
import "./cart.js";
import "./cart2.js";
import "./adresses.js";
import "./couts-livraison.js";
const initialiseBoutonPanier = () => {
const BOUTON_PANIER = x(
recupereElementDocumentEither(SELECTEUR_BOUTON_PANIER),

View file

@ -1 +1 @@
{"version":3,"file":"scripts-bouton-panier.js","sources":["../../src/scripts/scripts-bouton-panier.ts"],"sourcesContent":["/**\n * Scripts pour la mise à jour trans-fenêtres/trans-onglets du Bouton du Panier.\n */\n\nimport { pipe } from \"remeda\";\n\nimport type { MessageMajBoutonPanier } from \"./lib/types/messages\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { valideMessageMajBoutonPanier } from \"./lib/messages.ts\";\nimport { recupereElementDocumentEither } from \"./lib/utils.ts\";\n\nconst initialiseBoutonPanier = (): void => {\n /** Le « Bouton » vers le Panier dont le texte est un indicateur du nombre de Produits dedans. */\n const BOUTON_PANIER: HTMLAnchorElement = pipe(\n recupereElementDocumentEither<HTMLAnchorElement>(SELECTEUR_BOUTON_PANIER),\n recupereElementOuLeve,\n );\n const CANAL_BOUTON_PANIER: BroadcastChannel = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n\n CANAL_BOUTON_PANIER.onmessage = (evenementMessage: MessageEvent<unknown>): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n // Met à jour le Bouton du Panier\n .ifRight((message: MessageMajBoutonPanier) => {\n BOUTON_PANIER.textContent = `cart (${String(message.donnees.quantiteProduits)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(message.donnees.quantiteProduits > 0));\n });\n };\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":["pipe"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,yBAAyB,MAAY;AAEzC,QAAM,gBAAmCA;AAAAA,IACvC,8BAAiD,uBAAuB;AAAA,IACxE;AAAA,EAAA;AAEI,QAAA,sBAAwC,IAAI,iBAAiB,uBAAuB;AAEtE,sBAAA,YAAY,CAAC,qBAAkD;AACjF,iCAA6B,gBAAgB,EAE1C,QAAQ,CAAC,YAAoC;AAC5C,oBAAc,cAAc,SAAS,OAAO,QAAQ,QAAQ,gBAAgB,CAAC;AAC7E,oBAAc,aAAa,4BAA4B,OAAO,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;AAAA,IAAA,CACpG;AAAA,EAAA;AAEP;AAEA,SAAS,iBAAiB,oBAAoB,MAAM;AAC3B;AACzB,CAAC;"}
{"version":3,"file":"scripts-bouton-panier.js","sources":["../../src/scripts/scripts-bouton-panier.ts"],"sourcesContent":["/**\n * Scripts pour la mise à jour trans-fenêtres/trans-onglets du Bouton du Panier.\n */\n\nimport { pipe } from \"remeda\";\n\nimport type { MessageMajBoutonPanier } from \"./lib/types/messages\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { valideMessageMajBoutonPanier } from \"./lib/messages.ts\";\nimport { recupereElementDocumentEither } from \"./lib/utils.ts\";\n\nconst initialiseBoutonPanier = (): void => {\n /** Le « Bouton » vers le Panier dont le texte est un indicateur du nombre de Produits dedans. */\n const BOUTON_PANIER: HTMLAnchorElement = pipe(\n recupereElementDocumentEither<HTMLAnchorElement>(SELECTEUR_BOUTON_PANIER),\n recupereElementOuLeve,\n );\n const CANAL_BOUTON_PANIER: BroadcastChannel = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n\n CANAL_BOUTON_PANIER.onmessage = (evenementMessage: MessageEvent<unknown>): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n // Met à jour le Bouton du Panier\n .ifRight((message: MessageMajBoutonPanier) => {\n BOUTON_PANIER.textContent = `cart (${String(message.donnees.quantiteProduits)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(message.donnees.quantiteProduits > 0));\n });\n };\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":["pipe"],"mappings":";;;;;;;;;;;;;;;AAcA,MAAM,yBAAyB,MAAY;AAEzC,QAAM,gBAAmCA;AAAAA,IACvC,8BAAiD,uBAAuB;AAAA,IACxE;AAAA,EAAA;AAEI,QAAA,sBAAwC,IAAI,iBAAiB,uBAAuB;AAEtE,sBAAA,YAAY,CAAC,qBAAkD;AACjF,iCAA6B,gBAAgB,EAE1C,QAAQ,CAAC,YAAoC;AAC5C,oBAAc,cAAc,SAAS,OAAO,QAAQ,QAAQ,gBAAgB,CAAC;AAC7E,oBAAc,aAAa,4BAA4B,OAAO,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;AAAA,IAAA,CACpG;AAAA,EAAA;AAEP;AAEA,SAAS,iBAAiB,oBAAoB,MAAM;AAC3B;AACzB,CAAC;"}

View file

@ -0,0 +1,56 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.BgFo03XT.js";
import { R as ROUTE_API_PRODUITS } from "./api.js";
import { f as SELECTEUR_GRILLE_PRODUITS, g as SELECTEUR_BOUTON_PLUS_PRODUITS } from "./dom.js";
import { l as leveServerError } from "./erreurs.js";
import { e as estReponse500 } from "./gardes.js";
import { g as getBackend, t as traiteReponseBackendWCSelonCodesHTTP } from "./reseau.js";
import { W as WCProductsArgsSchema, a as WCProductsSchema } from "./products.js";
import { a as recupereElementDansDocumentOuLeve } from "./utils.js";
import { E as EitherAsync } from "./MaybeAsync.AE1jnxuc.js";
import { E as Either } from "./Either.wHNxn7Os.js";
import "./exports.DMCTjIlP.js";
import "./chunk-7BKSRZNG.C39W3Wne.js";
import "./erreurs2.js";
import "./products2.js";
import "./dom2.js";
const ETATS_PAGE = _etats;
recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);
const BOUTON_PLUS_DE_PRODUITS = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);
const initialisePageBoutique = () => {
BOUTON_PLUS_DE_PRODUITS.addEventListener("click", () => {
const args = {
page: 1
};
Either.encase(() => parse(WCProductsArgsSchema, args)).map(
async (args2) => {
await EitherAsync(
() => getBackend({
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_PRODUITS,
searchParams: new URLSearchParams(args2).toString()
})
).map((reponse) => {
if (estReponse500(reponse)) leveServerError("500 Server Error");
return reponse.json();
}).map(
(corpsReponse) => (
// Traite tous les codes HTTPs possibles
traiteReponseBackendWCSelonCodesHTTP(
corpsReponse,
WCProductsSchema
)
)
).ifRight((donnees) => {
console.debug(donnees);
}).ifLeft((e) => {
z(e).with({ issues: N.select(), name: "ValiError" }, (problemes) => console.error("ValiError", problemes)).otherwise((e2) => console.error("Autre", e2.name, e2));
}).void();
}
);
});
};
document.addEventListener("DOMContentLoaded", () => {
initialisePageBoutique();
});
//# sourceMappingURL=scripts-page-boutique.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"scripts-page-boutique.js","sources":["../../src/scripts/scripts-page-boutique.ts"],"sourcesContent":["/**\n * Scripts pour les fonctionnalités de la page Boutique.\n */\n\nimport { Either, EitherAsync } from \"purify-ts\";\nimport { match, P } from \"ts-pattern\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type { APIFetchErrors } from \"./lib/types/api/erreurs\";\nimport type { WCProducts, WCProductsArgs } from \"./lib/types/api/products\";\n\nimport { ROUTE_API_PRODUITS } from \"./constantes/api.ts\";\nimport { SELECTEUR_BOUTON_PLUS_PRODUITS, SELECTEUR_GRILLE_PRODUITS } from \"./constantes/dom.ts\";\nimport { leveServerError } from \"./lib/erreurs.ts\";\nimport { estReponse500 } from \"./lib/gardes.ts\";\nimport { getBackend, traiteReponseBackendWCSelonCodesHTTP } from \"./lib/reseau.ts\";\nimport { WCProductsArgsSchema, WCProductsSchema } from \"./lib/schemas/products.ts\";\nimport { recupereElementDansDocumentOuLeve } from \"./lib/utils.ts\";\n\n/** États utiles pour les scripts de la page. */\ntype EtatsPage = {\n /** Un nonce pour l'authentification de requêtes API vers le backend WooCommerce. */\n nonce: string;\n};\n\n// @ts-expect-error -- États injectés par le modèle PHP\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP\nconst ETATS_PAGE: EtatsPage = _etats;\n\n// Éléments d'intérêt\nconst GRILLE_PRODUITS: HTMLDivElement = recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);\nconst BOUTON_PLUS_DE_PRODUITS: HTMLButtonElement = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);\n\nconst initialisePageBoutique = (): void => {\n BOUTON_PLUS_DE_PRODUITS.addEventListener(\"click\", (): void => {\n const args: WCProductsArgs = {\n page: 1,\n };\n\n type APIProductsErrors =\n | APIFetchErrors\n | ValiError<typeof WCProductsArgsSchema>\n | ValiError<typeof WCProductsSchema>;\n\n // Réalise la requête et traite sa réponse\n Either\n // Valide les arguments de la requête\n .encase<ValiError<typeof WCProductsArgsSchema>, WCProductsArgs>(() => parse(WCProductsArgsSchema, args))\n .map(\n async (args: WCProductsArgs) => {\n // Réalise la requête\n await EitherAsync<APIProductsErrors, Response>(() =>\n getBackend({\n nonce: ETATS_PAGE.nonce,\n route: ROUTE_API_PRODUITS,\n searchParams: new URLSearchParams(args).toString(),\n })\n )\n .map((reponse: Response) => {\n // Traite le cas d'erreur 500\n if (estReponse500(reponse)) leveServerError(\"500 Server Error\");\n // Retourne le corps de la Réponse\n return reponse.json();\n })\n .map((corpsReponse: unknown) =>\n // Traite tous les codes HTTPs possibles\n traiteReponseBackendWCSelonCodesHTTP<WCProducts, typeof WCProductsSchema>(\n corpsReponse,\n WCProductsSchema,\n )\n )\n .ifRight((donnees: WCProducts) => {\n console.debug(donnees);\n // Met à jour le DOM\n })\n .ifLeft(e => {\n match(e)\n // TODO: Créer une méthode pour rapporter les problèmes de validation\n .with({ issues: P.select(), name: \"ValiError\" }, problemes => console.error(\"ValiError\", problemes))\n .otherwise(e => console.error(\"Autre\", e.name, e));\n })\n // Pas d'intérêt à récupérer le résultat\n .void();\n },\n );\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialisePageBoutique();\n});\n"],"names":["args","match","P","e"],"mappings":";;;;;;;;;;;;;;;;AA2BA,MAAM,aAAwB;AAGU,kCAAkC,yBAAyB;AACnG,MAAM,0BAA6C,kCAAkC,8BAA8B;AAEnH,MAAM,yBAAyB,MAAY;AACjB,0BAAA,iBAAiB,SAAS,MAAY;AAC5D,UAAM,OAAuB;AAAA,MAC3B,MAAM;AAAA,IAAA;AASR,WAEG,OAA+D,MAAM,MAAM,sBAAsB,IAAI,CAAC,EACtG;AAAA,MACC,OAAOA,UAAyB;AAExB,cAAA;AAAA,UAAyC,MAC7C,WAAW;AAAA,YACT,OAAO,WAAW;AAAA,YAClB,OAAO;AAAA,YACP,cAAc,IAAI,gBAAgBA,KAAI,EAAE,SAAS;AAAA,UAAA,CAClD;AAAA,QAAA,EAEA,IAAI,CAAC,YAAsB;AAE1B,cAAI,cAAc,OAAO,EAAG,iBAAgB,kBAAkB;AAE9D,iBAAO,QAAQ;QAChB,CAAA,EACA;AAAA,UAAI,CAAC;AAAA;AAAA,YAEJ;AAAA,cACE;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QAAA,EAED,QAAQ,CAAC,YAAwB;AAChC,kBAAQ,MAAM,OAAO;AAAA,QAAA,CAEtB,EACA,OAAO,CAAK,MAAA;AACLC,YAAA,CAAC,EAEJ,KAAK,EAAE,QAAQC,EAAE,OAAA,GAAU,MAAM,eAAe,CAAa,cAAA,QAAQ,MAAM,aAAa,SAAS,CAAC,EAClG,UAAU,CAAAC,OAAK,QAAQ,MAAM,SAASA,GAAE,MAAMA,EAAC,CAAC;AAAA,QAAA,CACpD,EAEA,KAAK;AAAA,MACV;AAAA,IAAA;AAAA,EACF,CACH;AACH;AAEA,SAAS,iBAAiB,oBAAoB,MAAY;AACjC;AACzB,CAAC;"}

View file

@ -1,9 +1,10 @@
import { r } from "./chunk-RU7WR4KH.D5j7HXCF.js";
import { u, c as recupereElementsDocumentEither, r as recupereElementDocumentEither, p, d as propEither } from "./utils.js";
import { x } from "./chunk-7BKSRZNG.C39W3Wne.js";
import { p as parse } from "./index.CCa5Y_L9.js";
import { R as ROUTE_API_RETIRE_ARTICLE_PANIER, b as ROUTE_API_MAJ_ARTICLE_PANIER, c as ROUTE_API_MAJ_CLIENT } from "./api.js";
import { f as SELECTEUR_ENTREES_PANIER, g as SELECTEUR_CONTENEUR_PANIER, h as SELECTEUR_SOUS_TOTAL_PANIER, i as SELECTEUR_TOTAL_PANIER, j as SELECTEUR_BOUTON_SEPARATION_ADRESSES, k as SELECTEUR_FORMULAIRE_PANIER, l as SELECTEUR_FORMULAIRE_LIVRAISON, m as SELECTEUR_FORMULAIRE_FACTURATION, n as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, o as ATTRIBUT_CLE_PANIER, p as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, q as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, r as SELECTEUR_BOUTON_ADDITION_QUANTITE, s as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, t as SELECTEUR_PRIX_LIGNE_PANIER, u as ATTRIBUT_HIDDEN, v as ATTRIBUT_DESACTIVE } from "./dom.js";
import { z } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.BgFo03XT.js";
import { b as ROUTE_API_RETIRE_ARTICLE_PANIER, c as ROUTE_API_MAJ_ARTICLE_PANIER, d as ROUTE_API_MAJ_CLIENT } from "./api.js";
import { h as SELECTEUR_ENTREES_PANIER, i as SELECTEUR_CONTENEUR_PANIER, j as SELECTEUR_SOUS_TOTAL_PRODUITS, k as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, l as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, m as SELECTEUR_TOTAL_PANIER, n as SELECTEUR_BOUTON_SEPARATION_ADRESSES, o as SELECTEUR_FORMULAIRE_PANIER, p as SELECTEUR_FORMULAIRE_LIVRAISON, q as SELECTEUR_FORMULAIRE_FACTURATION, r as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, s as ATTRIBUT_CLE_PANIER, t as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, u as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, v as SELECTEUR_BOUTON_ADDITION_QUANTITE, w as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, x as SELECTEUR_PRIX_LIGNE_PANIER, y as ATTRIBUT_HIDDEN, z as ATTRIBUT_DESACTIVE } from "./dom.js";
import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
import { r as recupereElementOuLeve, a as recupereElementsAvecSelecteur, b as recupereElementAvecSelecteur } from "./dom2.js";
import { l as leveServerError, r as reporteErreur } from "./erreurs.js";
@ -17,10 +18,10 @@ import { W as WCStoreCartUpdateItemArgsSchema } from "./cart-update-item.js";
import { M as Maybe, E as Either } from "./Either.wHNxn7Os.js";
import "./exports.DMCTjIlP.js";
import "./messages2.js";
import "./index.CeK6pfoJ.js";
import "./erreurs2.js";
import "./cart2.js";
import "./adresses.js";
import "./couts-livraison.js";
function n(...r2) {
return u(Object.fromEntries, r2);
}
@ -32,8 +33,16 @@ const CONTENEUR_PANIER = x(
recupereElementDocumentEither(SELECTEUR_CONTENEUR_PANIER),
recupereElementOuLeve
);
const SOUS_TOTAL_PANIER = x(
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_PANIER),
const SOUS_TOTAL_PRODUITS = x(
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_PRODUITS),
recupereElementOuLeve
);
const SOUS_TOTAL_LIVRAISON_COUT = x(
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
recupereElementOuLeve
);
const SOUS_TOTAL_LIVRAISON_PRESTATAIRE = x(
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
recupereElementOuLeve
);
const TOTAL_PANIER = x(
@ -252,7 +261,7 @@ const initialiseMajContenuPanier = () => {
champQuantite.setAttribute("value", String(ligne.quantity));
majEtatsActivationBoutons(entrees);
});
SOUS_TOTAL_PANIER.textContent = `${String(donnees.totalPanier)} €`;
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.totalPanier)} €`;
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)} €`;
});
});
@ -271,7 +280,6 @@ const initialiseMajFormulairesPanier = () => {
FORMULAIRE_FACTURATION.setAttribute(ATTRIBUT_HIDDEN, "");
recupereElementsAvecSelecteur(FORMULAIRE_FACTURATION)("input, select").ifRight(
(champs) => champs.forEach((champ) => {
console.debug(champ);
champ.setAttribute(ATTRIBUT_DESACTIVE, "");
champ.value = "";
})
@ -319,12 +327,17 @@ const initialiseBoutonActions = () => {
x(
// Récupère la Réponse
await reponse.json(),
r((a) => console.debug(a)),
// Traite tous les codes HTTPs possibles
(corpsReponse) => traiteReponseBackendWCSelonCodesHTTP(
corpsReponse,
WCStoreCartSchema
)
),
r((donnees) => {
const sousTotalLivraison = donnees.totals.total_shipping === "0" ? "Free" : `${String(donnees.totals.total_shipping)} €`;
const sousTotalPrestataire = z(donnees.shipping_rates[0]?.shipping_rates[0]?.name).with("Mondial Relay - Livraison Point Relais (Gratuit)", () => "Mondial Relay - Pickup Point").otherwise(() => "");
SOUS_TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;
SOUS_TOTAL_LIVRAISON_PRESTATAIRE.textContent = sousTotalPrestataire;
})
);
});
}

File diff suppressed because one or more lines are too long

View file

@ -2,9 +2,9 @@ import { r } from "./chunk-RU7WR4KH.D5j7HXCF.js";
import { r as recupereElementDocumentEither, c as recupereElementsDocumentEither, p } from "./utils.js";
import { x } from "./chunk-7BKSRZNG.C39W3Wne.js";
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.CCa5Y_L9.js";
import { d as ROUTE_API_AJOUTE_ARTICLE_PANIER, e as ENTETE_WC_NONCE } from "./api.js";
import { w as SELECTEUR_BOUTON_AJOUT_PANIER, x as SELECTEUR_SELECTEUR_QUANTITE, y as SELECTEUR_LIENS_ONGLETS, z as SELECTEUR_SECTIONS_CONTENUS, B as ATTRIBUT_ARIA_SELECTED, u as ATTRIBUT_HIDDEN, v as ATTRIBUT_DESACTIVE } from "./dom.js";
import { p as parse } from "./index.BgFo03XT.js";
import { e as ROUTE_API_AJOUTE_ARTICLE_PANIER, f as ENTETE_WC_NONCE } from "./api.js";
import { B as SELECTEUR_BOUTON_AJOUT_PANIER, C as SELECTEUR_SELECTEUR_QUANTITE, D as SELECTEUR_LIENS_ONGLETS, E as SELECTEUR_SECTIONS_CONTENUS, F as ATTRIBUT_ARIA_SELECTED, y as ATTRIBUT_HIDDEN, z as ATTRIBUT_DESACTIVE } from "./dom.js";
import { r as recupereElementOuLeve, c as recupereElementsOuLeve } from "./dom2.js";
import { l as leveServerError, a as leveBadRequestError, b as leveUnauthorizedError, c as leveNotFoundError, E as ErreurInconnue, d as leveErreur, r as reporteErreur } from "./erreurs.js";
import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js";
@ -17,6 +17,8 @@ import "./exports.DMCTjIlP.js";
import "./messages3.js";
import "./messages2.js";
import "./cart2.js";
import "./adresses.js";
import "./couts-livraison.js";
const ETATS_PAGE = _etats;
const deplieToutesSections = (ensembleLiensContenus) => {
ensembleLiensContenus.forEach((ensemble) => {

File diff suppressed because one or more lines are too long

View file

@ -99,7 +99,7 @@
* 1. Permet d'éviter un agrandissement de l'élément avec plus de 9 articles.
*/
a {
min-width: 9ch; /* 1 */
min-width: 10ch; /* 1 */
text-transform: lowercase;
&.lien-compte {

View file

@ -212,15 +212,11 @@
}
.panneau__sous-totaux {
width: fit-content;
width: min(30rem, 100%);
margin: auto;
padding: var(--espace-l) 0;
padding: var(--espace-l) var(--espace-xl);
text-align: center;
p + p {
margin-top: var(--espace-l);
}
&__ligne {
display: flex;
flex-flow: row nowrap;
@ -228,15 +224,24 @@
font-style: italic;
strong {
text-align: right;
text-transform: lowercase;
}
&.sous-total strong {
font-style: normal;
&#sous-total-livraison {
// Prestataire de la livraison
p:last-of-type {
text-align: right;
span {
color: grey;
}
}
}
}
&__conditions-livraison {
margin-top: var(--espace-l);
font-size: 0.8rem;
font-weight: 450;
color: grey;

View file

@ -38,6 +38,7 @@
// En-têtes de panneau (« Your cart / Your info >)
&__en-tete {
position: sticky;
z-index: 2;
top: var(--menu-section-marges-bloc-debut);
display: block;
align-content: center;

View file

@ -5,6 +5,7 @@ export const ROUTE_API_AJOUTE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/car
export const ROUTE_API_RETIRE_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/remove-item`;
export const ROUTE_API_MAJ_ARTICLE_PANIER = `/${CHEMIN_API_REST}/wc/store/cart/update-item`;
export const ROUTE_API_MAJ_CLIENT = `/${CHEMIN_API_REST}/wc/store/cart/update-customer`;
export const ROUTE_API_PRODUITS = `/${CHEMIN_API_REST}/wc/store/products`;
// En-têtes
export const ENTETE_WC_NONCE = "Nonce";

View file

@ -8,6 +8,7 @@ export const ATTRIBUT_CONTIENT_ARTICLES = "data-contient-articles";
export const ATTRIBUT_DESACTIVE = "disabled";
export const ATTRIBUT_HIDDEN = "hidden";
export const ATTRIBUT_INDEX = "data-index";
export const ATTRIBUT_PAGE = "data-page";
export const SELECTEUR_CONTENEUR_PANIER = "#page-panier";
export const SELECTEUR_BOUTON_PANIER = ".compte-panier a[rel='cart']";
@ -23,7 +24,9 @@ export const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = "button.detail-produit__ac
export const SELECTEUR_BOUTON_ADDITION_QUANTITE = "button.detail-produit__actions__addition";
export const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = "input";
export const SELECTEUR_PRIX_LIGNE_PANIER = ".detail-produit__nom-prix span";
export const SELECTEUR_SOUS_TOTAL_PANIER = "#panneau-panier .panneau__sous-totaux__ligne strong";
export const SELECTEUR_SOUS_TOTAL_PRODUITS = "#panneau-panier #sous-total-produits strong";
export const SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT = "#panneau-panier #sous-total-livraison strong";
export const SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE = "#panneau-panier #sous-total-livraison span";
export const SELECTEUR_TOTAL_PANIER = "#panneau-panier .panneau__pied-de-page p span";
export const SELECTEUR_BOUTON_SEPARATION_ADRESSES = "#separation-adresses";
export const SELECTEUR_FORMULAIRE_PANIER = "#panneau-informations-client form";
@ -34,3 +37,7 @@ export const SELECTEUR_BOUTON_ACTIONS_FORMULAIRE = "#panneau-informations-client
// Accueil
export const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling";
export const SELECTEUR_IMAGES_STORYTELLING = ".storytelling__image";
// Boutique
export const SELECTEUR_GRILLE_PRODUITS = "#page-boutique .grille-produits";
export const SELECTEUR_BOUTON_PLUS_PRODUITS = "#page-boutique #bouton-plus-de-produits";

View file

@ -0,0 +1,77 @@
export const PRODUCTS_CONTEXTES = {
EDIT: "edit",
VIEW: "view",
} as const;
export const DATE_COLUMN_VALUES = {
DATE: "date",
DATE_GMT: "date_gmt",
MODIFIED: "modified",
MODIFIED_GMT: "modified_gmt",
} as const;
export const ORDER_VALUES = {
ASC: "asc",
DESC: "desc",
} as const;
export const ORDERBY_VALUES = {
COMMENT_COUNT: "comment_count",
DATE: "date",
ID: "id",
INCLUDE: "include",
MENU_ORDER: "menu_order",
MODIFIED: "modified",
POPULARITY: "popularity",
PRICE: "price",
RATING: "rating",
SLUG: "slug",
TITLE: "title",
} as const;
export const PRODUCT_TYPES = {
EXTERNAL: "external",
GROUPED: "grouped",
SIMPLE: "simple",
VARIABLE: "variable",
VARIATION: "variation",
} as const;
export const CATEGORY_OPERATORS = {
AND: "and",
IN: "in",
NOT_IN: "not_in",
} as const;
export const TAG_OPERATORS = {
AND: "and",
IN: "in",
NOT_IN: "not_in",
} as const;
export const STOCK_STATUSES = {
IN_STOCK: "instock",
ON_BACK_ORDER: "onbackorder",
OUT_OF_STOCK: "outofstock",
} as const;
export const ATTRIBUTES_RELATIONS = {
AND: "and",
IN: "in",
} as const;
export const CATALOG_VISIBILITIES = {
ANY: "any",
CATALOG: "catalog",
HIDDEN: "hidden",
SEARCH: "search",
VISIBLE: "visible",
} as const;
export const RATINGS = {
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
} as const;

View file

@ -13,6 +13,15 @@ import {
} from "./erreurs.ts";
import { estWCError } from "./schemas/erreurs.ts";
type ArgumentsGetBackendWC = {
/** Une chaîne de caractères généré par le backend et à joindre à chaque requête pour l'authentifier. */
nonce: string;
/** La route, ou chemin, de l'API à demander au backend. */
route: string;
/** Paramètres de recherche (« query args ») à injecter dans l'URL de la requête. */
searchParams: string;
};
type ArgumentsPostBackendWC = {
/** Le corps de la requête (ses arguments). */
corps: BodyInit;
@ -22,6 +31,22 @@ type ArgumentsPostBackendWC = {
route: string;
};
export const getBackend = (args: ArgumentsGetBackendWC) =>
fetch(
`${args.route}?${args.searchParams}`,
{
credentials: "same-origin",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
[ENTETE_WC_NONCE]: args.nonce,
},
method: "GET",
mode: "same-origin",
signal: AbortSignal.timeout(5000),
},
);
export const postBackend = (args: ArgumentsPostBackendWC) =>
fetch(
args.route,

View file

@ -6,7 +6,8 @@ export const WCStoreBillingAddressSchema = v.object({
city: v.string(),
company: v.string(),
country: v.string(),
email: v.pipe(v.string(), v.email()),
// email: v.optional(v.pipe(v.string(), v.email())),
email: v.string(),
first_name: v.string(),
last_name: v.string(),
phone: v.string(),

View file

@ -1,6 +1,8 @@
import * as v from "valibot";
import { CATALOG_VISIBILITIES } from "../../constantes/cart.ts";
import { WCStoreBillingAddressSchema, WCStoreShippingAddressSchema } from "./adresses.ts";
import { WCStoreShippingRateSchema } from "./couts-livraison.ts";
export const WCStoreCartItemTotalsSchema = v.object({
currency_code: v.string(),
@ -62,21 +64,21 @@ export const WCStoreCartTotalsSchema = v.object({
});
export const WCStoreCartSchema = v.object({
billing_address: v.unknown(),
billing_address: WCStoreBillingAddressSchema,
coupons: v.unknown(),
cross_sells: v.unknown(),
errors: v.unknown(),
extensions: v.unknown(),
fees: v.unknown(),
has_calculated_shipping: v.unknown(),
has_calculated_shipping: v.boolean(),
items: v.array(WCStoreCartItemSchema),
items_count: v.pipe(v.number(), v.integer()),
items_weight: v.unknown(),
needs_payment: v.unknown(),
needs_shipping: v.unknown(),
items_weight: v.pipe(v.number(), v.integer()),
needs_payment: v.boolean(),
needs_shipping: v.boolean(),
payment_methods: v.unknown(),
payment_requirements: v.unknown(),
shipping_address: v.unknown(),
shipping_rates: v.unknown(),
shipping_address: WCStoreShippingAddressSchema,
shipping_rates: v.array(WCStoreShippingRateSchema),
totals: WCStoreCartTotalsSchema,
});

View file

@ -0,0 +1,39 @@
// Coûts de livraison ("shipping rates")
import * as v from "valibot";
import { WCStoreShippingAddressSchema } from "./adresses.ts";
export const WCStoreShippingRateItemSchema = v.object({
key: v.string(),
name: v.string(),
quantity: v.number(),
});
export const WCStoreShippingRateShippingRateSchema = v.object({
currency_code: v.string(),
currency_decimal_separator: v.string(),
currency_minor_unit: v.number(),
currency_prefix: v.string(),
currency_suffix: v.string(),
currency_symbol: v.string(),
currency_thousand_separator: v.string(),
delivery_time: v.string(),
description: v.string(),
instance_id: v.number(),
meta_data: v.array(v.unknown()),
method_id: v.string(),
name: v.string(),
price: v.string(),
rate_id: v.string(),
selected: v.boolean(),
taxes: v.string(),
});
export const WCStoreShippingRateSchema = v.object({
destination: v.omit(WCStoreShippingAddressSchema, ["company", "first_name", "last_name", "phone"]),
items: v.array(WCStoreShippingRateItemSchema),
name: v.string(),
package_id: v.number(),
shipping_rates: v.array(WCStoreShippingRateShippingRateSchema),
});

View file

@ -0,0 +1,121 @@
import * as v from "valibot";
import {
ATTRIBUTES_RELATIONS,
CATALOG_VISIBILITIES,
CATEGORY_OPERATORS,
DATE_COLUMN_VALUES,
ORDER_VALUES,
ORDERBY_VALUES,
PRODUCT_TYPES,
PRODUCTS_CONTEXTES,
RATINGS,
STOCK_STATUSES,
TAG_OPERATORS,
} from "../../constantes/products.ts";
export const WCProductsArgsSchema = v.object({
// Date ISO8601
after: v.optional(v.optional(v.string())),
attribute_relation: v.optional(v.enum(ATTRIBUTES_RELATIONS)),
attributes: v.optional(v.array(v.unknown())),
// Date ISO8601
before: v.optional(v.string()),
catalog_visibility: v.optional(v.enum(CATALOG_VISIBILITIES)),
category: v.optional(v.string()),
category_operator: v.optional(v.enum(CATEGORY_OPERATORS)),
context: v.optional(v.enum(PRODUCTS_CONTEXTES)),
date_column: v.optional(v.enum(DATE_COLUMN_VALUES)),
exclude: v.optional(v.array(v.pipe(v.number(), v.integer()))),
featured: v.optional(v.boolean()),
include: v.optional(v.array(v.pipe(v.number(), v.integer()))),
max_price: v.optional(v.string()),
min_price: v.optional(v.string()),
offset: v.optional(v.number()),
on_sale: v.optional(v.boolean()),
order: v.optional(v.enum(ORDER_VALUES)),
orderby: v.optional(v.enum(ORDERBY_VALUES)),
page: v.optional(v.pipe(v.number(), v.minValue(1))),
parent: v.optional(v.array(v.pipe(v.number(), v.integer()))),
parent_exclude: v.optional(v.array(v.pipe(v.number(), v.integer()))),
per_page: v.optional(v.pipe(v.number(), v.minValue(0), v.maxValue(100))),
rating: v.optional(v.array(v.enum(RATINGS))),
search: v.optional(v.string()),
sku: v.optional(v.string()),
slug: v.optional(v.string()),
stock_status: v.optional(v.array(v.enum(STOCK_STATUSES))),
tag: v.optional(v.string()),
tag_operator: v.optional(v.enum(TAG_OPERATORS)),
type: v.optional(v.enum(PRODUCT_TYPES)),
});
export const WCProductSchema = v.object({
add_to_cart: v.object({
description: v.string(),
maximum: v.number(),
minimum: v.number(),
multiple_of: v.number(),
text: v.string(),
url: v.string(),
}),
attributes: v.array(v.unknown()),
average_rating: v.string(),
categories: v.array(v.object({
id: v.number(),
link: v.string(),
name: v.string(),
slug: v.string(),
})),
description: v.string(),
extensions: v.unknown(),
has_options: v.boolean(),
id: v.number(),
images: v.array(v.object({
alt: v.string(),
id: v.number(),
name: v.string(),
sizes: v.string(),
src: v.string(),
srcset: v.string(),
thumbnail: v.string(),
})),
is_in_stock: v.boolean(),
is_on_backorder: v.boolean(),
is_purchasable: v.boolean(),
low_stock_remaining: v.union([v.string(), v.null()]),
name: v.string(),
on_sale: v.boolean(),
parent: v.number(),
permalink: v.string(),
price_html: v.string(),
prices: v.object({
currency_code: v.string(),
currency_decimal_separator: v.string(),
currency_minor_unit: v.number(),
currency_prefix: v.string(),
currency_suffix: v.string(),
currency_symbol: v.string(),
currency_thousand_separator: v.string(),
price: v.string(),
price_range: v.optional(v.unknown()),
regular_price: v.string(),
sale_price: v.string(),
}),
review_count: v.number(),
short_description: v.string(),
sku: v.string(),
slug: v.string(),
sold_individually: v.boolean(),
tags: v.array(v.string()),
type: v.string(),
variation: v.unknown(),
variations: v.array(v.object({
attributes: v.array(v.object({
name: v.string(),
value: v.string(),
})),
id: v.number(),
})),
});
export const WCProductsSchema = v.array(WCProductSchema);

View file

@ -1,6 +1,14 @@
import type { InferOutput } from "valibot";
import type { BadRequestError, NotFoundError, ServerError, UnauthorizedError, UnknownError } from "../../erreurs.ts";
import type { WCErrorBodySchema, WCErrorSchema } from "../../schemas/erreurs.ts";
export type WCErrorBody = InferOutput<typeof WCErrorBodySchema>;
export type WCError = InferOutput<typeof WCErrorSchema>;
export type APIFetchErrors =
| BadRequestError
| NotFoundError
| ServerError
| UnauthorizedError
| UnknownError;

View file

@ -0,0 +1,8 @@
import type { InferOutput } from "valibot";
import type { WCProductsArgsSchema, WCProductSchema, WCProductsSchema } from "../../schemas/products.ts";
export type WCProduct = InferOutput<typeof WCProductSchema>;
export type WCProducts = InferOutput<typeof WCProductsSchema>;
export type WCProductsArgs = InferOutput<typeof WCProductsArgsSchema>;

View file

@ -0,0 +1,91 @@
/**
* Scripts pour les fonctionnalités de la page Boutique.
*/
import { Either, EitherAsync } from "purify-ts";
import { match, P } from "ts-pattern";
import { parse, type ValiError } from "valibot";
import type { APIFetchErrors } from "./lib/types/api/erreurs";
import type { WCProducts, WCProductsArgs } from "./lib/types/api/products";
import { ROUTE_API_PRODUITS } from "./constantes/api.ts";
import { SELECTEUR_BOUTON_PLUS_PRODUITS, SELECTEUR_GRILLE_PRODUITS } from "./constantes/dom.ts";
import { leveServerError } from "./lib/erreurs.ts";
import { estReponse500 } from "./lib/gardes.ts";
import { getBackend, traiteReponseBackendWCSelonCodesHTTP } from "./lib/reseau.ts";
import { WCProductsArgsSchema, WCProductsSchema } from "./lib/schemas/products.ts";
import { recupereElementDansDocumentOuLeve } from "./lib/utils.ts";
/** États utiles pour les scripts de la page. */
type EtatsPage = {
/** Un nonce pour l'authentification de requêtes API vers le backend WooCommerce. */
nonce: string;
};
// @ts-expect-error -- États injectés par le modèle PHP
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP
const ETATS_PAGE: EtatsPage = _etats;
// Éléments d'intérêt
const GRILLE_PRODUITS: HTMLDivElement = recupereElementDansDocumentOuLeve(SELECTEUR_GRILLE_PRODUITS);
const BOUTON_PLUS_DE_PRODUITS: HTMLButtonElement = recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_PLUS_PRODUITS);
const initialisePageBoutique = (): void => {
BOUTON_PLUS_DE_PRODUITS.addEventListener("click", (): void => {
const args: WCProductsArgs = {
page: 1,
};
type APIProductsErrors =
| APIFetchErrors
| ValiError<typeof WCProductsArgsSchema>
| ValiError<typeof WCProductsSchema>;
// Réalise la requête et traite sa réponse
Either
// Valide les arguments de la requête
.encase<ValiError<typeof WCProductsArgsSchema>, WCProductsArgs>(() => parse(WCProductsArgsSchema, args))
.map(
async (args: WCProductsArgs) => {
// Réalise la requête
await EitherAsync<APIProductsErrors, Response>(() =>
getBackend({
nonce: ETATS_PAGE.nonce,
route: ROUTE_API_PRODUITS,
searchParams: new URLSearchParams(args).toString(),
})
)
.map((reponse: Response) => {
// Traite le cas d'erreur 500
if (estReponse500(reponse)) leveServerError("500 Server Error");
// Retourne le corps de la Réponse
return reponse.json();
})
.map((corpsReponse: unknown) =>
// Traite tous les codes HTTPs possibles
traiteReponseBackendWCSelonCodesHTTP<WCProducts, typeof WCProductsSchema>(
corpsReponse,
WCProductsSchema,
)
)
.ifRight((donnees: WCProducts) => {
console.debug(donnees);
// Met à jour le DOM
})
.ifLeft(e => {
match(e)
// TODO: Créer une méthode pour rapporter les problèmes de validation
.with({ issues: P.select(), name: "ValiError" }, problemes => console.error("ValiError", problemes))
.otherwise(e => console.error("Autre", e.name, e));
})
// Pas d'intérêt à récupérer le résultat
.void();
},
);
});
};
document.addEventListener("DOMContentLoaded", (): void => {
initialisePageBoutique();
});

View file

@ -1,5 +1,6 @@
import { Either, Maybe } from "purify-ts";
import { fromEntries, pipe, prop, tap } from "remeda";
import { match } from "ts-pattern";
import { parse, type ValiError } from "valibot";
import type { MessageMajContenuPanierSchema } from "./lib/schemas/messages.ts";
@ -31,7 +32,9 @@ import {
SELECTEUR_FORMULAIRE_LIVRAISON,
SELECTEUR_FORMULAIRE_PANIER,
SELECTEUR_PRIX_LIGNE_PANIER,
SELECTEUR_SOUS_TOTAL_PANIER,
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT,
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
SELECTEUR_SOUS_TOTAL_PRODUITS,
SELECTEUR_TOTAL_PANIER,
} from "./constantes/dom.ts";
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER } from "./constantes/messages.ts";
@ -76,8 +79,16 @@ const CONTENEUR_PANIER: HTMLElement = pipe(
recupereElementDocumentEither<HTMLElement>(SELECTEUR_CONTENEUR_PANIER),
recupereElementOuLeve,
);
const SOUS_TOTAL_PANIER: HTMLElement = pipe(
recupereElementDocumentEither<HTMLParagraphElement>(SELECTEUR_SOUS_TOTAL_PANIER),
const SOUS_TOTAL_PRODUITS: HTMLElement = pipe(
recupereElementDocumentEither<HTMLParagraphElement>(SELECTEUR_SOUS_TOTAL_PRODUITS),
recupereElementOuLeve,
);
const SOUS_TOTAL_LIVRAISON_COUT: HTMLElement = pipe(
recupereElementDocumentEither<HTMLElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
recupereElementOuLeve,
);
const SOUS_TOTAL_LIVRAISON_PRESTATAIRE: HTMLSpanElement = pipe(
recupereElementDocumentEither<HTMLSpanElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
recupereElementOuLeve,
);
const TOTAL_PANIER: HTMLParagraphElement = pipe(
@ -398,7 +409,7 @@ const initialiseMajContenuPanier = (): void => {
});
// Met à jour les totaux du Panier
SOUS_TOTAL_PANIER.textContent = `${String(donnees.totalPanier)} €`;
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.totalPanier)} €`;
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)} €`;
});
});
@ -426,7 +437,6 @@ const initialiseMajFormulairesPanier = (): void => {
recupereElementsAvecSelecteur(FORMULAIRE_FACTURATION)<HTMLInputElement | HTMLSelectElement>("input, select")
.ifRight(champs =>
champs.forEach(champ => {
console.debug(champ);
champ.setAttribute(ATTRIBUT_DESACTIVE, "");
champ.value = "";
})
@ -445,6 +455,7 @@ const initialiseBoutonActions = (): void => {
BOUTON_ACTIONS_FORMULAIRE.textContent = "Check-out";
})
.ifJust(() => {
// Récupère les données du Formulaire
// @ts-expect-error -- Problème de typage de la librairie DOM
const donneesFormulaireLivraison: Record<string, string> = pipe(
new FormData(FORMULAIRE_PANIER),
@ -453,6 +464,7 @@ const initialiseBoutonActions = (): void => {
fromEntries,
);
// Transforme les données brutes en arguments de requête auprès du backend
const argumentsFormulaire: WCStoreCartUpdateCustomerArgs = {
shipping_address: {
address_1: donneesFormulaireLivraison["livraison-adresse"] ?? "",
@ -468,7 +480,9 @@ const initialiseBoutonActions = (): void => {
},
};
// Réalise la requête et traite sa réponse
Either
// Valide les arguments de la requête
.encase<ValiError<typeof WCStoreCartUpdateCustomerArgsSchema>, WCStoreCartUpdateCustomerArgs>(() =>
parse(WCStoreCartUpdateCustomerArgsSchema, argumentsFormulaire)
)
@ -486,13 +500,23 @@ const initialiseBoutonActions = (): void => {
pipe(
// Récupère la Réponse
await reponse.json(),
tap(a => console.debug(a)),
// Traite tous les codes HTTPs possibles
(corpsReponse: unknown) =>
traiteReponseBackendWCSelonCodesHTTP<WCStoreCart, typeof WCStoreCartSchema>(
corpsReponse,
WCStoreCartSchema,
),
tap((donnees: WCStoreCart) => {
const sousTotalLivraison = donnees.totals.total_shipping === "0"
? "Free"
: `${String(donnees.totals.total_shipping)} €`;
const sousTotalPrestataire = match(donnees.shipping_rates[0]?.shipping_rates[0]?.name)
.with("Mondial Relay - Livraison Point Relais (Gratuit)", () => "Mondial Relay - Pickup Point")
.otherwise(() => "");
SOUS_TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;
SOUS_TOTAL_LIVRAISON_PRESTATAIRE.textContent = sousTotalPrestataire;
}),
);
});
},

View file

@ -1,10 +1,35 @@
{% extends "base.twig" %}
{% block head %}
<script>
// Injection d'états pour les Scripts de la page.
/**
* @typedef {Object} Etats - États utiles pour les scripts de la page.
* @property {string} nonce - Un nonce pour l'authentification de requêtes API.
*/
/** @type {Etats} */
const _etats = {
nonce: "{{ nonce_wc }}",
};
</script>
{% endblock head %}
{% block contenu %}
{# Menu avec les catégories de produits #}
{% include "parts/menu-categories-produits.twig" %}
<main>
<main id="page-boutique">
{% include "parts/pages/shop/grille-produits.twig" %}
<div class="actions">
<button
id="bouton-plus-de-produits"
type="button"
>
Show more products
</button>
</div>
</main>
{% endblock contenu %}

View file

@ -1,15 +1,17 @@
<header id="en-tete">
<section class="logo">
<figure>
<picture>
<img
alt="Haiku Atelier's Logo"
height="25.6"
src="{{ site.theme.link }}/assets/img/logos/logo-lines.svg"
width="80"
/>
</picture>
</figure>
<a href="{{ pages.home.lien }}">
<figure>
<picture>
<img
alt="Haiku Atelier's Logo"
height="25.6"
src="{{ site.theme.link }}/assets/img/logos/logo-lines.svg"
width="80"
/>
</picture>
</figure>
</a>
</section>
{# TODO: Utiliser un Menu WordPress #}

View file

@ -124,12 +124,25 @@
</div>
<div class="panneau__sous-totaux">
<p class="panneau__sous-totaux__ligne sous-total">
Subtotal: <strong>{{ sous_total_panier }} €</strong>
</p>
<p class="panneau__sous-totaux__ligne">
Shipping: <strong>Enter your delivery address.</strong>
</p>
<div
class="panneau__sous-totaux__ligne"
id="sous-total-produits"
>
<p>Subtotal:</p>
<p><strong>{{ sous_total_panier }} €</strong></p>
</div>
<div
class="panneau__sous-totaux__ligne"
id="sous-total-livraison"
>
<p>Shipping:</p>
<p>
<strong>Enter your delivery address</strong>
<br />
<span>&nbsp;</span>
</p>
</div>
<p class="panneau__sous-totaux__conditions-livraison">
Belgium and France: free shipping.<br />

View file

@ -1,4 +1,7 @@
<div class="grille-produits">
<div
class="grille-produits"
data-page="1"
>
{% if produits|length > 0 %}
{% for produit in produits %}
{# TODO: Trouver une meilleure arborescence et des noms de classe #}