diff --git a/.gitignore b/.gitignore index 91d407e2..23f44081 100755 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,10 @@ build/ /playwright-report/ /blob-report/ /playwright/.cache/ + +# Containers +containers/data/* +containers/conf/angie/modules-available +containers/conf/angie/modules-enabled +containers/conf/angie/scripts +containers/conf/angie/snippets diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache new file mode 100644 index 00000000..847bd0f2 --- /dev/null +++ b/.php-cs-fixer.cache @@ -0,0 +1 @@ +{"php":"8.4.11","version":"3.89.1:v3.89.1#f34967da2866ace090a2b447de1f357356474573","indent":" ","lineEnding":"\n","rules":{"blank_line_before_statement":{"statements":["break","case","continue","declare","default","exit","goto","include","include_once","phpdoc","require","require_once","return","switch","throw","try","yield","yield_from"]},"combine_consecutive_issets":true,"combine_consecutive_unsets":true,"empty_loop_body":true,"explicit_indirect_variable":true,"explicit_string_variable":true,"fully_qualified_strict_types":{"import_symbols":true},"heredoc_to_nowdoc":true,"method_argument_space":{"after_heredoc":true,"on_multiline":"ensure_fully_multiline"},"method_chaining_indentation":true,"multiline_comment_opening_closing":true,"multiline_whitespace_before_semicolons":{"strategy":"new_line_for_chained_calls"},"no_extra_blank_lines":{"tokens":["attribute","break","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","return","square_brace_block","switch","throw","use"]},"no_superfluous_elseif":true,"no_superfluous_phpdoc_tags":{"allow_hidden_params":true,"allow_mixed":true,"remove_inheritdoc":true},"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","negative_instanceof","others","return","switch_case","yield","yield_from"]},"no_useless_else":true,"no_useless_return":true,"operator_linebreak":true,"ordered_class_elements":true,"ordered_types":{"null_adjustment":"always_last"},"php_unit_data_provider_method_order":true,"php_unit_internal_class":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_no_empty_return":true,"phpdoc_order_by_value":true,"phpdoc_types_order":true,"protected_to_private":true,"return_assignment":true,"self_static_accessor":true,"single_line_comment_style":true,"single_line_empty_body":true,"string_implicit_backslashes":true,"trailing_comma_in_multiline":{"after_heredoc":true,"elements":["array_destructuring","arrays"]},"whitespace_after_comma_in_array":{"ensure_single_space":true},"nullable_type_declaration":true,"single_class_element_per_statement":true,"types_spaces":true,"array_indentation":true,"array_syntax":true,"cast_spaces":true,"concat_space":true,"function_declaration":{"closure_fn_spacing":"one"},"new_with_parentheses":{"anonymous_class":false},"single_space_around_construct":true,"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"class_definition":{"single_line":true},"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"modifier_keywords":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"return_type_declaration":true,"short_scalar_cast":true,"single_import_per_statement":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"unary_operator_spaces":true,"blank_line_after_namespace":true,"constant_case":true,"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"statement_indentation":{"stick_comment_to_next_continuous_control_statement":true},"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"align_multiline_comment":true,"backtick_to_shell_exec":true,"class_attributes_separation":{"elements":{"method":"one"}},"class_reference_name_casing":true,"clean_namespace":true,"declare_parentheses":true,"echo_tag_syntax":true,"empty_loop_condition":true,"general_phpdoc_tag_rename":{"replacements":{"inheritDocs":"inheritDoc"}},"global_namespace_import":{"import_classes":false,"import_constants":false,"import_functions":false},"include":true,"increment_style":true,"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"magic_constant_casing":true,"magic_method_casing":true,"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_alternative_syntax":true,"no_binary_string":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_trailing_comma_in_singleline":true,"no_unneeded_braces":{"namespaces":true},"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":{"after_heredoc":true},"normalize_index_brace":true,"nullable_type_declaration_for_default_null_value":true,"object_operator_without_whitespace":true,"php_unit_fqcn_annotation":true,"php_unit_method_casing":true,"phpdoc_align":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":{"replacements":{"const":"var","link":"see","property-read":"property","property-write":"property","type":"var"}},"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":{"order":["param","return","throws"]},"phpdoc_return_self_reference":true,"phpdoc_scalar":{"types":["boolean","callback","double","integer","never-return","never-returns","no-return","real","str"]},"phpdoc_separation":{"groups":[["Annotation","NamedArgumentConstructor","Target"],["author","copyright","license"],["category","package","subpackage"],["property","property-read","property-write"],["deprecated","link","see","since"]],"skip_unlisted_annotations":false},"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":{"tags":{"inheritDoc":"inline"}},"phpdoc_to_comment":{"allow_before_return_statement":false},"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_var_annotation_correct_order":true,"phpdoc_var_without_name":true,"semicolon_after_instruction":true,"simple_to_complex_string_variable":true,"single_line_comment_spacing":true,"single_quote":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"switch_continue_to_break":true,"trim_array_spaces":true,"type_declaration_spaces":{"elements":["function","property"]},"yoda_style":true},"hashes":{"stdin.php":"f4a43e208027180f000923255cdabc45","config\/environments\/production.php":"4058867b5ca0192e9a27dee9e8dd9994","config\/environments\/staging.php":"fde963da979661a0903d779b8c07f559","config\/environments\/development.php":"db6b5b096438a9d4f0662420ea4b5135","config\/application.php":"0d2c3eacc734256b0913f6872b8664d8","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/TraitementInformations.php":"b2635e83b36d41faa1ee7d14b316771f","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/Taxonomies.php":"b668fe0fa187c193ed59f01ace62fcf3","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/FonctionnalitesWooCommerce.php":"9ae4dbe5fefd2777434e3b889b8dd691","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/Fonctionnalites.php":"e227ff57a57520864208633b81955dad","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/ChampsPersonnalises.php":"a8f4cae4d15aa0d3a93f5d643f2edfd1","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/HTML.php":"8638d37b6590badd488dd0efd4cc5ee0","web\/app\/themes\/haiku-atelier-2024\/src\/inc\/ControlesPersonnalises.php":"1b559b86814b0a94fc4d765797485125","web\/app\/themes\/haiku-atelier-2024\/src\/StarterSite.php":"3b57f928effaee9d307bccaa097c8529","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/customer-processing-order.php":"949cc246cc85f788dfcd282466630c24","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/customer-invoice.php":"34cb4869b7cd859c0c3b2ea33fd3f5e4","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/customer-completed-order.php":"3f56514a9fbe453b3d94348042f5519f","web\/app\/themes\/haiku-atelier-2024\/404.php":"871655d532d723809911443009edf39e","web\/app\/themes\/haiku-atelier-2024\/front-page.php":"f4a43e208027180f000923255cdabc45","web\/app\/themes\/haiku-atelier-2024\/archive-product.php":"65d0139f0dd09fe6bd8939331fff194f","web\/app\/themes\/haiku-atelier-2024\/index.php":"4d2a55cac16f9d43382eaaacf3798c5d","web\/app\/themes\/haiku-atelier-2024\/page-contact.php":"6e4d3083e56a3d54b56f7676228af4a2","web\/app\/themes\/haiku-atelier-2024\/page-successful-order.php":"17ef0589ad4f94786631a7cb78e613f3","web\/app\/themes\/haiku-atelier-2024\/page-terms-and-conditions.php":"e71dea18834e37533a61a0c4aae95349","web\/app\/themes\/haiku-atelier-2024\/page-failed-order.php":"77335baeee18b2d2b7c116b5cb9f28fe","web\/app\/themes\/haiku-atelier-2024\/taxonomy-product_cat.php":"94d449b5589ab739ed9b3ffeb24e4638","web\/app\/themes\/haiku-atelier-2024\/page-about.php":"a8ccd4d841c6abb312276ef6122f38c6","web\/app\/themes\/haiku-atelier-2024\/functions.php":"0bf63b08fb4252dd40788e0d0cf0bfe3","web\/app\/themes\/haiku-atelier-2024\/single-product.php":"679be14722632df6516543768bcba6f2","web\/app\/themes\/haiku-atelier-2024\/page-cart.php":"46c23a0a9533bc3e9a93e6cb4cfe0199","web\/app\/themes\/haiku-atelier-2024\/page-checkout.php":"6a97d8de68891d67003e974db16f7491","web\/app\/themes\/twentytwentyfour\/functions.php":"e6c06c14c3003c7d10aed299c693b816","web\/app\/themes\/twentytwentyfour\/patterns\/banner-hero.php":"f3b2a422d341d6fd6867a071b7feff06","web\/app\/themes\/twentytwentyfour\/patterns\/banner-project-description.php":"57f7a6f730697de2e70f23a40afffff4","web\/app\/themes\/twentytwentyfour\/patterns\/cta-content-image-on-right.php":"d95a6435ffa638cc02786c88d46b76f4","web\/app\/themes\/twentytwentyfour\/patterns\/cta-pricing.php":"18de4c30017d346fdd158393d459df7b","web\/app\/themes\/twentytwentyfour\/patterns\/cta-rsvp.php":"309799ad88c6a81e40183b87c385fdeb","web\/app\/themes\/twentytwentyfour\/patterns\/cta-services-image-left.php":"c6f087c6b732681a9c36e30eca23168e","web\/app\/themes\/twentytwentyfour\/patterns\/cta-subscribe-centered.php":"a9874964ed6a8c35c86dca2b98a088da","web\/app\/themes\/twentytwentyfour\/patterns\/footer-centered-logo-nav.php":"2bb4d0903ceac7e6be619096d97a1a57","web\/app\/themes\/twentytwentyfour\/patterns\/footer-colophon-3-col.php":"39fa3d7727e6693fc279ee084610eee3","web\/app\/themes\/twentytwentyfour\/patterns\/footer.php":"dad75c56bc0371c3597d4560afd40be2","web\/app\/themes\/twentytwentyfour\/patterns\/gallery-full-screen-image.php":"136b0938b2ef83419d91a85adc0fa3cd","web\/app\/themes\/twentytwentyfour\/patterns\/gallery-offset-images-grid-2-col.php":"773e9c184b462f0d5c438b4cd237a8eb","web\/app\/themes\/twentytwentyfour\/patterns\/gallery-offset-images-grid-3-col.php":"f1a936ce1dd809a5c837e576c03a2438","web\/app\/themes\/twentytwentyfour\/patterns\/gallery-offset-images-grid-4-col.php":"10cca951b562240bbf6580250450a3f7","web\/app\/themes\/twentytwentyfour\/patterns\/gallery-project-layout.php":"b0bd6668afdaf444c7a4e190b01d1fd8","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-404.php":"3be3f05728f1319cfe7b809364f9fc64","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-comments.php":"3a30b9a4f487573e67fbeee98a580755","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-no-results.php":"452926c0279b2abc4fbbc64286a0f78d","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-portfolio-hero.php":"abc126d321b6162180413329f4110a99","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-post-meta.php":"8b7173b57f4341f080ee21c8eb8a841c","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-post-navigation.php":"02e8ff08181c0ed1a7e7ffc8fa112eef","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-posts-heading.php":"adeb6e72243934b8c9f8b31b686c2982","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-search.php":"3cee20ce436e28a2a795d74a5b703e82","web\/app\/themes\/twentytwentyfour\/patterns\/hidden-sidebar.php":"04fd4f2d4e6e1620773aa1d440116b08","web\/app\/themes\/twentytwentyfour\/patterns\/page-about-business.php":"af98f390edcf9b6db4073e91c2d3a74d","web\/app\/themes\/twentytwentyfour\/patterns\/page-home-blogging.php":"a239037b59365d3e1d5b115bc1efdba2","web\/app\/themes\/twentytwentyfour\/patterns\/page-home-business.php":"87a3de68e4cf038ad7b4276e086d513b","web\/app\/themes\/twentytwentyfour\/patterns\/page-home-portfolio-gallery.php":"9a9c97971a375b7d931a4c47d5c58ddb","web\/app\/themes\/twentytwentyfour\/patterns\/page-home-portfolio.php":"2fe09e6ffeb73c560f76b39ae0b54ab2","web\/app\/themes\/twentytwentyfour\/patterns\/page-newsletter-landing.php":"f6c4d065b3deda20d8cd52f32f02f588","web\/app\/themes\/twentytwentyfour\/patterns\/page-portfolio-overview.php":"3c7d860278682de2992008bbe579b56e","web\/app\/themes\/twentytwentyfour\/patterns\/page-rsvp-landing.php":"1589f19e7de88d94c1b49b5ba902ba4b","web\/app\/themes\/twentytwentyfour\/patterns\/posts-1-col.php":"04d5ab8d7e01e8700a584a4c063b6ab5","web\/app\/themes\/twentytwentyfour\/patterns\/posts-3-col.php":"329943ac54705effc82b98b835e0775f","web\/app\/themes\/twentytwentyfour\/patterns\/posts-grid-2-col.php":"89ae8e9acf1a38d43373e5adbeb6ab51","web\/app\/themes\/twentytwentyfour\/patterns\/posts-images-only-3-col.php":"ac2011cd7d2d2ef540a9466f130c4d23","web\/app\/themes\/twentytwentyfour\/patterns\/posts-images-only-offset-4-col.php":"c4b39e18202eb266f3a932e7a5243e32","web\/app\/themes\/twentytwentyfour\/patterns\/posts-list.php":"798103cec23a6a873c8458f497f4f646","web\/app\/themes\/twentytwentyfour\/patterns\/team-4-col.php":"5232e600f07a452e4d00e721cb7d921b","web\/app\/themes\/twentytwentyfour\/patterns\/template-archive-blogging.php":"38e7a4c3e0be59dafbcd285f13613fb0","web\/app\/themes\/twentytwentyfour\/patterns\/template-archive-portfolio.php":"200f092f584d69cece25cf94635aafef","web\/app\/themes\/twentytwentyfour\/patterns\/template-home-blogging.php":"e41148925cdc9c8df2dc06adf729b1b2","web\/app\/themes\/twentytwentyfour\/patterns\/template-home-business.php":"db2f1110e7569debc311db3eb02031f3","web\/app\/themes\/twentytwentyfour\/patterns\/template-home-portfolio.php":"5078c0d4903f96582c9b56040f876cb1","web\/app\/themes\/twentytwentyfour\/patterns\/template-index-blogging.php":"5e81455655816ab582df0b4e6d2fd0bd","web\/app\/themes\/twentytwentyfour\/patterns\/template-index-portfolio.php":"d1965cd7563bca2317b05ff851fad8bf","web\/app\/themes\/twentytwentyfour\/patterns\/template-search-blogging.php":"78c56d7fe784cab03b046b15f1f9743b","web\/app\/themes\/twentytwentyfour\/patterns\/template-search-portfolio.php":"b7edb7507d9c185f5dbdf8efc8df7a8a","web\/app\/themes\/twentytwentyfour\/patterns\/template-single-portfolio.php":"19c39b0e10c7e134f4b84019947b0aef","web\/app\/themes\/twentytwentyfour\/patterns\/testimonial-centered.php":"e8204238d667b1ee57fd797e0249b4b7","web\/app\/themes\/twentytwentyfour\/patterns\/text-alternating-images.php":"9741ad786649810685c1f78c2cf13e1b","web\/app\/themes\/twentytwentyfour\/patterns\/text-centered-statement-small.php":"90341f1dd4c45ab60c05d5180f98a21e","web\/app\/themes\/twentytwentyfour\/patterns\/text-centered-statement.php":"c1b37fcbacdd396ff5a76181db4ca5d3","web\/app\/themes\/twentytwentyfour\/patterns\/text-faq.php":"57782f3b2ef9f9e3de40badadb802d98","web\/app\/themes\/twentytwentyfour\/patterns\/text-feature-grid-3-col.php":"55f1b9f6b78cb026440455d3c95a48c1","web\/app\/themes\/twentytwentyfour\/patterns\/text-project-details.php":"ad6a7568e7b07727d750170b3b2e75a2","web\/app\/themes\/twentytwentyfour\/patterns\/text-title-left-image-right.php":"b07022516ee39eee1abd076867cd7612","web\/wp-config.php":"fef1d889def41ce27f0b522a43a689db","web\/index.php":"573c1afc0aa51b9524ccdf29556a8a96","scripts\/remove-scaled-images.php":"54c0c9f27540b920dda04552051e0344","node_modules\/flatted\/php\/flatted.php":"63f8e98c9fbac1dffd23e1088e2bfc95"}} \ No newline at end of file diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 00000000..6b335101 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,8 @@ +in(__DIR__)->exclude(['vendor', 'web/vendor', 'web/wp', 'web/app/languages', 'web/app/plugins', 'web/app/mu-plugins']); + +return (new Config())->setRules(['@PhpCsFixer' => true])->setFinder($finder); diff --git a/.phpactor.json b/.phpactor.json index ce30448c..e98cdb37 100755 --- a/.phpactor.json +++ b/.phpactor.json @@ -1,6 +1,6 @@ { "$schema": "/opt/phpactor/phpactor.schema.json", + "language_server_php_cs_fixer.enabled": true, "language_server_phpstan.enabled": true, - "language_server_psalm.enabled": false, "php_code_sniffer.enabled": false } diff --git a/.twig-cs-fixer.cache b/.twig-cs-fixer.cache new file mode 100644 index 00000000..3ef8eaac --- /dev/null +++ b/.twig-cs-fixer.cache @@ -0,0 +1 @@ +{"php_version":"8.4.11","fixer_version":"ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6","rules":{"TwigCsFixer\\Rules\\Delimiter\\DelimiterSpacingRule":{"skipIfNewLine":true},"TwigCsFixer\\Rules\\Function\\NamedArgumentSeparatorRule":null,"TwigCsFixer\\Rules\\Function\\NamedArgumentSpacingRule":null,"TwigCsFixer\\Rules\\Operator\\OperatorNameSpacingRule":null,"TwigCsFixer\\Rules\\Operator\\OperatorSpacingRule":null,"TwigCsFixer\\Rules\\Punctuation\\PunctuationSpacingRule":{"before":{")":0,"]":0,"}":0,":":0,".":0,",":0,"|":0,"?:":0},"after":{"(":0,"[":0,"{":0,".":0,"|":0,":":1,",":1,"?:":1}},"TwigCsFixer\\Rules\\Whitespace\\BlankEOFRule":null,"TwigCsFixer\\Rules\\Delimiter\\BlockNameSpacingRule":null,"TwigCsFixer\\Rules\\Whitespace\\EmptyLinesRule":null,"TwigCsFixer\\Rules\\Literal\\CompactHashRule":{"compact":false},"TwigCsFixer\\Rules\\Literal\\HashQuoteRule":{"useQuote":false},"TwigCsFixer\\Rules\\Function\\IncludeFunctionRule":null,"TwigCsFixer\\Rules\\Whitespace\\IndentRule":{"spaceRatio":4,"useTab":false},"TwigCsFixer\\Rules\\Literal\\SingleQuoteRule":{"skipStringContainingSingleQuote":true},"TwigCsFixer\\Rules\\Punctuation\\TrailingCommaMultiLineRule":{"comma":true},"TwigCsFixer\\Rules\\Punctuation\\TrailingCommaSingleLineRule":null,"TwigCsFixer\\Rules\\Whitespace\\TrailingSpaceRule":null},"hashes":{"web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/shop\/grille-produits.twig":"325d4e0610df79c739eabfe751b2f709","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/grille-produits-similaires.twig":"eadf1a78a51084677aaaa56dafb1e708","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/photos-produit.twig":"5654c0382c5ef553a0b96a09194d909a","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/bandeau.twig":"569f5ea534c48431a906935539362e47","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pied-de-page.twig":"d5f5afaa90db1db6590ea0ed0584c216","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/menu-categories-produits.twig":"e132a6035820545f704075ab9e89d119","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-commande-envoyee.twig":"e4e3bbc92a40eeae8925085b560dcb0d","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/informations-produit.twig":"4b7c756b4aa0f88942857e6c4969b354","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/produits-similaires.twig":"695492c5926dfeeb69c37eb6227e1f18","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/panier\/panneau-informations-client.twig":"095a41b6e4142d7c2d9ebe18e4ac24d0","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/panier\/panneau-panier.twig":"ae6feca0cc473c3ed5dfa7edc27e1af1","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/html-head.twig":"691202d8b7719de34f604e42a74932af","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/en-tete.twig":"01d42c522b5be991bc4c7b68cbff3528","web\/app\/themes\/haiku-atelier-2024\/views\/macros\/images.twig":"4beca7e03e55ef0e46828befcc779677","web\/app\/themes\/haiku-atelier-2024\/views\/404.twig":"75335b023fcc6f5c83197e8c126384e1","web\/app\/themes\/haiku-atelier-2024\/views\/a-propos.twig":"b5bdf0962e089bc93d33f5d23b97f64c","web\/app\/themes\/haiku-atelier-2024\/views\/cgv.twig":"97984ba4344e2dcf8c3237796203c614","web\/app\/themes\/haiku-atelier-2024\/views\/succes-commande.twig":"712e54c1866a66988ccb1a79cbae53d6","web\/app\/themes\/haiku-atelier-2024\/views\/echec-commande.twig":"9cf475c2c19664e9ef92a71e670b2880","web\/app\/themes\/haiku-atelier-2024\/views\/produit.twig":"43bf608a266e8b8652a8f878fbe4580e","web\/app\/themes\/haiku-atelier-2024\/views\/panier.twig":"d008509105bb53253214344429163558","web\/app\/themes\/haiku-atelier-2024\/views\/contact.twig":"5d9dcae3e990c671404a8200b6c9815a","web\/app\/themes\/haiku-atelier-2024\/views\/boutique.twig":"10449e7c29289282366d754ec3360589","web\/app\/themes\/haiku-atelier-2024\/views\/accueil.twig":"beb4b2270ea3a1bcdbf8cd9e69f83ee7","web\/app\/themes\/haiku-atelier-2024\/views\/base.twig":"3e3ed592fb1c4bc8405be3b52f403725","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-base.twig":"7ef70033248d96d208f965dc4d885d9f","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-commande-recue.twig":"0b09e4586dd8eb4ca9513b9ae38e307b"}} \ No newline at end of file diff --git a/.zed/settings.json b/.zed/settings.json index e69de29b..b29d7421 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -0,0 +1,16 @@ +{ + "languages": { + "PHP": { + "format_on_save": "on", + "formatter": { + "external": { + "command": "bash", + "arguments": [ + "-c", + "cat > /tmp/zed_php_cs_fixer && ./vendor/bin/php-cs-fixer fix --using-cache=no --quiet /tmp/zed_php_cs_fixer && cat /tmp/zed_php_cs_fixer" + ] + } + } + } + } +} diff --git a/bun.lock b/bun.lock index 2fd878c1..a99ee54c 100644 --- a/bun.lock +++ b/bun.lock @@ -9,6 +9,7 @@ "@sentry/browser": "^10.22.0", "a11y-dialog": "^8.1.4", "chalk": "^5.6.2", + "effect": "^3.19.0", "lit-html": "^3.3.1", "loglevel": "^1.9.2", "loglevel-plugin-prefix": "^0.8.4", @@ -20,9 +21,9 @@ "devDependencies": { "@biomejs/biome": "^2.3.3", "@cspell/dict-fr-fr": "^2.3.2", - "@eslint/js": "^9.39.0", + "@eslint/js": "^9.39.1", + "@gcch/configuration-prettier": "^0.0.10", "@playwright/test": "^1.56.1", - "@prettier/plugin-php": "^0.24.0", "@prettier/plugin-xml": "^3.4.2", "@sentry/core": "^10.22.0", "@swc/cli": "0.7.8", @@ -32,7 +33,7 @@ "better-typescript-lib": "^2.12.0", "browserslist": "^4.27.0", "caniuse-lite": "^1.0.30001753", - "eslint": "^9.39.0", + "eslint": "^9.39.1", "eslint-plugin-oxlint": "^1.25.0", "eslint-plugin-perfectionist": "^4.15.1", "fdir": "^6.5.0", @@ -53,7 +54,7 @@ "stylelint-declaration-block-no-ignored-properties": "^2.8.0", "stylelint-plugin-logical-css": "^1.2.3", "typescript": "5.9.3", - "typescript-eslint": "^8.46.2", + "typescript-eslint": "^8.46.3", "vite": "^7.1.12", "vite-plugin-compression2": "^2.3.1", "vite-plugin-manifest-sri": "^0.2.0", @@ -359,12 +360,14 @@ "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], - "@eslint/js": ["@eslint/js@9.39.0", "", {}, "sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw=="], + "@eslint/js": ["@eslint/js@9.39.1", "http://localhost:4873/@eslint/js/-/js-9.39.1.tgz", {}, "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], + "@gcch/configuration-prettier": ["@gcch/configuration-prettier@0.0.10", "http://localhost:4873/@gcch/configuration-prettier/-/configuration-prettier-0.0.10.tgz", { "dependencies": { "@prettier/plugin-php": "^0.24.0", "@prettier/plugin-xml": "^3.4.2", "prettier": "^4.0.0-alpha.12", "prettier-plugin-curly": "^0.4.0", "prettier-plugin-jsdoc": "^1.5.0", "prettier-plugin-pkg": "^0.21.2", "prettier-plugin-sh": "^0.18.0" } }, "sha512-/FE8xrCcsVtl3GRWuh0NPxRqUc3Y30jZEXpAptEUBWOiL8PVj4Rco2o1ppIWbzbx4X/G0ijvt5qwihlptuZ0Zw=="], + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], "@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="], @@ -521,6 +524,8 @@ "@playwright/test": ["@playwright/test@1.56.1", "", { "dependencies": { "playwright": "1.56.1" }, "bin": { "playwright": "cli.js" } }, "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg=="], + "@prettier/cli": ["@prettier/cli@0.7.6", "http://localhost:4873/@prettier/cli/-/cli-0.7.6.tgz", { "dependencies": { "atomically": "^2.0.3", "fast-ignore": "^1.1.3", "find-up-json": "^2.0.5", "function-once": "^3.0.1", "import-meta-resolve": "^4.1.0", "is-binary-path": "^3.0.0", "js-yaml": "^4.1.0", "json-sorted-stringify": "^1.0.1", "json5": "^2.2.3", "kasi": "^1.1.1", "lomemo": "^1.0.1", "pioppo": "^1.2.1", "promise-resolve-timeout": "^2.0.1", "smol-toml": "^1.3.3", "specialist": "^1.4.5", "tiny-editorconfig": "^1.0.0", "tiny-jsonc": "^1.0.2", "tiny-readdir": "^2.7.4", "tiny-readdir-glob": "^1.23.2", "tiny-spinner": "^2.0.5", "worktank": "^2.7.3", "zeptomatch": "^2.0.1", "zeptomatch-escape": "^1.0.1", "zeptomatch-is-static": "^1.0.1" }, "peerDependencies": { "prettier": "^3.1.0 || ^4.0.0-alpha" }, "bin": { "prettier-next": "dist/bin.js" } }, "sha512-akQoMNuOQa5rtJkI9H5oC74rCp9ABnuBulHJaAYKAWESYYFydC3RfrYwObJW4PcbfNE5LUya0XXqT//5z46g0Q=="], + "@prettier/plugin-php": ["@prettier/plugin-php@0.24.0", "", { "dependencies": { "linguist-languages": "^8.0.0", "php-parser": "^3.2.5" }, "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-x9l65fCE/pgoET6RQowgdgG8Xmzs44z6j6Hhg3coINCyCw9JBGJ5ZzMR2XHAM2jmAdbJAIgqB6cUn4/3W3XLTA=="], "@prettier/plugin-xml": ["@prettier/plugin-xml@3.4.2", "", { "dependencies": { "@xml-tools/parser": "^1.0.11" }, "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-/UyNlHfkuLXG6Ed85KB0WBF283xn2yavR+UtRibBRUcvEJId2DSLdGXwJ/cDa1X++SWDPzq3+GSFniHjkNy7yg=="], @@ -587,6 +592,8 @@ "@sindresorhus/is": ["@sindresorhus/is@5.6.0", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="], + "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "http://localhost:4873/@standard-schema/spec/-/spec-1.0.0.tgz", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], + "@stylistic/stylelint-plugin": ["@stylistic/stylelint-plugin@3.1.2", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.1", "@csstools/css-tokenizer": "^3.0.1", "@csstools/media-query-list-parser": "^3.0.1", "is-plain-object": "^5.0.0", "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "style-search": "^0.1.0", "stylelint": "^16.8.2" } }, "sha512-tylFJGMQo62alGazK74MNxFjMagYOHmBZiePZFOJK2n13JZta0uVkB3Bh5qodUmOLtRH+uxH297EibK14UKm8g=="], "@swc/cli": ["@swc/cli@0.7.8", "", { "dependencies": { "@swc/counter": "^0.1.3", "@xhmikosr/bin-wrapper": "^13.0.5", "commander": "^8.3.0", "minimatch": "^9.0.3", "piscina": "^4.3.1", "semver": "^7.3.8", "slash": "3.0.0", "source-map": "^0.7.3", "tinyglobby": "^0.2.13" }, "peerDependencies": { "@swc/core": "^1.2.66", "chokidar": "^4.0.1" }, "optionalPeers": ["chokidar"], "bin": { "swc": "bin/swc.js", "swcx": "bin/swcx.js", "spack": "bin/spack.js" } }, "sha512-27Ov4rm0s2C6LLX+NDXfDVB69LGs8K94sXtFhgeUyQ4DBywZuCgTBu2loCNHRr8JhT9DeQvJM5j9FAu/THbo4w=="], @@ -623,6 +630,8 @@ "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + "@types/debug": ["@types/debug@4.1.12", "http://localhost:4873/@types/debug/-/debug-4.1.12.tgz", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + "@types/eslint__js": ["@types/eslint__js@9.14.0", "", { "dependencies": { "@eslint/js": "*" } }, "sha512-s0jepCjOJWB/GKcuba4jISaVpBudw3ClXJ3fUK4tugChUMQsp6kSwuA8Dcx6wFd/JsJqcY8n4rEpa5RTHs5ypA=="], "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], @@ -631,29 +640,35 @@ "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + "@types/mdast": ["@types/mdast@4.0.4", "http://localhost:4873/@types/mdast/-/mdast-4.0.4.tgz", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/ms": ["@types/ms@2.1.0", "http://localhost:4873/@types/ms/-/ms-2.1.0.tgz", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + "@types/node": ["@types/node@24.10.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A=="], "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.46.2", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.46.2", "@typescript-eslint/type-utils": "8.46.2", "@typescript-eslint/utils": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.46.2", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w=="], + "@types/unist": ["@types/unist@3.0.3", "http://localhost:4873/@types/unist/-/unist-3.0.3.tgz", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.46.2", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.46.2", "@typescript-eslint/types": "8.46.2", "@typescript-eslint/typescript-estree": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.46.3", "http://localhost:4873/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.3.tgz", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/type-utils": "8.46.3", "@typescript-eslint/utils": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.46.3", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.46.2", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.46.2", "@typescript-eslint/types": "^8.46.2", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.46.3", "http://localhost:4873/@typescript-eslint/parser/-/parser-8.46.3.tgz", { "dependencies": { "@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/types": "8.46.3", "@typescript-eslint/typescript-estree": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg=="], + + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.46.3", "http://localhost:4873/@typescript-eslint/project-service/-/project-service-8.46.3.tgz", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.46.3", "@typescript-eslint/types": "^8.46.3", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ=="], "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2" } }, "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.46.2", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.46.3", "http://localhost:4873/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.3.tgz", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "@typescript-eslint/typescript-estree": "8.46.2", "@typescript-eslint/utils": "8.46.2", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.46.3", "http://localhost:4873/@typescript-eslint/type-utils/-/type-utils-8.46.3.tgz", { "dependencies": { "@typescript-eslint/types": "8.46.3", "@typescript-eslint/typescript-estree": "8.46.3", "@typescript-eslint/utils": "8.46.3", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw=="], "@typescript-eslint/types": ["@typescript-eslint/types@8.46.2", "", {}, "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.46.2", "", { "dependencies": { "@typescript-eslint/project-service": "8.46.2", "@typescript-eslint/tsconfig-utils": "8.46.2", "@typescript-eslint/types": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.46.3", "http://localhost:4873/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.3.tgz", { "dependencies": { "@typescript-eslint/project-service": "8.46.3", "@typescript-eslint/tsconfig-utils": "8.46.3", "@typescript-eslint/types": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA=="], "@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.2", "@typescript-eslint/types": "8.46.2", "@typescript-eslint/typescript-estree": "8.46.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.3", "http://localhost:4873/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.3.tgz", { "dependencies": { "@typescript-eslint/types": "8.46.3", "eslint-visitor-keys": "^4.2.1" } }, "sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg=="], "@typescript/lib-decorators": ["@better-typescript-lib/decorators@2.12.0", "", { "peerDependencies": { "typescript": ">=4.5.2" } }, "sha512-/m9Q5Xk66ThUJidTsxmXJH0+49iCLl5PFmue0HkNSGrcPU96oaoKNY5sH1AslwA/OWVvBg3hE58ZwSGm6TQFuQ=="], @@ -721,10 +736,14 @@ "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + "ansi-purge": ["ansi-purge@1.1.0", "http://localhost:4873/ansi-purge/-/ansi-purge-1.1.0.tgz", {}, "sha512-sa1KWMANfZurQkYemaVNNJh8gRF0iUJvcVNxvjPlYM9pPPTB0v+VKH/mFRz4s6gXA8plimQXorJSqJgutxUs8g=="], + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "ansi-truncate": ["ansi-truncate@1.4.0", "http://localhost:4873/ansi-truncate/-/ansi-truncate-1.4.0.tgz", { "dependencies": { "fast-string-truncated-width": "^3.0.1" } }, "sha512-p6d2MrNs/mbpdXFT08fGabIg4pbgnUbbhrsoFfxWV5L3zFKw7tUkYUxGY3xCGJUPohENM80Q4sWkl/VDEN3pZg=="], + "arch": ["arch@3.0.0", "", {}, "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q=="], "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], @@ -737,6 +756,8 @@ "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="], + "atomically": ["atomically@2.1.0", "http://localhost:4873/atomically/-/atomically-2.1.0.tgz", { "dependencies": { "stubborn-fs": "^2.0.0", "when-exit": "^2.1.4" } }, "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q=="], + "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="], @@ -761,6 +782,10 @@ "bin-version-check": ["bin-version-check@5.1.0", "", { "dependencies": { "bin-version": "^6.0.0", "semver": "^7.5.3", "semver-truncate": "^3.0.0" } }, "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g=="], + "binary-extensions": ["binary-extensions@3.1.0", "http://localhost:4873/binary-extensions/-/binary-extensions-3.1.0.tgz", {}, "sha512-Jvvd9hy1w+xUad8+ckQsWA/V1AoyubOvqn0aygjMOVM4BfIaRav1NFS3LsTSDaV4n4FtcCtQXvzep1E6MboqwQ=="], + + "binary-searching": ["binary-searching@2.0.5", "http://localhost:4873/binary-searching/-/binary-searching-2.0.5.tgz", {}, "sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA=="], + "bn.js": ["bn.js@5.2.2", "", {}, "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw=="], "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], @@ -817,6 +842,8 @@ "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "character-entities": ["character-entities@2.0.2", "http://localhost:4873/character-entities/-/character-entities-2.0.2.tgz", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + "chevrotain": ["chevrotain@7.1.1", "", { "dependencies": { "regexp-to-ast": "0.5.0" } }, "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw=="], "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], @@ -833,6 +860,8 @@ "commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + "comment-parser": ["comment-parser@1.4.1", "http://localhost:4873/comment-parser/-/comment-parser-1.4.1.tgz", {}, "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], "console-browserify": ["console-browserify@1.2.0", "", {}, "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="], @@ -871,6 +900,8 @@ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "http://localhost:4873/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], + "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], @@ -883,10 +914,16 @@ "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + "dequal": ["dequal@2.0.3", "http://localhost:4873/dequal/-/dequal-2.0.3.tgz", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + "des.js": ["des.js@1.1.0", "", { "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg=="], "detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], + "dettle": ["dettle@1.0.5", "http://localhost:4873/dettle/-/dettle-1.0.5.tgz", {}, "sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA=="], + + "devlop": ["devlop@1.1.0", "http://localhost:4873/devlop/-/devlop-1.1.0.tgz", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + "diffie-hellman": ["diffie-hellman@5.0.3", "", { "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" } }, "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg=="], "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], @@ -895,6 +932,8 @@ "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + "effect": ["effect@3.19.0", "http://localhost:4873/effect/-/effect-3.19.0.tgz", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-eFvvryWkbXvQ4Gak1Nadv9CW6U35+UUS/fIkF4c/Th8rs2u47g+tNkViYeVGliglNnR6Ai5Otl9tLbav3yZjXg=="], + "electron-to-chromium": ["electron-to-chromium@1.5.244", "", {}, "sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw=="], "elliptic": ["elliptic@6.6.1", "", { "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", "hash.js": "^1.0.0", "hmac-drbg": "^1.0.1", "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g=="], @@ -917,7 +956,7 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.39.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.0", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg=="], + "eslint": ["eslint@9.39.1", "http://localhost:4873/eslint/-/eslint-9.39.1.tgz", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.1", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g=="], "eslint-plugin-oxlint": ["eslint-plugin-oxlint@1.25.0", "", { "dependencies": { "jsonc-parser": "^3.3.1" } }, "sha512-grS4KdR9FAxoQC+wMkepeQHL4osMhoYfUI11Pot6Gitqr4wWi+JZrX0Shr8Bs9fjdWhEjtaZIV6cr4mbfytmyw=="], @@ -949,16 +988,24 @@ "ext-name": ["ext-name@5.0.0", "", { "dependencies": { "ext-list": "^2.0.0", "sort-keys-length": "^1.0.0" } }, "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ=="], + "fast-check": ["fast-check@3.23.2", "http://localhost:4873/fast-check/-/fast-check-3.23.2.tgz", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + "fast-ignore": ["fast-ignore@1.1.3", "http://localhost:4873/fast-ignore/-/fast-ignore-1.1.3.tgz", { "dependencies": { "grammex": "^3.1.2", "string-escape-regex": "^1.0.0" } }, "sha512-xTo4UbrOKfEQgOFlPaqFScodTV/Wf3KATEqCZZSMh6OP4bcez0lTsqww3n3/Fve1q9u0jmfDP0q0nOhH4POZEg=="], + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + "fast-string-truncated-width": ["fast-string-truncated-width@3.0.3", "http://localhost:4873/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", {}, "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g=="], + + "fast-string-width": ["fast-string-width@3.0.2", "http://localhost:4873/fast-string-width/-/fast-string-width-3.0.2.tgz", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], + "fast-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="], "fastest-levenshtein": ["fastest-levenshtein@1.0.16", "", {}, "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="], @@ -981,6 +1028,10 @@ "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + "find-up-json": ["find-up-json@2.0.5", "http://localhost:4873/find-up-json/-/find-up-json-2.0.5.tgz", { "dependencies": { "find-up-path": "^1.0.1" } }, "sha512-1zZZUfD1GOOEEd1AqwbRmCkCCv1O9t0vOpCYgmzfJqKty8WKaKlDyxWej8Aew+vI5lvDiTviaQuaVuu6GzlHzQ=="], + + "find-up-path": ["find-up-path@1.0.1", "http://localhost:4873/find-up-path/-/find-up-path-1.0.1.tgz", {}, "sha512-cl4Sfxufq9WK848L887b4r+NVZoBjMeB4QydPZ+pXbp6Jt2nUVspTo2svNOm48stIIeSxtuCsULa9+e+LMTzwA=="], + "find-versions": ["find-versions@5.1.0", "", { "dependencies": { "semver-regex": "^4.0.5" } }, "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg=="], "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], @@ -999,8 +1050,12 @@ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + "function-once": ["function-once@3.0.1", "http://localhost:4873/function-once/-/function-once-3.0.1.tgz", {}, "sha512-bE3E8REk4jANDot3l0sLFkXgywBwzFKsmbwdnVHLJUnt/3kV6dNG0oJJqoRBuS1Z9Lr4ZoQgwV0ZNLDgWDbv7Q=="], + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + "get-current-package": ["get-current-package@1.0.1", "http://localhost:4873/get-current-package/-/get-current-package-1.0.1.tgz", { "dependencies": { "find-up-json": "^2.0.5" } }, "sha512-c/Rw5ByDQ+zg+Lh/emBWv0bDpugEFdmXPR6/srIemVtIvol0XbT0JAr8Db0cX+Jj/xY9wj1wdjeq2qNB35Tayg=="], + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], @@ -1027,8 +1082,12 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "grammex": ["grammex@3.1.11", "http://localhost:4873/grammex/-/grammex-3.1.11.tgz", {}, "sha512-HNwLkgRg9SqTAd1N3Uh/MnKwTBTzwBxTOPbXQ8pb0tpwydjk90k4zRE8JUn9fMUiRwKtXFZ1TWFmms3dZHN+Fg=="], + "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], + "graphmatch": ["graphmatch@1.1.0", "http://localhost:4873/graphmatch/-/graphmatch-1.1.0.tgz", {}, "sha512-0E62MaTW5rPZVRLyIJZG/YejmdA/Xr1QydHEw3Vt+qOKkMIOE8WDLc9ZX2bmAjtJFZcId4lEdrdmASsEy7D1QA=="], + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], @@ -1065,18 +1124,26 @@ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + "import-meta-resolve": ["import-meta-resolve@4.2.0", "http://localhost:4873/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], + "ini-simple-parser": ["ini-simple-parser@1.0.1", "http://localhost:4873/ini-simple-parser/-/ini-simple-parser-1.0.1.tgz", {}, "sha512-myU5nhF2miBQP3tO/giUi+8BI9QhfM/XRZd0RD7G0p+40K6KPAwxMDtH3UEtJ2XJZbd+ZiQOoGh432DTYfzNVQ=="], + "inspect-with-kind": ["inspect-with-kind@1.0.5", "", { "dependencies": { "kind-of": "^6.0.2" } }, "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g=="], + "ionstore": ["ionstore@1.0.1", "http://localhost:4873/ionstore/-/ionstore-1.0.1.tgz", {}, "sha512-g+99vyka3EiNFJCnbq3NxegjV211RzGtkDUMbZGB01Con8ZqUmMx/FpWMeqgDXOqgM7QoVeDhe+CfYCWznaDVA=="], + "is-arguments": ["is-arguments@1.2.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA=="], "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "is-binary-path": ["is-binary-path@3.0.0", "http://localhost:4873/is-binary-path/-/is-binary-path-3.0.0.tgz", { "dependencies": { "binary-extensions": "^3.0.0" } }, "sha512-eSkpSYbqKip82Uw4z0iBK/5KmVzL2pf36kNKRtu6+mKvrow9sqF4w5hocQ9yV5v+9+wzHt620x3B7Wws/8lsGg=="], + "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], @@ -1125,12 +1192,16 @@ "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + "json-sorted-stringify": ["json-sorted-stringify@1.0.2", "http://localhost:4873/json-sorted-stringify/-/json-sorted-stringify-1.0.2.tgz", {}, "sha512-6UiiM9hRn9P+nfznAif3TsmulMJTvlmfNDN8mAmDUvDW/JbSyczdgT0w7NVJvWQwMS83iLnYkH2IXNRZUB4iFg=="], + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], + "kasi": ["kasi@1.1.1", "http://localhost:4873/kasi/-/kasi-1.1.1.tgz", {}, "sha512-pzBwGWFIjf84T/8aD0XzMli1T3Ckr/jVLh6v0Jskwiv5ehmcgDM+vpYFSk8WzGn4ed4HqgaifTgQUHzzZHa+Qw=="], + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], @@ -1183,6 +1254,8 @@ "loglevel-plugin-prefix": ["loglevel-plugin-prefix@0.8.4", "", {}, "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g=="], + "lomemo": ["lomemo@1.0.1", "http://localhost:4873/lomemo/-/lomemo-1.0.1.tgz", {}, "sha512-g8CnVp7UYypeQKpXpMzyrJoDzhOoqVQYSJApoq/cFI3vGxXoHQ+6lH5cApW9XwzVy5SL9/Owil7/JxbKckw0Lg=="], + "lowercase-keys": ["lowercase-keys@3.0.0", "", {}, "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ=="], "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -1197,6 +1270,10 @@ "md5.js": ["md5.js@1.3.5", "", { "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" } }, "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg=="], + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "http://localhost:4873/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], + + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "http://localhost:4873/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + "mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="], "meow": ["meow@13.2.0", "", {}, "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA=="], @@ -1205,6 +1282,48 @@ "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + "micromark": ["micromark@4.0.2", "http://localhost:4873/micromark/-/micromark-4.0.2.tgz", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], + + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "http://localhost:4873/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "http://localhost:4873/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], + + "micromark-factory-label": ["micromark-factory-label@2.0.1", "http://localhost:4873/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], + + "micromark-factory-space": ["micromark-factory-space@2.0.1", "http://localhost:4873/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + + "micromark-factory-title": ["micromark-factory-title@2.0.1", "http://localhost:4873/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], + + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "http://localhost:4873/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "http://localhost:4873/micromark-util-character/-/micromark-util-character-2.1.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "http://localhost:4873/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], + + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "http://localhost:4873/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], + + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "http://localhost:4873/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], + + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "http://localhost:4873/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], + + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "http://localhost:4873/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "http://localhost:4873/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "http://localhost:4873/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], + + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "http://localhost:4873/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], + + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "http://localhost:4873/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "http://localhost:4873/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "http://localhost:4873/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "http://localhost:4873/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "http://localhost:4873/micromark-util-types/-/micromark-util-types-2.0.2.tgz", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], "miller-rabin": ["miller-rabin@4.0.1", "", { "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" }, "bin": { "miller-rabin": "bin/miller-rabin" } }, "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA=="], @@ -1299,6 +1418,8 @@ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "pioppo": ["pioppo@1.2.1", "http://localhost:4873/pioppo/-/pioppo-1.2.1.tgz", { "dependencies": { "dettle": "^1.0.5", "when-exit": "^2.1.4" } }, "sha512-1oErGVWD6wFDPmrJWEY1Cj2p829UGT6Fw9OItYFxLkWtBjCvQSMC8wA5IcAR5ms/6gqiY8pnJvIV/+/Imyobew=="], + "piscina": ["piscina@4.9.2", "", { "optionalDependencies": { "@napi-rs/nice": "^1.0.1" } }, "sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ=="], "pkg-dir": ["pkg-dir@5.0.0", "", { "dependencies": { "find-up": "^5.0.0" } }, "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA=="], @@ -1329,6 +1450,10 @@ "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], + "prettier-plugin-curly": ["prettier-plugin-curly@0.4.0", "http://localhost:4873/prettier-plugin-curly/-/prettier-plugin-curly-0.4.0.tgz", { "peerDependencies": { "prettier": "^2 || ^3" } }, "sha512-URhXSCdeYs+hWFyFS5NDrRBarFU5RV7X9C00LuUKmjFDqD2wxJJWZU+wmkgN50jyn97TWgqI2XrE6rX2AdGgZg=="], + + "prettier-plugin-jsdoc": ["prettier-plugin-jsdoc@1.5.0", "http://localhost:4873/prettier-plugin-jsdoc/-/prettier-plugin-jsdoc-1.5.0.tgz", { "dependencies": { "binary-searching": "^2.0.5", "comment-parser": "^1.4.0", "mdast-util-from-markdown": "^2.0.0" }, "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-Fehp5qkFQhNFcxUilDPEcqHX8AdP6oGyCRLatqRc0gLXv3qOtndTnnUxfHCYc26I4Lc1A4lVozAtWEE8o7ubUA=="], + "prettier-plugin-pkg": ["prettier-plugin-pkg@0.21.2", "", { "peerDependencies": { "prettier": "^3.0.3" } }, "sha512-CSlM5+51B7yTKcoRWT4M3ImcdFHD5NUz0Xu2t8J03B761zu6J3BjSo/XleKp2kB0tH49K7oG5Uuqn6ldI5LRLg=="], "prettier-plugin-sh": ["prettier-plugin-sh@0.18.0", "", { "dependencies": { "@reteps/dockerfmt": "^0.3.6", "sh-syntax": "^0.5.8" }, "peerDependencies": { "prettier": "^3.6.0" } }, "sha512-cW1XL27FOJQ/qGHOW6IHwdCiNWQsAgK+feA8V6+xUTaH0cD3Mh+tFAtBvEEWvuY6hTDzRV943Fzeii+qMOh7nQ=="], @@ -1337,10 +1462,18 @@ "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + "promise-make-counter": ["promise-make-counter@1.0.2", "http://localhost:4873/promise-make-counter/-/promise-make-counter-1.0.2.tgz", { "dependencies": { "promise-make-naked": "^3.0.2" } }, "sha512-FJAxTBWQuQoAs4ZOYuKX1FHXxEgKLEzBxUvwr4RoOglkTpOjWuM+RXsK3M9q5lMa8kjqctUrhwYeZFT4ygsnag=="], + + "promise-make-naked": ["promise-make-naked@2.1.2", "http://localhost:4873/promise-make-naked/-/promise-make-naked-2.1.2.tgz", {}, "sha512-y7s8ZuHIG56JYspB24be9GFkXA1zXL85Ur9u1DKrW/tvyUoPxWgBjnalK6Nc6l7wHBcAW0c3PO07+XOsWTRuhg=="], + + "promise-resolve-timeout": ["promise-resolve-timeout@2.0.1", "http://localhost:4873/promise-resolve-timeout/-/promise-resolve-timeout-2.0.1.tgz", {}, "sha512-90Qzzu5SmR+ksmTPsc79121NZGtEiPvKACQLCl6yofknRx5xJI9kNj3oDVSX6dVTneF8Ju6+xpVFdDSzb7cNcg=="], + "public-encrypt": ["public-encrypt@4.0.3", "", { "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" } }, "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q=="], "punycode": ["punycode@1.4.1", "", {}, "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="], + "pure-rand": ["pure-rand@6.1.0", "http://localhost:4873/pure-rand/-/pure-rand-6.1.0.tgz", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], + "purify-ts": ["purify-ts@2.1.2", "", { "dependencies": { "@types/json-schema": "7.0.15" } }, "sha512-v9RnHfoxZJZt5PeZork6zErRwYnGKxUiO7wk+NqPnJcG7AKjt97ut41WbGRMSUuMBexrXZsVNePSMcO9qPHODQ=="], "qified": ["qified@0.5.1", "", { "dependencies": { "hookified": "^1.12.2" } }, "sha512-+BtFN3dCP+IaFA6IYNOu/f/uK1B8xD2QWyOeCse0rjtAebBmkzgd2d1OAXi3ikAzJMIBSdzZDNZ3wZKEUDQs5w=="], @@ -1485,12 +1618,18 @@ "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + "specialist": ["specialist@1.4.5", "http://localhost:4873/specialist/-/specialist-1.4.5.tgz", { "dependencies": { "tiny-bin": "^1.10.3", "tiny-colors": "^2.2.2", "tiny-parse-argv": "^2.8.1", "tiny-updater": "^3.5.3" } }, "sha512-4mPQEREzBUW2hzlXX/dWFbQdUWzpkqvMFVpUAdRlo1lUlhKMObDHiAo09oZ94x4cS3uWMJebPOTn+GaQYLfv3Q=="], + + "stdin-blocker": ["stdin-blocker@2.0.1", "http://localhost:4873/stdin-blocker/-/stdin-blocker-2.0.1.tgz", {}, "sha512-NEcAEpag+gE/Iivx1prq1AFPwnmgmcyHNvGZLUqGBoOE/7DZtmhtP9iYqJt8ymueFL+kknhfEebAMWbrWp3FJw=="], + "stream-browserify": ["stream-browserify@3.0.0", "", { "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" } }, "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA=="], "stream-http": ["stream-http@3.2.0", "", { "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", "readable-stream": "^3.6.0", "xtend": "^4.0.2" } }, "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A=="], "streamx": ["streamx@2.22.1", "", { "dependencies": { "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA=="], + "string-escape-regex": ["string-escape-regex@1.0.1", "http://localhost:4873/string-escape-regex/-/string-escape-regex-1.0.1.tgz", {}, "sha512-cdSXOHSJ32K/T2dbj9t7rJwonujaOkaINpa1zsXT+PNFIv1zuPjtr0tXanCvUhN2bIu2IB0z/C7ksl+Qsy44nA=="], + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], @@ -1505,6 +1644,10 @@ "strtok3": ["strtok3@9.1.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^5.3.1" } }, "sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw=="], + "stubborn-fs": ["stubborn-fs@2.0.0", "http://localhost:4873/stubborn-fs/-/stubborn-fs-2.0.0.tgz", { "dependencies": { "stubborn-utils": "^1.0.1" } }, "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA=="], + + "stubborn-utils": ["stubborn-utils@1.0.2", "http://localhost:4873/stubborn-utils/-/stubborn-utils-1.0.2.tgz", {}, "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg=="], + "style-search": ["style-search@0.1.0", "", {}, "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg=="], "stylelint": ["stylelint@16.25.0", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", "@csstools/media-query-list-parser": "^4.0.3", "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^10.1.4", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.6", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ=="], @@ -1557,6 +1700,30 @@ "timers-browserify": ["timers-browserify@2.0.12", "", { "dependencies": { "setimmediate": "^1.0.4" } }, "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ=="], + "tiny-bin": ["tiny-bin@1.11.3", "http://localhost:4873/tiny-bin/-/tiny-bin-1.11.3.tgz", { "dependencies": { "ansi-purge": "^1.0.1", "fast-string-width": "^3.0.1", "get-current-package": "^1.0.1", "tiny-colors": "^2.2.2", "tiny-levenshtein": "^1.1.0", "tiny-parse-argv": "^2.8.2", "tiny-updater": "^3.5.3" } }, "sha512-CrBbiKsvJN4bHSDA0cPau4t5KWdGUUAcTXQ8bB14XNqNY+68UZF4Zo7WRVdHLq0j0GYZjIRbNDg+zJbJXDEXeg=="], + + "tiny-colors": ["tiny-colors@2.2.2", "http://localhost:4873/tiny-colors/-/tiny-colors-2.2.2.tgz", {}, "sha512-Elmv7JL+dX0c78caKEelH1nHHBskHzJkaqBRgVvQuxsvVA/Z9Fa2R3ZZtfmkkajcd18e96RLMwJvtFqC8jsZWA=="], + + "tiny-cursor": ["tiny-cursor@2.0.1", "http://localhost:4873/tiny-cursor/-/tiny-cursor-2.0.1.tgz", { "dependencies": { "when-exit": "^2.1.4" } }, "sha512-28ytGEfb7m/8Gdflv+wSo5qRM01fROo2CjJVYon6yYbzPsc3ap3Ps5CZXuS19pIROwswSvZMGbEQ7kWnokdUGA=="], + + "tiny-editorconfig": ["tiny-editorconfig@1.0.1", "http://localhost:4873/tiny-editorconfig/-/tiny-editorconfig-1.0.1.tgz", { "dependencies": { "ini-simple-parser": "^1.0.1", "zeptomatch": "^2.0.2" } }, "sha512-V6AW3vnBrhhtYBPdTFTMaPNlziyNdyReG5wTbfYnKSy6nHScI/vfmtFuDx9sjpgOCutK+QpW+LVAl4QigdLssw=="], + + "tiny-jsonc": ["tiny-jsonc@1.0.2", "http://localhost:4873/tiny-jsonc/-/tiny-jsonc-1.0.2.tgz", {}, "sha512-f5QDAfLq6zIVSyCZQZhhyl0QS6MvAyTxgz4X4x3+EoCktNWEYJ6PeoEA97fyb98njpBNNi88ybpD7m+BDFXaCw=="], + + "tiny-levenshtein": ["tiny-levenshtein@1.1.0", "http://localhost:4873/tiny-levenshtein/-/tiny-levenshtein-1.1.0.tgz", {}, "sha512-sU4wduNrjb2e51rgPOTy6nx3ag8pQPFA9XQCQQsFmECWEDS23LEoYsZv3fhVuJNIcxzBNMvCDDb7e/PPOP+vxw=="], + + "tiny-parse-argv": ["tiny-parse-argv@2.8.2", "http://localhost:4873/tiny-parse-argv/-/tiny-parse-argv-2.8.2.tgz", {}, "sha512-RnIDHQ+r9zMuslQWVoRxfKVOumteeheQqbwNYJyQxzM2vzx/vdN5xAeL64F3rQOpfbVdxFkhM4zPDyfq7SxsBQ=="], + + "tiny-readdir": ["tiny-readdir@2.7.4", "http://localhost:4873/tiny-readdir/-/tiny-readdir-2.7.4.tgz", { "dependencies": { "promise-make-counter": "^1.0.2" } }, "sha512-721U+zsYwDirjr8IM6jqpesD/McpZooeFi3Zc6mcjy1pse2C+v19eHPFRqz4chGXZFw7C3KITDjAtHETc2wj7Q=="], + + "tiny-readdir-glob": ["tiny-readdir-glob@1.23.2", "http://localhost:4873/tiny-readdir-glob/-/tiny-readdir-glob-1.23.2.tgz", { "dependencies": { "tiny-readdir": "^2.7.0", "zeptomatch": "^2.0.1", "zeptomatch-explode": "^1.0.1", "zeptomatch-is-static": "^1.0.1", "zeptomatch-unescape": "^1.0.1" } }, "sha512-+47FIdgzEtZj03mOyq9iAljlZZNleqSEwe3i6Uzkzec5axbMg32Vp78U2fLo4TiCMv9gzjnno7yJn34z5pXECw=="], + + "tiny-spinner": ["tiny-spinner@2.0.5", "http://localhost:4873/tiny-spinner/-/tiny-spinner-2.0.5.tgz", { "dependencies": { "stdin-blocker": "^2.0.1", "tiny-colors": "^2.2.2", "tiny-cursor": "^2.0.1", "tiny-truncate": "^1.0.3" } }, "sha512-OIGogtfEbA2IQdCBgF0zI3EjpFyiUEd6Uj5j0q5jhIPPq8pgNR83D0t9WIckbD2FzPann8lH/uLf1vX0YIu04w=="], + + "tiny-truncate": ["tiny-truncate@1.0.5", "http://localhost:4873/tiny-truncate/-/tiny-truncate-1.0.5.tgz", { "dependencies": { "ansi-truncate": "^1.4.0" } }, "sha512-v69A1bjP624gxzBEvvshTMcwU2tkMcuAOIXAjJj0AG7aR+/YFmBYSw3rEKo0Ma2SCX7coeq9MNnUHQo1wZmMHw=="], + + "tiny-updater": ["tiny-updater@3.5.3", "http://localhost:4873/tiny-updater/-/tiny-updater-3.5.3.tgz", { "dependencies": { "ionstore": "^1.0.1", "tiny-colors": "^2.2.2", "when-exit": "^2.1.4" } }, "sha512-wEUssfOOkVLg2raSaRbyZDHpVCDj6fnp7UjynpNE4XGuF+Gkj8GRRMoHdfk73VzLQs/AHKsbY8fCxXNz8Hx4Qg=="], + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], "to-buffer": ["to-buffer@1.2.1", "", { "dependencies": { "isarray": "^2.0.5", "safe-buffer": "^5.2.1", "typed-array-buffer": "^1.0.3" } }, "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ=="], @@ -1581,7 +1748,7 @@ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "typescript-eslint": ["typescript-eslint@8.46.2", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.46.2", "@typescript-eslint/parser": "8.46.2", "@typescript-eslint/typescript-estree": "8.46.2", "@typescript-eslint/utils": "8.46.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg=="], + "typescript-eslint": ["typescript-eslint@8.46.3", "http://localhost:4873/typescript-eslint/-/typescript-eslint-8.46.3.tgz", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.46.3", "@typescript-eslint/parser": "8.46.3", "@typescript-eslint/typescript-estree": "8.46.3", "@typescript-eslint/utils": "8.46.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-bAfgMavTuGo+8n6/QQDVQz4tZ4f7Soqg53RbrlZQEoAltYop/XR4RAts/I0BrO3TTClTSTFJ0wYbla+P8cEWJA=="], "uint8array-extras": ["uint8array-extras@1.4.0", "", {}, "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ=="], @@ -1597,6 +1764,8 @@ "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.1.0", "", {}, "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="], + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "http://localhost:4873/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + "update-browserslist-db": ["update-browserslist-db@1.1.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A=="], "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], @@ -1627,12 +1796,18 @@ "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], + "webworker-shim": ["webworker-shim@1.1.4", "http://localhost:4873/webworker-shim/-/webworker-shim-1.1.4.tgz", {}, "sha512-W/40L5W6ZQyGhYr3hJ7N/2SjdK5OdFtnYm94j6xlRyjckegXnIGwz0EdxdkQx6VGTglJjK8mqBhMz3fd3AY4bg=="], + + "when-exit": ["when-exit@2.1.5", "http://localhost:4873/when-exit/-/when-exit-2.1.5.tgz", {}, "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + "worktank": ["worktank@2.7.3", "http://localhost:4873/worktank/-/worktank-2.7.3.tgz", { "dependencies": { "promise-make-naked": "^2.0.0", "webworker-shim": "^1.1.0" } }, "sha512-M0fesnpttBPdvNYBdzRvLDsacN0na9RYWFxwmM/x1+/6mufjduv9/9vBObK8EXDqxRMX/SOYJabpo0UCYYBUdQ=="], + "wp-types": ["wp-types@4.68.3", "", { "dependencies": { "typescript": ">=4" } }, "sha512-vC0+TCy2+nR23feTqV7VYgUpcz0rhpf6xtLBut6q3RqCYjpVecCxFq1j5E44OJ2fhZ3eBavpJzxAZasO/woYnA=="], "write-file-atomic": ["write-file-atomic@5.0.1", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw=="], @@ -1645,6 +1820,16 @@ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + "zeptomatch": ["zeptomatch@2.1.0", "http://localhost:4873/zeptomatch/-/zeptomatch-2.1.0.tgz", { "dependencies": { "grammex": "^3.1.11", "graphmatch": "^1.1.0" } }, "sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA=="], + + "zeptomatch-escape": ["zeptomatch-escape@1.0.1", "http://localhost:4873/zeptomatch-escape/-/zeptomatch-escape-1.0.1.tgz", {}, "sha512-kAc5HzvnF66djCYDqpsS46Y/FKi+4pe/KJRmTmm/hwmoaNYzmm6bBY07cdkxmJCdY018S5UeQn4yP+9X2x1MbQ=="], + + "zeptomatch-explode": ["zeptomatch-explode@1.0.1", "http://localhost:4873/zeptomatch-explode/-/zeptomatch-explode-1.0.1.tgz", {}, "sha512-7cUQASLLRGZ20+zEQcEgQ9z/gH1+jSfrNg4KfRJSxF1QU2fpymAwWvnAxl69GD5pr3IV0V9vo3ke2np//Nh4tQ=="], + + "zeptomatch-is-static": ["zeptomatch-is-static@1.0.1", "http://localhost:4873/zeptomatch-is-static/-/zeptomatch-is-static-1.0.1.tgz", {}, "sha512-bN9q7H/UdXhkub01WE7b7Grg07jLldNnIWG2T1IpBq5NtvcQ4DwFbNiGGapnbKHUdWiCNjg/bIvixV88nj9gog=="], + + "zeptomatch-unescape": ["zeptomatch-unescape@1.0.1", "http://localhost:4873/zeptomatch-unescape/-/zeptomatch-unescape-1.0.1.tgz", {}, "sha512-xhSFkKV0aQ03e/eiN4VhOTwJhcqfH7SMiGHrWKw9gXi+0EVJAxJ8Gt4ehozYsYLhUXL1JFbP1g3EE6ZmkStB0g=="], + "zod": ["zod@4.1.12", "", {}, "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -1731,6 +1916,8 @@ "@eslint/eslintrc/strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + "@gcch/configuration-prettier/prettier": ["prettier@4.0.0-alpha.12", "http://localhost:4873/prettier/-/prettier-4.0.0-alpha.12.tgz", { "dependencies": { "@prettier/cli": "^0.7.1" }, "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-wQ8RK48Io6nRr39OQFXZu+EALwTygXnstPgN9UplY+mqkg6P52ceGifo5gylIwX1X9lOuXxreUFrLxXsCbA+sg=="], + "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], "@jridgewell/source-map/@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], @@ -1751,8 +1938,30 @@ "@types/eslint__js/@eslint/js": ["@eslint/js@9.29.0", "", {}, "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ=="], + "@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.3", "http://localhost:4873/@typescript-eslint/scope-manager/-/scope-manager-8.46.3.tgz", { "dependencies": { "@typescript-eslint/types": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3" } }, "sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg=="], + + "@typescript-eslint/eslint-plugin/@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.3", "http://localhost:4873/@typescript-eslint/utils/-/utils-8.46.3.tgz", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/types": "8.46.3", "@typescript-eslint/typescript-estree": "8.46.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@typescript-eslint/parser/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.3", "http://localhost:4873/@typescript-eslint/scope-manager/-/scope-manager-8.46.3.tgz", { "dependencies": { "@typescript-eslint/types": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3" } }, "sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg=="], + + "@typescript-eslint/parser/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + + "@typescript-eslint/project-service/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + + "@typescript-eslint/scope-manager/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w=="], + + "@typescript-eslint/type-utils/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + + "@typescript-eslint/type-utils/@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.3", "http://localhost:4873/@typescript-eslint/utils/-/utils-8.46.3.tgz", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/types": "8.46.3", "@typescript-eslint/typescript-estree": "8.46.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g=="], + + "@typescript-eslint/typescript-estree/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + + "@typescript-eslint/utils/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.46.2", "", { "dependencies": { "@typescript-eslint/project-service": "8.46.2", "@typescript-eslint/tsconfig-utils": "8.46.2", "@typescript-eslint/types": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ=="], + + "@typescript-eslint/visitor-keys/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + "asn1.js/bn.js": ["bn.js@4.12.2", "", {}, "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="], "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -1795,6 +2004,8 @@ "pbkdf2/ripemd160": ["ripemd160@2.0.1", "", { "dependencies": { "hash-base": "^2.0.0", "inherits": "^2.0.1" } }, "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w=="], + "promise-make-counter/promise-make-naked": ["promise-make-naked@3.0.2", "http://localhost:4873/promise-make-naked/-/promise-make-naked-3.0.2.tgz", {}, "sha512-B+b+kQ1YrYS7zO7P7bQcoqqMUizP06BOyNSBEnB5VJKDSWo8fsVuDkfSmwdjF0JsRtaNh83so5MMFJ95soH5jg=="], + "public-encrypt/bn.js": ["bn.js@4.12.2", "", {}, "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="], "regjsparser/jsesc": ["jsesc@3.0.2", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], @@ -1821,6 +2032,8 @@ "to-buffer/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + "typescript-eslint/@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.3", "http://localhost:4873/@typescript-eslint/utils/-/utils-8.46.3.tgz", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/types": "8.46.3", "@typescript-eslint/typescript-estree": "8.46.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g=="], + "uri-js/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "vite/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -1947,6 +2160,18 @@ "@stylistic/stylelint-plugin/stylelint/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], + "@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + + "@typescript-eslint/eslint-plugin/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + + "@typescript-eslint/type-utils/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.3", "http://localhost:4873/@typescript-eslint/scope-manager/-/scope-manager-8.46.3.tgz", { "dependencies": { "@typescript-eslint/types": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3" } }, "sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg=="], + + "@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.46.2", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.46.2", "@typescript-eslint/types": "^8.46.2", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg=="], + + "@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.46.2", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag=="], + + "@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w=="], + "browserify-sign/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "browserify-sign/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], @@ -1973,6 +2198,10 @@ "table/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "typescript-eslint/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.3", "http://localhost:4873/@typescript-eslint/scope-manager/-/scope-manager-8.46.3.tgz", { "dependencies": { "@typescript-eslint/types": "8.46.3", "@typescript-eslint/visitor-keys": "8.46.3" } }, "sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg=="], + + "typescript-eslint/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.46.3", "http://localhost:4873/@typescript-eslint/types/-/types-8.46.3.tgz", {}, "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA=="], + "@babel/helper-create-class-features-plugin/@babel/traverse/@babel/generator/@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], "@babel/helper-create-class-features-plugin/@babel/traverse/@babel/generator/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], diff --git a/compose.yaml b/compose.yaml new file mode 100755 index 00000000..ac119961 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,147 @@ +name: "haikuatelier.fr" +networks: + haiku-network: +services: + db: + container_name: "haikuatelier.fr-db" + env_file: + - path: "./.env" + required: true + healthcheck: + interval: "10s" + retries: 3 + start_period: "60s" + test: + - "CMD" + - "healthcheck.sh" + - "--connect" + - "--innodb_initialized" + timeout: "5s" + image: "docker.io/library/mariadb:latest" + labels: + - "traefik.enable=false" + networks: + - "haiku-network" + restart: "unless-stopped" + volumes: + - "db-data:/var/lib/mysql:rw" + jaeger: + container_name: "haikuatelier.fr-jaeger" + environment: + - "COLLECTOR_OTLP_ENABLED=true" + healthcheck: + interval: "5s" + retries: 3 + start_period: "5s" + test: + - "CMD" + - "wget" + - "--spider" + - "http://localhost:16686" + timeout: "2s" + image: "cr.jaegertracing.io/jaegertracing/jaeger:latest" + networks: + - "haiku-network" + ports: + - "6831:6831/udp" + - "6832:6832/udp" + - "5778:5778" + - "16686:16686" + - "4317:4317" + - "4318:4318" + - "14250:14250" + - "14268:14268" + - "14269:14269" + proxy: + container_name: "haikuatelier.fr-proxy" + depends_on: + - "wordpress" + env_file: + - path: "./.env" + required: true + healthcheck: + interval: "10s" + retries: 3 + test: + - "CMD-SHELL" + - "curl http://localhost/health | grep UP" + timeout: "5s" + image: "docker.io/eilandert/angie:latest" + networks: + - "haiku-network" + restart: "on-failure:3" + volumes: + - "./containers/conf/angie:/etc/angie:rw" + - "./containers/data/certs:/etc/angie/ssl:ro" + - "./containers/data/angie/logs:/var/log/angie:rw" + - "./:/var/www/wordpress:ro" + traefik: + container_name: "haikuatelier.fr-traefik" + env_file: + - path: "./.env" + required: true + healthcheck: + interval: "10s" + retries: 3 + test: + - "CMD" + - "traefik" + - "healthcheck" + - "--ping" + timeout: "5s" + image: "traefik" + mem_limit: "256m" + mem_reservation: "128m" + networks: + - "haiku-network" + ports: + - "127.0.0.1:80:80" + - "127.0.0.1:443:443" + - "127.0.0.1:8082:8082" + restart: "unless-stopped" + volumes: + - "./containers/conf/traefik/dynamic:/etc/traefik/dynamic:ro" + - "./containers/conf/traefik/traefik.yaml:/etc/traefik/traefik.yml:ro" + - "./containers/data/certs:/etc/certs/:ro" + - "./containers/data/traefik/logs:/var/log/traefik:rw" + - "/var/run/user/1000/podman/podman.sock:/var/run/docker.sock:ro" + valkey: + command: "valkey-server /usr/local/etc/valkey/valkey.conf" + container_name: "haikuatelier.fr-valkey" + env_file: + - path: "./.env" + required: true + healthcheck: + interval: "10s" + retries: 3 + test: + - "CMD-SHELL" + - "valkey-cli ping | grep PONG" + timeout: "5s" + image: "docker.io/valkey/valkey:8-alpine" + restart: "unless-stopped" + sysctls: + - "net.core.somaxconn=512" + volumes: + - "./containers/conf/valkey.conf:/usr/local/etc/valkey/valkey.conf:ro" + - "./containers/data/valkey:/data:rw" + wordpress: + container_name: "haikuatelier.fr-wordpress" + depends_on: + - "db" + - "valkey" + - "traefik" + env_file: + - path: "./.env" + required: true + image: "localhost/wordpress-haiku-atelier" + networks: + - "haiku-network" + ports: + - "127.0.0.1:9000:9000" + restart: "unless-stopped" + volumes: + - "./containers/conf/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro" + - "./:/var/www/wordpress:rw" +volumes: + db-data: null diff --git a/composer.json b/composer.json index f325b8be..8fc26c66 100755 --- a/composer.json +++ b/composer.json @@ -49,11 +49,13 @@ "wpackagist-theme/twentytwentyfour": "^1.3" }, "require-dev": { + "friendsofphp/php-cs-fixer": "^3.89", "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan": "^2.0.3", "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^4", - "szepeviktor/phpstan-wordpress": "2.x-dev" + "squizlabs/php_codesniffer": "^4.0", + "szepeviktor/phpstan-wordpress": "2.x-dev", + "vincentlanglet/twig-cs-fixer": "^3.10" }, "config": { "optimize-autoloader": true, @@ -76,6 +78,5 @@ "web/app/themes/{$name}/": ["type:wordpress-theme"] }, "wordpress-install-dir": "web/wp" - }, - "scripts": { "test": ["phpcs"] } + } } diff --git a/composer.lock b/composer.lock index dd72567d..128067e1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c56a2e0f435570c60a5c22400c9e46ad", + "content-hash": "20def880c78f7fd08c73933ea80e6acb", "packages": [ { "name": "brick/math", @@ -3674,6 +3674,503 @@ } ], "packages-dev": [ + { + "name": "clue/ndjson-react", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, + { + "name": "composer/pcre", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, + "require-dev": { + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-06T16:37:16+00:00" + }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2025-08-14T07:29:31+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.89.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "f34967da2866ace090a2b447de1f357356474573" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/f34967da2866ace090a2b447de1f357356474573", + "reference": "f34967da2866ace090a2b447de1f357356474573", + "shasum": "" + }, + "require": { + "clue/ndjson-react": "^1.3", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.5", + "ext-filter": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.3", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.6", + "react/event-loop": "^1.5", + "react/socket": "^1.16", + "react/stream": "^1.4", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/polyfill-mbstring": "^1.33", + "symfony/polyfill-php80": "^1.33", + "symfony/polyfill-php81": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3.1 || ^2.7", + "infection/infection": "^0.31.0", + "justinrainbow/json-schema": "^6.5", + "keradus/cli-executor": "^2.2", + "mikey179/vfsstream": "^1.6.12", + "php-coveralls/php-coveralls": "^2.8", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", + "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", + "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2", + "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.89.1" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2025-10-24T12:05:10+00:00" + }, { "name": "php-stubs/wordpress-stubs", "version": "v6.8.3", @@ -3826,18 +4323,644 @@ ], "time": "2025-10-10T14:14:11+00:00" }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.6", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-01-01T16:37:48+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.12.28 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-08-19T18:57:03+00:00" + }, + { + "name": "react/socket", + "version": "v1.16.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.13", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3.3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.16.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-07-26T10:38:09+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, { "name": "roave/security-advisories", "version": "dev-latest", "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "d2e1583e5f89f53f7882861c1639c14c9a154585" + "reference": "19966d2f97bbc444bb176432754e33256a7d45bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d2e1583e5f89f53f7882861c1639c14c9a154585", - "reference": "d2e1583e5f89f53f7882861c1639c14c9a154585", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/19966d2f97bbc444bb176432754e33256a7d45bf", + "reference": "19966d2f97bbc444bb176432754e33256a7d45bf", "shasum": "" }, "conflict": { @@ -4272,7 +5395,7 @@ "maikuolan/phpmussel": ">=1,<1.6", "mainwp/mainwp": "<=4.4.3.3", "manogi/nova-tiptap": "<=3.2.6", - "mantisbt/mantisbt": "<=2.26.3", + "mantisbt/mantisbt": "<2.27.2", "marcwillmann/turn": "<0.3.3", "marshmallow/nova-tiptap": "<5.7", "matomo/matomo": "<1.11", @@ -4360,7 +5483,7 @@ "open-web-analytics/open-web-analytics": "<1.8.1", "opencart/opencart": ">=0", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.12.3", + "openmage/magento-lts": "<20.16", "opensolutions/vimbadmin": "<=3.0.15", "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", "orchid/platform": ">=8,<14.43", @@ -4815,7 +5938,74 @@ "type": "tidelift" } ], - "time": "2025-10-30T18:07:16+00:00" + "time": "2025-11-03T21:05:38+00:00" + }, + { + "name": "sebastian/diff", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:55:46+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -4896,6 +6086,1020 @@ ], "time": "2025-09-15T11:28:58+00:00" }, + { + "name": "symfony/console", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/cdb80fa5869653c83cfe1a9084a673b6daf57ea7", + "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-14T15:46:26+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-13T11:49:31+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-07T08:17:47+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-15T18:45:57+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v7.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-05T10:16:07+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-11T10:12:26+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-25T09:37:31+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-24T10:49:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "f96476035142921000338bad71e5247fbc138872" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-11T14:36:48+00:00" + }, { "name": "szepeviktor/phpstan-wordpress", "version": "2.x-dev", @@ -4959,6 +7163,141 @@ "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/2.x" }, "time": "2025-09-14T02:58:22+00:00" + }, + { + "name": "vincentlanglet/twig-cs-fixer", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/VincentLanglet/Twig-CS-Fixer.git", + "reference": "ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/VincentLanglet/Twig-CS-Fixer/zipball/ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6", + "reference": "ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "ext-ctype": "*", + "ext-json": "*", + "php": ">=8.0", + "symfony/console": "^5.4.9 || ^6.4 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/string": "^5.4.42 || ^6.4.10 || ~7.0.10 || ^7.1.3 || ^8.0", + "twig/twig": "^3.4", + "webmozart/assert": "^1.10" + }, + "require-dev": { + "composer/semver": "^3.2.0", + "dereuromark/composer-prefer-lowest": "^0.1.10", + "ergebnis/composer-normalize": "^2.29", + "friendsofphp/php-cs-fixer": "^3.13.0", + "infection/infection": "^0.26.16 || ^0.29.14", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpstan/phpstan-symfony": "^2.0", + "phpstan/phpstan-webmozart-assert": "^2.0", + "phpunit/phpunit": "^9.5.26 || ^11.5.18 || ^12.1.3", + "rector/rector": "^2.0.0", + "shipmonk/composer-dependency-analyser": "^1.6", + "symfony/process": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/twig-bridge": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/ux-twig-component": "^2.2.0", + "twig/cache-extra": "^3.2" + }, + "bin": [ + "bin/twig-cs-fixer" + ], + "type": "coding-standard", + "autoload": { + "psr-4": { + "TwigCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vincent Langlet" + } + ], + "description": "A tool to automatically fix Twig code style", + "homepage": "https://github.com/VincentLanglet/Twig-CS-Fixer", + "support": { + "issues": "https://github.com/VincentLanglet/Twig-CS-Fixer/issues", + "source": "https://github.com/VincentLanglet/Twig-CS-Fixer/tree/3.10.0" + }, + "funding": [ + { + "url": "https://github.com/VincentLanglet", + "type": "github" + } + ], + "time": "2025-09-15T11:28:55+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^7.2 || ^8.0" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.12.1" + }, + "time": "2025-10-29T15:56:20+00:00" } ], "aliases": [], diff --git a/config/application.php b/config/application.php index ea4b10a8..422d4d37 100755 --- a/config/application.php +++ b/config/application.php @@ -1,4 +1,5 @@ load(); + $dotenv->load(); - $dotenv->required(["WP_HOME", "WP_SITEURL"]); - if (!env("DATABASE_URL")) { - $dotenv->required(["DB_NAME", "DB_USER", "DB_PASSWORD"]); - } + $dotenv->required(['WP_HOME', 'WP_SITEURL']); + if (!env('DATABASE_URL')) { + $dotenv->required(['DB_NAME', 'DB_USER', 'DB_PASSWORD']); + } } -/** +/* * Set up our global environment constant and load its config first * Default: production */ -define("WP_ENV", env("WP_ENV") ?: "production"); +define('WP_ENV', env('WP_ENV') ?: 'production'); -/** - * Infer WP_ENVIRONMENT_TYPE based on WP_ENV - */ -if (!env("WP_ENVIRONMENT_TYPE") && in_array(WP_ENV, ["production", "staging", "development", "local"])) { - Config::define("WP_ENVIRONMENT_TYPE", WP_ENV); +// Infer WP_ENVIRONMENT_TYPE based on WP_ENV +if (!env('WP_ENVIRONMENT_TYPE') && in_array(WP_ENV, ['production', 'staging', 'development', 'local'])) { + Config::define('WP_ENVIRONMENT_TYPE', WP_ENV); } -/** - * URLs - */ -Config::define("WP_HOME", env("WP_HOME")); -Config::define("WP_SITEURL", env("WP_SITEURL")); +// URLs +Config::define('WP_HOME', env('WP_HOME')); +Config::define('WP_SITEURL', env('WP_SITEURL')); -/** - * Custom Content Directory - */ -Config::define("CONTENT_DIR", "/app"); -Config::define("WP_CONTENT_DIR", $webroot_dir . Config::get("CONTENT_DIR")); -Config::define("WP_CONTENT_URL", Config::get("WP_HOME") . Config::get("CONTENT_DIR")); +// Custom Content Directory +Config::define('CONTENT_DIR', '/app'); +Config::define('WP_CONTENT_DIR', $webroot_dir.Config::get('CONTENT_DIR')); +Config::define('WP_CONTENT_URL', Config::get('WP_HOME').Config::get('CONTENT_DIR')); -/** - * DB settings - */ -if (env("DB_SSL")) { - Config::define("MYSQL_CLIENT_FLAGS", MYSQLI_CLIENT_SSL); +// DB settings +if (env('DB_SSL')) { + Config::define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL); } -Config::define("DB_NAME", env("DB_NAME")); -Config::define("DB_USER", env("DB_USER")); -Config::define("DB_PASSWORD", env("DB_PASSWORD")); -Config::define("DB_HOST", env("DB_HOST") ?: "localhost"); -Config::define("DB_CHARSET", "utf8mb4"); -Config::define("DB_COLLATE", ""); -$table_prefix = env("DB_PREFIX") ?: "wp_"; +Config::define('DB_NAME', env('DB_NAME')); +Config::define('DB_USER', env('DB_USER')); +Config::define('DB_PASSWORD', env('DB_PASSWORD')); +Config::define('DB_HOST', env('DB_HOST') ?: 'localhost'); +Config::define('DB_CHARSET', 'utf8mb4'); +Config::define('DB_COLLATE', ''); +$table_prefix = env('DB_PREFIX') ?: 'wp_'; -if (env("DATABASE_URL")) { - $dsn = (object) parse_url(env("DATABASE_URL")); +if (env('DATABASE_URL')) { + $dsn = (object) parse_url(env('DATABASE_URL')); - Config::define("DB_NAME", substr($dsn->path, 1)); - Config::define("DB_USER", $dsn->user); - Config::define("DB_PASSWORD", isset($dsn->pass) ? $dsn->pass : null); - Config::define("DB_HOST", isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host); + Config::define('DB_NAME', substr($dsn->path, 1)); + Config::define('DB_USER', $dsn->user); + Config::define('DB_PASSWORD', isset($dsn->pass) ? $dsn->pass : null); + Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host); } -/** - * Authentication Unique Keys and Salts - */ -Config::define("AUTH_KEY", env("AUTH_KEY")); -Config::define("SECURE_AUTH_KEY", env("SECURE_AUTH_KEY")); -Config::define("LOGGED_IN_KEY", env("LOGGED_IN_KEY")); -Config::define("NONCE_KEY", env("NONCE_KEY")); -Config::define("AUTH_SALT", env("AUTH_SALT")); -Config::define("SECURE_AUTH_SALT", env("SECURE_AUTH_SALT")); -Config::define("LOGGED_IN_SALT", env("LOGGED_IN_SALT")); -Config::define("NONCE_SALT", env("NONCE_SALT")); +// Authentication Unique Keys and Salts +Config::define('AUTH_KEY', env('AUTH_KEY')); +Config::define('SECURE_AUTH_KEY', env('SECURE_AUTH_KEY')); +Config::define('LOGGED_IN_KEY', env('LOGGED_IN_KEY')); +Config::define('NONCE_KEY', env('NONCE_KEY')); +Config::define('AUTH_SALT', env('AUTH_SALT')); +Config::define('SECURE_AUTH_SALT', env('SECURE_AUTH_SALT')); +Config::define('LOGGED_IN_SALT', env('LOGGED_IN_SALT')); +Config::define('NONCE_SALT', env('NONCE_SALT')); -/** - * Custom Settings - */ -Config::define("AUTOMATIC_UPDATER_DISABLED", true); -Config::define("DISABLE_WP_CRON", env("DISABLE_WP_CRON") ?: false); +// Custom Settings +Config::define('AUTOMATIC_UPDATER_DISABLED', true); +Config::define('DISABLE_WP_CRON', env('DISABLE_WP_CRON') ?: false); // Disable the plugin and theme file editor in the admin -Config::define("DISALLOW_FILE_EDIT", true); +Config::define('DISALLOW_FILE_EDIT', true); // Disable plugin and theme updates and installation from the admin -Config::define("DISALLOW_FILE_MODS", true); +Config::define('DISALLOW_FILE_MODS', true); // Limit the number of post revisions -Config::define("WP_POST_REVISIONS", env("WP_POST_REVISIONS") ?? true); +Config::define('WP_POST_REVISIONS', env('WP_POST_REVISIONS') ?? true); -/** - * Debugging Settings - */ -Config::define("WP_DEBUG_DISPLAY", false); -Config::define("WP_DEBUG_LOG", false); -Config::define("SCRIPT_DEBUG", false); -ini_set("display_errors", "0"); +// Debugging Settings +Config::define('WP_DEBUG_DISPLAY', false); +Config::define('WP_DEBUG_LOG', false); +Config::define('SCRIPT_DEBUG', false); +ini_set('display_errors', '0'); -/** - * Plugins - */ -Config::define("WPMU_PLUGIN_DIR", Config::get("WP_CONTENT_DIR") . "/mu-plugins"); -Config::define("WP_PLUGIN_DIR", Config::get("WP_CONTENT_DIR") . "/plugins"); +// Plugins +Config::define('WPMU_PLUGIN_DIR', Config::get('WP_CONTENT_DIR').'/mu-plugins'); +Config::define('WP_PLUGIN_DIR', Config::get('WP_CONTENT_DIR').'/plugins'); -/** +/* * Allow WordPress to detect HTTPS when used behind a reverse proxy or a load balancer * See https://codex.wordpress.org/Function_Reference/is_ssl#Notes */ -if (isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) && $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") { - $_SERVER["HTTPS"] = "on"; +if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO']) { + $_SERVER['HTTPS'] = 'on'; } -$env_config = __DIR__ . "/environments/" . WP_ENV . ".php"; +$env_config = __DIR__.'/environments/'.WP_ENV.'.php'; if (file_exists($env_config)) { - require_once $env_config; + include_once $env_config; } Config::apply(); -/** - * Bootstrap WordPress - */ -if (!defined("ABSPATH")) { - define("ABSPATH", $webroot_dir . "/wp/"); +// Bootstrap WordPress +if (!defined('ABSPATH')) { + define('ABSPATH', $webroot_dir.'/wp/'); } diff --git a/config/environments/development.php b/config/environments/development.php index f8a43311..ef0ba272 100755 --- a/config/environments/development.php +++ b/config/environments/development.php @@ -1,35 +1,37 @@ - web/wp - web/app/themes/twentytwentyfour/ vendor/ + web/app/languages/ + web/app/mu-plugins/ + web/app/plugins/ + web/app/themes/twentytwentyfour/ + web/wp @@ -22,37 +25,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/prettier.config.js b/prettier.config.js index 7e0be93d..8199699f 100755 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,56 +1,8 @@ -/** @type {import("prettier").Config} */ -export default { - arrowParens: "avoid", - bracketSameLine: false, - bracketSpacing: true, - embeddedLanguageFormatting: "auto", - endOfLine: "lf", - experimentalTernaries: true, - htmlWhitespaceSensitivity: "ignore", - overrides: [ - // Pour les fichiers PHP sans HTML - { - files: ["*.php"], - options: { - braceStyle: "1tbs", - parser: "php", - phpVersion: "8.2", - plugins: ["@prettier/plugin-php"], - trailingCommaPHP: true, - }, - }, - // Pour les fichiers XML - { - files: ["*.xml"], - options: { - bracketSameLine: false, - parser: "xml", - plugins: ["@prettier/plugin-xml"], - printWidth: 120, - singleAttributePerLine: true, - tabWidth: 2, - xmlQuoteAttributes: "double", - xmlSelfClosingSpace: true, - xmlSortAttributesByKey: true, - xmlWhitespaceSensitivity: "strict", - }, - }, - // package.json - { - files: ["package.json"], - options: { - plugins: ["prettier-plugin-pkg"], - }, - }, - ], - plugins: ["prettier-plugin-sh"], - printWidth: 120, - proseWrap: "never", - quoteProps: "as-needed", - semi: true, - singleAttributePerLine: true, - singleQuote: false, - tabWidth: 2, - trailingComma: "all", - useTabs: false, +import { configClassique, configXml } from "@gcch/configuration-prettier"; + +const config = { + ...configClassique, + overrides: [configXml], }; + +export default config; diff --git a/psalm.xml b/psalm.xml deleted file mode 100755 index 0746c4bc..00000000 --- a/psalm.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/scripts/pull-container-images.ts b/scripts/pull-container-images.ts new file mode 100644 index 00000000..da11a9f6 --- /dev/null +++ b/scripts/pull-container-images.ts @@ -0,0 +1,42 @@ +import { BunFile, YAML } from "bun"; +import { Array, Console, Effect, Option, pipe, Record, Schema } from "effect"; +import { type UnknownException } from "effect/Cause"; +import { type ParseError } from "effect/ParseResult"; +import { type ReadonlyRecord } from "effect/Record"; + +const COMPOSE_PATH = "compose.yaml"; + +const getServicesKey = ( + yaml: ReadonlyRecord, +): Option.Option> => + pipe( + Record.get("services")(yaml), + Option.andThen(yaml => Record.keys(yaml)), + ); + +const getComposeYaml = ( + filePath: string, + schema: Schema.Schema, +): Effect.Effect => + pipe( + Effect.try(() => Bun.file(filePath)), + Effect.andThen((file: BunFile) => Effect.tryPromise(() => file.text())), + Effect.andThen((text: string) => Effect.try(() => YAML.parse(text))), + Effect.andThen((yaml: unknown) => Schema.decodeUnknown(schema)(yaml)), + ); + +const programEffect: Effect.Effect> = Effect.gen(function*() { + return yield* pipe( + // Récupère le contenu du fichier compose.yaml sous forme de Record. + getComposeYaml(COMPOSE_PATH, Schema.Record({ key: Schema.String, value: Schema.Unknown })), + // Récupère la clé des services. + Effect.andThen((yaml: ReadonlyRecord) => getServicesKey(yaml)), + // Retire la clé de l'image WordPress. + Effect.andThen((keys: ReadonlyArray) => Array.filter(keys, key => key !== "wordpress")), + Effect.orElseSucceed(() => [""]), + // Exécute la commande podman. + Effect.tap(services => Bun.spawn({ cmd: ["podman", "compose", "pull", ...services], timeout: 10000 })), + ); +}); + +Effect.runFork(programEffect).pipe(Effect.tapErrorCause(Console.error)); diff --git a/scripts/remove-scaled-images.php b/scripts/remove-scaled-images.php index e21400af..2c7d67c3 100755 --- a/scripts/remove-scaled-images.php +++ b/scripts/remove-scaled-images.php @@ -1,47 +1,43 @@ prefix . "postmeta"; +$wp_postmeta = "{$wpdb->prefix}postmeta"; try { - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Error Handling - - $sql = "UPDATE $wp_postmeta SET meta_value = REPLACE(meta_value,'-scaled.jpg','.jpg') WHERE meta_key='_wp_attached_file' AND meta_value LIKE '%-scaled.jpg%'"; - $result = $pdo->exec($sql); - print_r($result); -} catch (PDOException $e) { - print_r($e->getMessage()); -} - -/** - * replace _wp_attachment_metadata meta_key - **/ - -$image_metas = []; -try { - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Error Handling - $sql = "SELECT * FROM $wp_postmeta WHERE meta_value LIKE '%-scaled.jpg%' AND meta_key='_wp_attachment_metadata'"; - $statement = $pdo->query($sql); - $image_metas = $statement->fetchAll(); - foreach ($image_metas as $meta) { - $meta_value = unserialize($meta["meta_value"]); - $file = $meta_value["file"]; - $meta_value["file"] = str_replace("-scaled.jpg", ".jpg", $file); - update_post_meta($meta["post_id"], $meta["meta_key"], $meta_value); - $result = get_post_meta($meta["post_id"], $meta["meta_key"]); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + // Error Handling + $sql = "UPDATE {$wp_postmeta} SET meta_value = REPLACE(meta_value,'-scaled.jpg','.jpg') WHERE meta_key='_wp_attached_file' AND meta_value LIKE '%-scaled.jpg%'"; + $result = $pdo->exec($sql); print_r($result); - } } catch (PDOException $e) { - print_r($e->getMessage()); + print_r($e->getMessage()); +} + +// replace _wp_attachment_metadata meta_key. +$image_metas = []; + +try { + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + // Error Handling + $sql = "SELECT * FROM {$wp_postmeta} WHERE meta_value LIKE '%-scaled.jpg%' AND meta_key='_wp_attachment_metadata'"; + $statement = $pdo->query($sql); + $image_metas = $statement->fetchAll(); + foreach ($image_metas as $meta) { + $meta_value = unserialize($meta['meta_value']); + $file = $meta_value['file']; + $meta_value['file'] = str_replace('-scaled.jpg', '.jpg', $file); + update_post_meta($meta['post_id'], $meta['meta_key'], $meta_value); + $result = get_post_meta($meta['post_id'], $meta['meta_key']); + print_r($result); + } +} catch (PDOException $e) { + print_r($e->getMessage()); } diff --git a/web/app/languages/admin-en_GB.l10n.php b/web/app/languages/admin-en_GB.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-en_GB.mo b/web/app/languages/admin-en_GB.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-en_GB.po b/web/app/languages/admin-en_GB.po old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-fr_FR.l10n.php b/web/app/languages/admin-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-fr_FR.mo b/web/app/languages/admin-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-fr_FR.po b/web/app/languages/admin-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-network-en_GB.l10n.php b/web/app/languages/admin-network-en_GB.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-network-en_GB.mo b/web/app/languages/admin-network-en_GB.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-network-en_GB.po b/web/app/languages/admin-network-en_GB.po old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-network-fr_FR.l10n.php b/web/app/languages/admin-network-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-network-fr_FR.mo b/web/app/languages/admin-network-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/admin-network-fr_FR.po b/web/app/languages/admin-network-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/continents-cities-fr_FR.l10n.php b/web/app/languages/continents-cities-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/continents-cities-fr_FR.mo b/web/app/languages/continents-cities-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/continents-cities-fr_FR.po b/web/app/languages/continents-cities-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-0cc31205f20441b3df1d1b46100f6b8d.json b/web/app/languages/en_GB-0cc31205f20441b3df1d1b46100f6b8d.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-0ce75ad2f775d1cac9696967d484808c.json b/web/app/languages/en_GB-0ce75ad2f775d1cac9696967d484808c.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-0eebe503220d4a00341eb011b92769b4.json b/web/app/languages/en_GB-0eebe503220d4a00341eb011b92769b4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-17179a5f2930647c89151e365f843b6e.json b/web/app/languages/en_GB-17179a5f2930647c89151e365f843b6e.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-1780a2033cf98d69ce13c2e5c8510004.json b/web/app/languages/en_GB-1780a2033cf98d69ce13c2e5c8510004.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-1a0cd6a7128913b15c1a10dd68951869.json b/web/app/languages/en_GB-1a0cd6a7128913b15c1a10dd68951869.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-1bba9045bb07c89671c88a3f328548e8.json b/web/app/languages/en_GB-1bba9045bb07c89671c88a3f328548e8.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-1c4303f02ff93b290e9faad991eeb06f.json b/web/app/languages/en_GB-1c4303f02ff93b290e9faad991eeb06f.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-1d17475f620f63a92e2c5d2681c51ee8.json b/web/app/languages/en_GB-1d17475f620f63a92e2c5d2681c51ee8.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-2617ce121227a46077ede6c69aa9fcb5.json b/web/app/languages/en_GB-2617ce121227a46077ede6c69aa9fcb5.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-270d72d1cff17227d37f3244759cbecb.json b/web/app/languages/en_GB-270d72d1cff17227d37f3244759cbecb.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-28b3c3d595952907e08d98287077426c.json b/web/app/languages/en_GB-28b3c3d595952907e08d98287077426c.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-2b390f85a3048c5b4255fb45960b6514.json b/web/app/languages/en_GB-2b390f85a3048c5b4255fb45960b6514.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-2c5d274ea625dd91556554ad82901529.json b/web/app/languages/en_GB-2c5d274ea625dd91556554ad82901529.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-320f4ad9792aaa6dedb1e71cbdf85d57.json b/web/app/languages/en_GB-320f4ad9792aaa6dedb1e71cbdf85d57.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-440127dd25bde48a531ded36f33e927b.json b/web/app/languages/en_GB-440127dd25bde48a531ded36f33e927b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-49c6d4acf36cf3aca9f0b2a77617304f.json b/web/app/languages/en_GB-49c6d4acf36cf3aca9f0b2a77617304f.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-4a38fe1c0c45989e44682ba6109d9f46.json b/web/app/languages/en_GB-4a38fe1c0c45989e44682ba6109d9f46.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-4bfa11da57ff2600004bb500368247f4.json b/web/app/languages/en_GB-4bfa11da57ff2600004bb500368247f4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-50278328b502f4eb3f2b8b7ab49324a1.json b/web/app/languages/en_GB-50278328b502f4eb3f2b8b7ab49324a1.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-5251f7623766a714c8207c7edb938628.json b/web/app/languages/en_GB-5251f7623766a714c8207c7edb938628.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-529362903a5a05b34b06b5e793fb4cf8.json b/web/app/languages/en_GB-529362903a5a05b34b06b5e793fb4cf8.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-569e85ef168299eb8c8f24d8ef8c8a78.json b/web/app/languages/en_GB-569e85ef168299eb8c8f24d8ef8c8a78.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-6025add6bde16aaeb12787d250f9b414.json b/web/app/languages/en_GB-6025add6bde16aaeb12787d250f9b414.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-60d06fac6f98e8e8f0ec5a945738b660.json b/web/app/languages/en_GB-60d06fac6f98e8e8f0ec5a945738b660.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-68f2cec7514bf8563c723a4d675fcfe6.json b/web/app/languages/en_GB-68f2cec7514bf8563c723a4d675fcfe6.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7233008897033de5ee0d14f86a42a65a.json b/web/app/languages/en_GB-7233008897033de5ee0d14f86a42a65a.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7289286ed59e90a8f36ae797df62220b.json b/web/app/languages/en_GB-7289286ed59e90a8f36ae797df62220b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7436b7ee9e4f11ac0d618d8cc886eb66.json b/web/app/languages/en_GB-7436b7ee9e4f11ac0d618d8cc886eb66.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-77fdfadaf2e1ca3a027d1956b910bc50.json b/web/app/languages/en_GB-77fdfadaf2e1ca3a027d1956b910bc50.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7b74c8457eaa7fcc50db41b431f8a003.json b/web/app/languages/en_GB-7b74c8457eaa7fcc50db41b431f8a003.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7c90cd4398ee2d9d3628c387a87a70e5.json b/web/app/languages/en_GB-7c90cd4398ee2d9d3628c387a87a70e5.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7d5ca435e60d92f024d46c9257aaa0f7.json b/web/app/languages/en_GB-7d5ca435e60d92f024d46c9257aaa0f7.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-7f13c36c641b114bf18cd0bcc9ecc7e0.json b/web/app/languages/en_GB-7f13c36c641b114bf18cd0bcc9ecc7e0.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-803bf1ce2131e13efc590c1bc47851fc.json b/web/app/languages/en_GB-803bf1ce2131e13efc590c1bc47851fc.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-81c889563f09dd13de1701135dc62941.json b/web/app/languages/en_GB-81c889563f09dd13de1701135dc62941.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-81d6f084cb273e02e15b01bd9ece87f7.json b/web/app/languages/en_GB-81d6f084cb273e02e15b01bd9ece87f7.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-8240df461220d1d3a028a9a4c5652a5b.json b/web/app/languages/en_GB-8240df461220d1d3a028a9a4c5652a5b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-8860e58c20c6a2ab5876a0f07be43bd9.json b/web/app/languages/en_GB-8860e58c20c6a2ab5876a0f07be43bd9.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-93882e8f9976382d7f724ac595ed7151.json b/web/app/languages/en_GB-93882e8f9976382d7f724ac595ed7151.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-947c76bb5095da30e16668eec15406b2.json b/web/app/languages/en_GB-947c76bb5095da30e16668eec15406b2.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-9b256ea9cd54df92095e04c76758ceb0.json b/web/app/languages/en_GB-9b256ea9cd54df92095e04c76758ceb0.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-9c3519f4870fac83dc0dbf18cb6bd4c4.json b/web/app/languages/en_GB-9c3519f4870fac83dc0dbf18cb6bd4c4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-9d47a87c240c1d10701cd6a02b28aa1b.json b/web/app/languages/en_GB-9d47a87c240c1d10701cd6a02b28aa1b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-a25d1cc7bf7ca0b4e114f6bea64943f4.json b/web/app/languages/en_GB-a25d1cc7bf7ca0b4e114f6bea64943f4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-a2796e57f680e25d84c4b352ee6d7280.json b/web/app/languages/en_GB-a2796e57f680e25d84c4b352ee6d7280.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-a9dc201dcd011fe71849743133052619.json b/web/app/languages/en_GB-a9dc201dcd011fe71849743133052619.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-aabfce98c410957228848dc581e3c420.json b/web/app/languages/en_GB-aabfce98c410957228848dc581e3c420.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-ac23eee47530ac63a1178c827db28087.json b/web/app/languages/en_GB-ac23eee47530ac63a1178c827db28087.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-bf0f094965d3d4a95b47babcb35fc136.json b/web/app/languages/en_GB-bf0f094965d3d4a95b47babcb35fc136.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-bf23b24175490c2e46aaf92ff6a0c70f.json b/web/app/languages/en_GB-bf23b24175490c2e46aaf92ff6a0c70f.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-c31d5f185753910c14afebc6deb2ce24.json b/web/app/languages/en_GB-c31d5f185753910c14afebc6deb2ce24.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-ca28138671823450e87dfd354f7afc6b.json b/web/app/languages/en_GB-ca28138671823450e87dfd354f7afc6b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-daeb084aab42199d26393a56c3465bc0.json b/web/app/languages/en_GB-daeb084aab42199d26393a56c3465bc0.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-e2791ba830489d23043be8650a22a22b.json b/web/app/languages/en_GB-e2791ba830489d23043be8650a22a22b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-e2e4c4b80f3adf2c70b431bfdb1b4872.json b/web/app/languages/en_GB-e2e4c4b80f3adf2c70b431bfdb1b4872.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-e53526243551a102928735ec9eed4edf.json b/web/app/languages/en_GB-e53526243551a102928735ec9eed4edf.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-f575f481034e90e21d832e415fd95fcf.json b/web/app/languages/en_GB-f575f481034e90e21d832e415fd95fcf.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-f70806bf0c7d62f2908bd5a1c3fe4efc.json b/web/app/languages/en_GB-f70806bf0c7d62f2908bd5a1c3fe4efc.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB-f8f49d9fc4a9cf7d78ec99285417bd9c.json b/web/app/languages/en_GB-f8f49d9fc4a9cf7d78ec99285417bd9c.json old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB.l10n.php b/web/app/languages/en_GB.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB.mo b/web/app/languages/en_GB.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/en_GB.po b/web/app/languages/en_GB.po old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-0cc31205f20441b3df1d1b46100f6b8d.json b/web/app/languages/fr_FR-0cc31205f20441b3df1d1b46100f6b8d.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-0ce75ad2f775d1cac9696967d484808c.json b/web/app/languages/fr_FR-0ce75ad2f775d1cac9696967d484808c.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-0eebe503220d4a00341eb011b92769b4.json b/web/app/languages/fr_FR-0eebe503220d4a00341eb011b92769b4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-17179a5f2930647c89151e365f843b6e.json b/web/app/languages/fr_FR-17179a5f2930647c89151e365f843b6e.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-1780a2033cf98d69ce13c2e5c8510004.json b/web/app/languages/fr_FR-1780a2033cf98d69ce13c2e5c8510004.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-1a0cd6a7128913b15c1a10dd68951869.json b/web/app/languages/fr_FR-1a0cd6a7128913b15c1a10dd68951869.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-1bba9045bb07c89671c88a3f328548e8.json b/web/app/languages/fr_FR-1bba9045bb07c89671c88a3f328548e8.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-1c4303f02ff93b290e9faad991eeb06f.json b/web/app/languages/fr_FR-1c4303f02ff93b290e9faad991eeb06f.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-1d17475f620f63a92e2c5d2681c51ee8.json b/web/app/languages/fr_FR-1d17475f620f63a92e2c5d2681c51ee8.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-2617ce121227a46077ede6c69aa9fcb5.json b/web/app/languages/fr_FR-2617ce121227a46077ede6c69aa9fcb5.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-270d72d1cff17227d37f3244759cbecb.json b/web/app/languages/fr_FR-270d72d1cff17227d37f3244759cbecb.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-28b3c3d595952907e08d98287077426c.json b/web/app/languages/fr_FR-28b3c3d595952907e08d98287077426c.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-2b390f85a3048c5b4255fb45960b6514.json b/web/app/languages/fr_FR-2b390f85a3048c5b4255fb45960b6514.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-2c5d274ea625dd91556554ad82901529.json b/web/app/languages/fr_FR-2c5d274ea625dd91556554ad82901529.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-320f4ad9792aaa6dedb1e71cbdf85d57.json b/web/app/languages/fr_FR-320f4ad9792aaa6dedb1e71cbdf85d57.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-440127dd25bde48a531ded36f33e927b.json b/web/app/languages/fr_FR-440127dd25bde48a531ded36f33e927b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-49c6d4acf36cf3aca9f0b2a77617304f.json b/web/app/languages/fr_FR-49c6d4acf36cf3aca9f0b2a77617304f.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-4a38fe1c0c45989e44682ba6109d9f46.json b/web/app/languages/fr_FR-4a38fe1c0c45989e44682ba6109d9f46.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-4bfa11da57ff2600004bb500368247f4.json b/web/app/languages/fr_FR-4bfa11da57ff2600004bb500368247f4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-50278328b502f4eb3f2b8b7ab49324a1.json b/web/app/languages/fr_FR-50278328b502f4eb3f2b8b7ab49324a1.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-5251f7623766a714c8207c7edb938628.json b/web/app/languages/fr_FR-5251f7623766a714c8207c7edb938628.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-529362903a5a05b34b06b5e793fb4cf8.json b/web/app/languages/fr_FR-529362903a5a05b34b06b5e793fb4cf8.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-569e85ef168299eb8c8f24d8ef8c8a78.json b/web/app/languages/fr_FR-569e85ef168299eb8c8f24d8ef8c8a78.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-6025add6bde16aaeb12787d250f9b414.json b/web/app/languages/fr_FR-6025add6bde16aaeb12787d250f9b414.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-60d06fac6f98e8e8f0ec5a945738b660.json b/web/app/languages/fr_FR-60d06fac6f98e8e8f0ec5a945738b660.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-68f2cec7514bf8563c723a4d675fcfe6.json b/web/app/languages/fr_FR-68f2cec7514bf8563c723a4d675fcfe6.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7233008897033de5ee0d14f86a42a65a.json b/web/app/languages/fr_FR-7233008897033de5ee0d14f86a42a65a.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7289286ed59e90a8f36ae797df62220b.json b/web/app/languages/fr_FR-7289286ed59e90a8f36ae797df62220b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7436b7ee9e4f11ac0d618d8cc886eb66.json b/web/app/languages/fr_FR-7436b7ee9e4f11ac0d618d8cc886eb66.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-77fdfadaf2e1ca3a027d1956b910bc50.json b/web/app/languages/fr_FR-77fdfadaf2e1ca3a027d1956b910bc50.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7b74c8457eaa7fcc50db41b431f8a003.json b/web/app/languages/fr_FR-7b74c8457eaa7fcc50db41b431f8a003.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7c90cd4398ee2d9d3628c387a87a70e5.json b/web/app/languages/fr_FR-7c90cd4398ee2d9d3628c387a87a70e5.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7d5ca435e60d92f024d46c9257aaa0f7.json b/web/app/languages/fr_FR-7d5ca435e60d92f024d46c9257aaa0f7.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-7f13c36c641b114bf18cd0bcc9ecc7e0.json b/web/app/languages/fr_FR-7f13c36c641b114bf18cd0bcc9ecc7e0.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-803bf1ce2131e13efc590c1bc47851fc.json b/web/app/languages/fr_FR-803bf1ce2131e13efc590c1bc47851fc.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-81c889563f09dd13de1701135dc62941.json b/web/app/languages/fr_FR-81c889563f09dd13de1701135dc62941.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-81d6f084cb273e02e15b01bd9ece87f7.json b/web/app/languages/fr_FR-81d6f084cb273e02e15b01bd9ece87f7.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-8240df461220d1d3a028a9a4c5652a5b.json b/web/app/languages/fr_FR-8240df461220d1d3a028a9a4c5652a5b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-8860e58c20c6a2ab5876a0f07be43bd9.json b/web/app/languages/fr_FR-8860e58c20c6a2ab5876a0f07be43bd9.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-93882e8f9976382d7f724ac595ed7151.json b/web/app/languages/fr_FR-93882e8f9976382d7f724ac595ed7151.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-947c76bb5095da30e16668eec15406b2.json b/web/app/languages/fr_FR-947c76bb5095da30e16668eec15406b2.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-9b256ea9cd54df92095e04c76758ceb0.json b/web/app/languages/fr_FR-9b256ea9cd54df92095e04c76758ceb0.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-9c3519f4870fac83dc0dbf18cb6bd4c4.json b/web/app/languages/fr_FR-9c3519f4870fac83dc0dbf18cb6bd4c4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-9d47a87c240c1d10701cd6a02b28aa1b.json b/web/app/languages/fr_FR-9d47a87c240c1d10701cd6a02b28aa1b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-a25d1cc7bf7ca0b4e114f6bea64943f4.json b/web/app/languages/fr_FR-a25d1cc7bf7ca0b4e114f6bea64943f4.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-a2796e57f680e25d84c4b352ee6d7280.json b/web/app/languages/fr_FR-a2796e57f680e25d84c4b352ee6d7280.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-a9dc201dcd011fe71849743133052619.json b/web/app/languages/fr_FR-a9dc201dcd011fe71849743133052619.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-aabfce98c410957228848dc581e3c420.json b/web/app/languages/fr_FR-aabfce98c410957228848dc581e3c420.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-ac23eee47530ac63a1178c827db28087.json b/web/app/languages/fr_FR-ac23eee47530ac63a1178c827db28087.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-bf0f094965d3d4a95b47babcb35fc136.json b/web/app/languages/fr_FR-bf0f094965d3d4a95b47babcb35fc136.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-bf23b24175490c2e46aaf92ff6a0c70f.json b/web/app/languages/fr_FR-bf23b24175490c2e46aaf92ff6a0c70f.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-c31d5f185753910c14afebc6deb2ce24.json b/web/app/languages/fr_FR-c31d5f185753910c14afebc6deb2ce24.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-ca28138671823450e87dfd354f7afc6b.json b/web/app/languages/fr_FR-ca28138671823450e87dfd354f7afc6b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-daeb084aab42199d26393a56c3465bc0.json b/web/app/languages/fr_FR-daeb084aab42199d26393a56c3465bc0.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-e2791ba830489d23043be8650a22a22b.json b/web/app/languages/fr_FR-e2791ba830489d23043be8650a22a22b.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-e2e4c4b80f3adf2c70b431bfdb1b4872.json b/web/app/languages/fr_FR-e2e4c4b80f3adf2c70b431bfdb1b4872.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-e53526243551a102928735ec9eed4edf.json b/web/app/languages/fr_FR-e53526243551a102928735ec9eed4edf.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-f575f481034e90e21d832e415fd95fcf.json b/web/app/languages/fr_FR-f575f481034e90e21d832e415fd95fcf.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-f70806bf0c7d62f2908bd5a1c3fe4efc.json b/web/app/languages/fr_FR-f70806bf0c7d62f2908bd5a1c3fe4efc.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR-f8f49d9fc4a9cf7d78ec99285417bd9c.json b/web/app/languages/fr_FR-f8f49d9fc4a9cf7d78ec99285417bd9c.json old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR.l10n.php b/web/app/languages/fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR.mo b/web/app/languages/fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/fr_FR.po b/web/app/languages/fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/force-regenerate-thumbnails-fr_FR.l10n.php b/web/app/languages/plugins/force-regenerate-thumbnails-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/force-regenerate-thumbnails-fr_FR.mo b/web/app/languages/plugins/force-regenerate-thumbnails-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/force-regenerate-thumbnails-fr_FR.po b/web/app/languages/plugins/force-regenerate-thumbnails-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/redis-cache-fr_FR.l10n.php b/web/app/languages/plugins/redis-cache-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/redis-cache-fr_FR.mo b/web/app/languages/plugins/redis-cache-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/redis-cache-fr_FR.po b/web/app/languages/plugins/redis-cache-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wc-multishipping-fr_FR-5525c20979425b5c3957b3421ca8ebeb.json b/web/app/languages/plugins/wc-multishipping-fr_FR-5525c20979425b5c3957b3421ca8ebeb.json old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wc-multishipping-fr_FR.l10n.php b/web/app/languages/plugins/wc-multishipping-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wc-multishipping-fr_FR.mo b/web/app/languages/plugins/wc-multishipping-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wc-multishipping-fr_FR.po b/web/app/languages/plugins/wc-multishipping-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wp-mail-smtp-fr_FR.l10n.php b/web/app/languages/plugins/wp-mail-smtp-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wp-mail-smtp-fr_FR.mo b/web/app/languages/plugins/wp-mail-smtp-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/plugins/wp-mail-smtp-fr_FR.po b/web/app/languages/plugins/wp-mail-smtp-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/languages/themes/twentytwentyfour-fr_FR.l10n.php b/web/app/languages/themes/twentytwentyfour-fr_FR.l10n.php old mode 100644 new mode 100755 diff --git a/web/app/languages/themes/twentytwentyfour-fr_FR.mo b/web/app/languages/themes/twentytwentyfour-fr_FR.mo old mode 100644 new mode 100755 diff --git a/web/app/languages/themes/twentytwentyfour-fr_FR.po b/web/app/languages/themes/twentytwentyfour-fr_FR.po old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/404.php b/web/app/themes/haiku-atelier-2024/404.php index c69c95e6..52428bff 100755 --- a/web/app/themes/haiku-atelier-2024/404.php +++ b/web/app/themes/haiku-atelier-2024/404.php @@ -1,4 +1,5 @@ $informations_produits Les informations brutes des Produits. */ $informations_produits = wc_get_products([ - "limit" => 12, - "order" => "DESC", - "orderby" => "date", - "status" => "publish", + 'limit' => 12, + 'order' => 'DESC', + 'orderby' => 'date', + 'status' => 'publish', ]); + /** @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; +$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_style( - handle: "haiku-atelier-2024-styles-page-boutique", - src: get_template_directory_uri() . "/assets/css/pages/page-boutique.css", - deps: [], - ver: filemtime(get_template_directory() . "/assets/css/pages/page-boutique.css"), - media: "all", - ); - 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"), - ); - wp_enqueue_script_module( - id: "haiku-atelier-2024-scripts-menu-categories", - src: get_template_directory_uri() . "/assets/js/scripts-menu-categories.js", - deps: [], - version: filemtime(get_template_directory() . "/assets/js/scripts-menu-categories.js"), - ); +function charge_scripts_page_boutique(): void +{ + wp_enqueue_style( + handle: 'haiku-atelier-2024-styles-page-boutique', + src: get_template_directory_uri().'/assets/css/pages/page-boutique.css', + deps: [], + ver: filemtime(get_template_directory().'/assets/css/pages/page-boutique.css'), + media: 'all', + ); + 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'), + ); + wp_enqueue_script_module( + id: 'haiku-atelier-2024-scripts-menu-categories', + src: get_template_directory_uri().'/assets/js/scripts-menu-categories.js', + deps: [], + version: filemtime(get_template_directory().'/assets/js/scripts-menu-categories.js'), + ); } -add_action("wp_enqueue_scripts", "charge_scripts_page_boutique"); +add_action('wp_enqueue_scripts', 'charge_scripts_page_boutique'); // Rendu Timber::render(filenames: $modeles, data: $contexte); diff --git a/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-full.svg b/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-full.svg old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-lines.svg b/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-lines.svg old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-text.svg b/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-text.svg old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-v2-text.png b/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-v2-text.png old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-v2-text.svg b/web/app/themes/haiku-atelier-2024/assets/img/logos/logo-v2-text.svg old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json b/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json.br b/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json.gz b/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json.zst b/web/app/themes/haiku-atelier-2024/assets/js/.vite/manifest.json.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/api-legacy.BVjX3txO.js b/web/app/themes/haiku-atelier-2024/assets/js/api-legacy.BVjX3txO.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/api.BWtmxolt.js b/web/app/themes/haiku-atelier-2024/assets/js/api.BWtmxolt.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js b/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js.br b/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/dom-legacy.BJVKv9nc.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js b/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js.br b/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/dom.DBz3b6Rw.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js b/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js.br b/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/exports-legacy.BuhD0gYd.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js b/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js.br b/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/exports.CgSBb-87.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/gaffe-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js b/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js.br b/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/gaffe.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js b/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js.br b/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/gardes-legacy.iWiX10HI.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js b/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js.br b/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/gardes.HDUeuLeR.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js.br b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86-legacy.BW5bXtUg.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js.br b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/index-c1cc4c86.CjKPgt-6.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js b/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js.br b/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/index-legacy.BZucyBbQ.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js b/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js.br b/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/index.BiLbLflF.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/journalisation-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js b/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js.br b/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/journalisation.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js b/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js.br b/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/messages-legacy.BOy99JP9.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js b/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js.br b/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/messages.CmPZXvfg.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js b/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js.br b/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/nombres-legacy.C5im5vjg.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js b/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js.br b/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/nombres.BgXK1GHl.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/polyfills-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js b/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js.br b/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/polyfills.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js b/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js.br b/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/reseau-legacy.B-YddPQk.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js b/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js.br b/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/reseau.CxtoDjd2.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-panier-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-panier-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-panier.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-panier.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-bouton-retour-sommet.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-categories-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-categories-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-categories.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-categories.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-menu-mobile.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-a-propos.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-accueil.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-boutique.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-panier.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit-legacy.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js.br b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js.br old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js.gz b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js.gz old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js.zst b/web/app/themes/haiku-atelier-2024/assets/js/scripts-page-produit.js.zst old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/validation-legacy.CVjWyVJO.js b/web/app/themes/haiku-atelier-2024/assets/js/validation-legacy.CVjWyVJO.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/assets/js/validation.D_pHOsEn.js b/web/app/themes/haiku-atelier-2024/assets/js/validation.D_pHOsEn.js old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/front-page.php b/web/app/themes/haiku-atelier-2024/front-page.php index 4a3a7328..b17973fc 100755 --- a/web/app/themes/haiku-atelier-2024/front-page.php +++ b/web/app/themes/haiku-atelier-2024/front-page.php @@ -1,4 +1,5 @@ add_section("liens_reseaux_sociaux", [ - "title" => __("Liens des réseaux sociaux"), - "description" => __("Liens des réseaux sociaux s'affichant dans le pied de page."), - ]); +function enregistre_personnalisations_theme($wp_customize) +{ + // Section « Réseaux sociaux » + $wp_customize->add_section('liens_reseaux_sociaux', [ + 'title' => __('Liens des réseaux sociaux'), + 'description' => __("Liens des réseaux sociaux s'affichant dans le pied de page."), + ]); - // Instagram - $wp_customize->add_setting("lien_instagram", [ - "type" => "theme_mod", - "capability" => "edit_theme_options", - ]); - $wp_customize->add_control("lien_instagram", [ - "type" => "url", - "section" => "liens_reseaux_sociaux", - "label" => __("Profil Instagram"), - ]); + // Instagram + $wp_customize->add_setting('lien_instagram', [ + 'type' => 'theme_mod', + 'capability' => 'edit_theme_options', + ]); + $wp_customize->add_control('lien_instagram', [ + 'type' => 'url', + 'section' => 'liens_reseaux_sociaux', + 'label' => __('Profil Instagram'), + ]); - // Facebook - $wp_customize->add_setting("lien_facebook", [ - "type" => "theme_mod", - "capability" => "edit_theme_options", - ]); - $wp_customize->add_control("lien_facebook", [ - "type" => "url", - "section" => "liens_reseaux_sociaux", - "label" => __("Profil Facebook"), - ]); + // Facebook + $wp_customize->add_setting('lien_facebook', [ + 'type' => 'theme_mod', + 'capability' => 'edit_theme_options', + ]); + $wp_customize->add_control('lien_facebook', [ + 'type' => 'url', + 'section' => 'liens_reseaux_sociaux', + 'label' => __('Profil Facebook'), + ]); - // Pinterest - $wp_customize->add_setting("lien_pinterest", [ - "type" => "theme_mod", - "capability" => "edit_theme_options", - ]); - $wp_customize->add_control("lien_pinterest", [ - "type" => "url", - "section" => "liens_reseaux_sociaux", - "label" => __("Profil Pinterest"), - ]); + // Pinterest + $wp_customize->add_setting('lien_pinterest', [ + 'type' => 'theme_mod', + 'capability' => 'edit_theme_options', + ]); + $wp_customize->add_control('lien_pinterest', [ + 'type' => 'url', + 'section' => 'liens_reseaux_sociaux', + 'label' => __('Profil Pinterest'), + ]); - // Section « Descriptions Produits » - $wp_customize->add_section("descriptions_produits", [ - "title" => __("Textes des descriptions Produits"), - "description" => __("Textes des descriptions apparaissant sur les pages Produit."), - ]); + // Section « Descriptions Produits » + $wp_customize->add_section('descriptions_produits', [ + 'title' => __('Textes des descriptions Produits'), + 'description' => __('Textes des descriptions apparaissant sur les pages Produit.'), + ]); - $wp_customize->add_setting("texte_conditions_livraison", [ - "capability" => "edit_theme_options", - "default" => "", - "sanitize_callback" => "wp_kses_post", - "transport" => "postMessage", - "type" => "theme_mod", - ]); - $wp_customize->add_control( - new Controle_Personnalise_TinyMCE($wp_customize, "texte_conditions_livraison", [ - "label" => __("Conditions de livraison"), - "description" => __("Descriptif des conditions de livraison."), - "section" => "descriptions_produits", - "input_attrs" => [ - "toolbar1" => "bold italic bullist numlist alignleft aligncenter alignright link", - "mediaButtons" => true, - ], - ]), - ); + $wp_customize->add_setting('texte_conditions_livraison', [ + 'capability' => 'edit_theme_options', + 'default' => '', + 'sanitize_callback' => 'wp_kses_post', + 'transport' => 'postMessage', + 'type' => 'theme_mod', + ]); + $wp_customize->add_control( + new Controle_Personnalise_TinyMCE($wp_customize, 'texte_conditions_livraison', [ + 'label' => __('Conditions de livraison'), + 'description' => __('Descriptif des conditions de livraison.'), + 'section' => 'descriptions_produits', + 'input_attrs' => [ + 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', + 'mediaButtons' => true, + ], + ]), + ); - $wp_customize->add_setting("texte_entretien_produit", [ - "capability" => "edit_theme_options", - "default" => "", - "sanitize_callback" => "wp_kses_post", - "transport" => "postMessage", - "type" => "theme_mod", - ]); - $wp_customize->add_control( - new Controle_Personnalise_TinyMCE($wp_customize, "texte_entretien_produit", [ - "label" => __("Entretien du Produit"), - "description" => __("Descriptif des bonnes pratiques pour l'entretien du Produit."), - "section" => "descriptions_produits", - "input_attrs" => [ - "toolbar1" => "bold italic bullist numlist alignleft aligncenter alignright link", - "mediaButtons" => true, - ], - ]), - ); + $wp_customize->add_setting('texte_entretien_produit', [ + 'capability' => 'edit_theme_options', + 'default' => '', + 'sanitize_callback' => 'wp_kses_post', + 'transport' => 'postMessage', + 'type' => 'theme_mod', + ]); + $wp_customize->add_control( + new Controle_Personnalise_TinyMCE($wp_customize, 'texte_entretien_produit', [ + 'label' => __('Entretien du Produit'), + 'description' => __("Descriptif des bonnes pratiques pour l'entretien du Produit."), + 'section' => 'descriptions_produits', + 'input_attrs' => [ + 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', + 'mediaButtons' => true, + ], + ]), + ); } -add_action("customize_register", "enregistre_personnalisations_theme"); +add_action('customize_register', 'enregistre_personnalisations_theme'); -function retire_tailles_image_par_defaut($sizes) { - $targets = ["full", "thumbnail"]; +function retire_tailles_image_par_defaut($sizes) +{ + $targets = ['full', 'thumbnail']; - foreach ($sizes as $size_index => $size) { - if (!in_array($size, $targets)) { - unset($sizes[$size_index]); + foreach ($sizes as $size_index => $size) { + if (!in_array($size, $targets)) { + unset($sizes[$size_index]); + } } - } - return $sizes; + return $sizes; } -add_filter("intermediate_image_sizes", "retire_tailles_image_par_defaut", 10, 1); -add_filter("big_image_size_threshold", "__return_false"); +add_filter('intermediate_image_sizes', 'retire_tailles_image_par_defaut', 10, 1); +add_filter('big_image_size_threshold', '__return_false'); // Désactive la mise à jour automatique des traductions -add_filter("async_update_translation", "__return_false"); -add_filter("auto_update_translation", "__return_false"); +add_filter('async_update_translation', '__return_false'); +add_filter('auto_update_translation', '__return_false'); // Block Patterns -add_action("after_setup_theme", function () { - remove_theme_support("core-block-patterns"); +add_action('after_setup_theme', function () { + remove_theme_support('core-block-patterns'); }); -add_filter("should_load_remote_block_patterns", "__return_false"); +add_filter('should_load_remote_block_patterns', '__return_false'); /** - * WooCommerce + * WooCommerce. */ // Charge Carbon Fields -function charge_carbon_fields(): void { - // Nécessaire pour que Carbon Fields trouve ses ressources - define("Carbon_Fields\URL", home_url("/vendor/htmlburger/carbon-fields")); - Carbon_Fields::boot(); +function charge_carbon_fields(): void +{ + // Nécessaire pour que Carbon Fields trouve ses ressources + define('Carbon_Fields\URL', home_url('/vendor/htmlburger/carbon-fields')); + Carbon_Fields::boot(); } -add_action("after_setup_theme", "charge_carbon_fields"); +add_action('after_setup_theme', 'charge_carbon_fields'); // Emails // add_filter("woocommerce_email_styles", "patricks_woocommerce_email_styles"); diff --git a/web/app/themes/haiku-atelier-2024/index.php b/web/app/themes/haiku-atelier-2024/index.php index f388f30b..d398f530 100755 --- a/web/app/themes/haiku-atelier-2024/index.php +++ b/web/app/themes/haiku-atelier-2024/index.php @@ -5,6 +5,6 @@ declare(strict_types=1); use Timber\Timber; $contexte = Timber::context(); -$modeles = ["base.twig"]; +$modeles = ['base.twig']; Timber::render($filenames = $modeles, $data = $contexte); diff --git a/web/app/themes/haiku-atelier-2024/page-about.php b/web/app/themes/haiku-atelier-2024/page-about.php index f98959c5..054d33a7 100755 --- a/web/app/themes/haiku-atelier-2024/page-about.php +++ b/web/app/themes/haiku-atelier-2024/page-about.php @@ -1,4 +1,5 @@ cart->get_subtotal(); -/** @var string|null $code_promo Le code promo appliqué au Panier s'il existe. */ + +/** @var null|string $code_promo Le code promo appliqué au Panier s'il existe. */ $code_promo = collect(WC()->cart->get_applied_coupons())->first(); + /** @var int $sous_total_reduction Le total du montant de la Réduction appliquée au Panier */ -$sous_total_reduction = Number::format(WC()->cart->get_totals()["discount_total"], maxPrecision: 2); +$sous_total_reduction = Number::format(WC()->cart->get_totals()['discount_total'], maxPrecision: 2); + /** @var float $total_panier Le total de la Commande dans le Panier. */ -$total_panier = Number::format(floatval(WC()->cart->get_totals()["total"]), maxPrecision: 2); +$total_panier = Number::format(floatval(WC()->cart->get_totals()['total']), maxPrecision: 2); foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) { - $panier[$cle_panier] = [ - "attributs" => - $article_panier["data"]?->get_type() == "variation" - ? recupere_et_formate_attributs_produit($article_panier["data"]?->get_attributes()) - : [], - "cle" => $cle_panier, - "id_produit" => $article_panier["product_id"], - "id_variation" => $article_panier["variation_id"], - "image" => pipe( - $article_panier["data"]?->get_image_id(), - fn($id) => genere_balise_img_multiformats(id: $id, lazy: true), - ), - "prix" => $article_panier["data"]?->get_price(), - "quantite" => $article_panier["quantity"], - "url" => $article_panier["data"]?->get_permalink(), - "titre" => $article_panier["data"]?->get_title(), - ]; + $panier[$cle_panier] = [ + 'attributs' => 'variation' == $article_panier['data']?->get_type() + ? recupere_et_formate_attributs_produit($article_panier['data']?->get_attributes()) + : [], + 'cle' => $cle_panier, + 'id_produit' => $article_panier['product_id'], + 'id_variation' => $article_panier['variation_id'], + 'image' => pipe( + $article_panier['data']?->get_image_id(), + fn ($id) => genere_balise_img_multiformats(id: $id, lazy: true), + ), + 'prix' => $article_panier['data']?->get_price(), + 'quantite' => $article_panier['quantity'], + 'url' => $article_panier['data']?->get_permalink(), + 'titre' => $article_panier['data']?->get_title(), + ]; } // Récupère les Adresses de l'Utilisateur $email = WC()->customer->get_billing_email(); $adresse_livraison = WC()->customer->get_shipping(); $adresse_facturation = WC()->customer->get_billing(); -$adresse_renseignee = $adresse_livraison["city"] != ""; +$adresse_renseignee = '' != $adresse_livraison['city']; $pays_livraison = collect(WC()->countries->get_countries()) - ->only($pays_acceptes) - ->toArray(); -$total_livraison = Number::format(floatval(WC()->cart->get_totals()["shipping_total"]), precision: 0); -$methodes_livraison = collect(WC()->session->get("shipping_for_package_0")["rates"]) - ->values() - ->map(function (WC_Shipping_Rate $methode) { - return [ - "id" => $methode->get_method_id(), - "prix" => Number::format(intval($methode->get_cost()), maxPrecision: 2), - "selectionnee" => collect(WC()->session->get("chosen_shipping_methods"))->first() == $methode->get_id(), - "titre" => $methode->get_label(), - ]; - }); + ->only($pays_acceptes) + ->toArray() +; +$total_livraison = Number::format(floatval(WC()->cart->get_totals()['shipping_total']), precision: 0); +$methodes_livraison = collect(WC()->session->get('shipping_for_package_0')['rates']) + ->values() + ->map(function (WC_Shipping_Rate $methode) { + return [ + 'id' => $methode->get_method_id(), + 'prix' => Number::format(intval($methode->get_cost()), maxPrecision: 2), + 'selectionnee' => collect(WC()->session->get('chosen_shipping_methods'))->first() == $methode->get_id(), + 'titre' => $methode->get_label(), + ]; + }) +; -$contexte["email"] = $email; -$contexte["adresse_livraison"] = $adresse_livraison; -$contexte["adresse_facturation"] = $adresse_facturation; -$contexte["adresse_renseignee"] = $adresse_renseignee; -$contexte["sous_total_panier"] = $sous_total_panier; -$contexte["code_promo"] = $code_promo; -$contexte["sous_total_reduction"] = $sous_total_reduction; -$contexte["total_panier"] = $total_panier; -$contexte["produits_panier"] = $panier; -$contexte["pays_livraison"] = $pays_livraison; -$contexte["sous_total_livraison"] = $total_livraison; -$contexte["methodes_livraison"] = $methodes_livraison; +$contexte['email'] = $email; +$contexte['adresse_livraison'] = $adresse_livraison; +$contexte['adresse_facturation'] = $adresse_facturation; +$contexte['adresse_renseignee'] = $adresse_renseignee; +$contexte['sous_total_panier'] = $sous_total_panier; +$contexte['code_promo'] = $code_promo; +$contexte['sous_total_reduction'] = $sous_total_reduction; +$contexte['total_panier'] = $total_panier; +$contexte['produits_panier'] = $panier; +$contexte['pays_livraison'] = $pays_livraison; +$contexte['sous_total_livraison'] = $total_livraison; +$contexte['methodes_livraison'] = $methodes_livraison; // echo "
";
 // print_r($adresse_livraison);
@@ -160,22 +167,23 @@ $contexte["methodes_livraison"] = $methodes_livraison;
 // echo "
"; // Charge les scripts et styles de la page -function charge_scripts_styles_page_panier(): void { - wp_enqueue_style( - handle: "haiku-atelier-2024-styles-page-panier", - src: get_template_directory_uri() . "/assets/css/pages/page-panier.css", - deps: [], - ver: filemtime(get_template_directory() . "/assets/css/pages/page-panier.css"), - media: "all", - ); - wp_enqueue_script_module( - id: "haiku-atelier-2024-scripts-page-panier", - src: get_template_directory_uri() . "/assets/js/scripts-page-panier.js", - deps: [], - version: filemtime(get_template_directory() . "/assets/js/scripts-page-panier.js"), - ); +function charge_scripts_styles_page_panier(): void +{ + wp_enqueue_style( + handle: 'haiku-atelier-2024-styles-page-panier', + src: get_template_directory_uri().'/assets/css/pages/page-panier.css', + deps: [], + ver: filemtime(get_template_directory().'/assets/css/pages/page-panier.css'), + media: 'all', + ); + wp_enqueue_script_module( + id: 'haiku-atelier-2024-scripts-page-panier', + src: get_template_directory_uri().'/assets/js/scripts-page-panier.js', + deps: [], + version: filemtime(get_template_directory().'/assets/js/scripts-page-panier.js'), + ); } -add_action("wp_enqueue_scripts", "charge_scripts_styles_page_panier"); +add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_panier'); // Rendu Timber::render(filenames: $modeles, data: $contexte); diff --git a/web/app/themes/haiku-atelier-2024/page-checkout.php b/web/app/themes/haiku-atelier-2024/page-checkout.php index 08c07ccb..f00fd0d7 100755 --- a/web/app/themes/haiku-atelier-2024/page-checkout.php +++ b/web/app/themes/haiku-atelier-2024/page-checkout.php @@ -1,6 +1,7 @@ session; + /** @var array $urls URLs utilisables pour rediriger l'Utilisateur. */ $urls = [ - "accueil" => get_page_link(get_page_by_path("home")), - "succes_commande" => get_page_link(get_page_by_path("successful-order")), - "echec_commande" => get_page_link(get_page_by_path("failed-order")), + 'accueil' => get_page_link(get_page_by_path('home')), + 'succes_commande' => get_page_link(get_page_by_path('successful-order')), + 'echec_commande' => get_page_link(get_page_by_path('failed-order')), ]; // Redirige à la page d'accueil si le Panier est vide if (WC()->cart->is_empty()) { - header("Location: " . $urls["accueil"]); - return; + header('Location: '.$urls['accueil']); + + return; } // Vérifie que les paramètres d'URLs nécessaires soient présents /** @var string $order_id */ -$order_id = $_GET["order_id"]; +$order_id = $_GET['order_id']; if (!$order_id) { - $reponse = ["succes" => false, "status" => "order_key is missing"]; - echo json_encode($reponse); - http_response_code(400); - return; + $reponse = ['succes' => false, 'status' => 'order_key is missing']; + echo json_encode($reponse); + http_response_code(400); + + return; } + /** @var string $order_key */ -$order_key = $_GET["order_key"]; +$order_key = $_GET['order_key']; if (!$order_key) { - $reponse = ["succes" => false, "status" => "order_key is missing"]; - echo json_encode($reponse); - http_response_code(400); - return; + $reponse = ['succes' => false, 'status' => 'order_key is missing']; + echo json_encode($reponse); + http_response_code(400); + + return; } // Récupère le Panier et l'Email du Client /** @var WC_Cart $panier */ $panier = WC()->cart; -/** @var string $email_client */ -$email_client = WC()->session->get("customer")["email"]; -/** @var array<\Stripe\Product> $articles */ -$articles = collect($panier->get_cart()) - ->map(function ($article_panier) { - $titre_produit = match ($article_panier["data"]?->get_type() == "variable") { - true => $article_panier["data"]?->get_title() . - " (" . - explode(": ", $article_panier["data"]?->get_attribute_summary())[1] . - ")", - false => $article_panier["data"]?->get_title(), - }; - return [ - "price_data" => [ - "currency" => "EUR", - "product_data" => [ - "name" => $titre_produit, - "images" => [wp_get_attachment_image_url($article_panier["data"]?->get_image_id())], - ], - "unit_amount" => $article_panier["data"]?->get_price() * 100, - ], - "quantity" => $article_panier["quantity"], - ]; - }) - ->values() - ->toArray(); +/** @var string $email_client */ +$email_client = WC()->session->get('customer')['email']; + +/** @var array $articles */ +$articles = collect($panier->get_cart()) + ->map(function ($article_panier) { + $titre_produit = match ('variable' == $article_panier['data']?->get_type()) { + true => $article_panier['data']?->get_title() + .' (' + .explode(': ', $article_panier['data']?->get_attribute_summary())[1] + .')', + false => $article_panier['data']?->get_title(), + }; + + return [ + 'price_data' => [ + 'currency' => 'EUR', + 'product_data' => [ + 'name' => $titre_produit, + 'images' => [wp_get_attachment_image_url($article_panier['data']?->get_image_id())], + ], + 'unit_amount' => $article_panier['data']?->get_price() * 100, + ], + 'quantity' => $article_panier['quantity'], + ]; + }) + ->values() + ->toArray() +; // Récupère la Commande et la Méthode de Livraison /** @var WC_Order $commande */ $commande = wc_get_order($order_id); + /** @var mixed $methode_livraison */ $methode_livraison = [ - "nom" => $commande->get_shipping_method(), - "cout" => $commande->get_shipping_total() * 100, + 'nom' => $commande->get_shipping_method(), + 'cout' => $commande->get_shipping_total() * 100, ]; // Sélectionne la clé API Stripe -\Stripe\Stripe::setApiKey(Config::get("STRIPE_API_SECRET")); +Stripe::setApiKey(Config::get('STRIPE_API_SECRET')); // Met à jour les Codes promos -$coupons_stripe = collect(\Stripe\Coupon::all()->data); +$coupons_stripe = collect(Coupon::all()->data); $coupons_wc = collect(WC()->cart->get_coupons()) - ->map( - fn(WC_Coupon $coupon) => [ - "duration" => "forever", - "id" => $coupon->get_code(), - "name" => $coupon->get_code(), - $coupon->get_discount_type() == "fixed_cart" ? "amount_off" : "percent_off" => $coupon->get_amount(), - ], - ) - ->each(function (array $item) use ($coupons_stripe) { - // Si le code promo n'existe, le créer - if (!$coupons_stripe->contains("name", $item["name"])) { - \Stripe\Coupon::create($item); - } - }); -$reductions_stripe = $coupons_wc->map(fn($coupon) => ["coupon" => $coupon["name"]])->values()->toArray(); + ->map( + fn (WC_Coupon $coupon) => [ + 'duration' => 'forever', + 'id' => $coupon->get_code(), + 'name' => $coupon->get_code(), + 'fixed_cart' == $coupon->get_discount_type() ? 'amount_off' : 'percent_off' => $coupon->get_amount(), + ], + ) + ->each(function (array $item) use ($coupons_stripe) { + // Si le code promo n'existe, le créer + if (!$coupons_stripe->contains('name', $item['name'])) { + Coupon::create($item); + } + }) +; +$reductions_stripe = $coupons_wc->map(fn ($coupon) => ['coupon' => $coupon['name']])->values()->toArray(); + /** @var Session $session_checkout_stripe */ $session_checkout_stripe = \Stripe\Checkout\Session::create( - [ - "cancel_url" => $urls["echec_commande"], - "customer_email" => $email_client, - "discounts" => $reductions_stripe, - "line_items" => $articles, - "mode" => "payment", - "success_url" => $urls["succes_commande"] . "?session_id={CHECKOUT_SESSION_ID}", - "metadata" => [ - "order_id" => $order_id, - "order_key" => $order_key, - ], - "shipping_options" => [ - [ - "shipping_rate_data" => [ - "display_name" => $methode_livraison["nom"], - "fixed_amount" => [ - "amount" => $methode_livraison["cout"], - "currency" => "EUR", - ], - "tax_behavior" => "inclusive", - "type" => "fixed_amount", + [ + 'cancel_url' => $urls['echec_commande'], + 'customer_email' => $email_client, + 'discounts' => $reductions_stripe, + 'line_items' => $articles, + 'mode' => 'payment', + 'success_url' => $urls['succes_commande'].'?session_id={CHECKOUT_SESSION_ID}', + 'metadata' => [ + 'order_id' => $order_id, + 'order_key' => $order_key, + ], + 'shipping_options' => [ + [ + 'shipping_rate_data' => [ + 'display_name' => $methode_livraison['nom'], + 'fixed_amount' => [ + 'amount' => $methode_livraison['cout'], + 'currency' => 'EUR', + ], + 'tax_behavior' => 'inclusive', + 'type' => 'fixed_amount', + ], + ], ], - ], ], - ], - [ - "idempotency_key" => Uuid::uuid4(), - ], + [ + 'idempotency_key' => Uuid::uuid4(), + ], ); // echo json_encode($session_checkout_stripe); -header("HTTP/1.1 303 See Other"); -header("Location: " . $session_checkout_stripe->url); +header('HTTP/1.1 303 See Other'); +header('Location: '.$session_checkout_stripe->url); -exit(); +exit; diff --git a/web/app/themes/haiku-atelier-2024/page-contact.php b/web/app/themes/haiku-atelier-2024/page-contact.php index d9dae21c..329aa3b7 100755 --- a/web/app/themes/haiku-atelier-2024/page-contact.php +++ b/web/app/themes/haiku-atelier-2024/page-contact.php @@ -1,4 +1,5 @@ ID); +$url_accueil = get_page_link(get_page_by_path('home')->ID); /** @var string $session_id L'ID de la Session Stripe liée à la Commande. */ -$session_id = $_GET["session_id"]; +$session_id = $_GET['session_id']; // Redirige à l'Accueil si le paramètre d'ID de Session Stripe n'est pas présent avec un code HTTP 301 if (!$session_id) { - header("Location: $url_accueil"); - return; + header("Location: {$url_accueil}"); + + return; } // Instancie un Client Stripe -/** @var StripeClient $client_stripe Un Client Stripe pour récupérer les informations des Commande et Transaction .*/ -$client_stripe = new StripeClient(Config::get("STRIPE_API_SECRET")); +/** @var StripeClient $client_stripe Un Client Stripe pour récupérer les informations des Commande et Transaction . */ +$client_stripe = new StripeClient(Config::get('STRIPE_API_SECRET')); try { - /** @var Session $session_stripe La Session Stripe pour la Commande. */ - $session_stripe = $client_stripe->checkout->sessions->retrieve($session_id); - /** @var string $order_id L'ID de la Commande WooCommerce passée en métadonnée à la Session. */ - $order_id = $session_stripe->metadata["order_id"]; + /** @var Session $session_stripe La Session Stripe pour la Commande. */ + $session_stripe = $client_stripe->checkout->sessions->retrieve($session_id); - /** @var WC_Order|WC_Order_Refund|bool $commande La Commande WooCommerce liée à la Session Stripe, `false` si inexistante. */ - $commande = wc_get_order("$order_id"); - /** @var WC_Cart $panier **/ - $panier = WC()->cart; + /** @var string $order_id L'ID de la Commande WooCommerce passée en métadonnée à la Session. */ + $order_id = $session_stripe->metadata['order_id']; - if ($commande == false) { - throw new Error("La commande $order_id n'existe pas."); - } + /** @var bool|WC_Order|WC_Order_Refund $commande La Commande WooCommerce liée à la Session Stripe, `false` si inexistante. */ + $commande = wc_get_order("{$order_id}"); - // Passe la Commande en état "Payé" et réinitialise le Panier - if ($commande->get_status() === "pending") { - $commande->payment_complete($session_id); - // $commande->set_payment_method_title("Stripe - Carte bancaire"); - $commande->set_transaction_id($session_id); + /** @var WC_Cart $panier */ + $panier = WC()->cart; - $panier->empty_cart(); - } + if (false == $commande) { + throw new Error("La commande {$order_id} n'existe pas."); + } - // Contexte et modèles - $contexte = Timber::context(); - $modeles = ["succes-commande.twig"]; + // Passe la Commande en état "Payé" et réinitialise le Panier + if ('pending' === $commande->get_status()) { + $commande->payment_complete($session_id); + // $commande->set_payment_method_title("Stripe - Carte bancaire"); + $commande->set_transaction_id($session_id); - // Récupère les données des Produits - /** @var mixed $produits Les Produits de la Commande sous forme de tableau contenant uniquement les données affichées nécessaires pour le Page. */ - $produits = collect($commande->get_items())->map(function (WC_Order_Item $produit_commande) use ($commande) { - /** @var string $id_produit L'ID du Produit. */ - $id_produit = $produit_commande["product_id"]; - /** @var WC_Product|WC_Product_Variable|false $produit Les informations du Produit. */ - $produit = wc_get_product($produit_commande["product_id"]); + $panier->empty_cart(); + } - // Récupère le nom et la valeur de l'attribut du Produit - $attribut = $produit->is_type("variable") - ? collect($produit->get_attributes()) - ->mapWithKeys(function ($atr, $cle) use ($produit_commande) { - $nom_attribut = wc_attribute_label($cle, $produit_commande->get_product()); - $valeur_attribut = $produit_commande->get_product()->get_attribute($cle); - return [["nom" => $nom_attribut, "valeur" => $valeur_attribut]]; - }) - ->toArray() - : []; + // Contexte et modèles + $contexte = Timber::context(); + $modeles = ['succes-commande.twig']; - return [ - "attribut" => $attribut, - "id_produit" => $id_produit, - "image" => pipe($produit->get_image_id(), fn($id) => genere_balise_img_multiformats(id: $id, lazy: true)), - "permalien" => $produit->get_permalink(), - "prix" => $produit_commande->get_data()["total"], - "quantite" => $produit_commande->get_quantity(), - "titre" => $produit->get_title(), - ]; - }); + // Récupère les données des Produits + /** @var mixed $produits Les Produits de la Commande sous forme de tableau contenant uniquement les données affichées nécessaires pour le Page. */ + $produits = collect($commande->get_items())->map(function (WC_Order_Item $produit_commande) { + /** @var string $id_produit L'ID du Produit. */ + $id_produit = $produit_commande['product_id']; - $contexte["produits"] = $produits; + /** @var false|WC_Product|WC_Product_Variable $produit Les informations du Produit. */ + $produit = wc_get_product($produit_commande['product_id']); - // Charge les scripts et styles de la page - function charge_scripts_styles_page_succes_commande(): void { - wp_enqueue_style( - handle: "haiku-atelier-2024-styles-page-succes-commande", - src: get_template_directory_uri() . "/assets/css/pages/page-succes-commande.css", - deps: [], - ver: filemtime(get_template_directory() . "/assets/css/pages/page-succes-commande.css"), - media: "all", - ); - } - add_action("wp_enqueue_scripts", "charge_scripts_styles_page_succes_commande"); + // Récupère le nom et la valeur de l'attribut du Produit + $attribut = $produit->is_type('variable') + ? collect($produit->get_attributes()) + ->mapWithKeys(function ($atr, $cle) use ($produit_commande) { + $nom_attribut = wc_attribute_label($cle, $produit_commande->get_product()); + $valeur_attribut = $produit_commande->get_product()->get_attribute($cle); - // Rendu - Timber::render(filenames: $modeles, data: $contexte); + return [['nom' => $nom_attribut, 'valeur' => $valeur_attribut]]; + }) + ->toArray() + : []; + + return [ + 'attribut' => $attribut, + 'id_produit' => $id_produit, + 'image' => pipe($produit->get_image_id(), fn ($id) => genere_balise_img_multiformats(id: $id, lazy: true)), + 'permalien' => $produit->get_permalink(), + 'prix' => $produit_commande->get_data()['total'], + 'quantite' => $produit_commande->get_quantity(), + 'titre' => $produit->get_title(), + ]; + }); + + $contexte['produits'] = $produits; + + // Charge les scripts et styles de la page + function charge_scripts_styles_page_succes_commande(): void + { + wp_enqueue_style( + handle: 'haiku-atelier-2024-styles-page-succes-commande', + src: get_template_directory_uri().'/assets/css/pages/page-succes-commande.css', + deps: [], + ver: filemtime(get_template_directory().'/assets/css/pages/page-succes-commande.css'), + media: 'all', + ); + } + add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_succes_commande'); + + // Rendu + Timber::render(filenames: $modeles, data: $contexte); } catch (Error $e) { - http_response_code(500); - echo json_encode(["error" => $e->getMessage()]); + http_response_code(500); + echo json_encode(['error' => $e->getMessage()]); } diff --git a/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php b/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php index 14d5e5c2..81c2b938 100755 --- a/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php +++ b/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php @@ -1,4 +1,5 @@ get_type() == "variable"; +$est_produit_variable = 'variable' == $produit->get_type(); + /** @var InformationsVariation[] $variations_produit Un tableau des informations d'affichage de chaque Variation du Produit */ $variations_produit = pipe( - // Récupère les IDs des Enfants (Variations) - wc_get_product()->get_children(), - // Récupère les Variations - fn($enfants) => array_map(callback: fn($id) => wc_get_product($id), array: $enfants), - // Ne conserve que les Informations souhaitées - fn($variations) => array_map( - callback: function ($variation) { - return [ - "id" => $variation->get_id(), - // Ne récupère que le titre de l'Attribut unique de la Variation - "titre" => match (true) { - $variation->get_attribute("pa_side") !== "" => $variation->get_attribute("pa_side"), - $variation->get_attribute("pa_stone") !== "" => $variation->get_attribute("pa_stone"), - $variation->get_attribute("pa_size") !== "" => $variation->get_attribute("pa_size"), - default => "", + // Récupère les IDs des Enfants (Variations) + wc_get_product()->get_children(), + // Récupère les Variations + fn ($enfants) => array_map(callback: fn ($id) => wc_get_product($id), array: $enfants), + // Ne conserve que les Informations souhaitées + fn ($variations) => array_map( + callback: function ($variation) { + return [ + 'id' => $variation->get_id(), + // Ne récupère que le titre de l'Attribut unique de la Variation + 'titre' => match (true) { + '' !== $variation->get_attribute('pa_side') => $variation->get_attribute('pa_side'), + '' !== $variation->get_attribute('pa_stone') => $variation->get_attribute('pa_stone'), + '' !== $variation->get_attribute('pa_size') => $variation->get_attribute('pa_size'), + default => '', + }, + 'prix' => $variation->get_price(), + ]; }, - "prix" => $variation->get_price(), - ]; - }, - array: $variations, - ), + array: $variations, + ), ); + /** @var int $prix_maximal Le prix de la Variation la plus chère */ -$prix_maximal = collect($variations_produit)->max("prix"); +$prix_maximal = collect($variations_produit)->max('prix'); $produits_meme_collection = array_map( - callback: "recupere_informations_produit_page_produit", - array: recupere_produits_meme_collection($donnees_produit["collection"])($donnees_produit["id"]), + callback: 'recupere_informations_produit_page_produit', + array: recupere_produits_meme_collection($donnees_produit['collection'])($donnees_produit['id']), ); // Déboguage en cas d'images fantômes @@ -60,29 +66,30 @@ $produits_meme_collection = array_map( // print_r($variations_produit); // echo ""; -$contexte["produit"] = $donnees_produit; -$contexte["prix_maximal"] = $prix_maximal; -$contexte["variations_produit"] = $variations_produit; -$contexte["produits_meme_collection"] = $produits_meme_collection; +$contexte['produit'] = $donnees_produit; +$contexte['prix_maximal'] = $prix_maximal; +$contexte['variations_produit'] = $variations_produit; +$contexte['produits_meme_collection'] = $produits_meme_collection; /** * Charge les Scripts nécessaires pour la page Produit. */ -function charge_scripts_page_produit(): void { - wp_enqueue_script_module( - id: "haiku-atelier-2024-scripts-page-produit", - src: get_template_directory_uri() . "/assets/js/scripts-page-produit.js", - deps: [], - version: filemtime(get_template_directory() . "/assets/js/scripts-page-produit.js"), - ); - wp_enqueue_script_module( - id: "haiku-atelier-2024-scripts-menu-categories", - src: get_template_directory_uri() . "/assets/js/scripts-menu-categories.js", - deps: [], - version: filemtime(get_template_directory() . "/assets/js/scripts-menu-categories.js"), - ); +function charge_scripts_page_produit(): void +{ + wp_enqueue_script_module( + id: 'haiku-atelier-2024-scripts-page-produit', + src: get_template_directory_uri().'/assets/js/scripts-page-produit.js', + deps: [], + version: filemtime(get_template_directory().'/assets/js/scripts-page-produit.js'), + ); + wp_enqueue_script_module( + id: 'haiku-atelier-2024-scripts-menu-categories', + src: get_template_directory_uri().'/assets/js/scripts-menu-categories.js', + deps: [], + version: filemtime(get_template_directory().'/assets/js/scripts-menu-categories.js'), + ); } -add_action("wp_enqueue_scripts", "charge_scripts_page_produit"); +add_action('wp_enqueue_scripts', 'charge_scripts_page_produit'); // Rendu Timber::render(filenames: $modeles, data: $contexte); diff --git a/web/app/themes/haiku-atelier-2024/src/StarterSite.php b/web/app/themes/haiku-atelier-2024/src/StarterSite.php index ad40ebee..9b00257a 100755 --- a/web/app/themes/haiku-atelier-2024/src/StarterSite.php +++ b/web/app/themes/haiku-atelier-2024/src/StarterSite.php @@ -7,170 +7,175 @@ namespace HaikuAtelier; use Roots\WPConfig\Config; use Timber\Site; use Timber\URLHelper; + use function Crell\fp\pipe; use function Env\env; -class StarterSite extends Site { - public function __construct() { - add_action("after_setup_theme", [$this, "defini_fonctionnalites_theme"]); - add_action("after_setup_theme", [$this, "charge_traductions_theme"]); +class StarterSite extends Site +{ + public function __construct() + { + add_action('after_setup_theme', [$this, 'defini_fonctionnalites_theme']); + add_action('after_setup_theme', [$this, 'charge_traductions_theme']); - add_action("timber/context", [$this, "ajoute_au_contexte_twig"]); - add_action("timber/twig/environment/options", [$this, "maj_environnement_twig"]); + add_action('timber/context', [$this, 'ajoute_au_contexte_twig']); + add_action('timber/twig/environment/options', [$this, 'maj_environnement_twig']); - parent::__construct(); - } + parent::__construct(); + } - /** - * @param array $context - * @return array - */ - public function ajoute_au_contexte_twig(array $context): array { - $context["site"] = $this; + /** + * @param array $context + * + * @return array + */ + public function ajoute_au_contexte_twig(array $context): array + { + $context['site'] = $this; - $context["environnement"] = env("WP_ENV"); + $context['environnement'] = env('WP_ENV'); - // Récupère les liens des réseaux sociaux définis dans la personnalisation du thème - $personnalisations_theme = get_theme_mods(); - $liens_reseaux_sociaux = [ - "facebook" => [ - "nom" => "Facebook", - "url" => $personnalisations_theme["lien_facebook"] ?? "", - ], - "instagram" => [ - "nom" => "Instagram", - "url" => $personnalisations_theme["lien_instagram"] ?? "", - ], - "pinterest" => [ - "nom" => "Pinterest", - "url" => $personnalisations_theme["lien_pinterest"] ?? "", - ], - ]; - $context["liens_reseaux_sociaux"] = $liens_reseaux_sociaux; + // Récupère les liens des réseaux sociaux définis dans la personnalisation du thème + $personnalisations_theme = get_theme_mods(); + $liens_reseaux_sociaux = [ + 'facebook' => [ + 'nom' => 'Facebook', + 'url' => $personnalisations_theme['lien_facebook'] ?? '', + ], + 'instagram' => [ + 'nom' => 'Instagram', + 'url' => $personnalisations_theme['lien_instagram'] ?? '', + ], + 'pinterest' => [ + 'nom' => 'Pinterest', + 'url' => $personnalisations_theme['lien_pinterest'] ?? '', + ], + ]; + $context['liens_reseaux_sociaux'] = $liens_reseaux_sociaux; - // Récupère les textes apparaissant sur les pages Produits - $descriptions_produits = [ - "texte_conditions_livraison" => wpautop($personnalisations_theme["texte_conditions_livraison"]) ?? "", - "texte_entretien_produit" => wpautop($personnalisations_theme["texte_entretien_produit"]) ?? "", - ]; - $context["descriptions_produits"] = $descriptions_produits; + // Récupère les textes apparaissant sur les pages Produits + $descriptions_produits = [ + 'texte_conditions_livraison' => wpautop($personnalisations_theme['texte_conditions_livraison']) ?? '', + 'texte_entretien_produit' => wpautop($personnalisations_theme['texte_entretien_produit']) ?? '', + ]; + $context['descriptions_produits'] = $descriptions_produits; - // Logo personnalisée - $context["logo"] = pipe( - get_theme_mod("custom_logo"), - fn($id) => wp_get_attachment_image_src(attachment_id: $id, size: "full"), - ); + // Logo personnalisée + $context['logo'] = pipe( + get_theme_mod('custom_logo'), + fn ($id) => wp_get_attachment_image_src(attachment_id: $id, size: 'full'), + ); - // Informations des Pages - $recupere_informations_page = function ($slug) { - $page = get_page_by_path($slug); + // Informations des Pages + $recupere_informations_page = function ($slug) { + $page = get_page_by_path($slug); - return (object) [ - "nom" => $page->post_title ?? "", - "lien" => get_page_link($page?->ID), - ]; - }; + return (object) [ + 'nom' => $page->post_title ?? '', + 'lien' => get_page_link($page?->ID), + ]; + }; - // Pages spécifiques - $context["pages"] = (object) [ - "about" => $recupere_informations_page("about"), - "account" => $recupere_informations_page("account"), - "cart" => $recupere_informations_page("cart"), - "checkout" => $recupere_informations_page("checkout"), - "contact" => $recupere_informations_page("contact"), - "failed_order" => $recupere_informations_page("failed_order"), - "home" => $recupere_informations_page("home"), - "shop" => $recupere_informations_page("shop"), - "successful_order" => $recupere_informations_page("successful_order"), - ]; + // Pages spécifiques + $context['pages'] = (object) [ + 'about' => $recupere_informations_page('about'), + 'account' => $recupere_informations_page('account'), + 'cart' => $recupere_informations_page('cart'), + 'checkout' => $recupere_informations_page('checkout'), + 'contact' => $recupere_informations_page('contact'), + 'failed_order' => $recupere_informations_page('failed_order'), + 'home' => $recupere_informations_page('home'), + 'shop' => $recupere_informations_page('shop'), + 'successful_order' => $recupere_informations_page('successful_order'), + ]; - // Récupère la Page courante - $url_courante = URLHelper::get_current_url(); - $context["page_courante"] = $url_courante; - $context["est_page_tous_produits"] = preg_match(pattern: "/(\bshop\b)/", subject: $url_courante); - $context["est_page_boutique"] = - preg_match(pattern: "/(\bshop\b)/", subject: $url_courante) || - preg_match(pattern: "/(\bproduct\b)/", subject: $url_courante) || - preg_match(pattern: "/(\bproduct-category\b)/", subject: $url_courante); + // Récupère la Page courante + $url_courante = URLHelper::get_current_url(); + $context['page_courante'] = $url_courante; + $context['est_page_tous_produits'] = preg_match(pattern: '/(\bshop\b)/', subject: $url_courante); + $context['est_page_boutique'] + = preg_match(pattern: '/(\bshop\b)/', subject: $url_courante) + || preg_match(pattern: '/(\bproduct\b)/', subject: $url_courante) + || preg_match(pattern: '/(\bproduct-category\b)/', subject: $url_courante); - // Politique de confidentialité - $politique_confidentialite_lien = pipe(get_privacy_policy_url(), fn($url) => esc_url($url)); - $context["lien_politique_confidentialite"] = $politique_confidentialite_lien; + // Politique de confidentialité + $politique_confidentialite_lien = pipe(get_privacy_policy_url(), fn ($url) => esc_url($url)); + $context['lien_politique_confidentialite'] = $politique_confidentialite_lien; - // Chemin de base pour une Catégorie de Produit (p. ex. /product-category/) - $context["base_categorie_produit"] = get_option("woocommerce_permalinks")["category_base"] ?? ""; + // Chemin de base pour une Catégorie de Produit (p. ex. /product-category/) + $context['base_categorie_produit'] = get_option('woocommerce_permalinks')['category_base'] ?? ''; - /* Récupère les Catégories de Produits */ - $cree_entree_menu = fn($categorie) => [ - "nom" => $categorie->name, - "slug" => $categorie->slug, - // Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits - "courante" => preg_match( - pattern: "/(\b$categorie->slug\b)/", - subject: pipe(URLHelper::get_current_url(), fn($url) => URLHelper::get_rel_url($url)), - ), - ]; - $entrees_menu_categories = pipe( - get_categories([ - "hide_empty" => false, - "orderby" => "menu_order", - "taxonomy" => "product_cat", - ]), - fn($categories) => array_map(callback: $cree_entree_menu, array: $categories), - ); + // Récupère les Catégories de Produits + $cree_entree_menu = fn ($categorie) => [ + 'nom' => $categorie->name, + 'slug' => $categorie->slug, + // Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits + 'courante' => preg_match( + pattern: "/(\\b{$categorie->slug}\\b)/", + subject: pipe(URLHelper::get_current_url(), fn ($url) => URLHelper::get_rel_url($url)), + ), + ]; + $entrees_menu_categories = pipe( + get_categories([ + 'hide_empty' => false, + 'orderby' => 'menu_order', + 'taxonomy' => 'product_cat', + ]), + fn ($categories) => array_map(callback: $cree_entree_menu, array: $categories), + ); - $context["categories_produits"] = $entrees_menu_categories; + $context['categories_produits'] = $entrees_menu_categories; - // Récupère le Panier de l'Utilisateur - $panier = WC()?->cart?->get_cart(); - $quantite_articles = WC()?->cart?->get_cart_contents_count(); - $articles_presents = $quantite_articles > 0 ? "true" : "false"; + // Récupère le Panier de l'Utilisateur + $panier = WC()?->cart?->get_cart(); + $quantite_articles = WC()?->cart?->get_cart_contents_count(); + $articles_presents = $quantite_articles > 0 ? 'true' : 'false'; - $context["panier"] = $panier; - $context["quantite_articles"] = $quantite_articles; - $context["articles_presents"] = $articles_presents; + $context['panier'] = $panier; + $context['quantite_articles'] = $quantite_articles; + $context['articles_presents'] = $articles_presents; - // Nonce WooCommerce pour l'API Rest - $nonce_wc = wp_create_nonce("wc_store_api"); - $context["nonce_wc"] = $nonce_wc; - // TODO: Utiliser des variables d'environnement - $auth_string = base64_encode( - Config::get("WOOCOMMERCE_API_CONSUMER_KEY") . ":" . Config::get("WOOCOMMERCE_API_CONSUMER_SECRET"), - ); - $context["auth_string"] = $auth_string; + // Nonce WooCommerce pour l'API Rest + $nonce_wc = wp_create_nonce('wc_store_api'); + $context['nonce_wc'] = $nonce_wc; + // TODO: Utiliser des variables d'environnement + $auth_string = base64_encode( + Config::get('WOOCOMMERCE_API_CONSUMER_KEY').':'.Config::get('WOOCOMMERCE_API_CONSUMER_SECRET'), + ); + $context['auth_string'] = $auth_string; - return $context; - } + return $context; + } - public function defini_fonctionnalites_theme(): void { - // Laisse WordPress gérer le titre de la page - add_theme_support("title-tag"); + public function defini_fonctionnalites_theme(): void + { + // Laisse WordPress gérer le titre de la page + add_theme_support('title-tag'); - // Ajoute les Miniatures aux Posts et Pages - add_theme_support("post-thumbnails"); + // Ajoute les Miniatures aux Posts et Pages + add_theme_support('post-thumbnails'); - // Utilise des éléments sémantiques HTML5 pour ces éléments générés par WordPress - add_theme_support("html5", ["comment-list", "comment-form", "search-form", "gallery", "caption"]); + // Utilise des éléments sémantiques HTML5 pour ces éléments générés par WordPress + add_theme_support('html5', ['comment-list', 'comment-form', 'search-form', 'gallery', 'caption']); - // Ajoute la possibilité d'un Logo personnalisé - add_theme_support("custom-logo"); + // Ajoute la possibilité d'un Logo personnalisé + add_theme_support('custom-logo'); - // Ajoute la prise en charge de WooCommerce - add_theme_support("woocommerce"); - } + // Ajoute la prise en charge de WooCommerce + add_theme_support('woocommerce'); + } - /** - * Met à jour l'environnement de Twig. - * - * @param array $options Un tableau avec les options d'environnement. - * - * @return array - */ - public function maj_environnement_twig(array $options): array { - return $options; - } + /** + * Met à jour l'environnement de Twig. + * + * @param array $options un tableau avec les options d'environnement + */ + public function maj_environnement_twig(array $options): array + { + return $options; + } - // public function charge_traductions_theme(): void { - // load_theme_textdomain("haiku-atelier-2024", get_template_directory() . "/languages"); - // } + // public function charge_traductions_theme(): void { + // load_theme_textdomain("haiku-atelier-2024", get_template_directory() . "/languages"); + // } } diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/README.md b/web/app/themes/haiku-atelier-2024/src/gleam/README.md deleted file mode 100644 index 48c4c260..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# haiku_gleam - -[![Package Version](https://img.shields.io/hexpm/v/haiku_gleam)](https://hex.pm/packages/haiku_gleam) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/haiku_gleam/) - -```sh -gleam add haiku_gleam@1 -``` - -```gleam -import haiku_gleam - -pub fn main() -> Nil { - // TODO: An example of the project in use -} -``` - -Further documentation can be found at . - -## Development - -```sh -gleam run # Run the project -gleam test # Run the tests -``` diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/gleam.toml b/web/app/themes/haiku-atelier-2024/src/gleam/gleam.toml deleted file mode 100644 index efd5f7ef..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/gleam.toml +++ /dev/null @@ -1,11 +0,0 @@ -name = "haiku_gleam" -target = "javascript" -version = "0.0.1" - -[dependencies] -gleam_javascript = ">= 1.0.0 and < 2.0.0" -gleam_stdlib = ">= 0.44.0 and < 2.0.0" -plinth = ">= 0.6.1 and < 1.0.0" - -[dev-dependencies] -gleeunit = ">= 1.0.0 and < 2.0.0" diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/manifest.toml b/web/app/themes/haiku-atelier-2024/src/gleam/manifest.toml deleted file mode 100644 index 0462f043..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/manifest.toml +++ /dev/null @@ -1,16 +0,0 @@ -# This file was generated by Gleam -# You typically do not need to edit this file - -packages = [ - { name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" }, - { name = "gleam_json", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "5BA154440B22D9800955B1AB854282FA37B97F30F409D76B0824D0A60C934188" }, - { name = "gleam_stdlib", version = "0.60.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "621D600BB134BC239CB2537630899817B1A42E60A1D46C5E9F3FAE39F88C800B" }, - { name = "gleeunit", version = "1.5.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D33B7736CF0766ED3065F64A1EBB351E72B2E8DE39BAFC8ADA0E35E92A6A934F" }, - { name = "plinth", version = "0.6.1", build_tools = ["gleam"], requirements = ["gleam_javascript", "gleam_json", "gleam_stdlib"], otp_app = "plinth", source = "hex", outer_checksum = "02D6421A27795CDC5C3A452240E21D5D3CB8217219020BB247917132E36CC8F1" }, -] - -[requirements] -gleam_javascript = { version = ">= 1.0.0 and < 2.0.0" } -gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" } -gleeunit = { version = ">= 1.0.0 and < 2.0.0" } -plinth = { version = ">= 0.6.1 and < 1.0.0" } diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/src/haiku_gleam.gleam b/web/app/themes/haiku-atelier-2024/src/gleam/src/haiku_gleam.gleam deleted file mode 100644 index 5e1d9fb3..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/src/haiku_gleam.gleam +++ /dev/null @@ -1,5 +0,0 @@ -import gleam/io - -pub fn main() -> Nil { - io.println("Hello from haiku_gleam!") -} diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/src/intersection_observer.ffi.mjs b/web/app/themes/haiku-atelier-2024/src/gleam/src/intersection_observer.ffi.mjs deleted file mode 100644 index 3cbf44bf..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/src/intersection_observer.ffi.mjs +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @param {IntersectionObserverInit} options - * @param {IntersectionObserverCallback} callback - * @returns {IntersectionObserver} - */ -export const new_intersection_observer = (options, callback) => { - return new IntersectionObserver(callback, options); -}; - -/** - * @param {IntersectionObserver} observer - * @param {Element} element - */ -export const observe_element = (observer, element) => { - observer.observe(element); -}; diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/src/intersection_observer.gleam b/web/app/themes/haiku-atelier-2024/src/gleam/src/intersection_observer.gleam deleted file mode 100644 index 7b3a275e..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/src/intersection_observer.gleam +++ /dev/null @@ -1,22 +0,0 @@ -import gleam/option.{type Option} -import plinth/browser/document -import plinth/browser/element - -pub type IntersectionObserver - -pub type ObservableElement { - Element(element.Element) - Document(document.Document) -} - -pub type Threshold { - Threshold(values: List(Int)) -} - -pub type IntersectionObserverOptions { - IntersectionObserverOptions( - root: ObservableElement, - root_margin: Option(String), - threshold: Threshold, - ) -} diff --git a/web/app/themes/haiku-atelier-2024/src/gleam/test/haiku_gleam_test.gleam b/web/app/themes/haiku-atelier-2024/src/gleam/test/haiku_gleam_test.gleam deleted file mode 100644 index fba3c887..00000000 --- a/web/app/themes/haiku-atelier-2024/src/gleam/test/haiku_gleam_test.gleam +++ /dev/null @@ -1,13 +0,0 @@ -import gleeunit - -pub fn main() -> Nil { - gleeunit.main() -} - -// gleeunit test functions end in `_test` -pub fn hello_world_test() { - let name = "Joe" - let greeting = "Hello, " <> name <> "!" - - assert greeting == "Hello, Joe!" -} diff --git a/web/app/themes/haiku-atelier-2024/src/inc/APIRest.php b/web/app/themes/haiku-atelier-2024/src/inc/APIRest.php index 7987df67..e69de29b 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/APIRest.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/APIRest.php @@ -1,4 +0,0 @@ -where("post_type", "=", "product") - ->add_fields([ - /* Galerie des photos Produit */ - Field::make("media_gallery", "photos_colonne_gauche", __("Left Column Photos")) - ->set_type(["image"]) - ->set_duplicates_allowed(false), - /* Galerie des photos portées */ - Field::make("media_gallery", "photos_colonne_droite", __("Right Column Photos")) - ->set_type(["image"]) - ->set_duplicates_allowed(false), - /* Texte des détails du Produit */ - Field::make("rich_text", "haiku_details_produit", __("Product's Details")), +function cree_champs_personnalises_produit(): void +{ + Container::make('post_meta', "Product's Details") + ->where('post_type', '=', 'product') + ->add_fields([ + // Galerie des photos Produit + Field::make('media_gallery', 'photos_colonne_gauche', __('Left Column Photos')) + ->set_type(['image']) + ->set_duplicates_allowed(false), + // Galerie des photos portées + Field::make('media_gallery', 'photos_colonne_droite', __('Right Column Photos')) + ->set_type(['image']) + ->set_duplicates_allowed(false), + // Texte des détails du Produit + Field::make('rich_text', 'haiku_details_produit', __("Product's Details")), + ]) + ; +} + +function cree_champ_personnalise_commande($order): void +{ + woocommerce_wp_text_input([ + 'id' => 'tracking_number', + 'label' => 'Tracking Number:', + 'value' => $order->get_meta('tracking_number'), + 'wrapper_class' => 'form-field-wide', ]); } -function cree_champ_personnalise_commande($order): void { - woocommerce_wp_text_input([ - "id" => "tracking_number", - "label" => "Tracking Number:", - "value" => $order->get_meta("tracking_number"), - "wrapper_class" => "form-field-wide", - ]); +function maj_champ_personnalise_commande($order_id): void +{ + $order = wc_get_order($order_id); + $order->update_meta_data('tracking_number', wc_clean($_POST['tracking_number'])); + $order->save(); } -function maj_champ_personnalise_commande($order_id): void { - $order = wc_get_order($order_id); - $order->update_meta_data("tracking_number", wc_clean($_POST["tracking_number"])); - $order->save(); -} - -add_action("carbon_fields_register_fields", "cree_champs_personnalises_produit"); -add_action("woocommerce_admin_order_data_after_shipping_address", "cree_champ_personnalise_commande"); -add_action("woocommerce_process_shop_order_meta", "maj_champ_personnalise_commande"); +add_action('carbon_fields_register_fields', 'cree_champs_personnalises_produit'); +add_action('woocommerce_admin_order_data_after_shipping_address', 'cree_champ_personnalise_commande'); +add_action('woocommerce_process_shop_order_meta', 'maj_champ_personnalise_commande'); diff --git a/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php b/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php index 7e06c0cf..c4d45614 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php @@ -7,69 +7,75 @@ declare(strict_types=1); -function enregistre_controle_personnalise_tinymce(): void { - /** - * TinyMCE Custom Control - * - * @author Anthony Hortin - * @license http://www.gnu.org/licenses/gpl-2.0.html - * @link https://github.com/maddisondesigns - */ - class Controle_Personnalise_TinyMCE extends WP_Customize_Control { +function enregistre_controle_personnalise_tinymce(): void +{ /** - * The type of control being rendered + * TinyMCE Custom Control. + * + * @author Anthony Hortin + * @license http://www.gnu.org/licenses/gpl-2.0.html + * + * @see https://github.com/maddisondesigns */ - public $type = "editeur_tinymce"; + class Controle_Personnalise_TinyMCE extends WP_Customize_Control + { + /** + * The type of control being rendered. + */ + public $type = 'editeur_tinymce'; - /** - * Enqueue our scripts and styles - */ - public function enqueue(): void { - wp_enqueue_script( - handle: "controle-personnalise-tinymce", - src: get_template_directory_uri() . "/assets/vendor/controle-personnalise-tinymce.js", - deps: ["jquery"], - ver: "1.3", - args: true, - ); - wp_enqueue_editor(); - } + /** + * Enqueue our scripts and styles. + */ + public function enqueue(): void + { + wp_enqueue_script( + handle: 'controle-personnalise-tinymce', + src: get_template_directory_uri().'/assets/vendor/controle-personnalise-tinymce.js', + deps: ['jquery'], + ver: '1.3', + args: true, + ); + wp_enqueue_editor(); + } - /** - * Pass our TinyMCE toolbar string to JavaScript - */ - public function to_json(): void { - parent::to_json(); + /** + * Pass our TinyMCE toolbar string to JavaScript. + */ + public function to_json(): void + { + parent::to_json(); - $this->json["skyrockettinymcetoolbar1"] = isset($this->input_attrs["toolbar1"]) - ? esc_attr($this->input_attrs["toolbar1"]) - : "bold italic bullist numlist alignleft aligncenter alignright link"; + $this->json['skyrockettinymcetoolbar1'] = isset($this->input_attrs['toolbar1']) + ? esc_attr($this->input_attrs['toolbar1']) + : 'bold italic bullist numlist alignleft aligncenter alignright link'; - $this->json["skyrockettinymcetoolbar2"] = isset($this->input_attrs["toolbar2"]) - ? esc_attr($this->input_attrs["toolbar2"]) - : ""; - $this->json["skyrocketmediabuttons"] = - isset($this->input_attrs["mediaButtons"]) && $this->input_attrs["mediaButtons"] === true ? true : false; - } + $this->json['skyrockettinymcetoolbar2'] = isset($this->input_attrs['toolbar2']) + ? esc_attr($this->input_attrs['toolbar2']) + : ''; + $this->json['skyrocketmediabuttons'] + = isset($this->input_attrs['mediaButtons']) && true === $this->input_attrs['mediaButtons'] ? true : false; + } - /** - * Render the control in the customizer - */ - public function render_content() { - ?> + /** + * Render the control in the customizer. + */ + public function render_content() + { + ?>
label); ?> description)) { ?> description); ?> + $this->value(), + ); ?>
$configuration Un tableau associatif de la configuration TinyMCE. - * @return array Le même tableau avec des configurations en plus. + * @param array $configuration un tableau associatif de la configuration TinyMCE + * + * @return array le même tableau avec des configurations en plus */ -function desactive_transformation_contenu_tinymce(array $configuration): array { - // Ne supprime pas les retours à la ligne - $configuration["remove_linebreaks"] = false; - // Convertis les caractères de retours à la ligne en
- $configuration["convert_newlines_to_brs"] = true; - // Supprime les
redondants - $configuration["remove_redundant_brs"] = false; +function desactive_transformation_contenu_tinymce(array $configuration): array +{ + // Ne supprime pas les retours à la ligne + $configuration['remove_linebreaks'] = false; + // Convertis les caractères de retours à la ligne en
+ $configuration['convert_newlines_to_brs'] = true; + // Supprime les
redondants + $configuration['remove_redundant_brs'] = false; - // Retourne $configuration à WordPress - return $configuration; + // Retourne $configuration à WordPress + return $configuration; } /** * Autorise les imports en SVG dans la médiathèque. * - * @param array $file_types Un tableau des types de fichiers autorisés dans la médiathèque. - * @return array Le même tableau avec SVG en plus. + * @param array $file_types un tableau des types de fichiers autorisés dans la médiathèque + * + * @return array le même tableau avec SVG en plus */ -function autorise_import_svg_mediatheque(array $file_types): array { - $new_filetypes = []; - $new_filetypes["svg"] = "image/svg+xml"; - $file_types = array_merge($file_types, $new_filetypes); +function autorise_import_svg_mediatheque(array $file_types): array +{ + $new_filetypes = []; + $new_filetypes['svg'] = 'image/svg+xml'; - return $file_types; + return array_merge($file_types, $new_filetypes); } -function retire_motifs_blocs_gutenberg(): void { - remove_theme_support("core-block-patterns"); +function retire_motifs_blocs_gutenberg(): void +{ + remove_theme_support('core-block-patterns'); } -function retire_styles_core_block(): void { - wp_dequeue_style("core-block-supports"); +function retire_styles_core_block(): void +{ + wp_dequeue_style('core-block-supports'); } // Désactive les appels à l'API de la mise à jour des traductions -add_filter("async_update_translation", "__return_false"); -add_filter("auto_update_translation", "__return_false"); +add_filter('async_update_translation', '__return_false'); +add_filter('auto_update_translation', '__return_false'); -add_action("init", "desactive_wpautop"); -add_filter("tiny_mce_before_init", "desactive_transformation_contenu_tinymce"); -add_filter("upload_mimes", "autorise_import_svg_mediatheque"); -add_action("after_setup_theme", "retire_motifs_blocs_gutenberg"); -add_action("wp_footer", "retire_styles_core_block", 5); +add_action('init', 'desactive_wpautop'); +add_filter('tiny_mce_before_init', 'desactive_transformation_contenu_tinymce'); +add_filter('upload_mimes', 'autorise_import_svg_mediatheque'); +add_action('after_setup_theme', 'retire_motifs_blocs_gutenberg'); +add_action('wp_footer', 'retire_styles_core_block', 5); diff --git a/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php b/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php index 7fa97b55..4c0eb777 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php @@ -1,4 +1,5 @@ pour chaque image d'intérêt. * - * @param WP_REST_Response $response The response object. - * @param WC_Data $product Object data. + * @param WP_REST_Response $response the response object + * @param WC_Data $product object data + * * @return WP_REST_Response */ -function genere_balises_img_dans_produit_dans_reponse_rest($response, $product) { - // Vérifie que la Réponse a des données - if (empty($response->data)) { +function genere_balises_img_dans_produit_dans_reponse_rest($response, $product) +{ + // Vérifie que la Réponse a des données + if (empty($response->data)) { + return $response; + } + + // Génère la balise pour l'image au repos + $response->data['image_repos'] = pipe( + $response->data['meta_data'], + fn ($metadata) => array_filter( + array: $metadata, + callback: fn ($entree) => '_photos_colonne_gauche|||0|value' == $entree->key, + ), + fn ($metadata) => array_map( + array: $metadata, + callback: fn ($entree) => genere_balise_img_multiformats(id: $entree?->value, lazy: true), + ), + fn ($image) => array_values(array: $image)[0], + ); + + // Génère la balise pour l'image au survol + $response->data['image_survol'] = pipe( + $response->data['meta_data'], + fn ($metadata) => array_filter( + array: $metadata, + callback: fn ($entree) => '_photos_colonne_droite|||0|value' == $entree->key, + ), + fn ($metadata) => array_map( + array: $metadata, + callback: fn ($entree) => genere_balise_img_multiformats(id: $entree?->value, lazy: true), + ), + fn ($image) => array_values(array: $image)[0], + ); + return $response; - } - - // Génère la balise pour l'image au repos - $response->data["image_repos"] = pipe( - $response->data["meta_data"], - fn($metadata) => array_filter( - array: $metadata, - callback: fn($entree) => $entree->key == "_photos_colonne_gauche|||0|value", - ), - fn($metadata) => array_map( - array: $metadata, - callback: fn($entree) => genere_balise_img_multiformats(id: $entree?->value, lazy: true), - ), - fn($image) => array_values(array: $image)[0], - ); - - // Génère la balise pour l'image au survol - $response->data["image_survol"] = pipe( - $response->data["meta_data"], - fn($metadata) => array_filter( - array: $metadata, - callback: fn($entree) => $entree->key == "_photos_colonne_droite|||0|value", - ), - fn($metadata) => array_map( - array: $metadata, - callback: fn($entree) => genere_balise_img_multiformats(id: $entree?->value, lazy: true), - ), - fn($image) => array_values(array: $image)[0], - ); - - return $response; } -add_filter("woocommerce_rest_prepare_product_object", "genere_balises_img_dans_produit_dans_reponse_rest", 10, 2); +add_filter('woocommerce_rest_prepare_product_object', 'genere_balises_img_dans_produit_dans_reponse_rest', 10, 2); /** - * TODO + * TODO. * * @param WP_REST_Respone $$reponse - * @param WC_Data $produit + * @param WC_Data $produit + * @param mixed $reponse + * * @return WP_REST_Response */ -function genere_prix_maximal_produit_variable_dans_reponse_rest($reponse, $produit) { - // Vérifie que la Réponse a des données - if (empty($reponse->data)) { +function genere_prix_maximal_produit_variable_dans_reponse_rest($reponse, $produit) +{ + // Vérifie que la Réponse a des données + if (empty($reponse->data)) { + return $reponse; + } + + // Si le Produit n'est pas Variable, assigner le prix du Produit comme prix maximal + if ('variable' != $reponse->data['type']) { + $reponse->data['prix_maximal'] = $reponse->data['regular_price']; + + return $reponse; + } + + // Assigne le prix de la Variation la plus chère dans la Réponse + $reponse->data['prix_maximal'] = collect($reponse->data['variations']) + ->map(fn ($id) => wc_get_product($id)) + ->map(fn ($p) => $p->get_price()) + ->max() + ; + return $reponse; - } - - // Si le Produit n'est pas Variable, assigner le prix du Produit comme prix maximal - if ($reponse->data["type"] != "variable") { - $reponse->data["prix_maximal"] = $reponse->data["regular_price"]; - return $reponse; - } - - // Assigne le prix de la Variation la plus chère dans la Réponse - $reponse->data["prix_maximal"] = collect($reponse->data["variations"]) - ->map(fn($id) => wc_get_product($id)) - ->map(fn($p) => $p->get_price()) - ->max(); - - return $reponse; } -add_filter("woocommerce_rest_prepare_product_object", "genere_prix_maximal_produit_variable_dans_reponse_rest", 10, 2); +add_filter('woocommerce_rest_prepare_product_object', 'genere_prix_maximal_produit_variable_dans_reponse_rest', 10, 2); /** * Retire la propagande commerciale de WooCommerce du menu. */ -function remove_payments_ad_tab(): void { - remove_menu_page("admin.php?page=wc-settings&tab=checkout"); +function remove_payments_ad_tab(): void +{ + remove_menu_page('admin.php?page=wc-settings&tab=checkout'); } -add_action("add_meta_boxes", "desactive_champs_admin_images_produit_woocommerce", 40); -add_action("admin_menu", "remove_payments_ad_tab", 999); -add_action("after_setup_theme", "desactive_images_produit_woocommerce"); -add_action("enqueue_block_assets", "desactive_blocs_gutenberg_woocommerce"); -add_action("init", "desactive_attribution_commande_woocommerce"); -add_action("init", "retire_script_galerie"); -add_action("template_redirect", "retire_merdes_wc"); -add_action("wp_enqueue_scripts", "dequeue_woocommerce_styles_scripts"); -add_filter("woocommerce_enqueue_styles", "__return_empty_array"); +add_action('add_meta_boxes', 'desactive_champs_admin_images_produit_woocommerce', 40); +add_action('admin_menu', 'remove_payments_ad_tab', 999); +add_action('after_setup_theme', 'desactive_images_produit_woocommerce'); +add_action('enqueue_block_assets', 'desactive_blocs_gutenberg_woocommerce'); +add_action('init', 'desactive_attribution_commande_woocommerce'); +add_action('init', 'retire_script_galerie'); +add_action('template_redirect', 'retire_merdes_wc'); +add_action('wp_enqueue_scripts', 'dequeue_woocommerce_styles_scripts'); +add_filter('woocommerce_enqueue_styles', '__return_empty_array'); diff --git a/web/app/themes/haiku-atelier-2024/src/inc/HTML.php b/web/app/themes/haiku-atelier-2024/src/inc/HTML.php index 29ddf714..0a04fb49 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/HTML.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/HTML.php @@ -1,4 +1,5 @@ ` d'un Média attaché à un Produit selon son ID. * * @param int $id_image + * * @return string */ -function genere_balise_img($id_image) { - return wp_get_attachment_image(attachment_id: $id_image, size: "full"); +function genere_balise_img($id_image) +{ + return wp_get_attachment_image(attachment_id: $id_image, size: 'full'); } diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php b/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php index 083d2ba3..9a725513 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php @@ -1,4 +1,5 @@ __("Add New Collection"), - "all_items" => __("All Collections"), - "edit_item" => __("Edit Collection"), - "menu_name" => __("Collections"), - "name" => __("Collections"), - "new_item_name" => __("New Collection Name"), - "search_items" => __("Search Collections"), - "singular_name" => __("Collection"), - "update_item" => __("Update Collection"), - ]; - $args = [ - "description" => __("An ensemble of pieces thematically or chronologically grouped together."), - "hierarchical" => false, - "labels" => $labels, - "publicly_queryable" => false, - "query_var" => true, - "rewrite" => ["slug" => "collection"], - "show_admin_column" => true, - "show_in_menu" => true, - "show_in_quick_edit" => true, - "show_ui" => true, - ]; +function enregistre_taxonomie_collection(): void +{ + $labels = [ + 'add_new_item' => __('Add New Collection'), + 'all_items' => __('All Collections'), + 'edit_item' => __('Edit Collection'), + 'menu_name' => __('Collections'), + 'name' => __('Collections'), + 'new_item_name' => __('New Collection Name'), + 'search_items' => __('Search Collections'), + 'singular_name' => __('Collection'), + 'update_item' => __('Update Collection'), + ]; + $args = [ + 'description' => __('An ensemble of pieces thematically or chronologically grouped together.'), + 'hierarchical' => false, + 'labels' => $labels, + 'publicly_queryable' => false, + 'query_var' => true, + 'rewrite' => ['slug' => 'collection'], + 'show_admin_column' => true, + 'show_in_menu' => true, + 'show_in_quick_edit' => true, + 'show_ui' => true, + ]; - register_taxonomy("collection", ["product"], $args); + register_taxonomy('collection', ['product'], $args); } -add_action("init", "enregistre_taxonomie_collection"); +add_action('init', 'enregistre_taxonomie_collection'); diff --git a/web/app/themes/haiku-atelier-2024/src/inc/TraitementInformations.php b/web/app/themes/haiku-atelier-2024/src/inc/TraitementInformations.php index 0362fd51..c917cffc 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/TraitementInformations.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/TraitementInformations.php @@ -1,4 +1,5 @@ array_filter(array: $tableau, callback: fn($chemin_format) => $chemin_format !== false), - fn($tableau) => array_map( - array: $tableau, - callback: fn($chemin_format) => [ - "format" => pathinfo($chemin_format)["extension"], - "taille" => filesize($chemin_format), - "url" => - pathinfo($url)["dirname"] . "/" . pathinfo($url)["filename"] . "." . pathinfo($chemin_format)["extension"], - ], - ), - ); - usort(array: $formats, callback: fn($a, $b) => $a["taille"] <=> $b["taille"]); + // Génère un tableau avec les différents formats valides + $formats = pipe( + [$avif, $jxl, $webp], + fn ($tableau) => array_filter(array: $tableau, callback: fn ($chemin_format) => false !== $chemin_format), + fn ($tableau) => array_map( + array: $tableau, + callback: fn ($chemin_format) => [ + 'format' => pathinfo($chemin_format)['extension'], + 'taille' => filesize($chemin_format), + 'url' => pathinfo($url)['dirname'].'/'.pathinfo($url)['filename'].'.'.pathinfo($chemin_format)['extension'], + ], + ), + ); + usort(array: $formats, callback: fn ($a, $b) => $a['taille'] <=> $b['taille']); - // Construis les balises avec les formats valides - $sources = ""; - foreach ($formats as $format) { - $height = $dimensions[0] ?? ""; - $width = $dimensions[1] ?? ""; - $sources .= "\n"; - } + // Construis les balises avec les formats valides + $sources = ''; + foreach ($formats as $format) { + $height = $dimensions[0] ?? ''; + $width = $dimensions[1] ?? ''; + $sources .= "\n"; + } - $loading = $lazy ? "lazy" : "eager"; + $loading = $lazy ? 'lazy' : 'eager'; - return << EOD; } /** - * TODO + * TODO. * * @param WC_Product $a * @param WC_Product $b + * * @return int */ -function tri_variations_par_prix_descendant($a, $b) { - if ($a->get_price() == $b->get_price()) { - return 0; - } - return $a->get_price() < $b->get_price() ? 1 : -1; +function tri_variations_par_prix_descendant($a, $b) +{ + if ($a->get_price() == $b->get_price()) { + return 0; + } + + return $a->get_price() < $b->get_price() ? 1 : -1; } /** @@ -89,96 +94,98 @@ function tri_variations_par_prix_descendant($a, $b) { * de tableau associatif. * * @param WC_Product $produit - * @return InformationsProduitShop Un tableau avec uniquement les informations pour la Grille de Produits. + * + * @return InformationsProduitShop un tableau avec uniquement les informations pour la Grille de Produits */ -function recupere_informations_produit_shop($produit) { - /** @var int $prix_maximal Le prix maximal du Produit. */ - $prix_maximal = pipe( - // Récupère les Variations - $produit->get_children(), - // Récupère les informations de chaque Variation - fn($enfants) => array_map(callback: fn($id) => wc_get_product($id), array: $enfants), - // Trie les Variations par prix descendant - fn($variations) => array_map(callback: fn($variation) => $variation->get_price(), array: $variations), - // Récupère le Prix de la Variation la plus chère - fn($prix) => collect($prix)->max(), - // Récupère le Prix pour la Variation la plus chère OU le prix du Produit simple - fn($prix_variation_maximale) => isset($prix_variation_maximale) ? $prix_variation_maximale : $produit->get_price(), - ); +function recupere_informations_produit_shop($produit) +{ + /** @var int $prix_maximal Le prix maximal du Produit. */ + $prix_maximal = pipe( + // Récupère les Variations + $produit->get_children(), + // Récupère les informations de chaque Variation + fn ($enfants) => array_map(callback: fn ($id) => wc_get_product($id), array: $enfants), + // Trie les Variations par prix descendant + fn ($variations) => array_map(callback: fn ($variation) => $variation->get_price(), array: $variations), + // Récupère le Prix de la Variation la plus chère + fn ($prix) => collect($prix)->max(), + // Récupère le Prix pour la Variation la plus chère OU le prix du Produit simple + fn ($prix_variation_maximale) => isset($prix_variation_maximale) ? $prix_variation_maximale : $produit->get_price(), + ); - return [ - /* Identifiant du Produit */ - "id" => $produit->get_id(), - /* Nom affiché du Produit */ - "nom" => $produit->get_name(), - /* Prix affiché du Produit */ - "prix" => "$prix_maximal", - /* Photo du Produit affichée par défaut */ - "photo_repos" => genere_balise_img_multiformats( - get_post_meta($post_id = $produit->get_id(), $key = "_photos_colonne_gauche|||0|value")[0] ?? -1, - false, - ), - /* Photo du Produit affichée au survol de l'image */ - "photo_survol" => genere_balise_img_multiformats( - get_post_meta($post_id = $produit->get_id(), $key = "_photos_colonne_droite|||0|value")[0] ?? -1, - true, - ), - /* URL du Produit pour les liens vers celui-ci */ - "url" => $produit->get_permalink(), - ]; + return [ + // Identifiant du Produit + 'id' => $produit->get_id(), + // Nom affiché du Produit + 'nom' => $produit->get_name(), + // Prix affiché du Produit + 'prix' => "{$prix_maximal}", + // Photo du Produit affichée par défaut + 'photo_repos' => genere_balise_img_multiformats( + get_post_meta($post_id = $produit->get_id(), $key = '_photos_colonne_gauche|||0|value')[0] ?? -1, + false, + ), + // Photo du Produit affichée au survol de l'image + 'photo_survol' => genere_balise_img_multiformats( + get_post_meta($post_id = $produit->get_id(), $key = '_photos_colonne_droite|||0|value')[0] ?? -1, + true, + ), + // URL du Produit pour les liens vers celui-ci + 'url' => $produit->get_permalink(), + ]; } -/* Page Produit */ +// Page Produit /** * Retourne un tableau associatif des informations affichées sur la page Produit depuis les données brutes d'un Produit. * * @param mixed $donnees_produit - * @return mixed */ -function recupere_informations_produit_page_produit($donnees_produit): mixed { - return [ - /* Attributs du Produit */ - "attributs" => wc_get_product()->get_attributes(), - /* Catégorie du Produit */ - "categorie" => pipe( - $donnees_produit->get_id(), - fn($id) => wc_get_product_category_list($id), - fn($categorie) => strtolower($categorie), - ), - // Slug de la Collection - Peut ne pas avoir été défini - "collection" => get_the_terms($donnees_produit->get_id(), "collection")[0]?->slug ?? "", - /* Détails (Description) du Produit */ - "details" => wpautop($donnees_produit->get_description()), - /* Identifiant du Produit */ - "id" => $donnees_produit->get_id(), - /* Nom affiché du Produit */ - "nom" => $donnees_produit->get_name(), - /* Prix affiché du Produit */ - "prix" => $donnees_produit->get_price(), - "photos_colonne_gauche" => array_map( - callback: "genere_balise_img_multiformats", - array: get_post_meta($post_id = $donnees_produit->get_id(), $key = "_photos_colonne_gauche|||0|value"), - ), - "photos_colonne_droite" => array_map( - callback: "genere_balise_img_multiformats", - array: carbon_get_the_post_meta("photos_colonne_droite"), - ), - "photo_repos" => genere_balise_img_multiformats( - get_post_meta($post_id = $donnees_produit->get_id(), $key = "_photos_colonne_gauche|||0|value")[0] ?? -1, - false, - ), - "photo_survol" => genere_balise_img_multiformats( - get_post_meta($post_id = $donnees_produit->get_id(), $key = "_photos_colonne_droite|||0|value")[0] ?? -1, - true, - ), - /* Slug du Produit */ - "slug" => $donnees_produit->get_slug(), - /* Variations du Produit */ - "variations_ids" => $donnees_produit->get_children(), - /* URL du Produit */ - "url" => $donnees_produit->get_permalink(), - ]; +function recupere_informations_produit_page_produit($donnees_produit): mixed +{ + return [ + // Attributs du Produit + 'attributs' => wc_get_product()->get_attributes(), + // Catégorie du Produit + 'categorie' => pipe( + $donnees_produit->get_id(), + fn ($id) => wc_get_product_category_list($id), + fn ($categorie) => strtolower($categorie), + ), + // Slug de la Collection - Peut ne pas avoir été défini + 'collection' => get_the_terms($donnees_produit->get_id(), 'collection')[0]?->slug ?? '', + // Détails (Description) du Produit + 'details' => wpautop($donnees_produit->get_description()), + // Identifiant du Produit + 'id' => $donnees_produit->get_id(), + // Nom affiché du Produit + 'nom' => $donnees_produit->get_name(), + // Prix affiché du Produit + 'prix' => $donnees_produit->get_price(), + 'photos_colonne_gauche' => array_map( + callback: 'genere_balise_img_multiformats', + array: get_post_meta($post_id = $donnees_produit->get_id(), $key = '_photos_colonne_gauche|||0|value'), + ), + 'photos_colonne_droite' => array_map( + callback: 'genere_balise_img_multiformats', + array: carbon_get_the_post_meta('photos_colonne_droite'), + ), + 'photo_repos' => genere_balise_img_multiformats( + get_post_meta($post_id = $donnees_produit->get_id(), $key = '_photos_colonne_gauche|||0|value')[0] ?? -1, + false, + ), + 'photo_survol' => genere_balise_img_multiformats( + get_post_meta($post_id = $donnees_produit->get_id(), $key = '_photos_colonne_droite|||0|value')[0] ?? -1, + true, + ), + // Slug du Produit + 'slug' => $donnees_produit->get_slug(), + // Variations du Produit + 'variations_ids' => $donnees_produit->get_children(), + // URL du Produit + 'url' => $donnees_produit->get_permalink(), + ]; } /** @@ -188,49 +195,51 @@ function recupere_informations_produit_page_produit($donnees_produit): mixed { * Pour faciliter l'usage avec `array_map`, utilise une fonction avec curryfication. * * @param string $slug_collection + * * @return mixed */ -function recupere_produits_meme_collection($slug_collection) { - /** - * @param int $id_produit - */ - return function ($id_produit) use ($slug_collection) { - return wc_get_products([ - "exclude" => [$id_produit], - "limit" => 4, - "order" => "DESC", - "orderby" => "date", - "status" => "publish", - "tax_query" => [ - [ - "taxonomy" => "collection", - "field" => "slug", - "terms" => $slug_collection, - ], - ], - ]); - }; +function recupere_produits_meme_collection($slug_collection) +{ + // @param int $id_produit + return function ($id_produit) use ($slug_collection) { + return wc_get_products([ + 'exclude' => [$id_produit], + 'limit' => 4, + 'order' => 'DESC', + 'orderby' => 'date', + 'status' => 'publish', + 'tax_query' => [ + [ + 'taxonomy' => 'collection', + 'field' => 'slug', + 'terms' => $slug_collection, + ], + ], + ]); + }; } -/* Page Panier */ +// Page Panier /** * @param mixed $attributs_produit + * * @return mixed */ -function recupere_et_formate_attributs_produit($attributs_produit) { - return [ - "taille" => [ - "nom" => "Size", - "valeur" => $attributs_produit["pa_size"] ?? false, - ], - "pierre" => [ - "nom" => "Stone", - "valeur" => $attributs_produit["pa_stone"] ?? false, - ], - "cote" => [ - "nom" => "Side", - "valeur" => $attributs_produit["pa_side"] ?? false, - ], - ]; +function recupere_et_formate_attributs_produit($attributs_produit) +{ + return [ + 'taille' => [ + 'nom' => 'Size', + 'valeur' => $attributs_produit['pa_size'] ?? false, + ], + 'pierre' => [ + 'nom' => 'Stone', + 'valeur' => $attributs_produit['pa_stone'] ?? false, + ], + 'cote' => [ + 'nom' => 'Side', + 'valeur' => $attributs_produit['pa_side'] ?? false, + ], + ]; } diff --git a/web/app/themes/haiku-atelier-2024/src/scripts/journalisation.ts b/web/app/themes/haiku-atelier-2024/src/scripts/journalisation.ts old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/src/scripts/lib/arrays.ts b/web/app/themes/haiku-atelier-2024/src/scripts/lib/arrays.ts old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/src/scripts/lib/safe-arrays.ts b/web/app/themes/haiku-atelier-2024/src/scripts/lib/safe-arrays.ts old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/src/scripts/page-panier/scripts-page-panier-elements.ts b/web/app/themes/haiku-atelier-2024/src/scripts/page-panier/scripts-page-panier-elements.ts old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/src/scripts/page-panier/scripts-page-panier-local-storage.ts b/web/app/themes/haiku-atelier-2024/src/scripts/page-panier/scripts-page-panier-local-storage.ts old mode 100644 new mode 100755 diff --git a/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php b/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php index 992b73bc..f8c125bd 100755 --- a/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php +++ b/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php @@ -1,4 +1,5 @@ $informations_produits Les informations brutes des Produits. */ $informations_produits = wc_get_products([ - "category" => [get_queried_object()?->slug], - "limit" => 12, - "order" => "DESC", - "orderby" => "date", - "status" => "publish", + 'category' => [get_queried_object()?->slug], + 'limit' => 12, + 'order' => 'DESC', + 'orderby' => 'date', + 'status' => 'publish', ]); + /** @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; -$id_categorie_produits = array_shift($informations_produits)?->get_category_ids()[0] ?? ""; -$contexte["id_categorie_produits"] = $id_categorie_produits; +$produits = array_map(callback: 'recupere_informations_produit_shop', array: $informations_produits); +$contexte['produits'] = $produits; +$id_categorie_produits = array_shift($informations_produits)?->get_category_ids()[0] ?? ''; +$contexte['id_categorie_produits'] = $id_categorie_produits; /** * Charge les Scripts nécessaires pour la page d'Archive. */ -function charge_scripts_page_archive_produits(): void { - wp_enqueue_style( - handle: "haiku-atelier-2024-styles-page-boutique", - src: get_template_directory_uri() . "/assets/css/pages/page-boutique.css", - deps: [], - ver: filemtime(get_template_directory() . "/assets/css/pages/page-boutique.css"), - media: "all", - ); - 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"), - ); - wp_enqueue_script_module( - id: "haiku-atelier-2024-scripts-menu-categories", - src: get_template_directory_uri() . "/assets/js/scripts-menu-categories.js", - deps: [], - version: filemtime(get_template_directory() . "/assets/js/scripts-menu-categories.js"), - ); +function charge_scripts_page_archive_produits(): void +{ + wp_enqueue_style( + handle: 'haiku-atelier-2024-styles-page-boutique', + src: get_template_directory_uri().'/assets/css/pages/page-boutique.css', + deps: [], + ver: filemtime(get_template_directory().'/assets/css/pages/page-boutique.css'), + media: 'all', + ); + 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'), + ); + wp_enqueue_script_module( + id: 'haiku-atelier-2024-scripts-menu-categories', + src: get_template_directory_uri().'/assets/js/scripts-menu-categories.js', + deps: [], + version: filemtime(get_template_directory().'/assets/js/scripts-menu-categories.js'), + ); } -add_action("wp_enqueue_scripts", "charge_scripts_page_archive_produits"); +add_action('wp_enqueue_scripts', 'charge_scripts_page_archive_produits'); // Rendu Timber::render(filenames: $modeles, data: $contexte); diff --git a/web/app/themes/haiku-atelier-2024/views/404.twig b/web/app/themes/haiku-atelier-2024/views/404.twig index 50ef1e9e..c4de500a 100755 --- a/web/app/themes/haiku-atelier-2024/views/404.twig +++ b/web/app/themes/haiku-atelier-2024/views/404.twig @@ -1,4 +1,4 @@ -{% extends "base.twig" %} +{% extends 'base.twig' %} {% block contenu %}
{{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/about/haikuabout", "", dimensions_image[0], dimensions_image[1], "") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/about/haikuabout", '', dimensions_image[0], dimensions_image[1], '') }} {# Épingles #} @@ -20,6 +20,7 @@ @@ -34,6 +35,7 @@ @@ -48,6 +50,7 @@ @@ -62,6 +65,7 @@ @@ -76,6 +80,7 @@ @@ -90,6 +95,7 @@ @@ -107,6 +113,7 @@ An icon in form of a cross @@ -131,6 +138,7 @@ An icon in form of a cross @@ -157,6 +165,7 @@ An icon in form of a cross @@ -184,6 +193,7 @@ An icon in form of a cross @@ -210,6 +220,7 @@ An icon in form of a cross @@ -240,6 +251,7 @@ An icon in form of a cross diff --git a/web/app/themes/haiku-atelier-2024/views/accueil.twig b/web/app/themes/haiku-atelier-2024/views/accueil.twig index 391ab7f2..4c2b1efa 100755 --- a/web/app/themes/haiku-atelier-2024/views/accueil.twig +++ b/web/app/themes/haiku-atelier-2024/views/accueil.twig @@ -1,5 +1,5 @@ -{% extends "base.twig" %} -{% import "macros/images.twig" as images %} +{% extends 'base.twig' %} +{% import 'macros/images.twig' as images %} {% block contenu %}
{{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll1", "", 903, 1080, "image-scroll1") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll1", '', 903, 1080, 'image-scroll1') }}
@@ -141,7 +143,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll2", "", 903, 1080, "image-scroll2") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll2", '', 903, 1080, 'image-scroll2') }}
@@ -152,7 +154,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll3", "", 903, 1080, "image-scroll3") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll3", '', 903, 1080, 'image-scroll3') }} @@ -163,7 +165,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll4", "", 903, 1080, "image-scroll4") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll4", '', 903, 1080, 'image-scroll4') }} @@ -174,7 +176,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll5", "", 903, 1080, "image-scroll5") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll5", '', 903, 1080, 'image-scroll5') }} @@ -185,7 +187,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll6", "", 903, 1080, "image-scroll6") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll6", '', 903, 1080, 'image-scroll6') }} @@ -196,7 +198,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll7", "", 903, 1080, "image-scroll7") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll7", '', 903, 1080, 'image-scroll7') }} @@ -207,7 +209,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll8", "", 903, 1080, "image-scroll8") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll8", '', 903, 1080, 'image-scroll8') }} @@ -218,7 +220,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll9", "", 903, 1080, "image-scroll9") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll9", '', 903, 1080, 'image-scroll9') }} @@ -229,7 +231,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll10", "", 903, 1080, "image-scroll10") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll10", '', 903, 1080, 'image-scroll10') }} @@ -240,7 +242,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll11", "", 903, 1080, "image-scroll11") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll11", '', 903, 1080, 'image-scroll11') }} @@ -251,7 +253,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll12", "", 903, 1080, "image-scroll12") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll12", '', 903, 1080, 'image-scroll12') }} @@ -262,7 +264,7 @@ tabindex="-1" > {{ - images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll13", "", 903, 1080, "image-scroll13") + images.genere_source_img_multi_formats("#{ site.theme.link }/assets/img/storytelling/scroll13", '', 903, 1080, 'image-scroll13') }} diff --git a/web/app/themes/haiku-atelier-2024/views/base.twig b/web/app/themes/haiku-atelier-2024/views/base.twig index 436930cf..f8946193 100755 --- a/web/app/themes/haiku-atelier-2024/views/base.twig +++ b/web/app/themes/haiku-atelier-2024/views/base.twig @@ -2,7 +2,7 @@ {# #} {% block conteneur_html_head %} - {% include "parts/html-head.twig" %} + {{ include('parts/html-head.twig') }} {% block head %} {% endblock head %} @@ -13,7 +13,7 @@ data-langue="{{ langue_courante }}" > {# En-tête #} - {% include "parts/en-tete.twig" %} + {{ include('parts/en-tete.twig') }} {# Contenu #} {% block contenu %} @@ -40,9 +40,9 @@ {# Pied de page #} {% block footer %} - {% include "parts/pied-de-page.twig" %} + {{ include('parts/pied-de-page.twig') }} - {{ function("wp_footer") }} + {{ function('wp_footer') }} {% endblock footer %} diff --git a/web/app/themes/haiku-atelier-2024/views/boutique.twig b/web/app/themes/haiku-atelier-2024/views/boutique.twig index f1344cd7..f9c1f45f 100755 --- a/web/app/themes/haiku-atelier-2024/views/boutique.twig +++ b/web/app/themes/haiku-atelier-2024/views/boutique.twig @@ -1,4 +1,4 @@ -{% extends "base.twig" %} +{% extends 'base.twig' %} {% block head %} {% endif %} - {{ function("wp_head") }} + {{ function('wp_head') }} diff --git a/web/app/themes/haiku-atelier-2024/views/parts/menu-categories-produits.twig b/web/app/themes/haiku-atelier-2024/views/parts/menu-categories-produits.twig index 9db8839f..b429c85f 100755 --- a/web/app/themes/haiku-atelier-2024/views/parts/menu-categories-produits.twig +++ b/web/app/themes/haiku-atelier-2024/views/parts/menu-categories-produits.twig @@ -5,8 +5,10 @@ id="menu-categories-produits" > {% for cle, pays in pays_livraison %} @@ -267,8 +267,8 @@ > {% for cle, pays in pays_livraison %} diff --git a/web/app/themes/haiku-atelier-2024/views/parts/pages/panier/panneau-panier.twig b/web/app/themes/haiku-atelier-2024/views/parts/pages/panier/panneau-panier.twig index e6de36b7..604a95e9 100755 --- a/web/app/themes/haiku-atelier-2024/views/parts/pages/panier/panneau-panier.twig +++ b/web/app/themes/haiku-atelier-2024/views/parts/pages/panier/panneau-panier.twig @@ -40,7 +40,7 @@

@@ -123,7 +123,7 @@

Discount:

-{{ sous_total_reduction }}€

@@ -147,7 +147,7 @@
@@ -155,7 +155,7 @@ {% for methode_livraison in methodes_livraison %}
-
+
{{ produit.photo_repos }} diff --git a/web/app/themes/haiku-atelier-2024/views/parts/pages/produit/informations-produit.twig b/web/app/themes/haiku-atelier-2024/views/parts/pages/produit/informations-produit.twig index f9b94430..e3ce30b8 100755 --- a/web/app/themes/haiku-atelier-2024/views/parts/pages/produit/informations-produit.twig +++ b/web/app/themes/haiku-atelier-2024/views/parts/pages/produit/informations-produit.twig @@ -109,7 +109,7 @@