wip
This commit is contained in:
parent
15371d2469
commit
d631949388
42 changed files with 594 additions and 403 deletions
|
|
@ -12,7 +12,7 @@ $finder = new Finder()->in(__DIR__)->exclude([
|
||||||
'web/wp',
|
'web/wp',
|
||||||
'web/app/languages',
|
'web/app/languages',
|
||||||
'web/app/plugins',
|
'web/app/plugins',
|
||||||
'web/app/mu-plugins'
|
'web/app/mu-plugins',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return new Config()
|
return new Config()
|
||||||
|
|
@ -29,7 +29,7 @@ return new Config()
|
||||||
'const' => 'none',
|
'const' => 'none',
|
||||||
'method' => 'one',
|
'method' => 'one',
|
||||||
'property' => 'one',
|
'property' => 'one',
|
||||||
'trait_import' => 'none'
|
'trait_import' => 'none',
|
||||||
]],
|
]],
|
||||||
'class_reference_name_casing' => true,
|
'class_reference_name_casing' => true,
|
||||||
'clean_namespace' => true,
|
'clean_namespace' => true,
|
||||||
|
|
@ -103,7 +103,7 @@ return new Config()
|
||||||
'return',
|
'return',
|
||||||
'switch_case',
|
'switch_case',
|
||||||
'yield',
|
'yield',
|
||||||
'yield_from'
|
'yield_from',
|
||||||
]],
|
]],
|
||||||
'no_unneeded_final_method' => true,
|
'no_unneeded_final_method' => true,
|
||||||
'no_unneeded_import_alias' => true,
|
'no_unneeded_import_alias' => true,
|
||||||
|
|
@ -138,7 +138,7 @@ return new Config()
|
||||||
'random_api_migration' => ['replacements' => [
|
'random_api_migration' => ['replacements' => [
|
||||||
'getrandmax' => 'mt_getrandmax',
|
'getrandmax' => 'mt_getrandmax',
|
||||||
'rand' => 'mt_rand',
|
'rand' => 'mt_rand',
|
||||||
'srand' => 'mt_srand'
|
'srand' => 'mt_srand',
|
||||||
]],
|
]],
|
||||||
'return_assignment' => true,
|
'return_assignment' => true,
|
||||||
'self_accessor' => true,
|
'self_accessor' => true,
|
||||||
|
|
@ -177,7 +177,7 @@ return new Config()
|
||||||
'no_superfluous_phpdoc_tags' => [
|
'no_superfluous_phpdoc_tags' => [
|
||||||
'allow_hidden_params' => false,
|
'allow_hidden_params' => false,
|
||||||
'allow_mixed' => false,
|
'allow_mixed' => false,
|
||||||
'allow_unused_params' => false
|
'allow_unused_params' => false,
|
||||||
],
|
],
|
||||||
// PHPDoc should contain @param for all params.
|
// PHPDoc should contain @param for all params.
|
||||||
'phpdoc_add_missing_param_annotation' => ['only_untyped' => false],
|
'phpdoc_add_missing_param_annotation' => ['only_untyped' => false],
|
||||||
|
|
@ -223,7 +223,7 @@ return new Config()
|
||||||
'never-returns',
|
'never-returns',
|
||||||
'no-return',
|
'no-return',
|
||||||
'real',
|
'real',
|
||||||
'str'
|
'str',
|
||||||
]],
|
]],
|
||||||
// Annotations in PHPDoc should be grouped together so that annotations of the same type immediately follow each other. Annotations of a different type are separated by a single blank line.
|
// Annotations in PHPDoc should be grouped together so that annotations of the same type immediately follow each other. Annotations of a different type are separated by a single blank line.
|
||||||
'phpdoc_separation' => [
|
'phpdoc_separation' => [
|
||||||
|
|
@ -232,9 +232,9 @@ return new Config()
|
||||||
['author', 'copyright', 'license'],
|
['author', 'copyright', 'license'],
|
||||||
['category', 'package', 'subpackage'],
|
['category', 'package', 'subpackage'],
|
||||||
['property', 'property-read', 'property-write'],
|
['property', 'property-read', 'property-write'],
|
||||||
['deprecated', 'link', 'see', 'since']
|
['deprecated', 'link', 'see', 'since'],
|
||||||
],
|
],
|
||||||
'skip_unlisted_annotations' => false
|
'skip_unlisted_annotations' => false,
|
||||||
],
|
],
|
||||||
// Single line @var PHPDoc should have proper spacing.
|
// Single line @var PHPDoc should have proper spacing.
|
||||||
'phpdoc_single_line_var_spacing' => true,
|
'phpdoc_single_line_var_spacing' => true,
|
||||||
|
|
@ -253,7 +253,7 @@ return new Config()
|
||||||
// @var and @type annotations must have type and name in the correct order.
|
// @var and @type annotations must have type and name in the correct order.
|
||||||
'phpdoc_var_annotation_correct_order' => true,
|
'phpdoc_var_annotation_correct_order' => true,
|
||||||
// @var and @type annotations of classy properties should not contain the name.
|
// @var and @type annotations of classy properties should not contain the name.
|
||||||
'phpdoc_var_without_name' => true
|
'phpdoc_var_without_name' => true,
|
||||||
])
|
])
|
||||||
->setFinder($finder)
|
->setFinder($finder)
|
||||||
->setParallelConfig(Runner\Parallel\ParallelConfigFactory::detect());
|
->setParallelConfig(Runner\Parallel\ParallelConfigFactory::detect());
|
||||||
|
|
|
||||||
58
bun.lock
58
bun.lock
|
|
@ -17,12 +17,12 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@effect/language-service": "^0.84.3",
|
"@effect/language-service": "^0.84.3",
|
||||||
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#62ee424274",
|
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#62ee424274",
|
||||||
"@gcch/configuration-oxlint": "git+https://git.gcch.fr/gcch/configuration-oxlint#c53b1c1f78",
|
"@gcch/configuration-oxlint": "git+https://git.gcch.fr/gcch/configuration-oxlint#93dd909919",
|
||||||
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#8de937e801",
|
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#8de937e801",
|
||||||
"@playwright/test": "^1.59.1",
|
"@playwright/test": "^1.59.1",
|
||||||
"@sentry/core": "^10.47.0",
|
"@sentry/core": "^10.47.0",
|
||||||
"@types/bun": "^1.3.11",
|
"@types/bun": "^1.3.11",
|
||||||
"@types/node": "^25.5.0",
|
"@types/node": "^25.5.1",
|
||||||
"@vitejs/plugin-legacy": "^8.0.1",
|
"@vitejs/plugin-legacy": "^8.0.1",
|
||||||
"better-typescript-lib": "^2.12.0",
|
"better-typescript-lib": "^2.12.0",
|
||||||
"browserslist": "^4.28.2",
|
"browserslist": "^4.28.2",
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.5.0",
|
||||||
"globals": "^17.4.0",
|
"globals": "^17.4.0",
|
||||||
"jiti": "^2.6.1",
|
"jiti": "^2.6.1",
|
||||||
"knip": "^6.1.1",
|
"knip": "^6.3.0",
|
||||||
"lightningcss": "^1.32.0",
|
"lightningcss": "^1.32.0",
|
||||||
"lightningcss-cli": "^1.32.0",
|
"lightningcss-cli": "^1.32.0",
|
||||||
"oxlint": "^1.58.0",
|
"oxlint": "^1.58.0",
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
"prettier": "^3.8.1",
|
"prettier": "^3.8.1",
|
||||||
"prettier-plugin-pkg": "^0.22.1",
|
"prettier-plugin-pkg": "^0.22.1",
|
||||||
"prettier-plugin-sh": "^0.18.0",
|
"prettier-plugin-sh": "^0.18.0",
|
||||||
"sass-embedded": "^1.98.0",
|
"sass-embedded": "^1.99.0",
|
||||||
"stylelint": "^17.6.0",
|
"stylelint": "^17.6.0",
|
||||||
"stylelint-config-clean-order": "^8.0.1",
|
"stylelint-config-clean-order": "^8.0.1",
|
||||||
"stylelint-config-sass-guidelines": "^13.0.0",
|
"stylelint-config-sass-guidelines": "^13.0.0",
|
||||||
|
|
@ -296,7 +296,7 @@
|
||||||
|
|
||||||
"@gcch/configuration-eslint": ["@gcch/configuration-eslint@git+https://git.gcch.fr/gcch/configuration-eslint#62ee424274f0bfebd5135a728960644f4b1cdcb8", { "dependencies": { "@eslint/js": "^10.0.1", "astro-eslint-parser": "^1.3.0", "eslint": "^10.0.3", "eslint-plugin-astro": "^1.6.0", "eslint-plugin-functional": "^9.0.4", "eslint-plugin-jsdoc": "^62.8.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-perfectionist": "^5.6.0", "eslint-plugin-sonarjs": "^4.0.2", "eslint-plugin-unicorn": "^63.0.0", "globals": "^17.4.0", "typescript-eslint": "^8.57.0" }, "peerDependencies": { "eslint": "^10.0.3", "typescript": "^6.0.1-rc" } }, "62ee424274f0bfebd5135a728960644f4b1cdcb8"],
|
"@gcch/configuration-eslint": ["@gcch/configuration-eslint@git+https://git.gcch.fr/gcch/configuration-eslint#62ee424274f0bfebd5135a728960644f4b1cdcb8", { "dependencies": { "@eslint/js": "^10.0.1", "astro-eslint-parser": "^1.3.0", "eslint": "^10.0.3", "eslint-plugin-astro": "^1.6.0", "eslint-plugin-functional": "^9.0.4", "eslint-plugin-jsdoc": "^62.8.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-perfectionist": "^5.6.0", "eslint-plugin-sonarjs": "^4.0.2", "eslint-plugin-unicorn": "^63.0.0", "globals": "^17.4.0", "typescript-eslint": "^8.57.0" }, "peerDependencies": { "eslint": "^10.0.3", "typescript": "^6.0.1-rc" } }, "62ee424274f0bfebd5135a728960644f4b1cdcb8"],
|
||||||
|
|
||||||
"@gcch/configuration-oxlint": ["@gcch/configuration-oxlint@git+https://git.gcch.fr/gcch/configuration-oxlint#c53b1c1f78ab2ac790cf7d3d8d22810e440a47e9", { "dependencies": { "globals": "^17.4.0", "oxlint": "^1.58.0", "oxlint-tsgolint": "^0.19.0" }, "optionalDependencies": { "eslint-plugin-astro": "^1.6.0" }, "peerDependencies": { "eslint-plugin-astro": "^1.6.0", "eslint-plugin-functional": "^9.0.4", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-perfectionist": "^5.7.0", "eslint-plugin-sonarjs": "^4.0.2", "oxlint": "^1.58.0", "oxlint-tsgolint": "^0.19.0", "typescript": "^6.0.2" } }, "c53b1c1f78ab2ac790cf7d3d8d22810e440a47e9"],
|
"@gcch/configuration-oxlint": ["@gcch/configuration-oxlint@git+https://git.gcch.fr/gcch/configuration-oxlint#93dd9099199603d2fe2c334227e8051104b8f1a0", { "dependencies": { "globals": "^17.4.0", "oxlint": "^1.58.0", "oxlint-tsgolint": "^0.19.0" }, "optionalDependencies": { "eslint-plugin-astro": "^1.6.0" }, "peerDependencies": { "eslint-plugin-astro": "^1.6.0", "eslint-plugin-functional": "^9.0.4", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-perfectionist": "^5.7.0", "eslint-plugin-sonarjs": "^4.0.2", "oxlint": "^1.58.0", "oxlint-tsgolint": "^0.19.0", "typescript": "^6.0.2" } }, "93dd9099199603d2fe2c334227e8051104b8f1a0"],
|
||||||
|
|
||||||
"@gcch/configuration-prettier": ["@gcch/configuration-prettier@git+https://git.gcch.fr/gcch/configuration-prettier#8de937e801bd44784ac91e0ff6e038d838f7eea1", { "dependencies": { "prettier": "^3.8.1", "prettier-plugin-curly": "^0.4.1", "prettier-plugin-ini": "^1.3.0", "prettier-plugin-jsdoc": "^1.8.0", "prettier-plugin-pkg": "^0.22.0", "prettier-plugin-sh": "^0.18.0", "prettier-plugin-sort-json": "^4.2.0" }, "peerDependencies": { "prettier": "^3.8.1" } }, "8de937e801bd44784ac91e0ff6e038d838f7eea1"],
|
"@gcch/configuration-prettier": ["@gcch/configuration-prettier@git+https://git.gcch.fr/gcch/configuration-prettier#8de937e801bd44784ac91e0ff6e038d838f7eea1", { "dependencies": { "prettier": "^3.8.1", "prettier-plugin-curly": "^0.4.1", "prettier-plugin-ini": "^1.3.0", "prettier-plugin-jsdoc": "^1.8.0", "prettier-plugin-pkg": "^0.22.0", "prettier-plugin-sh": "^0.18.0", "prettier-plugin-sort-json": "^4.2.0" }, "peerDependencies": { "prettier": "^3.8.1" } }, "8de937e801bd44784ac91e0ff6e038d838f7eea1"],
|
||||||
|
|
||||||
|
|
@ -580,7 +580,7 @@
|
||||||
|
|
||||||
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
|
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
|
||||||
|
|
||||||
"@types/node": ["@types/node@25.5.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw=="],
|
"@types/node": ["@types/node@25.5.1", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-lgrR3HRNQdTEeeXBnLURFO4JIIbpcVcMlLM9IG0jsNRTRNSbMkm9S2hyhxhnokke1NM25Dr9QghgeB5PQKolrw=="],
|
||||||
|
|
||||||
"@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="],
|
"@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="],
|
||||||
|
|
||||||
|
|
@ -1076,7 +1076,7 @@
|
||||||
|
|
||||||
"kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
|
"kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
|
||||||
|
|
||||||
"knip": ["knip@6.2.0", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-4OMUMJARvNble8e8TeFv12flp4fKzAITrQec1eKO4g2eA4HnNqEa8CXy2UOPLjuYuAETpe0N0r25jF9yY9FLig=="],
|
"knip": ["knip@6.3.0", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-g6dVPoTw6iNm3cubC5IWxVkVsd0r5hXhTBTbAGIEQN53GdA2ZM/slMTPJ7n5l8pBebNQPHpxjmKxuR4xVQ2/hQ=="],
|
||||||
|
|
||||||
"known-css-properties": ["known-css-properties@0.37.0", "", {}, "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ=="],
|
"known-css-properties": ["known-css-properties@0.37.0", "", {}, "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ=="],
|
||||||
|
|
||||||
|
|
@ -1382,43 +1382,43 @@
|
||||||
|
|
||||||
"sass": ["sass@1.98.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A=="],
|
"sass": ["sass@1.98.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A=="],
|
||||||
|
|
||||||
"sass-embedded": ["sass-embedded@1.98.0", "", { "dependencies": { "@bufbuild/protobuf": "^2.5.0", "colorjs.io": "^0.5.0", "immutable": "^5.1.5", "rxjs": "^7.4.0", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", "varint": "^6.0.0" }, "optionalDependencies": { "sass-embedded-all-unknown": "1.98.0", "sass-embedded-android-arm": "1.98.0", "sass-embedded-android-arm64": "1.98.0", "sass-embedded-android-riscv64": "1.98.0", "sass-embedded-android-x64": "1.98.0", "sass-embedded-darwin-arm64": "1.98.0", "sass-embedded-darwin-x64": "1.98.0", "sass-embedded-linux-arm": "1.98.0", "sass-embedded-linux-arm64": "1.98.0", "sass-embedded-linux-musl-arm": "1.98.0", "sass-embedded-linux-musl-arm64": "1.98.0", "sass-embedded-linux-musl-riscv64": "1.98.0", "sass-embedded-linux-musl-x64": "1.98.0", "sass-embedded-linux-riscv64": "1.98.0", "sass-embedded-linux-x64": "1.98.0", "sass-embedded-unknown-all": "1.98.0", "sass-embedded-win32-arm64": "1.98.0", "sass-embedded-win32-x64": "1.98.0" }, "bin": { "sass": "dist/bin/sass.js" } }, "sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg=="],
|
"sass-embedded": ["sass-embedded@1.99.0", "", { "dependencies": { "@bufbuild/protobuf": "^2.5.0", "colorjs.io": "^0.5.0", "immutable": "^5.1.5", "rxjs": "^7.4.0", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", "varint": "^6.0.0" }, "optionalDependencies": { "sass-embedded-all-unknown": "1.99.0", "sass-embedded-android-arm": "1.99.0", "sass-embedded-android-arm64": "1.99.0", "sass-embedded-android-riscv64": "1.99.0", "sass-embedded-android-x64": "1.99.0", "sass-embedded-darwin-arm64": "1.99.0", "sass-embedded-darwin-x64": "1.99.0", "sass-embedded-linux-arm": "1.99.0", "sass-embedded-linux-arm64": "1.99.0", "sass-embedded-linux-musl-arm": "1.99.0", "sass-embedded-linux-musl-arm64": "1.99.0", "sass-embedded-linux-musl-riscv64": "1.99.0", "sass-embedded-linux-musl-x64": "1.99.0", "sass-embedded-linux-riscv64": "1.99.0", "sass-embedded-linux-x64": "1.99.0", "sass-embedded-unknown-all": "1.99.0", "sass-embedded-win32-arm64": "1.99.0", "sass-embedded-win32-x64": "1.99.0" }, "bin": { "sass": "dist/bin/sass.js" } }, "sha512-gF/juR1aX02lZHkvwxdF80SapkQeg2fetoDF6gIQkNbSw5YEUFspMkyGTjPjgZSgIHuZpy+Wz4PlebKnLXMjdg=="],
|
||||||
|
|
||||||
"sass-embedded-all-unknown": ["sass-embedded-all-unknown@1.98.0", "", { "dependencies": { "sass": "1.98.0" }, "cpu": [ "!arm", "!x64", "!arm64", ] }, "sha512-6n4RyK7/1mhdfYvpP3CClS3fGoYqDvRmLClCESS6I7+SAzqjxvGG6u5Fo+cb1nrPNbbilgbM4QKdgcgWHO9NCA=="],
|
"sass-embedded-all-unknown": ["sass-embedded-all-unknown@1.99.0", "", { "dependencies": { "sass": "1.99.0" }, "cpu": [ "!arm", "!x64", "!arm64", ] }, "sha512-qPIRG8Uhjo6/OKyAKixTnwMliTz+t9K6Duk0mx5z+K7n0Ts38NSJz2sjDnc7cA/8V9Lb3q09H38dZ1CLwD+ssw=="],
|
||||||
|
|
||||||
"sass-embedded-android-arm": ["sass-embedded-android-arm@1.98.0", "", { "os": "android", "cpu": "arm" }, "sha512-LjGiMhHgu7VL1n7EJxTCre1x14bUsWd9d3dnkS2rku003IWOI/fxc7OXgaKagoVzok1kv09rzO3vFXJR5ZeONQ=="],
|
"sass-embedded-android-arm": ["sass-embedded-android-arm@1.99.0", "", { "os": "android", "cpu": "arm" }, "sha512-EHvJ0C7/VuP78Qr6f8gIUVUmCqIorEQpw2yp3cs3SMg02ZuumlhjXvkTcFBxHmFdFR23vTNk1WnhY6QSeV1nFQ=="],
|
||||||
|
|
||||||
"sass-embedded-android-arm64": ["sass-embedded-android-arm64@1.98.0", "", { "os": "android", "cpu": "arm64" }, "sha512-M9Ra98A6vYJHpwhoC/5EuH1eOshQ9ZyNwC8XifUDSbRl/cGeQceT1NReR9wFj3L7s1pIbmes1vMmaY2np0uAKQ=="],
|
"sass-embedded-android-arm64": ["sass-embedded-android-arm64@1.99.0", "", { "os": "android", "cpu": "arm64" }, "sha512-fNHhdnP23yqqieCbAdym4N47AleSwjbNt6OYIYx4DdACGdtERjQB4iOX/TaKsW034MupfF7SjnAAK8w7Ptldtg=="],
|
||||||
|
|
||||||
"sass-embedded-android-riscv64": ["sass-embedded-android-riscv64@1.98.0", "", { "os": "android", "cpu": "none" }, "sha512-WPe+0NbaJIZE1fq/RfCZANMeIgmy83x4f+SvFOG7LhUthHpZWcOcrPTsCKKmN3xMT3iw+4DXvqTYOCYGRL3hcQ=="],
|
"sass-embedded-android-riscv64": ["sass-embedded-android-riscv64@1.99.0", "", { "os": "android", "cpu": "none" }, "sha512-4zqDFRvgGDTL5vTHuIhRxUpXFoh0Cy7Gm5Ywk19ASd8Settmd14YdPRZPmMxfgS1GH292PofV1fq1ifiSEJWBw=="],
|
||||||
|
|
||||||
"sass-embedded-android-x64": ["sass-embedded-android-x64@1.98.0", "", { "os": "android", "cpu": "x64" }, "sha512-zrD25dT7OHPEgLWuPEByybnIfx4rnCtfge4clBgjZdZ3lF6E7qNLRBtSBmoFflh6Vg0RlEjJo5VlpnTMBM5MQQ=="],
|
"sass-embedded-android-x64": ["sass-embedded-android-x64@1.99.0", "", { "os": "android", "cpu": "x64" }, "sha512-Uk53k/dGYt04RjOL4gFjZ0Z9DH9DKh8IA8WsXUkNqsxerAygoy3zqRBS2zngfE9K2jiOM87q+1R1p87ory9oQQ=="],
|
||||||
|
|
||||||
"sass-embedded-darwin-arm64": ["sass-embedded-darwin-arm64@1.98.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cgr1z9rBnCdMf8K+JabIaYd9Rag2OJi5mjq08XJfbJGMZV/TA6hFJCLGkr5/+ZOn4/geTM5/3aSfQ8z5EIJAOg=="],
|
"sass-embedded-darwin-arm64": ["sass-embedded-darwin-arm64@1.99.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-u61/7U3IGLqoO6gL+AHeiAtlTPFwJK1+964U8gp45ZN0hzh1yrARf5O1mivXv8NnNgJvbG2wWJbiNZP0lG/lTg=="],
|
||||||
|
|
||||||
"sass-embedded-darwin-x64": ["sass-embedded-darwin-x64@1.98.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-OLBOCs/NPeiMqTdOrMFbVHBQFj19GS3bSVSxIhcCq16ZyhouUkYJEZjxQgzv9SWA2q6Ki8GCqp4k6jMeUY9dcA=="],
|
"sass-embedded-darwin-x64": ["sass-embedded-darwin-x64@1.99.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-j/kkk/NcXdIameLezSfXjgCiBkVcA+G60AXrX768/3g0miK1g7M9dj7xOhCb1i7/wQeiEI3rw2LLuO63xRIn4A=="],
|
||||||
|
|
||||||
"sass-embedded-linux-arm": ["sass-embedded-linux-arm@1.98.0", "", { "os": "linux", "cpu": "arm" }, "sha512-03baQZCxVyEp8v1NWBRlzGYrmVT/LK7ZrHlF1piscGiGxwfdxoLXVuxsylx3qn/dD/4i/rh7Bzk7reK1br9jvQ=="],
|
"sass-embedded-linux-arm": ["sass-embedded-linux-arm@1.99.0", "", { "os": "linux", "cpu": "arm" }, "sha512-d4IjJZrX2+AwB2YCy1JySwdptJECNP/WfAQLUl8txI3ka8/d3TUI155GtelnoZUkio211PwIeFvvAeZ9RXPQnw=="],
|
||||||
|
|
||||||
"sass-embedded-linux-arm64": ["sass-embedded-linux-arm64@1.98.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-axOE3t2MTBwCtkUCbrdM++Gj0gC0fdHJPrgzQ+q1WUmY9NoNMGqflBtk5mBZaWUeha2qYO3FawxCB8lctFwCtw=="],
|
"sass-embedded-linux-arm64": ["sass-embedded-linux-arm64@1.99.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-btNcFpItcB56L40n8hDeL7sRSMLDXQ56nB5h2deddJx1n60rpKSElJmkaDGHtpkrY+CTtDRV0FZDjHeTJddYew=="],
|
||||||
|
|
||||||
"sass-embedded-linux-musl-arm": ["sass-embedded-linux-musl-arm@1.98.0", "", { "os": "linux", "cpu": "arm" }, "sha512-OBkjTDPYR4hSaueOGIM6FDpl9nt/VZwbSRpbNu9/eEJcxE8G/vynRugW8KRZmCFjPy8j/jkGBvvS+k9iOqKV3g=="],
|
"sass-embedded-linux-musl-arm": ["sass-embedded-linux-musl-arm@1.99.0", "", { "os": "linux", "cpu": "arm" }, "sha512-2gvHOupgIw3ytatXT4nFUow71LFbuOZPEwG+HUzcNQDH8ue4Ez8cr03vsv5MDv3lIjOKcXwDvWD980t18MwkoQ=="],
|
||||||
|
|
||||||
"sass-embedded-linux-musl-arm64": ["sass-embedded-linux-musl-arm64@1.98.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-LeqNxQA8y4opjhe68CcFvMzCSrBuJqYVFbwElEj9bagHXQHTp9xVPJRn6VcrC+0VLEDq13HVXMv7RslIuU0zmA=="],
|
"sass-embedded-linux-musl-arm64": ["sass-embedded-linux-musl-arm64@1.99.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Hi2bt/IrM5P4FBKz6EcHAlniwfpoz9mnTdvSd58y+avA3SANM76upIkAdSayA8ZGwyL3gZokru1AKDPF9lJDNw=="],
|
||||||
|
|
||||||
"sass-embedded-linux-musl-riscv64": ["sass-embedded-linux-musl-riscv64@1.98.0", "", { "os": "linux", "cpu": "none" }, "sha512-7w6hSuOHKt8FZsmjRb3iGSxEzM87fO9+M8nt5JIQYMhHTj5C+JY/vcske0v715HCVj5e1xyTnbGXf8FcASeAIw=="],
|
"sass-embedded-linux-musl-riscv64": ["sass-embedded-linux-musl-riscv64@1.99.0", "", { "os": "linux", "cpu": "none" }, "sha512-mKqGvVaJ9rHMqyZsF0kikQe4NO0f4osb67+X6nLhBiVDKvyazQHJ3zJQreNefIE36yL2sjHIclSB//MprzaQDg=="],
|
||||||
|
|
||||||
"sass-embedded-linux-musl-x64": ["sass-embedded-linux-musl-x64@1.98.0", "", { "os": "linux", "cpu": "x64" }, "sha512-QikNyDEJOVqPmxyCFkci8ZdCwEssdItfjQFJB+D+Uy5HFqcS5Lv3d3GxWNX/h1dSb23RPyQdQc267ok5SbEyJw=="],
|
"sass-embedded-linux-musl-x64": ["sass-embedded-linux-musl-x64@1.99.0", "", { "os": "linux", "cpu": "x64" }, "sha512-huhgOMmOc30r7CH7qbRbT9LerSEGSnWuS4CYNOskr9BvNeQp4dIneFufNRGZ7hkOAxUM8DglxIZJN/cyAT95Ew=="],
|
||||||
|
|
||||||
"sass-embedded-linux-riscv64": ["sass-embedded-linux-riscv64@1.98.0", "", { "os": "linux", "cpu": "none" }, "sha512-E7fNytc/v4xFBQKzgzBddV/jretA4ULAPO6XmtBiQu4zZBdBozuSxsQLe2+XXeb0X4S2GIl72V7IPABdqke/vA=="],
|
"sass-embedded-linux-riscv64": ["sass-embedded-linux-riscv64@1.99.0", "", { "os": "linux", "cpu": "none" }, "sha512-mevFPIFAVhrH90THifxLfOntFmHtcEKOcdWnep2gJ0X4DVva4AiVIRlQe/7w9JFx5+gnDRE1oaJJkzuFUuYZsA=="],
|
||||||
|
|
||||||
"sass-embedded-linux-x64": ["sass-embedded-linux-x64@1.98.0", "", { "os": "linux", "cpu": "x64" }, "sha512-VsvP0t/uw00mMNPv3vwyYKUrFbqzxQHnRMO+bHdAMjvLw4NFf6mscpym9Bzf+NXwi1ZNKnB6DtXjmcpcvqFqYg=="],
|
"sass-embedded-linux-x64": ["sass-embedded-linux-x64@1.99.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9k7IkULqIZdCIVt4Mboryt6vN8Mjmm3EhI1P3mClU5y5i3wLK5ExC3cbVWk047KsID/fvB1RLslqghXJx5BoxA=="],
|
||||||
|
|
||||||
"sass-embedded-unknown-all": ["sass-embedded-unknown-all@1.98.0", "", { "dependencies": { "sass": "1.98.0" }, "os": [ "!linux", "!win32", "!darwin", "!android", ] }, "sha512-C4MMzcAo3oEDQnW7L8SBgB9F2Fq5qHPnaYTZRMOH3Mp/7kM4OooBInXpCiiFjLnjY95hzP4KyctVx0uYR6MYlQ=="],
|
"sass-embedded-unknown-all": ["sass-embedded-unknown-all@1.99.0", "", { "dependencies": { "sass": "1.99.0" }, "os": [ "!linux", "!win32", "!darwin", "!android", ] }, "sha512-P7MxiUtL/XzGo3PX0CaB8lNNEFLQWKikPA8pbKytx9ZCLZSDkt2NJcdAbblB/sqMs4AV3EK2NadV8rI/diq3xg=="],
|
||||||
|
|
||||||
"sass-embedded-win32-arm64": ["sass-embedded-win32-arm64@1.98.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-nP/10xbAiPbhQkMr3zQfXE4TuOxPzWRQe1Hgbi90jv2R4TbzbqQTuZVOaJf7KOAN4L2Bo6XCTRjK5XkVnwZuwQ=="],
|
"sass-embedded-win32-arm64": ["sass-embedded-win32-arm64@1.99.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8whpsW7S+uO8QApKfQuc36m3P9EISzbVZOgC79goob4qGy09u8Gz/rYvw8h1prJDSjltpHGhOzBE6LDz7WvzVw=="],
|
||||||
|
|
||||||
"sass-embedded-win32-x64": ["sass-embedded-win32-x64@1.98.0", "", { "os": "win32", "cpu": "x64" }, "sha512-/lbrVsfbcbdZQ5SJCWcV0NVPd6YRs+FtAnfedp4WbCkO/ZO7Zt/58MvI4X2BVpRY/Nt5ZBo1/7v2gYcQ+J4svQ=="],
|
"sass-embedded-win32-x64": ["sass-embedded-win32-x64@1.99.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ipuOv1R2K4MHeuCEAZGpuUbAgma4gb0sdacyrTjJtMOy/OY9UvWfVlwErdB09KIkp4fPDpQJDJfvYN6bC8jeNg=="],
|
||||||
|
|
||||||
"scslre": ["scslre@0.3.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.8.0", "refa": "^0.12.0", "regexp-ast-analysis": "^0.7.0" } }, "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ=="],
|
"scslre": ["scslre@0.3.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.8.0", "refa": "^0.12.0", "regexp-ast-analysis": "^0.7.0" } }, "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ=="],
|
||||||
|
|
||||||
|
|
@ -1648,6 +1648,8 @@
|
||||||
|
|
||||||
"browserslist-to-esbuild/meow": ["meow@13.2.0", "", {}, "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA=="],
|
"browserslist-to-esbuild/meow": ["meow@13.2.0", "", {}, "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA=="],
|
||||||
|
|
||||||
|
"bun-types/@types/node": ["@types/node@25.5.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw=="],
|
||||||
|
|
||||||
"cacheable/keyv": ["keyv@5.6.0", "", { "dependencies": { "@keyv/serialize": "^1.1.1" } }, "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw=="],
|
"cacheable/keyv": ["keyv@5.6.0", "", { "dependencies": { "@keyv/serialize": "^1.1.1" } }, "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw=="],
|
||||||
|
|
||||||
"clean-regexp/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="],
|
"clean-regexp/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="],
|
||||||
|
|
@ -1676,6 +1678,10 @@
|
||||||
|
|
||||||
"rolldown/@oxc-project/types": ["@oxc-project/types@0.122.0", "", {}, "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA=="],
|
"rolldown/@oxc-project/types": ["@oxc-project/types@0.122.0", "", {}, "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA=="],
|
||||||
|
|
||||||
|
"sass-embedded-all-unknown/sass": ["sass@1.99.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q=="],
|
||||||
|
|
||||||
|
"sass-embedded-unknown-all/sass": ["sass@1.99.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q=="],
|
||||||
|
|
||||||
"stylelint/file-entry-cache": ["file-entry-cache@11.1.2", "", { "dependencies": { "flat-cache": "^6.1.20" } }, "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log=="],
|
"stylelint/file-entry-cache": ["file-entry-cache@11.1.2", "", { "dependencies": { "flat-cache": "^6.1.20" } }, "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log=="],
|
||||||
|
|
||||||
"stylelint/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
|
"stylelint/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
|
||||||
|
|
|
||||||
|
|
@ -53,11 +53,10 @@
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.5",
|
"php": ">=8.5",
|
||||||
"php-standard-library/php-standard-library": "^4.3",
|
|
||||||
"composer/installers": "^2.3",
|
"composer/installers": "^2.3",
|
||||||
"crell/fp": "^1.0",
|
"crell/fp": "^1.0",
|
||||||
"htmlburger/carbon-fields": "^3.6.9",
|
"htmlburger/carbon-fields": "^3.6.9",
|
||||||
"illuminate/support": "^12.56",
|
"illuminate/support": "^13.3",
|
||||||
"laravel/helpers": "^1.8.3",
|
"laravel/helpers": "^1.8.3",
|
||||||
"log1x/wp-smtp": "^1.0.2",
|
"log1x/wp-smtp": "^1.0.2",
|
||||||
"lstrojny/functional-php": "^1.18",
|
"lstrojny/functional-php": "^1.18",
|
||||||
|
|
@ -67,9 +66,10 @@
|
||||||
"roots/bedrock-autoloader": "^1.1.0",
|
"roots/bedrock-autoloader": "^1.1.0",
|
||||||
"roots/bedrock-disallow-indexing": "^2.1",
|
"roots/bedrock-disallow-indexing": "^2.1",
|
||||||
"roots/wordpress": "^6.9.4",
|
"roots/wordpress": "^6.9.4",
|
||||||
|
"php-standard-library/php-standard-library": "^6.1.1",
|
||||||
"roots/wp-config": "^1.0",
|
"roots/wp-config": "^1.0",
|
||||||
"stripe/stripe-php": "^19.4.1",
|
"stripe/stripe-php": "^19.4.1",
|
||||||
"symfony/uid": "^8.0.4",
|
"symfony/uid": "^8.0.8",
|
||||||
"timber/timber": "^2.3.3",
|
"timber/timber": "^2.3.3",
|
||||||
"vlucas/phpdotenv": "^5.6.3",
|
"vlucas/phpdotenv": "^5.6.3",
|
||||||
"wpackagist-plugin/falcon": "^2.9.3",
|
"wpackagist-plugin/falcon": "^2.9.3",
|
||||||
|
|
@ -78,7 +78,7 @@
|
||||||
"wpackagist-plugin/redis-cache": "^2.7.0",
|
"wpackagist-plugin/redis-cache": "^2.7.0",
|
||||||
"wpackagist-plugin/wc-multishipping": "^3.0.2",
|
"wpackagist-plugin/wc-multishipping": "^3.0.2",
|
||||||
"wpackagist-plugin/woo-preview-emails": "^2.2.14",
|
"wpackagist-plugin/woo-preview-emails": "^2.2.14",
|
||||||
"wpackagist-plugin/woocommerce": "^10.6.1",
|
"wpackagist-plugin/woocommerce": "^10.6.2",
|
||||||
"wpackagist-plugin/wp-mail-logging": "^1.16.0",
|
"wpackagist-plugin/wp-mail-logging": "^1.16.0",
|
||||||
"wpackagist-plugin/wp-mail-smtp": "^4.7.1",
|
"wpackagist-plugin/wp-mail-smtp": "^4.7.1",
|
||||||
"wpackagist-plugin/wp-openapi": "^1.0.27",
|
"wpackagist-plugin/wp-openapi": "^1.0.27",
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
"friendsofphp/php-cs-fixer": "^3.94.2",
|
"friendsofphp/php-cs-fixer": "^3.94.2",
|
||||||
"php-standard-library/phpstan-extension": "^2.1",
|
"php-standard-library/phpstan-extension": "^2.1",
|
||||||
"phpstan/extension-installer": "^1.4.3",
|
"phpstan/extension-installer": "^1.4.3",
|
||||||
"phpstan/phpstan": "^2.1.45",
|
"phpstan/phpstan": "^2.1.46",
|
||||||
"roave/security-advisories": "dev-latest",
|
"roave/security-advisories": "dev-latest",
|
||||||
"szepeviktor/phpstan-wordpress": "2.x-dev",
|
"szepeviktor/phpstan-wordpress": "2.x-dev",
|
||||||
"vincentlanglet/twig-cs-fixer": "^3.14"
|
"vincentlanglet/twig-cs-fixer": "^3.14"
|
||||||
|
|
|
||||||
443
composer.lock
generated
443
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "d29045fefbe0199423856ab6ff3d9888",
|
"content-hash": "8fa8994b91f6fdfb99db59a67eb54ac5",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "carbonphp/carbon-doctrine-types",
|
"name": "carbonphp/carbon-doctrine-types",
|
||||||
|
|
@ -585,35 +585,34 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/collections",
|
"name": "illuminate/collections",
|
||||||
"version": "v12.56.0",
|
"version": "v13.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/collections.git",
|
"url": "https://github.com/illuminate/collections.git",
|
||||||
"reference": "83313b009c4afb6f02dbc090bdb67809756eefa2"
|
"reference": "389c5008087f8c48d35b85585b4315107b5a0f9e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/83313b009c4afb6f02dbc090bdb67809756eefa2",
|
"url": "https://api.github.com/repos/illuminate/collections/zipball/389c5008087f8c48d35b85585b4315107b5a0f9e",
|
||||||
"reference": "83313b009c4afb6f02dbc090bdb67809756eefa2",
|
"reference": "389c5008087f8c48d35b85585b4315107b5a0f9e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"illuminate/conditionable": "^12.0",
|
"illuminate/conditionable": "^13.0",
|
||||||
"illuminate/contracts": "^12.0",
|
"illuminate/contracts": "^13.0",
|
||||||
"illuminate/macroable": "^12.0",
|
"illuminate/macroable": "^13.0",
|
||||||
"php": "^8.2",
|
"php": "^8.3",
|
||||||
"symfony/polyfill-php83": "^1.33",
|
|
||||||
"symfony/polyfill-php84": "^1.33",
|
"symfony/polyfill-php84": "^1.33",
|
||||||
"symfony/polyfill-php85": "^1.33"
|
"symfony/polyfill-php85": "^1.33"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"illuminate/http": "Required to convert collections to API resources (^12.0).",
|
"illuminate/http": "Required to convert collections to API resources (^13.0).",
|
||||||
"symfony/var-dumper": "Required to use the dump method (^7.2)."
|
"symfony/var-dumper": "Required to use the dump method (^7.4 || ^8.0)."
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "12.x-dev"
|
"dev-master": "13.0.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
@ -641,29 +640,29 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2026-03-11T14:13:25+00:00"
|
"time": "2026-03-30T19:06:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/conditionable",
|
"name": "illuminate/conditionable",
|
||||||
"version": "v12.56.0",
|
"version": "v13.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/conditionable.git",
|
"url": "https://github.com/illuminate/conditionable.git",
|
||||||
"reference": "ec677967c1f2faf90b8428919124d2184a4c9b49"
|
"reference": "7f1ef52d9a346f829421b296adfb7644a951b216"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/conditionable/zipball/ec677967c1f2faf90b8428919124d2184a4c9b49",
|
"url": "https://api.github.com/repos/illuminate/conditionable/zipball/7f1ef52d9a346f829421b296adfb7644a951b216",
|
||||||
"reference": "ec677967c1f2faf90b8428919124d2184a4c9b49",
|
"reference": "7f1ef52d9a346f829421b296adfb7644a951b216",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2"
|
"php": "^8.3"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "12.x-dev"
|
"dev-master": "13.0.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
@ -687,31 +686,31 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2025-05-13T15:08:45+00:00"
|
"time": "2026-02-25T16:07:55+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/contracts",
|
"name": "illuminate/contracts",
|
||||||
"version": "v12.56.0",
|
"version": "v13.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/contracts.git",
|
"url": "https://github.com/illuminate/contracts.git",
|
||||||
"reference": "099fd9b56ccaf776facaa27699b960a3f2451127"
|
"reference": "8796cc5f30124b81210ae2f3b2ae0f69ad4fc7f8"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/099fd9b56ccaf776facaa27699b960a3f2451127",
|
"url": "https://api.github.com/repos/illuminate/contracts/zipball/8796cc5f30124b81210ae2f3b2ae0f69ad4fc7f8",
|
||||||
"reference": "099fd9b56ccaf776facaa27699b960a3f2451127",
|
"reference": "8796cc5f30124b81210ae2f3b2ae0f69ad4fc7f8",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.3",
|
||||||
"psr/container": "^1.1.1|^2.0.1",
|
"psr/container": "^1.1.1 || ^2.0.1",
|
||||||
"psr/simple-cache": "^1.0|^2.0|^3.0"
|
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "12.x-dev"
|
"dev-master": "13.0.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
@ -735,20 +734,20 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2026-02-20T14:37:40+00:00"
|
"time": "2026-03-26T17:13:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/macroable",
|
"name": "illuminate/macroable",
|
||||||
"version": "v12.56.0",
|
"version": "v13.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/macroable.git",
|
"url": "https://github.com/illuminate/macroable.git",
|
||||||
"reference": "e862e5648ee34004fa56046b746f490dfa86c613"
|
"reference": "f108cb3a8680f26e23c6ce7367c64525412d85b0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/macroable/zipball/e862e5648ee34004fa56046b746f490dfa86c613",
|
"url": "https://api.github.com/repos/illuminate/macroable/zipball/f108cb3a8680f26e23c6ce7367c64525412d85b0",
|
||||||
"reference": "e862e5648ee34004fa56046b746f490dfa86c613",
|
"reference": "f108cb3a8680f26e23c6ce7367c64525412d85b0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|
@ -757,7 +756,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "12.x-dev"
|
"dev-master": "13.0.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
@ -781,31 +780,31 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2024-07-23T16:31:01+00:00"
|
"time": "2026-03-28T19:16:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/reflection",
|
"name": "illuminate/reflection",
|
||||||
"version": "v12.56.0",
|
"version": "v13.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/reflection.git",
|
"url": "https://github.com/illuminate/reflection.git",
|
||||||
"reference": "348cf5da9de89b596d7723be6425fb048e2bf4bb"
|
"reference": "4fe1659f068ab2b50131cf906c5d8bba4e34df0c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/reflection/zipball/348cf5da9de89b596d7723be6425fb048e2bf4bb",
|
"url": "https://api.github.com/repos/illuminate/reflection/zipball/4fe1659f068ab2b50131cf906c5d8bba4e34df0c",
|
||||||
"reference": "348cf5da9de89b596d7723be6425fb048e2bf4bb",
|
"reference": "4fe1659f068ab2b50131cf906c5d8bba4e34df0c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"illuminate/collections": "^12.0",
|
"illuminate/collections": "^13.0",
|
||||||
"illuminate/contracts": "^12.0",
|
"illuminate/contracts": "^13.0",
|
||||||
"php": "^8.2"
|
"php": "^8.3"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "12.x-dev"
|
"dev-master": "13.0.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
@ -832,20 +831,20 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2026-02-25T15:25:18+00:00"
|
"time": "2026-03-10T20:04:12+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/support",
|
"name": "illuminate/support",
|
||||||
"version": "v12.56.0",
|
"version": "v13.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/support.git",
|
"url": "https://github.com/illuminate/support.git",
|
||||||
"reference": "cd8a3c5a95501b9ae0828ac785b5af5ffccdca45"
|
"reference": "f31e168e236a90d96d7894cd1f107b1ba095de69"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/support/zipball/cd8a3c5a95501b9ae0828ac785b5af5ffccdca45",
|
"url": "https://api.github.com/repos/illuminate/support/zipball/f31e168e236a90d96d7894cd1f107b1ba095de69",
|
||||||
"reference": "cd8a3c5a95501b9ae0828ac785b5af5ffccdca45",
|
"reference": "f31e168e236a90d96d7894cd1f107b1ba095de69",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|
@ -853,14 +852,13 @@
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-filter": "*",
|
"ext-filter": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"illuminate/collections": "^12.0",
|
"illuminate/collections": "^13.0",
|
||||||
"illuminate/conditionable": "^12.0",
|
"illuminate/conditionable": "^13.0",
|
||||||
"illuminate/contracts": "^12.0",
|
"illuminate/contracts": "^13.0",
|
||||||
"illuminate/macroable": "^12.0",
|
"illuminate/macroable": "^13.0",
|
||||||
"illuminate/reflection": "^12.0",
|
"illuminate/reflection": "^13.0",
|
||||||
"nesbot/carbon": "^3.8.4",
|
"nesbot/carbon": "^3.8.4",
|
||||||
"php": "^8.2",
|
"php": "^8.3",
|
||||||
"symfony/polyfill-php83": "^1.33",
|
|
||||||
"symfony/polyfill-php85": "^1.33",
|
"symfony/polyfill-php85": "^1.33",
|
||||||
"voku/portable-ascii": "^2.0.2"
|
"voku/portable-ascii": "^2.0.2"
|
||||||
},
|
},
|
||||||
|
|
@ -871,20 +869,20 @@
|
||||||
"spatie/once": "*"
|
"spatie/once": "*"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"illuminate/filesystem": "Required to use the Composer class (^12.0).",
|
"illuminate/filesystem": "Required to use the Composer class (^13.0).",
|
||||||
"laravel/serializable-closure": "Required to use the once function (^1.3|^2.0).",
|
"laravel/serializable-closure": "Required to use the once function (^2.0.10).",
|
||||||
"league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.7).",
|
"league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.7).",
|
||||||
"league/uri": "Required to use the Uri class (^7.5.1).",
|
"league/uri": "Required to use the Uri class (^7.5.1).",
|
||||||
"ramsey/uuid": "Required to use Str::uuid() (^4.7).",
|
"ramsey/uuid": "Required to use Str::uuid() (^4.7).",
|
||||||
"symfony/process": "Required to use the Composer class (^7.2).",
|
"symfony/process": "Required to use the Composer class (^7.4 || ^8.0).",
|
||||||
"symfony/uid": "Required to use Str::ulid() (^7.2).",
|
"symfony/uid": "Required to use Str::ulid() (^7.4 || ^8.0).",
|
||||||
"symfony/var-dumper": "Required to use the dd function (^7.2).",
|
"symfony/var-dumper": "Required to use the dd function (^7.4 || ^8.0).",
|
||||||
"vlucas/phpdotenv": "Required to use the Env class and env helper (^5.6.1)."
|
"vlucas/phpdotenv": "Required to use the Env class and env helper (^5.6.1)."
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "12.x-dev"
|
"dev-master": "13.0.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
@ -912,7 +910,7 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2026-03-17T13:55:49+00:00"
|
"time": "2026-03-30T13:32:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/helpers",
|
"name": "laravel/helpers",
|
||||||
|
|
@ -1382,16 +1380,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-standard-library/php-standard-library",
|
"name": "php-standard-library/php-standard-library",
|
||||||
"version": "4.3.0",
|
"version": "6.1.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/php-standard-library/php-standard-library.git",
|
"url": "https://github.com/php-standard-library/php-standard-library.git",
|
||||||
"reference": "74c95be0214eb7ea39146ed00ac4eb71b45d787b"
|
"reference": "b7d151cb1c21589cdde17a6adff50d3375de0919"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/php-standard-library/php-standard-library/zipball/74c95be0214eb7ea39146ed00ac4eb71b45d787b",
|
"url": "https://api.github.com/repos/php-standard-library/php-standard-library/zipball/b7d151cb1c21589cdde17a6adff50d3375de0919",
|
||||||
"reference": "74c95be0214eb7ea39146ed00ac4eb71b45d787b",
|
"reference": "b7d151cb1c21589cdde17a6adff50d3375de0919",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|
@ -1399,16 +1397,88 @@
|
||||||
"ext-intl": "*",
|
"ext-intl": "*",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
|
"ext-openssl": "*",
|
||||||
"ext-sodium": "*",
|
"ext-sodium": "*",
|
||||||
"php": "~8.3.0 || ~8.4.0 || ~8.5.0",
|
"php": "~8.4.0 || ~8.5.0",
|
||||||
"revolt/event-loop": "^1.0.7"
|
"revolt/event-loop": "^1.0.8"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"azjezz/psl": "*"
|
||||||
|
},
|
||||||
|
"replace": {
|
||||||
|
"php-standard-library/ansi": "self.version",
|
||||||
|
"php-standard-library/async": "self.version",
|
||||||
|
"php-standard-library/binary": "self.version",
|
||||||
|
"php-standard-library/cache": "self.version",
|
||||||
|
"php-standard-library/channel": "self.version",
|
||||||
|
"php-standard-library/cidr": "self.version",
|
||||||
|
"php-standard-library/class": "self.version",
|
||||||
|
"php-standard-library/collection": "self.version",
|
||||||
|
"php-standard-library/comparison": "self.version",
|
||||||
|
"php-standard-library/compression": "self.version",
|
||||||
|
"php-standard-library/crypto": "self.version",
|
||||||
|
"php-standard-library/data-structure": "self.version",
|
||||||
|
"php-standard-library/date-time": "self.version",
|
||||||
|
"php-standard-library/default": "self.version",
|
||||||
|
"php-standard-library/dict": "self.version",
|
||||||
|
"php-standard-library/either": "self.version",
|
||||||
|
"php-standard-library/encoding": "self.version",
|
||||||
|
"php-standard-library/env": "self.version",
|
||||||
|
"php-standard-library/file": "self.version",
|
||||||
|
"php-standard-library/filesystem": "self.version",
|
||||||
|
"php-standard-library/foundation": "self.version",
|
||||||
|
"php-standard-library/fun": "self.version",
|
||||||
|
"php-standard-library/graph": "self.version",
|
||||||
|
"php-standard-library/h2": "self.version",
|
||||||
|
"php-standard-library/hash": "self.version",
|
||||||
|
"php-standard-library/hpack": "self.version",
|
||||||
|
"php-standard-library/html": "self.version",
|
||||||
|
"php-standard-library/interface": "self.version",
|
||||||
|
"php-standard-library/interoperability": "self.version",
|
||||||
|
"php-standard-library/io": "self.version",
|
||||||
|
"php-standard-library/ip": "self.version",
|
||||||
|
"php-standard-library/iri": "self.version",
|
||||||
|
"php-standard-library/iter": "self.version",
|
||||||
|
"php-standard-library/json": "self.version",
|
||||||
|
"php-standard-library/locale": "self.version",
|
||||||
|
"php-standard-library/math": "self.version",
|
||||||
|
"php-standard-library/network": "self.version",
|
||||||
|
"php-standard-library/observer": "self.version",
|
||||||
|
"php-standard-library/option": "self.version",
|
||||||
|
"php-standard-library/os": "self.version",
|
||||||
|
"php-standard-library/password": "self.version",
|
||||||
|
"php-standard-library/process": "self.version",
|
||||||
|
"php-standard-library/promise": "self.version",
|
||||||
|
"php-standard-library/pseudo-random": "self.version",
|
||||||
|
"php-standard-library/punycode": "self.version",
|
||||||
|
"php-standard-library/random-sequence": "self.version",
|
||||||
|
"php-standard-library/range": "self.version",
|
||||||
|
"php-standard-library/regex": "self.version",
|
||||||
|
"php-standard-library/result": "self.version",
|
||||||
|
"php-standard-library/runtime": "self.version",
|
||||||
|
"php-standard-library/secure-random": "self.version",
|
||||||
|
"php-standard-library/shell": "self.version",
|
||||||
|
"php-standard-library/socks": "self.version",
|
||||||
|
"php-standard-library/str": "self.version",
|
||||||
|
"php-standard-library/tcp": "self.version",
|
||||||
|
"php-standard-library/terminal": "self.version",
|
||||||
|
"php-standard-library/tls": "self.version",
|
||||||
|
"php-standard-library/trait": "self.version",
|
||||||
|
"php-standard-library/tree": "self.version",
|
||||||
|
"php-standard-library/type": "self.version",
|
||||||
|
"php-standard-library/udp": "self.version",
|
||||||
|
"php-standard-library/unix": "self.version",
|
||||||
|
"php-standard-library/uri": "self.version",
|
||||||
|
"php-standard-library/url": "self.version",
|
||||||
|
"php-standard-library/vec": "self.version"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"carthage-software/mago": "^1.6.0",
|
"carthage-software/mago": "^1.15.2",
|
||||||
"infection/infection": "^0.31.2",
|
"ext-brotli": "*",
|
||||||
"php-coveralls/php-coveralls": "^2.7.0",
|
"infection/infection": "^0.32.6",
|
||||||
"phpbench/phpbench": "^1.4.0",
|
"php-coveralls/php-coveralls": "^2.9.1",
|
||||||
"phpunit/phpunit": "^9.6.22"
|
"phpbench/phpbench": "^1.5.1",
|
||||||
|
"phpunit/phpunit": "^13.0.5"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"php-standard-library/phpstan-extension": "PHPStan integration",
|
"php-standard-library/phpstan-extension": "PHPStan integration",
|
||||||
|
|
@ -1416,17 +1486,132 @@
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"thanks": {
|
"branch-alias": {
|
||||||
"url": "https://github.com/hhvm/hsl",
|
"dev-next": "6.1.x-dev"
|
||||||
"name": "hhvm/hsl"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"files": [
|
"files": [
|
||||||
"src/bootstrap.php"
|
"packages/foundation/src/Psl/bootstrap.php",
|
||||||
|
"packages/ansi/src/Psl/bootstrap.php",
|
||||||
|
"packages/async/src/Psl/bootstrap.php",
|
||||||
|
"packages/binary/src/Psl/bootstrap.php",
|
||||||
|
"packages/cache/src/Psl/bootstrap.php",
|
||||||
|
"packages/channel/src/Psl/bootstrap.php",
|
||||||
|
"packages/class/src/Psl/bootstrap.php",
|
||||||
|
"packages/comparison/src/Psl/bootstrap.php",
|
||||||
|
"packages/compression/src/Psl/bootstrap.php",
|
||||||
|
"packages/crypto/src/Psl/bootstrap.php",
|
||||||
|
"packages/date-time/src/Psl/bootstrap.php",
|
||||||
|
"packages/dict/src/Psl/bootstrap.php",
|
||||||
|
"packages/encoding/src/Psl/bootstrap.php",
|
||||||
|
"packages/env/src/Psl/bootstrap.php",
|
||||||
|
"packages/file/src/Psl/bootstrap.php",
|
||||||
|
"packages/filesystem/src/Psl/bootstrap.php",
|
||||||
|
"packages/fun/src/Psl/bootstrap.php",
|
||||||
|
"packages/graph/src/Psl/bootstrap.php",
|
||||||
|
"packages/h2/src/Psl/bootstrap.php",
|
||||||
|
"packages/hash/src/Psl/bootstrap.php",
|
||||||
|
"packages/hpack/src/Psl/bootstrap.php",
|
||||||
|
"packages/html/src/Psl/bootstrap.php",
|
||||||
|
"packages/interface/src/Psl/bootstrap.php",
|
||||||
|
"packages/io/src/Psl/bootstrap.php",
|
||||||
|
"packages/iter/src/Psl/bootstrap.php",
|
||||||
|
"packages/json/src/Psl/bootstrap.php",
|
||||||
|
"packages/math/src/Psl/bootstrap.php",
|
||||||
|
"packages/network/src/Psl/bootstrap.php",
|
||||||
|
"packages/option/src/Psl/bootstrap.php",
|
||||||
|
"packages/os/src/Psl/bootstrap.php",
|
||||||
|
"packages/password/src/Psl/bootstrap.php",
|
||||||
|
"packages/pseudo-random/src/Psl/bootstrap.php",
|
||||||
|
"packages/punycode/src/Psl/bootstrap.php",
|
||||||
|
"packages/range/src/Psl/bootstrap.php",
|
||||||
|
"packages/regex/src/Psl/bootstrap.php",
|
||||||
|
"packages/result/src/Psl/bootstrap.php",
|
||||||
|
"packages/runtime/src/Psl/bootstrap.php",
|
||||||
|
"packages/secure-random/src/Psl/bootstrap.php",
|
||||||
|
"packages/shell/src/Psl/bootstrap.php",
|
||||||
|
"packages/socks/src/Psl/bootstrap.php",
|
||||||
|
"packages/str/src/Psl/bootstrap.php",
|
||||||
|
"packages/tcp/src/Psl/bootstrap.php",
|
||||||
|
"packages/terminal/src/Psl/bootstrap.php",
|
||||||
|
"packages/tls/src/Psl/bootstrap.php",
|
||||||
|
"packages/trait/src/Psl/bootstrap.php",
|
||||||
|
"packages/tree/src/Psl/bootstrap.php",
|
||||||
|
"packages/type/src/Psl/bootstrap.php",
|
||||||
|
"packages/udp/src/Psl/bootstrap.php",
|
||||||
|
"packages/unix/src/Psl/bootstrap.php",
|
||||||
|
"packages/uri/src/Psl/bootstrap.php",
|
||||||
|
"packages/url/src/Psl/bootstrap.php",
|
||||||
|
"packages/iri/src/Psl/bootstrap.php",
|
||||||
|
"packages/vec/src/Psl/bootstrap.php"
|
||||||
],
|
],
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Psl\\": "src/Psl"
|
"Psl\\": "packages/foundation/src/Psl/",
|
||||||
|
"Psl\\H2\\": "packages/h2/src/Psl/H2/",
|
||||||
|
"Psl\\IO\\": "packages/io/src/Psl/IO/",
|
||||||
|
"Psl\\IP\\": "packages/ip/src/Psl/IP/",
|
||||||
|
"Psl\\OS\\": "packages/os/src/Psl/OS/",
|
||||||
|
"Psl\\Env\\": "packages/env/src/Psl/Env/",
|
||||||
|
"Psl\\Fun\\": "packages/fun/src/Psl/Fun/",
|
||||||
|
"Psl\\IRI\\": "packages/iri/src/Psl/IRI/",
|
||||||
|
"Psl\\Str\\": "packages/str/src/Psl/Str/",
|
||||||
|
"Psl\\TCP\\": "packages/tcp/src/Psl/TCP/",
|
||||||
|
"Psl\\TLS\\": "packages/tls/src/Psl/TLS/",
|
||||||
|
"Psl\\UDP\\": "packages/udp/src/Psl/UDP/",
|
||||||
|
"Psl\\URI\\": "packages/uri/src/Psl/URI/",
|
||||||
|
"Psl\\URL\\": "packages/url/src/Psl/URL/",
|
||||||
|
"Psl\\Vec\\": "packages/vec/src/Psl/Vec/",
|
||||||
|
"Psl\\Ansi\\": "packages/ansi/src/Psl/Ansi/",
|
||||||
|
"Psl\\CIDR\\": "packages/cidr/src/Psl/CIDR/",
|
||||||
|
"Psl\\Dict\\": "packages/dict/src/Psl/Dict/",
|
||||||
|
"Psl\\File\\": "packages/file/src/Psl/File/",
|
||||||
|
"Psl\\Hash\\": "packages/hash/src/Psl/Hash/",
|
||||||
|
"Psl\\Html\\": "packages/html/src/Psl/Html/",
|
||||||
|
"Psl\\Iter\\": "packages/iter/src/Psl/Iter/",
|
||||||
|
"Psl\\Json\\": "packages/json/src/Psl/Json/",
|
||||||
|
"Psl\\Math\\": "packages/math/src/Psl/Math/",
|
||||||
|
"Psl\\Tree\\": "packages/tree/src/Psl/Tree/",
|
||||||
|
"Psl\\Type\\": "packages/type/src/Psl/Type/",
|
||||||
|
"Psl\\Unix\\": "packages/unix/src/Psl/Unix/",
|
||||||
|
"Psl\\Async\\": "packages/async/src/Psl/Async/",
|
||||||
|
"Psl\\Cache\\": "packages/cache/src/Psl/Cache/",
|
||||||
|
"Psl\\Class\\": "packages/class/src/Psl/Class/",
|
||||||
|
"Psl\\Graph\\": "packages/graph/src/Psl/Graph/",
|
||||||
|
"Psl\\HPACK\\": "packages/hpack/src/Psl/HPACK/",
|
||||||
|
"Psl\\Range\\": "packages/range/src/Psl/Range/",
|
||||||
|
"Psl\\Regex\\": "packages/regex/src/Psl/Regex/",
|
||||||
|
"Psl\\Shell\\": "packages/shell/src/Psl/Shell/",
|
||||||
|
"Psl\\Socks\\": "packages/socks/src/Psl/Socks/",
|
||||||
|
"Psl\\Trait\\": "packages/trait/src/Psl/Trait/",
|
||||||
|
"Psl\\Binary\\": "packages/binary/src/Psl/Binary/",
|
||||||
|
"Psl\\Crypto\\": "packages/crypto/src/Psl/Crypto/",
|
||||||
|
"Psl\\Either\\": "packages/either/src/Psl/Either/",
|
||||||
|
"Psl\\Locale\\": "packages/locale/src/Psl/Locale/",
|
||||||
|
"Psl\\Option\\": "packages/option/src/Psl/Option/",
|
||||||
|
"Psl\\Result\\": "packages/result/src/Psl/Result/",
|
||||||
|
"Psl\\Channel\\": "packages/channel/src/Psl/Channel/",
|
||||||
|
"Psl\\Default\\": "packages/default/src/Psl/Default/",
|
||||||
|
"Psl\\Network\\": "packages/network/src/Psl/Network/",
|
||||||
|
"Psl\\Process\\": "packages/process/src/Psl/Process/",
|
||||||
|
"Psl\\Promise\\": "packages/promise/src/Psl/Promise/",
|
||||||
|
"Psl\\Runtime\\": "packages/runtime/src/Psl/Runtime/",
|
||||||
|
"Psl\\DateTime\\": "packages/date-time/src/Psl/DateTime/",
|
||||||
|
"Psl\\Encoding\\": "packages/encoding/src/Psl/Encoding/",
|
||||||
|
"Psl\\Observer\\": "packages/observer/src/Psl/Observer/",
|
||||||
|
"Psl\\Password\\": "packages/password/src/Psl/Password/",
|
||||||
|
"Psl\\Punycode\\": "packages/punycode/src/Psl/Punycode/",
|
||||||
|
"Psl\\Terminal\\": "packages/terminal/src/Psl/Terminal/",
|
||||||
|
"Psl\\Interface\\": "packages/interface/src/Psl/Interface/",
|
||||||
|
"Psl\\Collection\\": "packages/collection/src/Psl/Collection/",
|
||||||
|
"Psl\\Comparison\\": "packages/comparison/src/Psl/Comparison/",
|
||||||
|
"Psl\\Filesystem\\": "packages/filesystem/src/Psl/Filesystem/",
|
||||||
|
"Psl\\Compression\\": "packages/compression/src/Psl/Compression/",
|
||||||
|
"Psl\\PseudoRandom\\": "packages/pseudo-random/src/Psl/PseudoRandom/",
|
||||||
|
"Psl\\SecureRandom\\": "packages/secure-random/src/Psl/SecureRandom/",
|
||||||
|
"Psl\\DataStructure\\": "packages/data-structure/src/Psl/DataStructure/",
|
||||||
|
"Psl\\RandomSequence\\": "packages/random-sequence/src/Psl/RandomSequence/",
|
||||||
|
"Psl\\Interoperability\\": "packages/interoperability/src/Psl/Interoperability/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
|
@ -1442,7 +1627,7 @@
|
||||||
"description": "PHP Standard Library",
|
"description": "PHP Standard Library",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/php-standard-library/php-standard-library/issues",
|
"issues": "https://github.com/php-standard-library/php-standard-library/issues",
|
||||||
"source": "https://github.com/php-standard-library/php-standard-library/tree/4.3.0"
|
"source": "https://github.com/php-standard-library/php-standard-library/tree/6.1.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|
@ -1454,7 +1639,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2026-02-24T01:58:53+00:00"
|
"time": "2026-03-20T08:09:20+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpoption/phpoption",
|
"name": "phpoption/phpoption",
|
||||||
|
|
@ -2571,86 +2756,6 @@
|
||||||
],
|
],
|
||||||
"time": "2025-01-02T08:10:11+00:00"
|
"time": "2025-01-02T08:10:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-php83",
|
|
||||||
"version": "v1.33.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-php83.git",
|
|
||||||
"reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
|
|
||||||
"reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
|
|
||||||
"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\\Php83\\": ""
|
|
||||||
},
|
|
||||||
"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.3+ features to lower PHP versions",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compatibility",
|
|
||||||
"polyfill",
|
|
||||||
"portable",
|
|
||||||
"shim"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-php83/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-07-08T02:45:35+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php84",
|
"name": "symfony/polyfill-php84",
|
||||||
"version": "v1.33.0",
|
"version": "v1.33.0",
|
||||||
|
|
@ -5024,12 +5129,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||||
"reference": "61130731cdf896e60028ed82193a1bc3c50d032a"
|
"reference": "958bc6ccdb194912236265e4f36256e55bb0c9da"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/61130731cdf896e60028ed82193a1bc3c50d032a",
|
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/958bc6ccdb194912236265e4f36256e55bb0c9da",
|
||||||
"reference": "61130731cdf896e60028ed82193a1bc3c50d032a",
|
"reference": "958bc6ccdb194912236265e4f36256e55bb0c9da",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
|
|
@ -5080,9 +5185,9 @@
|
||||||
"aureuserp/aureuserp": "<1.3.0.0-beta1",
|
"aureuserp/aureuserp": "<1.3.0.0-beta1",
|
||||||
"austintoddj/canvas": "<=3.4.2",
|
"austintoddj/canvas": "<=3.4.2",
|
||||||
"auth0/auth0-php": ">=3.3,<=8.18",
|
"auth0/auth0-php": ">=3.3,<=8.18",
|
||||||
"auth0/login": "<7.20",
|
"auth0/login": "<=7.20",
|
||||||
"auth0/symfony": "<=5.5",
|
"auth0/symfony": "<=5.7",
|
||||||
"auth0/wordpress": "<=5.4",
|
"auth0/wordpress": "<=5.5",
|
||||||
"automad/automad": "<2.0.0.0-alpha5",
|
"automad/automad": "<2.0.0.0-alpha5",
|
||||||
"automattic/jetpack": "<9.8",
|
"automattic/jetpack": "<9.8",
|
||||||
"avideo/avideo": "<=26",
|
"avideo/avideo": "<=26",
|
||||||
|
|
@ -6066,7 +6171,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2026-04-02T00:32:12+00:00"
|
"time": "2026-04-03T04:48:53+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/diff",
|
"name": "sebastian/diff",
|
||||||
|
|
@ -7378,5 +7483,5 @@
|
||||||
"php": ">=8.5"
|
"php": ">=8.5"
|
||||||
},
|
},
|
||||||
"platform-dev": {},
|
"platform-dev": {},
|
||||||
"plugin-api-version": "2.9.0"
|
"plugin-api-version": "2.6.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
justfile
3
justfile
|
|
@ -27,8 +27,9 @@ format:
|
||||||
# TwigCsFixher
|
# TwigCsFixher
|
||||||
-vendor/bin/twig-cs-fixer fix web/app/themes/haiku-atelier-2024/
|
-vendor/bin/twig-cs-fixer fix web/app/themes/haiku-atelier-2024/
|
||||||
# PhpCsFixer
|
# PhpCsFixer
|
||||||
-vendor/bin/php-cs-fixer fix --allow-risky yes
|
# -vendor/bin/php-cs-fixer fix --allow-risky yes
|
||||||
dprint --config "~/.config/dprint/dprint.jsonc" fmt
|
dprint --config "~/.config/dprint/dprint.jsonc" fmt
|
||||||
|
mago format
|
||||||
fish scripts/format-sort-files.fish
|
fish scripts/format-sort-files.fish
|
||||||
|
|
||||||
# Compile, minifie et optimise Sass vers CSS.
|
# Compile, minifie et optimise Sass vers CSS.
|
||||||
|
|
|
||||||
76
mago.toml
76
mago.toml
|
|
@ -8,6 +8,82 @@ threads = 8
|
||||||
includes = ["config", "vendor", "web/app/plugins", "web/vendor", "web/wp"]
|
includes = ["config", "vendor", "web/app/plugins", "web/vendor", "web/wp"]
|
||||||
paths = ["web/app/themes/haiku-atelier-2024"]
|
paths = ["web/app/themes/haiku-atelier-2024"]
|
||||||
|
|
||||||
|
[formatter]
|
||||||
|
# Brace style for classes, traits, etc.
|
||||||
|
classlike-brace-style = "same_line"
|
||||||
|
# Brace style for closures.
|
||||||
|
closure-brace-style = "same_line"
|
||||||
|
# Brace style for control structures.
|
||||||
|
control-brace-style = "same_line"
|
||||||
|
# Brace style for functions.
|
||||||
|
function-brace-style = "same_line"
|
||||||
|
# Brace style for methods.
|
||||||
|
method-brace-style = "same_line"
|
||||||
|
# Maximum line length that the printer will wrap on.
|
||||||
|
print-width = 120
|
||||||
|
# Remove the trailing PHP close tag (?>) from files.
|
||||||
|
remove-trailing-close-tag = true
|
||||||
|
# Prefer single quotes over double quotes for strings.
|
||||||
|
single-quote = true
|
||||||
|
# Number of spaces per indentation level.
|
||||||
|
tab-width = 2
|
||||||
|
# Add a trailing comma to multi-line arrays, parameter lists, etc.
|
||||||
|
trailing-comma = true
|
||||||
|
# Use tabs instead of spaces for indentation.
|
||||||
|
use-tabs = false
|
||||||
|
# Place empty control structure bodies on the same line.
|
||||||
|
inline-empty-control-braces = true
|
||||||
|
# Place empty function bodies on the same line.
|
||||||
|
inline-empty-function-braces = true
|
||||||
|
# Place empty constructor bodies on the same line.
|
||||||
|
inline-empty-constructor-braces = true
|
||||||
|
# Place empty method bodies on the same line.
|
||||||
|
inline-empty-method-braces = true
|
||||||
|
# Place empty anonymous class bodies on the same line.
|
||||||
|
inline-empty-anonymous-class-braces = true
|
||||||
|
# How to break method chains.
|
||||||
|
method-chain-breaking-style = "next_line"
|
||||||
|
# Preserve existing line breaks in method chains.
|
||||||
|
preserve-breaking-member-access-chain = false
|
||||||
|
# Preserve existing line breaks in argument lists.
|
||||||
|
preserve-breaking-argument-list = false
|
||||||
|
# Preserve existing line breaks in array-like structures.
|
||||||
|
preserve-breaking-array-like = false
|
||||||
|
# Preserve existing line breaks in parameter lists.
|
||||||
|
preserve-breaking-parameter-list = false
|
||||||
|
# Preserve existing line breaks in attribute lists.
|
||||||
|
preserve-breaking-attribute-list = false
|
||||||
|
# Preserve existing line breaks in ternary expressions.
|
||||||
|
preserve-breaking-conditional-expression = false
|
||||||
|
# Always break parameter lists with promoted properties.
|
||||||
|
break-promoted-properties-list = true
|
||||||
|
# Place the binary operator on the next line when breaking.
|
||||||
|
line-before-binary-operator = true
|
||||||
|
# Always break named argument lists into multiple lines.
|
||||||
|
always-break-named-arguments-list = true
|
||||||
|
# Always break named argument lists in attributes.
|
||||||
|
always-break-attribute-named-argument-lists = true
|
||||||
|
# Use table-style alignment for arrays.
|
||||||
|
array-table-style-alignment = true
|
||||||
|
# Sort use statements alphabetically.
|
||||||
|
sort-uses = true
|
||||||
|
# Insert a blank line between different types of use statements.
|
||||||
|
separate-use-types = true
|
||||||
|
# Expand grouped use statements into individual statements.
|
||||||
|
expand-use-groups = true
|
||||||
|
# How to format null type hints (null|T vs ?T).
|
||||||
|
null-type-hint = "null_pipe"
|
||||||
|
# Add parentheses around new in member access ((new Foo)->bar()).
|
||||||
|
parentheses-around-new-in-member-access = false
|
||||||
|
# Add parentheses to new expressions without arguments (new Foo()).
|
||||||
|
parentheses-in-new-expression = true
|
||||||
|
# Add parentheses to exit and die constructs.
|
||||||
|
parentheses-in-exit-and-die = true
|
||||||
|
# Add parentheses to attributes without arguments.
|
||||||
|
parentheses-in-attribute = true
|
||||||
|
# Add a space before arrow function parameters.
|
||||||
|
space-before-arrow-function-parameter-list-parenthesis = false
|
||||||
|
|
||||||
[linter]
|
[linter]
|
||||||
integrations = ["wordpress"]
|
integrations = ["wordpress"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,12 +23,12 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@effect/language-service": "^0.84.3",
|
"@effect/language-service": "^0.84.3",
|
||||||
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#62ee424274",
|
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#62ee424274",
|
||||||
"@gcch/configuration-oxlint": "git+https://git.gcch.fr/gcch/configuration-oxlint#c53b1c1f78",
|
"@gcch/configuration-oxlint": "git+https://git.gcch.fr/gcch/configuration-oxlint#93dd909919",
|
||||||
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#8de937e801",
|
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#8de937e801",
|
||||||
"@playwright/test": "^1.59.1",
|
"@playwright/test": "^1.59.1",
|
||||||
"@sentry/core": "^10.47.0",
|
"@sentry/core": "^10.47.0",
|
||||||
"@types/bun": "^1.3.11",
|
"@types/bun": "^1.3.11",
|
||||||
"@types/node": "^25.5.0",
|
"@types/node": "^25.5.1",
|
||||||
"@vitejs/plugin-legacy": "^8.0.1",
|
"@vitejs/plugin-legacy": "^8.0.1",
|
||||||
"better-typescript-lib": "^2.12.0",
|
"better-typescript-lib": "^2.12.0",
|
||||||
"browserslist": "^4.28.2",
|
"browserslist": "^4.28.2",
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.5.0",
|
||||||
"globals": "^17.4.0",
|
"globals": "^17.4.0",
|
||||||
"jiti": "^2.6.1",
|
"jiti": "^2.6.1",
|
||||||
"knip": "^6.1.1",
|
"knip": "^6.3.0",
|
||||||
"lightningcss": "^1.32.0",
|
"lightningcss": "^1.32.0",
|
||||||
"lightningcss-cli": "^1.32.0",
|
"lightningcss-cli": "^1.32.0",
|
||||||
"oxlint": "^1.58.0",
|
"oxlint": "^1.58.0",
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
"prettier": "^3.8.1",
|
"prettier": "^3.8.1",
|
||||||
"prettier-plugin-pkg": "^0.22.1",
|
"prettier-plugin-pkg": "^0.22.1",
|
||||||
"prettier-plugin-sh": "^0.18.0",
|
"prettier-plugin-sh": "^0.18.0",
|
||||||
"sass-embedded": "^1.98.0",
|
"sass-embedded": "^1.99.0",
|
||||||
"stylelint": "^17.6.0",
|
"stylelint": "^17.6.0",
|
||||||
"stylelint-config-clean-order": "^8.0.1",
|
"stylelint-config-clean-order": "^8.0.1",
|
||||||
"stylelint-config-sass-guidelines": "^13.0.0",
|
"stylelint-config-sass-guidelines": "^13.0.0",
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,63 @@
|
||||||
import { BunFile, YAML } from "bun";
|
import { YAML } from "bun";
|
||||||
import { Array, Console, Effect, Option, pipe, Record, Schema } from "effect";
|
import { Array as EffectArray, Console, Data, Effect, pipe, Record, Schema, SchemaIssue } from "effect";
|
||||||
import { type UnknownException } from "effect/Cause";
|
import { NoSuchElementError } from "effect/Cause";
|
||||||
import { type ParseError } from "effect/ParseResult";
|
|
||||||
import { type ReadonlyRecord } from "effect/Record";
|
import { type ReadonlyRecord } from "effect/Record";
|
||||||
|
import { SchemaError } from "effect/Schema";
|
||||||
|
|
||||||
const COMPOSE_PATH = "compose.yaml";
|
const COMPOSE_PATH = "compose.yaml";
|
||||||
|
|
||||||
const getServicesKey = (yaml: ReadonlyRecord<string | symbol, any>): Option.Option<ReadonlyArray<string>> =>
|
class ScriptError extends Data.TaggedError("ScriptError")<{ cause: unknown }> {}
|
||||||
|
|
||||||
|
const ComposeSchema = Schema.Record(Schema.Union([Schema.String, Schema.Symbol]), Schema.Any);
|
||||||
|
|
||||||
|
type ComposeYaml = ReadonlyRecord<string | symbol, any>;
|
||||||
|
|
||||||
|
const getObjectKey = (key: string, yaml: ComposeYaml): Effect.Effect<ReadonlyArray<string>, ScriptError> =>
|
||||||
pipe(
|
pipe(
|
||||||
Record.get("services")(yaml),
|
Record.get(key)(yaml),
|
||||||
Option.andThen((yaml) => Record.keys(yaml)),
|
Effect.fromOption,
|
||||||
|
Effect.map((yaml: any) => Record.keys(yaml)),
|
||||||
|
Effect.mapError((e: NoSuchElementError) => new ScriptError({ cause: e })),
|
||||||
);
|
);
|
||||||
|
|
||||||
const getComposeYaml = <A, I, R>(
|
const getFileContent = Effect.fn("getFileContent")(function* (filePath: string) {
|
||||||
filePath: string,
|
const fileRef = Bun.file(filePath);
|
||||||
schema: Schema.Schema<A, I, R>,
|
|
||||||
): Effect.Effect<A, UnknownException | ParseError, R> =>
|
|
||||||
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<ReadonlyArray<string>> = Effect.gen(function* () {
|
yield* Effect.tryPromise({
|
||||||
return yield* pipe(
|
try: () => fileRef.exists(),
|
||||||
// Récupère le contenu du fichier compose.yaml sous forme de Record.
|
catch: (_) => new ScriptError({ cause: "The wanted file does not exist." }),
|
||||||
getComposeYaml(COMPOSE_PATH, Schema.Record({ key: Schema.String, value: Schema.Unknown })),
|
|
||||||
// Récupère la clé des services.
|
|
||||||
Effect.andThen((yaml: ReadonlyRecord<string | symbol, unknown>) => getServicesKey(yaml)),
|
|
||||||
// Retire la clé de l'image WordPress.
|
|
||||||
Effect.andThen((keys: ReadonlyArray<string>) => 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));
|
return yield* Effect.tryPromise({
|
||||||
|
try: () => fileRef.text(),
|
||||||
|
catch: (_) => new ScriptError({ cause: "Can't retrieve the file's text content." }),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const getComposeYaml = <A>(filePath: string, schema: Schema.Schema<A>) =>
|
||||||
|
pipe(
|
||||||
|
getFileContent(filePath),
|
||||||
|
Effect.map((text: string) => YAML.parse(text)),
|
||||||
|
Effect.flatMap((yaml: unknown) => Schema.decodeUnknownEffect(schema)(yaml, { errors: "all" })),
|
||||||
|
Effect.mapError((error) => {
|
||||||
|
if (error instanceof SchemaError) {
|
||||||
|
return new ScriptError({ cause: SchemaIssue.makeFormatterStandardSchemaV1()(error.issue) });
|
||||||
|
} else {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
const program: Effect.Effect<ReadonlyArray<string>, ScriptError> = pipe(
|
||||||
|
getComposeYaml(COMPOSE_PATH, ComposeSchema),
|
||||||
|
Effect.flatMap((yaml: ComposeYaml) => getObjectKey("services", yaml)),
|
||||||
|
Effect.map((keys: ReadonlyArray<string>) => EffectArray.filter(keys, (key) => key !== "wordpress")),
|
||||||
|
Effect.orElseSucceed(() => [""]),
|
||||||
|
Effect.tap((services: ReadonlyArray<string>) => {
|
||||||
|
Bun.spawn({ cmd: ["podman", "compose", "pull", ...services], timeout: 10000 });
|
||||||
|
return Effect.succeed(services);
|
||||||
|
}),
|
||||||
|
Effect.tapCause(Console.error),
|
||||||
|
);
|
||||||
|
|
||||||
|
Effect.runFork(program);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ export type BackendHeaders = {
|
||||||
*/
|
*/
|
||||||
export const getBackendHeadersFromHtml = async (page: Page): Promise<BackendHeaders> => {
|
export const getBackendHeadersFromHtml = async (page: Page): Promise<BackendHeaders> => {
|
||||||
const backendHeaders: BackendHeaders | undefined = pipe(
|
const backendHeaders: BackendHeaders | undefined = pipe(
|
||||||
Option.fromNullable(await page.locator("#injection-v2").textContent()),
|
Option.fromNullishOr(await page.locator("#injection-v2").textContent()),
|
||||||
Option.andThen((j) => JSON.parse(j) as BackendHeaders),
|
Option.andThen((j) => JSON.parse(j) as BackendHeaders),
|
||||||
Option.getOrUndefined,
|
Option.getOrUndefined,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ $templates = ['404.twig'];
|
||||||
function load_page_resources(): void {
|
function load_page_resources(): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-a-propos',
|
handle: 'haiku-atelier-2024-styles-page-a-propos',
|
||||||
path: '/assets/css/pages/page-modele-simple.css'
|
path: '/assets/css/pages/page-modele-simple.css',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33,5 +33,5 @@ add_action('wp_enqueue_scripts', load_page_resources(...));
|
||||||
|
|
||||||
Timber::render(
|
Timber::render(
|
||||||
data: $context,
|
data: $context,
|
||||||
filenames: $templates
|
filenames: $templates,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ $wc_products = wc_get_products(['limit' => 12, 'order' => 'DESC', 'orderby' => '
|
||||||
|
|
||||||
$products = array_map(
|
$products = array_map(
|
||||||
callback: Product::new(...),
|
callback: Product::new(...),
|
||||||
array: $wc_products
|
array: $wc_products,
|
||||||
);
|
);
|
||||||
$context['products'] = $products;
|
$context['products'] = $products;
|
||||||
|
|
||||||
|
|
@ -40,15 +40,15 @@ $context['products'] = $products;
|
||||||
function load_page_resources(): void {
|
function load_page_resources(): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-boutique',
|
handle: 'haiku-atelier-2024-styles-page-boutique',
|
||||||
path: '/assets/css/pages/page-boutique.css'
|
path: '/assets/css/pages/page-boutique.css',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-page-boutique',
|
id: 'haiku-atelier-2024-scripts-page-boutique',
|
||||||
path: '/assets/js/scripts-page-boutique.js'
|
path: '/assets/js/scripts-page-boutique.js',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-menu-categories',
|
id: 'haiku-atelier-2024-scripts-menu-categories',
|
||||||
path: '/assets/js/scripts-menu-categories.js'
|
path: '/assets/js/scripts-menu-categories.js',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -56,5 +56,5 @@ add_action('wp_enqueue_scripts', load_page_resources(...));
|
||||||
|
|
||||||
Timber::render(
|
Timber::render(
|
||||||
data: $context,
|
data: $context,
|
||||||
filenames: $templates
|
filenames: $templates,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,11 @@ $templates = ['accueil.twig'];
|
||||||
function load_resources(): void {
|
function load_resources(): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-accueil',
|
handle: 'haiku-atelier-2024-styles-page-accueil',
|
||||||
path: '/assets/css/pages/page-accueil.css'
|
path: '/assets/css/pages/page-accueil.css',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-page-accueil',
|
id: 'haiku-atelier-2024-scripts-page-accueil',
|
||||||
path: '/assets/js/scripts-page-accueil.js'
|
path: '/assets/js/scripts-page-accueil.js',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -37,5 +37,5 @@ add_action('wp_enqueue_scripts', load_resources(...));
|
||||||
|
|
||||||
Timber::render(
|
Timber::render(
|
||||||
data: $context,
|
data: $context,
|
||||||
filenames: $templates
|
filenames: $templates,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -33,19 +33,19 @@ function load_scripts(): void {
|
||||||
id: 'haiku-atelier-2024-bouton-panier',
|
id: 'haiku-atelier-2024-bouton-panier',
|
||||||
deps: [],
|
deps: [],
|
||||||
src: get_template_directory_uri() . '/assets/js/scripts-bouton-panier.js',
|
src: get_template_directory_uri() . '/assets/js/scripts-bouton-panier.js',
|
||||||
version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-panier.js')
|
version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-panier.js'),
|
||||||
);
|
);
|
||||||
wp_enqueue_script_module(
|
wp_enqueue_script_module(
|
||||||
id: 'haiku-atelier-2024-menu-mobile',
|
id: 'haiku-atelier-2024-menu-mobile',
|
||||||
deps: [],
|
deps: [],
|
||||||
src: get_template_directory_uri() . '/assets/js/scripts-menu-mobile.js',
|
src: get_template_directory_uri() . '/assets/js/scripts-menu-mobile.js',
|
||||||
version: filemtime(get_template_directory() . '/assets/js/scripts-menu-mobile.js')
|
version: filemtime(get_template_directory() . '/assets/js/scripts-menu-mobile.js'),
|
||||||
);
|
);
|
||||||
wp_enqueue_script_module(
|
wp_enqueue_script_module(
|
||||||
id: 'haiku-atelier-2024-bouton-retour-sommet',
|
id: 'haiku-atelier-2024-bouton-retour-sommet',
|
||||||
deps: [],
|
deps: [],
|
||||||
src: get_template_directory_uri() . '/assets/js/scripts-bouton-retour-sommet.js',
|
src: get_template_directory_uri() . '/assets/js/scripts-bouton-retour-sommet.js',
|
||||||
version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-retour-sommet.js')
|
version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-retour-sommet.js'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ function charge_styles_haiku_atelier_2024(): void {
|
||||||
src: get_template_directory_uri() . '/assets/css/main.css',
|
src: get_template_directory_uri() . '/assets/css/main.css',
|
||||||
deps: [],
|
deps: [],
|
||||||
ver: filemtime(get_template_directory() . '/assets/css/main.css'),
|
ver: filemtime(get_template_directory() . '/assets/css/main.css'),
|
||||||
media: 'all'
|
media: 'all',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,7 +74,7 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
// Section « Réseaux sociaux »
|
// Section « Réseaux sociaux »
|
||||||
$wp_customize->add_section('liens_reseaux_sociaux', [
|
$wp_customize->add_section('liens_reseaux_sociaux', [
|
||||||
'title' => __('Liens des réseaux sociaux'),
|
'title' => __('Liens des réseaux sociaux'),
|
||||||
'description' => __("Liens des réseaux sociaux s'affichant dans le pied de page.")
|
'description' => __("Liens des réseaux sociaux s'affichant dans le pied de page."),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Instagram
|
// Instagram
|
||||||
|
|
@ -82,7 +82,7 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
$wp_customize->add_control('lien_instagram', [
|
$wp_customize->add_control('lien_instagram', [
|
||||||
'type' => 'url',
|
'type' => 'url',
|
||||||
'section' => 'liens_reseaux_sociaux',
|
'section' => 'liens_reseaux_sociaux',
|
||||||
'label' => __('Profil Instagram')
|
'label' => __('Profil Instagram'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Facebook
|
// Facebook
|
||||||
|
|
@ -90,7 +90,7 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
$wp_customize->add_control('lien_facebook', [
|
$wp_customize->add_control('lien_facebook', [
|
||||||
'type' => 'url',
|
'type' => 'url',
|
||||||
'section' => 'liens_reseaux_sociaux',
|
'section' => 'liens_reseaux_sociaux',
|
||||||
'label' => __('Profil Facebook')
|
'label' => __('Profil Facebook'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Pinterest
|
// Pinterest
|
||||||
|
|
@ -98,13 +98,13 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
$wp_customize->add_control('lien_pinterest', [
|
$wp_customize->add_control('lien_pinterest', [
|
||||||
'type' => 'url',
|
'type' => 'url',
|
||||||
'section' => 'liens_reseaux_sociaux',
|
'section' => 'liens_reseaux_sociaux',
|
||||||
'label' => __('Profil Pinterest')
|
'label' => __('Profil Pinterest'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Section « Descriptions Produits »
|
// Section « Descriptions Produits »
|
||||||
$wp_customize->add_section('descriptions_produits', [
|
$wp_customize->add_section('descriptions_produits', [
|
||||||
'title' => __('Textes des descriptions Produits'),
|
'title' => __('Textes des descriptions Produits'),
|
||||||
'description' => __('Textes des descriptions apparaissant sur les pages Produit.')
|
'description' => __('Textes des descriptions apparaissant sur les pages Produit.'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$wp_customize->add_setting('texte_conditions_livraison', [
|
$wp_customize->add_setting('texte_conditions_livraison', [
|
||||||
|
|
@ -112,7 +112,7 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
'default' => '',
|
'default' => '',
|
||||||
'sanitize_callback' => 'wp_kses_post',
|
'sanitize_callback' => 'wp_kses_post',
|
||||||
'transport' => 'postMessage',
|
'transport' => 'postMessage',
|
||||||
'type' => 'theme_mod'
|
'type' => 'theme_mod',
|
||||||
]);
|
]);
|
||||||
$wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_conditions_livraison', [
|
$wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_conditions_livraison', [
|
||||||
'label' => __('Conditions de livraison'),
|
'label' => __('Conditions de livraison'),
|
||||||
|
|
@ -120,8 +120,8 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
'section' => 'descriptions_produits',
|
'section' => 'descriptions_produits',
|
||||||
'input_attrs' => [
|
'input_attrs' => [
|
||||||
'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
|
'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
|
||||||
'mediaButtons' => true
|
'mediaButtons' => true,
|
||||||
]
|
],
|
||||||
]));
|
]));
|
||||||
|
|
||||||
$wp_customize->add_setting('texte_entretien_produit', [
|
$wp_customize->add_setting('texte_entretien_produit', [
|
||||||
|
|
@ -129,7 +129,7 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
'default' => '',
|
'default' => '',
|
||||||
'sanitize_callback' => 'wp_kses_post',
|
'sanitize_callback' => 'wp_kses_post',
|
||||||
'transport' => 'postMessage',
|
'transport' => 'postMessage',
|
||||||
'type' => 'theme_mod'
|
'type' => 'theme_mod',
|
||||||
]);
|
]);
|
||||||
$wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_entretien_produit', [
|
$wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_entretien_produit', [
|
||||||
'label' => __('Entretien du Produit'),
|
'label' => __('Entretien du Produit'),
|
||||||
|
|
@ -137,8 +137,8 @@ function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
'section' => 'descriptions_produits',
|
'section' => 'descriptions_produits',
|
||||||
'input_attrs' => [
|
'input_attrs' => [
|
||||||
'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
|
'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
|
||||||
'mediaButtons' => true
|
'mediaButtons' => true,
|
||||||
]
|
],
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,5 +9,5 @@ $templates = ['base.twig'];
|
||||||
|
|
||||||
Timber::render(
|
Timber::render(
|
||||||
data: $context,
|
data: $context,
|
||||||
filenames: $templates
|
filenames: $templates,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -37,11 +37,11 @@ $context['image_dimensions'] = $image_dimensions;
|
||||||
function load_resources(): void {
|
function load_resources(): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-a-propos',
|
handle: 'haiku-atelier-2024-styles-page-a-propos',
|
||||||
path: '/assets/css/pages/page-a-propos.css'
|
path: '/assets/css/pages/page-a-propos.css',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-page-a-propos',
|
id: 'haiku-atelier-2024-scripts-page-a-propos',
|
||||||
path: '/assets/js/scripts-page-a-propos.js'
|
path: '/assets/js/scripts-page-a-propos.js',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,5 +49,5 @@ add_action('wp_enqueue_scripts', load_resources(...));
|
||||||
|
|
||||||
Timber::render(
|
Timber::render(
|
||||||
data: $context,
|
data: $context,
|
||||||
filenames: $templates
|
filenames: $templates,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ $allowed_countries = [
|
||||||
'TW',
|
'TW',
|
||||||
'US',
|
'US',
|
||||||
'YT',
|
'YT',
|
||||||
'ZA'
|
'ZA',
|
||||||
];
|
];
|
||||||
|
|
||||||
// Récupère les informations affichés des Produits du Panier
|
// Récupère les informations affichés des Produits du Panier
|
||||||
|
|
@ -140,12 +140,12 @@ foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
||||||
'id_variation' => $article_panier['variation_id'],
|
'id_variation' => $article_panier['variation_id'],
|
||||||
'image' => pipe($article_panier['data']?->get_image_id(), static fn($id): string => genere_balise_img_multiformats(
|
'image' => pipe($article_panier['data']?->get_image_id(), static fn($id): string => genere_balise_img_multiformats(
|
||||||
id: (string) $id,
|
id: (string) $id,
|
||||||
lazy: true
|
lazy: true,
|
||||||
)),
|
)),
|
||||||
'prix' => $article_panier['data']?->get_price(),
|
'prix' => $article_panier['data']?->get_price(),
|
||||||
'quantite' => $article_panier['quantity'],
|
'quantite' => $article_panier['quantity'],
|
||||||
'url' => $article_panier['data']?->get_permalink(),
|
'url' => $article_panier['data']?->get_permalink(),
|
||||||
'titre' => $article_panier['data']?->get_title()
|
'titre' => $article_panier['data']?->get_title(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -161,7 +161,7 @@ $methodes_livraison = collect(WC()->session->get('shipping_for_package_0')['rate
|
||||||
'id' => $methode->get_method_id(),
|
'id' => $methode->get_method_id(),
|
||||||
'prix' => Number::format((int) $methode->get_cost(), maxPrecision: 2),
|
'prix' => Number::format((int) $methode->get_cost(), maxPrecision: 2),
|
||||||
'selectionnee' => collect(WC()->session->get('chosen_shipping_methods'))->first() === $methode->get_id(),
|
'selectionnee' => collect(WC()->session->get('chosen_shipping_methods'))->first() === $methode->get_id(),
|
||||||
'titre' => $methode->get_label()
|
'titre' => $methode->get_label(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$contexte['email'] = $email;
|
$contexte['email'] = $email;
|
||||||
|
|
@ -185,11 +185,11 @@ $contexte['methodes_livraison'] = $methodes_livraison;
|
||||||
function load_resources(): void {
|
function load_resources(): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-panier',
|
handle: 'haiku-atelier-2024-styles-page-panier',
|
||||||
path: '/assets/css/pages/page-panier.css'
|
path: '/assets/css/pages/page-panier.css',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-page-panier',
|
id: 'haiku-atelier-2024-scripts-page-panier',
|
||||||
path: '/assets/js/scripts-page-panier.js'
|
path: '/assets/js/scripts-page-panier.js',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -198,5 +198,5 @@ add_action('wp_enqueue_scripts', load_resources(...));
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ $session_wc = WC()->session;
|
||||||
$urls = [
|
$urls = [
|
||||||
'accueil' => get_page_link(get_page_by_path('home')),
|
'accueil' => get_page_link(get_page_by_path('home')),
|
||||||
'succes_commande' => get_page_link(get_page_by_path('successful-order')),
|
'succes_commande' => get_page_link(get_page_by_path('successful-order')),
|
||||||
'echec_commande' => get_page_link(get_page_by_path('failed-order'))
|
'echec_commande' => get_page_link(get_page_by_path('failed-order')),
|
||||||
];
|
];
|
||||||
|
|
||||||
// Redirige à la page d'accueil si le Panier est vide
|
// Redirige à la page d'accueil si le Panier est vide
|
||||||
|
|
@ -86,7 +86,7 @@ $articles = collect($panier->get_cart())
|
||||||
. ' ('
|
. ' ('
|
||||||
. explode(': ', (string) $article_panier['data']?->get_attribute_summary())[1]
|
. explode(': ', (string) $article_panier['data']?->get_attribute_summary())[1]
|
||||||
. ')',
|
. ')',
|
||||||
false => $article_panier['data']?->get_title()
|
false => $article_panier['data']?->get_title(),
|
||||||
};
|
};
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
@ -94,11 +94,11 @@ $articles = collect($panier->get_cart())
|
||||||
'currency' => 'EUR',
|
'currency' => 'EUR',
|
||||||
'product_data' => [
|
'product_data' => [
|
||||||
'name' => $titre_produit,
|
'name' => $titre_produit,
|
||||||
'images' => [wp_get_attachment_image_url($article_panier['data']?->get_image_id())]
|
'images' => [wp_get_attachment_image_url($article_panier['data']?->get_image_id())],
|
||||||
],
|
],
|
||||||
'unit_amount' => $article_panier['data']?->get_price() * 100
|
'unit_amount' => $article_panier['data']?->get_price() * 100,
|
||||||
],
|
],
|
||||||
'quantity' => $article_panier['quantity']
|
'quantity' => $article_panier['quantity'],
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
->values()
|
->values()
|
||||||
|
|
@ -126,7 +126,7 @@ $coupons_wc = collect(WC()->cart->get_coupons())
|
||||||
'duration' => get_discount_duration($coupon),
|
'duration' => get_discount_duration($coupon),
|
||||||
'fixed_cart' === $coupon->get_discount_type() ? 'amount_off' : 'percent_off' => get_discount_amount($coupon),
|
'fixed_cart' === $coupon->get_discount_type() ? 'amount_off' : 'percent_off' => get_discount_amount($coupon),
|
||||||
'id' => $coupon->get_code(),
|
'id' => $coupon->get_code(),
|
||||||
'name' => $coupon->get_code()
|
'name' => $coupon->get_code(),
|
||||||
])
|
])
|
||||||
->each(static function (array $item) use ($coupons_stripe): void {
|
->each(static function (array $item) use ($coupons_stripe): void {
|
||||||
// Si le code promo n'existe pas, le créer
|
// Si le code promo n'existe pas, le créer
|
||||||
|
|
@ -152,8 +152,8 @@ $session_checkout_stripe = \Stripe\Checkout\Session::create([
|
||||||
'display_name' => $methode_livraison['nom'],
|
'display_name' => $methode_livraison['nom'],
|
||||||
'fixed_amount' => ['amount' => $methode_livraison['cout'], 'currency' => 'EUR'],
|
'fixed_amount' => ['amount' => $methode_livraison['cout'], 'currency' => 'EUR'],
|
||||||
'tax_behavior' => 'inclusive',
|
'tax_behavior' => 'inclusive',
|
||||||
'type' => 'fixed_amount'
|
'type' => 'fixed_amount',
|
||||||
]]]
|
]]],
|
||||||
], ['idempotency_key' => Uuid::v4()]);
|
], ['idempotency_key' => Uuid::v4()]);
|
||||||
// echo json_encode($session_checkout_stripe);
|
// echo json_encode($session_checkout_stripe);
|
||||||
header('HTTP/1.1 303 See Other');
|
header('HTTP/1.1 303 See Other');
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ function charge_scripts_styles_page_contact(): void {
|
||||||
src: get_template_directory_uri() . '/assets/css/pages/page-modele-simple.css',
|
src: get_template_directory_uri() . '/assets/css/pages/page-modele-simple.css',
|
||||||
deps: [],
|
deps: [],
|
||||||
ver: filemtime(get_template_directory() . '/assets/css/pages/page-modele-simple.css'),
|
ver: filemtime(get_template_directory() . '/assets/css/pages/page-modele-simple.css'),
|
||||||
media: 'all'
|
media: 'all',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,5 +28,5 @@ add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_contact');
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ function charge_scripts_styles_page_echec_commande(): void {
|
||||||
src: get_template_directory_uri() . '/assets/css/pages/page-modele-simple.css',
|
src: get_template_directory_uri() . '/assets/css/pages/page-modele-simple.css',
|
||||||
deps: [],
|
deps: [],
|
||||||
ver: filemtime(get_template_directory() . '/assets/css/pages/page-modele-simple.css'),
|
ver: filemtime(get_template_directory() . '/assets/css/pages/page-modele-simple.css'),
|
||||||
media: 'all'
|
media: 'all',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,5 +28,5 @@ add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_echec_commande');
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -85,12 +85,12 @@ try {
|
||||||
'id_produit' => $id_produit,
|
'id_produit' => $id_produit,
|
||||||
'image' => pipe($produit->get_image_id(), static fn($id): string => genere_balise_img_multiformats(
|
'image' => pipe($produit->get_image_id(), static fn($id): string => genere_balise_img_multiformats(
|
||||||
id: $id,
|
id: $id,
|
||||||
lazy: true
|
lazy: true,
|
||||||
)),
|
)),
|
||||||
'permalien' => $produit->get_permalink(),
|
'permalien' => $produit->get_permalink(),
|
||||||
'prix' => $produit_commande->get_data()['total'],
|
'prix' => $produit_commande->get_data()['total'],
|
||||||
'quantite' => $produit_commande->get_quantity(),
|
'quantite' => $produit_commande->get_quantity(),
|
||||||
'titre' => $produit->get_title()
|
'titre' => $produit->get_title(),
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@ try {
|
||||||
src: get_template_directory_uri() . '/assets/css/pages/page-succes-commande.css',
|
src: get_template_directory_uri() . '/assets/css/pages/page-succes-commande.css',
|
||||||
deps: [],
|
deps: [],
|
||||||
ver: filemtime(get_template_directory() . '/assets/css/pages/page-succes-commande.css'),
|
ver: filemtime(get_template_directory() . '/assets/css/pages/page-succes-commande.css'),
|
||||||
media: 'all'
|
media: 'all',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -112,7 +112,7 @@ try {
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
} catch (Error $error) {
|
} catch (Error $error) {
|
||||||
http_response_code(500);
|
http_response_code(500);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ function charge_scripts_styles_page_cgv(): void {
|
||||||
src: get_template_directory_uri() . '/assets/css/pages/page-modele-simple.css',
|
src: get_template_directory_uri() . '/assets/css/pages/page-modele-simple.css',
|
||||||
deps: [],
|
deps: [],
|
||||||
ver: filemtime(get_template_directory() . '/assets/css/pages/page-modele-simple.css'),
|
ver: filemtime(get_template_directory() . '/assets/css/pages/page-modele-simple.css'),
|
||||||
media: 'all'
|
media: 'all',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,5 +28,5 @@ add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_cgv');
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ $maximum_price = collect($product->variations)->max('price');
|
||||||
|
|
||||||
$same_collection_products = array_map(
|
$same_collection_products = array_map(
|
||||||
array: recupere_produits_meme_collection($product->collection)($product->id),
|
array: recupere_produits_meme_collection($product->collection)($product->id),
|
||||||
callback: Product::new(...)
|
callback: Product::new(...),
|
||||||
);
|
);
|
||||||
|
|
||||||
$context['product'] = $product;
|
$context['product'] = $product;
|
||||||
|
|
@ -47,13 +47,13 @@ function charge_scripts_page_produit(): void {
|
||||||
id: 'haiku-atelier-2024-scripts-page-produit',
|
id: 'haiku-atelier-2024-scripts-page-produit',
|
||||||
src: get_template_directory_uri() . '/assets/js/scripts-page-produit.js',
|
src: get_template_directory_uri() . '/assets/js/scripts-page-produit.js',
|
||||||
deps: [],
|
deps: [],
|
||||||
version: filemtime(get_template_directory() . '/assets/js/scripts-page-produit.js')
|
version: filemtime(get_template_directory() . '/assets/js/scripts-page-produit.js'),
|
||||||
);
|
);
|
||||||
wp_enqueue_script_module(
|
wp_enqueue_script_module(
|
||||||
id: 'haiku-atelier-2024-scripts-menu-categories',
|
id: 'haiku-atelier-2024-scripts-menu-categories',
|
||||||
src: get_template_directory_uri() . '/assets/js/scripts-menu-categories.js',
|
src: get_template_directory_uri() . '/assets/js/scripts-menu-categories.js',
|
||||||
deps: [],
|
deps: [],
|
||||||
version: filemtime(get_template_directory() . '/assets/js/scripts-menu-categories.js')
|
version: filemtime(get_template_directory() . '/assets/js/scripts-menu-categories.js'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,5 +62,5 @@ add_action('wp_enqueue_scripts', 'charge_scripts_page_produit');
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $templates,
|
filenames: $templates,
|
||||||
data: $context
|
data: $context,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -54,21 +54,21 @@ final class StarterSite extends Site {
|
||||||
$liens_reseaux_sociaux = [
|
$liens_reseaux_sociaux = [
|
||||||
'facebook' => ['nom' => 'Facebook', 'url' => $personnalisations_theme['lien_facebook'] ?? ''],
|
'facebook' => ['nom' => 'Facebook', 'url' => $personnalisations_theme['lien_facebook'] ?? ''],
|
||||||
'instagram' => ['nom' => 'Instagram', 'url' => $personnalisations_theme['lien_instagram'] ?? ''],
|
'instagram' => ['nom' => 'Instagram', 'url' => $personnalisations_theme['lien_instagram'] ?? ''],
|
||||||
'pinterest' => ['nom' => 'Pinterest', 'url' => $personnalisations_theme['lien_pinterest'] ?? '']
|
'pinterest' => ['nom' => 'Pinterest', 'url' => $personnalisations_theme['lien_pinterest'] ?? ''],
|
||||||
];
|
];
|
||||||
$context['liens_reseaux_sociaux'] = $liens_reseaux_sociaux;
|
$context['liens_reseaux_sociaux'] = $liens_reseaux_sociaux;
|
||||||
|
|
||||||
// Récupère les textes apparaissant sur les pages Produits
|
// Récupère les textes apparaissant sur les pages Produits
|
||||||
$descriptions_produits = [
|
$descriptions_produits = [
|
||||||
'texte_conditions_livraison' => wpautop($personnalisations_theme['texte_conditions_livraison']) ?? '',
|
'texte_conditions_livraison' => wpautop($personnalisations_theme['texte_conditions_livraison']) ?? '',
|
||||||
'texte_entretien_produit' => wpautop($personnalisations_theme['texte_entretien_produit']) ?? ''
|
'texte_entretien_produit' => wpautop($personnalisations_theme['texte_entretien_produit']) ?? '',
|
||||||
];
|
];
|
||||||
$context['descriptions_produits'] = $descriptions_produits;
|
$context['descriptions_produits'] = $descriptions_produits;
|
||||||
|
|
||||||
// Logo personnalisée
|
// Logo personnalisée
|
||||||
$context['logo'] = pipe(get_theme_mod('custom_logo'), static fn($id) => wp_get_attachment_image_src(
|
$context['logo'] = pipe(get_theme_mod('custom_logo'), static fn($id) => wp_get_attachment_image_src(
|
||||||
attachment_id: $id,
|
attachment_id: $id,
|
||||||
size: 'full'
|
size: 'full',
|
||||||
));
|
));
|
||||||
|
|
||||||
// Informations des Pages
|
// Informations des Pages
|
||||||
|
|
@ -88,7 +88,7 @@ final class StarterSite extends Site {
|
||||||
'failed_order' => $recupere_informations_page('failed_order'),
|
'failed_order' => $recupere_informations_page('failed_order'),
|
||||||
'home' => $recupere_informations_page('home'),
|
'home' => $recupere_informations_page('home'),
|
||||||
'shop' => $recupere_informations_page('shop'),
|
'shop' => $recupere_informations_page('shop'),
|
||||||
'successful_order' => $recupere_informations_page('successful_order')
|
'successful_order' => $recupere_informations_page('successful_order'),
|
||||||
];
|
];
|
||||||
|
|
||||||
// Récupère la Page courante
|
// Récupère la Page courante
|
||||||
|
|
@ -96,19 +96,19 @@ final class StarterSite extends Site {
|
||||||
$context['page_courante'] = $url_courante;
|
$context['page_courante'] = $url_courante;
|
||||||
$context['est_page_tous_produits'] = preg_match(
|
$context['est_page_tous_produits'] = preg_match(
|
||||||
pattern: '/(\bshop\b)/',
|
pattern: '/(\bshop\b)/',
|
||||||
subject: $url_courante
|
subject: $url_courante,
|
||||||
);
|
);
|
||||||
$context['est_page_boutique'] = preg_match(
|
$context['est_page_boutique'] = preg_match(
|
||||||
pattern: '/(\bshop\b)/',
|
pattern: '/(\bshop\b)/',
|
||||||
subject: $url_courante
|
subject: $url_courante,
|
||||||
)
|
)
|
||||||
|| preg_match(
|
|| preg_match(
|
||||||
pattern: '/(\bproduct\b)/',
|
pattern: '/(\bproduct\b)/',
|
||||||
subject: $url_courante
|
subject: $url_courante,
|
||||||
)
|
)
|
||||||
|| preg_match(
|
|| preg_match(
|
||||||
pattern: '/(\bproduct-category\b)/',
|
pattern: '/(\bproduct-category\b)/',
|
||||||
subject: $url_courante
|
subject: $url_courante,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Politique de confidentialité
|
// Politique de confidentialité
|
||||||
|
|
@ -125,15 +125,15 @@ final class StarterSite extends Site {
|
||||||
// Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits
|
// Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits
|
||||||
'courante' => preg_match(
|
'courante' => preg_match(
|
||||||
pattern: "/(\\b{$categorie->slug}\\b)/",
|
pattern: "/(\\b{$categorie->slug}\\b)/",
|
||||||
subject: (string) pipe(URLHelper::get_current_url(), URLHelper::get_rel_url(...))
|
subject: (string) pipe(URLHelper::get_current_url(), URLHelper::get_rel_url(...)),
|
||||||
)
|
),
|
||||||
];
|
];
|
||||||
$entrees_menu_categories = pipe(
|
$entrees_menu_categories = pipe(
|
||||||
get_categories(['hide_empty' => false, 'orderby' => 'menu_order', 'taxonomy' => 'product_cat']),
|
get_categories(['hide_empty' => false, 'orderby' => 'menu_order', 'taxonomy' => 'product_cat']),
|
||||||
static fn($categories): array => array_map(
|
static fn($categories): array => array_map(
|
||||||
callback: $cree_entree_menu,
|
callback: $cree_entree_menu,
|
||||||
array: $categories
|
array: $categories,
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$context['categories_produits'] = $entrees_menu_categories;
|
$context['categories_produits'] = $entrees_menu_categories;
|
||||||
|
|
@ -152,7 +152,7 @@ final class StarterSite extends Site {
|
||||||
$context['nonce_wc'] = $nonce_wc;
|
$context['nonce_wc'] = $nonce_wc;
|
||||||
// TODO: Utiliser des variables d'environnement
|
// TODO: Utiliser des variables d'environnement
|
||||||
$auth_string = base64_encode(
|
$auth_string = base64_encode(
|
||||||
Config::get('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . Config::get('WOOCOMMERCE_API_CONSUMER_SECRET')
|
Config::get('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . Config::get('WOOCOMMERCE_API_CONSUMER_SECRET'),
|
||||||
);
|
);
|
||||||
$context['auth_string'] = $auth_string;
|
$context['auth_string'] = $auth_string;
|
||||||
|
|
||||||
|
|
@ -184,6 +184,7 @@ final class StarterSite extends Site {
|
||||||
public function maj_environnement_twig(array $options): array {
|
public function maj_environnement_twig(array $options): array {
|
||||||
return $options;
|
return $options;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function charge_traductions_theme(): void {
|
// public function charge_traductions_theme(): void {
|
||||||
// load_theme_textdomain("haiku-atelier-2024", get_template_directory() . "/languages");
|
// load_theme_textdomain("haiku-atelier-2024", get_template_directory() . "/languages");
|
||||||
// }
|
// }
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ function cree_champs_personnalises_produit(): void {
|
||||||
->set_type(['image'])
|
->set_type(['image'])
|
||||||
->set_duplicates_allowed(false),
|
->set_duplicates_allowed(false),
|
||||||
// Texte des détails du Produit
|
// Texte des détails du Produit
|
||||||
Field::make('rich_text', 'haiku_details_produit', __("Product's Details"))
|
Field::make('rich_text', 'haiku_details_produit', __("Product's Details")),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ function cree_champ_personnalise_commande($order): void {
|
||||||
'id' => 'tracking_number',
|
'id' => 'tracking_number',
|
||||||
'label' => 'Tracking Number:',
|
'label' => 'Tracking Number:',
|
||||||
'value' => $order->get_meta('tracking_number'),
|
'value' => $order->get_meta('tracking_number'),
|
||||||
'wrapper_class' => 'form-field-wide'
|
'wrapper_class' => 'form-field-wide',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ function enregistre_controle_personnalise_tinymce(): void {
|
||||||
src: get_template_directory_uri() . '/assets/vendor/controle-personnalise-tinymce.js',
|
src: get_template_directory_uri() . '/assets/vendor/controle-personnalise-tinymce.js',
|
||||||
deps: ['jquery'],
|
deps: ['jquery'],
|
||||||
ver: '1.3',
|
ver: '1.3',
|
||||||
args: true
|
args: true,
|
||||||
);
|
);
|
||||||
wp_enqueue_editor();
|
wp_enqueue_editor();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ final readonly class Attribute {
|
||||||
public function __construct(
|
public function __construct(
|
||||||
public string $name,
|
public string $name,
|
||||||
public string $slug,
|
public string $slug,
|
||||||
public array $options
|
public array $options,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public static function new(WC_Product_Attribute $attribute): self {
|
public static function new(WC_Product_Attribute $attribute): self {
|
||||||
|
|
@ -29,7 +29,7 @@ final readonly class Attribute {
|
||||||
return new self(
|
return new self(
|
||||||
name: $name,
|
name: $name,
|
||||||
slug: $slug,
|
slug: $slug,
|
||||||
options: $options
|
options: $options,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ final readonly class AttributeOption {
|
||||||
public function __construct(
|
public function __construct(
|
||||||
public int $id,
|
public int $id,
|
||||||
public string $name,
|
public string $name,
|
||||||
public string $slug
|
public string $slug,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public static function new(WP_Term $term): self {
|
public static function new(WP_Term $term): self {
|
||||||
|
|
@ -21,7 +21,7 @@ final readonly class AttributeOption {
|
||||||
return new self(
|
return new self(
|
||||||
id: $id,
|
id: $id,
|
||||||
name: $name,
|
name: $name,
|
||||||
slug: $slug
|
slug: $slug,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ final readonly class Product {
|
||||||
public string $slug,
|
public string $slug,
|
||||||
public int $stock,
|
public int $stock,
|
||||||
public array $variations,
|
public array $variations,
|
||||||
public string $url
|
public string $url,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -94,7 +94,7 @@ final readonly class Product {
|
||||||
slug: $slug,
|
slug: $slug,
|
||||||
stock: $stock,
|
stock: $stock,
|
||||||
variations: $variations,
|
variations: $variations,
|
||||||
url: $url
|
url: $url,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ final readonly class ProductVariation {
|
||||||
private function __construct(
|
private function __construct(
|
||||||
public int $id,
|
public int $id,
|
||||||
public string $price,
|
public string $price,
|
||||||
public array $attributes
|
public array $attributes,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -29,7 +29,7 @@ final readonly class ProductVariation {
|
||||||
/** @phpstan-ignore argument.type (Impossible à satisfaire) */
|
/** @phpstan-ignore argument.type (Impossible à satisfaire) */
|
||||||
static fn(string $key, string $value) => new ProductVariationAttribute($key, $value),
|
static fn(string $key, string $value) => new ProductVariationAttribute($key, $value),
|
||||||
array_keys($product->get_attributes()),
|
array_keys($product->get_attributes()),
|
||||||
array_values($product->get_attributes())
|
array_values($product->get_attributes()),
|
||||||
);
|
);
|
||||||
|
|
||||||
return new self($id, $price, $attributes);
|
return new self($id, $price, $attributes);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,6 @@ final readonly class ProductVariationAttribute {
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
public string $attribute,
|
public string $attribute,
|
||||||
public string $value
|
public string $value,
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ function retire_merdes_wc(): void {
|
||||||
*/
|
*/
|
||||||
function genere_balises_img_dans_produit_dans_reponse_rest(
|
function genere_balises_img_dans_produit_dans_reponse_rest(
|
||||||
WP_REST_Response $response,
|
WP_REST_Response $response,
|
||||||
mixed $_product
|
mixed $_product,
|
||||||
): WP_REST_Response {
|
): WP_REST_Response {
|
||||||
// Vérifie que la Réponse a des données
|
// Vérifie que la Réponse a des données
|
||||||
if (empty($response->data)) {
|
if (empty($response->data)) {
|
||||||
|
|
@ -143,16 +143,16 @@ function genere_balises_img_dans_produit_dans_reponse_rest(
|
||||||
$response->data['meta_data'],
|
$response->data['meta_data'],
|
||||||
static fn($metadata): array => array_filter(
|
static fn($metadata): array => array_filter(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: static fn($entree): bool => '_photos_colonne_gauche|||0|value' === $entree->key
|
callback: static fn($entree): bool => '_photos_colonne_gauche|||0|value' === $entree->key,
|
||||||
),
|
),
|
||||||
static fn($metadata): array => array_map(
|
static fn($metadata): array => array_map(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: static fn($entree): string => genere_balise_img_multiformats(
|
callback: static fn($entree): string => genere_balise_img_multiformats(
|
||||||
id: $entree?->value,
|
id: $entree?->value,
|
||||||
lazy: true
|
lazy: true,
|
||||||
)
|
|
||||||
),
|
),
|
||||||
static fn($image) => array_values(array: $image)[0]
|
),
|
||||||
|
static fn($image) => array_values(array: $image)[0],
|
||||||
);
|
);
|
||||||
|
|
||||||
// Génère la balise <img> pour l'image au survol
|
// Génère la balise <img> pour l'image au survol
|
||||||
|
|
@ -160,16 +160,16 @@ function genere_balises_img_dans_produit_dans_reponse_rest(
|
||||||
$response->data['meta_data'],
|
$response->data['meta_data'],
|
||||||
static fn($metadata): array => array_filter(
|
static fn($metadata): array => array_filter(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: static fn($entree): bool => '_photos_colonne_droite|||0|value' === $entree->key
|
callback: static fn($entree): bool => '_photos_colonne_droite|||0|value' === $entree->key,
|
||||||
),
|
),
|
||||||
static fn($metadata): array => array_map(
|
static fn($metadata): array => array_map(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: static fn($entree): string => genere_balise_img_multiformats(
|
callback: static fn($entree): string => genere_balise_img_multiformats(
|
||||||
id: $entree?->value,
|
id: $entree?->value,
|
||||||
lazy: true
|
lazy: true,
|
||||||
)
|
|
||||||
),
|
),
|
||||||
static fn($image) => array_values(array: $image)[0]
|
),
|
||||||
|
static fn($image) => array_values(array: $image)[0],
|
||||||
);
|
);
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
|
|
@ -182,7 +182,7 @@ add_filter('woocommerce_rest_prepare_product_object', 'genere_balises_img_dans_p
|
||||||
*/
|
*/
|
||||||
function genere_prix_maximal_produit_variable_dans_reponse_rest(
|
function genere_prix_maximal_produit_variable_dans_reponse_rest(
|
||||||
WP_REST_Response $reponse,
|
WP_REST_Response $reponse,
|
||||||
WC_Data $_produit
|
WC_Data $_produit,
|
||||||
): WP_REST_Response {
|
): WP_REST_Response {
|
||||||
// Vérifie que la Réponse a des données
|
// Vérifie que la Réponse a des données
|
||||||
if (empty($reponse->data)) {
|
if (empty($reponse->data)) {
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fonctions pour la génération de HTML.
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Génère la balise `<img>` d'un Média attaché à un Produit selon son ID.
|
|
||||||
*/
|
|
||||||
function genere_balise_img(int $id_image): string {
|
|
||||||
return wp_get_attachment_image(
|
|
||||||
attachment_id: $id_image,
|
|
||||||
size: 'full'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -19,7 +19,7 @@ function enregistre_taxonomie_collection(): void {
|
||||||
'new_item_name' => __('New Collection Name'),
|
'new_item_name' => __('New Collection Name'),
|
||||||
'search_items' => __('Search Collections'),
|
'search_items' => __('Search Collections'),
|
||||||
'singular_name' => __('Collection'),
|
'singular_name' => __('Collection'),
|
||||||
'update_item' => __('Update Collection')
|
'update_item' => __('Update Collection'),
|
||||||
];
|
];
|
||||||
$args = [
|
$args = [
|
||||||
'description' => __('An ensemble of pieces thematically or chronologically grouped together.'),
|
'description' => __('An ensemble of pieces thematically or chronologically grouped together.'),
|
||||||
|
|
@ -31,7 +31,7 @@ function enregistre_taxonomie_collection(): void {
|
||||||
'show_admin_column' => true,
|
'show_admin_column' => true,
|
||||||
'show_in_menu' => true,
|
'show_in_menu' => true,
|
||||||
'show_in_quick_edit' => true,
|
'show_in_quick_edit' => true,
|
||||||
'show_ui' => true
|
'show_ui' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
register_taxonomy('collection', ['product'], $args);
|
register_taxonomy('collection', ['product'], $args);
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,13 @@ function genere_balise_img_multiformats(string $id, bool $lazy = false): string
|
||||||
|
|
||||||
$avif = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.avif') : false;
|
$avif = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.avif') : false;
|
||||||
$jxl = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.jxl') : false;
|
$jxl = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.jxl') : false;
|
||||||
$webp = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.webp') : false;
|
|
||||||
|
|
||||||
// Génère un tableau avec les différents formats valides
|
// Génère un tableau avec les différents formats valides
|
||||||
$formats = pipe(
|
$formats = pipe(
|
||||||
[$avif, $jxl, $webp],
|
[$avif, $jxl],
|
||||||
static fn($tableau): array => array_filter(
|
static fn($tableau): array => array_filter(
|
||||||
array: $tableau,
|
array: $tableau,
|
||||||
callback: static fn($chemin_format): bool => false !== $chemin_format
|
callback: static fn($chemin_format): bool => false !== $chemin_format,
|
||||||
),
|
),
|
||||||
static fn($tableau): array => array_map(
|
static fn($tableau): array => array_map(
|
||||||
array: $tableau,
|
array: $tableau,
|
||||||
|
|
@ -54,13 +53,13 @@ function genere_balise_img_multiformats(string $id, bool $lazy = false): string
|
||||||
. '/'
|
. '/'
|
||||||
. pathinfo($url)['filename']
|
. pathinfo($url)['filename']
|
||||||
. '.'
|
. '.'
|
||||||
. pathinfo((string) $chemin_format)['extension']
|
. pathinfo((string) $chemin_format)['extension'],
|
||||||
]
|
],
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
usort(
|
usort(
|
||||||
array: $formats,
|
array: $formats,
|
||||||
callback: static fn($a, $b): int => $a['taille'] <=> $b['taille']
|
callback: static fn($a, $b): int => $a['taille'] <=> $b['taille'],
|
||||||
);
|
);
|
||||||
|
|
||||||
// Construis les balises <source> avec les formats valides
|
// Construis les balises <source> avec les formats valides
|
||||||
|
|
@ -109,17 +108,17 @@ function recupere_informations_produit_shop(WC_Product $produit): mixed {
|
||||||
// Récupère les informations de chaque Variation
|
// Récupère les informations de chaque Variation
|
||||||
static fn($enfants): array => array_map(
|
static fn($enfants): array => array_map(
|
||||||
callback: wc_get_product(...),
|
callback: wc_get_product(...),
|
||||||
array: $enfants
|
array: $enfants,
|
||||||
),
|
),
|
||||||
// Trie les Variations par prix descendant
|
// Trie les Variations par prix descendant
|
||||||
static fn($variations): array => array_map(
|
static fn($variations): array => array_map(
|
||||||
callback: static fn($variation) => $variation->get_price(),
|
callback: static fn($variation) => $variation->get_price(),
|
||||||
array: $variations
|
array: $variations,
|
||||||
),
|
),
|
||||||
// Récupère le Prix de la Variation la plus chère
|
// Récupère le Prix de la Variation la plus chère
|
||||||
static fn($prix) => collect($prix)->max(),
|
static fn($prix) => collect($prix)->max(),
|
||||||
// Récupère le Prix pour la Variation la plus chère OU le prix du Produit simple
|
// Récupère le Prix pour la Variation la plus chère OU le prix du Produit simple
|
||||||
static fn($prix_variation_maximale) => $prix_variation_maximale ?? $produit->get_price()
|
static fn($prix_variation_maximale) => $prix_variation_maximale ?? $produit->get_price(),
|
||||||
);
|
);
|
||||||
|
|
||||||
// TEMP: Cas de la Carte Cadeau où aucun prix ne doit être affiché. Idéalement utiliser un système d'étiquettes pour ces cas là.
|
// TEMP: Cas de la Carte Cadeau où aucun prix ne doit être affiché. Idéalement utiliser un système d'étiquettes pour ces cas là.
|
||||||
|
|
@ -137,15 +136,15 @@ function recupere_informations_produit_shop(WC_Product $produit): mixed {
|
||||||
// Photo du Produit affichée par défaut
|
// Photo du Produit affichée par défaut
|
||||||
'photo_repos' => genere_balise_img_multiformats(
|
'photo_repos' => genere_balise_img_multiformats(
|
||||||
get_post_meta($post_id = $produit->get_id(), $key = '_photos_colonne_gauche|||0|value')[0] ?? -1,
|
get_post_meta($post_id = $produit->get_id(), $key = '_photos_colonne_gauche|||0|value')[0] ?? -1,
|
||||||
false
|
false,
|
||||||
),
|
),
|
||||||
// Photo du Produit affichée au survol de l'image
|
// Photo du Produit affichée au survol de l'image
|
||||||
'photo_survol' => genere_balise_img_multiformats(
|
'photo_survol' => genere_balise_img_multiformats(
|
||||||
get_post_meta($post_id = $produit->get_id(), $key = '_photos_colonne_droite|||0|value')[0] ?? -1,
|
get_post_meta($post_id = $produit->get_id(), $key = '_photos_colonne_droite|||0|value')[0] ?? -1,
|
||||||
true
|
true,
|
||||||
),
|
),
|
||||||
// URL du Produit pour les liens vers celui-ci
|
// URL du Produit pour les liens vers celui-ci
|
||||||
'url' => $produit->get_permalink()
|
'url' => $produit->get_permalink(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -175,19 +174,19 @@ function recupere_informations_produit_page_produit(WC_Product $product): mixed
|
||||||
'prix' => $product->get_price(),
|
'prix' => $product->get_price(),
|
||||||
'photos_colonne_gauche' => array_map(
|
'photos_colonne_gauche' => array_map(
|
||||||
callback: genere_balise_img_multiformats(...),
|
callback: genere_balise_img_multiformats(...),
|
||||||
array: get_post_meta($post_id = $product->get_id(), $key = '_photos_colonne_gauche|||0|value')
|
array: get_post_meta($post_id = $product->get_id(), $key = '_photos_colonne_gauche|||0|value'),
|
||||||
),
|
),
|
||||||
'photos_colonne_droite' => array_map(
|
'photos_colonne_droite' => array_map(
|
||||||
callback: genere_balise_img_multiformats(...),
|
callback: genere_balise_img_multiformats(...),
|
||||||
array: carbon_get_the_post_meta('photos_colonne_droite')
|
array: carbon_get_the_post_meta('photos_colonne_droite'),
|
||||||
),
|
),
|
||||||
'photo_repos' => genere_balise_img_multiformats(
|
'photo_repos' => genere_balise_img_multiformats(
|
||||||
get_post_meta($post_id = $product->get_id(), $key = '_photos_colonne_gauche|||0|value')[0] ?? -1,
|
get_post_meta($post_id = $product->get_id(), $key = '_photos_colonne_gauche|||0|value')[0] ?? -1,
|
||||||
false
|
false,
|
||||||
),
|
),
|
||||||
'photo_survol' => genere_balise_img_multiformats(
|
'photo_survol' => genere_balise_img_multiformats(
|
||||||
get_post_meta($post_id = $product->get_id(), $key = '_photos_colonne_droite|||0|value')[0] ?? -1,
|
get_post_meta($post_id = $product->get_id(), $key = '_photos_colonne_droite|||0|value')[0] ?? -1,
|
||||||
true
|
true,
|
||||||
),
|
),
|
||||||
// Slug du Produit
|
// Slug du Produit
|
||||||
'slug' => $product->get_slug(),
|
'slug' => $product->get_slug(),
|
||||||
|
|
@ -196,7 +195,7 @@ function recupere_informations_produit_page_produit(WC_Product $product): mixed
|
||||||
// Variations du Produit
|
// Variations du Produit
|
||||||
'variations_ids' => $product->get_children(),
|
'variations_ids' => $product->get_children(),
|
||||||
// URL du Produit
|
// URL du Produit
|
||||||
'url' => $product->get_permalink()
|
'url' => $product->get_permalink(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -214,7 +213,7 @@ function recupere_produits_meme_collection(string $slug_collection): mixed {
|
||||||
'order' => 'DESC',
|
'order' => 'DESC',
|
||||||
'orderby' => 'date',
|
'orderby' => 'date',
|
||||||
'status' => 'publish',
|
'status' => 'publish',
|
||||||
'tax_query' => [['taxonomy' => 'collection', 'field' => 'slug', 'terms' => $slug_collection]]
|
'tax_query' => [['taxonomy' => 'collection', 'field' => 'slug', 'terms' => $slug_collection]],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -224,6 +223,6 @@ function recupere_et_formate_attributs_produit(mixed $attributs_produit): mixed
|
||||||
return [
|
return [
|
||||||
'taille' => ['nom' => 'Size', 'valeur' => $attributs_produit['pa_size'] ?? false],
|
'taille' => ['nom' => 'Size', 'valeur' => $attributs_produit['pa_size'] ?? false],
|
||||||
'pierre' => ['nom' => 'Stone', 'valeur' => $attributs_produit['pa_stone'] ?? false],
|
'pierre' => ['nom' => 'Stone', 'valeur' => $attributs_produit['pa_stone'] ?? false],
|
||||||
'cote' => ['nom' => 'Side', 'valeur' => $attributs_produit['pa_side'] ?? false]
|
'cote' => ['nom' => 'Side', 'valeur' => $attributs_produit['pa_side'] ?? false],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ final readonly class Resource {
|
||||||
id: $id,
|
id: $id,
|
||||||
src: $file_uri,
|
src: $file_uri,
|
||||||
deps: [],
|
deps: [],
|
||||||
version: $version
|
version: $version,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ final readonly class Resource {
|
||||||
src: $file_uri,
|
src: $file_uri,
|
||||||
deps: [],
|
deps: [],
|
||||||
ver: $ver,
|
ver: $ver,
|
||||||
media: 'all'
|
media: 'all',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ export type ParentElement = Document | Element;
|
||||||
export const getFirstSelectorFromParent =
|
export const getFirstSelectorFromParent =
|
||||||
(parent: ParentElement) =>
|
(parent: ParentElement) =>
|
||||||
<E extends Element = Element>(selector: string): Option.Option<NonNullable<E>> =>
|
<E extends Element = Element>(selector: string): Option.Option<NonNullable<E>> =>
|
||||||
Option.fromNullable(parent.querySelector<E>(selector));
|
Option.fromNullishOr(parent.querySelector<E>(selector));
|
||||||
|
|
||||||
export const getFirstSelectorFromDocument = <E extends Element = Element>(
|
export const getFirstSelectorFromDocument = <E extends Element = Element>(
|
||||||
selector: string,
|
selector: string,
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ $raw_products = wc_get_products([
|
||||||
'limit' => 12,
|
'limit' => 12,
|
||||||
'order' => 'DESC',
|
'order' => 'DESC',
|
||||||
'orderby' => 'date',
|
'orderby' => 'date',
|
||||||
'status' => 'publish'
|
'status' => 'publish',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/** @var list<Product> */
|
/** @var list<Product> */
|
||||||
$products = array_map(
|
$products = array_map(
|
||||||
callback: Product::new(...),
|
callback: Product::new(...),
|
||||||
array: $raw_products
|
array: $raw_products,
|
||||||
);
|
);
|
||||||
$context['products'] = $products;
|
$context['products'] = $products;
|
||||||
|
|
||||||
|
|
@ -49,15 +49,15 @@ $context['products_category_id'] = $products_category_id;
|
||||||
function load_page_resources(): void {
|
function load_page_resources(): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-boutique',
|
handle: 'haiku-atelier-2024-styles-page-boutique',
|
||||||
path: '/assets/css/pages/page-boutique.css'
|
path: '/assets/css/pages/page-boutique.css',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-page-boutique',
|
id: 'haiku-atelier-2024-scripts-page-boutique',
|
||||||
path: '/assets/js/scripts-page-boutique.js'
|
path: '/assets/js/scripts-page-boutique.js',
|
||||||
);
|
);
|
||||||
Resource::enqueue_script_module_file(
|
Resource::enqueue_script_module_file(
|
||||||
id: 'haiku-atelier-2024-scripts-menu-categories',
|
id: 'haiku-atelier-2024-scripts-menu-categories',
|
||||||
path: '/assets/js/scripts-menu-categories.js'
|
path: '/assets/js/scripts-menu-categories.js',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,5 +66,5 @@ add_action('wp_enqueue_scripts', 'load_page_resources');
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $templates,
|
filenames: $templates,
|
||||||
data: $context
|
data: $context,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,6 @@
|
||||||
srcset="{{ rel_url }}.avif"
|
srcset="{{ rel_url }}.avif"
|
||||||
type="image/avif"
|
type="image/avif"
|
||||||
/>
|
/>
|
||||||
<source
|
|
||||||
srcset="{{ rel_url }}.webp"
|
|
||||||
type="image/webp"
|
|
||||||
/>
|
|
||||||
<source
|
<source
|
||||||
srcset="{{ rel_url }}.png"
|
srcset="{{ rel_url }}.png"
|
||||||
type="image/png"
|
type="image/png"
|
||||||
|
|
|
||||||
|
|
@ -35,13 +35,13 @@ $email = [
|
||||||
'transporteur' => Str::of($commande->get_shipping_method())->replace(' (Free)', ''),
|
'transporteur' => Str::of($commande->get_shipping_method())->replace(' (Free)', ''),
|
||||||
'numero_suivi' => blank($commande->get_meta('tracking_number'))
|
'numero_suivi' => blank($commande->get_meta('tracking_number'))
|
||||||
? 'UNKNOWN_TRACKING_NUMBER'
|
? 'UNKNOWN_TRACKING_NUMBER'
|
||||||
: $commande->get_meta('tracking_number')
|
: $commande->get_meta('tracking_number'),
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
$contexte['commande'] = $email;
|
$contexte['commande'] = $email;
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ $email = [
|
||||||
'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()],
|
'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()],
|
||||||
'livraison' => [
|
'livraison' => [
|
||||||
'methode' => $commande->get_shipping_method(),
|
'methode' => $commande->get_shipping_method(),
|
||||||
'numero_suivi' => $commande->get_meta('tracking_number')
|
'numero_suivi' => $commande->get_meta('tracking_number'),
|
||||||
],
|
],
|
||||||
'paiement' => ['methode' => ''],
|
'paiement' => ['methode' => ''],
|
||||||
'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) {
|
'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) {
|
||||||
|
|
@ -51,14 +51,14 @@ $email = [
|
||||||
? collect($produit->get_attributes())
|
? collect($produit->get_attributes())
|
||||||
->mapWithKeys(static fn($_atr, $cle): array => [
|
->mapWithKeys(static fn($_atr, $cle): array => [
|
||||||
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
||||||
'valeur' => $produit->get_attribute($cle)
|
'valeur' => $produit->get_attribute($cle),
|
||||||
])
|
])
|
||||||
->toArray()
|
->toArray()
|
||||||
: [],
|
: [],
|
||||||
'lien' => $produit->get_permalink(),
|
'lien' => $produit->get_permalink(),
|
||||||
'nom' => $produit->get_title(),
|
'nom' => $produit->get_title(),
|
||||||
'prix_total' => $article->get_total(),
|
'prix_total' => $article->get_total(),
|
||||||
'quantite' => $article->get_quantity()
|
'quantite' => $article->get_quantity(),
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
'totaux' => [
|
'totaux' => [
|
||||||
|
|
@ -67,8 +67,8 @@ $email = [
|
||||||
'sous_total_reduction' => '0.00' === $commande->get_discount_total()
|
'sous_total_reduction' => '0.00' === $commande->get_discount_total()
|
||||||
? '0'
|
? '0'
|
||||||
: Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€',
|
: Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€',
|
||||||
'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€'
|
'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€',
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
// Transforme les codes de pays en noms de pays
|
// Transforme les codes de pays en noms de pays
|
||||||
$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()];
|
$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()];
|
||||||
|
|
@ -78,5 +78,5 @@ $contexte['commande'] = $email;
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -47,14 +47,14 @@ $email = [
|
||||||
? collect($produit->get_attributes())
|
? collect($produit->get_attributes())
|
||||||
->mapWithKeys(static fn($_atr, $cle): array => [
|
->mapWithKeys(static fn($_atr, $cle): array => [
|
||||||
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
||||||
'valeur' => $produit->get_attribute($cle)
|
'valeur' => $produit->get_attribute($cle),
|
||||||
])
|
])
|
||||||
->toArray()
|
->toArray()
|
||||||
: [],
|
: [],
|
||||||
'lien' => $produit->get_permalink(),
|
'lien' => $produit->get_permalink(),
|
||||||
'nom' => $produit->get_title(),
|
'nom' => $produit->get_title(),
|
||||||
'prix_total' => $article->get_total(),
|
'prix_total' => $article->get_total(),
|
||||||
'quantite' => $article->get_quantity()
|
'quantite' => $article->get_quantity(),
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
'totaux' => [
|
'totaux' => [
|
||||||
|
|
@ -63,8 +63,8 @@ $email = [
|
||||||
'sous_total_reduction' => '0.00' === $commande->get_discount_total()
|
'sous_total_reduction' => '0.00' === $commande->get_discount_total()
|
||||||
? '0'
|
? '0'
|
||||||
: Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€',
|
: Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€',
|
||||||
'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€'
|
'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€',
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
// Transforme les codes de pays en noms de pays
|
// Transforme les codes de pays en noms de pays
|
||||||
$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()];
|
$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()];
|
||||||
|
|
@ -75,5 +75,5 @@ $contexte['commande'] = $email;
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte
|
data: $contexte,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue