diff --git a/composer.lock b/composer.lock index 147b8916..701f13bd 100644 --- a/composer.lock +++ b/composer.lock @@ -18,7 +18,13 @@ "type": "zip", "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/ce5d34dae9868237a32248788ea175c7e9da14b1", "reference": "ce5d34dae9868237a32248788ea175c7e9da14b1", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3" @@ -63,7 +69,13 @@ "type": "zip", "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.1" @@ -132,7 +144,13 @@ "type": "zip", "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/lexer": "^1 || ^2", @@ -208,7 +226,13 @@ "type": "zip", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -255,7 +279,13 @@ "type": "zip", "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -346,7 +376,13 @@ "type": "zip", "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/deprecations": "^1.0", @@ -424,7 +460,13 @@ "type": "zip", "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2|^8.0", @@ -475,20 +517,26 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.17.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "shasum": "" + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -530,9 +578,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, - "time": "2023-11-17T15:01:25+00:00" + "time": "2022-09-18T07:06:19+00:00" }, { "name": "firebase/php-jwt", @@ -546,7 +594,13 @@ "type": "zip", "url": "https://api.github.com/repos/firebase/php-jwt/zipball/a49db6f0a5033aef5143295342f1c95521b075ff", "reference": "a49db6f0a5033aef5143295342f1c95521b075ff", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.4||^8.0" @@ -609,7 +663,13 @@ "type": "zip", "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", @@ -671,7 +731,13 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/command/zipball/0eebc653784f4902b3272e826fe8e88743d14e77", "reference": "0eebc653784f4902b3272e826fe8e88743d14e77", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "guzzlehttp/guzzle": "^7.8", @@ -754,7 +820,13 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -880,7 +952,13 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/bcab7c0d61672b606510a6fe5af3039d04968c0f", "reference": "bcab7c0d61672b606510a6fe5af3039d04968c0f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "guzzlehttp/command": "^1.3.1", @@ -967,7 +1045,13 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0" @@ -1050,7 +1134,13 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", @@ -1166,7 +1256,13 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", @@ -1242,17 +1338,23 @@ }, { "name": "hyperf/context", - "version": "v3.1.15", + "version": "v3.1.27", "source": { "type": "git", "url": "https://github.com/hyperf/context.git", - "reference": "ad913fd50eb5f738c038e172c120bc6956c0da69" + "reference": "e7d169e587eac3692e523aed26d1896fd6a548fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/context/zipball/ad913fd50eb5f738c038e172c120bc6956c0da69", - "reference": "ad913fd50eb5f738c038e172c120bc6956c0da69", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/context/zipball/e7d169e587eac3692e523aed26d1896fd6a548fe", + "reference": "e7d169e587eac3692e523aed26d1896fd6a548fe", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/engine": "^2.0", @@ -1300,21 +1402,27 @@ "type": "open_collective" } ], - "time": "2024-03-23T11:28:51+00:00" + "time": "2024-06-17T01:51:06+00:00" }, { "name": "hyperf/contract", - "version": "v3.1.15", + "version": "v3.1.27", "source": { "type": "git", "url": "https://github.com/hyperf/contract.git", - "reference": "9950abe963cc6b30c6d3506fa5b3adbd58cb1945" + "reference": "f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/contract/zipball/9950abe963cc6b30c6d3506fa5b3adbd58cb1945", - "reference": "9950abe963cc6b30c6d3506fa5b3adbd58cb1945", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/contract/zipball/f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19", + "reference": "f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" @@ -1357,24 +1465,30 @@ "type": "open_collective" } ], - "time": "2024-03-23T11:28:51+00:00" + "time": "2024-06-17T01:51:06+00:00" }, { "name": "hyperf/engine", - "version": "v2.11.0", + "version": "v2.10.5", "source": { "type": "git", "url": "https://github.com/hyperf/engine.git", - "reference": "26e0b65fc2a63a00266e7124e221c6f3fb2c8e95" + "reference": "b3e1a025e388815612815a0b08fc4f2439140676" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/engine/zipball/26e0b65fc2a63a00266e7124e221c6f3fb2c8e95", - "reference": "26e0b65fc2a63a00266e7124e221c6f3fb2c8e95", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/engine/zipball/b3e1a025e388815612815a0b08fc4f2439140676", + "reference": "b3e1a025e388815612815a0b08fc4f2439140676", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "hyperf/engine-contract": "~1.10.0", + "hyperf/engine-contract": "~1.9.0", "php": ">=8.0" }, "conflict": { @@ -1398,7 +1512,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.11-dev" + "dev-master": "2.10-dev" }, "hyperf": { "config": "Hyperf\\Engine\\ConfigProvider" @@ -1425,7 +1539,7 @@ ], "support": { "issues": "https://github.com/hyperf/engine/issues", - "source": "https://github.com/hyperf/engine/tree/v2.11.0" + "source": "https://github.com/hyperf/engine/tree/v2.10.5" }, "funding": [ { @@ -1437,21 +1551,27 @@ "type": "open_collective" } ], - "time": "2024-04-17T13:36:28+00:00" + "time": "2024-03-12T06:06:19+00:00" }, { "name": "hyperf/engine-contract", - "version": "v1.10.1", + "version": "v1.9.1", "source": { "type": "git", "url": "https://github.com/hyperf/engine-contract.git", - "reference": "2714a8ba6d6b916e5bd373ff680df9569a4c9eef" + "reference": "fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/engine-contract/zipball/2714a8ba6d6b916e5bd373ff680df9569a4c9eef", - "reference": "2714a8ba6d6b916e5bd373ff680df9569a4c9eef", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/engine-contract/zipball/fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb", + "reference": "fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0" @@ -1492,7 +1612,7 @@ ], "support": { "issues": "https://github.com/hyperf/engine-contract/issues", - "source": "https://github.com/hyperf/engine-contract/tree/v1.10.1" + "source": "https://github.com/hyperf/engine-contract/tree/v1.9.1" }, "funding": [ { @@ -1504,7 +1624,7 @@ "type": "open_collective" } ], - "time": "2024-04-17T13:34:51+00:00" + "time": "2023-12-15T07:37:14+00:00" }, { "name": "hyperf/pimple", @@ -1518,7 +1638,13 @@ "type": "zip", "url": "https://api.github.com/repos/hyperf-cloud/pimple-integration/zipball/7bd07745c256b83679471c06ec2a11e901d37277", "reference": "7bd07745c256b83679471c06ec2a11e901d37277", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/context": "^3.0", @@ -1566,17 +1692,23 @@ }, { "name": "illuminate/collections", - "version": "v10.48.10", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "f9589f1063a449111dcaa1d68285b507d9483a95" + "reference": "994cedcd2060b65918efe46da805ac31b0563034" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/f9589f1063a449111dcaa1d68285b507d9483a95", - "reference": "f9589f1063a449111dcaa1d68285b507d9483a95", - "shasum": "" + "url": "https://api.github.com/repos/illuminate/collections/zipball/994cedcd2060b65918efe46da805ac31b0563034", + "reference": "994cedcd2060b65918efe46da805ac31b0563034", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "illuminate/conditionable": "^10.0", @@ -1617,11 +1749,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-03-20T20:09:13+00:00" + "time": "2024-06-04T13:31:47+00:00" }, { "name": "illuminate/conditionable", - "version": "v10.48.10", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/conditionable.git", @@ -1631,7 +1763,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/conditionable/zipball/d0958e4741fc9d6f516a552060fd1b829a85e009", "reference": "d0958e4741fc9d6f516a552060fd1b829a85e009", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.0.2" @@ -1667,7 +1805,7 @@ }, { "name": "illuminate/contracts", - "version": "v10.48.10", + "version": "v10.48.14", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", @@ -1677,7 +1815,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/contracts/zipball/8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.1", @@ -1715,7 +1859,7 @@ }, { "name": "illuminate/macroable", - "version": "v10.48.10", + "version": "v10.48.14", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -1725,7 +1869,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.1" @@ -1761,7 +1911,7 @@ }, { "name": "illuminate/redis", - "version": "v10.48.10", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/redis.git", @@ -1771,7 +1921,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/redis/zipball/8a438aa70f4bf48973dfe8de9af3ad91cc5361a7", "reference": "8a438aa70f4bf48973dfe8de9af3ad91cc5361a7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "illuminate/collections": "^10.0", @@ -1815,17 +1971,23 @@ }, { "name": "illuminate/support", - "version": "v10.48.10", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "ee3a1aaed36d916654ce0ae09dfbd38644a4f582" + "reference": "263f389d81488c237846b69469f91387ca2729f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/ee3a1aaed36d916654ce0ae09dfbd38644a4f582", - "reference": "ee3a1aaed36d916654ce0ae09dfbd38644a4f582", - "shasum": "" + "url": "https://api.github.com/repos/illuminate/support/zipball/263f389d81488c237846b69469f91387ca2729f3", + "reference": "263f389d81488c237846b69469f91387ca2729f3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/inflector": "^2.0", @@ -1882,7 +2044,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-04-07T17:47:33+00:00" + "time": "2024-05-16T21:33:51+00:00" }, { "name": "intervention/gif", @@ -1956,16 +2118,16 @@ }, { "name": "intervention/image", - "version": "3.6.4", + "version": "3.6.5", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "193324ec88bc5ad4039e57ce9b926ae28dfde813" + "reference": "d428433aa74836ab75e8d4a5241628bebb7f4077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/193324ec88bc5ad4039e57ce9b926ae28dfde813", - "reference": "193324ec88bc5ad4039e57ce9b926ae28dfde813", + "url": "https://api.github.com/repos/Intervention/image/zipball/d428433aa74836ab75e8d4a5241628bebb7f4077", + "reference": "d428433aa74836ab75e8d4a5241628bebb7f4077", "shasum": "", "mirrors": [ { @@ -2018,7 +2180,7 @@ ], "support": { "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/3.6.4" + "source": "https://github.com/Intervention/image/tree/3.6.5" }, "funding": [ { @@ -2030,7 +2192,7 @@ "type": "github" } ], - "time": "2024-05-08T13:53:15+00:00" + "time": "2024-06-06T17:15:24+00:00" }, { "name": "jpush/jpush", @@ -2044,7 +2206,13 @@ "type": "zip", "url": "https://api.github.com/repos/jpush/jpush-api-php-client/zipball/ebb191e8854a35c3fb7a6626028b3a23132cbe2c", "reference": "ebb191e8854a35c3fb7a6626028b3a23132cbe2c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-curl": "*", @@ -2091,7 +2259,13 @@ "type": "zip", "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.3|^8.0" @@ -2151,7 +2325,13 @@ "type": "zip", "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-mbstring": "*", @@ -2232,7 +2412,13 @@ "type": "zip", "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -2283,7 +2469,13 @@ "type": "zip", "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", "reference": "728434227fe21be27ff6d86621a1b13107a2562c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -2339,7 +2531,13 @@ "type": "zip", "url": "https://api.github.com/repos/Seldaek/monolog/zipball/a30bfe2e142720dfa990d0a7e573997f5d884215", "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2", @@ -2431,17 +2629,23 @@ }, { "name": "nesbot/carbon", - "version": "2.72.3", + "version": "2.72.4", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" + "reference": "117671bd1a44c819b941dcd152bd0268466464e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", - "shasum": "" + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/117671bd1a44c819b941dcd152bd0268466464e0", + "reference": "117671bd1a44c819b941dcd152bd0268466464e0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "carbonphp/carbon-doctrine-types": "*", @@ -2474,8 +2678,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" }, "laravel": { "providers": [ @@ -2534,7 +2738,7 @@ "type": "tidelift" } ], - "time": "2024-01-25T10:35:09+00:00" + "time": "2024-06-03T15:00:23+00:00" }, { "name": "next/var-dumper", @@ -2548,7 +2752,13 @@ "type": "zip", "url": "https://api.github.com/repos/next-laboratory/var-dumper/zipball/ec86735e0df42240acc57341e4d5c1b8cff6b522", "reference": "ec86735e0df42240acc57341e4d5c1b8cff6b522", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4", @@ -2597,7 +2807,13 @@ "type": "zip", "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", "reference": "181d480e08d9476e61381e04a71b34dc0432e812", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.4.0" @@ -2647,7 +2863,13 @@ "type": "zip", "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2", @@ -2725,7 +2947,13 @@ "type": "zip", "url": "https://api.github.com/repos/Nyholm/psr7-server/zipball/4335801d851f554ca43fa6e7d2602141538854dc", "reference": "4335801d851f554ca43fa6e7d2602141538854dc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0", @@ -2853,17 +3081,23 @@ }, { "name": "overtrue/socialite", - "version": "4.10.1", + "version": "4.11.0", "source": { "type": "git", "url": "https://github.com/overtrue/socialite.git", - "reference": "457b48f31414dc00d3fb445d6ab9355595067afe" + "reference": "4929bbb9241818783c5954151ebbbef36d4953f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/socialite/zipball/457b48f31414dc00d3fb445d6ab9355595067afe", - "reference": "457b48f31414dc00d3fb445d6ab9355595067afe", - "shasum": "" + "url": "https://api.github.com/repos/overtrue/socialite/zipball/4929bbb9241818783c5954151ebbbef36d4953f4", + "reference": "4929bbb9241818783c5954151ebbbef36d4953f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -2913,7 +3147,7 @@ ], "support": { "issues": "https://github.com/overtrue/socialite/issues", - "source": "https://github.com/overtrue/socialite/tree/4.10.1" + "source": "https://github.com/overtrue/socialite/tree/4.11.0" }, "funding": [ { @@ -2921,7 +3155,7 @@ "type": "github" } ], - "time": "2024-03-08T06:41:54+00:00" + "time": "2024-06-07T06:46:20+00:00" }, { "name": "php-di/invoker", @@ -2935,7 +3169,13 @@ "type": "zip", "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86", "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -2990,7 +3230,13 @@ "type": "zip", "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/ae0f1b3b03d8b29dff81747063cbfd6276246cc4", "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "laravel/serializable-closure": "^1.0", @@ -3066,7 +3312,13 @@ "type": "zip", "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c", "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -3108,7 +3360,13 @@ "type": "zip", "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0", "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-ctype": "*", @@ -3213,7 +3471,13 @@ "type": "zip", "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0" @@ -3381,7 +3645,13 @@ "type": "zip", "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.5", @@ -3434,7 +3704,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.0" @@ -3483,7 +3759,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.0 || ^8.0" @@ -3531,7 +3813,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4.0" @@ -3579,7 +3867,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -3629,7 +3923,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.0 || ^8.0", @@ -3681,7 +3981,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0.0", @@ -3736,7 +4042,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -3789,7 +4101,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.0" @@ -3839,7 +4157,13 @@ "type": "zip", "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.0" @@ -3880,21 +4204,28 @@ }, { "name": "qcloud/cos-sdk-v5", - "version": "v2.6.9", + "version": "v2.6.10", "source": { "type": "git", "url": "https://github.com/tencentyun/cos-php-sdk-v5.git", - "reference": "85e11f94ff4e13f3f866c4720902e991221b8baa" + "reference": "ab37936e870459d662281e5a3e9756ce97f8a4d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/85e11f94ff4e13f3f866c4720902e991221b8baa", - "reference": "85e11f94ff4e13f3f866c4720902e991221b8baa", - "shasum": "" + "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/ab37936e870459d662281e5a3e9756ce97f8a4d3", + "reference": "ab37936e870459d662281e5a3e9756ce97f8a4d3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-curl": "*", "ext-json": "*", + "ext-libxml": "*", "ext-mbstring": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.2.1 || ^7.0", @@ -3942,9 +4273,9 @@ ], "support": { "issues": "https://github.com/tencentyun/cos-php-sdk-v5/issues", - "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.6.9" + "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.6.10" }, - "time": "2024-01-17T02:50:42+00:00" + "time": "2024-05-17T07:44:52+00:00" }, { "name": "qiniu/php-sdk", @@ -3958,7 +4289,13 @@ "type": "zip", "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/1c6bc89166e524a40ee42bf516fb99ffc6401c82", "reference": "1c6bc89166e524a40ee42bf516fb99ffc6401c82", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3.3" @@ -4013,7 +4350,13 @@ "type": "zip", "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.6" @@ -4047,17 +4390,23 @@ }, { "name": "symfony/cache", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b9e9b93c9817ec6c789c7943f5e54b57a041c16a" + "reference": "287142df5579ce223c485b3872df3efae8390984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b9e9b93c9817ec6c789c7943f5e54b57a041c16a", - "reference": "b9e9b93c9817ec6c789c7943f5e54b57a041c16a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/cache/zipball/287142df5579ce223c485b3872df3efae8390984", + "reference": "287142df5579ce223c485b3872df3efae8390984", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4123,7 +4472,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.7" + "source": "https://github.com/symfony/cache/tree/v6.4.8" }, "funding": [ { @@ -4139,21 +4488,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "shasum": "" + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4162,7 +4517,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4199,7 +4554,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -4215,21 +4570,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { "name": "symfony/console", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f" + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4293,7 +4654,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -4309,21 +4670,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "shasum": "" + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" @@ -4331,7 +4698,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4360,7 +4727,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -4376,27 +4743,33 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.7", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3683d8107cf1efdd24795cc5f7482be1eded34ac" + "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3683d8107cf1efdd24795cc5f7482be1eded34ac", - "reference": "3683d8107cf1efdd24795cc5f7482be1eded34ac", - "shasum": "" + "url": "https://api.github.com/repos/symfony/http-client/zipball/f3c86a60a3615f466333a11fd42010d4382a82c7", + "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/http-client-contracts": "^3", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4414,7 +4787,7 @@ "amphp/http-client": "^4.2.1", "amphp/http-tunnel": "^1.0", "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4|^2.0", + "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", @@ -4453,7 +4826,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.7" + "source": "https://github.com/symfony/http-client/tree/v6.4.5" }, "funding": [ { @@ -4469,21 +4842,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-03-02T12:45:30+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.5.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "20414d96f391677bf80078aa55baece78b82647d" + "reference": "1ee70e699b41909c209a0c930f11034b93578654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", - "reference": "20414d96f391677bf80078aa55baece78b82647d", - "shasum": "" + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654", + "reference": "1ee70e699b41909c209a0c930f11034b93578654", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" @@ -4491,7 +4870,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4531,7 +4910,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0" }, "funding": [ { @@ -4547,21 +4926,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2023-07-30T20:28:31+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b4db6b833035477cb70e18d0ae33cb7c2b521759" + "reference": "27de8cc95e11db7a50b027e71caaab9024545947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b4db6b833035477cb70e18d0ae33cb7c2b521759", - "reference": "b4db6b833035477cb70e18d0ae33cb7c2b521759", - "shasum": "" + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947", + "reference": "27de8cc95e11db7a50b027e71caaab9024545947", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4608,7 +4993,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.7" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.8" }, "funding": [ { @@ -4624,21 +5009,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/mime", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "decadcf3865918ecfcbfa90968553994ce935a5e" + "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/decadcf3865918ecfcbfa90968553994ce935a5e", - "reference": "decadcf3865918ecfcbfa90968553994ce935a5e", - "shasum": "" + "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33", + "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4693,7 +5084,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.7" + "source": "https://github.com/symfony/mime/tree/v6.4.8" }, "funding": [ { @@ -4709,7 +5100,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-06-01T07:50:16+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4723,7 +5114,13 @@ "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -4792,17 +5189,23 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -4850,7 +5253,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -4866,21 +5269,27 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1", @@ -4934,7 +5343,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0" }, "funding": [ { @@ -4950,7 +5359,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -4964,7 +5373,13 @@ "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5045,7 +5460,13 @@ "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5125,7 +5546,13 @@ "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5198,7 +5625,13 @@ "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5268,17 +5701,23 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5324,7 +5763,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" }, "funding": [ { @@ -5340,25 +5779,30 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.1" }, "type": "library", "extra": { @@ -5401,7 +5845,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0" }, "funding": [ { @@ -5417,42 +5861,53 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:35:24+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.7", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "e8adf6b1b46d9115f5d9247fa74bbefc459680c0" + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/e8adf6b1b46d9115f5d9247fa74bbefc459680c0", - "reference": "e8adf6b1b46d9115f5d9247fa74bbefc459680c0", - "shasum": "" + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=8.1", - "psr/http-message": "^1.0|^2.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0" - }, - "conflict": { - "php-http/discovery": "<1.15", - "symfony/http-kernel": "<6.2" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" }, "require-dev": { "nyholm/psr7": "^1.1", - "php-http/discovery": "^1.15", - "psr/log": "^1.1.4|^2|^3", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^6.2|^7.0", - "symfony/http-kernel": "^6.2|^7.0" + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" }, "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.3-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Bridge\\PsrHttpMessage\\": "" @@ -5472,11 +5927,11 @@ }, { "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "homepage": "http://symfony.com/contributors" } ], "description": "PSR HTTP message bridge", - "homepage": "https://symfony.com", + "homepage": "http://symfony.com", "keywords": [ "http", "http-message", @@ -5484,7 +5939,8 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.7" + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" }, "funding": [ { @@ -5500,34 +5956,43 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2023-07-26T11:53:26+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, + "suggest": { + "symfony/service-implementation": "" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5537,10 +6002,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5567,7 +6029,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -5583,21 +6045,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69" + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ffeb9591c61f65a68d47f77d12b83fa530227a69", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69", - "shasum": "" + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -5653,7 +6121,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.7" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -5669,21 +6137,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/translation", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "7495687c58bfd88b7883823747b0656d90679123" + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/7495687c58bfd88b7883823747b0656d90679123", - "reference": "7495687c58bfd88b7883823747b0656d90679123", - "shasum": "" + "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a", + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -5748,7 +6222,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.7" + "source": "https://github.com/symfony/translation/tree/v6.4.8" }, "funding": [ { @@ -5764,21 +6238,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" @@ -5786,7 +6266,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5826,7 +6306,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -5842,21 +6322,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7a9cd977cd1c5fed3694bee52990866432af07d7" + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7a9cd977cd1c5fed3694bee52990866432af07d7", - "reference": "7a9cd977cd1c5fed3694bee52990866432af07d7", - "shasum": "" + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -5911,7 +6397,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.7" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" }, "funding": [ { @@ -5927,21 +6413,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "825f9b00c37bbe1c1691cc1aff9b5451fc9b4405" + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/825f9b00c37bbe1c1691cc1aff9b5451fc9b4405", - "reference": "825f9b00c37bbe1c1691cc1aff9b5451fc9b4405", - "shasum": "" + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/792ca836f99b340f2e9ca9497c7953948c49a504", + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -5988,7 +6480,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.7" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.8" }, "funding": [ { @@ -6004,7 +6496,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "taoser/webman-validate", @@ -6018,7 +6510,13 @@ "type": "zip", "url": "https://api.github.com/repos/taoser/webman-validate/zipball/f6ceda3700cabf3e48966b845fd980faa292127e", "reference": "f6ceda3700cabf3e48966b845fd980faa292127e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0", @@ -6064,7 +6562,13 @@ "type": "zip", "url": "https://api.github.com/repos/TheNorthMemory/xml/zipball/6f50c63450a0b098772423f8bdc3c4ad2c4c30bb", "reference": "6f50c63450a0b098772423f8bdc3c4ad2c4c30bb", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-libxml": "*", @@ -6115,7 +6619,13 @@ "type": "zip", "url": "https://api.github.com/repos/Tinywan/webman-jwt/zipball/9e637852e870394b064068c646074dabeca0c2a9", "reference": "9e637852e870394b064068c646074dabeca0c2a9", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -6162,7 +6672,13 @@ "type": "zip", "url": "https://api.github.com/repos/Tinywan/webman-storage/zipball/0867631bbd1731658ac745481131ef93415cdf62", "reference": "0867631bbd1731658ac745481131ef93415cdf62", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2", @@ -6206,7 +6722,13 @@ "type": "zip", "url": "https://api.github.com/repos/top-think/think-container/zipball/2189b39e42af2c14203ed4372b92e38989e9dabb", "reference": "2189b39e42af2c14203ed4372b92e38989e9dabb", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0", @@ -6252,7 +6774,13 @@ "type": "zip", "url": "https://api.github.com/repos/top-think/think-helper/zipball/769acbe50a4274327162f9c68ec2e89a38eb2aff", "reference": "769acbe50a4274327162f9c68ec2e89a38eb2aff", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1.0" @@ -6298,7 +6826,13 @@ "type": "zip", "url": "https://api.github.com/repos/top-think/think-orm/zipball/7b0b8ea6ca5e020217f6ba7ae34d547e148a675b", "reference": "7b0b8ea6ca5e020217f6ba7ae34d547e148a675b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -6343,31 +6877,37 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.6.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "shasum": "" + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.2", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", + "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -6379,7 +6919,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -6411,7 +6951,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -6423,7 +6963,7 @@ "type": "tidelift" } ], - "time": "2023-11-12T22:43:29+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "voku/portable-ascii", @@ -6437,7 +6977,13 @@ "type": "zip", "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", "reference": "b56450eed252f6801410d810c8e1727224ae0743", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0.0" @@ -6501,17 +7047,23 @@ }, { "name": "w7corp/easywechat", - "version": "6.15.1", + "version": "6.8.0", "source": { "type": "git", "url": "https://github.com/w7corp/easywechat.git", - "reference": "8902917ceeaa20354301e533ff3725f0044c04ca" + "reference": "60f0b4ba2ac3144df1a2291193daa34beb949d26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/w7corp/easywechat/zipball/8902917ceeaa20354301e533ff3725f0044c04ca", - "reference": "8902917ceeaa20354301e533ff3725f0044c04ca", - "shasum": "" + "url": "https://api.github.com/repos/w7corp/easywechat/zipball/60f0b4ba2ac3144df1a2291193daa34beb949d26", + "reference": "60f0b4ba2ac3144df1a2291193daa34beb949d26", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-curl": "*", @@ -6520,18 +7072,19 @@ "ext-openssl": "*", "ext-simplexml": "*", "ext-sodium": "*", + "monolog/monolog": "^2.2", "nyholm/psr7": "^1.5", "nyholm/psr7-server": "^1.0", - "overtrue/socialite": "^3.5.4|^4.0.1", + "overtrue/socialite": "^3.5|^4.0.1", "php": ">=8.0.2", "psr/http-client": "^1.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/cache": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", "symfony/polyfill-php81": "^1.25", - "symfony/psr-http-message-bridge": "^2.1.2|^6.4.0", + "symfony/psr-http-message-bridge": "^2.1.2", "thenorthmemory/xml": "^1.0" }, "require-dev": { @@ -6588,7 +7141,7 @@ ], "support": { "issues": "https://github.com/w7corp/easywechat/issues", - "source": "https://github.com/w7corp/easywechat/tree/6.15.1" + "source": "https://github.com/w7corp/easywechat/tree/6.8.0" }, "funding": [ { @@ -6596,21 +7149,27 @@ "type": "github" } ], - "time": "2024-03-29T12:23:19+00:00" + "time": "2022-09-25T13:05:18+00:00" }, { "name": "webman/console", - "version": "v1.3.8", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/webman-php/console.git", - "reference": "9e866344882601cbdefe76b44e6b61532c7fb98e" + "reference": "ee50a1eca292eea5bf70661aa2ef722e1294814c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webman-php/console/zipball/9e866344882601cbdefe76b44e6b61532c7fb98e", - "reference": "9e866344882601cbdefe76b44e6b61532c7fb98e", - "shasum": "" + "url": "https://api.github.com/repos/webman-php/console/zipball/ee50a1eca292eea5bf70661aa2ef722e1294814c", + "reference": "ee50a1eca292eea5bf70661aa2ef722e1294814c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/inflector": "^2.0", @@ -6649,7 +7208,7 @@ "source": "https://github.com/webman-php/console", "wiki": "http://www.workerman.net/doc/webman" }, - "time": "2024-05-08T03:31:43+00:00" + "time": "2024-01-23T03:25:23+00:00" }, { "name": "webman/log", @@ -6663,7 +7222,13 @@ "type": "zip", "url": "https://api.github.com/repos/webman-php/log/zipball/893917ee574de9bf008eaf24089c61ec843437c7", "reference": "893917ee574de9bf008eaf24089c61ec843437c7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "type": "library", "autoload": { @@ -6684,17 +7249,23 @@ }, { "name": "webman/push", - "version": "v1.0.17", + "version": "v1.0.18", "source": { "type": "git", "url": "https://github.com/webman-php/push.git", - "reference": "f87a588e6775a613a8cd2339bf90b76fdde626da" + "reference": "bad36cef656e6e6b7998b44fd09b6b794f0469e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webman-php/push/zipball/f87a588e6775a613a8cd2339bf90b76fdde626da", - "reference": "f87a588e6775a613a8cd2339bf90b76fdde626da", - "shasum": "" + "url": "https://api.github.com/repos/webman-php/push/zipball/bad36cef656e6e6b7998b44fd09b6b794f0469e7", + "reference": "bad36cef656e6e6b7998b44fd09b6b794f0469e7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2" @@ -6711,26 +7282,32 @@ ], "support": { "issues": "https://github.com/webman-php/push/issues", - "source": "https://github.com/webman-php/push/tree/v1.0.17" + "source": "https://github.com/webman-php/push/tree/v1.0.18" }, - "time": "2024-02-04T14:03:32+00:00" + "time": "2024-06-07T00:26:52+00:00" }, { "name": "webman/redis-queue", - "version": "v1.3.2", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/webman-php/redis-queue.git", - "reference": "80b9ddca0405bbb6d02e6b368e8036b3b1a13814" + "reference": "6fd491b19acb006d60931724aa2577a046ccb612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webman-php/redis-queue/zipball/80b9ddca0405bbb6d02e6b368e8036b3b1a13814", - "reference": "80b9ddca0405bbb6d02e6b368e8036b3b1a13814", - "shasum": "" + "url": "https://api.github.com/repos/webman-php/redis-queue/zipball/6fd491b19acb006d60931724aa2577a046ccb612", + "reference": "6fd491b19acb006d60931724aa2577a046ccb612", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "workerman/redis-queue": "^1.2" + "workerman/redis-queue": "^1.0" }, "type": "library", "autoload": { @@ -6742,9 +7319,9 @@ "description": "Redis message queue plugin for webman.", "support": { "issues": "https://github.com/webman-php/redis-queue/issues", - "source": "https://github.com/webman-php/redis-queue/tree/v1.3.2" + "source": "https://github.com/webman-php/redis-queue/tree/v1.3.1" }, - "time": "2024-04-03T02:00:20+00:00" + "time": "2024-02-28T07:21:52+00:00" }, { "name": "webman/think-orm", @@ -6758,7 +7335,13 @@ "type": "zip", "url": "https://api.github.com/repos/webman-php/think-orm/zipball/9f1e525c5c4b5a2e1eee6a4f82ef5d23c69139a2", "reference": "9f1e525c5c4b5a2e1eee6a4f82ef5d23c69139a2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "topthink/think-orm": "^2.0.53 || ^3.0.0", @@ -6792,7 +7375,13 @@ "type": "zip", "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-ctype": "*", @@ -6906,7 +7495,13 @@ "type": "zip", "url": "https://api.github.com/repos/walkor/redis/zipball/542f10c243ba846f1f3b4c07a26136c5fa80d972", "reference": "542f10c243ba846f1f3b4c07a26136c5fa80d972", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7", @@ -6941,7 +7536,13 @@ "type": "zip", "url": "https://api.github.com/repos/walkor/redis-queue/zipball/7b6aee70d69e5c9427c0411d85f8398027831b42", "reference": "7b6aee70d69e5c9427c0411d85f8398027831b42", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0", @@ -6978,7 +7579,13 @@ "type": "zip", "url": "https://api.github.com/repos/walkor/webman-framework/zipball/84335520a340ee60adf7cf17aeb0edb9536c24e8", "reference": "84335520a340ee60adf7cf17aeb0edb9536c24e8", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -7040,7 +7647,13 @@ "type": "zip", "url": "https://api.github.com/repos/walkor/workerman/zipball/afc8242fc769ab7cf22eb4ac22b97cb59d465e4e", "reference": "afc8242fc769ab7cf22eb4ac22b97cb59d465e4e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0" @@ -7093,17 +7706,23 @@ }, { "name": "yansongda/artful", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/yansongda/artful.git", - "reference": "9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f" + "reference": "4118bce8a6cd506580dd36957c833ce222d0dc2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yansongda/artful/zipball/9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f", - "reference": "9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f", - "shasum": "" + "url": "https://api.github.com/repos/yansongda/artful/zipball/4118bce8a6cd506580dd36957c833ce222d0dc2e", + "reference": "4118bce8a6cd506580dd36957c833ce222d0dc2e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "guzzlehttp/psr7": "^2.6", @@ -7113,7 +7732,7 @@ "psr/http-client": "^1.0", "psr/http-message": "^1.1 || ^2.0", "psr/log": "^1.1 || ^2.0 || ^3.0", - "yansongda/supports": "~4.0.9" + "yansongda/supports": "~4.0.10" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.44", @@ -7163,7 +7782,7 @@ "issues": "https://github.com/yansongda/artful/issues", "source": "https://github.com/yansongda/artful" }, - "time": "2024-04-28T13:59:07+00:00" + "time": "2024-06-09T15:54:20+00:00" }, { "name": "yansongda/pay", @@ -7245,17 +7864,23 @@ }, { "name": "yansongda/supports", - "version": "v4.0.9", + "version": "v4.0.10", "source": { "type": "git", "url": "https://github.com/yansongda/supports.git", - "reference": "c3479723be665360a5635c15f184a1d0a8dc995a" + "reference": "11cc73776e6d4d763a84c8c733f64820abdc44e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yansongda/supports/zipball/c3479723be665360a5635c15f184a1d0a8dc995a", - "reference": "c3479723be665360a5635c15f184a1d0a8dc995a", - "shasum": "" + "url": "https://api.github.com/repos/yansongda/supports/zipball/11cc73776e6d4d763a84c8c733f64820abdc44e5", + "reference": "11cc73776e6d4d763a84c8c733f64820abdc44e5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0" @@ -7300,7 +7925,7 @@ "issues": "https://github.com/yansongda/supports/issues", "source": "https://github.com/yansongda/supports" }, - "time": "2024-01-06T05:14:33+00:00" + "time": "2024-06-09T15:49:21+00:00" } ], "packages-dev": [], diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 7acc5f50..0c232d26 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -9,8 +9,8 @@ return array( '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php', '9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index a6ee1799..2bed1201 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -10,8 +10,8 @@ class ComposerStaticInitcefecbcff919f3c1c8084830bbb72adc '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php', '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 75033121..35ef5f3c 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -490,21 +490,27 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.17.0", - "version_normalized": "4.17.0.0", + "version": "v4.16.0", + "version_normalized": "4.16.0.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "shasum": "" + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -516,7 +522,7 @@ "ext-iconv": "Converts text to and from non-UTF-8 encodings", "ext-tidy": "Used for pretty-printing HTML" }, - "time": "2023-11-17T15:01:25+00:00", + "time": "2022-09-18T07:06:19+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -548,7 +554,7 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, "install-path": "../ezyang/htmlpurifier" }, @@ -1284,18 +1290,24 @@ }, { "name": "hyperf/context", - "version": "v3.1.15", - "version_normalized": "3.1.15.0", + "version": "v3.1.27", + "version_normalized": "3.1.27.0", "source": { "type": "git", "url": "https://github.com/hyperf/context.git", - "reference": "ad913fd50eb5f738c038e172c120bc6956c0da69" + "reference": "e7d169e587eac3692e523aed26d1896fd6a548fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/context/zipball/ad913fd50eb5f738c038e172c120bc6956c0da69", - "reference": "ad913fd50eb5f738c038e172c120bc6956c0da69", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/context/zipball/e7d169e587eac3692e523aed26d1896fd6a548fe", + "reference": "e7d169e587eac3692e523aed26d1896fd6a548fe", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/engine": "^2.0", @@ -1304,7 +1316,7 @@ "suggest": { "swow/psr7-plus": "Required to use RequestContext and ResponseContext" }, - "time": "2024-03-23T11:28:51+00:00", + "time": "2024-06-17T01:51:06+00:00", "type": "library", "extra": { "branch-alias": { @@ -1349,23 +1361,29 @@ }, { "name": "hyperf/contract", - "version": "v3.1.15", - "version_normalized": "3.1.15.0", + "version": "v3.1.27", + "version_normalized": "3.1.27.0", "source": { "type": "git", "url": "https://github.com/hyperf/contract.git", - "reference": "9950abe963cc6b30c6d3506fa5b3adbd58cb1945" + "reference": "f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/contract/zipball/9950abe963cc6b30c6d3506fa5b3adbd58cb1945", - "reference": "9950abe963cc6b30c6d3506fa5b3adbd58cb1945", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/contract/zipball/f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19", + "reference": "f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" }, - "time": "2024-03-23T11:28:51+00:00", + "time": "2024-06-17T01:51:06+00:00", "type": "library", "extra": { "branch-alias": { @@ -1409,21 +1427,27 @@ }, { "name": "hyperf/engine", - "version": "v2.11.0", - "version_normalized": "2.11.0.0", + "version": "v2.10.5", + "version_normalized": "2.10.5.0", "source": { "type": "git", "url": "https://github.com/hyperf/engine.git", - "reference": "26e0b65fc2a63a00266e7124e221c6f3fb2c8e95" + "reference": "b3e1a025e388815612815a0b08fc4f2439140676" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/engine/zipball/26e0b65fc2a63a00266e7124e221c6f3fb2c8e95", - "reference": "26e0b65fc2a63a00266e7124e221c6f3fb2c8e95", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/engine/zipball/b3e1a025e388815612815a0b08fc4f2439140676", + "reference": "b3e1a025e388815612815a0b08fc4f2439140676", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "hyperf/engine-contract": "~1.10.0", + "hyperf/engine-contract": "~1.9.0", "php": ">=8.0" }, "conflict": { @@ -1444,11 +1468,11 @@ "hyperf/http-message": "Required to use ResponseEmitter.", "psr/http-message": "Required to use WebSocket Frame." }, - "time": "2024-04-17T13:36:28+00:00", + "time": "2024-03-12T06:06:19+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.11-dev" + "dev-master": "2.10-dev" }, "hyperf": { "config": "Hyperf\\Engine\\ConfigProvider" @@ -1476,7 +1500,7 @@ ], "support": { "issues": "https://github.com/hyperf/engine/issues", - "source": "https://github.com/hyperf/engine/tree/v2.11.0" + "source": "https://github.com/hyperf/engine/tree/v2.10.5" }, "funding": [ { @@ -1492,18 +1516,24 @@ }, { "name": "hyperf/engine-contract", - "version": "v1.10.1", - "version_normalized": "1.10.1.0", + "version": "v1.9.1", + "version_normalized": "1.9.1.0", "source": { "type": "git", "url": "https://github.com/hyperf/engine-contract.git", - "reference": "2714a8ba6d6b916e5bd373ff680df9569a4c9eef" + "reference": "fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hyperf/engine-contract/zipball/2714a8ba6d6b916e5bd373ff680df9569a4c9eef", - "reference": "2714a8ba6d6b916e5bd373ff680df9569a4c9eef", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/engine-contract/zipball/fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb", + "reference": "fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0" @@ -1519,7 +1549,7 @@ "suggest": { "psr/http-message": "Required to use WebSocket Frame." }, - "time": "2024-04-17T13:34:51+00:00", + "time": "2023-12-15T07:37:14+00:00", "type": "library", "extra": { "branch-alias": { @@ -1546,7 +1576,7 @@ ], "support": { "issues": "https://github.com/hyperf/engine-contract/issues", - "source": "https://github.com/hyperf/engine-contract/tree/v1.10.1" + "source": "https://github.com/hyperf/engine-contract/tree/v1.9.1" }, "funding": [ { @@ -1623,18 +1653,24 @@ }, { "name": "illuminate/collections", - "version": "v10.48.10", - "version_normalized": "10.48.10.0", + "version": "v10.48.13", + "version_normalized": "10.48.13.0", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "f9589f1063a449111dcaa1d68285b507d9483a95" + "reference": "994cedcd2060b65918efe46da805ac31b0563034" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/f9589f1063a449111dcaa1d68285b507d9483a95", - "reference": "f9589f1063a449111dcaa1d68285b507d9483a95", - "shasum": "" + "url": "https://api.github.com/repos/illuminate/collections/zipball/994cedcd2060b65918efe46da805ac31b0563034", + "reference": "994cedcd2060b65918efe46da805ac31b0563034", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "illuminate/conditionable": "^10.0", @@ -1645,7 +1681,7 @@ "suggest": { "symfony/var-dumper": "Required to use the dump method (^6.2)." }, - "time": "2024-03-20T20:09:13+00:00", + "time": "2024-06-04T13:31:47+00:00", "type": "library", "extra": { "branch-alias": { @@ -1681,8 +1717,8 @@ }, { "name": "illuminate/conditionable", - "version": "v10.48.10", - "version_normalized": "10.48.10.0", + "version": "v10.48.13", + "version_normalized": "10.48.13.0", "source": { "type": "git", "url": "https://github.com/illuminate/conditionable.git", @@ -1692,7 +1728,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/conditionable/zipball/d0958e4741fc9d6f516a552060fd1b829a85e009", "reference": "d0958e4741fc9d6f516a552060fd1b829a85e009", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.0.2" @@ -1730,8 +1772,8 @@ }, { "name": "illuminate/contracts", - "version": "v10.48.10", - "version_normalized": "10.48.10.0", + "version": "v10.48.14", + "version_normalized": "10.48.14.0", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", @@ -1741,7 +1783,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/contracts/zipball/8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.1", @@ -1781,8 +1829,8 @@ }, { "name": "illuminate/macroable", - "version": "v10.48.10", - "version_normalized": "10.48.10.0", + "version": "v10.48.14", + "version_normalized": "10.48.14.0", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -1792,7 +1840,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^8.1" @@ -1830,8 +1884,8 @@ }, { "name": "illuminate/redis", - "version": "v10.48.10", - "version_normalized": "10.48.10.0", + "version": "v10.48.13", + "version_normalized": "10.48.13.0", "source": { "type": "git", "url": "https://github.com/illuminate/redis.git", @@ -1841,7 +1895,13 @@ "type": "zip", "url": "https://api.github.com/repos/illuminate/redis/zipball/8a438aa70f4bf48973dfe8de9af3ad91cc5361a7", "reference": "8a438aa70f4bf48973dfe8de9af3ad91cc5361a7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "illuminate/collections": "^10.0", @@ -1887,18 +1947,24 @@ }, { "name": "illuminate/support", - "version": "v10.48.10", - "version_normalized": "10.48.10.0", + "version": "v10.48.13", + "version_normalized": "10.48.13.0", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "ee3a1aaed36d916654ce0ae09dfbd38644a4f582" + "reference": "263f389d81488c237846b69469f91387ca2729f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/ee3a1aaed36d916654ce0ae09dfbd38644a4f582", - "reference": "ee3a1aaed36d916654ce0ae09dfbd38644a4f582", - "shasum": "" + "url": "https://api.github.com/repos/illuminate/support/zipball/263f389d81488c237846b69469f91387ca2729f3", + "reference": "263f389d81488c237846b69469f91387ca2729f3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/inflector": "^2.0", @@ -1925,7 +1991,7 @@ "symfony/var-dumper": "Required to use the dd function (^6.2).", "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." }, - "time": "2024-04-07T17:47:33+00:00", + "time": "2024-05-16T21:33:51+00:00", "type": "library", "extra": { "branch-alias": { @@ -2034,17 +2100,17 @@ }, { "name": "intervention/image", - "version": "3.6.4", - "version_normalized": "3.6.4.0", + "version": "3.6.5", + "version_normalized": "3.6.5.0", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "193324ec88bc5ad4039e57ce9b926ae28dfde813" + "reference": "d428433aa74836ab75e8d4a5241628bebb7f4077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/193324ec88bc5ad4039e57ce9b926ae28dfde813", - "reference": "193324ec88bc5ad4039e57ce9b926ae28dfde813", + "url": "https://api.github.com/repos/Intervention/image/zipball/d428433aa74836ab75e8d4a5241628bebb7f4077", + "reference": "d428433aa74836ab75e8d4a5241628bebb7f4077", "shasum": "", "mirrors": [ { @@ -2068,7 +2134,7 @@ "suggest": { "ext-exif": "Recommended to be able to read EXIF data properly." }, - "time": "2024-05-08T13:53:15+00:00", + "time": "2024-06-06T17:15:24+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2099,7 +2165,7 @@ ], "support": { "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/3.6.4" + "source": "https://github.com/Intervention/image/tree/3.6.5" }, "funding": [ { @@ -2530,18 +2596,24 @@ }, { "name": "nesbot/carbon", - "version": "2.72.3", - "version_normalized": "2.72.3.0", + "version": "2.72.4", + "version_normalized": "2.72.4.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" + "reference": "117671bd1a44c819b941dcd152bd0268466464e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", - "shasum": "" + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/117671bd1a44c819b941dcd152bd0268466464e0", + "reference": "117671bd1a44c819b941dcd152bd0268466464e0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "carbonphp/carbon-doctrine-types": "*", @@ -2568,15 +2640,15 @@ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "squizlabs/php_codesniffer": "^3.4" }, - "time": "2024-01-25T10:35:09+00:00", + "time": "2024-06-03T15:00:23+00:00", "bin": [ "bin/carbon" ], "type": "library", "extra": { "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" }, "laravel": { "providers": [ @@ -2970,18 +3042,24 @@ }, { "name": "overtrue/socialite", - "version": "4.10.1", - "version_normalized": "4.10.1.0", + "version": "4.11.0", + "version_normalized": "4.11.0.0", "source": { "type": "git", "url": "https://github.com/overtrue/socialite.git", - "reference": "457b48f31414dc00d3fb445d6ab9355595067afe" + "reference": "4929bbb9241818783c5954151ebbbef36d4953f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/socialite/zipball/457b48f31414dc00d3fb445d6ab9355595067afe", - "reference": "457b48f31414dc00d3fb445d6ab9355595067afe", - "shasum": "" + "url": "https://api.github.com/repos/overtrue/socialite/zipball/4929bbb9241818783c5954151ebbbef36d4953f4", + "reference": "4929bbb9241818783c5954151ebbbef36d4953f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -2997,7 +3075,7 @@ "phpstan/phpstan": "^1.7", "phpunit/phpunit": "^9.0" }, - "time": "2024-03-08T06:41:54+00:00", + "time": "2024-06-07T06:46:20+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3033,7 +3111,7 @@ ], "support": { "issues": "https://github.com/overtrue/socialite/issues", - "source": "https://github.com/overtrue/socialite/tree/4.10.1" + "source": "https://github.com/overtrue/socialite/tree/4.11.0" }, "funding": [ { @@ -4048,22 +4126,29 @@ }, { "name": "qcloud/cos-sdk-v5", - "version": "v2.6.9", - "version_normalized": "2.6.9.0", + "version": "v2.6.10", + "version_normalized": "2.6.10.0", "source": { "type": "git", "url": "https://github.com/tencentyun/cos-php-sdk-v5.git", - "reference": "85e11f94ff4e13f3f866c4720902e991221b8baa" + "reference": "ab37936e870459d662281e5a3e9756ce97f8a4d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/85e11f94ff4e13f3f866c4720902e991221b8baa", - "reference": "85e11f94ff4e13f3f866c4720902e991221b8baa", - "shasum": "" + "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/ab37936e870459d662281e5a3e9756ce97f8a4d3", + "reference": "ab37936e870459d662281e5a3e9756ce97f8a4d3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-curl": "*", "ext-json": "*", + "ext-libxml": "*", "ext-mbstring": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.2.1 || ^7.0", @@ -4071,7 +4156,7 @@ "guzzlehttp/psr7": "^1.3.1 || ^2.0", "php": ">=5.6" }, - "time": "2024-01-17T02:50:42+00:00", + "time": "2024-05-17T07:44:52+00:00", "type": "library", "extra": { "branch-alias": { @@ -4113,7 +4198,7 @@ ], "support": { "issues": "https://github.com/tencentyun/cos-php-sdk-v5/issues", - "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.6.9" + "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.6.10" }, "install-path": "../qcloud/cos-sdk-v5" }, @@ -4224,18 +4309,24 @@ }, { "name": "symfony/cache", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b9e9b93c9817ec6c789c7943f5e54b57a041c16a" + "reference": "287142df5579ce223c485b3872df3efae8390984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b9e9b93c9817ec6c789c7943f5e54b57a041c16a", - "reference": "b9e9b93c9817ec6c789c7943f5e54b57a041c16a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/cache/zipball/287142df5579ce223c485b3872df3efae8390984", + "reference": "287142df5579ce223c485b3872df3efae8390984", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4268,7 +4359,7 @@ "symfony/messenger": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4303,7 +4394,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.7" + "source": "https://github.com/symfony/cache/tree/v6.4.8" }, "funding": [ { @@ -4323,28 +4414,34 @@ }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.4.0", + "version_normalized": "3.4.0.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "shasum": "" + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", "psr/cache": "^3.0" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2023-09-25T12:52:38+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4382,7 +4479,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -4402,18 +4499,24 @@ }, { "name": "symfony/console", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f" + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4445,7 +4548,7 @@ "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4479,7 +4582,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -4499,27 +4602,33 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.3.0", + "version_normalized": "3.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "shasum": "" + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2023-05-23T14:45:45+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4549,7 +4658,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -4569,24 +4678,30 @@ }, { "name": "symfony/http-client", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.5", + "version_normalized": "6.4.5.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3683d8107cf1efdd24795cc5f7482be1eded34ac" + "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3683d8107cf1efdd24795cc5f7482be1eded34ac", - "reference": "3683d8107cf1efdd24795cc5f7482be1eded34ac", - "shasum": "" + "url": "https://api.github.com/repos/symfony/http-client/zipball/f3c86a60a3615f466333a11fd42010d4382a82c7", + "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/http-client-contracts": "^3", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4604,7 +4719,7 @@ "amphp/http-client": "^4.2.1", "amphp/http-tunnel": "^1.0", "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4|^2.0", + "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", @@ -4614,7 +4729,7 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/stopwatch": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-03-02T12:45:30+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4645,7 +4760,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.7" + "source": "https://github.com/symfony/http-client/tree/v6.4.5" }, "funding": [ { @@ -4665,27 +4780,33 @@ }, { "name": "symfony/http-client-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.4.0", + "version_normalized": "3.4.0.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "20414d96f391677bf80078aa55baece78b82647d" + "reference": "1ee70e699b41909c209a0c930f11034b93578654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", - "reference": "20414d96f391677bf80078aa55baece78b82647d", - "shasum": "" + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654", + "reference": "1ee70e699b41909c209a0c930f11034b93578654", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2023-07-30T20:28:31+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4726,7 +4847,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0" }, "funding": [ { @@ -4746,18 +4867,24 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b4db6b833035477cb70e18d0ae33cb7c2b521759" + "reference": "27de8cc95e11db7a50b027e71caaab9024545947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b4db6b833035477cb70e18d0ae33cb7c2b521759", - "reference": "b4db6b833035477cb70e18d0ae33cb7c2b521759", - "shasum": "" + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947", + "reference": "27de8cc95e11db7a50b027e71caaab9024545947", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4778,7 +4905,7 @@ "symfony/mime": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4806,7 +4933,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.7" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.8" }, "funding": [ { @@ -4826,18 +4953,24 @@ }, { "name": "symfony/mime", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "decadcf3865918ecfcbfa90968553994ce935a5e" + "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/decadcf3865918ecfcbfa90968553994ce935a5e", - "reference": "decadcf3865918ecfcbfa90968553994ce935a5e", - "shasum": "" + "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33", + "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -4862,7 +4995,7 @@ "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.3.2|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-06-01T07:50:16+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4894,7 +5027,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.7" + "source": "https://github.com/symfony/mime/tree/v6.4.8" }, "funding": [ { @@ -4996,18 +5129,24 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", + "version": "v1.30.0", + "version_normalized": "1.30.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5015,7 +5154,7 @@ "suggest": { "ext-intl": "For best performance" }, - "time": "2024-01-29T20:11:03+00:00", + "time": "2024-05-31T15:07:36+00:00", "type": "library", "extra": { "thanks": { @@ -5057,7 +5196,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -5077,18 +5216,24 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", + "version": "v1.30.0", + "version_normalized": "1.30.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1", @@ -5098,7 +5243,7 @@ "suggest": { "ext-intl": "For best performance" }, - "time": "2024-01-29T20:11:03+00:00", + "time": "2024-05-31T15:07:36+00:00", "type": "library", "extra": { "thanks": { @@ -5144,7 +5289,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0" }, "funding": [ { @@ -5490,23 +5635,29 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", + "version": "v1.30.0", + "version_normalized": "1.30.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" }, - "time": "2024-01-29T20:11:03+00:00", + "time": "2024-06-19T12:30:46+00:00", "type": "library", "extra": { "thanks": { @@ -5549,7 +5700,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" }, "funding": [ { @@ -5569,24 +5720,29 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", + "version": "v1.30.0", + "version_normalized": "1.30.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.1" }, - "time": "2024-01-29T20:11:03+00:00", + "time": "2024-06-19T12:35:24+00:00", "type": "library", "extra": { "thanks": { @@ -5629,7 +5785,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0" }, "funding": [ { @@ -5649,40 +5805,51 @@ }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v2.3.1", + "version_normalized": "2.3.1.0", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "e8adf6b1b46d9115f5d9247fa74bbefc459680c0" + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/e8adf6b1b46d9115f5d9247fa74bbefc459680c0", - "reference": "e8adf6b1b46d9115f5d9247fa74bbefc459680c0", - "shasum": "" + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=8.1", - "psr/http-message": "^1.0|^2.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0" - }, - "conflict": { - "php-http/discovery": "<1.15", - "symfony/http-kernel": "<6.2" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" }, "require-dev": { "nyholm/psr7": "^1.1", - "php-http/discovery": "^1.15", - "psr/log": "^1.1.4|^2|^3", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^6.2|^7.0", - "symfony/http-kernel": "^6.2|^7.0" + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2" }, - "time": "2024-04-18T09:22:46+00:00", + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "time": "2023-07-26T11:53:26+00:00", "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.3-dev" + } + }, "installation-source": "dist", "autoload": { "psr-4": { @@ -5703,11 +5870,11 @@ }, { "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "homepage": "http://symfony.com/contributors" } ], "description": "PSR HTTP message bridge", - "homepage": "https://symfony.com", + "homepage": "http://symfony.com", "keywords": [ "http", "http-message", @@ -5715,7 +5882,8 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.7" + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" }, "funding": [ { @@ -5735,32 +5903,41 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "time": "2024-04-18T09:32:20+00:00", + "suggest": { + "symfony/service-implementation": "" + }, + "time": "2022-05-30T19:17:29+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5771,10 +5948,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5801,7 +5975,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -5821,18 +5995,24 @@ }, { "name": "symfony/string", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69" + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ffeb9591c61f65a68d47f77d12b83fa530227a69", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69", - "shasum": "" + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -5851,7 +6031,7 @@ "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5890,7 +6070,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.7" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -5910,18 +6090,24 @@ }, { "name": "symfony/translation", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "7495687c58bfd88b7883823747b0656d90679123" + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/7495687c58bfd88b7883823747b0656d90679123", - "reference": "7495687c58bfd88b7883823747b0656d90679123", - "shasum": "" + "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a", + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -5957,7 +6143,7 @@ "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5988,7 +6174,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.7" + "source": "https://github.com/symfony/translation/tree/v6.4.8" }, "funding": [ { @@ -6008,27 +6194,33 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.4.1", + "version_normalized": "3.4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2023-12-26T14:02:43+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6069,7 +6261,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -6089,18 +6281,24 @@ }, { "name": "symfony/var-dumper", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7a9cd977cd1c5fed3694bee52990866432af07d7" + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7a9cd977cd1c5fed3694bee52990866432af07d7", - "reference": "7a9cd977cd1c5fed3694bee52990866432af07d7", - "shasum": "" + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -6119,7 +6317,7 @@ "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -6157,7 +6355,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.7" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" }, "funding": [ { @@ -6177,18 +6375,24 @@ }, { "name": "symfony/var-exporter", - "version": "v6.4.7", - "version_normalized": "6.4.7.0", + "version": "v6.4.8", + "version_normalized": "6.4.8.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "825f9b00c37bbe1c1691cc1aff9b5451fc9b4405" + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/825f9b00c37bbe1c1691cc1aff9b5451fc9b4405", - "reference": "825f9b00c37bbe1c1691cc1aff9b5451fc9b4405", - "shasum": "" + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/792ca836f99b340f2e9ca9497c7953948c49a504", + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.1", @@ -6199,7 +6403,7 @@ "symfony/serializer": "^6.4|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2024-04-18T09:22:46+00:00", + "time": "2024-05-31T14:49:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -6237,7 +6441,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.7" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.8" }, "funding": [ { @@ -6613,37 +6817,43 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.6.0", - "version_normalized": "5.6.0.0", + "version": "v5.5.0", + "version_normalized": "5.5.0.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "shasum": "" + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.2", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", + "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, - "time": "2023-11-12T22:43:29+00:00", + "time": "2022-10-16T01:01:54+00:00", "type": "library", "extra": { "bamarni-bin": { @@ -6651,7 +6861,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "5.5-dev" } }, "installation-source": "dist", @@ -6684,7 +6894,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -6777,18 +6987,24 @@ }, { "name": "w7corp/easywechat", - "version": "6.15.1", - "version_normalized": "6.15.1.0", + "version": "6.8.0", + "version_normalized": "6.8.0.0", "source": { "type": "git", "url": "https://github.com/w7corp/easywechat.git", - "reference": "8902917ceeaa20354301e533ff3725f0044c04ca" + "reference": "60f0b4ba2ac3144df1a2291193daa34beb949d26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/w7corp/easywechat/zipball/8902917ceeaa20354301e533ff3725f0044c04ca", - "reference": "8902917ceeaa20354301e533ff3725f0044c04ca", - "shasum": "" + "url": "https://api.github.com/repos/w7corp/easywechat/zipball/60f0b4ba2ac3144df1a2291193daa34beb949d26", + "reference": "60f0b4ba2ac3144df1a2291193daa34beb949d26", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-curl": "*", @@ -6797,18 +7013,19 @@ "ext-openssl": "*", "ext-simplexml": "*", "ext-sodium": "*", + "monolog/monolog": "^2.2", "nyholm/psr7": "^1.5", "nyholm/psr7-server": "^1.0", - "overtrue/socialite": "^3.5.4|^4.0.1", + "overtrue/socialite": "^3.5|^4.0.1", "php": ">=8.0.2", "psr/http-client": "^1.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/cache": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", "symfony/polyfill-php81": "^1.25", - "symfony/psr-http-message-bridge": "^2.1.2|^6.4.0", + "symfony/psr-http-message-bridge": "^2.1.2", "thenorthmemory/xml": "^1.0" }, "require-dev": { @@ -6821,7 +7038,7 @@ "phpunit/phpunit": "^9.5", "symfony/var-dumper": "^5.2" }, - "time": "2024-03-29T12:23:19+00:00", + "time": "2022-09-25T13:05:18+00:00", "type": "library", "extra": { "hooks": { @@ -6867,7 +7084,7 @@ ], "support": { "issues": "https://github.com/w7corp/easywechat/issues", - "source": "https://github.com/w7corp/easywechat/tree/6.15.1" + "source": "https://github.com/w7corp/easywechat/tree/6.8.0" }, "funding": [ { @@ -6879,18 +7096,24 @@ }, { "name": "webman/console", - "version": "v1.3.8", - "version_normalized": "1.3.8.0", + "version": "v1.3.4", + "version_normalized": "1.3.4.0", "source": { "type": "git", "url": "https://github.com/webman-php/console.git", - "reference": "9e866344882601cbdefe76b44e6b61532c7fb98e" + "reference": "ee50a1eca292eea5bf70661aa2ef722e1294814c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webman-php/console/zipball/9e866344882601cbdefe76b44e6b61532c7fb98e", - "reference": "9e866344882601cbdefe76b44e6b61532c7fb98e", - "shasum": "" + "url": "https://api.github.com/repos/webman-php/console/zipball/ee50a1eca292eea5bf70661aa2ef722e1294814c", + "reference": "ee50a1eca292eea5bf70661aa2ef722e1294814c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/inflector": "^2.0", @@ -6899,7 +7122,7 @@ "require-dev": { "workerman/webman": "^1.0" }, - "time": "2024-05-08T03:31:43+00:00", + "time": "2024-01-23T03:25:23+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -6969,23 +7192,29 @@ }, { "name": "webman/push", - "version": "v1.0.17", - "version_normalized": "1.0.17.0", + "version": "v1.0.18", + "version_normalized": "1.0.18.0", "source": { "type": "git", "url": "https://github.com/webman-php/push.git", - "reference": "f87a588e6775a613a8cd2339bf90b76fdde626da" + "reference": "bad36cef656e6e6b7998b44fd09b6b794f0469e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webman-php/push/zipball/f87a588e6775a613a8cd2339bf90b76fdde626da", - "reference": "f87a588e6775a613a8cd2339bf90b76fdde626da", - "shasum": "" + "url": "https://api.github.com/repos/webman-php/push/zipball/bad36cef656e6e6b7998b44fd09b6b794f0469e7", + "reference": "bad36cef656e6e6b7998b44fd09b6b794f0469e7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2" }, - "time": "2024-02-04T14:03:32+00:00", + "time": "2024-06-07T00:26:52+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -6999,29 +7228,35 @@ ], "support": { "issues": "https://github.com/webman-php/push/issues", - "source": "https://github.com/webman-php/push/tree/v1.0.17" + "source": "https://github.com/webman-php/push/tree/v1.0.18" }, "install-path": "../webman/push" }, { "name": "webman/redis-queue", - "version": "v1.3.2", - "version_normalized": "1.3.2.0", + "version": "v1.3.1", + "version_normalized": "1.3.1.0", "source": { "type": "git", "url": "https://github.com/webman-php/redis-queue.git", - "reference": "80b9ddca0405bbb6d02e6b368e8036b3b1a13814" + "reference": "6fd491b19acb006d60931724aa2577a046ccb612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webman-php/redis-queue/zipball/80b9ddca0405bbb6d02e6b368e8036b3b1a13814", - "reference": "80b9ddca0405bbb6d02e6b368e8036b3b1a13814", - "shasum": "" + "url": "https://api.github.com/repos/webman-php/redis-queue/zipball/6fd491b19acb006d60931724aa2577a046ccb612", + "reference": "6fd491b19acb006d60931724aa2577a046ccb612", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "workerman/redis-queue": "^1.2" + "workerman/redis-queue": "^1.0" }, - "time": "2024-04-03T02:00:20+00:00", + "time": "2024-02-28T07:21:52+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -7033,7 +7268,7 @@ "description": "Redis message queue plugin for webman.", "support": { "issues": "https://github.com/webman-php/redis-queue/issues", - "source": "https://github.com/webman-php/redis-queue/tree/v1.3.2" + "source": "https://github.com/webman-php/redis-queue/tree/v1.3.1" }, "install-path": "../webman/redis-queue" }, @@ -7405,18 +7640,24 @@ }, { "name": "yansongda/artful", - "version": "v1.1.0", - "version_normalized": "1.1.0.0", + "version": "v1.1.1", + "version_normalized": "1.1.1.0", "source": { "type": "git", "url": "https://github.com/yansongda/artful.git", - "reference": "9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f" + "reference": "4118bce8a6cd506580dd36957c833ce222d0dc2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yansongda/artful/zipball/9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f", - "reference": "9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f", - "shasum": "" + "url": "https://api.github.com/repos/yansongda/artful/zipball/4118bce8a6cd506580dd36957c833ce222d0dc2e", + "reference": "4118bce8a6cd506580dd36957c833ce222d0dc2e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "guzzlehttp/psr7": "^2.6", @@ -7426,7 +7667,7 @@ "psr/http-client": "^1.0", "psr/http-message": "^1.1 || ^2.0", "psr/log": "^1.1 || ^2.0 || ^3.0", - "yansongda/supports": "~4.0.9" + "yansongda/supports": "~4.0.10" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.44", @@ -7445,7 +7686,7 @@ "hyperf/pimple": "其它/无框架下使用 SDK,请安装,任选其一", "illuminate/container": "其它/无框架下使用 SDK,请安装,任选其一" }, - "time": "2024-04-28T13:59:07+00:00", + "time": "2024-06-09T15:54:20+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -7563,18 +7804,24 @@ }, { "name": "yansongda/supports", - "version": "v4.0.9", - "version_normalized": "4.0.9.0", + "version": "v4.0.10", + "version_normalized": "4.0.10.0", "source": { "type": "git", "url": "https://github.com/yansongda/supports.git", - "reference": "c3479723be665360a5635c15f184a1d0a8dc995a" + "reference": "11cc73776e6d4d763a84c8c733f64820abdc44e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yansongda/supports/zipball/c3479723be665360a5635c15f184a1d0a8dc995a", - "reference": "c3479723be665360a5635c15f184a1d0a8dc995a", - "shasum": "" + "url": "https://api.github.com/repos/yansongda/supports/zipball/11cc73776e6d4d763a84c8c733f64820abdc44e5", + "reference": "11cc73776e6d4d763a84c8c733f64820abdc44e5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0" @@ -7589,7 +7836,7 @@ "monolog/monolog": "Use logger", "symfony/console": "Use stdout logger" }, - "time": "2024-01-06T05:14:33+00:00", + "time": "2024-06-09T15:49:21+00:00", "type": "library", "installation-source": "dist", "autoload": { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 7a15816c..85a7ae43 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -74,9 +74,9 @@ 'dev_requirement' => false, ), 'ezyang/htmlpurifier' => array( - 'pretty_version' => 'v4.17.0', - 'version' => '4.17.0.0', - 'reference' => 'bbc513d79acf6691fa9cf10f192c90dd2957f18c', + 'pretty_version' => 'v4.16.0', + 'version' => '4.16.0.0', + 'reference' => '523407fb06eb9e5f3d59889b3978d5bfe94299c8', 'type' => 'library', 'install_path' => __DIR__ . '/../ezyang/htmlpurifier', 'aliases' => array(), @@ -155,36 +155,36 @@ 'dev_requirement' => false, ), 'hyperf/context' => array( - 'pretty_version' => 'v3.1.15', - 'version' => '3.1.15.0', - 'reference' => 'ad913fd50eb5f738c038e172c120bc6956c0da69', + 'pretty_version' => 'v3.1.27', + 'version' => '3.1.27.0', + 'reference' => 'e7d169e587eac3692e523aed26d1896fd6a548fe', 'type' => 'library', 'install_path' => __DIR__ . '/../hyperf/context', 'aliases' => array(), 'dev_requirement' => false, ), 'hyperf/contract' => array( - 'pretty_version' => 'v3.1.15', - 'version' => '3.1.15.0', - 'reference' => '9950abe963cc6b30c6d3506fa5b3adbd58cb1945', + 'pretty_version' => 'v3.1.27', + 'version' => '3.1.27.0', + 'reference' => 'f6465a1d9b9f9ac5a48fa5d250c45d00a874cc19', 'type' => 'library', 'install_path' => __DIR__ . '/../hyperf/contract', 'aliases' => array(), 'dev_requirement' => false, ), 'hyperf/engine' => array( - 'pretty_version' => 'v2.11.0', - 'version' => '2.11.0.0', - 'reference' => '26e0b65fc2a63a00266e7124e221c6f3fb2c8e95', + 'pretty_version' => 'v2.10.5', + 'version' => '2.10.5.0', + 'reference' => 'b3e1a025e388815612815a0b08fc4f2439140676', 'type' => 'library', 'install_path' => __DIR__ . '/../hyperf/engine', 'aliases' => array(), 'dev_requirement' => false, ), 'hyperf/engine-contract' => array( - 'pretty_version' => 'v1.10.1', - 'version' => '1.10.1.0', - 'reference' => '2714a8ba6d6b916e5bd373ff680df9569a4c9eef', + 'pretty_version' => 'v1.9.1', + 'version' => '1.9.1.0', + 'reference' => 'fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb', 'type' => 'library', 'install_path' => __DIR__ . '/../hyperf/engine-contract', 'aliases' => array(), @@ -200,17 +200,17 @@ 'dev_requirement' => false, ), 'illuminate/collections' => array( - 'pretty_version' => 'v10.48.10', - 'version' => '10.48.10.0', - 'reference' => 'f9589f1063a449111dcaa1d68285b507d9483a95', + 'pretty_version' => 'v10.48.13', + 'version' => '10.48.13.0', + 'reference' => '994cedcd2060b65918efe46da805ac31b0563034', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/collections', 'aliases' => array(), 'dev_requirement' => false, ), 'illuminate/conditionable' => array( - 'pretty_version' => 'v10.48.10', - 'version' => '10.48.10.0', + 'pretty_version' => 'v10.48.13', + 'version' => '10.48.13.0', 'reference' => 'd0958e4741fc9d6f516a552060fd1b829a85e009', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/conditionable', @@ -218,8 +218,8 @@ 'dev_requirement' => false, ), 'illuminate/contracts' => array( - 'pretty_version' => 'v10.48.10', - 'version' => '10.48.10.0', + 'pretty_version' => 'v10.48.14', + 'version' => '10.48.14.0', 'reference' => '8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', @@ -227,8 +227,8 @@ 'dev_requirement' => false, ), 'illuminate/macroable' => array( - 'pretty_version' => 'v10.48.10', - 'version' => '10.48.10.0', + 'pretty_version' => 'v10.48.14', + 'version' => '10.48.14.0', 'reference' => 'dff667a46ac37b634dcf68909d9d41e94dc97c27', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/macroable', @@ -236,8 +236,8 @@ 'dev_requirement' => false, ), 'illuminate/redis' => array( - 'pretty_version' => 'v10.48.10', - 'version' => '10.48.10.0', + 'pretty_version' => 'v10.48.13', + 'version' => '10.48.13.0', 'reference' => '8a438aa70f4bf48973dfe8de9af3ad91cc5361a7', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/redis', @@ -245,9 +245,9 @@ 'dev_requirement' => false, ), 'illuminate/support' => array( - 'pretty_version' => 'v10.48.10', - 'version' => '10.48.10.0', - 'reference' => 'ee3a1aaed36d916654ce0ae09dfbd38644a4f582', + 'pretty_version' => 'v10.48.13', + 'version' => '10.48.13.0', + 'reference' => '263f389d81488c237846b69469f91387ca2729f3', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/support', 'aliases' => array(), @@ -263,9 +263,9 @@ 'dev_requirement' => false, ), 'intervention/image' => array( - 'pretty_version' => '3.6.4', - 'version' => '3.6.4.0', - 'reference' => '193324ec88bc5ad4039e57ce9b926ae28dfde813', + 'pretty_version' => '3.6.5', + 'version' => '3.6.5.0', + 'reference' => 'd428433aa74836ab75e8d4a5241628bebb7f4077', 'type' => 'library', 'install_path' => __DIR__ . '/../intervention/image', 'aliases' => array(), @@ -332,9 +332,9 @@ ), ), 'nesbot/carbon' => array( - 'pretty_version' => '2.72.3', - 'version' => '2.72.3.0', - 'reference' => '0c6fd108360c562f6e4fd1dedb8233b423e91c83', + 'pretty_version' => '2.72.4', + 'version' => '2.72.4.0', + 'reference' => '117671bd1a44c819b941dcd152bd0268466464e0', 'type' => 'library', 'install_path' => __DIR__ . '/../nesbot/carbon', 'aliases' => array(), @@ -386,9 +386,9 @@ 'dev_requirement' => false, ), 'overtrue/socialite' => array( - 'pretty_version' => '4.10.1', - 'version' => '4.10.1.0', - 'reference' => '457b48f31414dc00d3fb445d6ab9355595067afe', + 'pretty_version' => '4.11.0', + 'version' => '4.11.0.0', + 'reference' => '4929bbb9241818783c5954151ebbbef36d4953f4', 'type' => 'library', 'install_path' => __DIR__ . '/../overtrue/socialite', 'aliases' => array(), @@ -606,9 +606,9 @@ ), ), 'qcloud/cos-sdk-v5' => array( - 'pretty_version' => 'v2.6.9', - 'version' => '2.6.9.0', - 'reference' => '85e11f94ff4e13f3f866c4720902e991221b8baa', + 'pretty_version' => 'v2.6.10', + 'version' => '2.6.10.0', + 'reference' => 'ab37936e870459d662281e5a3e9756ce97f8a4d3', 'type' => 'library', 'install_path' => __DIR__ . '/../qcloud/cos-sdk-v5', 'aliases' => array(), @@ -633,18 +633,18 @@ 'dev_requirement' => false, ), 'symfony/cache' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => 'b9e9b93c9817ec6c789c7943f5e54b57a041c16a', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => '287142df5579ce223c485b3872df3efae8390984', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/cache-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'df6a1a44c890faded49a5fca33c2d5c5fd3c2197', + 'pretty_version' => 'v3.4.0', + 'version' => '3.4.0.0', + 'reference' => '1d74b127da04ffa87aa940abe15446fa89653778', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache-contracts', 'aliases' => array(), @@ -657,36 +657,36 @@ ), ), 'symfony/console' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => 'a170e64ae10d00ba89e2acbb590dc2e54da8ad8f', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => 'be5854cee0e8c7b110f00d695d11debdfa1a2a91', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1', + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/http-client' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => '3683d8107cf1efdd24795cc5f7482be1eded34ac', + 'pretty_version' => 'v6.4.5', + 'version' => '6.4.5.0', + 'reference' => 'f3c86a60a3615f466333a11fd42010d4382a82c7', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-client', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/http-client-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => '20414d96f391677bf80078aa55baece78b82647d', + 'pretty_version' => 'v3.4.0', + 'version' => '3.4.0.0', + 'reference' => '1ee70e699b41909c209a0c930f11034b93578654', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-client-contracts', 'aliases' => array(), @@ -699,18 +699,18 @@ ), ), 'symfony/http-foundation' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => 'b4db6b833035477cb70e18d0ae33cb7c2b521759', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => '27de8cc95e11db7a50b027e71caaab9024545947', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-foundation', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/mime' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => 'decadcf3865918ecfcbfa90968553994ce935a5e', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => '618597ab8b78ac86d1c75a9d0b35540cda074f33', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/mime', 'aliases' => array(), @@ -726,18 +726,18 @@ 'dev_requirement' => false, ), 'symfony/polyfill-intl-grapheme' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => '32a9da87d7b3245e09ac426c83d334ae9f06f80f', + 'pretty_version' => 'v1.30.0', + 'version' => '1.30.0.0', + 'reference' => '64647a7c30b2283f5d49b874d84a18fc22054b7a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-intl-idn' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => 'a287ed7475f85bf6f61890146edbc932c0fff919', + 'pretty_version' => 'v1.30.0', + 'version' => '1.30.0.0', + 'reference' => 'a6e83bdeb3c84391d1dfe16f42e40727ce524a5c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', 'aliases' => array(), @@ -780,63 +780,63 @@ 'dev_requirement' => false, ), 'symfony/polyfill-php81' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => 'c565ad1e63f30e7477fc40738343c62b40bc672d', + 'pretty_version' => 'v1.30.0', + 'version' => '1.30.0.0', + 'reference' => '3fb075789fb91f9ad9af537c4012d523085bd5af', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php81', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-php83' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => '86fcae159633351e5fd145d1c47de6c528f8caff', + 'pretty_version' => 'v1.30.0', + 'version' => '1.30.0.0', + 'reference' => 'dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php83', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/psr-http-message-bridge' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => 'e8adf6b1b46d9115f5d9247fa74bbefc459680c0', + 'pretty_version' => 'v2.3.1', + 'version' => '2.3.1.0', + 'reference' => '581ca6067eb62640de5ff08ee1ba6850a0ee472e', 'type' => 'symfony-bridge', 'install_path' => __DIR__ . '/../symfony/psr-http-message-bridge', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'bd1d9e59a81d8fa4acdcea3f617c581f7475a80f', + 'pretty_version' => 'v2.5.2', + 'version' => '2.5.2.0', + 'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/string' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => 'ffeb9591c61f65a68d47f77d12b83fa530227a69', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => 'a147c0f826c4a1f3afb763ab8e009e37c877a44d', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/translation' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => '7495687c58bfd88b7883823747b0656d90679123', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => 'a002933b13989fc4bd0b58e04bf7eec5210e438a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'b9d2189887bb6b2e0367a9fc7136c5239ab9b05a', + 'pretty_version' => 'v3.4.1', + 'version' => '3.4.1.0', + 'reference' => '06450585bf65e978026bda220cdebca3f867fde7', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), @@ -849,18 +849,18 @@ ), ), 'symfony/var-dumper' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => '7a9cd977cd1c5fed3694bee52990866432af07d7', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => 'ad23ca4312395f0a8a8633c831ef4c4ee542ed25', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-dumper', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/var-exporter' => array( - 'pretty_version' => 'v6.4.7', - 'version' => '6.4.7.0', - 'reference' => '825f9b00c37bbe1c1691cc1aff9b5451fc9b4405', + 'pretty_version' => 'v6.4.8', + 'version' => '6.4.8.0', + 'reference' => '792ca836f99b340f2e9ca9497c7953948c49a504', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-exporter', 'aliases' => array(), @@ -930,9 +930,9 @@ 'dev_requirement' => false, ), 'vlucas/phpdotenv' => array( - 'pretty_version' => 'v5.6.0', - 'version' => '5.6.0.0', - 'reference' => '2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4', + 'pretty_version' => 'v5.5.0', + 'version' => '5.5.0.0', + 'reference' => '1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7', 'type' => 'library', 'install_path' => __DIR__ . '/../vlucas/phpdotenv', 'aliases' => array(), @@ -948,18 +948,18 @@ 'dev_requirement' => false, ), 'w7corp/easywechat' => array( - 'pretty_version' => '6.15.1', - 'version' => '6.15.1.0', - 'reference' => '8902917ceeaa20354301e533ff3725f0044c04ca', + 'pretty_version' => '6.8.0', + 'version' => '6.8.0.0', + 'reference' => '60f0b4ba2ac3144df1a2291193daa34beb949d26', 'type' => 'library', 'install_path' => __DIR__ . '/../w7corp/easywechat', 'aliases' => array(), 'dev_requirement' => false, ), 'webman/console' => array( - 'pretty_version' => 'v1.3.8', - 'version' => '1.3.8.0', - 'reference' => '9e866344882601cbdefe76b44e6b61532c7fb98e', + 'pretty_version' => 'v1.3.4', + 'version' => '1.3.4.0', + 'reference' => 'ee50a1eca292eea5bf70661aa2ef722e1294814c', 'type' => 'library', 'install_path' => __DIR__ . '/../webman/console', 'aliases' => array(), @@ -975,18 +975,18 @@ 'dev_requirement' => false, ), 'webman/push' => array( - 'pretty_version' => 'v1.0.17', - 'version' => '1.0.17.0', - 'reference' => 'f87a588e6775a613a8cd2339bf90b76fdde626da', + 'pretty_version' => 'v1.0.18', + 'version' => '1.0.18.0', + 'reference' => 'bad36cef656e6e6b7998b44fd09b6b794f0469e7', 'type' => 'library', 'install_path' => __DIR__ . '/../webman/push', 'aliases' => array(), 'dev_requirement' => false, ), 'webman/redis-queue' => array( - 'pretty_version' => 'v1.3.2', - 'version' => '1.3.2.0', - 'reference' => '80b9ddca0405bbb6d02e6b368e8036b3b1a13814', + 'pretty_version' => 'v1.3.1', + 'version' => '1.3.1.0', + 'reference' => '6fd491b19acb006d60931724aa2577a046ccb612', 'type' => 'library', 'install_path' => __DIR__ . '/../webman/redis-queue', 'aliases' => array(), @@ -1065,9 +1065,9 @@ 'dev_requirement' => false, ), 'yansongda/artful' => array( - 'pretty_version' => 'v1.1.0', - 'version' => '1.1.0.0', - 'reference' => '9e852f589728b4908c3ae0f0dd0a5bd11cd42a3f', + 'pretty_version' => 'v1.1.1', + 'version' => '1.1.1.0', + 'reference' => '4118bce8a6cd506580dd36957c833ce222d0dc2e', 'type' => 'library', 'install_path' => __DIR__ . '/../yansongda/artful', 'aliases' => array(), @@ -1083,9 +1083,9 @@ 'dev_requirement' => false, ), 'yansongda/supports' => array( - 'pretty_version' => 'v4.0.9', - 'version' => '4.0.9.0', - 'reference' => 'c3479723be665360a5635c15f184a1d0a8dc995a', + 'pretty_version' => 'v4.0.10', + 'version' => '4.0.10.0', + 'reference' => '11cc73776e6d4d763a84c8c733f64820abdc44e5', 'type' => 'library', 'install_path' => __DIR__ . '/../yansongda/supports', 'aliases' => array(), diff --git a/vendor/ezyang/htmlpurifier/CHANGELOG.md b/vendor/ezyang/htmlpurifier/CHANGELOG.md new file mode 100644 index 00000000..55cb9029 --- /dev/null +++ b/vendor/ezyang/htmlpurifier/CHANGELOG.md @@ -0,0 +1,6 @@ +# [4.16.0](https://github.com/ezyang/htmlpurifier/compare/v4.15.0...v4.16.0) (2022-09-18) + + +### Features + +* add semantic release ([#307](https://github.com/ezyang/htmlpurifier/issues/307)) ([db31243](https://github.com/ezyang/htmlpurifier/commit/db312435cb9d8d73395f75f9642a43ba6de5e903)), closes [#322](https://github.com/ezyang/htmlpurifier/issues/322) [#323](https://github.com/ezyang/htmlpurifier/issues/323) [#326](https://github.com/ezyang/htmlpurifier/issues/326) [#327](https://github.com/ezyang/htmlpurifier/issues/327) [#328](https://github.com/ezyang/htmlpurifier/issues/328) [#329](https://github.com/ezyang/htmlpurifier/issues/329) [#330](https://github.com/ezyang/htmlpurifier/issues/330) [#331](https://github.com/ezyang/htmlpurifier/issues/331) [#332](https://github.com/ezyang/htmlpurifier/issues/332) [#333](https://github.com/ezyang/htmlpurifier/issues/333) [#337](https://github.com/ezyang/htmlpurifier/issues/337) [#335](https://github.com/ezyang/htmlpurifier/issues/335) [ezyang/htmlpurifier#334](https://github.com/ezyang/htmlpurifier/issues/334) [#336](https://github.com/ezyang/htmlpurifier/issues/336) [#338](https://github.com/ezyang/htmlpurifier/issues/338) diff --git a/vendor/ezyang/htmlpurifier/VERSION b/vendor/ezyang/htmlpurifier/VERSION index 8643e722..f029ee57 100644 --- a/vendor/ezyang/htmlpurifier/VERSION +++ b/vendor/ezyang/htmlpurifier/VERSION @@ -1 +1 @@ -4.17.0 \ No newline at end of file +4.15.0 \ No newline at end of file diff --git a/vendor/ezyang/htmlpurifier/composer.json b/vendor/ezyang/htmlpurifier/composer.json index ed46bd5c..d7558295 100644 --- a/vendor/ezyang/htmlpurifier/composer.json +++ b/vendor/ezyang/htmlpurifier/composer.json @@ -13,7 +13,7 @@ } ], "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -38,8 +38,7 @@ "repositories": [ { "type": "vcs", - "url": "https://github.com/ezyang/simpletest.git", - "no-api": true + "url": "https://github.com/ezyang/simpletest.git" } ] } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php index 77ebf2de..47ee0133 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php @@ -7,7 +7,7 @@ * primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS * FILE, changes will be overwritten the next time the script is run. * - * @version 4.17.0 + * @version 4.15.0 * * @warning * You must *not* include any other HTML Purifier files before this file, diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php index 5c14a335..26f06127 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php @@ -19,7 +19,7 @@ */ /* - HTML Purifier 4.17.0 - Standards Compliant HTML Filtering + HTML Purifier 4.15.0 - Standards Compliant HTML Filtering Copyright (C) 2006-2008 Edward Z. Yang This library is free software; you can redistribute it and/or @@ -58,12 +58,12 @@ class HTMLPurifier * Version of HTML Purifier. * @type string */ - public $version = '4.17.0'; + public $version = '4.15.0'; /** * Constant with version of HTML Purifier. */ - const VERSION = '4.17.0'; + const VERSION = '4.15.0'; /** * Global configuration object. diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php index f1ff1163..74e24c88 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php @@ -10,21 +10,23 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef public function __construct() { - // Lowercase letters - $l = range('a', 'z'); - // Uppercase letters - $u = range('A', 'Z'); - // Digits - $d = range('0', '9'); - // Special bytes used by UTF-8 - $b = array_map('chr', range(0x80, 0xFF)); - // All valid characters for the mask - $c = array_merge($l, $u, $d, $b); - // Concatenate all valid characters into a string - // Use '_- ' as an initial value - $this->mask = array_reduce($c, function ($carry, $value) { - return $carry . $value; - }, '_- '); + $this->mask = '_- '; + for ($c = 'a'; $c <= 'z'; $c++) { + $this->mask .= $c; + } + for ($c = 'A'; $c <= 'Z'; $c++) { + $this->mask .= $c; + } + for ($c = '0'; $c <= '9'; $c++) { + $this->mask .= $c; + } // cast-y, but should be fine + // special bytes used by UTF-8 + for ($i = 0x80; $i <= 0xFF; $i++) { + // We don't bother excluding invalid bytes in this range, + // because the our restriction of well-formed UTF-8 will + // prevent these from ever occurring. + $this->mask .= chr($i); + } /* PHP's internal strcspn implementation is diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php index ddc5dfbe..1beeaa5d 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php @@ -106,7 +106,7 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef // If we have Net_IDNA2 support, we can support IRIs by // punycoding them. (This is the most portable thing to do, // since otherwise we have to assume browsers support - } elseif ($config->get('Core.EnableIDNA') && class_exists('Net_IDNA2')) { + } elseif ($config->get('Core.EnableIDNA')) { $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true)); // we need to encode each period separately $parts = explode('.', $string); diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php index cc30ab8c..dd63ea89 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php @@ -33,11 +33,7 @@ class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform // XXX Kind of inefficient $url = $this->parser->parse($attr['href']); - - // Ignore invalid schemes (e.g. `javascript:`) - if (!($scheme = $url->getSchemeObj($config, $context))) { - return $attr; - } + $scheme = $url->getSchemeObj($config, $context); if ($scheme->browsable && !$url->isBenign($config, $context)) { $attr['target'] = '_blank'; diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php index bd8f9984..707122bb 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php @@ -79,11 +79,44 @@ class HTMLPurifier_Bootstrap public static function registerAutoload() { $autoload = array('HTMLPurifier_Bootstrap', 'autoload'); - if (spl_autoload_functions() === false) { + if (($funcs = spl_autoload_functions()) === false) { spl_autoload_register($autoload); - } else { - // prepend flag exists, no need for shenanigans - spl_autoload_register($autoload, true, true); + } elseif (function_exists('spl_autoload_unregister')) { + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + // prepend flag exists, no need for shenanigans + spl_autoload_register($autoload, true, true); + } else { + $buggy = version_compare(PHP_VERSION, '5.2.11', '<'); + $compat = version_compare(PHP_VERSION, '5.1.2', '<=') && + version_compare(PHP_VERSION, '5.1.0', '>='); + foreach ($funcs as $func) { + if ($buggy && is_array($func)) { + // :TRICKY: There are some compatibility issues and some + // places where we need to error out + $reflector = new ReflectionMethod($func[0], $func[1]); + if (!$reflector->isStatic()) { + throw new Exception( + 'HTML Purifier autoloader registrar is not compatible + with non-static object methods due to PHP Bug #44144; + Please do not use HTMLPurifier.autoload.php (or any + file that includes this file); instead, place the code: + spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\')) + after your own autoloaders.' + ); + } + // Suprisingly, spl_autoload_register supports the + // Class::staticMethod callback format, although call_user_func doesn't + if ($compat) { + $func = implode('::', $func); + } + } + spl_autoload_unregister($func); + } + spl_autoload_register($autoload); + foreach ($funcs as $func) { + spl_autoload_register($func); + } + } } } } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php index 1bc419c5..3f08b81c 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php @@ -13,7 +13,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition * Assoc array of attribute name to definition object. * @type HTMLPurifier_AttrDef[] */ - public $info = []; + public $info = array(); /** * Constructs the info array. The meat of this class. @@ -22,7 +22,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition protected function doSetup($config) { $this->info['text-align'] = new HTMLPurifier_AttrDef_Enum( - ['left', 'right', 'center', 'justify'], + array('left', 'right', 'center', 'justify'), false ); @@ -31,7 +31,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['border-right-style'] = $this->info['border-left-style'] = $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum( - [ + array( 'none', 'hidden', 'dotted', @@ -42,42 +42,42 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'ridge', 'inset', 'outset' - ], + ), false ); $this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style); $this->info['clear'] = new HTMLPurifier_AttrDef_Enum( - ['none', 'left', 'right', 'both'], + array('none', 'left', 'right', 'both'), false ); $this->info['float'] = new HTMLPurifier_AttrDef_Enum( - ['none', 'left', 'right'], + array('none', 'left', 'right'), false ); $this->info['font-style'] = new HTMLPurifier_AttrDef_Enum( - ['normal', 'italic', 'oblique'], + array('normal', 'italic', 'oblique'), false ); $this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum( - ['normal', 'small-caps'], + array('normal', 'small-caps'), false ); $uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite( - [ - new HTMLPurifier_AttrDef_Enum(['none']), + array( + new HTMLPurifier_AttrDef_Enum(array('none')), new HTMLPurifier_AttrDef_CSS_URI() - ] + ) ); $this->info['list-style-position'] = new HTMLPurifier_AttrDef_Enum( - ['inside', 'outside'], + array('inside', 'outside'), false ); $this->info['list-style-type'] = new HTMLPurifier_AttrDef_Enum( - [ + array( 'disc', 'circle', 'square', @@ -87,7 +87,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'lower-alpha', 'upper-alpha', 'none' - ], + ), false ); $this->info['list-style-image'] = $uri_or_none; @@ -95,34 +95,34 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config); $this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum( - ['capitalize', 'uppercase', 'lowercase', 'none'], + array('capitalize', 'uppercase', 'lowercase', 'none'), false ); $this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color(); $this->info['background-image'] = $uri_or_none; $this->info['background-repeat'] = new HTMLPurifier_AttrDef_Enum( - ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'] + array('repeat', 'repeat-x', 'repeat-y', 'no-repeat') ); $this->info['background-attachment'] = new HTMLPurifier_AttrDef_Enum( - ['scroll', 'fixed'] + array('scroll', 'fixed') ); $this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition(); $this->info['background-size'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_Enum( - [ + array( 'auto', 'cover', 'contain', 'initial', 'inherit', - ] + ) ), new HTMLPurifier_AttrDef_CSS_Percentage(), new HTMLPurifier_AttrDef_CSS_Length() - ] + ) ); $border_color = @@ -131,10 +131,10 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['border-left-color'] = $this->info['border-right-color'] = $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ - new HTMLPurifier_AttrDef_Enum(['transparent']), + array( + new HTMLPurifier_AttrDef_Enum(array('transparent')), new HTMLPurifier_AttrDef_CSS_Color() - ] + ) ); $this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config); @@ -146,32 +146,32 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['border-bottom-width'] = $this->info['border-left-width'] = $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ - new HTMLPurifier_AttrDef_Enum(['thin', 'medium', 'thick']), + array( + new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')), new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative - ] + ) ); $this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width); $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ - new HTMLPurifier_AttrDef_Enum(['normal']), + array( + new HTMLPurifier_AttrDef_Enum(array('normal')), new HTMLPurifier_AttrDef_CSS_Length() - ] + ) ); $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ - new HTMLPurifier_AttrDef_Enum(['normal']), + array( + new HTMLPurifier_AttrDef_Enum(array('normal')), new HTMLPurifier_AttrDef_CSS_Length() - ] + ) ); $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_Enum( - [ + array( 'xx-small', 'x-small', 'small', @@ -181,20 +181,20 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'xx-large', 'larger', 'smaller' - ] + ) ), new HTMLPurifier_AttrDef_CSS_Percentage(), new HTMLPurifier_AttrDef_CSS_Length() - ] + ) ); $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ - new HTMLPurifier_AttrDef_Enum(['normal']), + array( + new HTMLPurifier_AttrDef_Enum(array('normal')), new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives new HTMLPurifier_AttrDef_CSS_Length('0'), new HTMLPurifier_AttrDef_CSS_Percentage(true) - ] + ) ); $margin = @@ -202,11 +202,11 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['margin-bottom'] = $this->info['margin-left'] = $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length(), new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(['auto']) - ] + new HTMLPurifier_AttrDef_Enum(array('auto')) + ) ); $this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin); @@ -217,41 +217,41 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['padding-bottom'] = $this->info['padding-left'] = $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0'), new HTMLPurifier_AttrDef_CSS_Percentage(true) - ] + ) ); $this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding); $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length(), new HTMLPurifier_AttrDef_CSS_Percentage() - ] + ) ); $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0'), new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(['auto', 'initial', 'inherit']) - ] + new HTMLPurifier_AttrDef_Enum(array('auto', 'initial', 'inherit')) + ) ); $trusted_min_wh = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0'), new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(['initial', 'inherit']) - ] + new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit')) + ) ); $trusted_max_wh = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0'), new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(['none', 'initial', 'inherit']) - ] + new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit')) + ) ); $max = $config->get('CSS.MaxImgLength'); @@ -263,10 +263,10 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'img', // For img tags: new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(['auto']) - ] + new HTMLPurifier_AttrDef_Enum(array('auto')) + ) ), // For everyone else: $trusted_wh @@ -279,10 +279,10 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'img', // For img tags: new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(['initial', 'inherit']) - ] + new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit')) + ) ), // For everyone else: $trusted_min_wh @@ -295,39 +295,22 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'img', // For img tags: new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(['none', 'initial', 'inherit']) - ] + new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit')) + ) ), // For everyone else: $trusted_max_wh ); - // text-decoration and related shorthands $this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration(); - $this->info['text-decoration-line'] = new HTMLPurifier_AttrDef_Enum( - ['none', 'underline', 'overline', 'line-through', 'initial', 'inherit'] - ); - - $this->info['text-decoration-style'] = new HTMLPurifier_AttrDef_Enum( - ['solid', 'double', 'dotted', 'dashed', 'wavy', 'initial', 'inherit'] - ); - - $this->info['text-decoration-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - - $this->info['text-decoration-thickness'] = new HTMLPurifier_AttrDef_CSS_Composite([ - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(['auto', 'from-font', 'initial', 'inherit']) - ]); - $this->info['font-family'] = new HTMLPurifier_AttrDef_CSS_FontFamily(); // this could use specialized code $this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum( - [ + array( 'normal', 'bold', 'bolder', @@ -341,7 +324,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition '700', '800', '900' - ], + ), false ); @@ -357,21 +340,21 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config); $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum( - ['collapse', 'separate'] + array('collapse', 'separate') ); $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum( - ['top', 'bottom'] + array('top', 'bottom') ); $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum( - ['auto', 'fixed'] + array('auto', 'fixed') ); $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_Enum( - [ + array( 'baseline', 'sub', 'super', @@ -380,11 +363,11 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'middle', 'bottom', 'text-bottom' - ] + ) ), new HTMLPurifier_AttrDef_CSS_Length(), new HTMLPurifier_AttrDef_CSS_Percentage() - ] + ) ); $this->info['border-spacing'] = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2); @@ -392,7 +375,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition // These CSS properties don't work on many browsers, but we live // in THE FUTURE! $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum( - ['nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line'] + array('nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line') ); if ($config->get('CSS.Proprietary')) { @@ -439,21 +422,21 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition // more CSS3 $this->info['page-break-after'] = $this->info['page-break-before'] = new HTMLPurifier_AttrDef_Enum( - [ + array( 'auto', 'always', 'avoid', 'left', 'right' - ] + ) ); - $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(['auto', 'avoid']); + $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid')); $border_radius = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Percentage(true), // disallow negative new HTMLPurifier_AttrDef_CSS_Length('0') // disallow negative - ]); + )); $this->info['border-top-left-radius'] = $this->info['border-top-right-radius'] = @@ -470,7 +453,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition protected function doSetupTricky($config) { $this->info['display'] = new HTMLPurifier_AttrDef_Enum( - [ + array( 'inline', 'block', 'list-item', @@ -489,12 +472,12 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition 'table-cell', 'table-caption', 'none' - ] + ) ); $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum( - ['visible', 'hidden', 'collapse'] + array('visible', 'hidden', 'collapse') ); - $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(['visible', 'hidden', 'auto', 'scroll']); + $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll')); $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); } @@ -504,23 +487,23 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition protected function doSetupTrusted($config) { $this->info['position'] = new HTMLPurifier_AttrDef_Enum( - ['static', 'relative', 'absolute', 'fixed'] + array('static', 'relative', 'absolute', 'fixed') ); $this->info['top'] = $this->info['left'] = $this->info['right'] = $this->info['bottom'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_CSS_Length(), new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(['auto']), - ] + new HTMLPurifier_AttrDef_Enum(array('auto')), + ) ); $this->info['z-index'] = new HTMLPurifier_AttrDef_CSS_Composite( - [ + array( new HTMLPurifier_AttrDef_Integer(), - new HTMLPurifier_AttrDef_Enum(['auto']), - ] + new HTMLPurifier_AttrDef_Enum(array('auto')), + ) ); } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php index f7511ca4..797d2687 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php @@ -21,7 +21,7 @@ class HTMLPurifier_Config * HTML Purifier's version * @type string */ - public $version = '4.17.0'; + public $version = '4.15.0'; /** * Whether or not to automatically finalize diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php index bfad967f..b82c6bb2 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php @@ -287,14 +287,13 @@ class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCac } elseif (filegroup($dir) === posix_getgid()) { $chmod = $chmod | 0070; } else { - // PHP's probably running as nobody, it is - // not obvious how to fix this (777 is probably - // bad if you are multi-user), let the user figure it out - $chmod = null; + // PHP's probably running as nobody, so we'll + // need to give global permissions + $chmod = $chmod | 0777; } trigger_error( - 'Directory ' . $dir . ' not writable. ' . - ($chmod === null ? '' : 'Please chmod to ' . decoct($chmod)), + 'Directory ' . $dir . ' not writable, ' . + 'please chmod to ' . decoct($chmod), E_USER_WARNING ); } else { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php index 3a0f4616..fd1cc9be 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php @@ -71,7 +71,7 @@ class HTMLPurifier_DefinitionCacheFactory return $this->caches[$method][$type]; } if (isset($this->implementations[$method]) && - class_exists($class = $this->implementations[$method])) { + class_exists($class = $this->implementations[$method], false)) { $cache = new $class($type); } else { if ($method != 'Serializer') { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php index 6f8e7790..66f70b0f 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php @@ -146,179 +146,175 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter foreach ($this->_tidy->css as $k => $decls) { // $decls are all CSS declarations inside an @ selector $new_decls = array(); - if (is_array($decls)) { - foreach ($decls as $selector => $style) { - $selector = trim($selector); - if ($selector === '') { - continue; - } // should not happen - // Parse the selector - // Here is the relevant part of the CSS grammar: - // - // ruleset - // : selector [ ',' S* selector ]* '{' ... - // selector - // : simple_selector [ combinator selector | S+ [ combinator? selector ]? ]? - // combinator - // : '+' S* - // : '>' S* - // simple_selector - // : element_name [ HASH | class | attrib | pseudo ]* - // | [ HASH | class | attrib | pseudo ]+ - // element_name - // : IDENT | '*' - // ; - // class - // : '.' IDENT - // ; - // attrib - // : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* - // [ IDENT | STRING ] S* ]? ']' - // ; - // pseudo - // : ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ] - // ; - // - // For reference, here are the relevant tokens: - // - // HASH #{name} - // IDENT {ident} - // INCLUDES == - // DASHMATCH |= - // STRING {string} - // FUNCTION {ident}\( - // - // And the lexical scanner tokens - // - // name {nmchar}+ - // nmchar [_a-z0-9-]|{nonascii}|{escape} - // nonascii [\240-\377] - // escape {unicode}|\\[^\r\n\f0-9a-f] - // unicode \\{h}}{1,6}(\r\n|[ \t\r\n\f])? - // ident -?{nmstart}{nmchar*} - // nmstart [_a-z]|{nonascii}|{escape} - // string {string1}|{string2} - // string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\" - // string2 \'([^\n\r\f\\"]|\\{nl}|{escape})*\' - // - // We'll implement a subset (in order to reduce attack - // surface); in particular: - // - // - No Unicode support - // - No escapes support - // - No string support (by proxy no attrib support) - // - element_name is matched against allowed - // elements (some people might find this - // annoying...) - // - Pseudo-elements one of :first-child, :link, - // :visited, :active, :hover, :focus + foreach ($decls as $selector => $style) { + $selector = trim($selector); + if ($selector === '') { + continue; + } // should not happen + // Parse the selector + // Here is the relevant part of the CSS grammar: + // + // ruleset + // : selector [ ',' S* selector ]* '{' ... + // selector + // : simple_selector [ combinator selector | S+ [ combinator? selector ]? ]? + // combinator + // : '+' S* + // : '>' S* + // simple_selector + // : element_name [ HASH | class | attrib | pseudo ]* + // | [ HASH | class | attrib | pseudo ]+ + // element_name + // : IDENT | '*' + // ; + // class + // : '.' IDENT + // ; + // attrib + // : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* + // [ IDENT | STRING ] S* ]? ']' + // ; + // pseudo + // : ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ] + // ; + // + // For reference, here are the relevant tokens: + // + // HASH #{name} + // IDENT {ident} + // INCLUDES == + // DASHMATCH |= + // STRING {string} + // FUNCTION {ident}\( + // + // And the lexical scanner tokens + // + // name {nmchar}+ + // nmchar [_a-z0-9-]|{nonascii}|{escape} + // nonascii [\240-\377] + // escape {unicode}|\\[^\r\n\f0-9a-f] + // unicode \\{h}}{1,6}(\r\n|[ \t\r\n\f])? + // ident -?{nmstart}{nmchar*} + // nmstart [_a-z]|{nonascii}|{escape} + // string {string1}|{string2} + // string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\" + // string2 \'([^\n\r\f\\"]|\\{nl}|{escape})*\' + // + // We'll implement a subset (in order to reduce attack + // surface); in particular: + // + // - No Unicode support + // - No escapes support + // - No string support (by proxy no attrib support) + // - element_name is matched against allowed + // elements (some people might find this + // annoying...) + // - Pseudo-elements one of :first-child, :link, + // :visited, :active, :hover, :focus - // handle ruleset - $selectors = array_map('trim', explode(',', $selector)); - $new_selectors = array(); - foreach ($selectors as $sel) { - // split on +, > and spaces - $basic_selectors = preg_split('/\s*([+> ])\s*/', $sel, -1, PREG_SPLIT_DELIM_CAPTURE); - // even indices are chunks, odd indices are - // delimiters - $nsel = null; - $delim = null; // guaranteed to be non-null after - // two loop iterations - for ($i = 0, $c = count($basic_selectors); $i < $c; $i++) { - $x = $basic_selectors[$i]; - if ($i % 2) { - // delimiter - if ($x === ' ') { - $delim = ' '; - } else { - $delim = ' ' . $x . ' '; - } + // handle ruleset + $selectors = array_map('trim', explode(',', $selector)); + $new_selectors = array(); + foreach ($selectors as $sel) { + // split on +, > and spaces + $basic_selectors = preg_split('/\s*([+> ])\s*/', $sel, -1, PREG_SPLIT_DELIM_CAPTURE); + // even indices are chunks, odd indices are + // delimiters + $nsel = null; + $delim = null; // guaranteed to be non-null after + // two loop iterations + for ($i = 0, $c = count($basic_selectors); $i < $c; $i++) { + $x = $basic_selectors[$i]; + if ($i % 2) { + // delimiter + if ($x === ' ') { + $delim = ' '; } else { - // simple selector - $components = preg_split('/([#.:])/', $x, -1, PREG_SPLIT_DELIM_CAPTURE); - $sdelim = null; - $nx = null; - for ($j = 0, $cc = count($components); $j < $cc; $j++) { - $y = $components[$j]; - if ($j === 0) { - if ($y === '*' || isset($html_definition->info[$y = strtolower($y)])) { - $nx = $y; - } else { - // $nx stays null; this matters - // if we don't manage to find - // any valid selector content, - // in which case we ignore the - // outer $delim - } - } elseif ($j % 2) { - // set delimiter - $sdelim = $y; + $delim = ' ' . $x . ' '; + } + } else { + // simple selector + $components = preg_split('/([#.:])/', $x, -1, PREG_SPLIT_DELIM_CAPTURE); + $sdelim = null; + $nx = null; + for ($j = 0, $cc = count($components); $j < $cc; $j++) { + $y = $components[$j]; + if ($j === 0) { + if ($y === '*' || isset($html_definition->info[$y = strtolower($y)])) { + $nx = $y; } else { - $attrdef = null; - if ($sdelim === '#') { - $attrdef = $this->_id_attrdef; - } elseif ($sdelim === '.') { - $attrdef = $this->_class_attrdef; - } elseif ($sdelim === ':') { - $attrdef = $this->_enum_attrdef; - } else { - throw new HTMLPurifier_Exception('broken invariant sdelim and preg_split'); - } - $r = $attrdef->validate($y, $config, $context); - if ($r !== false) { - if ($r !== true) { - $y = $r; - } - if ($nx === null) { - $nx = ''; - } - $nx .= $sdelim . $y; - } - } - } - if ($nx !== null) { - if ($nsel === null) { - $nsel = $nx; - } else { - $nsel .= $delim . $nx; + // $nx stays null; this matters + // if we don't manage to find + // any valid selector content, + // in which case we ignore the + // outer $delim } + } elseif ($j % 2) { + // set delimiter + $sdelim = $y; } else { - // delimiters to the left of invalid - // basic selector ignored + $attrdef = null; + if ($sdelim === '#') { + $attrdef = $this->_id_attrdef; + } elseif ($sdelim === '.') { + $attrdef = $this->_class_attrdef; + } elseif ($sdelim === ':') { + $attrdef = $this->_enum_attrdef; + } else { + throw new HTMLPurifier_Exception('broken invariant sdelim and preg_split'); + } + $r = $attrdef->validate($y, $config, $context); + if ($r !== false) { + if ($r !== true) { + $y = $r; + } + if ($nx === null) { + $nx = ''; + } + $nx .= $sdelim . $y; + } } } - } - if ($nsel !== null) { - if (!empty($scopes)) { - foreach ($scopes as $s) { - $new_selectors[] = "$s $nsel"; + if ($nx !== null) { + if ($nsel === null) { + $nsel = $nx; + } else { + $nsel .= $delim . $nx; } } else { - $new_selectors[] = $nsel; + // delimiters to the left of invalid + // basic selector ignored } } } - if (empty($new_selectors)) { + if ($nsel !== null) { + if (!empty($scopes)) { + foreach ($scopes as $s) { + $new_selectors[] = "$s $nsel"; + } + } else { + $new_selectors[] = $nsel; + } + } + } + if (empty($new_selectors)) { + continue; + } + $selector = implode(', ', $new_selectors); + foreach ($style as $name => $value) { + if (!isset($css_definition->info[$name])) { + unset($style[$name]); continue; } - $selector = implode(', ', $new_selectors); - foreach ($style as $name => $value) { - if (!isset($css_definition->info[$name])) { - unset($style[$name]); - continue; - } - $def = $css_definition->info[$name]; - $ret = $def->validate($value, $config, $context); - if ($ret === false) { - unset($style[$name]); - } else { - $style[$name] = $ret; - } + $def = $css_definition->info[$name]; + $ret = $def->validate($value, $config, $context); + if ($ret === false) { + unset($style[$name]); + } else { + $style[$name] = $ret; } - $new_decls[$selector] = $style; } - } else { - continue; + $new_decls[$selector] = $style; } $new_css[$k] = $new_decls; } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php index 76fd93a6..12173ba7 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php @@ -221,7 +221,6 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule */ public function makeFixes() { - return array(); } } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php index 16a4f693..4e35272d 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php @@ -109,7 +109,7 @@ class HTMLPurifier_LanguageFactory } else { $class = 'HTMLPurifier_Language_' . $pcode; $file = $this->dir . '/Language/classes/' . $code . '.php'; - if (file_exists($file) || class_exists($class)) { + if (file_exists($file) || class_exists($class, false)) { $lang = new $class($config, $context); } else { // Go fallback diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php index 1f552a17..c21f3649 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php @@ -101,7 +101,7 @@ class HTMLPurifier_Lexer break; } - if (class_exists('DOMDocument') && + if (class_exists('DOMDocument', false) && method_exists('DOMDocument', 'loadHTML') && !extension_loaded('domxml') ) { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php index 5e8104be..ca5f25b8 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php @@ -104,6 +104,7 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer * To iterate is human, to recurse divine - L. Peter Deutsch * @param DOMNode $node DOMNode to be tokenized. * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens. + * @return HTMLPurifier_Token of node appended to previously passed tokens. */ protected function tokenizeDOM($node, &$tokens, $config) { diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php index 4c3ce175..33ae1139 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php @@ -32,11 +32,6 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer */ protected $compress = false; - /** - * @var HTMLPurifier_Config - */ - protected $genConfig; - /** * @param string $name Form element name for directives to be stuffed into * @param string $doc_url String documentation URL, will have fragment tagged on diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php index dfad8efc..8cd19335 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php @@ -33,11 +33,11 @@ class HTMLPurifier_URIScheme_tel extends HTMLPurifier_URIScheme $uri->host = null; $uri->port = null; - // Delete all non-numeric characters, commas, and non-x characters + // Delete all non-numeric characters, non-x characters // from phone number, EXCEPT for a leading plus sign. - $uri->path = preg_replace('/(?!^\+)[^\dx,]/', '', + $uri->path = preg_replace('/(?!^\+)[^\dx]/', '', // Normalize e(x)tension to lower-case - str_replace('X', 'x', rawurldecode($uri->path))); + str_replace('X', 'x', $uri->path)); return true; } diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php index b5a1eab5..166f3bf3 100644 --- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php +++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php @@ -261,7 +261,7 @@ class HTMLPurifier_UnitConverter */ private function round($n, $sigfigs) { - $new_log = (int)floor(log(abs((float)$n), 10)); // Number of digits left of decimal - 1 + $new_log = (int)floor(log(abs($n), 10)); // Number of digits left of decimal - 1 $rp = $sigfigs - $new_log - 1; // Number of decimal places needed $neg = $n < 0 ? '-' : ''; // Negative sign if ($this->bcmath) { @@ -276,7 +276,7 @@ class HTMLPurifier_UnitConverter } return $n; } else { - return $this->scale(round((float)$n, $sigfigs - $new_log - 1), $rp + 1); + return $this->scale(round($n, $sigfigs - $new_log - 1), $rp + 1); } } @@ -300,7 +300,7 @@ class HTMLPurifier_UnitConverter // Now we return it, truncating the zero that was rounded off. return substr($precise, 0, -1) . str_repeat('0', -$scale + 1); } - return number_format((float)$r, $scale, '.', ''); + return sprintf('%.' . $scale . 'f', (float)$r); } } diff --git a/vendor/hyperf/context/composer.json b/vendor/hyperf/context/composer.json index e3cec5a9..dd7bd208 100644 --- a/vendor/hyperf/context/composer.json +++ b/vendor/hyperf/context/composer.json @@ -10,10 +10,10 @@ ], "homepage": "https://hyperf.io", "support": { - "docs": "https://hyperf.wiki", "issues": "https://github.com/hyperf/hyperf/issues", - "pull-request": "https://github.com/hyperf/hyperf/pulls", - "source": "https://github.com/hyperf/hyperf" + "source": "https://github.com/hyperf/hyperf", + "docs": "https://hyperf.wiki", + "pull-request": "https://github.com/hyperf/hyperf/pulls" }, "require": { "php": ">=8.1", diff --git a/vendor/hyperf/contract/composer.json b/vendor/hyperf/contract/composer.json index b41c4811..220b7d4f 100644 --- a/vendor/hyperf/contract/composer.json +++ b/vendor/hyperf/contract/composer.json @@ -9,10 +9,10 @@ ], "homepage": "https://hyperf.io", "support": { - "docs": "https://hyperf.wiki", "issues": "https://github.com/hyperf/hyperf/issues", - "pull-request": "https://github.com/hyperf/hyperf/pulls", - "source": "https://github.com/hyperf/hyperf" + "source": "https://github.com/hyperf/hyperf", + "docs": "https://hyperf.wiki", + "pull-request": "https://github.com/hyperf/hyperf/pulls" }, "require": { "php": ">=8.1" diff --git a/vendor/hyperf/engine-contract/src/Http/Http.php b/vendor/hyperf/engine-contract/src/Http/Http.php deleted file mode 100644 index d2455665..00000000 --- a/vendor/hyperf/engine-contract/src/Http/Http.php +++ /dev/null @@ -1,24 +0,0 @@ -=8.0", - "hyperf/engine-contract": "~1.10.0" + "hyperf/engine-contract": "~1.9.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.0", @@ -52,7 +52,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.11-dev" + "dev-master": "2.10-dev" }, "hyperf": { "config": "Hyperf\\Engine\\ConfigProvider" diff --git a/vendor/hyperf/engine/src/Coroutine.php b/vendor/hyperf/engine/src/Coroutine.php index 2125cf4f..72b9be4e 100644 --- a/vendor/hyperf/engine/src/Coroutine.php +++ b/vendor/hyperf/engine/src/Coroutine.php @@ -122,7 +122,7 @@ class Coroutine implements CoroutineInterface return SwooleCo::stats(); } - public static function exists(?int $id = null): bool + public static function exists(int $id = null): bool { return SwooleCo::exists($id); } diff --git a/vendor/hyperf/engine/src/Http/Http.php b/vendor/hyperf/engine/src/Http/Http.php deleted file mode 100644 index d0666dd6..00000000 --- a/vendor/hyperf/engine/src/Http/Http.php +++ /dev/null @@ -1,56 +0,0 @@ - $values) { - foreach ((array) $values as $value) { - $headerString .= sprintf("%s: %s\r\n", $key, $value); - } - } - - return sprintf( - "%s %s HTTP/%s\r\n%s\r\n%s", - $method, - $path, - $protocolVersion, - $headerString, - $body - ); - } - - public static function packResponse(int $statusCode, string $reasonPhrase = '', array $headers = [], string|Stringable $body = '', string $protocolVersion = HttpContract::DEFAULT_PROTOCOL_VERSION): string - { - $headerString = ''; - foreach ($headers as $key => $values) { - foreach ((array) $values as $value) { - $headerString .= sprintf("%s: %s\r\n", $key, $value); - } - } - return sprintf( - "HTTP/%s %s %s\r\n%s\r\n%s", - $protocolVersion, - $statusCode, - $reasonPhrase, - $headerString, - $body - ); - } -} diff --git a/vendor/hyperf/engine/src/WebSocket/WebSocket.php b/vendor/hyperf/engine/src/WebSocket/WebSocket.php index 7ce43dc7..748a9f5e 100644 --- a/vendor/hyperf/engine/src/WebSocket/WebSocket.php +++ b/vendor/hyperf/engine/src/WebSocket/WebSocket.php @@ -13,7 +13,6 @@ declare(strict_types=1); namespace Hyperf\Engine\WebSocket; use Hyperf\Engine\Contract\WebSocket\WebSocketInterface; -use Psr\Log\LoggerInterface; use Swoole\Http\Request; use Swoole\Http\Response; use Swoole\WebSocket\CloseFrame; @@ -28,7 +27,7 @@ class WebSocket implements WebSocketInterface */ protected array $events = []; - public function __construct(Response $connection, Request $request, protected ?LoggerInterface $logger = null) + public function __construct(Response $connection, Request $request) { $this->connection = $connection; $this->connection->upgrade(); @@ -43,18 +42,7 @@ class WebSocket implements WebSocketInterface { while (true) { /** @var false|string|SwFrame $frame */ - $frame = $this->connection->recv(-1); - if ($frame === false) { - $this->logger?->warning( - sprintf( - '%s:(%s) %s', - 'Websocket recv failed:', - swoole_last_error(), - swoole_strerror(swoole_last_error(), 9) - ) - ); - } - + $frame = $this->connection->recv(); if ($frame === false || $frame instanceof CloseFrame || $frame === '') { if ($callback = $this->events[static::ON_CLOSE] ?? null) { $callback($this->connection, $this->connection->fd); diff --git a/vendor/illuminate/collections/Collection.php b/vendor/illuminate/collections/Collection.php index c46fc052..6a225dce 100644 --- a/vendor/illuminate/collections/Collection.php +++ b/vendor/illuminate/collections/Collection.php @@ -7,6 +7,7 @@ use ArrayIterator; use Illuminate\Contracts\Support\CanBeEscapedWhenCastToString; use Illuminate\Support\Traits\EnumeratesValues; use Illuminate\Support\Traits\Macroable; +use InvalidArgumentException; use stdClass; use Traversable; @@ -1124,17 +1125,23 @@ class Collection implements ArrayAccess, CanBeEscapedWhenCastToString, Enumerabl * * @param int $count * @return static|TValue|null + * + * @throws \InvalidArgumentException */ public function shift($count = 1) { - if ($count === 1) { - return array_shift($this->items); + if ($count < 0) { + throw new InvalidArgumentException('Number of shifted items may not be less than zero.'); } - if ($this->isEmpty()) { + if ($count === 0 || $this->isEmpty()) { return new static; } + if ($count === 1) { + return array_shift($this->items); + } + $results = []; $collectionCount = $this->count(); diff --git a/vendor/illuminate/support/Str.php b/vendor/illuminate/support/Str.php index ed1f1b5d..6217bb33 100644 --- a/vendor/illuminate/support/Str.php +++ b/vendor/illuminate/support/Str.php @@ -1305,14 +1305,13 @@ class Str $minorWords = [ 'and', 'as', 'but', 'for', 'if', 'nor', 'or', 'so', 'yet', 'a', 'an', 'the', 'at', 'by', 'for', 'in', 'of', 'off', 'on', 'per', 'to', 'up', 'via', + 'et', 'ou', 'un', 'une', 'la', 'le', 'les', 'de', 'du', 'des', 'par', 'à', ]; $endPunctuation = ['.', '!', '?', ':', '—', ',']; $words = preg_split('/\s+/', $value, -1, PREG_SPLIT_NO_EMPTY); - $words[0] = ucfirst(mb_strtolower($words[0])); - for ($i = 0; $i < count($words); $i++) { $lowercaseWord = mb_strtolower($words[$i]); @@ -1320,7 +1319,9 @@ class Str $hyphenatedWords = explode('-', $lowercaseWord); $hyphenatedWords = array_map(function ($part) use ($minorWords) { - return (in_array($part, $minorWords) && mb_strlen($part) <= 3) ? $part : ucfirst($part); + return (in_array($part, $minorWords) && mb_strlen($part) <= 3) + ? $part + : mb_strtoupper(mb_substr($part, 0, 1)).mb_substr($part, 1); }, $hyphenatedWords); $words[$i] = implode('-', $hyphenatedWords); @@ -1330,7 +1331,7 @@ class Str ! ($i === 0 || in_array(mb_substr($words[$i - 1], -1), $endPunctuation))) { $words[$i] = $lowercaseWord; } else { - $words[$i] = ucfirst($lowercaseWord); + $words[$i] = mb_strtoupper(mb_substr($lowercaseWord, 0, 1)).mb_substr($lowercaseWord, 1); } } } diff --git a/vendor/intervention/image/src/Drivers/AbstractDriver.php b/vendor/intervention/image/src/Drivers/AbstractDriver.php index bbef4608..215946f6 100644 --- a/vendor/intervention/image/src/Drivers/AbstractDriver.php +++ b/vendor/intervention/image/src/Drivers/AbstractDriver.php @@ -64,6 +64,7 @@ abstract class AbstractDriver implements DriverInterface /** * {@inheritdoc} * + * @throws NotSupportedException * @see DriverInterface::specializeMultiple() */ public function specializeMultiple(array $objects): array diff --git a/vendor/intervention/image/src/Drivers/Gd/Driver.php b/vendor/intervention/image/src/Drivers/Gd/Driver.php index 090faebd..5065b75a 100644 --- a/vendor/intervention/image/src/Drivers/Gd/Driver.php +++ b/vendor/intervention/image/src/Drivers/Gd/Driver.php @@ -72,6 +72,7 @@ class Driver extends AbstractDriver /** * {@inheritdoc} * + * @throws RuntimeException * @see DriverInterface::createAnimation() */ public function createAnimation(callable $init): ImageInterface diff --git a/vendor/intervention/image/src/Drivers/Gd/Modifiers/CoverDownModifier.php b/vendor/intervention/image/src/Drivers/Gd/Modifiers/CoverDownModifier.php index dc6fbd2d..ac1cec11 100644 --- a/vendor/intervention/image/src/Drivers/Gd/Modifiers/CoverDownModifier.php +++ b/vendor/intervention/image/src/Drivers/Gd/Modifiers/CoverDownModifier.php @@ -14,6 +14,6 @@ class CoverDownModifier extends CoverModifier */ public function getResizeSize(SizeInterface $size): SizeInterface { - return $size->scaleDown($this->width, $this->height); + return $size->resizeDown($this->width, $this->height); } } diff --git a/vendor/intervention/image/src/Drivers/Imagick/Driver.php b/vendor/intervention/image/src/Drivers/Imagick/Driver.php index 2c01f83b..b7d7c150 100644 --- a/vendor/intervention/image/src/Drivers/Imagick/Driver.php +++ b/vendor/intervention/image/src/Drivers/Imagick/Driver.php @@ -71,6 +71,7 @@ class Driver extends AbstractDriver /** * {@inheritdoc} * + * @throws RuntimeException * @see DriverInterface::createAnimation() */ public function createAnimation(callable $init): ImageInterface diff --git a/vendor/intervention/image/src/Drivers/Imagick/Modifiers/CoverDownModifier.php b/vendor/intervention/image/src/Drivers/Imagick/Modifiers/CoverDownModifier.php index efc82297..44ab79e4 100644 --- a/vendor/intervention/image/src/Drivers/Imagick/Modifiers/CoverDownModifier.php +++ b/vendor/intervention/image/src/Drivers/Imagick/Modifiers/CoverDownModifier.php @@ -14,6 +14,6 @@ class CoverDownModifier extends CoverModifier */ public function getResizeSize(SizeInterface $size): SizeInterface { - return $size->scaleDown($this->width, $this->height); + return $size->resizeDown($this->width, $this->height); } } diff --git a/vendor/intervention/image/src/Modifiers/CoverModifier.php b/vendor/intervention/image/src/Modifiers/CoverModifier.php index d71a5e42..61e5acc5 100644 --- a/vendor/intervention/image/src/Modifiers/CoverModifier.php +++ b/vendor/intervention/image/src/Modifiers/CoverModifier.php @@ -38,6 +38,6 @@ class CoverModifier extends SpecializableModifier */ public function getResizeSize(SizeInterface $size): SizeInterface { - return $size->scale($this->width, $this->height); + return $size->resize($this->width, $this->height); } } diff --git a/vendor/nesbot/carbon/composer.json b/vendor/nesbot/carbon/composer.json index 48366b5d..0014434e 100644 --- a/vendor/nesbot/carbon/composer.json +++ b/vendor/nesbot/carbon/composer.json @@ -92,8 +92,8 @@ }, "extra": { "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" }, "laravel": { "providers": [ diff --git a/vendor/nesbot/carbon/readme.md b/vendor/nesbot/carbon/readme.md index 3f411770..97ec8ce0 100644 --- a/vendor/nesbot/carbon/readme.md +++ b/vendor/nesbot/carbon/readme.md @@ -123,8 +123,8 @@ Support this project by becoming a sponsor. Your logo will show up here with a l Онлайн казино CasinoHex Canada Probukmacher -Игровые автоматы Casino-portugal.pt +Игровые автоматы Slots City inkedin Онлайн казино України @@ -142,10 +142,11 @@ Support this project by becoming a sponsor. Your logo will show up here with a l Migliori Siti Non AAMS UK NonGamStopCasinos SnapTik -IG Downloader Proxidize -Blastup -AzuraCast +IG Downloader +Blastup +Organic Social Boost +AzuraCast Triplebyte GitHub Sponsors Salesforce diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php index f6261d88..c7f49f49 100644 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php +++ b/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php @@ -994,6 +994,13 @@ trait Comparison return $this->year === (int) $tester; } + if (preg_match('/^(?:Jan|January|Feb|February|Mar|March|Apr|April|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December)$/i', $tester)) { + return $this->isSameMonth( + $this->transmitFactory(static fn () => static::parse($tester)), + false, + ); + } + if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) { return $this->isSameMonth(static::parse($tester)); } diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Options.php b/vendor/nesbot/carbon/src/Carbon/Traits/Options.php index 48f97397..ffad4f14 100644 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Options.php +++ b/vendor/nesbot/carbon/src/Carbon/Traits/Options.php @@ -96,9 +96,9 @@ trait Options 'v' => '([0-9]{1,3})', 'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)', 'I' => '(0|1)', - 'O' => '([+-](1[012]|0[0-9])[0134][05])', - 'P' => '([+-](1[012]|0[0-9]):[0134][05])', - 'p' => '(Z|[+-](1[012]|0[0-9]):[0134][05])', + 'O' => '([+-](1[0123]|0[0-9])[0134][05])', + 'P' => '([+-](1[0123]|0[0-9]):[0134][05])', + 'p' => '(Z|[+-](1[0123]|0[0-9]):[0134][05])', 'T' => '([a-zA-Z]{1,5})', 'Z' => '(-?[1-5]?[0-9]{1,4})', 'U' => '([0-9]*)', diff --git a/vendor/overtrue/socialite/README.md b/vendor/overtrue/socialite/README.md index e25ea5ae..cf112991 100644 --- a/vendor/overtrue/socialite/README.md +++ b/vendor/overtrue/socialite/README.md @@ -56,7 +56,7 @@ $socialite = new SocialiteManager($config); $url = $socialite->create('github')->redirect(); -return redirect($url); +return redirect($url); ``` `callback.php`: @@ -122,7 +122,7 @@ $config = [ 'client_secret' => 'your-app-secret', 'redirect' => 'http://localhost/socialite/callback.php', ], - + // 另外一个名字叫做 bar 的 github 应用 'bar' => [ 'provider' => 'github', // <-- provider name @@ -130,7 +130,7 @@ $config = [ 'client_secret' => 'your-app-secret', 'redirect' => 'http://localhost/socialite/callback.php', ], - + //... ]; @@ -159,7 +159,7 @@ $config = [ ]; $socialite = new SocialiteManager($config); - + $socialite->extend('myprovider', function(array $config) { return new MyCustomProvider($config); }); @@ -172,7 +172,7 @@ $app = $socialite->create('foo'); >👋🏻 你的自定义服务提供类必须实现`Overtrue\Socialite\Contracts\ProviderInterface` 接口 ```php -class MyCustomProvider implements \Overtrue\Socialite\Contracts\ProviderInterface +class MyCustomProvider implements \Overtrue\Socialite\Contracts\ProviderInterface { //... } @@ -208,8 +208,8 @@ $app = $socialite->create('foo'); $config = [ 'alipay' => [ // 这个键名还能像官方文档那样叫做 'app_id' - 'client_id' => 'your-app-id', - + 'client_id' => 'your-app-id', + // 请根据官方文档,在官方管理后台配置 RSA2 // 注意: 这是你自己的私钥 // 注意: 不允许私钥内容有其他字符 @@ -219,7 +219,7 @@ $config = [ // 确保这里的值与你在服务后台绑定的地址值一致 // 这个键名还能像官方文档那样叫做 'redirect_url' 'redirect' => 'http://localhost/socialite/callback.php', - + // 沙箱模式接入地址见 https://opendocs.alipay.com/open/220/105337#%E5%85%B3%E4%BA%8E%E6%B2%99%E7%AE%B1 'sandbox' => false, ] @@ -252,7 +252,7 @@ $config = [ // or 'app_id' 'client_id' => 'your app id', - // or 'app_secret' + // or 'app_secret' 'client_secret' => 'your app secret', // or 'redirect_url' @@ -361,7 +361,7 @@ $config = [ // or 'app_id' 'client_id' => 'your app id', - // or 'app_secret' + // or 'app_secret' 'client_secret' => 'your app secret', // or 'redirect_url' @@ -391,7 +391,7 @@ $config = [ // or 'app_id' 'client_id' => 'your app id', - // or 'app_secret' + // or 'app_secret' 'client_secret' => 'your app secret', // or 'redirect_url' @@ -413,7 +413,7 @@ $larkDriver->withDefaultMode()->withAppTicket('app_ticket')->userFromCode('here ### [淘宝](https://open.taobao.com/doc.htm?docId=102635&docType=1&source=search) -其他配置与其他平台的一样,你能选择你想要展示的重定向页面类型通过使用 `withView()` +其他配置与其他平台的一样,你能选择你想要展示的重定向页面类型通过使用 `withView()` ```php $authUrl = $socialite->create('taobao')->withView('wap')->redirect(); @@ -456,7 +456,7 @@ $authUrl = $socialite->create('taobao')->withView('wap')->redirect(); ```php $config = [ 'coding' => [ - 'team_url' => 'https://{your-team}.coding.net', + 'team_url' => 'https://{your-team}.coding.net', 'client_id' => 'your app id', 'client_secret' => 'your app secret', 'redirect' => 'redirect URL', @@ -464,6 +464,24 @@ $config = [ ]; ``` +### [PayPal](https://developer.paypal.com/docs/log-in-with-paypal/) + +您可能需要设置responseType,可以使用`withResponseType`函数进行设置,默认是`code` 还可以设置为`id_token` 或`code` & `id_token` + +> https://developer.paypal.com/docs/log-in-with-paypal/integrate/generate-button/ + + +```php +$config = [ + 'paypal' => [ + 'client_id' => 'AT******************', + 'client_secret' => 'EK**************', + 'sandbox' => false, + 'redirect_url'=>"nativexo://paypalpay", + ], +]; +``` + ## 其他一些技巧 ### Scopes @@ -498,7 +516,7 @@ $socialite->withRedirectUrl($url)->redirect(); ```php create('github')->withState($state)->redirect(); -return redirect($url); +return redirect($url); ``` ### 检验回调的 `state` @@ -520,10 +538,10 @@ return redirect($url); ```php query('state'); $code = request()->query('code'); - + // Check the state received with current session id if ($state != hash('sha256', session_id())) { exit('State does not match!'); @@ -596,7 +614,7 @@ mixed $user->getId(); ?string $user->getEmail(); ?string $user->getAvatar(); ?string $user->getRaw(); -?string $user->getAccessToken(); +?string $user->getAccessToken(); ?string $user->getRefreshToken(); ?int $user->getExpiresIn(); ?array $user->getTokenResponse(); @@ -648,6 +666,7 @@ $user = $socialite->userFromToken($accessToken); - [Tapd - 用户授权说明](https://www.tapd.cn/help/show#1120003271001000093) - [Line - OAuth 2.0](https://developers.line.biz/en/docs/line-login/integrate-line-login/) - [Gitee - OAuth文档](https://gitee.com/api/v5/oauth_doc#/) +- [PayPal - OAuth文档](https://developer.paypal.com/docs/log-in-with-paypal/) diff --git a/vendor/overtrue/socialite/README_EN.md b/vendor/overtrue/socialite/README_EN.md index c6534353..0363c057 100644 --- a/vendor/overtrue/socialite/README_EN.md +++ b/vendor/overtrue/socialite/README_EN.md @@ -443,6 +443,26 @@ $config = [ ]; ``` +### [PayPal](https://developer.paypal.com/docs/log-in-with-paypal/) + +You may need to set the responseType, which can be set using the `withResponseType` function. The default is `code` and can also be set to `id_token` or `code` & `id_token` + +> https://developer.paypal.com/docs/log-in-with-paypal/integrate/generate-button/ + + +```php +$config = [ + 'paypal' => [ + 'client_id' => 'AT******************', + 'client_secret' => 'EK**************', + 'sandbox' => false, + 'redirect_url'=>"nativexo://paypalpay", + ], +]; +``` + + + ## Some Skill ### Scopes @@ -627,6 +647,7 @@ $user = $socialite->userFromToken($accessToken); - [Tapd - 用户授权说明](https://www.tapd.cn/help/show#1120003271001000093) - [Line - OAuth 2.0](https://developers.line.biz/en/docs/line-login/integrate-line-login/) - [Gitee - OAuth文档](https://gitee.com/api/v5/oauth_doc#/) +- [PayPal - OAuth文档](https://developer.paypal.com/docs/log-in-with-paypal/) [![Sponsor me](https://github.com/overtrue/overtrue/blob/master/sponsor-me.svg?raw=true)](https://github.com/sponsors/overtrue) diff --git a/vendor/overtrue/socialite/src/Providers/PayPal.php b/vendor/overtrue/socialite/src/Providers/PayPal.php new file mode 100644 index 00000000..3ee65aa8 --- /dev/null +++ b/vendor/overtrue/socialite/src/Providers/PayPal.php @@ -0,0 +1,169 @@ +sandbox = (bool)$this->config->get('sandbox', false); + if ($this->sandbox) { + $this->authUrl = 'https://www.sandbox.paypal.com/signin/authorize'; + $this->tokenURL = 'https://api-m.sandbox.paypal.com/v1/oauth2/token'; + $this->userinfoURL = 'https://api-m.sandbox.paypal.com/v1/identity/openidconnect/userinfo'; + } + } + + /** + * @param string|null $responseType + * @return $this + * @see https://developer.paypal.com/docs/log-in-with-paypal/integrate/generate-button/ + */ + public function withResponseType(?string $responseType) + { + $this->responseType = $responseType; + return $this; + } + + protected function getAuthUrl(): string + { + return $this->buildAuthUrlFromBase($this->authUrl); + } + + protected function getCodeFields(): array + { + $fields = \array_merge( + [ + 'flowEntry' => $this->flowEntry, + Contracts\RFC6749_ABNF_CLIENT_ID => $this->getClientId(), + Contracts\RFC6749_ABNF_RESPONSE_TYPE => $this->responseType, + Contracts\RFC6749_ABNF_SCOPE => $this->formatScopes($this->scopes, $this->scopeSeparator), + Contracts\RFC6749_ABNF_REDIRECT_URI => $this->redirectUrl, + ], + $this->parameters + ); + + if ($this->state) { + $fields[Contracts\RFC6749_ABNF_STATE] = $this->state; + } + return $fields; + } + + + protected function getTokenUrl(): string + { + return $this->tokenURL; + } + + /** + * @param string $code + * @return array + * @throws \GuzzleHttp\Exception\GuzzleException + * @throws \Overtrue\Socialite\Exceptions\AuthorizeFailedException + * @see https://developer.paypal.com/docs/log-in-with-paypal/integrate/#link-getaccesstoken + */ + public function tokenFromCode(string $code): array + { + $response = $this->getHttpClient()->post( + $this->getTokenUrl(), + [ + 'form_params' => [ + Contracts\RFC6749_ABNF_GRANT_TYPE => Contracts\RFC6749_ABNF_AUTHORATION_CODE, + Contracts\RFC6749_ABNF_CODE => $code, + ], + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => 'Basic ' . \base64_encode(\sprintf('%s:%s', $this->getClientId(), $this->getClientSecret())), + ], + ] + ); + return $this->normalizeAccessTokenResponse((string)$response->getBody()); + } + + /** + * @param string $refreshToken + * @return mixed + * @throws \GuzzleHttp\Exception\GuzzleException + * @throws \Overtrue\Socialite\Exceptions\AuthorizeFailedException + * @see https://developer.paypal.com/docs/log-in-with-paypal/integrate/#link-exchangerefreshtokenforaccesstoken + */ + public function refreshToken(string $refreshToken): mixed + { + $response = $this->getHttpClient()->post( + $this->getTokenUrl(), + [ + 'form_params' => [ + Contracts\RFC6749_ABNF_GRANT_TYPE => Contracts\RFC6749_ABNF_REFRESH_TOKEN, + Contracts\RFC6749_ABNF_REFRESH_TOKEN => $refreshToken, + ], + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => 'Basic ' . \base64_encode(\sprintf('%s:%s', $this->getClientId(), $this->getClientSecret())), + ], + ] + ); + return $this->normalizeAccessTokenResponse((string)$response->getBody()); + } + + /** + * @param string $token + * @return array + * @throws \GuzzleHttp\Exception\GuzzleException + * @see https://developer.paypal.com/docs/api/identity/v1/#userinfo_get + */ + protected function getUserByToken(string $token): array + { + $response = $this->getHttpClient()->get( + $this->userinfoURL, + [ + 'headers' => [ + 'Content-Type' => 'application/x-www-form-urlencoded', + 'Authorization' => 'Bearer ' . $token, + ], + ] + ); + return $this->fromJsonBody($response); + } + + #[Pure] + protected function mapUserToObject(array $user): Contracts\UserInterface + { + $user[Contracts\ABNF_ID] = $user['user_id'] ?? null; + $user[Contracts\ABNF_NICKNAME] = $user['given_name'] ?? $user['family_name'] ?? $user['middle_name'] ?? null; + $user[Contracts\ABNF_NAME] = $user['name'] ?? ''; + $user[Contracts\ABNF_EMAIL] = $user[Contracts\ABNF_EMAIL] ?? null; + $user[Contracts\ABNF_AVATAR] = $user['picture'] ?? null; + return new User($user); + } +} diff --git a/vendor/overtrue/socialite/src/SocialiteManager.php b/vendor/overtrue/socialite/src/SocialiteManager.php index f804d2b5..4fc1f7f0 100644 --- a/vendor/overtrue/socialite/src/SocialiteManager.php +++ b/vendor/overtrue/socialite/src/SocialiteManager.php @@ -40,6 +40,7 @@ class SocialiteManager implements Contracts\FactoryInterface Providers\WeWork::NAME => Providers\WeWork::class, Providers\Weibo::NAME => Providers\Weibo::class, Providers\XiGua::NAME => Providers\XiGua::class, + Providers\PayPal::NAME => Providers\PayPal::class, ]; #[Pure] diff --git a/vendor/qcloud/cos-sdk-v5/CHANGELOG.md b/vendor/qcloud/cos-sdk-v5/CHANGELOG.md index ab746f31..98a85431 100644 --- a/vendor/qcloud/cos-sdk-v5/CHANGELOG.md +++ b/vendor/qcloud/cos-sdk-v5/CHANGELOG.md @@ -3,9 +3,9 @@ cos-php-sdk-v5 Upgrade Guide 2.6.8 to 2.6.9 --------- 1. 开通智能语音服务 -2. 开通智能语音服务 -3. 查询智能语音服务 -4. 关闭智能语音服务 +2. 查询智能语音服务 +3. 关闭智能语音服务 +4. 更新智能语音队列 5. 查询智能语音队列 6. 创建音频降噪模板 7. 更新音频降噪模板 diff --git a/vendor/qcloud/cos-sdk-v5/composer.json b/vendor/qcloud/cos-sdk-v5/composer.json index 1cba7fea..06ce556f 100644 --- a/vendor/qcloud/cos-sdk-v5/composer.json +++ b/vendor/qcloud/cos-sdk-v5/composer.json @@ -36,6 +36,7 @@ "ext-json": "*", "ext-simplexml": "*", "ext-mbstring": "*", + "ext-libxml": "*", "guzzlehttp/guzzle": "^6.2.1 || ^7.0", "guzzlehttp/guzzle-services": "^1.1", "guzzlehttp/psr7": "^1.3.1 || ^2.0" diff --git a/vendor/qcloud/cos-sdk-v5/sample/sts_ci_demo.php b/vendor/qcloud/cos-sdk-v5/sample/sts_ci_demo.php new file mode 100644 index 00000000..505e4a3f --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/sts_ci_demo.php @@ -0,0 +1,102 @@ + 1700828878 + * [expiration] => 2023-11-24T12:27:58Z + * [credentials] => Array + * ( + * [sessionToken] => token + * [tmpSecretId] => secretId + * [tmpSecretKey] => secretKey + * ) + * + * [requestId] => 2a521211-b212-xxxx-xxxx-c9976a3966bd + * [startTime] => 1700810878 + * ) + */ + +require_once __DIR__ . '/vendor/autoload.php'; + +$bucket = 'examplebucket-1250000000'; +$secretKey = 'SECRETKEY'; +$secretId = 'SECRETID'; +$region = "ap-beijing"; + +$sts = new QCloud\COSSTS\Sts(); +$config = array( + 'url' => 'https://sts.tencentcloudapi.com/', // url和domain保持一致 + 'domain' => 'sts.tencentcloudapi.com', // 域名,非必须,默认为 sts.tencentcloudapi.com + 'proxy' => '', + 'secretId' => $secretId, // 固定密钥,若为明文密钥,请直接以'xxx'形式填入,不要填写到getenv()函数中 + 'secretKey' => $secretKey, // 固定密钥,若为明文密钥,请直接以'xxx'形式填入,不要填写到getenv()函数中 + 'bucket' => $bucket, // 换成你的 bucket + 'region' => $region, // 换成 bucket 所在园区 + 'durationSeconds' => 1800*10, // 密钥有效期 + 'allowPrefix' => array('/*'), // 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用) + 'allowCiSource' => true, // 万象资源配置,授予万象资源权限 + 'allowActions' => array ( + 'name/cos:*', + 'name/ci:*', + // 具体action按需设置 + ), +// // 临时密钥生效条件,关于condition的详细设置规则和COS支持的condition类型可以参考 https://cloud.tencent.com/document/product/436/71306 +// "condition" => array( +// "ip_equal" => array( +// "qcs:ip" => array( +// "10.217.182.3/24", +// "111.21.33.72/24", +// ) +// ) +// ) +); + + +try { + // 获取临时密钥,计算签名 + $tempKeys = $sts->getTempKeys($config); + print_r($tempKeys); +} catch (Exception $e) { + echo $e; +} + + +/** + * 第二步:在cos php sdk中使用临时密钥 + * 创建临时密钥生成的Client,以文本同步审核为例 + */ +// 临时密钥 +$tmpSecretId = 'secretId'; // 第一步获取到的 $tempKeys['credentials']['tmpSecretId'] +$tmpSecretKey = 'secretKey'; // 第一步获取到的 $tempKeys['credentials']['tmpSecretKey'] +$token = 'token'; // 第一步获取到的 $tempKeys['credentials']['sessionToken'] +$tokenClient = new Qcloud\Cos\Client( + array( + 'region' => $region, + 'scheme' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $tmpSecretId , + 'secretKey' => $tmpSecretKey, + 'token' => $token, + ) + ) +); + +try { + $content = '敏感词'; + $result = $tokenClient->detectText(array( + 'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Content' => base64_encode($content), // 文本需base64_encode + ), + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} diff --git a/vendor/qcloud/cos-sdk-v5/src/Client.php b/vendor/qcloud/cos-sdk-v5/src/Client.php index a43fea0a..08fd44e5 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Client.php +++ b/vendor/qcloud/cos-sdk-v5/src/Client.php @@ -248,10 +248,10 @@ use GuzzleHttp\Psr7\Uri; * @method object CreateMediaTargetRecJobs(array $args) 提交视频目标检测任务 * @method object CreateMediaSegmentVideoBodyJobs(array $args) 提交视频人像抠图任务 * @method object OpenAsrService(array $args) 开通智能语音服务 - * @method object GetAsrBucketList(array $args) 开通智能语音服务 - * @method object CloseAsrService(array $args) 查询智能语音服务 - * @method object GetAsrQueueList(array $args) 关闭智能语音服务 - * @method object UpdateAsrQueue(array $args) 查询智能语音队列 + * @method object GetAsrBucketList(array $args) 查询智能语音服务 + * @method object CloseAsrService(array $args) 关闭智能语音服务 + * @method object GetAsrQueueList(array $args) 查询智能语音队列 + * @method object UpdateAsrQueue(array $args) 更新智能语音队列 * @method object CreateMediaNoiseReductionTemplate(array $args) 创建音频降噪模板 * @method object UpdateMediaNoiseReductionTemplate(array $args) 更新音频降噪模板 * @method object CreateVoiceSoundHoundJobs(array $args) 提交听歌识曲任务 @@ -297,6 +297,7 @@ class Client extends GuzzleClient { 'locationWithScheme' => false, 'autoChange' => true, 'limit_flag' => false, + 'isCheckRequestPath' => true, ]; public function __construct(array $cosConfig) { @@ -304,6 +305,9 @@ class Client extends GuzzleClient { $this->cosConfig = processCosConfig(array_replace_recursive($this->cosConfig, $cosConfig)); + global $globalCosConfig; + $globalCosConfig = $this->cosConfig; + // check config $this->inputCheck(); @@ -409,6 +413,7 @@ class Client extends GuzzleClient { null); } + public function inputCheck() { $message = null; //检查Region @@ -458,7 +463,7 @@ class Client extends GuzzleClient { public function responseToResultTransformer(ResponseInterface $response, RequestInterface $request, CommandInterface $command) { - $transformer = new ResultTransformer($this->cosConfig, $this->operation); + $transformer = new ResultTransformer($this->cosConfig, $this->operation); $transformer->writeDataToLocal($command, $request, $response); $deseri = new Deserializer($this->desc, true); $result = $deseri($response, $request, $command); @@ -469,7 +474,7 @@ class Client extends GuzzleClient { $result = $transformer->ciContentInfoTransformer($command, $result); return $result; } - + public function __destruct() { } @@ -553,10 +558,29 @@ class Client extends GuzzleClient { return $rt; } + public static function simplifyPath($path) { + $names = explode("/", $path); + $stack = array(); + foreach ($names as $name) { + if ($name == "..") { + if (!empty($stack)) { + array_pop($stack); + } + } elseif ($name && $name != ".") { + array_push($stack, $name); + } + } + return "/" . implode("/", $stack); + } + public function download($bucket, $key, $saveAs, $options = array()) { $options['PartSize'] = isset($options['PartSize']) ? $options['PartSize'] : RangeDownload::DEFAULT_PART_SIZE; $versionId = isset($options['VersionId']) ? $options['VersionId'] : ''; - + if ($this->cosConfig['isCheckRequestPath'] && "/" == self::simplifyPath($key)) { + $e = new Exception\CosException('Getobject Key is illegal'); + $e->setExceptionCode('404'); + throw $e; + } $rt = $this->headObject(array( 'Bucket'=>$bucket, 'Key'=>$key, @@ -664,6 +688,12 @@ class Client extends GuzzleClient { } public static function explodeKey($key) { + global $globalCosConfig; + if ($globalCosConfig['isCheckRequestPath'] && "/" == self::simplifyPath($key)) { + $e = new Exception\CosException('Getobject Key is illegal'); + $e->setExceptionCode('404'); + throw $e; + } // Remove a leading slash if one is found $split_key = explode('/', $key && $key[0] == '/' ? substr($key, 1) : $key); // Remove empty element diff --git a/vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php b/vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php index 9c97aa5f..c3ca7181 100644 --- a/vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php +++ b/vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php @@ -86,6 +86,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $xmlData = json_decode(json_encode($obj),true); if ($picRuleSize == 1 && isset($xmlData['ProcessResults']['Object'])){ @@ -101,6 +104,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $arr = json_decode(json_encode($obj),true); $result['GuetzliStatus'] = isset($arr[0]) ? $arr[0] : ''; @@ -111,6 +117,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $arr = json_decode(json_encode($obj),true); $result['CIStatus'] = isset($arr[0]) ? $arr[0] : ''; @@ -122,6 +131,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $arr = json_decode(json_encode($obj),true); $result['OriginProtectStatus'] = isset($arr[0]) ? $arr[0] : ''; @@ -133,6 +145,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $arr = json_decode(json_encode($obj),true); $result['Hotlink'] = $arr; @@ -144,6 +159,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $arr = json_decode(json_encode($obj),true); $result['TranslationResult'] = isset($arr[0]) ? $arr[0] : ''; @@ -204,6 +222,9 @@ class ResultTransformer { $length = intval($result['ContentLength']); if($length > 0){ $content = $this->geCiContentInfo($result, $length); + if (version_compare(PHP_VERSION, '8.0.0', '<')) { + libxml_disable_entity_loader(true); + } $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); $xmlData = json_decode(json_encode($obj),true); $result['Response'] = $xmlData; diff --git a/vendor/qcloud/cos-sdk-v5/src/Service.php b/vendor/qcloud/cos-sdk-v5/src/Service.php index 43818b27..01505743 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Service.php +++ b/vendor/qcloud/cos-sdk-v5/src/Service.php @@ -3843,10 +3843,10 @@ class Service { 'CreateMediaTargetRecJobs' => Descriptions::CreateMediaTargetRecJobs(), // 提交视频目标检测任务 'CreateMediaSegmentVideoBodyJobs' => Descriptions::CreateMediaSegmentVideoBodyJobs(), // 提交视频人像抠图任务 'OpenAsrService' => Descriptions::OpenAsrService(), //开通智能语音服务 - 'GetAsrBucketList' => Descriptions::GetAsrBucketList(), // 开通智能语音服务 - 'CloseAsrService' => Descriptions::CloseAsrService(), // 查询智能语音服务 - 'GetAsrQueueList' => Descriptions::GetAsrQueueList(), // 关闭智能语音服务 - 'UpdateAsrQueue' => Descriptions::UpdateAsrQueue(), // 查询智能语音队列 + 'GetAsrBucketList' => Descriptions::GetAsrBucketList(), // 查询智能语音服务 + 'CloseAsrService' => Descriptions::CloseAsrService(), // 关闭智能语音服务 + 'GetAsrQueueList' => Descriptions::GetAsrQueueList(), // 查询智能语音队列 + 'UpdateAsrQueue' => Descriptions::UpdateAsrQueue(), // 更新智能语音队列 'CreateMediaNoiseReductionTemplate' => Descriptions::CreateMediaNoiseReductionTemplate(), // 创建音频降噪模板 'UpdateMediaNoiseReductionTemplate' => Descriptions::UpdateMediaNoiseReductionTemplate(), // 更新音频降噪模板 'CreateVoiceSoundHoundJobs' => Descriptions::CreateVoiceSoundHoundJobs(), // 提交听歌识曲任务 diff --git a/vendor/symfony/cache-contracts/CacheInterface.php b/vendor/symfony/cache-contracts/CacheInterface.php index 3e4aaf65..a4fcea73 100644 --- a/vendor/symfony/cache-contracts/CacheInterface.php +++ b/vendor/symfony/cache-contracts/CacheInterface.php @@ -44,7 +44,7 @@ interface CacheInterface * * @throws InvalidArgumentException When $key is not valid or when $beta is negative */ - public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed; + public function get(string $key, callable $callback, float $beta = null, array &$metadata = null): mixed; /** * Removes an item from the pool. diff --git a/vendor/symfony/cache-contracts/CacheTrait.php b/vendor/symfony/cache-contracts/CacheTrait.php index c2f65804..8a4b0bda 100644 --- a/vendor/symfony/cache-contracts/CacheTrait.php +++ b/vendor/symfony/cache-contracts/CacheTrait.php @@ -25,7 +25,7 @@ class_exists(InvalidArgumentException::class); */ trait CacheTrait { - public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed + public function get(string $key, callable $callback, float $beta = null, array &$metadata = null): mixed { return $this->doGet($this, $key, $callback, $beta, $metadata); } @@ -35,7 +35,7 @@ trait CacheTrait return $this->deleteItem($key); } - private function doGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, ?array &$metadata = null, ?LoggerInterface $logger = null): mixed + private function doGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null): mixed { if (0 > $beta ??= 1.0) { throw new class(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', static::class, $beta)) extends \InvalidArgumentException implements InvalidArgumentException {}; diff --git a/vendor/symfony/cache-contracts/composer.json b/vendor/symfony/cache-contracts/composer.json index fe261d18..f80d0b55 100644 --- a/vendor/symfony/cache-contracts/composer.json +++ b/vendor/symfony/cache-contracts/composer.json @@ -25,7 +25,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/cache/Traits/RedisTrait.php b/vendor/symfony/cache/Traits/RedisTrait.php index 7209e9eb..d59d7ff0 100644 --- a/vendor/symfony/cache/Traits/RedisTrait.php +++ b/vendor/symfony/cache/Traits/RedisTrait.php @@ -517,7 +517,7 @@ trait RedisTrait } $this->doDelete($keys); } - } while ($cursor = (int) $cursor); + } while ($cursor); } return $cleared; diff --git a/vendor/symfony/cache/Traits/RelayProxy.php b/vendor/symfony/cache/Traits/RelayProxy.php index 90af7a7d..ac839dfd 100644 --- a/vendor/symfony/cache/Traits/RelayProxy.php +++ b/vendor/symfony/cache/Traits/RelayProxy.php @@ -276,6 +276,11 @@ class RelayProxy extends \Relay\Relay implements ResetInterface, LazyObjectInter return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->replicaof(...\func_get_args()); } + public function waitaof($numlocal, $numremote, $timeout): \Relay\Relay|array|false + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->waitaof(...\func_get_args()); + } + public function restore($key, $ttl, $value, $options = null): \Relay\Relay|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->restore(...\func_get_args()); diff --git a/vendor/symfony/deprecation-contracts/composer.json b/vendor/symfony/deprecation-contracts/composer.json index ceb6c079..c6d02d87 100644 --- a/vendor/symfony/deprecation-contracts/composer.json +++ b/vendor/symfony/deprecation-contracts/composer.json @@ -25,7 +25,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/http-client-contracts/HttpClientInterface.php b/vendor/symfony/http-client-contracts/HttpClientInterface.php index 4bb1dd37..59636258 100644 --- a/vendor/symfony/http-client-contracts/HttpClientInterface.php +++ b/vendor/symfony/http-client-contracts/HttpClientInterface.php @@ -90,7 +90,7 @@ interface HttpClientInterface * @param ResponseInterface|iterable $responses One or more responses created by the current HTTP client * @param float|null $timeout The idle timeout before yielding timeout chunks */ - public function stream(ResponseInterface|iterable $responses, ?float $timeout = null): ResponseStreamInterface; + public function stream(ResponseInterface|iterable $responses, float $timeout = null): ResponseStreamInterface; /** * Returns a new instance of the client with new default options. diff --git a/vendor/symfony/http-client-contracts/ResponseInterface.php b/vendor/symfony/http-client-contracts/ResponseInterface.php index 387345cc..62d0f8f5 100644 --- a/vendor/symfony/http-client-contracts/ResponseInterface.php +++ b/vendor/symfony/http-client-contracts/ResponseInterface.php @@ -105,5 +105,5 @@ interface ResponseInterface * @return mixed An array of all available info, or one of them when $type is * provided, or null when an unsupported type is requested */ - public function getInfo(?string $type = null): mixed; + public function getInfo(string $type = null): mixed; } diff --git a/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php b/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php index ec87d06d..98838ef5 100644 --- a/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php +++ b/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php @@ -28,12 +28,6 @@ abstract class HttpClientTestCase extends TestCase TestHttpServer::start(); } - public static function tearDownAfterClass(): void - { - TestHttpServer::stop(8067); - TestHttpServer::stop(8077); - } - abstract protected function getHttpClient(string $testCase): HttpClientInterface; public function testGetRequest() diff --git a/vendor/symfony/http-client-contracts/Test/TestHttpServer.php b/vendor/symfony/http-client-contracts/Test/TestHttpServer.php index 2a278479..86dfa7de 100644 --- a/vendor/symfony/http-client-contracts/Test/TestHttpServer.php +++ b/vendor/symfony/http-client-contracts/Test/TestHttpServer.php @@ -45,11 +45,4 @@ class TestHttpServer return $process; } - - public static function stop(int $port = 8057) - { - if (isset(self::$process[$port])) { - self::$process[$port]->stop(); - } - } } diff --git a/vendor/symfony/http-client-contracts/composer.json b/vendor/symfony/http-client-contracts/composer.json index efb146ec..084d4907 100644 --- a/vendor/symfony/http-client-contracts/composer.json +++ b/vendor/symfony/http-client-contracts/composer.json @@ -27,7 +27,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/http-client/CurlHttpClient.php b/vendor/symfony/http-client/CurlHttpClient.php index fef0ad09..e74e0263 100644 --- a/vendor/symfony/http-client/CurlHttpClient.php +++ b/vendor/symfony/http-client/CurlHttpClient.php @@ -51,9 +51,6 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, private ?LoggerInterface $logger = null; - private int $maxHostConnections; - private int $maxPendingPushes; - /** * An internal object to share state between the client and its responses. */ @@ -72,22 +69,18 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, throw new \LogicException('You cannot use the "Symfony\Component\HttpClient\CurlHttpClient" as the "curl" extension is not installed.'); } - $this->maxHostConnections = $maxHostConnections; - $this->maxPendingPushes = $maxPendingPushes; - $this->defaultOptions['buffer'] ??= self::shouldBuffer(...); if ($defaultOptions) { [, $this->defaultOptions] = self::prepareRequest(null, null, $defaultOptions, $this->defaultOptions); } + + $this->multi = new CurlClientState($maxHostConnections, $maxPendingPushes); } public function setLogger(LoggerInterface $logger): void { - $this->logger = $logger; - if (isset($this->multi)) { - $this->multi->logger = $logger; - } + $this->logger = $this->multi->logger = $logger; } /** @@ -95,8 +88,6 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, */ public function request(string $method, string $url, array $options = []): ResponseInterface { - $multi = $this->ensureState(); - [$url, $options] = self::prepareRequest($method, $url, $options, $this->defaultOptions); $scheme = $url['scheme']; $authority = $url['authority']; @@ -174,24 +165,24 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, } // curl's resolve feature varies by host:port but ours varies by host only, let's handle this with our own DNS map - if (isset($multi->dnsCache->hostnames[$host])) { - $options['resolve'] += [$host => $multi->dnsCache->hostnames[$host]]; + if (isset($this->multi->dnsCache->hostnames[$host])) { + $options['resolve'] += [$host => $this->multi->dnsCache->hostnames[$host]]; } - if ($options['resolve'] || $multi->dnsCache->evictions) { + if ($options['resolve'] || $this->multi->dnsCache->evictions) { // First reset any old DNS cache entries then add the new ones - $resolve = $multi->dnsCache->evictions; - $multi->dnsCache->evictions = []; + $resolve = $this->multi->dnsCache->evictions; + $this->multi->dnsCache->evictions = []; if ($resolve && 0x072A00 > CurlClientState::$curlVersion['version_number']) { // DNS cache removals require curl 7.42 or higher - $multi->reset(); + $this->multi->reset(); } foreach ($options['resolve'] as $host => $ip) { $resolve[] = null === $ip ? "-$host:$port" : "$host:$port:$ip"; - $multi->dnsCache->hostnames[$host] = $ip; - $multi->dnsCache->removals["-$host:$port"] = "-$host:$port"; + $this->multi->dnsCache->hostnames[$host] = $ip; + $this->multi->dnsCache->removals["-$host:$port"] = "-$host:$port"; } $curlopts[\CURLOPT_RESOLVE] = $resolve; @@ -250,8 +241,9 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, if (isset($options['normalized_headers']['content-length'][0])) { $curlopts[\CURLOPT_INFILESIZE] = (int) substr($options['normalized_headers']['content-length'][0], \strlen('Content-Length: ')); - } elseif (!isset($options['normalized_headers']['transfer-encoding'])) { - $curlopts[\CURLOPT_INFILESIZE] = -1; + } + if (!isset($options['normalized_headers']['transfer-encoding'])) { + $curlopts[\CURLOPT_HTTPHEADER][] = 'Transfer-Encoding:'.(isset($curlopts[\CURLOPT_INFILESIZE]) ? '' : ' chunked'); } if ('POST' !== $method) { @@ -293,8 +285,8 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, $curlopts += $options['extra']['curl']; } - if ($pushedResponse = $multi->pushedResponses[$url] ?? null) { - unset($multi->pushedResponses[$url]); + if ($pushedResponse = $this->multi->pushedResponses[$url] ?? null) { + unset($this->multi->pushedResponses[$url]); if (self::acceptPushForRequest($method, $options, $pushedResponse)) { $this->logger?->debug(sprintf('Accepting pushed response: "%s %s"', $method, $url)); @@ -302,7 +294,7 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, // Reinitialize the pushed response with request's options $ch = $pushedResponse->handle; $pushedResponse = $pushedResponse->response; - $pushedResponse->__construct($multi, $url, $options, $this->logger); + $pushedResponse->__construct($this->multi, $url, $options, $this->logger); } else { $this->logger?->debug(sprintf('Rejecting pushed response: "%s"', $url)); $pushedResponse = null; @@ -312,7 +304,7 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, if (!$pushedResponse) { $ch = curl_init(); $this->logger?->info(sprintf('Request: "%s %s"', $method, $url)); - $curlopts += [\CURLOPT_SHARE => $multi->share]; + $curlopts += [\CURLOPT_SHARE => $this->multi->share]; } foreach ($curlopts as $opt => $value) { @@ -322,7 +314,7 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, } } - return $pushedResponse ?? new CurlResponse($multi, $ch, $options, $this->logger, $method, self::createRedirectResolver($options, $host, $port), CurlClientState::$curlVersion['version_number'], $url); + return $pushedResponse ?? new CurlResponse($this->multi, $ch, $options, $this->logger, $method, self::createRedirectResolver($options, $host, $port), CurlClientState::$curlVersion['version_number'], $url); } public function stream(ResponseInterface|iterable $responses, ?float $timeout = null): ResponseStreamInterface @@ -331,11 +323,9 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, $responses = [$responses]; } - $multi = $this->ensureState(); - - if ($multi->handle instanceof \CurlMultiHandle) { + if ($this->multi->handle instanceof \CurlMultiHandle) { $active = 0; - while (\CURLM_CALL_MULTI_PERFORM === curl_multi_exec($multi->handle, $active)) { + while (\CURLM_CALL_MULTI_PERFORM === curl_multi_exec($this->multi->handle, $active)) { } } @@ -344,9 +334,7 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, public function reset(): void { - if (isset($this->multi)) { - $this->multi->reset(); - } + $this->multi->reset(); } /** @@ -446,16 +434,6 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface, }; } - private function ensureState(): CurlClientState - { - if (!isset($this->multi)) { - $this->multi = new CurlClientState($this->maxHostConnections, $this->maxPendingPushes); - $this->multi->logger = $this->logger; - } - - return $this->multi; - } - private function findConstantName(int $opt): ?string { $constants = array_filter(get_defined_constants(), static fn ($v, $k) => $v === $opt && 'C' === $k[0] && (str_starts_with($k, 'CURLOPT_') || str_starts_with($k, 'CURLINFO_')), \ARRAY_FILTER_USE_BOTH); diff --git a/vendor/symfony/http-client/EventSourceHttpClient.php b/vendor/symfony/http-client/EventSourceHttpClient.php index 4e551ac0..80022eaf 100644 --- a/vendor/symfony/http-client/EventSourceHttpClient.php +++ b/vendor/symfony/http-client/EventSourceHttpClient.php @@ -121,7 +121,7 @@ final class EventSourceHttpClient implements HttpClientInterface, ResetInterface return; } - $rx = '/((?:\r\n){2,}|\r{2,}|\n{2,})/'; + $rx = '/((?:\r\n|[\r\n]){2,})/'; $content = $state->buffer.$chunk->getContent(); if ($chunk->isLast()) { diff --git a/vendor/symfony/http-client/Response/JsonMockResponse.php b/vendor/symfony/http-client/Response/JsonMockResponse.php index 9372dbe5..66372aa8 100644 --- a/vendor/symfony/http-client/Response/JsonMockResponse.php +++ b/vendor/symfony/http-client/Response/JsonMockResponse.php @@ -21,7 +21,7 @@ class JsonMockResponse extends MockResponse public function __construct(mixed $body = [], array $info = []) { try { - $json = json_encode($body, \JSON_THROW_ON_ERROR | \JSON_PRESERVE_ZERO_FRACTION); + $json = json_encode($body, \JSON_THROW_ON_ERROR); } catch (\JsonException $e) { throw new InvalidArgumentException('JSON encoding failed: '.$e->getMessage(), $e->getCode(), $e); } diff --git a/vendor/symfony/http-client/composer.json b/vendor/symfony/http-client/composer.json index ef456a60..33fa3b45 100644 --- a/vendor/symfony/http-client/composer.json +++ b/vendor/symfony/http-client/composer.json @@ -25,7 +25,7 @@ "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/http-client-contracts": "^3", "symfony/service-contracts": "^2.5|^3" }, "require-dev": { @@ -33,7 +33,7 @@ "amphp/http-client": "^4.2.1", "amphp/http-tunnel": "^1.0", "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4|^2.0", + "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", diff --git a/vendor/symfony/http-foundation/HeaderUtils.php b/vendor/symfony/http-foundation/HeaderUtils.php index 3456edac..110896e1 100644 --- a/vendor/symfony/http-foundation/HeaderUtils.php +++ b/vendor/symfony/http-foundation/HeaderUtils.php @@ -286,7 +286,11 @@ class HeaderUtils } foreach ($partMatches as $matches) { - $parts[] = '' === $separators ? self::unquote($matches[0][0]) : self::groupParts($matches, $separators, false); + if ('' === $separators && '' !== $unquoted = self::unquote($matches[0][0])) { + $parts[] = $unquoted; + } elseif ($groupedParts = self::groupParts($matches, $separators, false)) { + $parts[] = $groupedParts; + } } return $parts; diff --git a/vendor/symfony/mime/Message.php b/vendor/symfony/mime/Message.php index 6a7e2093..fc8940eb 100644 --- a/vendor/symfony/mime/Message.php +++ b/vendor/symfony/mime/Message.php @@ -130,11 +130,11 @@ class Message extends RawMessage */ public function ensureValidity() { - if (!$this->headers->has('To') && !$this->headers->has('Cc') && !$this->headers->has('Bcc')) { + if (!$this->headers->get('To')?->getBody() && !$this->headers->get('Cc')?->getBody() && !$this->headers->get('Bcc')?->getBody()) { throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.'); } - if (!$this->headers->has('From') && !$this->headers->has('Sender')) { + if (!$this->headers->get('From')?->getBody() && !$this->headers->get('Sender')?->getBody()) { throw new LogicException('An email must have a "From" or a "Sender" header.'); } diff --git a/vendor/symfony/mime/Part/TextPart.php b/vendor/symfony/mime/Part/TextPart.php index 1f14e0ca..2a8dd585 100644 --- a/vendor/symfony/mime/Part/TextPart.php +++ b/vendor/symfony/mime/Part/TextPart.php @@ -123,7 +123,11 @@ class TextPart extends AbstractPart public function getBody(): string { if ($this->body instanceof File) { - return file_get_contents($this->body->getPath()); + if (false === $ret = @file_get_contents($this->body->getPath())) { + throw new InvalidArgumentException(error_get_last()['message']); + } + + return $ret; } if (null === $this->seekable) { diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php index 3dc06120..eb6bada0 100644 --- a/vendor/symfony/polyfill-intl-idn/Idn.php +++ b/vendor/symfony/polyfill-intl-idn/Idn.php @@ -280,10 +280,6 @@ final class Idn switch ($data['status']) { case 'disallowed': - $info->errors |= self::ERROR_DISALLOWED; - - // no break. - case 'valid': $str .= mb_chr($codePoint, 'utf-8'); @@ -294,7 +290,7 @@ final class Idn break; case 'mapped': - $str .= $data['mapping']; + $str .= $transitional && 0x1E9E === $codePoint ? 'ss' : $data['mapping']; break; @@ -346,6 +342,18 @@ final class Idn $validationOptions = $options; if ('xn--' === substr($label, 0, 4)) { + // Step 4.1. If the label contains any non-ASCII code point (i.e., a code point greater than U+007F), + // record that there was an error, and continue with the next label. + if (preg_match('/[^\x00-\x7F]/', $label)) { + $info->errors |= self::ERROR_PUNYCODE; + + continue; + } + + // Step 4.2. Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492]. If + // that conversion fails, record that there was an error, and continue + // with the next label. Otherwise replace the original label in the string by the results of the + // conversion. try { $label = self::punycodeDecode(substr($label, 4)); } catch (\Exception $e) { @@ -516,6 +524,8 @@ final class Idn if ('-' === substr($label, -1, 1)) { $info->errors |= self::ERROR_TRAILING_HYPHEN; } + } elseif ('xn--' === substr($label, 0, 4)) { + $info->errors |= self::ERROR_PUNYCODE; } // Step 4. The label must not contain a U+002E (.) FULL STOP. diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php index eb5952ee..5ff93fca 100644 --- a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php +++ b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php @@ -32,7 +32,7 @@ if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) { } if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) { - throw new \TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string'); + throw new TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string'); } $this->name = 'data://application/octet-stream;base64,'.base64_encode($value); diff --git a/vendor/symfony/polyfill-php83/Php83.php b/vendor/symfony/polyfill-php83/Php83.php index 209172bf..3d94b6c3 100644 --- a/vendor/symfony/polyfill-php83/Php83.php +++ b/vendor/symfony/polyfill-php83/Php83.php @@ -40,7 +40,7 @@ final class Php83 return \JSON_ERROR_NONE === json_last_error(); } - public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, string $encoding = null): string + public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string { if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) { throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH'); @@ -90,17 +90,17 @@ final class Php83 throw new \ValueError('str_increment(): Argument #1 ($string) cannot be empty'); } - if (!\preg_match("/^[a-zA-Z0-9]+$/", $string)) { + if (!preg_match('/^[a-zA-Z0-9]+$/', $string)) { throw new \ValueError('str_increment(): Argument #1 ($string) must be composed only of alphanumeric ASCII characters'); } - if (\is_numeric($string)) { + if (is_numeric($string)) { $offset = stripos($string, 'e'); - if ($offset !== false) { + if (false !== $offset) { $char = $string[$offset]; - $char++; + ++$char; $string[$offset] = $char; - $string++; + ++$string; switch ($string[$offset]) { case 'f': @@ -130,28 +130,28 @@ final class Php83 throw new \ValueError('str_decrement(): Argument #1 ($string) cannot be empty'); } - if (!\preg_match("/^[a-zA-Z0-9]+$/", $string)) { + if (!preg_match('/^[a-zA-Z0-9]+$/', $string)) { throw new \ValueError('str_decrement(): Argument #1 ($string) must be composed only of alphanumeric ASCII characters'); } - if (\preg_match('/\A(?:0[aA0]?|[aA])\z/', $string)) { + if (preg_match('/\A(?:0[aA0]?|[aA])\z/', $string)) { throw new \ValueError(sprintf('str_decrement(): Argument #1 ($string) "%s" is out of decrement range', $string)); } if (!\in_array(substr($string, -1), ['A', 'a', '0'], true)) { - return join('', array_slice(str_split($string), 0, -1)) . chr(ord(substr($string, -1)) - 1); + return implode('', \array_slice(str_split($string), 0, -1)).\chr(\ord(substr($string, -1)) - 1); } $carry = ''; $decremented = ''; - for ($i = strlen($string) - 1; $i >= 0; $i--) { + for ($i = \strlen($string) - 1; $i >= 0; --$i) { $char = $string[$i]; switch ($char) { case 'A': if ('' !== $carry) { - $decremented = $carry . $decremented; + $decremented = $carry.$decremented; $carry = ''; } $carry = 'Z'; @@ -159,7 +159,7 @@ final class Php83 break; case 'a': if ('' !== $carry) { - $decremented = $carry . $decremented; + $decremented = $carry.$decremented; $carry = ''; } $carry = 'z'; @@ -167,7 +167,7 @@ final class Php83 break; case '0': if ('' !== $carry) { - $decremented = $carry . $decremented; + $decremented = $carry.$decremented; $carry = ''; } $carry = '9'; @@ -175,19 +175,19 @@ final class Php83 break; case '1': if ('' !== $carry) { - $decremented = $carry . $decremented; + $decremented = $carry.$decremented; $carry = ''; } break; default: if ('' !== $carry) { - $decremented = $carry . $decremented; + $decremented = $carry.$decremented; $carry = ''; } if (!\in_array($char, ['A', 'a', '0'], true)) { - $decremented = chr(ord($char) - 1) . $decremented; + $decremented = \chr(\ord($char) - 1).$decremented; } } } diff --git a/vendor/symfony/polyfill-php83/bootstrap.php b/vendor/symfony/polyfill-php83/bootstrap.php index bcb70e48..f43af17e 100644 --- a/vendor/symfony/polyfill-php83/bootstrap.php +++ b/vendor/symfony/polyfill-php83/bootstrap.php @@ -40,7 +40,7 @@ if (\PHP_VERSION_ID >= 80100) { } if (!function_exists('ldap_exop_sync') && function_exists('ldap_exop')) { - function ldap_exop_sync($ldap, string $request_oid, string $request_data = null, array $controls = null, &$response_data = null, &$response_oid = null): bool { return ldap_exop($ldap, $request_oid, $request_data, $controls, $response_data, $response_oid); } + function ldap_exop_sync($ldap, string $request_oid, ?string $request_data = null, ?array $controls = null, &$response_data = null, &$response_oid = null): bool { return ldap_exop($ldap, $request_oid, $request_data, $controls, $response_data, $response_oid); } } if (!function_exists('ldap_connect_wallet') && function_exists('ldap_connect')) { diff --git a/vendor/symfony/polyfill-php83/bootstrap81.php b/vendor/symfony/polyfill-php83/bootstrap81.php index 63a4f780..68395b43 100644 --- a/vendor/symfony/polyfill-php83/bootstrap81.php +++ b/vendor/symfony/polyfill-php83/bootstrap81.php @@ -14,7 +14,7 @@ if (\PHP_VERSION_ID >= 80300) { } if (!function_exists('ldap_exop_sync') && function_exists('ldap_exop')) { - function ldap_exop_sync(\LDAP\Connection $ldap, string $request_oid, string $request_data = null, array $controls = null, &$response_data = null, &$response_oid = null): bool { return ldap_exop($ldap, $request_oid, $request_data, $controls, $response_data, $response_oid); } + function ldap_exop_sync(\LDAP\Connection $ldap, string $request_oid, ?string $request_data = null, ?array $controls = null, &$response_data = null, &$response_oid = null): bool { return ldap_exop($ldap, $request_oid, $request_data, $controls, $response_data, $response_oid); } } if (!function_exists('ldap_connect_wallet') && function_exists('ldap_connect')) { diff --git a/vendor/symfony/polyfill-php83/composer.json b/vendor/symfony/polyfill-php83/composer.json index a5fb4241..02a0bf83 100644 --- a/vendor/symfony/polyfill-php83/composer.json +++ b/vendor/symfony/polyfill-php83/composer.json @@ -16,8 +16,7 @@ } ], "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.1" }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Php83\\": "" }, diff --git a/vendor/symfony/psr-http-message-bridge/.php-cs-fixer.dist.php b/vendor/symfony/psr-http-message-bridge/.php-cs-fixer.dist.php new file mode 100644 index 00000000..e9b256a1 --- /dev/null +++ b/vendor/symfony/psr-http-message-bridge/.php-cs-fixer.dist.php @@ -0,0 +1,25 @@ +setRules([ + '@Symfony' => true, + '@Symfony:risky' => true, + '@PHPUnit48Migration:risky' => true, + 'php_unit_no_expectation_annotation' => false, // part of `PHPUnitXYMigration:risky` ruleset, to be enabled when PHPUnit 4.x support will be dropped, as we don't want to rewrite exceptions handling twice + 'array_syntax' => ['syntax' => 'short'], + 'fopen_flags' => false, + 'ordered_imports' => true, + 'protected_to_private' => false, + // Part of @Symfony:risky in PHP-CS-Fixer 2.13.0. To be removed from the config file once upgrading + 'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'namespaced'], + // Part of future @Symfony ruleset in PHP-CS-Fixer To be removed from the config file once upgrading + 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], + ]) + ->setRiskyAllowed(true) + ->setFinder( + (new PhpCsFixer\Finder()) + ->in(__DIR__) + ->exclude('vendor') + ->name('*.php') + ) +; diff --git a/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/PsrServerRequestResolver.php b/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/PsrServerRequestResolver.php index 79fefd89..61cd8c5c 100644 --- a/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/PsrServerRequestResolver.php +++ b/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/PsrServerRequestResolver.php @@ -16,7 +16,8 @@ use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ServerRequestInterface; use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Controller\ValueResolverInterface; +use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface; +use Symfony\Component\HttpKernel\Controller\ValueResolverInterface as BaseValueResolverInterface; use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata; /** @@ -25,7 +26,7 @@ use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata; * @author Iltar van der Berg * @author Alexander M. Turek */ -final class PsrServerRequestResolver implements ValueResolverInterface +final class PsrServerRequestResolver implements ArgumentValueResolverInterface, ValueResolverInterface { private const SUPPORTED_TYPES = [ ServerRequestInterface::class => true, @@ -33,11 +34,28 @@ final class PsrServerRequestResolver implements ValueResolverInterface MessageInterface::class => true, ]; - public function __construct( - private readonly HttpMessageFactoryInterface $httpMessageFactory, - ) { + private $httpMessageFactory; + + public function __construct(HttpMessageFactoryInterface $httpMessageFactory) + { + $this->httpMessageFactory = $httpMessageFactory; } + /** + * {@inheritdoc} + */ + public function supports(Request $request, ArgumentMetadata $argument): bool + { + if ($this instanceof BaseValueResolverInterface) { + trigger_deprecation('symfony/psr-http-message-bridge', '2.3', 'Method "%s" is deprecated, call "resolve()" without calling "supports()" first.', __METHOD__); + } + + return self::SUPPORTED_TYPES[$argument->getType()] ?? false; + } + + /** + * {@inheritdoc} + */ public function resolve(Request $request, ArgumentMetadata $argument): \Traversable { if (!isset(self::SUPPORTED_TYPES[$argument->getType()])) { diff --git a/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/ValueResolverInterface.php b/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/ValueResolverInterface.php new file mode 100644 index 00000000..83a321ab --- /dev/null +++ b/vendor/symfony/psr-http-message-bridge/ArgumentValueResolver/ValueResolverInterface.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bridge\PsrHttpMessage\ArgumentValueResolver; + +use Symfony\Component\HttpKernel\Controller\ValueResolverInterface as BaseValueResolverInterface; + +if (interface_exists(BaseValueResolverInterface::class)) { + /** @internal */ + interface ValueResolverInterface extends BaseValueResolverInterface + { + } +} else { + /** @internal */ + interface ValueResolverInterface + { + } +} diff --git a/vendor/symfony/psr-http-message-bridge/CHANGELOG.md b/vendor/symfony/psr-http-message-bridge/CHANGELOG.md index b53760aa..f32c06f2 100644 --- a/vendor/symfony/psr-http-message-bridge/CHANGELOG.md +++ b/vendor/symfony/psr-http-message-bridge/CHANGELOG.md @@ -1,109 +1,85 @@ CHANGELOG ========= -6.4 ---- +# 2.3.1 (2023-07-26) - * Import the bridge into the Symfony monorepo and synchronize releases - * Remove `ArgumentValueResolverInterface` from `PsrServerRequestResolver` - * Support `php-http/discovery` for auto-detecting PSR-17 factories +* Don't rely on `Request::getPayload()` to populate the parsed body -2.3.1 ------ +# 2.3.0 (2023-07-25) - * Don't rely on `Request::getPayload()` to populate the parsed body +* Leverage `Request::getPayload()` to populate the parsed body of PSR-7 requests +* Implement `ValueResolverInterface` introduced with Symfony 6.2 -2.3.0 ------ +# 2.2.0 (2023-04-21) - * Leverage `Request::getPayload()` to populate the parsed body of PSR-7 requests - * Implement `ValueResolverInterface` introduced with Symfony 6.2 +* Drop support for Symfony 4 +* Bump minimum version of PHP to 7.2 +* Support version 2 of the psr/http-message contracts -2.2.0 ------ +# 2.1.3 (2022-09-05) - * Drop support for Symfony 4 - * Bump minimum version of PHP to 7.2 - * Support version 2 of the psr/http-message contracts +* Ignore invalid HTTP headers when creating PSR7 objects +* Fix for wrong type passed to `moveTo()` -2.1.3 ------ +# 2.1.2 (2021-11-05) - * Ignore invalid HTTP headers when creating PSR7 objects - * Fix for wrong type passed to `moveTo()` +* Allow Symfony 6 -2.1.2 ------ +# 2.1.0 (2021-02-17) - * Allow Symfony 6 + * Added a `PsrResponseListener` to automatically convert PSR-7 responses returned by controllers + * Added a `PsrServerRequestResolver` that allows injecting PSR-7 request objects into controllers -2.1.0 ------ +# 2.0.2 (2020-09-29) - * Added a `PsrResponseListener` to automatically convert PSR-7 responses returned by controllers - * Added a `PsrServerRequestResolver` that allows injecting PSR-7 request objects into controllers + * Fix populating server params from URI in HttpFoundationFactory + * Create cookies as raw in HttpFoundationFactory + * Fix BinaryFileResponse with Content-Range PsrHttpFactory -2.0.2 ------ +# 2.0.1 (2020-06-25) - * Fix populating server params from URI in HttpFoundationFactory - * Create cookies as raw in HttpFoundationFactory - * Fix BinaryFileResponse with Content-Range PsrHttpFactory + * Don't normalize query string in PsrHttpFactory + * Fix conversion for HTTPS requests + * Fix populating default port and headers in HttpFoundationFactory -2.0.1 ------ +# 2.0.0 (2020-01-02) - * Don't normalize query string in PsrHttpFactory - * Fix conversion for HTTPS requests - * Fix populating default port and headers in HttpFoundationFactory + * Remove DiactorosFactory -2.0.0 ------ +# 1.3.0 (2019-11-25) - * Remove DiactorosFactory + * Added support for streamed requests + * Added support for Symfony 5.0+ + * Fixed bridging UploadedFile objects + * Bumped minimum version of Symfony to 4.4 -1.3.0 ------ +# 1.2.0 (2019-03-11) - * Added support for streamed requests - * Added support for Symfony 5.0+ - * Fixed bridging UploadedFile objects - * Bumped minimum version of Symfony to 4.4 + * Added new documentation links + * Bumped minimum version of PHP to 7.1 + * Added support for streamed responses -1.2.0 ------ +# 1.1.2 (2019-04-03) - * Added new documentation links - * Bumped minimum version of PHP to 7.1 - * Added support for streamed responses + * Fixed createResponse -1.1.2 ------ +# 1.1.1 (2019-03-11) - * Fixed createResponse + * Deprecated DiactorosFactory, use PsrHttpFactory instead + * Removed triggering of deprecation -1.1.1 ------ +# 1.1.0 (2018-08-30) - * Deprecated DiactorosFactory, use PsrHttpFactory instead - * Removed triggering of deprecation + * Added support for creating PSR-7 messages using PSR-17 factories -1.1.0 ------ +# 1.0.2 (2017-12-19) - * Added support for creating PSR-7 messages using PSR-17 factories + * Fixed request target in PSR7 Request (mtibben) -1.0.2 ------ +# 1.0.1 (2017-12-04) - * Fixed request target in PSR7 Request (mtibben) + * Added support for Symfony 4 (dunglas) -1.0.1 ------ +# 1.0.0 (2016-09-14) - * Added support for Symfony 4 (dunglas) - -1.0.0 ------ - - * Initial release + * Initial release diff --git a/vendor/symfony/psr-http-message-bridge/EventListener/PsrResponseListener.php b/vendor/symfony/psr-http-message-bridge/EventListener/PsrResponseListener.php index dd7ef6cb..ee0e0476 100644 --- a/vendor/symfony/psr-http-message-bridge/EventListener/PsrResponseListener.php +++ b/vendor/symfony/psr-http-message-bridge/EventListener/PsrResponseListener.php @@ -1,14 +1,5 @@ - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - namespace Symfony\Bridge\PsrHttpMessage\EventListener; use Psr\Http\Message\ResponseInterface; @@ -26,9 +17,9 @@ use Symfony\Component\HttpKernel\KernelEvents; */ final class PsrResponseListener implements EventSubscriberInterface { - private readonly HttpFoundationFactoryInterface $httpFoundationFactory; + private $httpFoundationFactory; - public function __construct(?HttpFoundationFactoryInterface $httpFoundationFactory = null) + public function __construct(HttpFoundationFactoryInterface $httpFoundationFactory = null) { $this->httpFoundationFactory = $httpFoundationFactory ?? new HttpFoundationFactory(); } @@ -47,6 +38,9 @@ final class PsrResponseListener implements EventSubscriberInterface $event->setResponse($this->httpFoundationFactory->createResponse($controllerResult)); } + /** + * {@inheritdoc} + */ public static function getSubscribedEvents(): array { return [ diff --git a/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php b/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php index b1ee25a4..a69e8ffe 100644 --- a/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php +++ b/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php @@ -23,19 +23,28 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; /** + * {@inheritdoc} + * * @author Kévin Dunglas */ class HttpFoundationFactory implements HttpFoundationFactoryInterface { /** - * @param int $responseBufferMaxLength The maximum output buffering size for each iteration when sending the response + * @var int The maximum output buffering size for each iteration when sending the response */ - public function __construct( - private readonly int $responseBufferMaxLength = 16372, - ) { + private $responseBufferMaxLength; + + public function __construct(int $responseBufferMaxLength = 16372) + { + $this->responseBufferMaxLength = $responseBufferMaxLength; } - public function createRequest(ServerRequestInterface $psrRequest, bool $streamed = false): Request + /** + * {@inheritdoc} + * + * @return Request + */ + public function createRequest(ServerRequestInterface $psrRequest, bool $streamed = false) { $server = []; $uri = $psrRequest->getUri(); @@ -104,13 +113,20 @@ class HttpFoundationFactory implements HttpFoundationFactoryInterface /** * Gets a temporary file path. + * + * @return string */ - protected function getTemporaryPath(): string + protected function getTemporaryPath() { return tempnam(sys_get_temp_dir(), uniqid('symfony', true)); } - public function createResponse(ResponseInterface $psrResponse, bool $streamed = false): Response + /** + * {@inheritdoc} + * + * @return Response + */ + public function createResponse(ResponseInterface $psrResponse, bool $streamed = false) { $cookies = $psrResponse->getHeader('Set-Cookie'); $psrResponse = $psrResponse->withoutHeader('Set-Cookie'); diff --git a/vendor/symfony/psr-http-message-bridge/Factory/PsrHttpFactory.php b/vendor/symfony/psr-http-message-bridge/Factory/PsrHttpFactory.php index 7c824fd4..09c4360d 100644 --- a/vendor/symfony/psr-http-message-bridge/Factory/PsrHttpFactory.php +++ b/vendor/symfony/psr-http-message-bridge/Factory/PsrHttpFactory.php @@ -11,8 +11,6 @@ namespace Symfony\Bridge\PsrHttpMessage\Factory; -use Http\Discovery\Psr17Factory as DiscoveryPsr17Factory; -use Nyholm\Psr7\Factory\Psr17Factory as NyholmPsr17Factory; use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestFactoryInterface; @@ -35,37 +33,25 @@ use Symfony\Component\HttpFoundation\StreamedResponse; */ class PsrHttpFactory implements HttpMessageFactoryInterface { - private readonly ServerRequestFactoryInterface $serverRequestFactory; - private readonly StreamFactoryInterface $streamFactory; - private readonly UploadedFileFactoryInterface $uploadedFileFactory; - private readonly ResponseFactoryInterface $responseFactory; - - public function __construct( - ?ServerRequestFactoryInterface $serverRequestFactory = null, - ?StreamFactoryInterface $streamFactory = null, - ?UploadedFileFactoryInterface $uploadedFileFactory = null, - ?ResponseFactoryInterface $responseFactory = null, - ) { - if (null === $serverRequestFactory || null === $streamFactory || null === $uploadedFileFactory || null === $responseFactory) { - $psr17Factory = match (true) { - class_exists(DiscoveryPsr17Factory::class) => new DiscoveryPsr17Factory(), - class_exists(NyholmPsr17Factory::class) => new NyholmPsr17Factory(), - default => throw new \LogicException(sprintf('You cannot use the "%s" as no PSR-17 factories have been provided. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', self::class)), - }; - - $serverRequestFactory ??= $psr17Factory; - $streamFactory ??= $psr17Factory; - $uploadedFileFactory ??= $psr17Factory; - $responseFactory ??= $psr17Factory; - } + private $serverRequestFactory; + private $streamFactory; + private $uploadedFileFactory; + private $responseFactory; + public function __construct(ServerRequestFactoryInterface $serverRequestFactory, StreamFactoryInterface $streamFactory, UploadedFileFactoryInterface $uploadedFileFactory, ResponseFactoryInterface $responseFactory) + { $this->serverRequestFactory = $serverRequestFactory; $this->streamFactory = $streamFactory; $this->uploadedFileFactory = $uploadedFileFactory; $this->responseFactory = $responseFactory; } - public function createRequest(Request $symfonyRequest): ServerRequestInterface + /** + * {@inheritdoc} + * + * @return ServerRequestInterface + */ + public function createRequest(Request $symfonyRequest) { $uri = $symfonyRequest->server->get('QUERY_STRING', ''); $uri = $symfonyRequest->getSchemeAndHttpHost().$symfonyRequest->getBaseUrl().$symfonyRequest->getPathInfo().('' !== $uri ? '?'.$uri : ''); @@ -155,7 +141,12 @@ class PsrHttpFactory implements HttpMessageFactoryInterface ); } - public function createResponse(Response $symfonyResponse): ResponseInterface + /** + * {@inheritdoc} + * + * @return ResponseInterface + */ + public function createResponse(Response $symfonyResponse) { $response = $this->responseFactory->createResponse($symfonyResponse->getStatusCode(), Response::$statusTexts[$symfonyResponse->getStatusCode()] ?? ''); diff --git a/vendor/symfony/psr-http-message-bridge/Factory/UploadedFile.php b/vendor/symfony/psr-http-message-bridge/Factory/UploadedFile.php index f680dd5a..4d38a1f7 100644 --- a/vendor/symfony/psr-http-message-bridge/Factory/UploadedFile.php +++ b/vendor/symfony/psr-http-message-bridge/Factory/UploadedFile.php @@ -21,12 +21,11 @@ use Symfony\Component\HttpFoundation\File\UploadedFile as BaseUploadedFile; */ class UploadedFile extends BaseUploadedFile { - private bool $test = false; + private $psrUploadedFile; + private $test = false; - public function __construct( - private readonly UploadedFileInterface $psrUploadedFile, - callable $getTemporaryPath, - ) { + public function __construct(UploadedFileInterface $psrUploadedFile, callable $getTemporaryPath) + { $error = $psrUploadedFile->getError(); $path = ''; @@ -46,9 +45,14 @@ class UploadedFile extends BaseUploadedFile $psrUploadedFile->getError(), $this->test ); + + $this->psrUploadedFile = $psrUploadedFile; } - public function move(string $directory, ?string $name = null): File + /** + * {@inheritdoc} + */ + public function move(string $directory, string $name = null): File { if (!$this->isValid() || $this->test) { return parent::move($directory, $name); @@ -59,7 +63,7 @@ class UploadedFile extends BaseUploadedFile try { $this->psrUploadedFile->moveTo((string) $target); } catch (\RuntimeException $e) { - throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, $e->getMessage()), 0, $e); + throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, $e->getMessage()), 0, $e); } @chmod($target, 0666 & ~umask()); diff --git a/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php b/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php index 2bf5e381..a3f90438 100644 --- a/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php +++ b/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php @@ -25,11 +25,15 @@ interface HttpFoundationFactoryInterface { /** * Creates a Symfony Request instance from a PSR-7 one. + * + * @return Request */ - public function createRequest(ServerRequestInterface $psrRequest, bool $streamed = false): Request; + public function createRequest(ServerRequestInterface $psrRequest, bool $streamed = false); /** * Creates a Symfony Response instance from a PSR-7 one. + * + * @return Response */ - public function createResponse(ResponseInterface $psrResponse, bool $streamed = false): Response; + public function createResponse(ResponseInterface $psrResponse, bool $streamed = false); } diff --git a/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php b/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php index ebee0374..f7b964e1 100644 --- a/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php +++ b/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php @@ -25,11 +25,15 @@ interface HttpMessageFactoryInterface { /** * Creates a PSR-7 Request instance from a Symfony one. + * + * @return ServerRequestInterface */ - public function createRequest(Request $symfonyRequest): ServerRequestInterface; + public function createRequest(Request $symfonyRequest); /** * Creates a PSR-7 Response instance from a Symfony one. + * + * @return ResponseInterface */ - public function createResponse(Response $symfonyResponse): ResponseInterface; + public function createResponse(Response $symfonyResponse); } diff --git a/vendor/symfony/psr-http-message-bridge/LICENSE b/vendor/symfony/psr-http-message-bridge/LICENSE index 0138f8f0..9ff2d0d6 100644 --- a/vendor/symfony/psr-http-message-bridge/LICENSE +++ b/vendor/symfony/psr-http-message-bridge/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2004-present Fabien Potencier +Copyright (c) 2004-2021 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/symfony/psr-http-message-bridge/README.md b/vendor/symfony/psr-http-message-bridge/README.md index f1fd3fec..dcbc09a8 100644 --- a/vendor/symfony/psr-http-message-bridge/README.md +++ b/vendor/symfony/psr-http-message-bridge/README.md @@ -6,8 +6,14 @@ Provides integration for PSR7. Resources --------- - * [Documentation](https://symfony.com/doc/current/components/psr7.html) - * [Contributing](https://symfony.com/doc/current/contributing/index.html) - * [Report issues](https://github.com/symfony/symfony/issues) and - [send Pull Requests](https://github.com/symfony/symfony/pulls) - in the [main Symfony repository](https://github.com/symfony/symfony) + * [Documentation](https://symfony.com/doc/current/components/psr7.html) + +Running the tests +----------------- + +If you want to run the unit tests, install dev dependencies before +running PHPUnit: + + $ cd path/to/Symfony/Bridge/PsrHttpMessage/ + $ composer.phar install + $ phpunit diff --git a/vendor/symfony/psr-http-message-bridge/composer.json b/vendor/symfony/psr-http-message-bridge/composer.json index 4d7589c7..b705eb2e 100644 --- a/vendor/symfony/psr-http-message-bridge/composer.json +++ b/vendor/symfony/psr-http-message-bridge/composer.json @@ -3,7 +3,7 @@ "type": "symfony-bridge", "description": "PSR HTTP message bridge", "keywords": ["http", "psr-7", "psr-17", "http-message"], - "homepage": "https://symfony.com", + "homepage": "http://symfony.com", "license": "MIT", "authors": [ { @@ -12,32 +12,27 @@ }, { "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "homepage": "http://symfony.com/contributors" } ], "require": { - "php": ">=8.1", - "psr/http-message": "^1.0|^2.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" }, "require-dev": { - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^6.2|^7.0", - "symfony/http-kernel": "^6.2|^7.0", + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2", "nyholm/psr7": "^1.1", - "php-http/discovery": "^1.15", - "psr/log": "^1.1.4|^2|^3" + "psr/log": "^1.1 || ^2 || ^3" }, - "conflict": { - "php-http/discovery": "<1.15", - "symfony/http-kernel": "<6.2" - }, - "config": { - "allow-plugins": { - "php-http/discovery": false - } + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" }, "autoload": { "psr-4": { "Symfony\\Bridge\\PsrHttpMessage\\": "" }, @@ -45,5 +40,9 @@ "/Tests/" ] }, - "minimum-stability": "dev" + "extra": { + "branch-alias": { + "dev-main": "2.3-dev" + } + } } diff --git a/vendor/symfony/service-contracts/.gitignore b/vendor/symfony/service-contracts/.gitignore new file mode 100644 index 00000000..c49a5d8d --- /dev/null +++ b/vendor/symfony/service-contracts/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +phpunit.xml diff --git a/vendor/symfony/service-contracts/Attribute/SubscribedService.php b/vendor/symfony/service-contracts/Attribute/SubscribedService.php index f850b840..10d1bc38 100644 --- a/vendor/symfony/service-contracts/Attribute/SubscribedService.php +++ b/vendor/symfony/service-contracts/Attribute/SubscribedService.php @@ -11,15 +11,10 @@ namespace Symfony\Contracts\Service\Attribute; -use Symfony\Contracts\Service\ServiceMethodsSubscriberTrait; -use Symfony\Contracts\Service\ServiceSubscriberInterface; +use Symfony\Contracts\Service\ServiceSubscriberTrait; /** - * For use as the return value for {@see ServiceSubscriberInterface}. - * - * @example new SubscribedService('http_client', HttpClientInterface::class, false, new Target('githubApi')) - * - * Use with {@see ServiceMethodsSubscriberTrait} to mark a method's return type + * Use with {@see ServiceSubscriberTrait} to mark a method's return type * as a subscribed service. * * @author Kevin Bond @@ -27,21 +22,12 @@ use Symfony\Contracts\Service\ServiceSubscriberInterface; #[\Attribute(\Attribute::TARGET_METHOD)] final class SubscribedService { - /** @var object[] */ - public array $attributes; - /** - * @param string|null $key The key to use for the service - * @param class-string|null $type The service class - * @param bool $nullable Whether the service is optional - * @param object|object[] $attributes One or more dependency injection attributes to use + * @param string|null $key The key to use for the service + * If null, use "ClassName::methodName" */ public function __construct( - public ?string $key = null, - public ?string $type = null, - public bool $nullable = false, - array|object $attributes = [], + public ?string $key = null ) { - $this->attributes = \is_array($attributes) ? $attributes : [$attributes]; } } diff --git a/vendor/symfony/service-contracts/LICENSE b/vendor/symfony/service-contracts/LICENSE index 7536caea..74cdc2db 100644 --- a/vendor/symfony/service-contracts/LICENSE +++ b/vendor/symfony/service-contracts/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2018-present Fabien Potencier +Copyright (c) 2018-2022 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/symfony/service-contracts/README.md b/vendor/symfony/service-contracts/README.md index 42841a57..41e054a1 100644 --- a/vendor/symfony/service-contracts/README.md +++ b/vendor/symfony/service-contracts/README.md @@ -3,7 +3,7 @@ Symfony Service Contracts A set of abstractions extracted out of the Symfony components. -Can be used to build on semantics that the Symfony components proved useful and +Can be used to build on semantics that the Symfony components proved useful - and that already have battle tested implementations. See https://github.com/symfony/contracts/blob/main/README.md for more information. diff --git a/vendor/symfony/service-contracts/ResetInterface.php b/vendor/symfony/service-contracts/ResetInterface.php index a4f389b0..1af1075e 100644 --- a/vendor/symfony/service-contracts/ResetInterface.php +++ b/vendor/symfony/service-contracts/ResetInterface.php @@ -26,8 +26,5 @@ namespace Symfony\Contracts\Service; */ interface ResetInterface { - /** - * @return void - */ public function reset(); } diff --git a/vendor/symfony/service-contracts/ServiceCollectionInterface.php b/vendor/symfony/service-contracts/ServiceCollectionInterface.php deleted file mode 100644 index 2333139c..00000000 --- a/vendor/symfony/service-contracts/ServiceCollectionInterface.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Service; - -/** - * A ServiceProviderInterface that is also countable and iterable. - * - * @author Kevin Bond - * - * @template-covariant T of mixed - * - * @extends ServiceProviderInterface - * @extends \IteratorAggregate - */ -interface ServiceCollectionInterface extends ServiceProviderInterface, \Countable, \IteratorAggregate -{ -} diff --git a/vendor/symfony/service-contracts/ServiceLocatorTrait.php b/vendor/symfony/service-contracts/ServiceLocatorTrait.php index b62ec3e5..74dfa436 100644 --- a/vendor/symfony/service-contracts/ServiceLocatorTrait.php +++ b/vendor/symfony/service-contracts/ServiceLocatorTrait.php @@ -26,24 +26,34 @@ class_exists(NotFoundExceptionInterface::class); */ trait ServiceLocatorTrait { - private array $factories; - private array $loading = []; - private array $providedTypes; + private $factories; + private $loading = []; + private $providedTypes; /** - * @param array $factories + * @param callable[] $factories */ public function __construct(array $factories) { $this->factories = $factories; } - public function has(string $id): bool + /** + * {@inheritdoc} + * + * @return bool + */ + public function has(string $id) { return isset($this->factories[$id]); } - public function get(string $id): mixed + /** + * {@inheritdoc} + * + * @return mixed + */ + public function get(string $id) { if (!isset($this->factories[$id])) { throw $this->createNotFoundException($id); @@ -65,9 +75,12 @@ trait ServiceLocatorTrait } } + /** + * {@inheritdoc} + */ public function getProvidedServices(): array { - if (!isset($this->providedTypes)) { + if (null === $this->providedTypes) { $this->providedTypes = []; foreach ($this->factories as $name => $factory) { diff --git a/vendor/symfony/service-contracts/ServiceMethodsSubscriberTrait.php b/vendor/symfony/service-contracts/ServiceMethodsSubscriberTrait.php deleted file mode 100644 index 0d89d9f2..00000000 --- a/vendor/symfony/service-contracts/ServiceMethodsSubscriberTrait.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Service; - -use Psr\Container\ContainerInterface; -use Symfony\Contracts\Service\Attribute\Required; -use Symfony\Contracts\Service\Attribute\SubscribedService; - -/** - * Implementation of ServiceSubscriberInterface that determines subscribed services - * from methods that have the #[SubscribedService] attribute. - * - * Service ids are available as "ClassName::methodName" so that the implementation - * of subscriber methods can be just `return $this->container->get(__METHOD__);`. - * - * @author Kevin Bond - */ -trait ServiceMethodsSubscriberTrait -{ - protected ContainerInterface $container; - - public static function getSubscribedServices(): array - { - $services = method_exists(get_parent_class(self::class) ?: '', __FUNCTION__) ? parent::getSubscribedServices() : []; - - foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { - if (self::class !== $method->getDeclaringClass()->name) { - continue; - } - - if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) { - continue; - } - - if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { - throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); - } - - if (!$returnType = $method->getReturnType()) { - throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); - } - - /* @var SubscribedService $attribute */ - $attribute = $attribute->newInstance(); - $attribute->key ??= self::class.'::'.$method->name; - $attribute->type ??= $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; - $attribute->nullable = $returnType->allowsNull(); - - if ($attribute->attributes) { - $services[] = $attribute; - } else { - $services[$attribute->key] = ($attribute->nullable ? '?' : '').$attribute->type; - } - } - - return $services; - } - - #[Required] - public function setContainer(ContainerInterface $container): ?ContainerInterface - { - $ret = null; - if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) { - $ret = parent::setContainer($container); - } - - $this->container = $container; - - return $ret; - } -} diff --git a/vendor/symfony/service-contracts/ServiceProviderInterface.php b/vendor/symfony/service-contracts/ServiceProviderInterface.php index 2e71f00c..c60ad0bd 100644 --- a/vendor/symfony/service-contracts/ServiceProviderInterface.php +++ b/vendor/symfony/service-contracts/ServiceProviderInterface.php @@ -18,18 +18,9 @@ use Psr\Container\ContainerInterface; * * @author Nicolas Grekas * @author Mateusz Sip - * - * @template-covariant T of mixed */ interface ServiceProviderInterface extends ContainerInterface { - /** - * @return T - */ - public function get(string $id): mixed; - - public function has(string $id): bool; - /** * Returns an associative array of service types keyed by the identifiers provided by the current container. * @@ -39,7 +30,7 @@ interface ServiceProviderInterface extends ContainerInterface * * ['foo' => '?'] means the container provides service name "foo" of unspecified type * * ['bar' => '?Bar\Baz'] means the container provides a service "bar" of type Bar\Baz|null * - * @return array The provided service types, keyed by service names + * @return string[] The provided service types, keyed by service names */ public function getProvidedServices(): array; } diff --git a/vendor/symfony/service-contracts/ServiceSubscriberInterface.php b/vendor/symfony/service-contracts/ServiceSubscriberInterface.php index 3da19169..098ab908 100644 --- a/vendor/symfony/service-contracts/ServiceSubscriberInterface.php +++ b/vendor/symfony/service-contracts/ServiceSubscriberInterface.php @@ -11,8 +11,6 @@ namespace Symfony\Contracts\Service; -use Symfony\Contracts\Service\Attribute\SubscribedService; - /** * A ServiceSubscriber exposes its dependencies via the static {@link getSubscribedServices} method. * @@ -31,8 +29,7 @@ use Symfony\Contracts\Service\Attribute\SubscribedService; interface ServiceSubscriberInterface { /** - * Returns an array of service types (or {@see SubscribedService} objects) required - * by such instances, optionally keyed by the service names used internally. + * Returns an array of service types required by such instances, optionally keyed by the service names used internally. * * For mandatory dependencies: * @@ -50,13 +47,7 @@ interface ServiceSubscriberInterface * * ['?Psr\Log\LoggerInterface'] is a shortcut for * * ['Psr\Log\LoggerInterface' => '?Psr\Log\LoggerInterface'] * - * additionally, an array of {@see SubscribedService}'s can be returned: - * - * * [new SubscribedService('logger', Psr\Log\LoggerInterface::class)] - * * [new SubscribedService(type: Psr\Log\LoggerInterface::class, nullable: true)] - * * [new SubscribedService('http_client', HttpClientInterface::class, attributes: new Target('githubApi'))] - * - * @return string[]|SubscribedService[] The required service types, optionally keyed by service names + * @return string[] The required service types, optionally keyed by service names */ - public static function getSubscribedServices(): array; + public static function getSubscribedServices(); } diff --git a/vendor/symfony/service-contracts/ServiceSubscriberTrait.php b/vendor/symfony/service-contracts/ServiceSubscriberTrait.php index cc3bc321..16e3eb2c 100644 --- a/vendor/symfony/service-contracts/ServiceSubscriberTrait.php +++ b/vendor/symfony/service-contracts/ServiceSubscriberTrait.php @@ -12,73 +12,98 @@ namespace Symfony\Contracts\Service; use Psr\Container\ContainerInterface; -use Symfony\Contracts\Service\Attribute\Required; use Symfony\Contracts\Service\Attribute\SubscribedService; -trigger_deprecation('symfony/contracts', 'v3.5', '"%s" is deprecated, use "ServiceMethodsSubscriberTrait" instead.', ServiceSubscriberTrait::class); - /** - * Implementation of ServiceSubscriberInterface that determines subscribed services - * from methods that have the #[SubscribedService] attribute. - * - * Service ids are available as "ClassName::methodName" so that the implementation - * of subscriber methods can be just `return $this->container->get(__METHOD__);`. - * - * @property ContainerInterface $container + * Implementation of ServiceSubscriberInterface that determines subscribed services from + * method return types. Service ids are available as "ClassName::methodName". * * @author Kevin Bond - * - * @deprecated since symfony/contracts v3.5, use ServiceMethodsSubscriberTrait instead */ trait ServiceSubscriberTrait { + /** @var ContainerInterface */ + protected $container; + + /** + * {@inheritdoc} + */ public static function getSubscribedServices(): array { $services = method_exists(get_parent_class(self::class) ?: '', __FUNCTION__) ? parent::getSubscribedServices() : []; + $attributeOptIn = false; - foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { - if (self::class !== $method->getDeclaringClass()->name) { - continue; + if (\PHP_VERSION_ID >= 80000) { + foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { + if (self::class !== $method->getDeclaringClass()->name) { + continue; + } + + if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) { + continue; + } + + if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { + throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); + } + + if (!$returnType = $method->getReturnType()) { + throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); + } + + $serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; + + if ($returnType->allowsNull()) { + $serviceId = '?'.$serviceId; + } + + $services[$attribute->newInstance()->key ?? self::class.'::'.$method->name] = $serviceId; + $attributeOptIn = true; } + } - if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) { - continue; - } + if (!$attributeOptIn) { + foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { + if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { + continue; + } - if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { - throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); - } + if (self::class !== $method->getDeclaringClass()->name) { + continue; + } - if (!$returnType = $method->getReturnType()) { - throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); - } + if (!($returnType = $method->getReturnType()) instanceof \ReflectionNamedType) { + continue; + } - /* @var SubscribedService $attribute */ - $attribute = $attribute->newInstance(); - $attribute->key ??= self::class.'::'.$method->name; - $attribute->type ??= $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; - $attribute->nullable = $returnType->allowsNull(); + if ($returnType->isBuiltin()) { + continue; + } - if ($attribute->attributes) { - $services[] = $attribute; - } else { - $services[$attribute->key] = ($attribute->nullable ? '?' : '').$attribute->type; + if (\PHP_VERSION_ID >= 80000) { + trigger_deprecation('symfony/service-contracts', '2.5', 'Using "%s" in "%s" without using the "%s" attribute on any method is deprecated.', ServiceSubscriberTrait::class, self::class, SubscribedService::class); + } + + $services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType); } } return $services; } - #[Required] - public function setContainer(ContainerInterface $container): ?ContainerInterface + /** + * @required + * + * @return ContainerInterface|null + */ + public function setContainer(ContainerInterface $container) { - $ret = null; - if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) { - $ret = parent::setContainer($container); - } - $this->container = $container; - return $ret; + if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) { + return parent::setContainer($container); + } + + return null; } } diff --git a/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php b/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php index 07d12b4a..2a1b565f 100644 --- a/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php +++ b/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php @@ -11,13 +11,85 @@ namespace Symfony\Contracts\Service\Test; -class_alias(ServiceLocatorTestCase::class, ServiceLocatorTest::class); +use PHPUnit\Framework\TestCase; +use Psr\Container\ContainerInterface; +use Symfony\Contracts\Service\ServiceLocatorTrait; -if (false) { +abstract class ServiceLocatorTest extends TestCase +{ /** - * @deprecated since PHPUnit 9.6 + * @return ContainerInterface */ - class ServiceLocatorTest + protected function getServiceLocator(array $factories) { + return new class($factories) implements ContainerInterface { + use ServiceLocatorTrait; + }; + } + + public function testHas() + { + $locator = $this->getServiceLocator([ + 'foo' => function () { return 'bar'; }, + 'bar' => function () { return 'baz'; }, + function () { return 'dummy'; }, + ]); + + $this->assertTrue($locator->has('foo')); + $this->assertTrue($locator->has('bar')); + $this->assertFalse($locator->has('dummy')); + } + + public function testGet() + { + $locator = $this->getServiceLocator([ + 'foo' => function () { return 'bar'; }, + 'bar' => function () { return 'baz'; }, + ]); + + $this->assertSame('bar', $locator->get('foo')); + $this->assertSame('baz', $locator->get('bar')); + } + + public function testGetDoesNotMemoize() + { + $i = 0; + $locator = $this->getServiceLocator([ + 'foo' => function () use (&$i) { + ++$i; + + return 'bar'; + }, + ]); + + $this->assertSame('bar', $locator->get('foo')); + $this->assertSame('bar', $locator->get('foo')); + $this->assertSame(2, $i); + } + + public function testThrowsOnUndefinedInternalService() + { + if (!$this->getExpectedException()) { + $this->expectException(\Psr\Container\NotFoundExceptionInterface::class); + $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.'); + } + $locator = $this->getServiceLocator([ + 'foo' => function () use (&$locator) { return $locator->get('bar'); }, + ]); + + $locator->get('foo'); + } + + public function testThrowsOnCircularReference() + { + $this->expectException(\Psr\Container\ContainerExceptionInterface::class); + $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); + $locator = $this->getServiceLocator([ + 'foo' => function () use (&$locator) { return $locator->get('bar'); }, + 'bar' => function () use (&$locator) { return $locator->get('baz'); }, + 'baz' => function () use (&$locator) { return $locator->get('bar'); }, + ]); + + $locator->get('foo'); } } diff --git a/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php b/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php deleted file mode 100644 index 65a3fe33..00000000 --- a/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php +++ /dev/null @@ -1,96 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\Service\Test; - -use PHPUnit\Framework\TestCase; -use Psr\Container\ContainerExceptionInterface; -use Psr\Container\ContainerInterface; -use Psr\Container\NotFoundExceptionInterface; -use Symfony\Contracts\Service\ServiceLocatorTrait; - -abstract class ServiceLocatorTestCase extends TestCase -{ - protected function getServiceLocator(array $factories): ContainerInterface - { - return new class($factories) implements ContainerInterface { - use ServiceLocatorTrait; - }; - } - - public function testHas() - { - $locator = $this->getServiceLocator([ - 'foo' => fn () => 'bar', - 'bar' => fn () => 'baz', - fn () => 'dummy', - ]); - - $this->assertTrue($locator->has('foo')); - $this->assertTrue($locator->has('bar')); - $this->assertFalse($locator->has('dummy')); - } - - public function testGet() - { - $locator = $this->getServiceLocator([ - 'foo' => fn () => 'bar', - 'bar' => fn () => 'baz', - ]); - - $this->assertSame('bar', $locator->get('foo')); - $this->assertSame('baz', $locator->get('bar')); - } - - public function testGetDoesNotMemoize() - { - $i = 0; - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$i) { - ++$i; - - return 'bar'; - }, - ]); - - $this->assertSame('bar', $locator->get('foo')); - $this->assertSame('bar', $locator->get('foo')); - $this->assertSame(2, $i); - } - - public function testThrowsOnUndefinedInternalService() - { - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$locator) { return $locator->get('bar'); }, - ]); - - if (!$this->getExpectedException()) { - $this->expectException(NotFoundExceptionInterface::class); - $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.'); - } - - $locator->get('foo'); - } - - public function testThrowsOnCircularReference() - { - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$locator) { return $locator->get('bar'); }, - 'bar' => function () use (&$locator) { return $locator->get('baz'); }, - 'baz' => function () use (&$locator) { return $locator->get('bar'); }, - ]); - - $this->expectException(ContainerExceptionInterface::class); - $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); - - $locator->get('foo'); - } -} diff --git a/vendor/symfony/service-contracts/composer.json b/vendor/symfony/service-contracts/composer.json index fc8674a7..f0586370 100644 --- a/vendor/symfony/service-contracts/composer.json +++ b/vendor/symfony/service-contracts/composer.json @@ -16,23 +16,23 @@ } ], "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, + "suggest": { + "symfony/service-implementation": "" + }, "autoload": { - "psr-4": { "Symfony\\Contracts\\Service\\": "" }, - "exclude-from-classmap": [ - "/Test/" - ] + "psr-4": { "Symfony\\Contracts\\Service\\": "" } }, "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/string/AbstractUnicodeString.php b/vendor/symfony/string/AbstractUnicodeString.php index 673ad8ce..bbb005d6 100644 --- a/vendor/symfony/string/AbstractUnicodeString.php +++ b/vendor/symfony/string/AbstractUnicodeString.php @@ -190,7 +190,7 @@ abstract class AbstractUnicodeString extends AbstractString if (!$compat || !\defined('Normalizer::NFKC_CF')) { $str->string = normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); - $str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $this->string), 'UTF-8'); + $str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $str->string), 'UTF-8'); } else { $str->string = normalizer_normalize($str->string, \Normalizer::NFKC_CF); } diff --git a/vendor/symfony/string/Inflector/EnglishInflector.php b/vendor/symfony/string/Inflector/EnglishInflector.php index dc7b08e7..7027ad38 100644 --- a/vendor/symfony/string/Inflector/EnglishInflector.php +++ b/vendor/symfony/string/Inflector/EnglishInflector.php @@ -238,6 +238,9 @@ final class EnglishInflector implements InflectorInterface // teeth (tooth) ['htoot', 5, true, true, 'teeth'], + // albums (album) + ['mubla', 5, true, true, 'albums'], + // bacteria (bacterium), criteria (criterion), phenomena (phenomenon) ['mu', 2, true, true, 'a'], diff --git a/vendor/symfony/translation-contracts/TranslatableInterface.php b/vendor/symfony/translation-contracts/TranslatableInterface.php index 8554697e..47fd6fa0 100644 --- a/vendor/symfony/translation-contracts/TranslatableInterface.php +++ b/vendor/symfony/translation-contracts/TranslatableInterface.php @@ -16,5 +16,5 @@ namespace Symfony\Contracts\Translation; */ interface TranslatableInterface { - public function trans(TranslatorInterface $translator, ?string $locale = null): string; + public function trans(TranslatorInterface $translator, string $locale = null): string; } diff --git a/vendor/symfony/translation-contracts/TranslatorInterface.php b/vendor/symfony/translation-contracts/TranslatorInterface.php index 7fa69878..018db07e 100644 --- a/vendor/symfony/translation-contracts/TranslatorInterface.php +++ b/vendor/symfony/translation-contracts/TranslatorInterface.php @@ -59,7 +59,7 @@ interface TranslatorInterface * * @throws \InvalidArgumentException If the locale contains invalid characters */ - public function trans(string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string; + public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null): string; /** * Returns the default locale. diff --git a/vendor/symfony/translation-contracts/TranslatorTrait.php b/vendor/symfony/translation-contracts/TranslatorTrait.php index 63f6fb33..e3b0adff 100644 --- a/vendor/symfony/translation-contracts/TranslatorTrait.php +++ b/vendor/symfony/translation-contracts/TranslatorTrait.php @@ -35,7 +35,7 @@ trait TranslatorTrait return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'); } - public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string + public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string { if (null === $id || '' === $id) { return ''; diff --git a/vendor/symfony/translation-contracts/composer.json b/vendor/symfony/translation-contracts/composer.json index 181651e0..213b5cda 100644 --- a/vendor/symfony/translation-contracts/composer.json +++ b/vendor/symfony/translation-contracts/composer.json @@ -27,7 +27,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php index 45397e96..1bd156c2 100644 --- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +++ b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php @@ -89,13 +89,13 @@ class ReflectionCaster // Cannot create ReflectionGenerator based on a terminated Generator try { $reflectionGenerator = new \ReflectionGenerator($c); + + return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested); } catch (\Exception) { $a[Caster::PREFIX_VIRTUAL.'closed'] = true; return $a; } - - return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested); } /** @@ -231,7 +231,7 @@ class ReflectionCaster if (isset($a[$prefix.'returnType'])) { $v = $a[$prefix.'returnType']; $v = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v; - $a[$prefix.'returnType'] = new ClassStub($a[$prefix.'returnType'] instanceof \ReflectionNamedType && $a[$prefix.'returnType']->allowsNull() && 'mixed' !== $v ? '?'.$v : $v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']); + $a[$prefix.'returnType'] = new ClassStub($a[$prefix.'returnType'] instanceof \ReflectionNamedType && $a[$prefix.'returnType']->allowsNull() && !\in_array($v, ['mixed', 'null'], true) ? '?'.$v : $v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']); } if (isset($a[$prefix.'class'])) { $a[$prefix.'class'] = new ClassStub($a[$prefix.'class']); @@ -413,7 +413,7 @@ class ReflectionCaster if (!$type instanceof \ReflectionNamedType) { $signature .= $type.' '; } else { - if ($param->allowsNull() && 'mixed' !== $type->getName()) { + if ($param->allowsNull() && !\in_array($type->getName(), ['mixed', 'null'], true)) { $signature .= '?'; } $signature .= substr(strrchr('\\'.$type->getName(), '\\'), 1).' '; diff --git a/vendor/symfony/var-exporter/ProxyHelper.php b/vendor/symfony/var-exporter/ProxyHelper.php index 51e0d2af..8d19d383 100644 --- a/vendor/symfony/var-exporter/ProxyHelper.php +++ b/vendor/symfony/var-exporter/ProxyHelper.php @@ -219,12 +219,14 @@ final class ProxyHelper $args = ''; $param = null; $parameters = []; + $namespace = $function instanceof \ReflectionMethod ? $function->class : $function->getNamespaceName().'\\'; + $namespace = substr($namespace, 0, strrpos($namespace, '\\') ?: 0); foreach ($function->getParameters() as $param) { $parameters[] = ($param->getAttributes(\SensitiveParameter::class) ? '#[\SensitiveParameter] ' : '') .($withParameterTypes && $param->hasType() ? self::exportType($param).' ' : '') .($param->isPassedByReference() ? '&' : '') .($param->isVariadic() ? '...' : '').'$'.$param->name - .($param->isOptional() && !$param->isVariadic() ? ' = '.self::exportDefault($param) : ''); + .($param->isOptional() && !$param->isVariadic() ? ' = '.self::exportDefault($param, $namespace) : ''); if ($param->isPassedByReference()) { $byRefIndex = 1 + $param->getPosition(); } @@ -311,7 +313,7 @@ final class ProxyHelper return ''; } if (null === $glue) { - return (!$noBuiltin && $type->allowsNull() && 'mixed' !== $name ? '?' : '').$types[0]; + return (!$noBuiltin && $type->allowsNull() && !\in_array($name, ['mixed', 'null'], true) ? '?' : '').$types[0]; } sort($types); @@ -333,7 +335,7 @@ final class ProxyHelper return $propertyScopes; } - private static function exportDefault(\ReflectionParameter $param): string + private static function exportDefault(\ReflectionParameter $param, $namespace): string { $default = rtrim(substr(explode('$'.$param->name.' = ', (string) $param, 2)[1] ?? '', 0, -2)); @@ -347,7 +349,7 @@ final class ProxyHelper $regexp = "/(\"(?:[^\"\\\\]*+(?:\\\\.)*+)*+\"|'(?:[^'\\\\]*+(?:\\\\.)*+)*+')/"; $parts = preg_split($regexp, $default, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); - $regexp = '/([\[\( ]|^)([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z0-9_\x7f-\xff]++)*+)(?!: )/'; + $regexp = '/([\[\( ]|^)([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z0-9_\x7f-\xff]++)*+)(\(?)(?!: )/'; $callback = (false !== strpbrk($default, "\\:('") && $class = $param->getDeclaringClass()) ? fn ($m) => $m[1].match ($m[2]) { 'new', 'false', 'true', 'null' => $m[2], @@ -355,13 +357,13 @@ final class ProxyHelper 'self' => '\\'.$class->name, 'namespace\\parent', 'parent' => ($parent = $class->getParentClass()) ? '\\'.$parent->name : 'parent', - default => '\\'.$m[2], - } + default => self::exportSymbol($m[2], '(' !== $m[3], $namespace), + }.$m[3] : fn ($m) => $m[1].match ($m[2]) { 'new', 'false', 'true', 'null', 'self', 'parent' => $m[2], 'NULL' => 'null', - default => '\\'.$m[2], - }; + default => self::exportSymbol($m[2], '(' !== $m[3], $namespace), + }.$m[3]; return implode('', array_map(fn ($part) => match ($part[0]) { '"' => $part, // for internal classes only @@ -369,4 +371,18 @@ final class ProxyHelper default => preg_replace_callback($regexp, $callback, $part), }, $parts)); } + + private static function exportSymbol(string $symbol, bool $mightBeRootConst, string $namespace): string + { + if (!$mightBeRootConst + || false === ($ns = strrpos($symbol, '\\')) + || substr($symbol, 0, $ns) !== $namespace + || \defined($symbol) + || !\defined(substr($symbol, $ns + 1)) + ) { + return '\\'.$symbol; + } + + return '\\'.substr($symbol, $ns + 1); + } } diff --git a/vendor/vlucas/phpdotenv/composer.json b/vendor/vlucas/phpdotenv/composer.json index fb972d75..46fdbafd 100644 --- a/vendor/vlucas/phpdotenv/composer.json +++ b/vendor/vlucas/phpdotenv/composer.json @@ -16,18 +16,18 @@ } ], "require": { - "php": "^7.2.5 || ^8.0", + "php": "^7.1.3 || ^8.0", "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.2", - "phpoption/phpoption": "^1.9.2", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "graham-campbell/result-type": "^1.0.2", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" }, "require-dev": { "ext-filter": "*", - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit":"^8.5.34 || ^9.6.13 || ^10.4.2" + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "autoload": { "psr-4": { @@ -54,7 +54,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "5.5-dev" } } } diff --git a/vendor/w7corp/easywechat/README.md b/vendor/w7corp/easywechat/README.md index e6c30fa1..b759091d 100644 --- a/vendor/w7corp/easywechat/README.md +++ b/vendor/w7corp/easywechat/README.md @@ -1,4 +1,4 @@ -# [EasyWeChat](https://easywechat.com) +# [EasyWeChat](https://www.easywechat.com) 📦 一个 PHP 微信开发 SDK,开源 SaaS 平台提供商 [微擎](https://www.w7.cc/) 旗下开源产品。 @@ -38,19 +38,19 @@ $config = [ $app = new Application($config); -$server = $app->getServer(); - -$server->with(fn() => "您好!EasyWeChat!"); +$app->getServer()->with(fn() => "您好!EasyWeChat!"); $response = $server->serve(); ``` ## 文档和链接 -[官网](https://easywechat.com) · [讨论](https://github.com/w7corp/easywechat/discussions) · [更新策略](https://github.com/w7corp/easywechat/security/policy) +[官网](https://www.easywechat.com) · [讨论](https://github.com/w7corp/easywechat/discussions) · [更新策略](https://github.com/w7corp/easywechat/security/policy) ## :heart: 支持我 +[![Sponsor me](https://github.com/overtrue/overtrue/blob/master/sponsor-me.svg?raw=true)](https://github.com/sponsors/overtrue) + 如果你喜欢我的项目并想支持它,[点击这里 :heart:](https://github.com/sponsors/overtrue) ## 由 JetBrains 赞助 diff --git a/vendor/w7corp/easywechat/composer.json b/vendor/w7corp/easywechat/composer.json index c3d596e8..a52d0947 100644 --- a/vendor/w7corp/easywechat/composer.json +++ b/vendor/w7corp/easywechat/composer.json @@ -23,16 +23,17 @@ "ext-sodium": "*", "ext-libxml": "*", "ext-curl": "*", + "monolog/monolog": "^2.2", "nyholm/psr7": "^1.5", "nyholm/psr7-server": "^1.0", - "overtrue/socialite": "^3.5.4|^4.0.1", + "overtrue/socialite": "^3.5|^4.0.1", "psr/simple-cache": "^1.0|^2.0|^3.0", "psr/http-client": "^1.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/psr-http-message-bridge": "^2.1.2|^6.4.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/cache": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/psr-http-message-bridge": "^2.1.2", + "symfony/http-client": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", "symfony/polyfill-php81": "^1.25", "thenorthmemory/xml": "^1.0" }, @@ -93,8 +94,7 @@ }, "config": { "allow-plugins": { - "composer/package-versions-deprecated": true, - "php-http/discovery": true + "composer/package-versions-deprecated": true } } } diff --git a/vendor/w7corp/easywechat/docs/.npmrc b/vendor/w7corp/easywechat/docs/.npmrc deleted file mode 100644 index 3e775efb..00000000 --- a/vendor/w7corp/easywechat/docs/.npmrc +++ /dev/null @@ -1 +0,0 @@ -auto-install-peers=true diff --git a/vendor/w7corp/easywechat/docs/.vitepress/theme/components/SponsorsGroup.vue b/vendor/w7corp/easywechat/docs/.vitepress/theme/components/SponsorsGroup.vue index 2b505196..54458001 100644 --- a/vendor/w7corp/easywechat/docs/.vitepress/theme/components/SponsorsGroup.vue +++ b/vendor/w7corp/easywechat/docs/.vitepress/theme/components/SponsorsGroup.vue @@ -1,5 +1,4 @@ - + + @@ -75,11 +96,9 @@ onMounted(async () => { .sponsor-container.platinum { --max-width: 240px; } - .sponsor-container.gold { --max-width: 180px; } - .sponsor-container.silver { --max-width: 140px; } @@ -94,21 +113,17 @@ onMounted(async () => { transition: background-color 0.2s ease; height: calc(var(--max-width) / 2 - 6px); } - .sponsor-item.action { font-size: 11px; color: var(--vt-c-text-3); } - .sponsor-item img { max-width: calc(var(--max-width) - 30px); max-height: calc(var(--max-width) / 2 - 20px); } - .special .sponsor-item { height: 160px; } - .special .sponsor-item img { max-width: 300px; max-height: 150px; @@ -119,23 +134,19 @@ onMounted(async () => { .dark .landing .sponsor-item { background-color: var(--vt-c-bg-soft); } - .aside .sponsor-item img, .landing .sponsor-item img { transition: filter 0.2s ease; } - .dark .aside .sponsor-item img, .dark .landing .sponsor-item img { filter: grayscale(1) invert(1); } - .dark .aside .sponsor-item:hover, .dark .landing .sponsor-item:hover { color: var(--vt-c-indigo); background-color: var(--vt-c-white-mute); } - .dark .sponsor-item:hover img { filter: none; } @@ -145,25 +156,20 @@ onMounted(async () => { --max-width: 110px; column-gap: 1px; } - .aside .sponsor-item { margin: 1px 0; } - .aside .special .sponsor-item { width: 100%; height: 60px; } - .aside .special .sponsor-item img { width: 120px; } - .aside .platinum .sponsor-item { width: 111px; height: 50px; } - .aside .platinum .sponsor-item img { max-width: 88px; } @@ -173,11 +179,9 @@ onMounted(async () => { .sponsor-container.platinum { --max-width: 180px; } - .sponsor-container.gold { --max-width: 140px; } - .sponsor-container.silver { --max-width: 120px; } @@ -187,11 +191,9 @@ onMounted(async () => { .sponsor-container.platinum { --max-width: 150px; } - .sponsor-container.gold { --max-width: 120px; } - .sponsor-container.silver { --max-width: 100px; } diff --git a/vendor/w7corp/easywechat/docs/package.json b/vendor/w7corp/easywechat/docs/package.json index 614370ae..078544f0 100644 --- a/vendor/w7corp/easywechat/docs/package.json +++ b/vendor/w7corp/easywechat/docs/package.json @@ -6,19 +6,20 @@ "preinstall": "npx only-allow pnpm" }, "dependencies": { - "autoprefixer": "^10.4.17", + "@overtrue/easywechat-theme": "^1.0.5", + "autoprefixer": "^10.4.7", "clipboard": "^2.0.11", "dynamics.js": "^1.1.5", - "gsap": "^3.12.5", - "tailwindcss": "^3.4.1" + "gsap": "^3.10.4", + "postcss": "^8.4.14", + "postcss-import": "^14.1.0", + "tailwindcss": "^3.1.4", + "vitepress": "1.0.0-alpha.4", + "vue": "^3.2.37" }, "devDependencies": { "@types/markdown-it": "^12.2.3", - "@types/node": "^16.18.74", - "postcss": "^8.4.33", - "postcss-import": "^14.1.0", - "terser": "^5.27.0", - "vitepress": "1.0.0-rc.39" + "@types/node": "^16.11.41" }, "pnpm": { "peerDependencyRules": { diff --git a/vendor/w7corp/easywechat/docs/pnpm-lock.yaml b/vendor/w7corp/easywechat/docs/pnpm-lock.yaml index 70c19747..497b7508 100644 --- a/vendor/w7corp/easywechat/docs/pnpm-lock.yaml +++ b/vendor/w7corp/easywechat/docs/pnpm-lock.yaml @@ -1,242 +1,179 @@ -lockfileVersion: '6.0' +lockfileVersion: 5.4 -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false +specifiers: + '@overtrue/easywechat-theme': ^1.0.5 + '@types/markdown-it': ^12.2.3 + '@types/node': ^16.11.41 + autoprefixer: ^10.4.7 + clipboard: ^2.0.11 + dynamics.js: ^1.1.5 + gsap: ^3.10.4 + postcss: ^8.4.14 + postcss-import: ^14.1.0 + tailwindcss: ^3.1.4 + vitepress: 1.0.0-alpha.4 + vue: ^3.2.37 dependencies: - autoprefixer: - specifier: ^10.4.17 - version: 10.4.17(postcss@8.4.33) - clipboard: - specifier: ^2.0.11 - version: 2.0.11 - dynamics.js: - specifier: ^1.1.5 - version: 1.1.5 - gsap: - specifier: ^3.12.5 - version: 3.12.5 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.1 + '@overtrue/easywechat-theme': 1.0.5_vue@3.2.37 + autoprefixer: 10.4.7_postcss@8.4.14 + clipboard: 2.0.11 + dynamics.js: 1.1.5 + gsap: 3.10.4 + postcss: 8.4.14 + postcss-import: 14.1.0_postcss@8.4.14 + tailwindcss: 3.1.4 + vitepress: 1.0.0-alpha.4 + vue: 3.2.37 devDependencies: - '@types/markdown-it': - specifier: ^12.2.3 - version: 12.2.3 - '@types/node': - specifier: ^16.18.74 - version: 16.18.74 - postcss: - specifier: ^8.4.33 - version: 8.4.33 - postcss-import: - specifier: ^14.1.0 - version: 14.1.0(postcss@8.4.33) - terser: - specifier: ^5.27.0 - version: 5.27.0 - vitepress: - specifier: 1.0.0-rc.39 - version: 1.0.0-rc.39(@types/node@16.18.74)(postcss@8.4.33)(search-insights@2.13.0)(terser@5.27.0) + '@types/markdown-it': 12.2.3 + '@types/node': 16.11.41 packages: - /@algolia/autocomplete-core@1.9.3(algoliasearch@4.22.1)(search-insights@2.13.0): - resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + /@algolia/autocomplete-core/1.6.3: + resolution: {integrity: sha512-dqQqRt01fX3YuVFrkceHsoCnzX0bLhrrg8itJI1NM68KjrPYQPYsE+kY8EZTCM4y8VDnhqJErR73xe/ZsV+qAA==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(algoliasearch@4.22.1)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.22.1) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - dev: true - - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(algoliasearch@4.22.1)(search-insights@2.13.0): - resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} - peerDependencies: - search-insights: '>= 1 < 3' - dependencies: - '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.22.1) - search-insights: 2.13.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - dev: true - - /@algolia/autocomplete-preset-algolia@1.9.3(algoliasearch@4.22.1): - resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true - dependencies: - '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.22.1) - algoliasearch: 4.22.1 - dev: true - - /@algolia/autocomplete-shared@1.9.3(algoliasearch@4.22.1): - resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true - dependencies: - algoliasearch: 4.22.1 - dev: true - - /@algolia/cache-browser-local-storage@4.22.1: - resolution: {integrity: sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==} - dependencies: - '@algolia/cache-common': 4.22.1 - dev: true - - /@algolia/cache-common@4.22.1: - resolution: {integrity: sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==} - dev: true - - /@algolia/cache-in-memory@4.22.1: - resolution: {integrity: sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==} - dependencies: - '@algolia/cache-common': 4.22.1 - dev: true - - /@algolia/client-account@4.22.1: - resolution: {integrity: sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==} - dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/client-search': 4.22.1 - '@algolia/transporter': 4.22.1 - dev: true - - /@algolia/client-analytics@4.22.1: - resolution: {integrity: sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==} - dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/client-search': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 - dev: true - - /@algolia/client-common@4.22.1: - resolution: {integrity: sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==} - dependencies: - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 - dev: true - - /@algolia/client-personalization@4.22.1: - resolution: {integrity: sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==} - dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 - dev: true - - /@algolia/client-search@4.22.1: - resolution: {integrity: sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==} - dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 - dev: true - - /@algolia/logger-common@4.22.1: - resolution: {integrity: sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==} - dev: true - - /@algolia/logger-console@4.22.1: - resolution: {integrity: sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==} - dependencies: - '@algolia/logger-common': 4.22.1 - dev: true - - /@algolia/requester-browser-xhr@4.22.1: - resolution: {integrity: sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==} - dependencies: - '@algolia/requester-common': 4.22.1 - dev: true - - /@algolia/requester-common@4.22.1: - resolution: {integrity: sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==} - dev: true - - /@algolia/requester-node-http@4.22.1: - resolution: {integrity: sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==} - dependencies: - '@algolia/requester-common': 4.22.1 - dev: true - - /@algolia/transporter@4.22.1: - resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} - dependencies: - '@algolia/cache-common': 4.22.1 - '@algolia/logger-common': 4.22.1 - '@algolia/requester-common': 4.22.1 - dev: true - - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} + '@algolia/autocomplete-shared': 1.6.3 dev: false - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - dev: true + /@algolia/autocomplete-shared/1.6.3: + resolution: {integrity: sha512-UV46bnkTztyADFaETfzFC5ryIdGVb2zpAoYgu0tfcuYWjhg1KbLXveFffZIrGVoboqmAk1b+jMrl6iCja1i3lg==} + dev: false - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true + /@algolia/cache-browser-local-storage/4.13.1: + resolution: {integrity: sha512-UAUVG2PEfwd/FfudsZtYnidJ9eSCpS+LW9cQiesePQLz41NAcddKxBak6eP2GErqyFagSlnVXe/w2E9h2m2ttg==} + dependencies: + '@algolia/cache-common': 4.13.1 + dev: false - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + /@algolia/cache-common/4.13.1: + resolution: {integrity: sha512-7Vaf6IM4L0Jkl3sYXbwK+2beQOgVJ0mKFbz/4qSxKd1iy2Sp77uTAazcX+Dlexekg1fqGUOSO7HS4Sx47ZJmjA==} + dev: false + + /@algolia/cache-in-memory/4.13.1: + resolution: {integrity: sha512-pZzybCDGApfA/nutsFK1P0Sbsq6fYJU3DwIvyKg4pURerlJM4qZbB9bfLRef0FkzfQu7W11E4cVLCIOWmyZeuQ==} + dependencies: + '@algolia/cache-common': 4.13.1 + dev: false + + /@algolia/client-account/4.13.1: + resolution: {integrity: sha512-TFLiZ1KqMiir3FNHU+h3b0MArmyaHG+eT8Iojio6TdpeFcAQ1Aiy+2gb3SZk3+pgRJa/BxGmDkRUwE5E/lv3QQ==} + dependencies: + '@algolia/client-common': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/transporter': 4.13.1 + dev: false + + /@algolia/client-analytics/4.13.1: + resolution: {integrity: sha512-iOS1JBqh7xaL5x00M5zyluZ9+9Uy9GqtYHv/2SMuzNW1qP7/0doz1lbcsP3S7KBbZANJTFHUOfuqyRLPk91iFA==} + dependencies: + '@algolia/client-common': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 + dev: false + + /@algolia/client-common/4.13.1: + resolution: {integrity: sha512-LcDoUE0Zz3YwfXJL6lJ2OMY2soClbjrrAKB6auYVMNJcoKZZ2cbhQoFR24AYoxnGUYBER/8B+9sTBj5bj/Gqbg==} + dependencies: + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 + dev: false + + /@algolia/client-personalization/4.13.1: + resolution: {integrity: sha512-1CqrOW1ypVrB4Lssh02hP//YxluoIYXAQCpg03L+/RiXJlCs+uIqlzC0ctpQPmxSlTK6h07kr50JQoYH/TIM9w==} + dependencies: + '@algolia/client-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 + dev: false + + /@algolia/client-search/4.13.1: + resolution: {integrity: sha512-YQKYA83MNRz3FgTNM+4eRYbSmHi0WWpo019s5SeYcL3HUan/i5R09VO9dk3evELDFJYciiydSjbsmhBzbpPP2A==} + dependencies: + '@algolia/client-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 + dev: false + + /@algolia/logger-common/4.13.1: + resolution: {integrity: sha512-L6slbL/OyZaAXNtS/1A8SAbOJeEXD5JcZeDCPYDqSTYScfHu+2ePRTDMgUTY4gQ7HsYZ39N1LujOd8WBTmM2Aw==} + dev: false + + /@algolia/logger-console/4.13.1: + resolution: {integrity: sha512-7jQOTftfeeLlnb3YqF8bNgA2GZht7rdKkJ31OCeSH2/61haO0tWPoNRjZq9XLlgMQZH276pPo0NdiArcYPHjCA==} + dependencies: + '@algolia/logger-common': 4.13.1 + dev: false + + /@algolia/requester-browser-xhr/4.13.1: + resolution: {integrity: sha512-oa0CKr1iH6Nc7CmU6RE7TnXMjHnlyp7S80pP/LvZVABeJHX3p/BcSCKovNYWWltgTxUg0U1o+2uuy8BpMKljwA==} + dependencies: + '@algolia/requester-common': 4.13.1 + dev: false + + /@algolia/requester-common/4.13.1: + resolution: {integrity: sha512-eGVf0ID84apfFEuXsaoSgIxbU3oFsIbz4XiotU3VS8qGCJAaLVUC5BUJEkiFENZIhon7hIB4d0RI13HY4RSA+w==} + dev: false + + /@algolia/requester-node-http/4.13.1: + resolution: {integrity: sha512-7C0skwtLdCz5heKTVe/vjvrqgL/eJxmiEjHqXdtypcE5GCQCYI15cb+wC4ytYioZDMiuDGeVYmCYImPoEgUGPw==} + dependencies: + '@algolia/requester-common': 4.13.1 + dev: false + + /@algolia/transporter/4.13.1: + resolution: {integrity: sha512-pICnNQN7TtrcYJqqPEXByV8rJ8ZRU2hCiIKLTLRyNpghtQG3VAFk6fVtdzlNfdUGZcehSKGarPIZEHlQXnKjgw==} + dependencies: + '@algolia/cache-common': 4.13.1 + '@algolia/logger-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + dev: false + + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/parser/7.18.5: + resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 - dev: true + '@babel/types': 7.18.4 + dev: false - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + /@babel/types/7.18.4: + resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 - dev: true + dev: false - /@docsearch/css@3.5.2: - resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} - dev: true + /@docsearch/css/3.1.0: + resolution: {integrity: sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA==} + dev: false - /@docsearch/js@3.5.2(search-insights@2.13.0): - resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==} + /@docsearch/js/3.1.0: + resolution: {integrity: sha512-5XSK+xbP0hcTIp54MECqxkWLs6kf7Ug4nWdxWNtx8cUpLiFNFnKXDxCb35wnyNpjukmrx7Q9DkO5tFFsmNVxng==} dependencies: - '@docsearch/react': 3.5.2(search-insights@2.13.0) - preact: 10.19.3 + '@docsearch/react': 3.1.0 + preact: 10.8.2 transitivePeerDependencies: - - '@algolia/client-search' - '@types/react' - react - react-dom - - search-insights - dev: true + dev: false - /@docsearch/react@3.5.2(search-insights@2.13.0): - resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} + /@docsearch/react/3.1.0: + resolution: {integrity: sha512-bjB6ExnZzf++5B7Tfoi6UXgNwoUnNOfZ1NyvnvPhWgCMy5V/biAtLL4o7owmZSYdAKeFSvZ5Lxm0is4su/dBWg==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' peerDependenciesMeta: '@types/react': optional: true @@ -244,270 +181,13 @@ packages: optional: true react-dom: optional: true - search-insights: - optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(algoliasearch@4.22.1)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(algoliasearch@4.22.1) - '@docsearch/css': 3.5.2 - algoliasearch: 4.22.1 - search-insights: 2.13.0 - transitivePeerDependencies: - - '@algolia/client-search' - dev: true - - /@esbuild/aix-ppc64@0.19.11: - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64@0.19.11: - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.19.11: - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.19.11: - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.19.11: - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.19.11: - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.19.11: - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.19.11: - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.19.11: - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.19.11: - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.19.11: - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.19.11: - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.19.11: - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.19.11: - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.19.11: - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.19.11: - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.19.11: - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.19.11: - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.19.11: - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.19.11: - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.19.11: - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.19.11: - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.19.11: - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + '@algolia/autocomplete-core': 1.6.3 + '@docsearch/css': 3.1.0 + algoliasearch: 4.13.1 dev: false - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - /@nodelib/fs.scandir@2.1.5: + /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -515,457 +195,336 @@ packages: run-parallel: 1.2.0 dev: false - /@nodelib/fs.stat@2.0.5: + /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: false - /@nodelib/fs.walk@1.2.8: + /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.16.0 + fastq: 1.13.0 dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true + /@overtrue/easywechat-theme/1.0.5_vue@3.2.37: + resolution: {integrity: sha512-lAhge9nsO1rmfstWMd30qF8vWt3x2SuA1rc/i6FbctvGv7NzoN5p4Z4gIfxutcMiVJqdWYsCTFlTXH4bM5sPxg==} + dependencies: + '@docsearch/css': 3.1.0 + '@docsearch/js': 3.1.0 + '@vueuse/core': 7.7.1_vue@3.2.37 + body-scroll-lock: 3.1.5 + normalize.css: 8.0.1 + shiki: 0.9.15 + transitivePeerDependencies: + - '@types/react' + - '@vue/composition-api' + - react + - react-dom + - vue dev: false - optional: true - /@rollup/rollup-android-arm-eabi@4.9.6: - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.9.6: - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.9.6: - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-x64@4.9.6: - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.9.6: - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-gnu@4.9.6: - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-musl@4.9.6: - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-arm64-msvc@4.9.6: - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.9.6: - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.9.6: - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@types/linkify-it/3.0.2: + resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true - /@types/linkify-it@3.0.5: - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - dev: true - - /@types/markdown-it@12.2.3: + /@types/markdown-it/12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 + '@types/linkify-it': 3.0.2 + '@types/mdurl': 1.0.2 dev: true - /@types/markdown-it@13.0.7: - resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 + /@types/mdurl/1.0.2: + resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: true - /@types/mdurl@1.0.5: - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + /@types/node/16.11.41: + resolution: {integrity: sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ==} dev: true - /@types/node@16.18.74: - resolution: {integrity: sha512-eEn8RkzZFcT0gb8qyi0CcfSOQnLE+NbGLIIaxGGmjn/N35v/C3M8ohxcpSlNlCv+H8vPpMGmrGDdCkzr8xu2tQ==} - dev: true + /@types/web-bluetooth/0.0.14: + resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} + dev: false - /@types/web-bluetooth@0.0.20: - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - dev: true - - /@vitejs/plugin-vue@5.0.3(vite@5.0.12)(vue@3.4.15): - resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} - engines: {node: ^18.0.0 || >=20.0.0} + /@vitejs/plugin-vue/2.3.3_vite@2.9.12+vue@3.2.37: + resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} + engines: {node: '>=12.0.0'} peerDependencies: - vite: ^5.0.0 + vite: ^2.5.10 vue: ^3.2.25 dependencies: - vite: 5.0.12(@types/node@16.18.74)(terser@5.27.0) - vue: 3.4.15 - dev: true + vite: 2.9.12 + vue: 3.2.37 + dev: false - /@vue/compiler-core@3.4.15: - resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} + /@vue/compiler-core/3.2.37: + resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==} dependencies: - '@babel/parser': 7.23.6 - '@vue/shared': 3.4.15 - entities: 4.5.0 + '@babel/parser': 7.18.5 + '@vue/shared': 3.2.37 estree-walker: 2.0.2 - source-map-js: 1.0.2 - dev: true + source-map: 0.6.1 + dev: false - /@vue/compiler-dom@3.4.15: - resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} + /@vue/compiler-dom/3.2.37: + resolution: {integrity: sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==} dependencies: - '@vue/compiler-core': 3.4.15 - '@vue/shared': 3.4.15 - dev: true + '@vue/compiler-core': 3.2.37 + '@vue/shared': 3.2.37 + dev: false - /@vue/compiler-sfc@3.4.15: - resolution: {integrity: sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==} + /@vue/compiler-sfc/3.2.37: + resolution: {integrity: sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==} dependencies: - '@babel/parser': 7.23.6 - '@vue/compiler-core': 3.4.15 - '@vue/compiler-dom': 3.4.15 - '@vue/compiler-ssr': 3.4.15 - '@vue/shared': 3.4.15 + '@babel/parser': 7.18.5 + '@vue/compiler-core': 3.2.37 + '@vue/compiler-dom': 3.2.37 + '@vue/compiler-ssr': 3.2.37 + '@vue/reactivity-transform': 3.2.37 + '@vue/shared': 3.2.37 estree-walker: 2.0.2 - magic-string: 0.30.5 - postcss: 8.4.33 - source-map-js: 1.0.2 - dev: true + magic-string: 0.25.9 + postcss: 8.4.14 + source-map: 0.6.1 + dev: false - /@vue/compiler-ssr@3.4.15: - resolution: {integrity: sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==} + /@vue/compiler-ssr/3.2.37: + resolution: {integrity: sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==} dependencies: - '@vue/compiler-dom': 3.4.15 - '@vue/shared': 3.4.15 - dev: true + '@vue/compiler-dom': 3.2.37 + '@vue/shared': 3.2.37 + dev: false - /@vue/devtools-api@6.5.1: - resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} - dev: true + /@vue/devtools-api/6.1.4: + resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==} + dev: false - /@vue/reactivity@3.4.15: - resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==} + /@vue/reactivity-transform/3.2.37: + resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} dependencies: - '@vue/shared': 3.4.15 - dev: true + '@babel/parser': 7.18.5 + '@vue/compiler-core': 3.2.37 + '@vue/shared': 3.2.37 + estree-walker: 2.0.2 + magic-string: 0.25.9 + dev: false - /@vue/runtime-core@3.4.15: - resolution: {integrity: sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==} + /@vue/reactivity/3.2.37: + resolution: {integrity: sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==} dependencies: - '@vue/reactivity': 3.4.15 - '@vue/shared': 3.4.15 - dev: true + '@vue/shared': 3.2.37 + dev: false - /@vue/runtime-dom@3.4.15: - resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==} + /@vue/runtime-core/3.2.37: + resolution: {integrity: sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==} dependencies: - '@vue/runtime-core': 3.4.15 - '@vue/shared': 3.4.15 - csstype: 3.1.3 - dev: true + '@vue/reactivity': 3.2.37 + '@vue/shared': 3.2.37 + dev: false - /@vue/server-renderer@3.4.15(vue@3.4.15): - resolution: {integrity: sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==} + /@vue/runtime-dom/3.2.37: + resolution: {integrity: sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==} + dependencies: + '@vue/runtime-core': 3.2.37 + '@vue/shared': 3.2.37 + csstype: 2.6.20 + dev: false + + /@vue/server-renderer/3.2.37_vue@3.2.37: + resolution: {integrity: sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==} peerDependencies: - vue: 3.4.15 + vue: 3.2.37 dependencies: - '@vue/compiler-ssr': 3.4.15 - '@vue/shared': 3.4.15 - vue: 3.4.15 - dev: true + '@vue/compiler-ssr': 3.2.37 + '@vue/shared': 3.2.37 + vue: 3.2.37 + dev: false - /@vue/shared@3.4.15: - resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} - dev: true + /@vue/shared/3.2.37: + resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==} + dev: false - /@vueuse/core@10.7.2(vue@3.4.15): - resolution: {integrity: sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==} - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.7.2 - '@vueuse/shared': 10.7.2(vue@3.4.15) - vue-demi: 0.14.6(vue@3.4.15) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /@vueuse/integrations@10.7.2(focus-trap@7.5.4)(vue@3.4.15): - resolution: {integrity: sha512-+u3RLPFedjASs5EKPc69Ge49WNgqeMfSxFn+qrQTzblPXZg6+EFzhjarS5edj2qAf6xQ93f95TUxRwKStXj/sQ==} + /@vueuse/core/7.7.1_vue@3.2.37: + resolution: {integrity: sha512-PRRgbATMpoeUmkCEBtUeJgOwtew8s+4UsEd+Pm7MhkjL2ihCNrSqxNVtM6NFE4uP2sWnkGcZpCjPuNSxowJ1Ow==} peerDependencies: - async-validator: '*' - axios: '*' - change-case: '*' - drauu: '*' - focus-trap: '*' - fuse.js: '*' - idb-keyval: '*' - jwt-decode: '*' - nprogress: '*' - qrcode: '*' - sortablejs: '*' - universal-cookie: '*' + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 peerDependenciesMeta: - async-validator: + '@vue/composition-api': optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: + vue: optional: true dependencies: - '@vueuse/core': 10.7.2(vue@3.4.15) - '@vueuse/shared': 10.7.2(vue@3.4.15) - focus-trap: 7.5.4 - vue-demi: 0.14.6(vue@3.4.15) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true + '@vueuse/shared': 7.7.1_vue@3.2.37 + vue: 3.2.37 + vue-demi: 0.13.1_vue@3.2.37 + dev: false - /@vueuse/metadata@10.7.2: - resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==} - dev: true - - /@vueuse/shared@10.7.2(vue@3.4.15): - resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==} + /@vueuse/core/8.7.5_vue@3.2.37: + resolution: {integrity: sha512-tqgzeZGoZcXzoit4kOGLWJibDMLp0vdm6ZO41SSUQhkhtrPhAg6dbIEPiahhUu6sZAmSYvVrZgEr5aKD51nrLA==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true dependencies: - vue-demi: 0.14.6(vue@3.4.15) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.7.5 + '@vueuse/shared': 8.7.5_vue@3.2.37 + vue: 3.2.37 + vue-demi: 0.13.1_vue@3.2.37 + dev: false - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + /@vueuse/metadata/8.7.5: + resolution: {integrity: sha512-emJZKRQSaEnVqmlu39NpNp8iaW+bPC2kWykWoWOZMSlO/0QVEmO/rt8A5VhOEJTKLX3vwTevqbiRy9WJRwVOQg==} + dev: false + + /@vueuse/shared/7.7.1_vue@3.2.37: + resolution: {integrity: sha512-rN2qd22AUl7VdBxihagWyhUNHCyVk9IpvBTTfHoLH9G7rGE552X1f+zeCfehuno0zXif13jPw+icW/wn2a0rnQ==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + vue: 3.2.37 + vue-demi: 0.13.1_vue@3.2.37 + dev: false + + /@vueuse/shared/8.7.5_vue@3.2.37: + resolution: {integrity: sha512-THXPvMBFmg6Gf6AwRn/EdTh2mhqwjGsB2Yfp374LNQSQVKRHtnJ0I42bsZTn7nuEliBxqUrGQm/lN6qUHmhJLw==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + vue: 3.2.37 + vue-demi: 0.13.1_vue@3.2.37 + dev: false + + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: false + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - dev: true + dev: false - /algoliasearch@4.22.1: - resolution: {integrity: sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==} + /algoliasearch/4.13.1: + resolution: {integrity: sha512-dtHUSE0caWTCE7liE1xaL+19AFf6kWEcyn76uhcitWpntqvicFHXKFoZe5JJcv9whQOTRM6+B8qJz6sFj+rDJA==} dependencies: - '@algolia/cache-browser-local-storage': 4.22.1 - '@algolia/cache-common': 4.22.1 - '@algolia/cache-in-memory': 4.22.1 - '@algolia/client-account': 4.22.1 - '@algolia/client-analytics': 4.22.1 - '@algolia/client-common': 4.22.1 - '@algolia/client-personalization': 4.22.1 - '@algolia/client-search': 4.22.1 - '@algolia/logger-common': 4.22.1 - '@algolia/logger-console': 4.22.1 - '@algolia/requester-browser-xhr': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/requester-node-http': 4.22.1 - '@algolia/transporter': 4.22.1 - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + '@algolia/cache-browser-local-storage': 4.13.1 + '@algolia/cache-common': 4.13.1 + '@algolia/cache-in-memory': 4.13.1 + '@algolia/client-account': 4.13.1 + '@algolia/client-analytics': 4.13.1 + '@algolia/client-common': 4.13.1 + '@algolia/client-personalization': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/logger-common': 4.13.1 + '@algolia/logger-console': 4.13.1 + '@algolia/requester-browser-xhr': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/requester-node-http': 4.13.1 + '@algolia/transporter': 4.13.1 dev: false - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 dev: false - /arg@5.0.2: + /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: false - /autoprefixer@10.4.17(postcss@8.4.33): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + /autoprefixer/10.4.7_postcss@8.4.14: + resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001579 - fraction.js: 4.3.7 + browserslist: 4.21.0 + caniuse-lite: 1.0.30001359 + fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.33 + postcss: 8.4.14 postcss-value-parser: 4.2.0 dev: false - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /binary-extensions@2.2.0: + /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: false - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 + /body-scroll-lock/3.1.5: + resolution: {integrity: sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==} dev: false - /braces@3.0.2: + /body-scroll-lock/4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} + dev: false + + /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: false - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + /browserslist/4.21.0: + resolution: {integrity: sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001579 - electron-to-chromium: 1.4.640 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + caniuse-lite: 1.0.30001359 + electron-to-chromium: 1.4.169 + node-releases: 2.0.5 + update-browserslist-db: 1.0.4_browserslist@4.21.0 dev: false - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /camelcase-css@2.0.1: + /camelcase-css/2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: false - /caniuse-lite@1.0.30001579: - resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + /caniuse-lite/1.0.30001359: + resolution: {integrity: sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==} dev: false - /chokidar@3.5.3: + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: - anymatch: 3.1.3 + anymatch: 3.1.2 braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 @@ -973,10 +532,10 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.3 + fsevents: 2.3.2 dev: false - /clipboard@2.0.11: + /clipboard/2.0.11: resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} dependencies: good-listener: 1.2.2 @@ -984,124 +543,273 @@ packages: tiny-emitter: 2.1.0 dev: false - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name@1.1.4: + /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: false - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /cssesc@3.0.0: + /cssesc/3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: true + /csstype/2.6.20: + resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} + dev: false - /delegate@3.2.0: + /defined/1.0.0: + resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=} + dev: false + + /delegate/3.2.0: resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} dev: false - /didyoumean@1.2.2: + /detective/5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.0 + minimist: 1.2.6 + dev: false + + /didyoumean/1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /dlv@1.1.3: + /dlv/1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false - /dynamics.js@1.1.5: - resolution: {integrity: sha512-c+LHNccaJS67T4Jfk9b/5CwYsZCHmc10+MplWB8WPFyqTMEqOf8MI56Rg0JRILWjtXnjuBO7xmrNevNnPX+NHg==} + /dynamics.js/1.1.5: + resolution: {integrity: sha1-uQvcM2Bc7+ZSuEFucB95v27vzjI=} dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + /electron-to-chromium/1.4.169: + resolution: {integrity: sha512-Yb7UFva1sLlAaRyCkgoFF3qWvwZacFDtsGKi44rZsk8vnhL0DMhsUdhI4Dz9CCJQfftncDMGSI3AYiDtg8mD/w==} dev: false - /electron-to-chromium@1.4.640: - resolution: {integrity: sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==} + /esbuild-android-64/0.14.47: + resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: false + optional: true - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /esbuild-android-arm64/0.14.47: + resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: false + optional: true - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /esbuild-darwin-64/0.14.47: + resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: false + optional: true - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true + /esbuild-darwin-arm64/0.14.47: + resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + /esbuild-freebsd-64/0.14.47: + resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-arm64/0.14.47: + resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-32/0.14.47: + resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-64/0.14.47: + resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm/0.14.47: + resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm64/0.14.47: + resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-mips64le/0.14.47: + resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-ppc64le/0.14.47: + resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-riscv64/0.14.47: + resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-s390x/0.14.47: + resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-netbsd-64/0.14.47: + resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-openbsd-64/0.14.47: + resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-sunos-64/0.14.47: + resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-32/0.14.47: + resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-64/0.14.47: + resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-arm64/0.14.47: + resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild/0.14.47: + resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - dev: true + esbuild-android-64: 0.14.47 + esbuild-android-arm64: 0.14.47 + esbuild-darwin-64: 0.14.47 + esbuild-darwin-arm64: 0.14.47 + esbuild-freebsd-64: 0.14.47 + esbuild-freebsd-arm64: 0.14.47 + esbuild-linux-32: 0.14.47 + esbuild-linux-64: 0.14.47 + esbuild-linux-arm: 0.14.47 + esbuild-linux-arm64: 0.14.47 + esbuild-linux-mips64le: 0.14.47 + esbuild-linux-ppc64le: 0.14.47 + esbuild-linux-riscv64: 0.14.47 + esbuild-linux-s390x: 0.14.47 + esbuild-netbsd-64: 0.14.47 + esbuild-openbsd-64: 0.14.47 + esbuild-sunos-64: 0.14.47 + esbuild-windows-32: 0.14.47 + esbuild-windows-64: 0.14.47 + esbuild-windows-arm64: 0.14.47 + dev: false - /escalade@3.1.1: + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: false - /estree-walker@2.0.2: + /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true + dev: false - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + /fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1111,177 +819,117 @@ packages: micromatch: 4.0.5 dev: false - /fastq@1.16.0: - resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 dev: false - /fill-range@7.0.1: + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: false - /focus-trap@7.5.4: - resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} - dependencies: - tabbable: 6.2.0 - dev: true - - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: false - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: false optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: false - /glob-parent@5.1.2: + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: false - /glob-parent@6.0.2: + /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: false - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - dev: false - - /good-listener@1.2.2: - resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} + /good-listener/1.2.2: + resolution: {integrity: sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=} dependencies: delegate: 3.2.0 dev: false - /gsap@3.12.5: - resolution: {integrity: sha512-srBfnk4n+Oe/ZnMIOXt3gT605BX9x5+rh/prT2F1SsNJsU1XuMiP0E2aptW481OnonOGACZWBqseH5Z7csHxhQ==} + /gsap/3.10.4: + resolution: {integrity: sha512-6QatdkKxXCMfvCW4rM++0RqyLQAzFX5nwl3yHS0XPgkZBkiSEY3VZVbMltrdtsbER/xZonLtyHt684wRp4erlQ==} dev: false - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: - function-bind: 1.1.2 + function-bind: 1.1.1 + dev: false - /is-binary-path@2.1.0: + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: false - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: - hasown: 2.0.0 + has: 1.0.3 + dev: false - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + /is-extglob/2.1.1: + resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} dev: false - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-glob@4.0.3: + /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: false - /is-number@7.0.0: + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: false - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /jsonc-parser/3.0.0: + resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} dev: false - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: false - - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - dev: false - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + /lilconfig/2.0.5: + resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} engines: {node: '>=10'} dev: false - /lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} - engines: {node: '>=14'} - dev: false - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} - engines: {node: 14 || >=16.14} - dev: false - - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + sourcemap-codec: 1.4.8 + dev: false - /mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - dev: true - - /merge2@1.4.1: + /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: false - /micromatch@4.0.5: + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -1289,129 +937,82 @@ packages: picomatch: 2.3.1 dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: false - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: false - - /minisearch@6.3.0: - resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} - dev: true - - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: false - /normalize-path@3.0.0: + /node-releases/2.0.5: + resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} + dev: false + + /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: false - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + /normalize-range/0.1.2: + resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} engines: {node: '>=0.10.0'} dev: false - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + /normalize.css/8.0.1: + resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} dev: false - /object-hash@3.0.0: + /object-hash/3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} dev: false - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-parse@1.0.7: + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.1.0 - minipass: 7.0.4 dev: false - /picocolors@1.0.0: + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false - /picomatch@2.3.1: + /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: false - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + /pify/2.3.0: + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} engines: {node: '>=0.10.0'} - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} dev: false - /postcss-import@14.1.0(postcss@8.4.33): + /postcss-import/14.1.0_postcss@8.4.14: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.33 + postcss: 8.4.14 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.8 - dev: true - - /postcss-import@15.1.0(postcss@8.4.33): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.1 dev: false - /postcss-js@4.0.1(postcss@8.4.33): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + /postcss-js/4.0.0_postcss@8.4.14: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: - postcss: ^8.4.21 + postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.33 + postcss: 8.4.14 dev: false - /postcss-load-config@4.0.2(postcss@8.4.33): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} + /postcss-load-config/3.1.4_postcss@8.4.14: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} peerDependencies: postcss: '>=8.0.9' ts-node: '>=9.0.0' @@ -1421,398 +1022,255 @@ packages: ts-node: optional: true dependencies: - lilconfig: 3.0.0 - postcss: 8.4.33 - yaml: 2.3.4 + lilconfig: 2.0.5 + postcss: 8.4.14 + yaml: 1.10.2 dev: false - /postcss-nested@6.0.1(postcss@8.4.33): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + /postcss-nested/5.0.6_postcss@8.4.14: + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 dev: false - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 dev: false - /postcss-value-parser@4.2.0: + /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss/8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.7 + nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: false - /preact@10.19.3: - resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} - dev: true + /preact/10.8.2: + resolution: {integrity: sha512-AKGt0BsDSiAYzVS78jZ9qRwuorY2CoSZtf1iOC6gLb/3QyZt+fLT09aYJBjRc/BEcRc4j+j3ggERMdNE43i1LQ==} + dev: false - /queue-microtask@1.2.3: + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false + + /read-cache/1.0.0: + resolution: {integrity: sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=} dependencies: pify: 2.3.0 + dev: false - /readdirp@3.6.0: + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: false - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false - /reusify@1.0.4: + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false - /rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + /rollup/2.75.7: + resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==} + engines: {node: '>=10.0.0'} hasBin: true - dependencies: - '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 - fsevents: 2.3.3 - dev: true + fsevents: 2.3.2 + dev: false - /run-parallel@1.2.0: + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: false - /search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} - dev: true - - /select@1.1.2: - resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + /select/1.1.2: + resolution: {integrity: sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=} dev: false - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + /shiki/0.10.1: + resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} dependencies: - shebang-regex: 3.0.0 + jsonc-parser: 3.0.0 + vscode-oniguruma: 1.6.2 + vscode-textmate: 5.2.0 dev: false - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /shikiji-core@0.9.19: - resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} - dev: true - - /shikiji-transformers@0.9.19: - resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==} + /shiki/0.9.15: + resolution: {integrity: sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==} dependencies: - shikiji: 0.9.19 - dev: true - - /shikiji@0.9.19: - resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==} - dependencies: - shikiji-core: 0.9.19 - dev: true - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + jsonc-parser: 3.0.0 + vscode-oniguruma: 1.6.2 + vscode-textmate: 5.2.0 dev: false - /source-map-js@1.0.2: + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + dev: false - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: + /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 dev: false - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: false - - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 10.3.10 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: false - - /supports-preserve-symlinks-flag@1.0.0: + /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: false - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - dev: true - - /tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} - engines: {node: '>=14.0.0'} + /tailwindcss/3.1.4: + resolution: {integrity: sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==} + engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.2 + fast-glob: 3.2.11 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 + lilconfig: 2.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.33 - postcss-import: 15.1.0(postcss@8.4.33) - postcss-js: 4.0.1(postcss@8.4.33) - postcss-load-config: 4.0.2(postcss@8.4.33) - postcss-nested: 6.0.1(postcss@8.4.33) - postcss-selector-parser: 6.0.15 - resolve: 1.22.8 - sucrase: 3.35.0 + postcss: 8.4.14 + postcss-import: 14.1.0_postcss@8.4.14 + postcss-js: 4.0.0_postcss@8.4.14 + postcss-load-config: 3.1.4_postcss@8.4.14 + postcss-nested: 5.0.6_postcss@8.4.14 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 transitivePeerDependencies: - ts-node dev: false - /terser@5.27.0: - resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /tiny-emitter@2.1.0: + /tiny-emitter/2.1.0: resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} dev: false - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + /to-fast-properties/2.0.0: + resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} - dev: true + dev: false - /to-regex-range@5.0.1: + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: false - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false - - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db/1.0.4_browserslist@4.21.0: + resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 + browserslist: 4.21.0 escalade: 3.1.1 picocolors: 1.0.0 dev: false - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /util-deprecate/1.0.2: + resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} dev: false - /vite@5.0.12(@types/node@16.18.74)(terser@5.27.0): - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite/2.9.12: + resolution: {integrity: sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==} + engines: {node: '>=12.2.0'} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 less: '*' - lightningcss: ^1.21.0 sass: '*' stylus: '*' - sugarss: '*' - terser: ^5.4.0 peerDependenciesMeta: - '@types/node': - optional: true less: optional: true - lightningcss: - optional: true sass: optional: true stylus: optional: true - sugarss: - optional: true - terser: - optional: true dependencies: - '@types/node': 16.18.74 - esbuild: 0.19.11 - postcss: 8.4.33 - rollup: 4.9.6 - terser: 5.27.0 + esbuild: 0.14.47 + postcss: 8.4.14 + resolve: 1.22.1 + rollup: 2.75.7 optionalDependencies: - fsevents: 2.3.3 - dev: true + fsevents: 2.3.2 + dev: false - /vitepress@1.0.0-rc.39(@types/node@16.18.74)(postcss@8.4.33)(search-insights@2.13.0)(terser@5.27.0): - resolution: {integrity: sha512-EcgoRlAAp37WOxUOYv45oxyhLrcy3Upey+mKpqW3ldsg6Ol4trPndRBk2GO0QiSvEKlb9BMerk49D/bFICN6kg==} + /vitepress/1.0.0-alpha.4: + resolution: {integrity: sha512-bOAA4KW6vYGlkbcrPLZLTKWTgXVroObU+o9xj9EENyEl6yg26WWvfN7DGA4BftjdM5O8nR93Z5khPQ3W/tFE7Q==} + engines: {node: '>=14.6.0'} hasBin: true - peerDependencies: - markdown-it-mathjax3: ^4.3.2 - postcss: ^8.4.33 - peerDependenciesMeta: - markdown-it-mathjax3: - optional: true - postcss: - optional: true dependencies: - '@docsearch/css': 3.5.2 - '@docsearch/js': 3.5.2(search-insights@2.13.0) - '@types/markdown-it': 13.0.7 - '@vitejs/plugin-vue': 5.0.3(vite@5.0.12)(vue@3.4.15) - '@vue/devtools-api': 6.5.1 - '@vueuse/core': 10.7.2(vue@3.4.15) - '@vueuse/integrations': 10.7.2(focus-trap@7.5.4)(vue@3.4.15) - focus-trap: 7.5.4 - mark.js: 8.11.1 - minisearch: 6.3.0 - postcss: 8.4.33 - shikiji: 0.9.19 - shikiji-core: 0.9.19 - shikiji-transformers: 0.9.19 - vite: 5.0.12(@types/node@16.18.74)(terser@5.27.0) - vue: 3.4.15 + '@docsearch/css': 3.1.0 + '@docsearch/js': 3.1.0 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.12+vue@3.2.37 + '@vue/devtools-api': 6.1.4 + '@vueuse/core': 8.7.5_vue@3.2.37 + body-scroll-lock: 4.0.0-beta.0 + shiki: 0.10.1 + vite: 2.9.12 + vue: 3.2.37 transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - '@types/react' - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - less - - lightningcss - - nprogress - - qrcode - react - react-dom - sass - - search-insights - - sortablejs - stylus - - sugarss - - terser - - typescript - - universal-cookie - dev: true + dev: false - /vue-demi@0.14.6(vue@3.4.15): - resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + /vscode-oniguruma/1.6.2: + resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} + dev: false + + /vscode-textmate/5.2.0: + resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} + dev: false + + /vue-demi/0.13.1_vue@3.2.37: + resolution: {integrity: sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg==} engines: {node: '>=12'} hasBin: true requiresBuild: true @@ -1823,51 +1281,25 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.15 - dev: true - - /vue@3.4.15: - resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@vue/compiler-dom': 3.4.15 - '@vue/compiler-sfc': 3.4.15 - '@vue/runtime-dom': 3.4.15 - '@vue/server-renderer': 3.4.15(vue@3.4.15) - '@vue/shared': 3.4.15 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 + vue: 3.2.37 dev: false - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + /vue/3.2.37: + resolution: {integrity: sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==} dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 + '@vue/compiler-dom': 3.2.37 + '@vue/compiler-sfc': 3.2.37 + '@vue/runtime-dom': 3.2.37 + '@vue/server-renderer': 3.2.37_vue@3.2.37 + '@vue/shared': 3.2.37 dev: false - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} dev: false - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} dev: false diff --git a/vendor/w7corp/easywechat/docs/src/3.x/notice.md b/vendor/w7corp/easywechat/docs/src/3.x/notice.md index 5b871efb..2ddfa1f6 100644 --- a/vendor/w7corp/easywechat/docs/src/3.x/notice.md +++ b/vendor/w7corp/easywechat/docs/src/3.x/notice.md @@ -15,12 +15,12 @@ $notice = $app->notice; ### API -- `boolean setIndustry($industryId1, $industryId2)` 修改账号所属行业; -- `array getIndustry()` 返回所有支持的行业列表,用于做下拉选择行业可视化更新; -- `string addTemplate($shortId)` 添加模板并获取模板 ID; -- `collection send($message)` 发送模板消息, 返回消息 ID; -- `array getPrivateTemplates()` 获取所有模板列表; -- `array deletePrivateTemplate($templateId)` 删除指定 ID 的模板。 ++ `boolean setIndustry($industryId1, $industryId2)` 修改账号所属行业; ++ `array getIndustry()` 返回所有支持的行业列表,用于做下拉选择行业可视化更新; ++ `string addTemplate($shortId)` 添加模板并获取模板ID; ++ `collection send($message)` 发送模板消息, 返回消息ID; ++ `array getPrivateTemplates()` 获取所有模板列表; ++ `array deletePrivateTemplate($templateId)` 删除指定ID的模板。 非链接调用方法: @@ -93,48 +93,50 @@ var_dump($result); // } ``` +结果: + +![notice-demo](http://7u2jwa.com1.z0.glb.clouddn.com/QQ20160111-0@2x.png) + ## 模板数据 为了方便大家开发,我们拓展支持以下格式的模板数据,其它格式的数据可能会导致接口调用失败: - 所有数据项颜色一样的(这是方便的一种方式): - ```php - $data = array( - "first" => "恭喜你购买成功!", - "keynote1" => "巧克力", - "keynote2" => "39.8元", - "keynote3" => "2014年9月16日", - "remark" => "欢迎再次购买!", - ); - ``` - + ```php + $data = array( + "first" => "恭喜你购买成功!", + "keynote1" => "巧克力", + "keynote2" => "39.8元", + "keynote3" => "2014年9月16日", + "remark" => "欢迎再次购买!", + ); + ``` 默认颜色为'#173177', 你可以通过 `defaultColor($color)` 来修改 - 独立设置每个模板项颜色的: - - 简便型: + + 简便型: - ```php - $data = array( - "first" => array("恭喜你购买成功!", '#555555'), - "keynote1" => array("巧克力", "#336699"), - "keynote2" => array("39.8元", "#FF0000"), - "keynote3" => array("2014年9月16日", "#888888"), - "remark" => array("欢迎再次购买!", "#5599FF"), - ); - ``` + ```php + $data = array( + "first" => array("恭喜你购买成功!", '#555555'), + "keynote1" => array("巧克力", "#336699"), + "keynote2" => array("39.8元", "#FF0000"), + "keynote3" => array("2014年9月16日", "#888888"), + "remark" => array("欢迎再次购买!", "#5599FF"), + ); + ``` + + 复杂型(也是微信官方唯一支持的方式,估计没有人想这么用): - - 复杂型(也是微信官方唯一支持的方式,估计没有人想这么用): - - ```php - $data = array( - "first" => array("value" => "恭喜你购买成功!", "color" => '#555555'), - "keynote1" => array("value" => "巧克力", "color" => "#336699"), - "keynote2" => array("value" => "39.8元","color" => "#FF0000"), - "keynote3" => array("value" => "2014年9月16日", "color" => "#888888"), - "remark" => array("value" => "欢迎再次购买!", "color" => "#5599FF"), - ); - ``` + ```php + $data = array( + "first" => array("value" => "恭喜你购买成功!", "color" => '#555555'), + "keynote1" => array("value" => "巧克力", "color" => "#336699"), + "keynote2" => array("value" => "39.8元","color" => "#FF0000"), + "keynote3" => array("value" => "2014年9月16日", "color" => "#888888"), + "remark" => array("value" => "欢迎再次购买!", "color" => "#5599FF"), + ); + ``` 关于模板消息的使用请参考 [微信官方文档](http://mp.weixin.qq.com/wiki/) diff --git a/vendor/w7corp/easywechat/docs/src/3.x/oauth.md b/vendor/w7corp/easywechat/docs/src/3.x/oauth.md index ce54379e..d724960f 100644 --- a/vendor/w7corp/easywechat/docs/src/3.x/oauth.md +++ b/vendor/w7corp/easywechat/docs/src/3.x/oauth.md @@ -1,8 +1,9 @@ # 网页授权 + ## 关于 OAuth2.0 -OAuth 是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是 2.0 版。 +OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 ``` @@ -25,7 +26,6 @@ OAuth 是一个关于授权(authorization)的开放网络标准,在全世 +--------+ +---------------+ OAuth 授权流程 ``` - > 摘自:[RFC 6749](https://datatracker.ietf.org/doc/rfc6749/?include_text=1) 步骤解释: @@ -59,8 +59,8 @@ OAuth 是一个关于授权(authorization)的开放网络标准,在全世 1. 用户尝试访问一个我们的业务页面,例如: `/user/profile` 2. 如果用户已经登录,则正常显示该页面 -3. 系统检查当前访问的用户并未登录(从 session 或者其它方式检查),则跳转到**跳转到微信授权服务器**(上面的两种中一种**授权 URL**),并告知微信授权服务器我的**回调 URL(redirect_uri=callback.php)**,此时用户看到蓝色的授权确认页面(`scope` 为 `snsapi_base` 时不显示) -4. 用户点击确定完成授权,浏览器跳转到**回调 URL**: `callback.php` 并带上 `code`: `?code=CODE&state=STATE`。 +2. 系统检查当前访问的用户并未登录(从 session 或者其它方式检查),则跳转到**跳转到微信授权服务器**(上面的两种中一种**授权 URL**),并告知微信授权服务器我的**回调URL(redirect_uri=callback.php)**,此时用户看到蓝色的授权确认页面(`scope` 为 `snsapi_base` 时不显示) +4. 用户点击确定完成授权,浏览器跳转到**回调URL**: `callback.php` 并带上 `code`: `?code=CODE&state=STATE`。 5. 在 `callback.php` 中得到 `code` 后,通过 `code` 再次向微信服务器请求得到 **网页授权 access_token** 与 `openid` 6. 你可以选择拿 `openid` 去请求 API 得到用户信息(可选) 7. 将用户信息写入 SESSION。 @@ -68,12 +68,12 @@ OAuth 是一个关于授权(authorization)的开放网络标准,在全世 > 看懵了?没事,使用 SDK,你不用管这么多。:smile: > -> 注意,上面的第 3 步:redirect_uri=callback.php 实际上我们会在 `callback.php` 后面还会带上授权目标页面 `user/profile`,所以完整的 `redirect_uri` 应该是下面的这样的 PHP 去拼出来:`'redirect_uri='.urlencode('callback.php?target=user/profile')` +> 注意,上面的第3步:redirect_uri=callback.php实际上我们会在 `callback.php` 后面还会带上授权目标页面 `user/profile`,所以完整的 `redirect_uri` 应该是下面的这样的PHP去拼出来:`'redirect_uri='.urlencode('callback.php?target=user/profile')` > 结果:redirect_uri=callback.php%3Ftarget%3Duser%2Fprofile ## 逻辑组成 -从上面我们所描述的授权流程来看,我们至少有 3 个页面: +从上面我们所描述的授权流程来看,我们至少有3个页面: 1. **业务页面**,也就是需要授权才能访问的页面。 2. **发起授权页**,此页面其实可以省略,可以做成一个中间件,全局检查未登录就发起授权。 @@ -87,7 +87,7 @@ OAuth 是一个关于授权(authorization)的开放网络标准,在全世 ## SDK 中 OAuth 模块的 API -在 SDK 中,我们使用名称为 `oauth` 的模块来完成授权服务,我们主要用到以下两个 API: + 在 SDK 中,我们使用名称为 `oauth` 的模块来完成授权服务,我们主要用到以下两个 API: ### 发起授权 @@ -96,7 +96,7 @@ $response = $app->oauth->scopes(['snsapi_userinfo']) ->redirect(); ``` -当你的应用是分布式架构且没有会话保持的情况下,你需要自行设置请求对象以实现会话共享。比如在 [Laravel](http://laravel.com) 框架中支持 Session 储存在 Redis 中,那么需要这样: +当你的应用是分布式架构且没有会话保持的情况下,你需要自行设置请求对象以实现会话共享。比如在 [Laravel](http://laravel.com) 框架中支持Session储存在Redis中,那么需要这样: ```php $response = $app->oauth->scopes(['snsapi_userinfo']) @@ -115,7 +115,7 @@ $response = $app->oauth->scopes(['snsapi_userinfo']) return $response; ``` -在有的框架 (比如 yii2) 中是直接 `echo` 或者 `$this->display()` 这种的时候,你就直接: +在有的框架 (比如yii2) 中是直接 `echo` 或者 `$this->display()` 这种的时候,你就直接: ```php $response->send(); // Laravel 里请使用:return $response; @@ -143,10 +143,10 @@ $user = $app->oauth->user(); ## 网页授权实例 -我们这里来用原生 PHP 写法举个例子,`oauth_callback` 是我们的授权回调 URL (未 urlencode 编码的 URL), `user/profile` 是我们需要授权才能访问的页面,它的 PHP 代码如下: +我们这里来用原生 PHP 写法举个例子,`oauth_callback` 是我们的授权回调URL (未urlencode编码的URL), `user/profile` 是我们需要授权才能访问的页面,它的 PHP 代码如下: ```php -// http://easywechat.com/user/profile +// http://easywechat.org/user/profile 'iPad mini 16G 白色', 'out_trade_no' => '1217752501201407033233368018',    'total_fee'       => 5388, // 单位:分 -    'notify_url'       => 'http://easywechat.com/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 +    'notify_url'       => 'http://xxx.com/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 'openid' => '当前用户的 openid', // trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识, // ... ]; @@ -74,7 +76,7 @@ $attributes = [ 'detail' => 'iPad mini 16G 白色', 'out_trade_no' => '1217752501201407033233368018', 'total_fee' => 5388, // 单位:分 - 'notify_url' => 'http://easywechat.com/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 + 'notify_url' => 'http://xxx.com/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址    'sub_openid'        => '当前用户的 openid', // 如果传入sub_openid, 请在实例化Application时, 同时传入$sub_app_id, $sub_merchant_id    // ... ]; @@ -83,7 +85,8 @@ $order = new Order($attributes); ``` -通知 url 必须为直接可访问的 url,不能携带参数。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action” + +通知url必须为直接可访问的url,不能携带参数。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action” ## 下单接口 @@ -110,7 +113,7 @@ if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS'){ ## 支付结果通知 -在用户成功支付后,微信服务器会向该 **订单中设置的回调 URL** 发起一个 POST 请求,请求的内容为一个 XML。里面包含了所有的详细信息,具体请参考: +在用户成功支付后,微信服务器会向该 **订单中设置的回调URL** 发起一个 POST 请求,请求的内容为一个 XML。里面包含了所有的详细信息,具体请参考: [支付结果通用通知](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7) 在本 SDK 中处理回调真的再简单不过了,请求验证你就不用管了,SDK 已经为你做好了,你只需要关注业务即可: @@ -129,8 +132,8 @@ $response->send(); // Laravel 里请使用:return $response; 1. `handleNotify` 只接收一个 [`callable`](http://php.net/manual/zh/language.types.callable.php) 参数,通常用一个匿名函数即可。 2. 该匿名函数接收两个参数,这两个参数分别为: - - `$notify` 为封装了通知信息的 `EasyWeChat\Support\Collection` 对象,前面已经讲过这里就不赘述了,你可以以对象或者数组形式来读取通知内容,比如:`$notify->total_fee` 或者 `$notify['total_fee']`。 - - `$successful` 这个参数其实就是判断 **用户是否付款成功了**(result_code == 'SUCCESS') + - `$notify` 为封装了通知信息的 `EasyWeChat\Support\Collection` 对象,前面已经讲过这里就不赘述了,你可以以对象或者数组形式来读取通知内容,比如:`$notify->total_fee` 或者 `$notify['total_fee']`。 + - `$successful` 这个参数其实就是判断 **用户是否付款成功了**(result_code == 'SUCCESS') 3. 该函数返回值就是告诉微信 **“我是否处理完成”**,如果你返回一个 `false` 或者一个具体的错误消息,那么微信会在稍后再次继续通知你,直到你明确的告诉它:“我已经处理完成了”,在函数里 `return true;` 代表处理完成。 @@ -173,11 +176,12 @@ return $response; > 注意:请把 “支付成功与否” 与 “是否处理完成” 分开,它俩没有必然关系。 > 比如:微信通知你用户支付完成,但是支付失败了(result_code 为 'FAIL'),你应该**更新你的订单为支付失败**,但是要**告诉微信处理完成**。 -## 撤销订单 API + +## 撤销订单API 目前只有 **刷卡支付** 有此功能。 -> 调用支付接口后请勿立即调用撤销订单 API,建议支付后至少 15s 后再调用撤销订单接口。 +> 调用支付接口后请勿立即调用撤销订单API,建议支付后至少15s后再调用撤销订单接口。 ```php $orderNo = "商户系统内部的订单号(out_trade_no)"; @@ -192,16 +196,17 @@ $orderNo = "微信的订单号(transaction_id)"; $payment->reverseByTransactionId($orderNo); ``` + ## 查询订单 该接口提供所有微信支付订单的查询,商户可以通过该接口主动查询订单状态,完成下一步的业务逻辑。 需要调用查询接口的情况: -- 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; -- 调用支付接口后,返回系统错误或未知交易状态情况; -- 调用被扫支付 API,返回 USERPAYING 的状态; -- 调用关单或撤销接口 API 之前,需确认支付状态; + - 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; + - 调用支付接口后,返回系统错误或未知交易状态情况; + - 调用被扫支付API,返回USERPAYING的状态; + - 调用关单或撤销接口API之前,需确认支付状态; ```php $orderNo = "商户系统内部的订单号(out_trade_no)"; @@ -218,7 +223,7 @@ $payment->queryByTransactionId($orderNo); ## 关闭订单 -> 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为 5 分钟。 +> 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。 ```php $orderNo = "商户系统内部的订单号(out_trade_no)"; @@ -268,7 +273,7 @@ $result = $payment->refundByTransactionId($transactionId, $refundNo, 100, 80, 19 ## 查询退款 -提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款 20 分钟内到账,银行卡支付的退款 3 个工作日后重新查询退款状态。 +提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。 ```php $result = $payment->queryRefund($outTradeNo); @@ -294,10 +299,10 @@ file_put_contents('YOUR/PATH/TO/bill-20140603.csv', $bill); 第二个参数为类型: -- **ALL**:返回当日所有订单信息(默认值) -- **SUCCESS**:返回当日成功支付的订单 -- **REFUND**:返回当日退款订单 -- **REVOKED**:已撤销的订单 + - **ALL**:返回当日所有订单信息(默认值) + - **SUCCESS**:返回当日成功支付的订单 + - **REFUND**:返回当日退款订单 + - **REVOKED**:已撤销的订单 ## 测速上报 @@ -315,10 +320,10 @@ $payment->report($api, $timeConsuming, $resultCode, $returnCode, [ ## 转换短链接 ```php -$shortUrl = $payment->urlShorten('http://easywechat.com'); +$shortUrl = $payment->urlShorten('http://easywechat.org'); ``` -## 授权码查询 OPENID 接口 +## 授权码查询OPENID接口 ```php $response = $payment->authCodeToOpenId($authCode); @@ -331,47 +336,47 @@ $response->openid; 1. WeixinJSBridge: - ```php - $json = $payment->configForPayment($prepayId); // 返回 json 字符串,如果想返回数组,传第二个参数 false - ``` + ```php + $json = $payment->configForPayment($prepayId); // 返回 json 字符串,如果想返回数组,传第二个参数 false + ``` - javascript: + javascript: - ```js - ... - WeixinJSBridge.invoke( - 'getBrandWCPayRequest', , - function(res){ - if(res.err_msg == "get_brand_wcpay_request:ok" ) { - // 使用以上方式判断前端返回,微信团队郑重提示: - // res.err_msg将在用户支付成功后返回 - // ok,但并不保证它绝对可靠。 - } - } - ); - ... - ``` + ```js + ... + WeixinJSBridge.invoke( + 'getBrandWCPayRequest', , + function(res){ + if(res.err_msg == "get_brand_wcpay_request:ok" ) { + // 使用以上方式判断前端返回,微信团队郑重提示: + // res.err_msg将在用户支付成功后返回 + // ok,但并不保证它绝对可靠。 + } + } + ); + ... + ``` 2. JSSDK: - ```php - $config = $payment->configForJSSDKPayment($prepayId); // 返回数组 - ``` + ```php + $config = $payment->configForJSSDKPayment($prepayId); // 返回数组 + ``` - javascript: + javascript: - ```js - wx.chooseWXPay({ - timestamp: , - nonceStr: '', - package: '', - signType: '', - paySign: '', // 支付签名 - success: function (res) { - // 支付成功后的回调函数 - } - }); - ``` + ```js + wx.chooseWXPay({ + timestamp: , + nonceStr: '', + package: '', + signType: '', + paySign: '', // 支付签名 + success: function (res) { + // 支付成功后的回调函数 + } + }); + ``` ## 生成共享收货地址 JS 配置 @@ -414,3 +419,4 @@ $config = $payment->configForAppPayment($prepayId); - https://github.com/Bacon/BaconQrCode - https://github.com/SimpleSoftwareIO/simple-qrcode (Bacon/BaconQrCode 的 Laravel 版本) - https://github.com/aferrandini/PHPQRCode + diff --git a/vendor/w7corp/easywechat/docs/src/3.x/poi.md b/vendor/w7corp/easywechat/docs/src/3.x/poi.md index fcb81f0a..1e6bed09 100644 --- a/vendor/w7corp/easywechat/docs/src/3.x/poi.md +++ b/vendor/w7corp/easywechat/docs/src/3.x/poi.md @@ -1,5 +1,6 @@ # 门店 + ## 获取实例 ```php @@ -42,8 +43,8 @@ $info = array( "longitude" => 115.32375, "latitude" => 25.097486, "photo_list" => array( - array("photo_url" => "https://easywechat.com"), - array("photo_url" => "https://easywechat.com"), + array("photo_url" => "https://XXX.com"), + array("photo_url" => "https://XXX.com"), ), "recommend" => "麦辣鸡腿堡套餐,麦乐鸡,全家桶", "special" => "免费 wifi,外卖服务", @@ -55,15 +56,14 @@ $info = array( $result = $poi->create($info); // true or exception ``` -> 注意:新创建的门店在审核通过后,会以事件形式推送给商户填写的回调 URL +> 注意:新创建的门店在审核通过后,会以事件形式推送给商户填写的回调URL ## 获取指定门店信息 ```php $poi->get($poiId); ``` - -- `$poiId` 为门店 ID +- `$poiId` 为门店ID example: @@ -117,7 +117,7 @@ $pois = $poi->lists(0, 2);// 取2条记录 $poi->update($poiId, $data); ``` -- `$poiId` 为门店 ID +- `$poiId` 为门店ID - `$data` 需要更新的部分数据,**若有填写内容则为覆盖更新,若无内容则视为不 修改,维持原有内容。photo_list 字段为全列表覆盖,若需要增加图片,需将之前图片同样放入 list 中,在其后增加新增图片。如:已有 A、B、C 三张图片,又要增加 D、E 两张图,则需要调 用该接口,photo_list 传入 A、B、C、D、E 五张图片的链接。** example: @@ -149,6 +149,6 @@ $poi->delete(271262077);// true or exception - `invalid categories` 分类不合法,必须严格按照附表的分类填写 - `invalid photo url` 图片 url 不合法,必须使用接口 1 的图片上传 接口所获取的 url - `poi audit state must be approved` 门店状态必须未审核通过 -- `invalid poiid` poi_id 不正确 -- `invalid args` 参数不正确,请检查 json 字段 -- `system error` 系统错误,请稍后重试 +- `invalid poiid` poi_id 不正确 +- `invalid args` 参数不正确,请检查 json 字段 +- `system error` 系统错误,请稍后重试 \ No newline at end of file diff --git a/vendor/w7corp/easywechat/docs/src/3.x/roadmap.md b/vendor/w7corp/easywechat/docs/src/3.x/roadmap.md index 238dea5e..46cde9e4 100644 --- a/vendor/w7corp/easywechat/docs/src/3.x/roadmap.md +++ b/vendor/w7corp/easywechat/docs/src/3.x/roadmap.md @@ -1,5 +1,6 @@ # 路线图 + ## 3.1 - 微信小店 @@ -10,12 +11,12 @@ - 全新的架构,更清晰的模块拆分 - Debug 优化,便于快速定位问题 -- 统一返回微信 API 原值,以 Collection 类装载,便于便捷操作 +- 统一返回微信API原值,以 Collection 类装载,便于便捷操作 - 大量模块重写 - 全新的支付模块 - 多类型缓存系统 - 新的命名空间:EasyWeChat -- 专属网站与更清晰与文档:http://easywechat.com +- 专属网站与更清晰与文档:http://easywechat.org ## 2.1 diff --git a/vendor/w7corp/easywechat/docs/src/3.x/tutorial.md b/vendor/w7corp/easywechat/docs/src/3.x/tutorial.md index cca31c52..0e5192df 100644 --- a/vendor/w7corp/easywechat/docs/src/3.x/tutorial.md +++ b/vendor/w7corp/easywechat/docs/src/3.x/tutorial.md @@ -1,6 +1,7 @@ # 快速开始 -在我们已经安装完成后,即可很快的开始使用它了,当然你还是有必要明白 PHP 基本知识,如命名空间等,我这里就不赘述了。 + +在我们已经安装完成后,即可很快的开始使用它了,当然你还是有必要明白PHP基本知识,如命名空间等,我这里就不赘述了。 我们以完成服务器端验证与接收响应用户发送的消息为例来演示,首先你有必要了解一下微信交互的运行流程: @@ -24,7 +25,7 @@ 考虑到这些,我已经把验证这一步给封装到 SDK 里了,你可以完全忽略这一步。 -下面我们来配置一个基本的服务端,这里假设我们自己的服务器域名叫 `easywechat.com`,我们在服务器上准备这么一个文件`server.php`: +下面我们来配置一个基本的服务端,这里假设我们自己的服务器域名叫 `easywechat.org`,我们在服务器上准备这么一个文件`server.php`: // server.php @@ -90,17 +91,20 @@ $response->send(); // Laravel 里请使用:return $response; 最后这一行我有必要详细讲一下: -> 1. 我们的 `$app->server->serve()` 就是执行服务端业务了,那么它的返回值呢,是一个 `Symfony\Component\HttpFoundation\Response` 实例。 -> 2. 我这里是直接调用了它的 `send()` 方法,它就是直接输出了,我们在一些框架就不能直接输出了,那你就直接拿到 Response 实例后做相应的操作即可,比如 Laravel 里你就可以直接 `return $app->server->serve();` + +>1. 我们的 `$app->server->serve()` 就是执行服务端业务了,那么它的返回值呢,是一个 `Symfony\Component\HttpFoundation\Response` 实例。 +>2. 我这里是直接调用了它的 `send()` 方法,它就是直接输出了,我们在一些框架就不能直接输出了,那你就直接拿到 Response 实例后做相应的操作即可,比如 Laravel 里你就可以直接 `return $app->server->serve();` + OK, 有了上面的代码,那么请你按 **[微信官方的接入指引](http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html)** 操作,并相应修改上面的 `$options` 的配置。 -> URL 就是我们的 `http://easywechat.com/server.php`,这里我是举例哦,你可不要填写我的域名。 +> URL 就是我们的 `http://easywechat.org/server.php`,这里我是举例哦,你可不要填写我的域名。 -这样,点击提交验证就 OK 了。 +这样,点击提交验证就OK了。 > :heart: 请一定要将微信后台的开发者模式 “**启用**” !!!!!!看到红色 “**停用**” 才真正的是启用了。 + ## 接收 & 回复用户消息 那服务端验证通过了,我们就来试一下接收消息吧。 @@ -133,41 +137,42 @@ $response->send(); // Laravel 里请使用:return $response; 1. 所有的服务都通过主入口 `EasyWeChat\Foundation\Application` 类来获取: -```php -$app = new Application($options); + ```php + $app = new Application($options); -// services... -$server = $app->server; -$user = $app->user; -$oauth = $app->oauth; + // services... + $server = $app->server; + $user = $app->user; + $oauth = $app->oauth; -// ... js/menu/staff/material/qrcode/notice/stats... + // ... js/menu/staff/material/qrcode/notice/stats... -``` + ``` 2. 所有的 API 返回值均为 [`EasyWeChat\Support\Collection`](https://github.com/EasyWeChat/support/blob/master/src/Collection.php) 类,这个类是个什么东西呢? -它实现了一些 **[PHP 预定义接口](http://php.net/manual/zh/reserved.interfaces.php)**,比如:[`ArrayAccess`](http://php.net/manual/zh/class.arrayaccess.php)、[`Serializable`](http://php.net/manual/zh/class.serializable.php) 等。 + 它实现了一些 **[PHP预定义接口](http://php.net/manual/zh/reserved.interfaces.php)**,比如:[`ArrayAccess`](http://php.net/manual/zh/class.arrayaccess.php)、[`Serializable`](http://php.net/manual/zh/class.serializable.php) 等。 -有啥好处呢?它让我们操作起返回值来更方便,比如: + 有啥好处呢?它让我们操作起返回值来更方便,比如: -```php -$userService = $app->user; // 用户API + ```php + $userService = $app->user; // 用户API -$user = $userService->get($openId); + $user = $userService->get($openId); -// $user 便是一个 EasyWeChat\Support\Collection 实例 -$user['nickname']; -$user->nickname; -$user->get('nickname'); + // $user 便是一个 EasyWeChat\Support\Collection 实例 + $user['nickname']; + $user->nickname; + $user->get('nickname'); -//... -``` + //... + ``` -还有这些方便的操作:检查是否存在某个属性 `$user->has('email')`、元素个数 `$user->count()`,还有返回数组 `$user->toArray()` ,生成 JSON `$user->toJSON()` 等。 + 还有这些方便的操作:检查是否存在某个属性 `$user->has('email')`、元素个数 `$user->count()`,还有返回数组 `$user->toArray()` ,生成 JSON `$user->toJSON()` 等。 -## 最后 -希望你在使用本 SDK 的时候能忘记微信官方给你的痛苦,同时如果你发现 SDK 的不足,欢迎提交 PR 或者给我[提建议 & 报告问题](https://github.com/overtrue/wechat/issues)。 + ## 最后 -祝你生活愉快! + 希望你在使用本 SDK 的时候能忘记微信官方给你的痛苦,同时如果你发现 SDK 的不足,欢迎提交 PR 或者给我[提建议 & 报告问题](https://github.com/overtrue/wechat/issues)。 + + 祝你生活愉快! diff --git a/vendor/w7corp/easywechat/docs/src/4.x/client.md b/vendor/w7corp/easywechat/docs/src/4.x/client.md deleted file mode 100644 index 78dc5863..00000000 --- a/vendor/w7corp/easywechat/docs/src/4.x/client.md +++ /dev/null @@ -1,44 +0,0 @@ -# API 调用 - -该方法将 API 交由开发者自行调用,微信有部分新的接口4.x并未全部兼容支持,可以使用该方案去自行封装接口: - -例如URL Link接口 - -```php - -$response = $app->httpPostJson('wxa/generate_urllink',[ - 'path' => 'pages/index/index', - 'is_expire' => true, - 'expire_type' => 1, - 'expire_interval' => 1 -]); -``` - -## 语法说明 - -```php -httpGet(string $uri, array $query = []) -httpPostJson(string $uri, array $data = [], array $query = []) -``` - - - -### GET - -```php -$response = $app->httpGet('/cgi-bin/user/list', [ - 'next_openid' => 'OPENID1', -]); -``` - -### POST - -```php -$response = $app->httpPostJson('/cgi-bin/user/info/updateremark', [ - "openid" => "oDF3iY9ffA-hqb2vVvbr7qxf6A0Q", - "remark" => "pangzi" -]); -``` - - - diff --git a/vendor/w7corp/easywechat/docs/src/4.x/official-account/accounts.md b/vendor/w7corp/easywechat/docs/src/4.x/official-account/accounts.md index c0f31045..bdbd37eb 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/official-account/accounts.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/official-account/accounts.md @@ -12,7 +12,7 @@ 在微信公众平台的设置中,您可以将您帐号中平台的 `url` 设置为 `您的网址/?id=xxx`,如: ``` -http://easywechat.com/wechat?id=1 +http://www.easywechat.com/wechat?id=1 ``` 而在程序入口处,根据 `id` 查找对应帐号的 `appid` 和 其它信息来创建配置数组创建实例即可。 diff --git a/vendor/w7corp/easywechat/docs/src/4.x/official-account/card.md b/vendor/w7corp/easywechat/docs/src/4.x/official-account/card.md index 153a3c7d..adaf3edc 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/official-account/card.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/official-account/card.md @@ -37,7 +37,7 @@ $card->create($cardType = 'member_card', array $attributes); ```php [ @@ -109,7 +109,7 @@ $attributes = [ 'logo_url' => 'http://mmbiz.qpic.cn/mmbiz/2aJY6aCPatSeibYAyy7yct9zJXL9WsNVL4JdkTbBr184gNWS6nibcA75Hia9CqxicsqjYiaw2xuxYZiaibkmORS2oovdg/0', 'center_title' => '顶部居中按钮', 'center_sub_title' => '按钮下方的wording', - 'center_url' => 'http://easywechat.com', + 'center_url' => 'http://www.easywechat.com', 'custom_url_name' => '立即使用', 'custom_url' => 'http://www.qq.com', 'custom_url_sub_title' => '6个汉字tips', diff --git a/vendor/w7corp/easywechat/docs/src/4.x/official-account/material.md b/vendor/w7corp/easywechat/docs/src/4.x/official-account/material.md index d25098a4..4ff1e227 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/official-account/material.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/official-account/material.md @@ -84,7 +84,7 @@ $result = $app->material->updateArticle($mediaId, [ 'show_cover' => 1, // 是否在文章内容显示封面图片 'digest' => '这里是文章摘要', 'content' => '这里是文章内容,你可以放很长的内容', - 'source_url' => 'https://easywechat.com', + 'source_url' => 'https://www.easywechat.com', ]); // 指定更新多图文中的第 2 篇 @@ -230,7 +230,7 @@ $stats = $app->material->stats(); // } ``` -### 删除永久素材 +### 删除永久素材; ```php $app->material->delete($mediaId); diff --git a/vendor/w7corp/easywechat/docs/src/4.x/official-account/oauth.md b/vendor/w7corp/easywechat/docs/src/4.x/official-account/oauth.md index d8e23564..559ac632 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/official-account/oauth.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/official-account/oauth.md @@ -133,7 +133,7 @@ $user = $app->oauth->user(); 我们这里来用原生 PHP 写法举个例子,`oauth_callback` 是我们的授权回调 URL (未 urlencode 编码的 URL), `user/profile` 是我们需要授权才能访问的页面,它的 PHP 代码如下: ```php -// http://easywechat.com/user/profile +// http://easywechat.org/user/profile 115.32375, "latitude" => 25.097486, "photo_list" => array( - array("photo_url" => "https://easywechat.com"), - array("photo_url" => "https://easywechat.com"), + array("photo_url" => "https://XXX.com"), + array("photo_url" => "https://XXX.com"), ), "recommend" => "麦辣鸡腿堡套餐,麦乐鸡,全家桶", "special" => "免费 wifi,外卖服务", diff --git a/vendor/w7corp/easywechat/docs/src/4.x/official-account/template_message.md b/vendor/w7corp/easywechat/docs/src/4.x/official-account/template_message.md index 9f6d31a2..b48d94cf 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/official-account/template_message.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/official-account/template_message.md @@ -40,7 +40,7 @@ $app->template_message->deletePrivateTemplate($templateId); $app->template_message->send([ 'touser' => 'user-openid', 'template_id' => 'template-id', - 'url' => 'https://easywechat.com', + 'url' => 'https://easywechat.org', 'miniprogram' => [ 'appid' => 'xxxxxxx', 'pagepath' => 'pages/xxx', @@ -52,7 +52,6 @@ $app->template_message->send([ ], ]); ``` - > 如果 url 和 miniprogram 字段都传,会优先跳转小程序。 ## 发送一次性订阅消息 @@ -61,7 +60,7 @@ $app->template_message->send([ $app->template_message->sendSubscription([ 'touser' => 'user-openid', 'template_id' => 'template-id', - 'url' => 'https://easywechat.com', + 'url' => 'https://easywechat.org', 'scene' => 1000, 'data' => [ 'key1' => 'VALUE', diff --git a/vendor/w7corp/easywechat/docs/src/4.x/overview.md b/vendor/w7corp/easywechat/docs/src/4.x/overview.md index 2b7b5a36..0454d812 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/overview.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/overview.md @@ -28,7 +28,7 @@ EasyWeChat 的安装非常简单,因为它是一个标准的 [Composer](https: ### 开始之前 -我们提供了视频教程: 当然,我还是建议你具备以下基础知识,否则可能没有那么快上手。 +我们提供了视频教程:https://www.easywechat.com/tutorials 当然,我还是建议你具备以下基础知识,否则可能没有那么快上手。 本 SDK 不是一个全新再造的东西,所以我不会从 0 开始教会你开发微信,你完全有必要在使用本 SDK 前做好以下工作: @@ -43,8 +43,8 @@ EasyWeChat 的安装非常简单,因为它是一个标准的 [Composer](https: 另外你有必要看一下以下的链接: -> - -> - +> - https://learnku.com/laravel/t/535/assertion-people-who-do-not-understand-the-wisdom-of-asking-questions-will-not-graduate-from-junior-programmers +> - http://laravel-china.github.io/php-the-right-way/ 如果你在群里问以下类似的问题,这真的是你没有做好上面的工作: diff --git a/vendor/w7corp/easywechat/docs/src/4.x/payment/order.md b/vendor/w7corp/easywechat/docs/src/4.x/payment/order.md index e5a7e809..9997e4bc 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/payment/order.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/payment/order.md @@ -57,7 +57,7 @@ $result = $app->order->unify([ 'plan_id' => 123,// 协议模板id 'contract_code' => 100001256,// 签约协议号 'contract_display_account' => '腾讯充值中心',// 签约用户的名称 - 'contract_notify_url' => 'http://easywechat.com/contract_notify' + 'contract_notify_url' => 'http://easywechat.org/contract_notify' ], $isContract); //$result: diff --git a/vendor/w7corp/easywechat/docs/src/4.x/payment/scan-pay.md b/vendor/w7corp/easywechat/docs/src/4.x/payment/scan-pay.md index a035356a..e7b0b7d7 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/payment/scan-pay.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/payment/scan-pay.md @@ -2,7 +2,7 @@ ### 模式一:先生成产品二维码,扫码下单后支付 -> 请务必先熟悉流程: +> 请务必先熟悉流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 #### 生成产品二维码内容 @@ -14,13 +14,13 @@ $content = $app->scheme($productId); // $productId 为你的产品/商品ID, 将 `$content` 生成二维码,SDK 并不内置二维码生成库,使用你熟悉的工具创建二维码即可,比如 PHP 部分有以下工具可以选择: -> - -> - -> - +> - https://github.com/endroid/qr-code +> - https://github.com/SimpleSoftwareIO/simple-qrcode +> - https://github.com/aferrandini/PHPQRCode #### 处理回调 -当用户扫码时,你的回调接口会收到一个通知,调用[统一下单接口](https://easywechat.com/docs/master/zh-CN/payment/order)创建订单后返回 `prepay_id`,你可以使用下面的代码处理扫码通知: +当用户扫码时,你的回调接口会收到一个通知,调用[统一下单接口](https://www.easywechat.com/docs/master/zh-CN/payment/order)创建订单后返回 `prepay_id`,你可以使用下面的代码处理扫码通知: ```php // 扫码支付通知接收第三个参数 `$alert`,如果触发该函数,会返回“业务错误”到微信服务器,触发 `$fail` 则返回“通信错误” @@ -39,15 +39,15 @@ $response = $app->handleScannedNotify(function ($message, $fail, $alert) use ($a $response->send(); ``` -用户在手机上付完钱以后,你会再收到**付款结果通知**,这时候请参考:[处理微信支付通知](https://easywechat.com/docs/master/zh-CN/payment/notify) 更新您的订单状态。 +用户在手机上付完钱以后,你会再收到**付款结果通知**,这时候请参考:[处理微信支付通知](https://www.easywechat.com/docs/master/zh-CN/payment/notify) 更新您的订单状态。 ### 模式二:先下单,生成订单后创建二维码 -> : +> :https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 #### 根据用户选购的商品生成订单 -调用[统一下单接口](https://easywechat.com/docs/master/zh-CN/payment/order)创建订单: +调用[统一下单接口](https://www.easywechat.com/docs/master/zh-CN/payment/order)创建订单: ```php $result = $app->order->unify([ @@ -67,4 +67,4 @@ $result = $app->order->unify([ #### 支付通知 -这种方式的通知就只有**付款结果通知**了,这时候请参考:[处理微信支付通知](https://easywechat.com/docs/master/zh-CN/payment/notify) 更新您的订单状态。 +这种方式的通知就只有**付款结果通知**了,这时候请参考:[处理微信支付通知](https://www.easywechat.com/docs/master/zh-CN/payment/notify) 更新您的订单状态。 diff --git a/vendor/w7corp/easywechat/docs/src/4.x/sidebar.js b/vendor/w7corp/easywechat/docs/src/4.x/sidebar.js index ae975716..c193ec94 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/sidebar.js +++ b/vendor/w7corp/easywechat/docs/src/4.x/sidebar.js @@ -95,6 +95,10 @@ exports = module.exports = [ link: '/4.x/mini-program/template_message.html' }, { text: '消息解密', link: '/4.x/mini-program/decrypt.html' }, + { + text: '内容安全', + link: '/4.x/basic-services/content_security.html' + }, { text: '物流助手', link: '/4.x/mini-program/express.html' }, { text: '生物认证', link: '/4.x/mini-program/soter.html' }, { text: '插件管理', link: '/4.x/mini-program/plugin.html' }, @@ -102,6 +106,11 @@ exports = module.exports = [ { text: '订阅消息', link: '/4.x/mini-program/subscribe_message.html' + }, + { text: '安全风控', link: '/4.x/mini-program/safety_control.html' }, + { + text: 'URL Scheme', + link: '/4.x/mini-program/url_scheme_generate.html' } ] }, @@ -186,13 +195,6 @@ exports = module.exports = [ { text: '模块替换', link: '/4.x/customize/replace-service.html' } ] }, - { - text: '通用', - collapsible: true, - items: [ - { text: 'API 调用', link: '/4.x/client.html' } - ] - }, { text: '其他', collapsible: true, diff --git a/vendor/w7corp/easywechat/docs/src/4.x/wework/external-contact.md b/vendor/w7corp/easywechat/docs/src/4.x/wework/external-contact.md index 4d7b8754..d23196ad 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/wework/external-contact.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/wework/external-contact.md @@ -128,57 +128,6 @@ $configId = '42b34949e138eb6e027c123cba77fad7'; $app->contact_way->delete($configId); ``` -## 客户朋友圈 - -### 企业发表内容到客户的朋友圈 - -```php -$msg = [ - "text" => [ - "content" => "文本消息内容" - ], - "attachments" => [ - [ - "msgtype" => "image", - "image" => [ - "media_id" => "MEDIA_ID" - ] - ], - [ - "msgtype" => "video", - "video" => [ - "media_id" => "MEDIA_ID" - ] - ], - [ - "msgtype" => "link", - "link" => [ - "title" => "消息标题", - "url" => "https://example.link.com/path", - "media_id" => "MEDIA_ID" - ] - ] - ], - "visible_range" => [ - "sender_list" => [ - "user_list" => ["zhangshan","lisi"], - "department_list" => [2,3] - ], - "external_contact_list" => [ - "tag_list" => [ "etXXXXXXXXXX", "etYYYYYYYYYY"] - ] - ] -]; - -$app->external_contact_message->moments($msg); - -//{ -// "errcode":0, -// "errmsg":"ok", -// "jobid":"xxxx" -//} -``` - ## 消息管理 diff --git a/vendor/w7corp/easywechat/docs/src/4.x/wework/group-robot.md b/vendor/w7corp/easywechat/docs/src/4.x/wework/group-robot.md index 6d18af0b..305d4729 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/wework/group-robot.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/wework/group-robot.md @@ -1,12 +1,11 @@ # 群机器人 ## 使用说明 - 使用前必须先在群组里面添加机器人,然后将 `Webhook 地址` 中的 `key` 取出来,作为示例中 `$groupKey` 的值。 -> Webhook 地址示例: +> Webhook 地址示例:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=`ab4f609a-3feb-427c-ae9d-b319ca712d36` -> 微信文档: +> 微信文档:https://work.weixin.qq.com/api/doc#90000/90136/91770 ## 发送文本类型消息 @@ -101,7 +100,7 @@ $items = [ new NewsItem([ 'title' => '中秋节礼品领取', 'description' => '今年中秋节公司有豪礼相送', - 'url' => 'https://easywechat.com', + 'url' => 'https://www.easywechat.com', 'image' => 'http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png', ]), diff --git a/vendor/w7corp/easywechat/docs/src/4.x/wework/media.md b/vendor/w7corp/easywechat/docs/src/4.x/wework/media.md index 0d94643a..d115b647 100644 --- a/vendor/w7corp/easywechat/docs/src/4.x/wework/media.md +++ b/vendor/w7corp/easywechat/docs/src/4.x/wework/media.md @@ -41,18 +41,4 @@ $app->media->uploadFile($path); ```php $app->media->get($mediaId); -``` - -## 上传附件资源 - -所有文件size必须大于5个字节 - -目前 商品图册只支持图片类型; 朋友圈只支持图片、视频类型 - -> - 图片(image):10MB,支持JPG,PNG格式,朋友圈类型图片不超过1440 x 1080 -> - 视频(video) :10MB,支持MP4格式,朋友圈类型视频时长不超过30秒 -> - 文件(file) :10MB - -```php -$app->media->uploadAttachmentResources($path, 'image', 1); ``` \ No newline at end of file diff --git a/vendor/w7corp/easywechat/docs/src/5.x/mini-program/shipping.md b/vendor/w7corp/easywechat/docs/src/5.x/mini-program/shipping.md deleted file mode 100644 index 679ec4f1..00000000 --- a/vendor/w7corp/easywechat/docs/src/5.x/mini-program/shipping.md +++ /dev/null @@ -1,117 +0,0 @@ -# 小程序发货信息管理 - -> 微信文档 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html - - -## 发货信息录入接口 - -```php -$data = [ - 'order_key' => [ - 'order_number_type' => 1, - 'mchid' => '', - 'out_trade_no' => '' - ], - 'logistics_type' => 4, - 'delivery_mode' => 1, - 'shipping_list' => [ - 'tracking_no' => '323244567777', - 'express_company' => 'DHL', - 'item_desc' => '微信红包抱枕*1个', - 'contact' => [ - 'consignor_contact' => '189****1234', - 'receiver_contact' => '189****1234' - ], - ], - 'upload_time' => '2022-12-15T13:29:35.120+08:00', - 'payer' => [ - 'openid' => 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o' - ] -]; - -$app->shipping->uploadShippingInfo($data); -``` - -## 发货信息合单录入接口 - -```php - $data = [ - 'order_key' => [ - 'order_number_type' => 1, - 'mchid' => '', - 'out_trade_no' => '' - ], - 'sub_orders' => [ - 'order_key' => [ - 'order_number_type' => 1, - 'transaction_id' => '', - 'mchid' => '', - 'out_trade_no' => '' - ], - 'logistics_type' => 4, - 'delivery_mode' => 1, - 'shipping_list' => [ - 'tracking_no' => '323244567777', - 'express_company' => 'DHL', - 'item_desc' => '微信红包抱枕*1个', - 'contact' => [ - 'consignor_contact' => '189****1234', - 'receiver_contact' => '189****1234' - ], - ], - ], - 'upload_time' => '2022-12-15T13:29:35.120+08:00', - 'payer' => [ - 'openid' => 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o' - ] -]; - -$app->shipping->uploadCombineShippingInfo($data); -``` - -## 查询订单发货状态 - -```php -$data = $app->shipping->getOrder([ - 'transaction_id' => 'xxx' -]); -``` - -## 查询订单列表 - -```php -$data = $app->shipping->getOrderList(); -``` - -## 确认收货提醒接口 - -```php -$data = [ - 'transaction_id' => '42000020212023112332159214xx', - 'received_time' => '' -]; - -$app->shipping->notifyConfirmReceive($data); -``` - -## 消息跳转路径设置接口 - -```php -$data = [ - 'path' => 'pages/goods/order_detail?id=xxxx', -]; - -$app->shipping->setMsgJumpPath($data); -``` - -## 查询小程序是否已开通发货信息管理服务 - -```php -$app->shipping->isTradeManaged(); -``` - -## 查询小程序是否已完成交易结算管理确认 - -```php -$app->shipping->isTradeCompleted(); -``` diff --git a/vendor/w7corp/easywechat/docs/src/5.x/official-account/accounts.md b/vendor/w7corp/easywechat/docs/src/5.x/official-account/accounts.md index c0f31045..bdbd37eb 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/official-account/accounts.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/official-account/accounts.md @@ -12,7 +12,7 @@ 在微信公众平台的设置中,您可以将您帐号中平台的 `url` 设置为 `您的网址/?id=xxx`,如: ``` -http://easywechat.com/wechat?id=1 +http://www.easywechat.com/wechat?id=1 ``` 而在程序入口处,根据 `id` 查找对应帐号的 `appid` 和 其它信息来创建配置数组创建实例即可。 diff --git a/vendor/w7corp/easywechat/docs/src/5.x/official-account/card.md b/vendor/w7corp/easywechat/docs/src/5.x/official-account/card.md index 153a3c7d..adaf3edc 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/official-account/card.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/official-account/card.md @@ -37,7 +37,7 @@ $card->create($cardType = 'member_card', array $attributes); ```php [ @@ -109,7 +109,7 @@ $attributes = [ 'logo_url' => 'http://mmbiz.qpic.cn/mmbiz/2aJY6aCPatSeibYAyy7yct9zJXL9WsNVL4JdkTbBr184gNWS6nibcA75Hia9CqxicsqjYiaw2xuxYZiaibkmORS2oovdg/0', 'center_title' => '顶部居中按钮', 'center_sub_title' => '按钮下方的wording', - 'center_url' => 'http://easywechat.com', + 'center_url' => 'http://www.easywechat.com', 'custom_url_name' => '立即使用', 'custom_url' => 'http://www.qq.com', 'custom_url_sub_title' => '6个汉字tips', diff --git a/vendor/w7corp/easywechat/docs/src/5.x/official-account/material.md b/vendor/w7corp/easywechat/docs/src/5.x/official-account/material.md index d25098a4..4ff1e227 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/official-account/material.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/official-account/material.md @@ -84,7 +84,7 @@ $result = $app->material->updateArticle($mediaId, [ 'show_cover' => 1, // 是否在文章内容显示封面图片 'digest' => '这里是文章摘要', 'content' => '这里是文章内容,你可以放很长的内容', - 'source_url' => 'https://easywechat.com', + 'source_url' => 'https://www.easywechat.com', ]); // 指定更新多图文中的第 2 篇 @@ -230,7 +230,7 @@ $stats = $app->material->stats(); // } ``` -### 删除永久素材 +### 删除永久素材; ```php $app->material->delete($mediaId); diff --git a/vendor/w7corp/easywechat/docs/src/5.x/official-account/oauth.md b/vendor/w7corp/easywechat/docs/src/5.x/official-account/oauth.md index 673d7fce..66ff72eb 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/official-account/oauth.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/official-account/oauth.md @@ -127,7 +127,7 @@ $user = $app->oauth->userFromCode($code); 我们这里来用原生 PHP 写法举个例子,`oauth_callback` 是我们的授权回调 URL (未 urlencode 编码的 URL), `user/profile` 是我们需要授权才能访问的页面,它的 PHP 代码如下: ```php -// http://easywechat.com/user/profile +// http://easywechat.org/user/profile oauth; + // 获取 OAuth 授权结果用户信息 $code = "微信回调URL携带的 code"; -// 不少用户这里的 code 是来源于静默授权 如果这里你的 $oauth 没有配置 scopes 为 snsapi_base 调用 $oauth->userFromCode($code); 默认会走 snsapi_userinfo; -$oauth = $app->oauth->scopes(['snsapi_base']) -$user = $oauth->userFromCode($code); +$user = $oauth->userFromCode($code); $_SESSION['wechat_user'] = $user->toArray(); diff --git a/vendor/w7corp/easywechat/docs/src/5.x/official-account/poi.md b/vendor/w7corp/easywechat/docs/src/5.x/official-account/poi.md index 2742c425..4e637e08 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/official-account/poi.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/official-account/poi.md @@ -29,8 +29,8 @@ $info = array( "longitude" => 115.32375, "latitude" => 25.097486, "photo_list" => array( - array("photo_url" => "https://easywechat.com"), - array("photo_url" => "https://easywechat.com"), + array("photo_url" => "https://XXX.com"), + array("photo_url" => "https://XXX.com"), ), "recommend" => "麦辣鸡腿堡套餐,麦乐鸡,全家桶", "special" => "免费 wifi,外卖服务", diff --git a/vendor/w7corp/easywechat/docs/src/5.x/official-account/template_message.md b/vendor/w7corp/easywechat/docs/src/5.x/official-account/template_message.md index 9f6d31a2..b48d94cf 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/official-account/template_message.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/official-account/template_message.md @@ -40,7 +40,7 @@ $app->template_message->deletePrivateTemplate($templateId); $app->template_message->send([ 'touser' => 'user-openid', 'template_id' => 'template-id', - 'url' => 'https://easywechat.com', + 'url' => 'https://easywechat.org', 'miniprogram' => [ 'appid' => 'xxxxxxx', 'pagepath' => 'pages/xxx', @@ -52,7 +52,6 @@ $app->template_message->send([ ], ]); ``` - > 如果 url 和 miniprogram 字段都传,会优先跳转小程序。 ## 发送一次性订阅消息 @@ -61,7 +60,7 @@ $app->template_message->send([ $app->template_message->sendSubscription([ 'touser' => 'user-openid', 'template_id' => 'template-id', - 'url' => 'https://easywechat.com', + 'url' => 'https://easywechat.org', 'scene' => 1000, 'data' => [ 'key1' => 'VALUE', diff --git a/vendor/w7corp/easywechat/docs/src/5.x/open-platform/authorizer-delegate.md b/vendor/w7corp/easywechat/docs/src/5.x/open-platform/authorizer-delegate.md index 86ca4f46..c145d4fb 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/open-platform/authorizer-delegate.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/open-platform/authorizer-delegate.md @@ -25,7 +25,7 @@ $miniProgram = $openPlatform->miniProgram(string $appId, string $refreshToken); > $appId 为授权方公众号 APPID,非开放平台第三方平台 APPID > -> $refreshToken 为授权方的 refresh_token,可通过 [获取授权方授权信息](https://easywechat.com/docs/master/open-platform/index#heading-h2-2) 接口获得。 +> $refreshToken 为授权方的 refresh_token,可通过 [获取授权方授权信息](https://www.easywechat.com/docs/master/open-platform/index#heading-h2-2) 接口获得。 ### 帮助授权方管理开放平台账号 @@ -51,11 +51,11 @@ $result = $account->getBinding(); > 授权第三方平台注册的开放平台帐号只可用于获取用户 unionid 实现用户身份打通。 > -> 第三方平台不可操作(包括绑定/解绑)通过 open.weixin.qq.com 线上流程注册的开放平台帐号。 +> 第三方平台不可操作(包括绑定/解绑)通过 open.weixin.qq.com 线上流程注册的开放平台帐号。 > -> 公众号只可将此权限集授权给一个第三方平台,授权互斥。 +> 公众号只可将此权限集授权给一个第三方平台,授权互斥。 -接下来的 API 调用等操作和公众号、小程序的开发一致,请移步到[公众号](https://easywechat.com/docs/master/official-account/index)或[小程序](https://easywechat.com/docs/master/mini-program/index)开发章节继续进行开发吧。 +接下来的 API 调用等操作和公众号、小程序的开发一致,请移步到[公众号](https://www.easywechat.com/docs/master/official-account/index)或[小程序](https://www.easywechat.com/docs/master/mini-program/index)开发章节继续进行开发吧。 ### 代码示例 diff --git a/vendor/w7corp/easywechat/docs/src/5.x/overview.md b/vendor/w7corp/easywechat/docs/src/5.x/overview.md index a5abcbdc..90d0b69a 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/overview.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/overview.md @@ -28,7 +28,7 @@ EasyWeChat 的安装非常简单,因为它是一个标准的 [Composer](https: ### 开始之前 -我们提供了视频教程: 当然,我还是建议你具备以下基础知识,否则可能没有那么快上手。 +我们提供了视频教程:https://www.easywechat.com/tutorials 当然,我还是建议你具备以下基础知识,否则可能没有那么快上手。 本 SDK 不是一个全新再造的东西,所以我不会从 0 开始教会你开发微信,你完全有必要在使用本 SDK 前做好以下工作: @@ -43,8 +43,8 @@ EasyWeChat 的安装非常简单,因为它是一个标准的 [Composer](https: 另外你有必要看一下以下的链接: -> - -> - +> - https://learnku.com/laravel/t/535/assertion-people-who-do-not-understand-the-wisdom-of-asking-questions-will-not-graduate-from-junior-programmers +> - http://laravel-china.github.io/php-the-right-way/ 如果你在群里问以下类似的问题,这真的是你没有做好上面的工作: diff --git a/vendor/w7corp/easywechat/docs/src/5.x/payment/order.md b/vendor/w7corp/easywechat/docs/src/5.x/payment/order.md index a55844c9..7516daab 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/payment/order.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/payment/order.md @@ -53,7 +53,7 @@ $result = $app->order->unify([ 'plan_id' => 123,// 协议模板id 'contract_code' => 100001256,// 签约协议号 'contract_display_account' => '腾讯充值中心',// 签约用户的名称 - 'contract_notify_url' => 'http://easywechat.com/contract_notify' + 'contract_notify_url' => 'http://easywechat.org/contract_notify' ], $isContract); //$result: diff --git a/vendor/w7corp/easywechat/docs/src/5.x/payment/scan-pay.md b/vendor/w7corp/easywechat/docs/src/5.x/payment/scan-pay.md index a6eac7bc..f1642aec 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/payment/scan-pay.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/payment/scan-pay.md @@ -2,7 +2,7 @@ ### 模式一:先生成产品二维码,扫码下单后支付 -> 请务必先熟悉流程: +> 请务必先熟悉流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 #### 生成产品二维码内容 @@ -14,13 +14,13 @@ $content = $app->scheme($productId); // $productId 为你的产品/商品ID, 将 `$content` 生成二维码,SDK 并不内置二维码生成库,使用你熟悉的工具创建二维码即可,比如 PHP 部分有以下工具可以选择: -> - -> - -> - +> - https://github.com/endroid/qr-code +> - https://github.com/SimpleSoftwareIO/simple-qrcode +> - https://github.com/aferrandini/PHPQRCode #### 处理回调 -当用户扫码时,你的回调接口会收到一个通知,调用[统一下单接口](https://easywechat.com/5.x/payment/order)创建订单后返回 `prepay_id`,你可以使用下面的代码处理扫码通知: +当用户扫码时,你的回调接口会收到一个通知,调用[统一下单接口](https://www.easywechat.com/5.x/payment/order)创建订单后返回 `prepay_id`,你可以使用下面的代码处理扫码通知: ```php // 扫码支付通知接收第三个参数 `$alert`,如果触发该函数,会返回“业务错误”到微信服务器,触发 `$fail` 则返回“通信错误” @@ -39,15 +39,15 @@ $response = $app->handleScannedNotify(function ($message, $fail, $alert) use ($a $response->send(); ``` -用户在手机上付完钱以后,你会再收到**付款结果通知**,这时候请参考:[处理微信支付通知](https://easywechat.com/5.x/payment/notify) 更新您的订单状态。 +用户在手机上付完钱以后,你会再收到**付款结果通知**,这时候请参考:[处理微信支付通知](https://www.easywechat.com/5.x/payment/notify) 更新您的订单状态。 ### 模式二:先下单,生成订单后创建二维码 -> : +> :https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 #### 根据用户选购的商品生成订单 -调用[统一下单接口](https://easywechat.com/5.x/payment/order)创建订单: +调用[统一下单接口](https://www.easywechat.com/5.x/payment/order)创建订单: ```php $result = $app->order->unify([ @@ -67,4 +67,4 @@ $result = $app->order->unify([ #### 支付通知 -这种方式的通知就只有**付款结果通知**了,这时候请参考:[处理微信支付通知](https://easywechat.com/5.x/payment/notify) 更新您的订单状态。 +这种方式的通知就只有**付款结果通知**了,这时候请参考:[处理微信支付通知](https://www.easywechat.com/5.x/payment/notify) 更新您的订单状态。 diff --git a/vendor/w7corp/easywechat/docs/src/5.x/sidebar.js b/vendor/w7corp/easywechat/docs/src/5.x/sidebar.js index 127dd7af..ceca937d 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/sidebar.js +++ b/vendor/w7corp/easywechat/docs/src/5.x/sidebar.js @@ -145,11 +145,7 @@ exports = module.exports = [ text: 'Short Link', link: '/5.x/mini-program/short_link.html' }, - { text: '手机号', link: '/5.x/mini-program/phone_number.html' }, - { - text: '小程序发货信息管理服务', - link: '/5.x/mini-program/shipping.html' - } + { text: '手机号', link: '/5.x/mini-program/phone_number.html' } ] }, { diff --git a/vendor/w7corp/easywechat/docs/src/5.x/wework/group-robot.md b/vendor/w7corp/easywechat/docs/src/5.x/wework/group-robot.md index 6d18af0b..305d4729 100644 --- a/vendor/w7corp/easywechat/docs/src/5.x/wework/group-robot.md +++ b/vendor/w7corp/easywechat/docs/src/5.x/wework/group-robot.md @@ -1,12 +1,11 @@ # 群机器人 ## 使用说明 - 使用前必须先在群组里面添加机器人,然后将 `Webhook 地址` 中的 `key` 取出来,作为示例中 `$groupKey` 的值。 -> Webhook 地址示例: +> Webhook 地址示例:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=`ab4f609a-3feb-427c-ae9d-b319ca712d36` -> 微信文档: +> 微信文档:https://work.weixin.qq.com/api/doc#90000/90136/91770 ## 发送文本类型消息 @@ -101,7 +100,7 @@ $items = [ new NewsItem([ 'title' => '中秋节礼品领取', 'description' => '今年中秋节公司有豪礼相送', - 'url' => 'https://easywechat.com', + 'url' => 'https://www.easywechat.com', 'image' => 'http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png', ]), diff --git a/vendor/w7corp/easywechat/docs/src/6.x/client.md b/vendor/w7corp/easywechat/docs/src/6.x/client.md index e77254f1..facdd002 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/client.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/client.md @@ -13,7 +13,6 @@ $response = $api->post('/cgi-bin/user/info/updateremark', [ ]); // or -// 如果参数中存在query之类的关键字建议使用上面的方法,不建议以下调用方式 $response = $api->postJson('/cgi-bin/user/info/updateremark', [ "openid" => "oDF3iY9ffA-hqb2vVvbr7qxf6A0Q", "remark" => "pangzi" @@ -25,19 +24,12 @@ $response = $api->postJson('/cgi-bin/user/info/updateremark', [ ```php get(string $uri, array $options = []): Symfony\Contracts\HttpClient\ResponseInterface post(string $uri, array $options = []): Symfony\Contracts\HttpClient\ResponseInterface +postJson(string $url, array $options = []): Symfony\Contracts\HttpClient\ResponseInterface patch(string $uri, array $options = []): Symfony\Contracts\HttpClient\ResponseInterface put(string $uri, array $options = []): Symfony\Contracts\HttpClient\ResponseInterface delete(string $uri, array $options = []): Symfony\Contracts\HttpClient\ResponseInterface ``` -同时还内置了一些便捷方法: - -```php -postJson(string $url, array $data = [], array $options = []): Symfony\Contracts\HttpClient\ResponseInterface -patchJson(string $url, array $data = [], array $options = []): Symfony\Contracts\HttpClient\ResponseInterface -postXml(string $url, array $data = [], array $options = []): Symfony\Contracts\HttpClient\ResponseInterface -``` - `$options` 为请求参数,可以指定 `query`/`body`/`json`/`xml`/`headers` 等等,具体请参考:[HttpClientInterface::OPTIONS_DEFAULTS](https://github.com/symfony/symfony/blob/6.1/src/Symfony/Contracts/HttpClient/HttpClientInterface.php) --- @@ -47,7 +39,7 @@ postXml(string $url, array $data = [], array $options = []): Symfony\Contracts\H ### GET ```php -$response = $api->get('/cgi-bin/user/list', [ +$response = $api->get('/cgi-bin/user/list', [ 'next_openid' => 'OPENID1', ]); ``` @@ -158,26 +150,8 @@ $media = $client->withFileContents($contents, 'media', 'filename.png')->post('cg ## 自定义 access_token -自定义 Access Token 需要实现接口 `EasyWeChat\Kernel\Contracts\AccessToken`: - ```php -class MyAccessToken implements EasyWeChat\Kernel\Contracts\AccessToken -{ - public function getToken(): string - { - // 你的逻辑 - return 'your token'; - } - - public function toQuery(): array - { - return ['access_token' => $this->getToken()]; - } -} -``` - -```php -$client->withAccessToken(new MyAccessToken()); +$client->withAccessToken('access_token'); $client->get('xxxx'); $client->post('xxxx'); //... @@ -463,7 +437,7 @@ $responses['users']->toArray(); 'retry' => true, // 使用默认配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // 'max_retries' => 3 // // 请求间隔 (毫秒) // 'delay' => 1000, diff --git a/vendor/w7corp/easywechat/docs/src/6.x/index.md b/vendor/w7corp/easywechat/docs/src/6.x/index.md index 87db69a6..0f2e3fcb 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/index.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/index.md @@ -1,6 +1,5 @@ > 👋🏼 您当前浏览的文档为 6.x,其它版本的文档请参考:[5.x](/5.x/)、[4.x](/4.x/)、[3.x](/3.x/) - # EasyWeChat EasyWeChat 是一个开源的 [微信](http://www.wechat.com) 非官方 SDK。安装非常简单,因为它是一个标准的 [Composer](https://getcomposer.org/) 包,这意味着任何满足下列安装条件的 PHP 项目支持 Composer 都可以使用它。 @@ -15,11 +14,6 @@ EasyWeChat 是一个开源的 [微信](http://www.wechat.com) 非官方 SDK。 ## 安装 -::: warning -阿里云的 Composer 源已经停止维护,请停止使用,或更换官方源,或者[腾讯软件源](https://mirrors.tencent.com/help/composer.html) -::: - - ```shell composer require w7corp/easywechat:^6.7 ``` diff --git a/vendor/w7corp/easywechat/docs/src/6.x/introduction.md b/vendor/w7corp/easywechat/docs/src/6.x/introduction.md index e240b1fc..b61ca21a 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/introduction.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/introduction.md @@ -32,7 +32,7 @@ 感谢所有 EasyWeChat 用户的热爱和支持,更要感谢所有的贡献者,因为爱好产生了 EasyWeChat,因为大家的热爱它才成为了今天拥有无数使用者的 EasyWeChat。希望在未来的路上我们能保持初心,一起努力,一起成长。 -- [@overtrue](https://github.com/overtrue) 2022/02/25 +- [@overtrue](https://github.com/overtrue) 2022/02/25 夜 ### 感谢可爱的贡献者们 diff --git a/vendor/w7corp/easywechat/docs/src/6.x/mini-app/config.md b/vendor/w7corp/easywechat/docs/src/6.x/mini-app/config.md index f9461413..42a07c54 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/mini-app/config.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/mini-app/config.md @@ -14,14 +14,6 @@ 'token' => 'your-token', // Token 'aes_key' => '', // EncodingAESKey,兼容与安全模式下请一定要填写!!! - /** - * 是否使用 Stable Access Token - * 默认 false - * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getStableAccessToken.html - * true 使用 false 不使用 - */ - 'use_stable_access_token' => false, - /** * 接口请求相关配置,超时时间等,具体可用参数请参考: * https://github.com/symfony/symfony/blob/5.3/src/Symfony/Contracts/HttpClient/HttpClientInterface.php @@ -34,7 +26,7 @@ 'retry' => true, // 使用默认重试配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // // 最大重试次数 // 'max_retries' => 3, // // 请求间隔 (毫秒) diff --git a/vendor/w7corp/easywechat/docs/src/6.x/mini-app/index.md b/vendor/w7corp/easywechat/docs/src/6.x/mini-app/index.md index 2d5a6a27..4693e64e 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/mini-app/index.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/mini-app/index.md @@ -11,7 +11,7 @@ $config = [ 'app_id' => 'wx3cf0f39249eb0exx', 'secret' => 'f1c242f4f28f735d4687abb469072axx', 'token' => 'easywechat', - 'aes_key' => '......', + 'aes_key' => '......' /** * 接口请求相关配置,超时时间等,具体可用参数请参考: @@ -25,7 +25,7 @@ $config = [ 'retry' => true, // 使用默认重试配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // // 最大重试次数 // 'max_retries' => 3, // // 请求间隔 (毫秒) diff --git a/vendor/w7corp/easywechat/docs/src/6.x/oauth.md b/vendor/w7corp/easywechat/docs/src/6.x/oauth.md index 420b287f..207cf676 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/oauth.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/oauth.md @@ -27,12 +27,12 @@ OAuth 是一个关于授权(authorization)的开放网络标准,在全世 > - **公众平台网页授权获取用户信息** -**授权 URL**: `https://open.weixin.qq.com/connect/oauth2/authorize` +**授权 URL**: `https://open.weixin.qq.com/connect/oauth2/authorize` **Scopes**: `snsapi_base` 与 `snsapi_userinfo` > - **开放平台网页登录** -**授权 URL**: `https://open.weixin.qq.com/connect/qrconnect` +**授权 URL**: `https://open.weixin.qq.com/connect/qrconnect` **Scopes**: `snsapi_login` 他们的逻辑都一样: @@ -101,14 +101,14 @@ $user = $oauth->userFromCode($code); - `$user->getNickname(); ` 对应微信的 `nickname` - `$user->getName(); ` 对应微信的 `nickname` - `$user->getAvatar(); ` 头像地址 -- `$user->getRaw(); ` 原始 API 返回的结果 +- ~~`$user->getRaw(); ` 原始 API 返回的结果~~ - `$user->getAccessToken(); ` `access_token` - `$user->getRefreshToken(); ` `refresh_token` - `$user->getExpiresIn(); ` `expires_in`,Access Token 过期时间 - `$user->getTokenResponse(); ` 返回 `access_token` 时的响应值 > `$user` 里没有`openid`, `$user->id` 便是 `openid`. -> 如果你想拿微信返回给你的原样的全部信息,请使用:$user->getRaw(); +> 如果你想拿微信返回给你的原样的全部信息,请使用:~~$user->getRaw();~~$user->getAttributes(); 当 `scope` 为 `snsapi_base` 时 `$oauth->userFromCode($code);` 对象里只有 `id`,没有其它信息。 @@ -117,7 +117,7 @@ $user = $oauth->userFromCode($code); 我们这里来用公众号原生 PHP 写法举个例子,`oauth_callback` 是我们的授权回调 URL (未 urlencode 编码的 URL), `user/profile` 是我们需要授权才能访问的页面,它的 PHP 代码如下: ```php -// http://easywechat.com/user/profile +// http://easywechat.org/user/profile 'your-token', // Token 'aes_key' => '', // EncodingAESKey,兼容与安全模式下请一定要填写!!! - /** - * 是否使用 Stable Access Token - * 默认 false - * https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/getStableAccessToken.html - * true 使用 false 不使用 - */ - 'use_stable_access_token' => false, - /** * OAuth 配置 * @@ -40,13 +32,13 @@ 'http' => [ 'timeout' => 5.0, // 'base_uri' => 'https://api.weixin.qq.com/', // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri - + 'retry' => true, // 使用默认重试配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // // 最大重试次数 - // 'max_retries' => 3, + // 'max_retries' => 3, // // 请求间隔 (毫秒) // 'delay' => 1000, // // 如果设置,每次重试的等待时间都会增加这个系数 diff --git a/vendor/w7corp/easywechat/docs/src/6.x/official-account/examples.md b/vendor/w7corp/easywechat/docs/src/6.x/official-account/examples.md index 0132f337..f6dea7c7 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/official-account/examples.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/official-account/examples.md @@ -2,43 +2,6 @@ > 👏🏻 欢迎点击本页下方 "帮助我们改善此页面!" 链接参与贡献更多的使用示例! -
- webman 服务端验证消息 - -```php -get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody()); - $symfony_request->headers = new HeaderBag($request->header()); - $app->setRequestFromSymfonyRequest($symfony_request);//必须替换服务端请求 - //$app->setCache(new Psr16Cache(new RedisAdapter(Redis::connection()->client())));//根据需要替换缓存,access_token公众号的全局唯一接口调用凭据会使用该缓存存储 - $server = $app->getServer(); - $response = $server->serve(); - - return response($response->getBody()); - } -} -``` - -
- -``` -结果如下: -```html - - -``` diff --git a/vendor/w7corp/easywechat/docs/src/6.x/open-platform/examples.md b/vendor/w7corp/easywechat/docs/src/6.x/open-platform/examples.md index 15991d76..00e44f3a 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/open-platform/examples.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/open-platform/examples.md @@ -31,9 +31,9 @@ Route::post('open-platform', function () { return $server->serve(); }); ``` - +
Laravel Octane(swoole) 开放平台处理推送消息 @@ -42,7 +42,7 @@ Route::post('open-platform', function () { use EasyWeChat\OpenPlatform\Application; -// 授权事件回调地址:http://easywechat.com/open-platform/server +// 授权事件回调地址:http://yourdomain.com/open-platform/server Route::post('open-platform/server', function () { $config = config('wechatv6.open_platform'); $app = new Application($config); @@ -54,7 +54,6 @@ Route::post('open-platform/server', function () { return $server->serve(); }); ``` -
@@ -68,7 +67,7 @@ use support\Request; use Symfony\Component\HttpFoundation\HeaderBag; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; -// 授权事件回调地址:http://easywechat.com/openPlatform/server +// 授权事件回调地址:http://yourdomain.com/openPlatform/server class OpenPlatform { @@ -85,9 +84,9 @@ class OpenPlatform } } ``` -
+
Laravel 开放平台PC版预授权6.3.0+ @@ -130,7 +129,7 @@ Route::any('open-platform/preauth', function(){ ```php // routes/web.php -// 例如:https://easywechat.com/open-platform/miniapp/get-phone-number/wx123212312313abc +// 例如:https://yourdomain.com/open-platform/miniapp/get-phone-number/wx123212312313abc Route::any('open-platform/miniapp/get-phone-number/{appid}', 'OpenPlatformController@getPhoneNumber'); Route::any('open-platform/officialAccount/get-user-list/{appid}', 'OpenPlatformController@getUsers'); diff --git a/vendor/w7corp/easywechat/docs/src/6.x/open-platform/index.md b/vendor/w7corp/easywechat/docs/src/6.x/open-platform/index.md index 0686eaee..00ff7b2d 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/open-platform/index.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/open-platform/index.md @@ -14,7 +14,7 @@ $config = [ 'app_id' => 'wx3cf0f39249eb0exx', // 开放平台账号的 appid 'secret' => 'f1c242f4f28f735d4687abb469072axx', // 开放平台账号的 secret 'token' => 'easywechat', // 开放平台账号的 token - 'aes_key' => '', // 明文模式请勿填写 EncodingAESKey + 'aes_key' => '' // 明文模式请勿填写 EncodingAESKey /** * 接口请求相关配置,超时时间等,具体可用参数请参考: @@ -28,7 +28,7 @@ $config = [ 'retry' => true, // 使用默认重试配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // // 最大重试次数 // 'max_retries' => 3, // // 请求间隔 (毫秒) @@ -100,7 +100,7 @@ $app->setComponentAccessToken($componentAccessToken) 你可以通过以下方式拿到当前 verify_ticket 类: ```php -$verifyTicket = $app->getVerifyTicket(); +$verifyTicket = $app->getVerfiyTicket(); $verifyTicket->getTicket(); // strval ``` diff --git a/vendor/w7corp/easywechat/docs/src/6.x/open-work/index.md b/vendor/w7corp/easywechat/docs/src/6.x/open-work/index.md index ec09e149..eb554449 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/open-work/index.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/open-work/index.md @@ -26,7 +26,7 @@ $config = [ 'retry' => true, // 使用默认重试配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // // 最大重试次数 // 'max_retries' => 3, // // 请求间隔 (毫秒) diff --git a/vendor/w7corp/easywechat/docs/src/6.x/open-work/server.md b/vendor/w7corp/easywechat/docs/src/6.x/open-work/server.md index f55f3629..e69fea0b 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/open-work/server.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/open-work/server.md @@ -10,7 +10,7 @@ - 授权成功 `create_auth` - 授权变更 `change_auth` - 授权取消 `cancel_auth` -- 通讯录变更(InfoType) `change_contact` +- 通讯录变更(Event) `change_contact` - ChangeType - 成员变更 - 新增成员 `create_user` @@ -23,8 +23,6 @@ - 标签变更 - 成员标签变更 `update_tag` - 共享应用事件回调 `share_agent_change` -- 重置永久授权码通知 `reset_permanent_code` -- 应用管理员变更通知 `change_app_admin` ## 内置消息处理器 @@ -127,22 +125,6 @@ $server->handleShareAgentChanged(function($message, \Closure $next) { return $next($message); }); ``` -### 重置永久授权码通知 - -```php -$server->handleResetPermanentCode(function($message, \Closure $next) { - // ... - return $next($message); -}); -``` -### 应用管理员变更通知 - -```php -$server->handleChangeAppAdmin(function($message, \Closure $next) { - // ... - return $next($message); -}); -``` ### suite_ticket 推送事件 diff --git a/vendor/w7corp/easywechat/docs/src/6.x/pay/index.md b/vendor/w7corp/easywechat/docs/src/6.x/pay/index.md index e2d81c75..72e5ae5e 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/pay/index.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/pay/index.md @@ -24,7 +24,6 @@ $config = [ // 平台证书:微信支付 APIv3 平台证书,需要使用工具下载 // 下载工具:https://github.com/wechatpay-apiv3/CertificateDownloader 'platform_certs' => [ - // 请使用绝对路径 // '/path/to/wechatpay/cert.pem', ], @@ -88,59 +87,3 @@ $account->getSecretKey(); $account->getV2SecretKey(); $account->getPlatformCerts(); ``` - -### 一些可能会用到的 - -#### 签名验证 - -按官方说法,建议在拿到**微信接口响应**和**接收到微信支付的回调通知**时,对通知的签名进行验证,以确保通知是微信支付发送的。 - -你可以通过以下方式获取签名验证器: - -```php -$app->getValidator(); -``` - -##### 推送消息的签名验证 - -```php -$server = $app->getServer(); - -$server->handlePaid(function (Message $message, \Closure $next) use ($app) { - // $message->out_trade_no 获取商户订单号 - // $message->payer['openid'] 获取支付者 openid - - try{ - $app->getValidator()->validate($app->getRequest()); - // 验证通过,业务处理 - } catch(Exception $e){ - // 验证失败 - } - - return $next($message); -}); - -// 默认返回 ['code' => 'SUCCESS', 'message' => '成功'] -return $server->serve(); -``` - -##### API返回值的签名验证 - -```php -// API 请求示例 -$response = $app->getClient()->postJson("v3/pay/transactions/jsapi", [...]); - -try{ - $app->getValidator()->validate($response->toPsrResponse()); - // 验证通过 -} catch(Exception $e){ - // 验证失败 -} -``` - -#### 获取证书序列号 - -```bash -openssl x509 -in /path/to/merchant/apiclient_cert.pem -noout -serial | awk -F= '{print $2}' -``` - diff --git a/vendor/w7corp/easywechat/docs/src/6.x/pay/media.md b/vendor/w7corp/easywechat/docs/src/6.x/pay/media.md deleted file mode 100644 index 991f5a56..00000000 --- a/vendor/w7corp/easywechat/docs/src/6.x/pay/media.md +++ /dev/null @@ -1,32 +0,0 @@ -## 文件上传 6.10.0+ - -由于微信 v3 对文件类上传使用特殊的签名机制,参见:[微信支付 - 图片上传API](https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter2_1_1.shtml)。 - -因此,我们提供了一个媒体上传方法,方便开发者使用。 - -```php -$path = '/path/to/your/files/demo.jpg'; - -$api->uploadMedia('/v3/marketing/favor/media/image-upload', $path); -``` - -## 自定义 meta 信息 - -部分接口使用的签名 meta 不一致,所以可以自行传入: - -```php -$url = '/v3/...'; -$path = '/path/to/your/files/demo.jpg'; -$meta = [ - 'bank_type' => 'CFT', - 'filename' => 'demo.jpg', - 'sha256' => 'xxxxxxxxxxx', -]; - -$api->uploadMedia($url, $path, $meta); -``` - -## 关于 sha256 - -- 文件,用 `hash_file('sha256', $path)` 计算 -- 字符串,用 `hash('sha256', $string)` 计算 diff --git a/vendor/w7corp/easywechat/docs/src/6.x/pay/server.md b/vendor/w7corp/easywechat/docs/src/6.x/pay/server.md index 4b5d3a21..be6898e0 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/pay/server.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/pay/server.md @@ -52,31 +52,6 @@ $server->handleRefunded(function (Message $message, \Closure $next) { return $server->serve(); ``` -🚨 注意:经网友发现官方仍存在[使用 v2 模式的退款推送](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=10),所以如果你的退款逻辑有异常,请参考以下方式实现(需要配置 v2 API key): - -> 网友反馈的问题:https://github.com/w7corp/easywechat/issues/2737 -> 目前已知的情况是:微信商户平台填写的 API 回调地址,然后在商户平台手动处理退款的。 - -```php -// 建议使用单独的路由处理退款! -$server = $app->getServer(); - -// 推送消息,已解密 -// 结构参考:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=10 -$message = $server->getReqeustMessage(); - -// 你的逻辑... - -// 返回 SUCCESS 或者 FAIL 等其他状态 -return new \Nyholm\Psr7\Response( - 200, [], - \EasyWeChat\Kernel\Support\Xml::build([ - 'return_code' => 'SUCCESS', - 'return_msg' => 'OK' - ]) -); -``` - ## 其它事件处理 以上便捷方法都只处理了**成功状态**,其它状态,可以通过自定义事件处理中间件的形式处理: @@ -96,7 +71,7 @@ $server->with(function($message, \Closure $next) { $message = $server->getRequestMessage(); ``` -`$message` 为一个 `EasyWeChat\Pay\Message` 实例。 +`$message` 为一个 `EasyWeChat\OpenWork\Message` 实例。 你可以在处理完逻辑后自行创建一个响应,当然,在不同的框架里,响应写法也不一样,请自行实现。 diff --git a/vendor/w7corp/easywechat/docs/src/6.x/sidebar.js b/vendor/w7corp/easywechat/docs/src/6.x/sidebar.js index 45617689..a2f062c2 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/sidebar.js +++ b/vendor/w7corp/easywechat/docs/src/6.x/sidebar.js @@ -31,7 +31,6 @@ exports = module.exports = [ { text: 'API 调用', link: '/6.x/client.html' }, { text: '回调通知', link: '/6.x/pay/server.html' }, { text: '工具', link: '/6.x/pay/utils.html' }, - { text: '文件上传', link: '/6.x/pay/media.html' }, { text: '代码示例', link: '/6.x/pay/examples.html' } ] }, diff --git a/vendor/w7corp/easywechat/docs/src/6.x/troubleshooting.md b/vendor/w7corp/easywechat/docs/src/6.x/troubleshooting.md index d19b969d..10950901 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/troubleshooting.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/troubleshooting.md @@ -4,7 +4,7 @@ 这,是我们不愿看到的。 -所以在这里,我们将陆续将微信开发中可能遇到的各种疑难问题进行汇总,并给出对应的解决办法。一般情况下,这些问题都可以对号入座,轻松地解决。但也不排除特殊情况,这时候你遇到的问题与文中某一个症状一致,但文中所给的解决方案并不奏效,这种情况下就需要发挥你自己的智慧,去……折腾了…… +所以在这里,我们将陆续将微信开发中可能遇到的各种疑难问题进行汇总,并给出对应的解决办法。一般情况下,这些问题都可以对号入座,轻松地解决。但也不排除特殊情况,这时候你遇到的问题与文中某一个症状一致,但文中所给的解决方案并不凑效,这种情况下就需要发挥你自己的智慧,去……折腾了…… 我们期待这一版块为各位的开发带来便利,同时也希望各位本着开源、分享的精神对其进行补充和完善,将各种坑一一填小、填平,让微信开发变得不那么痛苦,甚至,变成一件快乐的事…… diff --git a/vendor/w7corp/easywechat/docs/src/6.x/work/index.md b/vendor/w7corp/easywechat/docs/src/6.x/work/index.md index e24386d4..3403a803 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/work/index.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/work/index.md @@ -26,7 +26,7 @@ $config = [ 'retry' => true, // 使用默认重试配置 // 'retry' => [ // // 仅以下状态码重试 - // 'status_codes' => [429, 500] + // 'http_codes' => [429, 500] // // 最大重试次数 // 'max_retries' => 3, // // 请求间隔 (毫秒) diff --git a/vendor/w7corp/easywechat/docs/src/6.x/work/utils.md b/vendor/w7corp/easywechat/docs/src/6.x/work/utils.md index 7d708b05..6bb7a1cf 100644 --- a/vendor/w7corp/easywechat/docs/src/6.x/work/utils.md +++ b/vendor/w7corp/easywechat/docs/src/6.x/work/utils.md @@ -34,7 +34,7 @@ $config = $utils->buildJsSdkConfig( 'openTagList' => ['openTag1','openTag2'], 'debug' => false, 'beta' => true, - 'url' => 'https://easywechat.com/', + 'url' => 'https://www.easywechat.com/', 'nonceStr' => 'mock-nonce', 'timestamp' => 1601234567, 'appId' => 'mock-appid', @@ -60,7 +60,7 @@ $config = $utils->buildJsSdkAgentConfig( 'jsApiList' => ['api1','api2'], 'openTagList' => ['openTag1','openTag2'], 'debug' => false, - 'url' => 'https://easywechat.com/', + 'url' => 'https://www.easywechat.com/', 'nonceStr' => 'mock-nonce', 'timestamp' => 1601234567, 'corpid' => 'mock-corpid', diff --git a/vendor/w7corp/easywechat/docs/src/index.md b/vendor/w7corp/easywechat/docs/src/index.md index 95070d3c..3663be1d 100644 --- a/vendor/w7corp/easywechat/docs/src/index.md +++ b/vendor/w7corp/easywechat/docs/src/index.md @@ -26,15 +26,31 @@ let latestVersion = versions[0]
- + $keys - * @return array + * @return array */ #[Pure] public function getMany(array $keys): array @@ -72,13 +71,17 @@ class Config implements ArrayAccess, ConfigInterface return $config; } + /** + * @param string $key + * @param mixed|null $value + */ public function set(string $key, mixed $value = null): void { Arr::set($this->items, $key, $value); } /** - * @return array + * @return array */ public function all(): array { diff --git a/vendor/w7corp/easywechat/src/Kernel/Contracts/Aes.php b/vendor/w7corp/easywechat/src/Kernel/Contracts/Aes.php index 02c3e607..e72969f3 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Contracts/Aes.php +++ b/vendor/w7corp/easywechat/src/Kernel/Contracts/Aes.php @@ -4,7 +4,7 @@ namespace EasyWeChat\Kernel\Contracts; interface Aes { - public static function encrypt(string $plaintext, string $key, ?string $iv = null): string; + public static function encrypt(string $plaintext, string $key, string $iv = null): string; - public static function decrypt(string $ciphertext, string $key, ?string $iv = null): string; + public static function decrypt(string $ciphertext, string $key, string $iv = null): string; } diff --git a/vendor/w7corp/easywechat/src/Kernel/Contracts/JsApiTicket.php b/vendor/w7corp/easywechat/src/Kernel/Contracts/JsApiTicket.php deleted file mode 100644 index 27616d20..00000000 --- a/vendor/w7corp/easywechat/src/Kernel/Contracts/JsApiTicket.php +++ /dev/null @@ -1,15 +0,0 @@ - - */ - public function configSignature(string $url, string $nonce, int $timestamp): array; -} diff --git a/vendor/w7corp/easywechat/src/Kernel/Contracts/RefreshableJsApiTicket.php b/vendor/w7corp/easywechat/src/Kernel/Contracts/RefreshableJsApiTicket.php deleted file mode 100644 index c0ec8edc..00000000 --- a/vendor/w7corp/easywechat/src/Kernel/Contracts/RefreshableJsApiTicket.php +++ /dev/null @@ -1,8 +0,0 @@ -appId, 32); diff --git a/vendor/w7corp/easywechat/src/Kernel/Exceptions/HttpException.php b/vendor/w7corp/easywechat/src/Kernel/Exceptions/HttpException.php index db27bd27..143d903d 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Exceptions/HttpException.php +++ b/vendor/w7corp/easywechat/src/Kernel/Exceptions/HttpException.php @@ -12,8 +12,12 @@ class HttpException extends Exception /** * HttpException constructor. + * + * @param string $message + * @param ResponseInterface|null $response + * @param int $code */ - public function __construct(string $message, ?ResponseInterface $response = null, int $code = 0) + public function __construct(string $message, ResponseInterface $response = null, int $code = 0) { parent::__construct($message, $code); diff --git a/vendor/w7corp/easywechat/src/Kernel/Form/File.php b/vendor/w7corp/easywechat/src/Kernel/Form/File.php index 120833bc..91ecef83 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Form/File.php +++ b/vendor/w7corp/easywechat/src/Kernel/Form/File.php @@ -2,47 +2,29 @@ namespace EasyWeChat\Kernel\Form; -use const PATHINFO_EXTENSION; - use EasyWeChat\Kernel\Exceptions\RuntimeException; -use Symfony\Component\Mime\MimeTypes; -use Symfony\Component\Mime\Part\DataPart; - use function file_put_contents; use function md5; use function pathinfo; +use const PATHINFO_EXTENSION; use function strtolower; +use Symfony\Component\Mime\MimeTypes; +use Symfony\Component\Mime\Part\DataPart; use function sys_get_temp_dir; use function tempnam; class File extends DataPart { /** - * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException + * @throws RuntimeException */ - public static function from( - string $pathOrContents, - ?string $filename = null, - ?string $contentType = null, - ?string $encoding = null - ): DataPart { - if (file_exists($pathOrContents)) { - return static::fromPath($pathOrContents, $filename, $contentType); - } - - return static::fromContents($pathOrContents, $filename, $contentType, $encoding); - } - - /** - * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException - */ - public static function fromContents( + public static function withContents( string $contents, ?string $filename = null, ?string $contentType = null, ?string $encoding = null ): DataPart { - if ($contentType === null) { + if (null === $contentType) { $mimeTypes = new MimeTypes(); if ($filename) { @@ -62,18 +44,4 @@ class File extends DataPart return new self($contents, $filename, $contentType, $encoding); } - - /** - * @throws RuntimeException - * - * @deprecated since EasyWeChat 7.0, use fromContents() instead - */ - public static function withContents( - string $contents, - ?string $filename = null, - ?string $contentType = null, - ?string $encoding = null - ): DataPart { - return self::fromContents(...func_get_args()); - } } diff --git a/vendor/w7corp/easywechat/src/Kernel/Form/Form.php b/vendor/w7corp/easywechat/src/Kernel/Form/Form.php index 1a3bc582..32cdca3c 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Form/Form.php +++ b/vendor/w7corp/easywechat/src/Kernel/Form/Form.php @@ -24,7 +24,7 @@ class Form } /** - * @return array + * @return array */ #[ArrayShape(['headers' => 'array', 'body' => 'string'])] public function toArray(): array diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/AccessTokenAwareClient.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/AccessTokenAwareClient.php index cd639e2b..43d211c2 100644 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/AccessTokenAwareClient.php +++ b/vendor/w7corp/easywechat/src/Kernel/HttpClient/AccessTokenAwareClient.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace EasyWeChat\Kernel\HttpClient; +use function array_merge; use Closure; use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; use EasyWeChat\Kernel\Contracts\AccessTokenAwareHttpClient as AccessTokenAwareHttpClientInterface; @@ -14,22 +15,19 @@ use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function array_merge; - /** * Class AccessTokenAwareClient. * * - * @method HttpClientInterface withAppIdAs(string $name = null) 自定义 app_id 参数名 * @method HttpClientInterface withAppId(string $value = null) */ class AccessTokenAwareClient implements AccessTokenAwareHttpClientInterface { use AsyncDecoratorTrait; use HttpClientMethods; + use RetryableClient; use MockableHttpClient; use RequestWithPresets; - use RetryableClient; public function __construct( ?HttpClientInterface $client = null, diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/HttpClientMethods.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/HttpClientMethods.php index 67cd47a3..42eedfea 100644 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/HttpClientMethods.php +++ b/vendor/w7corp/easywechat/src/Kernel/HttpClient/HttpClientMethods.php @@ -8,7 +8,9 @@ use Symfony\Contracts\HttpClient\ResponseInterface as ResponseInterfaceAlias; trait HttpClientMethods { /** + * @param string $url * @param array $options + * @return Response|ResponseInterfaceAlias * * @throws TransportExceptionInterface */ @@ -30,28 +32,20 @@ trait HttpClientMethods /** * @throws TransportExceptionInterface */ - public function postJson(string $url, array $data = [], array $options = []): Response|ResponseInterfaceAlias + public function postJson(string $url, array $options = []): Response|ResponseInterfaceAlias { $options['headers']['Content-Type'] = 'application/json'; - $options['json'] = $data; - return $this->request('POST', $url, RequestUtil::formatOptions($options, 'POST')); } /** * @throws TransportExceptionInterface */ - public function postXml(string $url, array $data = [], array $options = []): Response|ResponseInterfaceAlias + public function postXml(string $url, array $options = []): Response|ResponseInterfaceAlias { $options['headers']['Content-Type'] = 'text/xml'; - if (array_key_exists('xml', $data)) { - $data = $data['xml']; - } - - $options['xml'] = $data; - return $this->request('POST', $url, RequestUtil::formatOptions($options, 'POST')); } diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestUtil.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestUtil.php index 81bc025b..7ac6f98f 100644 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestUtil.php +++ b/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestUtil.php @@ -3,25 +3,23 @@ namespace EasyWeChat\Kernel\HttpClient; use const ARRAY_FILTER_USE_KEY; -use const JSON_FORCE_OBJECT; -use const JSON_UNESCAPED_UNICODE; - +use function array_key_exists; use EasyWeChat\Kernel\Support\UserAgent; use EasyWeChat\Kernel\Support\Xml; +use function in_array; use InvalidArgumentException; +use function is_array; +use function is_string; use JetBrains\PhpStorm\ArrayShape; +use function json_encode; +use const JSON_FORCE_OBJECT; +use const JSON_UNESCAPED_UNICODE; use Nyholm\Psr7\Factory\Psr17Factory; use Nyholm\Psr7Server\ServerRequestCreator; use Psr\Http\Message\ServerRequestInterface; use Symfony\Component\HttpClient\Retry\GenericRetryStrategy; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function array_key_exists; -use function in_array; -use function is_array; -use function is_string; -use function json_encode; - class RequestUtil { /** @@ -82,17 +80,12 @@ class RequestUtil return $options; } - $contentType = $options['headers']['Content-Type'] ?? $options['headers']['content-type'] ?? null; $name = in_array($method, ['GET', 'HEAD', 'DELETE']) ? 'query' : 'body'; - if ($contentType === 'application/json') { + if (($options['headers']['Content-Type'] ?? $options['headers']['content-type'] ?? null) === 'application/json') { $name = 'json'; } - if ($contentType === 'text/xml') { - $name = 'xml'; - } - foreach ($options as $key => $value) { if (! array_key_exists($key, HttpClientInterface::OPTIONS_DEFAULTS)) { $options[$name][trim($key, '"')] = $value; @@ -109,8 +102,6 @@ class RequestUtil */ public static function formatBody(array $options): array { - $contentType = $options['headers']['Content-Type'] ?? $options['headers']['content-type'] ?? null; - if (isset($options['xml'])) { if (is_array($options['xml'])) { $options['xml'] = Xml::build($options['xml']); @@ -120,7 +111,8 @@ class RequestUtil throw new InvalidArgumentException('The type of `xml` must be string or array.'); } - if (! $contentType) { + /** @phpstan-ignore-next-line */ + if (! isset($options['headers']['Content-Type']) && ! isset($options['headers']['content-type'])) { /** @phpstan-ignore-next-line */ $options['headers']['Content-Type'] = [$options['headers'][] = 'Content-Type: text/xml']; } @@ -142,7 +134,8 @@ class RequestUtil throw new InvalidArgumentException('The type of `json` must be string or array.'); } - if (! $contentType) { + /** @phpstan-ignore-next-line */ + if (! isset($options['headers']['Content-Type']) && ! isset($options['headers']['content-type'])) { /** @phpstan-ignore-next-line */ $options['headers']['Content-Type'] = [$options['headers'][] = 'Content-Type: application/json']; } diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestWithPresets.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestWithPresets.php index 70a1de33..aaea8682 100644 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestWithPresets.php +++ b/vendor/w7corp/easywechat/src/Kernel/HttpClient/RequestWithPresets.php @@ -2,13 +2,12 @@ namespace EasyWeChat\Kernel\HttpClient; +use function array_merge; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\RuntimeException; use EasyWeChat\Kernel\Form\File; use EasyWeChat\Kernel\Form\Form; use EasyWeChat\Kernel\Support\Str; - -use function array_merge; use function in_array; use function is_file; use function is_string; @@ -88,7 +87,7 @@ trait RequestWithPresets * @throws RuntimeException * @throws InvalidArgumentException */ - public function withFile(string $pathOrContents, string $formName = 'file', ?string $filename = null): static + public function withFile(string $pathOrContents, string $formName = 'file', string $filename = null): static { $file = is_file($pathOrContents) ? File::fromPath( $pathOrContents, @@ -111,7 +110,7 @@ trait RequestWithPresets * @throws RuntimeException * @throws InvalidArgumentException */ - public function withFileContents(string $contents, string $formName = 'file', ?string $filename = null): static + public function withFileContents(string $contents, string $formName = 'file', string $filename = null): static { return $this->withFile($contents, $formName, $filename); } diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/Response.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/Response.php index 60d0eccb..74484eb9 100644 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/Response.php +++ b/vendor/w7corp/easywechat/src/Kernel/HttpClient/Response.php @@ -2,20 +2,27 @@ namespace EasyWeChat\Kernel\HttpClient; -use const JSON_UNESCAPED_UNICODE; - +use function array_key_exists; use ArrayAccess; +use function base64_encode; use Closure; use EasyWeChat\Kernel\Contracts\Arrayable; use EasyWeChat\Kernel\Contracts\Jsonable; use EasyWeChat\Kernel\Exceptions\BadMethodCallException; use EasyWeChat\Kernel\Exceptions\BadResponseException; use EasyWeChat\Kernel\Support\Xml; +use function file_put_contents; use Http\Discovery\Exception\NotFoundException; use Http\Discovery\Psr17FactoryDiscovery; +use function json_encode; +use const JSON_UNESCAPED_UNICODE; use Nyholm\Psr7\Factory\Psr17Factory; use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\StreamFactoryInterface; +use function sprintf; +use function str_contains; +use function str_starts_with; +use function strtolower; use Symfony\Component\HttpClient\Response\MockResponse; use Symfony\Component\HttpClient\Response\StreamableInterface; use Symfony\Component\HttpClient\Response\StreamWrapper; @@ -27,21 +34,12 @@ use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\ResponseInterface; use Throwable; -use function array_key_exists; -use function base64_encode; -use function file_put_contents; -use function json_encode; -use function sprintf; -use function str_contains; -use function str_starts_with; -use function strtolower; - /** * @implements \ArrayAccess * * @see \Symfony\Contracts\HttpClient\ResponseInterface */ -class Response implements Arrayable, ArrayAccess, Jsonable, ResponseInterface, StreamableInterface +class Response implements Jsonable, Arrayable, ArrayAccess, ResponseInterface, StreamableInterface { public function __construct( protected ResponseInterface $response, @@ -98,7 +96,7 @@ class Response implements Arrayable, ArrayAccess, Jsonable, ResponseInterface, S } try { - return $this->getStatusCode() >= 400; + return 400 <= $this->getStatusCode(); } catch (Throwable $e) { return true; } @@ -175,11 +173,11 @@ class Response implements Arrayable, ArrayAccess, Jsonable, ResponseInterface, S return 'data:'.$this->getHeaderLine('content-type').';base64,'.base64_encode($this->getContent()); } - public function toPsrResponse(?ResponseFactoryInterface $responseFactory = null, ?StreamFactoryInterface $streamFactory = null): \Psr\Http\Message\ResponseInterface + public function toPsrResponse(ResponseFactoryInterface $responseFactory = null, StreamFactoryInterface $streamFactory = null): \Psr\Http\Message\ResponseInterface { $streamFactory ??= $responseFactory instanceof StreamFactoryInterface ? $responseFactory : null; - if ($responseFactory === null || $streamFactory === null) { + if (null === $responseFactory || null === $streamFactory) { if (! class_exists(Psr17Factory::class) && ! class_exists(Psr17FactoryDiscovery::class)) { throw new \LogicException('You cannot use the "Symfony\Component\HttpClient\Psr18Client" as no PSR-17 factories have been provided. Try running "composer require nyholm/psr7".'); } @@ -305,7 +303,7 @@ class Response implements Arrayable, ArrayAccess, Jsonable, ResponseInterface, S $this->response->cancel(); } - public function getInfo(?string $type = null): mixed + public function getInfo(string $type = null): mixed { return $this->response->getInfo($type); } diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/RetryableClient.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/RetryableClient.php index c43daa0c..44b4e6c1 100644 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/RetryableClient.php +++ b/vendor/w7corp/easywechat/src/Kernel/HttpClient/RetryableClient.php @@ -36,7 +36,7 @@ trait RetryableClient public function retryUsing( RetryStrategyInterface $strategy, int $maxRetries = 3, - ?LoggerInterface $logger = null + LoggerInterface $logger = null ): static { $this->client = new RetryableHttpClient($this->client, $strategy, $maxRetries, $logger); diff --git a/vendor/w7corp/easywechat/src/Kernel/HttpClient/ScopingHttpClient.php b/vendor/w7corp/easywechat/src/Kernel/HttpClient/ScopingHttpClient.php deleted file mode 100644 index fad67105..00000000 --- a/vendor/w7corp/easywechat/src/Kernel/HttpClient/ScopingHttpClient.php +++ /dev/null @@ -1,62 +0,0 @@ -client = $client; - $this->defaultOptionsByRegexp = $defaultOptionsByRegexp; - } - - public function request(string $method, string $url, array $options = []): ResponseInterface - { - foreach ($this->defaultOptionsByRegexp as $regexp => $defaultOptions) { - if (preg_match($regexp, $url)) { - $options = self::mergeDefaultOptions($options, $defaultOptions, true); - break; - } - } - - return $this->client->request($method, $url, $options); - } - - public function stream(ResponseInterface|iterable $responses, ?float $timeout = null): ResponseStreamInterface - { - return $this->client->stream($responses, $timeout); - } - - /** - * @return void - */ - public function reset() - { - if ($this->client instanceof ResetInterface) { - $this->client->reset(); - } - } - - public function setLogger(LoggerInterface $logger): void - { - if ($this->client instanceof LoggerAwareInterface) { - $this->client->setLogger($logger); - } - } -} diff --git a/vendor/w7corp/easywechat/src/Kernel/Message.php b/vendor/w7corp/easywechat/src/Kernel/Message.php index 960ff91c..1c97029c 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Message.php +++ b/vendor/w7corp/easywechat/src/Kernel/Message.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace EasyWeChat\Kernel; use ArrayAccess; -use EasyWeChat\Kernel\Contracts\Jsonable; use EasyWeChat\Kernel\Exceptions\BadRequestException; use EasyWeChat\Kernel\Support\Xml; use EasyWeChat\Kernel\Traits\HasAttributes; @@ -15,10 +14,9 @@ use Psr\Http\Message\ServerRequestInterface; * @property string $FromUserName * @property string $ToUserName * @property string $Encrypt - * * @implements ArrayAccess */ -abstract class Message implements \JsonSerializable, ArrayAccess, Jsonable +abstract class Message implements ArrayAccess { use HasAttributes; @@ -31,6 +29,9 @@ abstract class Message implements \JsonSerializable, ArrayAccess, Jsonable } /** + * @param ServerRequestInterface $request + * @return Message + * * @throws BadRequestException */ public static function createFromRequest(ServerRequestInterface $request): Message @@ -47,14 +48,14 @@ abstract class Message implements \JsonSerializable, ArrayAccess, Jsonable */ public static function format(string $originContent): array { - if (stripos($originContent, '<') === 0) { + if (0 === stripos($originContent, '<')) { $attributes = Xml::parse($originContent); } // Handle JSON format. $dataSet = json_decode($originContent, true); - if (json_last_error() === JSON_ERROR_NONE && $originContent) { + if (JSON_ERROR_NONE === json_last_error() && $originContent) { $attributes = $dataSet; } diff --git a/vendor/w7corp/easywechat/src/Kernel/ServerResponse.php b/vendor/w7corp/easywechat/src/Kernel/ServerResponse.php index 571123de..8e458845 100644 --- a/vendor/w7corp/easywechat/src/Kernel/ServerResponse.php +++ b/vendor/w7corp/easywechat/src/Kernel/ServerResponse.php @@ -2,19 +2,17 @@ namespace EasyWeChat\Kernel; -use const PHP_OUTPUT_HANDLER_CLEANABLE; -use const PHP_OUTPUT_HANDLER_FLUSHABLE; -use const PHP_OUTPUT_HANDLER_REMOVABLE; - -use JetBrains\PhpStorm\Pure; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\StreamInterface; - use function array_keys; use function array_map; use function count; use function header; +use JetBrains\PhpStorm\Pure; use function max; +use const PHP_OUTPUT_HANDLER_CLEANABLE; +use const PHP_OUTPUT_HANDLER_FLUSHABLE; +use const PHP_OUTPUT_HANDLER_REMOVABLE; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\StreamInterface; use function sprintf; use function ucwords; @@ -134,7 +132,7 @@ class ServerResponse implements ResponseInterface } foreach ($this->getHeaders() as $name => $values) { - $replace = \strcasecmp($name, 'Content-Type') === 0; + $replace = 0 === \strcasecmp($name, 'Content-Type'); foreach ($values as $value) { header($name.': '.$value, $replace, $this->getStatusCode()); @@ -168,7 +166,6 @@ class ServerResponse implements ResponseInterface * Resulting level can be greater than target level if a non-removable buffer has been encountered. * * @link https://github.com/symfony/http-foundation/blob/6.1/Response.php - * * @final */ public static function closeOutputBuffers(int $targetLevel, bool $flush): void @@ -189,18 +186,16 @@ class ServerResponse implements ResponseInterface public function __toString(): string { $headers = $this->getHeaders(); + + ksort($headers); + + $max = max(array_map('strlen', array_keys($headers))) + 1; $headersString = ''; - if (! empty($headers)) { - ksort($headers); - - $max = max(array_map('strlen', array_keys($headers))) + 1; - - foreach ($headers as $name => $values) { - $name = ucwords($name, '-'); - foreach ($values as $value) { - $headersString .= sprintf("%-{$max}s %s\r\n", $name.':', $value); - } + foreach ($headers as $name => $values) { + $name = ucwords($name, '-'); + foreach ($values as $value) { + $headersString .= sprintf("%-{$max}s %s\r\n", $name.':', $value); } } diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/AesCbc.php b/vendor/w7corp/easywechat/src/Kernel/Support/AesCbc.php index b349b9c7..36f80ee6 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/AesCbc.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/AesCbc.php @@ -2,25 +2,23 @@ namespace EasyWeChat\Kernel\Support; -use const OPENSSL_RAW_DATA; - +use function base64_decode; use EasyWeChat\Kernel\Contracts\Aes; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; - -use function base64_decode; use function openssl_decrypt; use function openssl_error_string; +use const OPENSSL_RAW_DATA; class AesCbc implements Aes { /** * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException */ - public static function encrypt(string $plaintext, string $key, ?string $iv = null): string + public static function encrypt(string $plaintext, string $key, string $iv = null): string { $ciphertext = \openssl_encrypt($plaintext, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, (string) $iv); - if ($ciphertext === false) { + if (false === $ciphertext) { throw new InvalidArgumentException(openssl_error_string() ?: 'Encrypt AES CBC error.'); } @@ -30,7 +28,7 @@ class AesCbc implements Aes /** * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException */ - public static function decrypt(string $ciphertext, string $key, ?string $iv = null): string + public static function decrypt(string $ciphertext, string $key, string $iv = null): string { $plaintext = openssl_decrypt( base64_decode($ciphertext), @@ -40,7 +38,7 @@ class AesCbc implements Aes (string) $iv ); - if ($plaintext === false) { + if (false === $plaintext) { throw new InvalidArgumentException(openssl_error_string() ?: 'Decrypt AES CBC error.'); } diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/AesEcb.php b/vendor/w7corp/easywechat/src/Kernel/Support/AesEcb.php index f910f19d..1ed5f424 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/AesEcb.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/AesEcb.php @@ -2,25 +2,23 @@ namespace EasyWeChat\Kernel\Support; -use const OPENSSL_RAW_DATA; - +use function base64_decode; use EasyWeChat\Kernel\Contracts\Aes; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; - -use function base64_decode; use function openssl_decrypt; use function openssl_error_string; +use const OPENSSL_RAW_DATA; class AesEcb implements Aes { /** * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException */ - public static function encrypt(string $plaintext, string $key, ?string $iv = null): string + public static function encrypt(string $plaintext, string $key, string $iv = null): string { $ciphertext = \openssl_encrypt($plaintext, 'aes-256-ecb', $key, OPENSSL_RAW_DATA, (string) $iv); - if ($ciphertext === false) { + if (false === $ciphertext) { throw new InvalidArgumentException(openssl_error_string() ?: 'Encrypt AES ECB failed.'); } @@ -30,7 +28,7 @@ class AesEcb implements Aes /** * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException */ - public static function decrypt(string $ciphertext, string $key, ?string $iv = null): string + public static function decrypt(string $ciphertext, string $key, string $iv = null): string { $plaintext = openssl_decrypt( base64_decode($ciphertext, true) ?: '', @@ -40,7 +38,7 @@ class AesEcb implements Aes (string) $iv ); - if ($plaintext === false) { + if (false === $plaintext) { throw new InvalidArgumentException(openssl_error_string() ?: 'Decrypt AES ECB failed.'); } diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/AesGcm.php b/vendor/w7corp/easywechat/src/Kernel/Support/AesGcm.php index 5745b7b3..83b2a284 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/AesGcm.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/AesGcm.php @@ -2,16 +2,14 @@ namespace EasyWeChat\Kernel\Support; -use const OPENSSL_RAW_DATA; - -use EasyWeChat\Kernel\Contracts\Aes; -use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; - use function base64_decode; use function base64_encode; +use EasyWeChat\Kernel\Contracts\Aes; +use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use function openssl_decrypt; use function openssl_encrypt; use function openssl_error_string; +use const OPENSSL_RAW_DATA; class AesGcm implements Aes { @@ -20,7 +18,7 @@ class AesGcm implements Aes /** * @throws InvalidArgumentException */ - public static function encrypt(string $plaintext, string $key, ?string $iv = null, string $aad = ''): string + public static function encrypt(string $plaintext, string $key, string $iv = null, string $aad = ''): string { $ciphertext = openssl_encrypt( $plaintext, @@ -33,7 +31,7 @@ class AesGcm implements Aes self::BLOCK_SIZE ); - if ($ciphertext === false) { + if (false === $ciphertext) { throw new InvalidArgumentException(openssl_error_string() ?: 'Encrypt failed'); } @@ -43,7 +41,7 @@ class AesGcm implements Aes /** * @throws InvalidArgumentException */ - public static function decrypt(string $ciphertext, string $key, ?string $iv = null, string $aad = ''): string + public static function decrypt(string $ciphertext, string $key, string $iv = null, string $aad = ''): string { $ciphertext = base64_decode($ciphertext); @@ -53,7 +51,7 @@ class AesGcm implements Aes $plaintext = openssl_decrypt($ciphertext, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, (string) $iv, $tag, $aad); - if ($plaintext === false) { + if (false === $plaintext) { throw new InvalidArgumentException(openssl_error_string() ?: 'Decrypt failed'); } diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/Arr.php b/vendor/w7corp/easywechat/src/Kernel/Support/Arr.php index 3775e9ab..37a2db40 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/Arr.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/Arr.php @@ -4,19 +4,20 @@ declare(strict_types=1); namespace EasyWeChat\Kernel\Support; -use JetBrains\PhpStorm\Pure; - use function is_string; +use JetBrains\PhpStorm\Pure; class Arr { + /** + * @param array $array + * @param string|int|null $key + * @param mixed $default + * @return mixed + */ #[Pure] - public static function get(mixed $array, string|int|null $key, mixed $default = null): mixed + public static function get(array $array, string|int|null $key, mixed $default = null): mixed { - if (! is_array($array)) { - return $default; - } - if (is_null($key)) { return $array; } @@ -26,7 +27,9 @@ class Arr } foreach (explode('.', (string) $key) as $segment) { - if (is_array($array) && static::exists($array, $segment)) { + /** @phpstan-ignore-next-line */ + if (static::exists($array, $segment)) { + /** @phpstan-ignore-next-line */ $array = $array[$segment]; } else { return $default; @@ -38,6 +41,8 @@ class Arr /** * @param array $array + * @param string|int $key + * @return bool */ public static function exists(array $array, string|int $key): bool { @@ -46,6 +51,8 @@ class Arr /** * @param array $array + * @param string|int|null $key + * @param mixed $value * @return array */ public static function set(array &$array, string|int|null $key, mixed $value): array @@ -76,6 +83,7 @@ class Arr /** * @param array $array + * @param string $prepend * @return array */ public static function dot(array $array, string $prepend = ''): array @@ -96,6 +104,7 @@ class Arr /** * @param array $array * @param string|int|array|null $keys + * @return bool */ #[Pure] public static function has(array $array, string|int|array|null $keys): bool @@ -110,7 +119,7 @@ class Arr return false; } - if ($keys === []) { + if ([] === $keys) { return false; } diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/PrivateKey.php b/vendor/w7corp/easywechat/src/Kernel/Support/PrivateKey.php index 49ccba30..034ec213 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/PrivateKey.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/PrivateKey.php @@ -2,10 +2,9 @@ namespace EasyWeChat\Kernel\Support; -use JetBrains\PhpStorm\Pure; - use function file_exists; use function file_get_contents; +use JetBrains\PhpStorm\Pure; use function str_starts_with; class PrivateKey diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/PublicKey.php b/vendor/w7corp/easywechat/src/Kernel/Support/PublicKey.php index 6dbc23a0..473fb9e6 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/PublicKey.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/PublicKey.php @@ -3,7 +3,6 @@ namespace EasyWeChat\Kernel\Support; use EasyWeChat\Kernel\Exceptions\InvalidConfigException; - use function file_exists; use function file_get_contents; use function openssl_x509_parse; @@ -26,7 +25,7 @@ class PublicKey { $info = openssl_x509_parse($this->certificate); - if ($info === false || ! isset($info['serialNumberHex'])) { + if (false === $info || ! isset($info['serialNumberHex'])) { throw new InvalidConfigException('Read the $certificate failed, please check it whether or nor correct'); } diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/Str.php b/vendor/w7corp/easywechat/src/Kernel/Support/Str.php index 5ba28fd9..b0c18246 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/Str.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/Str.php @@ -2,9 +2,8 @@ namespace EasyWeChat\Kernel\Support; -use Exception; - use function base64_encode; +use Exception; use function preg_replace; use function random_bytes; use function str_replace; diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/UserAgent.php b/vendor/w7corp/easywechat/src/Kernel/Support/UserAgent.php index 560a72a4..916d4f96 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/UserAgent.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/UserAgent.php @@ -4,11 +4,10 @@ declare(strict_types=1); namespace EasyWeChat\Kernel\Support; -use Composer\InstalledVersions; - use function array_map; use function array_unshift; use function class_exists; +use Composer\InstalledVersions; use function curl_version; use function defined; use function explode; @@ -20,6 +19,7 @@ class UserAgent { /** * @param array $appends + * @return string */ public static function create(array $appends = []): string { diff --git a/vendor/w7corp/easywechat/src/Kernel/Support/Xml.php b/vendor/w7corp/easywechat/src/Kernel/Support/Xml.php index e7689117..8ea42e28 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Support/Xml.php +++ b/vendor/w7corp/easywechat/src/Kernel/Support/Xml.php @@ -8,7 +8,7 @@ use TheNorthMemory\Xml\Transformer; class Xml { - public static function parse(string $xml): ?array + public static function parse(string $xml): array|null { return Transformer::toArray($xml); } diff --git a/vendor/w7corp/easywechat/src/Kernel/Traits/HasAttributes.php b/vendor/w7corp/easywechat/src/Kernel/Traits/HasAttributes.php index 06092673..18c3533c 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Traits/HasAttributes.php +++ b/vendor/w7corp/easywechat/src/Kernel/Traits/HasAttributes.php @@ -11,7 +11,7 @@ use function json_encode; trait HasAttributes { /** - * @var array + * @var array */ protected array $attributes = []; @@ -52,7 +52,7 @@ trait HasAttributes } /** - * @return array $attributes + * @return array $attributes */ public function jsonSerialize(): array { @@ -82,7 +82,7 @@ trait HasAttributes public function offsetSet(mixed $offset, mixed $value): void { - if ($offset === null) { + if (null === $offset) { $this->attributes[] = $value; } else { $this->attributes[$offset] = $value; diff --git a/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithConfig.php b/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithConfig.php index b73b1ab8..000677a7 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithConfig.php +++ b/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithConfig.php @@ -7,7 +7,6 @@ namespace EasyWeChat\Kernel\Traits; use EasyWeChat\Kernel\Config; use EasyWeChat\Kernel\Contracts\Config as ConfigInterface; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; - use function is_array; trait InteractWithConfig diff --git a/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHandlers.php b/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHandlers.php index 6889814e..7470a232 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHandlers.php +++ b/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHandlers.php @@ -4,18 +4,17 @@ declare(strict_types=1); namespace EasyWeChat\Kernel\Traits; -use Closure; -use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; -use JetBrains\PhpStorm\ArrayShape; - use function array_reverse; use function array_unshift; use function call_user_func; +use Closure; +use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use function func_get_args; use function gettype; use function is_array; use function is_callable; use function is_string; +use JetBrains\PhpStorm\ArrayShape; use function method_exists; use function spl_object_hash; @@ -53,6 +52,7 @@ trait InteractWithHandlers } /** + * @param callable|string $handler * @return array{hash: string, handler: callable} * * @throws InvalidArgumentException @@ -77,7 +77,6 @@ trait InteractWithHandlers $handler[0] ).$handler[1], $handler instanceof Closure => spl_object_hash($handler), - is_callable($handler) => spl_object_hash($handler), default => throw new InvalidArgumentException('Invalid handler: '.gettype($handler)), }; } @@ -94,7 +93,6 @@ trait InteractWithHandlers if (class_exists($handler) && method_exists($handler, '__invoke')) { /** * @psalm-suppress InvalidFunctionCall - * * @phpstan-ignore-next-line https://github.com/phpstan/phpstan/issues/5867 */ return fn (): mixed => (new $handler())(...func_get_args()); diff --git a/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHttpClient.php b/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHttpClient.php index 8e414dad..146be0f7 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHttpClient.php +++ b/vendor/w7corp/easywechat/src/Kernel/Traits/InteractWithHttpClient.php @@ -5,14 +5,11 @@ declare(strict_types=1); namespace EasyWeChat\Kernel\Traits; use EasyWeChat\Kernel\HttpClient\RequestUtil; -use EasyWeChat\Kernel\HttpClient\ScopingHttpClient; -use EasyWeChat\Kernel\Support\Arr; +use function property_exists; use Psr\Log\LoggerAwareInterface; use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function property_exists; - trait InteractWithHttpClient { protected ?HttpClientInterface $httpClient = null; @@ -41,18 +38,7 @@ trait InteractWithHttpClient protected function createHttpClient(): HttpClientInterface { - $options = $this->getHttpClientDefaultOptions(); - - $optionsByRegexp = Arr::get($options, 'options_by_regexp', []); - unset($options['options_by_regexp']); - - $client = HttpClient::create(RequestUtil::formatDefaultOptions($options)); - - if (! empty($optionsByRegexp)) { - $client = new ScopingHttpClient($client, $optionsByRegexp); - } - - return $client; + return HttpClient::create(RequestUtil::formatDefaultOptions($this->getHttpClientDefaultOptions())); } /** diff --git a/vendor/w7corp/easywechat/src/Kernel/Traits/RespondXmlMessage.php b/vendor/w7corp/easywechat/src/Kernel/Traits/RespondXmlMessage.php index 99555e51..88b5bd25 100644 --- a/vendor/w7corp/easywechat/src/Kernel/Traits/RespondXmlMessage.php +++ b/vendor/w7corp/easywechat/src/Kernel/Traits/RespondXmlMessage.php @@ -2,18 +2,16 @@ namespace EasyWeChat\Kernel\Traits; +use function array_merge; use EasyWeChat\Kernel\Encryptor; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\RuntimeException; use EasyWeChat\Kernel\Message; use EasyWeChat\Kernel\Support\Xml; -use Nyholm\Psr7\Response; -use Psr\Http\Message\ResponseInterface; - -use function array_merge; use function is_array; use function is_callable; -use function is_string; +use Nyholm\Psr7\Response; +use Psr\Http\Message\ResponseInterface; use function time; trait RespondXmlMessage @@ -50,7 +48,7 @@ trait RespondXmlMessage */ protected function normalizeResponse(mixed $response): array { - if (! is_string($response) && is_callable($response)) { + if (is_callable($response)) { $response = $response(); } diff --git a/vendor/w7corp/easywechat/src/MiniApp/AccessToken.php b/vendor/w7corp/easywechat/src/MiniApp/AccessToken.php index ff44d1c3..cf30dff4 100644 --- a/vendor/w7corp/easywechat/src/MiniApp/AccessToken.php +++ b/vendor/w7corp/easywechat/src/MiniApp/AccessToken.php @@ -6,5 +6,5 @@ namespace EasyWeChat\MiniApp; class AccessToken extends \EasyWeChat\OfficialAccount\AccessToken { - const CACHE_KEY_PREFIX = 'mini_app'; + // } diff --git a/vendor/w7corp/easywechat/src/MiniApp/Application.php b/vendor/w7corp/easywechat/src/MiniApp/Application.php index 9be5b614..9e40cc91 100644 --- a/vendor/w7corp/easywechat/src/MiniApp/Application.php +++ b/vendor/w7corp/easywechat/src/MiniApp/Application.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace EasyWeChat\MiniApp; +use function array_merge; use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; use EasyWeChat\Kernel\Contracts\Server as ServerInterface; use EasyWeChat\Kernel\Encryptor; @@ -19,25 +20,23 @@ use EasyWeChat\Kernel\Traits\InteractWithHttpClient; use EasyWeChat\Kernel\Traits\InteractWithServerRequest; use EasyWeChat\MiniApp\Contracts\Account as AccountInterface; use EasyWeChat\MiniApp\Contracts\Application as ApplicationInterface; +use function is_null; use JetBrains\PhpStorm\Pure; use Psr\Log\LoggerAwareTrait; +use function str_contains; use Symfony\Component\HttpClient\Response\AsyncContext; use Symfony\Component\HttpClient\RetryableHttpClient; -use function array_merge; -use function is_null; -use function str_contains; - /** * @psalm-suppress PropertyNotSetInConstructor */ class Application implements ApplicationInterface { - use InteractWithCache; - use InteractWithClient; use InteractWithConfig; - use InteractWithHttpClient; + use InteractWithCache; use InteractWithServerRequest; + use InteractWithHttpClient; + use InteractWithClient; use LoggerAwareTrait; protected ?Encryptor $encryptor = null; @@ -132,7 +131,6 @@ class Application implements ApplicationInterface secret: $this->getAccount()->getSecret(), cache: $this->getCache(), httpClient: $this->getHttpClient(), - stable: $this->config->get('use_stable_access_token', false) ); } diff --git a/vendor/w7corp/easywechat/src/MiniApp/Decryptor.php b/vendor/w7corp/easywechat/src/MiniApp/Decryptor.php index 8dc38e0b..66d72dc2 100644 --- a/vendor/w7corp/easywechat/src/MiniApp/Decryptor.php +++ b/vendor/w7corp/easywechat/src/MiniApp/Decryptor.php @@ -4,14 +4,13 @@ declare(strict_types=1); namespace EasyWeChat\MiniApp; +use function base64_decode; use EasyWeChat\Kernel\Exceptions\DecryptException; use EasyWeChat\Kernel\Support\AesCbc; -use Throwable; - -use function base64_decode; use function is_array; use function json_decode; use function sprintf; +use Throwable; class Decryptor { diff --git a/vendor/w7corp/easywechat/src/OfficialAccount/AccessToken.php b/vendor/w7corp/easywechat/src/OfficialAccount/AccessToken.php index 50d8693c..af6c6db9 100644 --- a/vendor/w7corp/easywechat/src/OfficialAccount/AccessToken.php +++ b/vendor/w7corp/easywechat/src/OfficialAccount/AccessToken.php @@ -6,9 +6,13 @@ namespace EasyWeChat\OfficialAccount; use EasyWeChat\Kernel\Contracts\RefreshableAccessToken as RefreshableAccessTokenInterface; use EasyWeChat\Kernel\Exceptions\HttpException; +use function intval; +use function is_string; use JetBrains\PhpStorm\ArrayShape; +use function json_encode; use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\InvalidArgumentException; +use function sprintf; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\HttpClient\HttpClient; @@ -19,26 +23,18 @@ use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function intval; -use function is_string; -use function json_encode; -use function sprintf; - class AccessToken implements RefreshableAccessTokenInterface { protected HttpClientInterface $httpClient; protected CacheInterface $cache; - const CACHE_KEY_PREFIX = 'official_account'; - public function __construct( protected string $appId, protected string $secret, protected ?string $key = null, ?CacheInterface $cache = null, ?HttpClientInterface $httpClient = null, - protected ?bool $stable = false ) { $this->httpClient = $httpClient ?? HttpClient::create(['base_uri' => 'https://api.weixin.qq.com/']); $this->cache = $cache ?? new Psr16Cache(new FilesystemAdapter(namespace: 'easywechat', defaultLifetime: 1500)); @@ -46,7 +42,7 @@ class AccessToken implements RefreshableAccessTokenInterface public function getKey(): string { - return $this->key ?? $this->key = sprintf('%s.access_token.%s.%s.%s', static::CACHE_KEY_PREFIX, $this->appId, $this->secret, (int)$this->stable); + return $this->key ?? $this->key = sprintf('official_account.access_token.%s.%s', $this->appId, $this->secret); } public function setKey(string $key): static @@ -94,62 +90,15 @@ class AccessToken implements RefreshableAccessTokenInterface } /** - * @throws \EasyWeChat\Kernel\Exceptions\HttpException - * @throws \Psr\SimpleCache\InvalidArgumentException - * @throws \Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface + * @throws RedirectionExceptionInterface + * @throws DecodingExceptionInterface + * @throws InvalidArgumentException + * @throws ClientExceptionInterface + * @throws HttpException + * @throws TransportExceptionInterface + * @throws ServerExceptionInterface */ public function refresh(): string - { - return $this->stable ? $this->getStableAccessToken() : $this->getAccessToken(); - } - - /** - * @throws \Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface - * @throws \Psr\SimpleCache\InvalidArgumentException - * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface - * @throws \EasyWeChat\Kernel\Exceptions\HttpException - * @throws \Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface - */ - public function getStableAccessToken(bool $force_refresh = false): string - { - $response = $this->httpClient->request( - 'POST', - 'https://api.weixin.qq.com/cgi-bin/stable_token', - [ - 'json' => [ - 'grant_type' => 'client_credential', - 'appid' => $this->appId, - 'secret' => $this->secret, - 'force_refresh' => $force_refresh, - ], - ] - )->toArray(false); - - if (empty($response['access_token'])) { - throw new HttpException('Failed to get stable access_token: ' . json_encode($response, JSON_UNESCAPED_UNICODE)); - } - - $this->cache->set($this->getKey(), $response['access_token'], intval($response['expires_in'])); - - return $response['access_token']; - } - - /** - * @throws \Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface - * @throws \Psr\SimpleCache\InvalidArgumentException - * @throws \Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface - * @throws \EasyWeChat\Kernel\Exceptions\HttpException - * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface - * @throws \Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface - */ - public function getAccessToken(): string { $response = $this->httpClient->request( 'GET', @@ -164,7 +113,7 @@ class AccessToken implements RefreshableAccessTokenInterface )->toArray(false); if (empty($response['access_token'])) { - throw new HttpException('Failed to get access_token: ' . json_encode($response, JSON_UNESCAPED_UNICODE)); + throw new HttpException('Failed to get access_token: '.json_encode($response, JSON_UNESCAPED_UNICODE)); } $this->cache->set($this->getKey(), $response['access_token'], intval($response['expires_in'])); diff --git a/vendor/w7corp/easywechat/src/OfficialAccount/Account.php b/vendor/w7corp/easywechat/src/OfficialAccount/Account.php index 9793fac7..b406bbb0 100644 --- a/vendor/w7corp/easywechat/src/OfficialAccount/Account.php +++ b/vendor/w7corp/easywechat/src/OfficialAccount/Account.php @@ -24,7 +24,7 @@ class Account implements AccountInterface public function getSecret(): string { - if ($this->secret === null) { + if (null === $this->secret) { throw new RuntimeException('No secret configured.'); } diff --git a/vendor/w7corp/easywechat/src/OfficialAccount/Application.php b/vendor/w7corp/easywechat/src/OfficialAccount/Application.php index 2cfd765d..33b57bb2 100644 --- a/vendor/w7corp/easywechat/src/OfficialAccount/Application.php +++ b/vendor/w7corp/easywechat/src/OfficialAccount/Application.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace EasyWeChat\OfficialAccount; +use function array_merge; +use function call_user_func; use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; -use EasyWeChat\Kernel\Contracts\JsApiTicket as JsApiTicketInterface; use EasyWeChat\Kernel\Contracts\RefreshableAccessToken as RefreshableAccessTokenInterface; -use EasyWeChat\Kernel\Contracts\RefreshableJsApiTicket as RefreshableJsApiTicketInterface; use EasyWeChat\Kernel\Contracts\Server as ServerInterface; use EasyWeChat\Kernel\Encryptor; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; @@ -27,21 +27,18 @@ use JetBrains\PhpStorm\Pure; use Overtrue\Socialite\Contracts\ProviderInterface as SocialiteProviderInterface; use Overtrue\Socialite\Providers\WeChat; use Psr\Log\LoggerAwareTrait; +use function sprintf; +use function str_contains; use Symfony\Component\HttpClient\Response\AsyncContext; use Symfony\Component\HttpClient\RetryableHttpClient; -use function array_merge; -use function call_user_func; -use function sprintf; -use function str_contains; - class Application implements ApplicationInterface { - use InteractWithCache; - use InteractWithClient; use InteractWithConfig; - use InteractWithHttpClient; + use InteractWithCache; use InteractWithServerRequest; + use InteractWithHttpClient; + use InteractWithClient; use LoggerAwareTrait; protected ?Encryptor $encryptor = null; @@ -52,7 +49,7 @@ class Application implements ApplicationInterface protected AccessTokenInterface|RefreshableAccessTokenInterface|null $accessToken = null; - protected ?JsApiTicketInterface $ticket = null; + protected ?JsApiTicket $ticket = null; protected ?\Closure $oauthFactory = null; @@ -140,7 +137,6 @@ class Application implements ApplicationInterface secret: $this->getAccount()->getSecret(), cache: $this->getCache(), httpClient: $this->getHttpClient(), - stable: $this->config->get('use_stable_access_token', false), ); } @@ -188,7 +184,7 @@ class Application implements ApplicationInterface return $provider; } - public function getTicket(): JsApiTicketInterface|RefreshableJsApiTicketInterface + public function getTicket(): JsApiTicket { if (! $this->ticket) { $this->ticket = new JsApiTicket( @@ -196,14 +192,13 @@ class Application implements ApplicationInterface secret: $this->getAccount()->getSecret(), cache: $this->getCache(), httpClient: $this->getClient(), - stable: $this->config->get('use_stable_access_token', false), ); } return $this->ticket; } - public function setTicket(JsApiTicketInterface|RefreshableJsApiTicketInterface $ticket): static + public function setTicket(JsApiTicket $ticket): static { $this->ticket = $ticket; diff --git a/vendor/w7corp/easywechat/src/OfficialAccount/JsApiTicket.php b/vendor/w7corp/easywechat/src/OfficialAccount/JsApiTicket.php index 6d99952a..943b28ae 100644 --- a/vendor/w7corp/easywechat/src/OfficialAccount/JsApiTicket.php +++ b/vendor/w7corp/easywechat/src/OfficialAccount/JsApiTicket.php @@ -4,13 +4,11 @@ declare(strict_types=1); namespace EasyWeChat\OfficialAccount; -use EasyWeChat\Kernel\Contracts\RefreshableJsApiTicket as RefreshableJsApiTicketInterface; use EasyWeChat\Kernel\Exceptions\HttpException; use JetBrains\PhpStorm\ArrayShape; - use function sprintf; -class JsApiTicket extends AccessToken implements RefreshableJsApiTicketInterface +class JsApiTicket extends AccessToken { /** * @throws \Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface @@ -30,11 +28,6 @@ class JsApiTicket extends AccessToken implements RefreshableJsApiTicketInterface return $ticket; } - return $this->refreshTicket(); - } - - public function refreshTicket(): string - { $response = $this->httpClient->request('GET', '/cgi-bin/ticket/getticket', ['query' => ['type' => 'jsapi']]) ->toArray(false); @@ -42,7 +35,7 @@ class JsApiTicket extends AccessToken implements RefreshableJsApiTicketInterface throw new HttpException('Failed to get jssdk ticket: '.\json_encode($response, JSON_UNESCAPED_UNICODE)); } - $this->cache->set($this->getKey(), $response['ticket'], \intval($response['expires_in'])); + $this->cache->set($key, $response['ticket'], \intval($response['expires_in'])); return $response['ticket']; } diff --git a/vendor/w7corp/easywechat/src/OfficialAccount/Server.php b/vendor/w7corp/easywechat/src/OfficialAccount/Server.php index 948c390c..ce92d70a 100644 --- a/vendor/w7corp/easywechat/src/OfficialAccount/Server.php +++ b/vendor/w7corp/easywechat/src/OfficialAccount/Server.php @@ -22,9 +22,9 @@ use Throwable; class Server implements ServerInterface { + use RespondXmlMessage; use DecryptXmlMessage; use InteractWithHandlers; - use RespondXmlMessage; protected ServerRequestInterface $request; @@ -97,7 +97,6 @@ class Server implements ServerInterface /** * @param array $query - * * @psalm-suppress PossiblyNullArgument */ protected function decryptRequestMessage(array $query): Closure diff --git a/vendor/w7corp/easywechat/src/OfficialAccount/Utils.php b/vendor/w7corp/easywechat/src/OfficialAccount/Utils.php index 7b31134f..fb195def 100644 --- a/vendor/w7corp/easywechat/src/OfficialAccount/Utils.php +++ b/vendor/w7corp/easywechat/src/OfficialAccount/Utils.php @@ -10,7 +10,6 @@ use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; - use function time; class Utils @@ -20,8 +19,10 @@ class Utils } /** + * @param string $url * @param array $jsApiList * @param array $openTagList + * @param bool $debug * @return array * * @throws HttpException diff --git a/vendor/w7corp/easywechat/src/OpenPlatform/Application.php b/vendor/w7corp/easywechat/src/OpenPlatform/Application.php index dfdcdec5..abb4f7d5 100644 --- a/vendor/w7corp/easywechat/src/OpenPlatform/Application.php +++ b/vendor/w7corp/easywechat/src/OpenPlatform/Application.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace EasyWeChat\OpenPlatform; +use function array_merge; use Closure; use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; use EasyWeChat\Kernel\Contracts\Server as ServerInterface; @@ -24,25 +25,23 @@ use EasyWeChat\OfficialAccount\Config as OfficialAccountConfig; use EasyWeChat\OpenPlatform\Contracts\Account as AccountInterface; use EasyWeChat\OpenPlatform\Contracts\Application as ApplicationInterface; use EasyWeChat\OpenPlatform\Contracts\VerifyTicket as VerifyTicketInterface; +use function is_string; +use function md5; use Overtrue\Socialite\Contracts\ProviderInterface as SocialiteProviderInterface; use Overtrue\Socialite\Providers\WeChat; use Psr\SimpleCache\InvalidArgumentException; +use function sprintf; use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; -use function array_merge; -use function is_string; -use function md5; -use function sprintf; - class Application implements ApplicationInterface { use InteractWithCache; - use InteractWithClient; use InteractWithConfig; + use InteractWithClient; use InteractWithHttpClient; use InteractWithServerRequest; @@ -369,7 +368,7 @@ class Application implements ApplicationInterface 'token' => $this->config->get('token'), 'aes_key' => $this->config->get('aes_key'), 'logging' => $this->config->get('logging'), - 'http' => $this->config->get('http', []), + 'http' => $this->config->get('http'), ], $config ) diff --git a/vendor/w7corp/easywechat/src/OpenPlatform/Authorization.php b/vendor/w7corp/easywechat/src/OpenPlatform/Authorization.php index f9dec4be..554705ed 100644 --- a/vendor/w7corp/easywechat/src/OpenPlatform/Authorization.php +++ b/vendor/w7corp/easywechat/src/OpenPlatform/Authorization.php @@ -13,7 +13,7 @@ use JetBrains\PhpStorm\Pure; /** * @implements ArrayAccess */ -class Authorization implements Arrayable, ArrayAccess, Jsonable +class Authorization implements ArrayAccess, Jsonable, Arrayable { use HasAttributes; diff --git a/vendor/w7corp/easywechat/src/OpenPlatform/ComponentAccessToken.php b/vendor/w7corp/easywechat/src/OpenPlatform/ComponentAccessToken.php index 390efb05..33629cdf 100644 --- a/vendor/w7corp/easywechat/src/OpenPlatform/ComponentAccessToken.php +++ b/vendor/w7corp/easywechat/src/OpenPlatform/ComponentAccessToken.php @@ -4,20 +4,19 @@ declare(strict_types=1); namespace EasyWeChat\OpenPlatform; +use function abs; use EasyWeChat\Kernel\Contracts\RefreshableAccessToken as RefreshableAccessTokenInterface; use EasyWeChat\Kernel\Exceptions\HttpException; use EasyWeChat\OpenPlatform\Contracts\VerifyTicket as VerifyTicketInterface; +use function intval; use JetBrains\PhpStorm\ArrayShape; +use function json_encode; use Psr\SimpleCache\CacheInterface; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function abs; -use function intval; -use function json_encode; - class ComponentAccessToken implements RefreshableAccessTokenInterface { protected HttpClientInterface $httpClient; diff --git a/vendor/w7corp/easywechat/src/OpenPlatform/Server.php b/vendor/w7corp/easywechat/src/OpenPlatform/Server.php index bc0616f5..74387774 100644 --- a/vendor/w7corp/easywechat/src/OpenPlatform/Server.php +++ b/vendor/w7corp/easywechat/src/OpenPlatform/Server.php @@ -15,17 +15,16 @@ use EasyWeChat\Kernel\ServerResponse; use EasyWeChat\Kernel\Traits\DecryptXmlMessage; use EasyWeChat\Kernel\Traits\InteractWithHandlers; use EasyWeChat\Kernel\Traits\RespondXmlMessage; +use function func_get_args; use Nyholm\Psr7\Response; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; -use function func_get_args; - class Server implements ServerInterface { - use DecryptXmlMessage; use InteractWithHandlers; use RespondXmlMessage; + use DecryptXmlMessage; protected ?Closure $defaultVerifyTicketHandler = null; diff --git a/vendor/w7corp/easywechat/src/OpenPlatform/VerifyTicket.php b/vendor/w7corp/easywechat/src/OpenPlatform/VerifyTicket.php index e97acf7b..b8bab992 100644 --- a/vendor/w7corp/easywechat/src/OpenPlatform/VerifyTicket.php +++ b/vendor/w7corp/easywechat/src/OpenPlatform/VerifyTicket.php @@ -6,14 +6,13 @@ namespace EasyWeChat\OpenPlatform; use EasyWeChat\Kernel\Exceptions\RuntimeException; use EasyWeChat\OpenPlatform\Contracts\VerifyTicket as VerifyTicketInterface; +use function is_string; use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\InvalidArgumentException; +use function sprintf; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; -use function is_string; -use function sprintf; - class VerifyTicket implements VerifyTicketInterface { protected CacheInterface $cache; diff --git a/vendor/w7corp/easywechat/src/OpenWork/Application.php b/vendor/w7corp/easywechat/src/OpenWork/Application.php index 7a713b01..9f13e921 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/Application.php +++ b/vendor/w7corp/easywechat/src/OpenWork/Application.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace EasyWeChat\OpenWork; +use function array_merge; use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; use EasyWeChat\Kernel\Contracts\Server as ServerInterface; use EasyWeChat\Kernel\Exceptions\HttpException; @@ -19,21 +20,14 @@ use EasyWeChat\OpenWork\Contracts\Application as ApplicationInterface; use EasyWeChat\OpenWork\Contracts\SuiteTicket as SuiteTicketInterface; use Overtrue\Socialite\Contracts\ProviderInterface as SocialiteProviderInterface; use Overtrue\Socialite\Providers\OpenWeWork; -use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; - -use function array_merge; class Application implements ApplicationInterface { use InteractWithCache; - use InteractWithClient; use InteractWithConfig; use InteractWithHttpClient; use InteractWithServerRequest; + use InteractWithClient; protected ?ServerInterface $server = null; @@ -49,8 +43,6 @@ class Application implements ApplicationInterface protected ?AccessTokenInterface $suiteAccessToken = null; - protected ?AuthorizerAccessToken $authorizerAccessToken = null; - public function getAccount(): AccountInterface { if (! $this->account) { @@ -255,14 +247,21 @@ class Application implements ApplicationInterface ?AccessTokenInterface $suiteAccessToken = null ): AuthorizerAccessToken { $suiteAccessToken = $suiteAccessToken ?? $this->getSuiteAccessToken(); + $response = $this->getHttpClient()->request('POST', 'cgi-bin/service/get_corp_token', [ + 'query' => [ + 'suite_access_token' => $suiteAccessToken->getToken(), + ], + 'json' => [ + 'auth_corpid' => $corpId, + 'permanent_code' => $permanentCode, + ], + ])->toArray(false); - return new AuthorizerAccessToken( - corpId: $corpId, - permanentCodeOrAccessToken: $permanentCode, - suiteAccessToken: $suiteAccessToken, - cache: $this->getCache(), - httpClient: $this->getHttpClient(), - ); + if (empty($response['access_token'])) { + throw new HttpException('Failed to get access_token: '.json_encode($response, JSON_UNESCAPED_UNICODE)); + } + + return new AuthorizerAccessToken($corpId, accessToken: $response['access_token']); } public function createClient(): AccessTokenAwareClient @@ -275,52 +274,16 @@ class Application implements ApplicationInterface ))->setPresets($this->config->all()); } - /** - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws ClientExceptionInterface - */ - public function getAuthorizerClient(string $corpId, string $permanentCode, ?AccessTokenInterface $suiteAccessToken = null): AccessTokenAwareClient - { - return (new AccessTokenAwareClient( - client: $this->getHttpClient(), - accessToken: $this->getAuthorizerAccessToken($corpId, $permanentCode, $suiteAccessToken), - failureJudge: fn (Response $response) => (bool) ($response->toArray()['errcode'] ?? 0), - throw: (bool) $this->config->get('http.throw', true), - ))->setPresets($this->config->all()); - } - - /** - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws ClientExceptionInterface - */ - public function getJsApiTicket(string $corpId, string $permanentCode, ?AccessTokenInterface $suiteAccessToken = null): JsApiTicket - { - return new JsApiTicket( - corpId: $corpId, - cache: $this->getCache(), - httpClient: $this->getAuthorizerClient($corpId, $permanentCode, $suiteAccessToken), - ); - } - public function getOAuth( string $suiteId, ?AccessTokenInterface $suiteAccessToken = null ): SocialiteProviderInterface { $suiteAccessToken = $suiteAccessToken ?? $this->getSuiteAccessToken(); - return (new OpenWeWork(array_filter([ + return (new OpenWeWork([ 'client_id' => $suiteId, 'redirect_url' => $this->config->get('oauth.redirect_url'), - 'base_url' => $this->config->get('http.base_uri'), - ])))->withSuiteTicket($this->getSuiteTicket()->getTicket()) + ]))->withSuiteTicket($this->getSuiteTicket()->getTicket()) ->withSuiteAccessToken($suiteAccessToken->getToken()) ->scopes((array) $this->config->get('oauth.scopes', ['snsapi_base'])); } @@ -331,11 +294,10 @@ class Application implements ApplicationInterface ): SocialiteProviderInterface { $suiteAccessToken = $suiteAccessToken ?? $this->getSuiteAccessToken(); - return (new OpenWeWork(array_filter([ + return (new OpenWeWork([ 'client_id' => $corpId, 'redirect_url' => $this->config->get('oauth.redirect_url'), - 'base_url' => $this->config->get('http.base_uri'), - ])))->withSuiteTicket($this->getSuiteTicket()->getTicket()) + ]))->withSuiteTicket($this->getSuiteTicket()->getTicket()) ->withSuiteAccessToken($suiteAccessToken->getToken()) ->scopes((array) $this->config->get('oauth.scopes', ['snsapi_base'])); } diff --git a/vendor/w7corp/easywechat/src/OpenWork/Authorization.php b/vendor/w7corp/easywechat/src/OpenWork/Authorization.php index 4420e9a9..2658363e 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/Authorization.php +++ b/vendor/w7corp/easywechat/src/OpenWork/Authorization.php @@ -12,7 +12,7 @@ use EasyWeChat\Kernel\Traits\HasAttributes; /** * @implements ArrayAccess */ -class Authorization implements Arrayable, ArrayAccess, Jsonable +class Authorization implements ArrayAccess, Jsonable, Arrayable { use HasAttributes; diff --git a/vendor/w7corp/easywechat/src/OpenWork/AuthorizerAccessToken.php b/vendor/w7corp/easywechat/src/OpenWork/AuthorizerAccessToken.php index 7818600a..b479c4ca 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/AuthorizerAccessToken.php +++ b/vendor/w7corp/easywechat/src/OpenWork/AuthorizerAccessToken.php @@ -4,39 +4,15 @@ declare(strict_types=1); namespace EasyWeChat\OpenWork; -use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; -use EasyWeChat\Kernel\Contracts\RefreshableAccessToken; -use EasyWeChat\Kernel\Exceptions\HttpException; +use EasyWeChat\Kernel\Contracts\AccessToken; use JetBrains\PhpStorm\ArrayShape; -use Psr\SimpleCache\CacheInterface; -use Psr\SimpleCache\InvalidArgumentException; +use JetBrains\PhpStorm\Pure; use Stringable; -use Symfony\Component\Cache\Adapter\FilesystemAdapter; -use Symfony\Component\Cache\Psr16Cache; -use Symfony\Component\HttpClient\HttpClient; -use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; -use Symfony\Contracts\HttpClient\HttpClientInterface; -class AuthorizerAccessToken implements RefreshableAccessToken, Stringable +class AuthorizerAccessToken implements AccessToken, Stringable { - protected HttpClientInterface $httpClient; - - protected CacheInterface $cache; - - public function __construct( - protected string $corpId, - protected string $permanentCodeOrAccessToken, - protected ?AccessTokenInterface $suiteAccessToken = null, - protected ?string $key = null, - ?CacheInterface $cache = null, - ?HttpClientInterface $httpClient = null, - ) { - $this->httpClient = $httpClient ?? HttpClient::create(['base_uri' => 'https://qyapi.weixin.qq.com/']); - $this->cache = $cache ?? new Psr16Cache(new FilesystemAdapter(namespace: 'easywechat', defaultLifetime: 1500)); + public function __construct(protected string $corpId, protected string $accessToken) + { } public function getCorpId(): string @@ -44,104 +20,23 @@ class AuthorizerAccessToken implements RefreshableAccessToken, Stringable return $this->corpId; } - /** - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws InvalidArgumentException - * @throws ClientExceptionInterface - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - */ public function getToken(): string { - if (! isset($this->suiteAccessToken)) { - return $this->permanentCodeOrAccessToken; - } - - $token = $this->cache->get($this->getKey()); - - if ((bool) $token && is_string($token)) { - return $token; - } - - return $this->refresh(); + return $this->accessToken; } - /** - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws InvalidArgumentException - * @throws ClientExceptionInterface - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - */ public function __toString() { - return $this->getToken(); + return $this->accessToken; } /** - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws InvalidArgumentException - * @throws ClientExceptionInterface - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface + * @return array */ - #[ArrayShape(['access_token' => 'string'])] #[Pure] #[ArrayShape(['access_token' => 'string'])] public function toQuery(): array { return ['access_token' => $this->getToken()]; } - - public function getKey(): string - { - return $this->key ?? $this->key = sprintf('open_work.authorizer.access_token.%s.%s', $this->corpId, $this->permanentCodeOrAccessToken); - } - - public function setKey(string $key): static - { - $this->key = $key; - - return $this; - } - - /** - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws ClientExceptionInterface - * @throws InvalidArgumentException - */ - public function refresh(): string - { - if (! isset($this->suiteAccessToken)) { - return ''; - } - - $response = $this->httpClient->request('POST', 'cgi-bin/service/get_corp_token', [ - 'query' => [ - 'suite_access_token' => $this->suiteAccessToken->getToken(), - ], - 'json' => [ - 'auth_corpid' => $this->corpId, - 'permanent_code' => $this->permanentCodeOrAccessToken, - ], - ])->toArray(false); - - if (empty($response['access_token'])) { - throw new HttpException('Failed to get access_token: '.json_encode($response, JSON_UNESCAPED_UNICODE)); - } - - $this->cache->set($this->getKey(), $response['access_token'], intval($response['expires_in'])); - - return $response['access_token']; - } } diff --git a/vendor/w7corp/easywechat/src/OpenWork/JsApiTicket.php b/vendor/w7corp/easywechat/src/OpenWork/JsApiTicket.php deleted file mode 100644 index 492a12c6..00000000 --- a/vendor/w7corp/easywechat/src/OpenWork/JsApiTicket.php +++ /dev/null @@ -1,165 +0,0 @@ -httpClient = $httpClient ?? HttpClient::create(['base_uri' => 'https://qyapi.weixin.qq.com/']); - $this->cache = $cache ?? new Psr16Cache(new FilesystemAdapter(namespace: 'easywechat', defaultLifetime: 1500)); - } - - /** - * @return array - * - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws ClientExceptionInterface - * @throws InvalidArgumentException - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - */ - public function createConfigSignature(string $nonce, int $timestamp, string $url, array $jsApiList = [], bool $debug = false, bool $beta = true): array - { - return [ - 'appId' => $this->corpId, - 'nonceStr' => $nonce, - 'timestamp' => $timestamp, - 'url' => $url, - 'signature' => $this->getTicketSignature($this->getTicket(), $nonce, $timestamp, $url), - 'jsApiList' => $jsApiList, - 'debug' => $debug, - 'beta' => $beta, - ]; - } - - public function getTicketSignature(string $ticket, string $nonce, int $timestamp, string $url): string - { - return sha1(sprintf('jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s', $ticket, $nonce, $timestamp, $url)); - } - - /** - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws ClientExceptionInterface - * @throws InvalidArgumentException - * @throws TransportExceptionInterface - * @throws HttpException - * @throws ServerExceptionInterface - */ - public function getTicket(): string - { - $key = $this->getKey(); - $ticket = $this->cache->get($key); - - if ((bool) $ticket && is_string($ticket)) { - return $ticket; - } - - $response = $this->httpClient->request('GET', '/cgi-bin/get_jsapi_ticket')->toArray(false); - - if (empty($response['ticket'])) { - throw new HttpException('Failed to get jssdk ticket: '.json_encode($response, JSON_UNESCAPED_UNICODE)); - } - - $this->cache->set($key, $response['ticket'], intval($response['expires_in'])); - - return $response['ticket']; - } - - public function setKey(string $key): static - { - $this->key = $key; - - return $this; - } - - public function getKey(): string - { - return $this->key ?? $this->key = sprintf('open_work.jsapi_ticket.%s', $this->corpId); - } - - /** - * @throws ClientExceptionInterface - * @throws DecodingExceptionInterface - * @throws HttpException - * @throws InvalidArgumentException - * @throws RedirectionExceptionInterface - * @throws ServerExceptionInterface - * @throws TransportExceptionInterface - */ - public function createAgentConfigSignature(int $agentId, string $nonce, int $timestamp, string $url, array $jsApiList = []): array - { - return [ - 'corpid' => $this->corpId, - 'agentid' => $agentId, - 'nonceStr' => $nonce, - 'timestamp' => $timestamp, - 'signature' => $this->getTicketSignature($this->getAgentTicket($agentId), $nonce, $timestamp, $url), - 'jsApiList' => $jsApiList, - ]; - } - - /** - * @throws RedirectionExceptionInterface - * @throws DecodingExceptionInterface - * @throws InvalidArgumentException - * @throws ClientExceptionInterface - * @throws HttpException - * @throws TransportExceptionInterface - * @throws ServerExceptionInterface - */ - public function getAgentTicket(int $agentId): string - { - $key = $this->getAgentKey($agentId); - $ticket = $this->cache->get($key); - - if ((bool) $ticket && is_string($ticket)) { - return $ticket; - } - - $response = $this->httpClient->request('GET', '/cgi-bin/ticket/get', ['query' => ['type' => 'agent_config']])->toArray(false); - - if (empty($response['ticket'])) { - throw new HttpException('Failed to get jssdk agentTicket: '.json_encode($response, JSON_UNESCAPED_UNICODE)); - } - - $this->cache->set($key, $response['ticket'], intval($response['expires_in'])); - - return $response['ticket']; - } - - public function getAgentKey(int $agentId): string - { - return sprintf('%s.%s', $this->getKey(), $agentId); - } -} diff --git a/vendor/w7corp/easywechat/src/OpenWork/Message.php b/vendor/w7corp/easywechat/src/OpenWork/Message.php index 837b276d..75867af5 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/Message.php +++ b/vendor/w7corp/easywechat/src/OpenWork/Message.php @@ -9,8 +9,6 @@ namespace EasyWeChat\OpenWork; * @property string $ChangeType * @property string $SuiteTicket * @property string $SuiteId - * @property string $MsgType - * @property string $Event */ class Message extends \EasyWeChat\Kernel\Message { diff --git a/vendor/w7corp/easywechat/src/OpenWork/ProviderAccessToken.php b/vendor/w7corp/easywechat/src/OpenWork/ProviderAccessToken.php index f8b44777..3f69d9e1 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/ProviderAccessToken.php +++ b/vendor/w7corp/easywechat/src/OpenWork/ProviderAccessToken.php @@ -4,19 +4,17 @@ declare(strict_types=1); namespace EasyWeChat\OpenWork; -use const JSON_UNESCAPED_UNICODE; - use EasyWeChat\Kernel\Contracts\RefreshableAccessToken as RefreshableAccessTokenInterface; use EasyWeChat\Kernel\Exceptions\HttpException; +use function intval; use JetBrains\PhpStorm\ArrayShape; +use const JSON_UNESCAPED_UNICODE; use Psr\SimpleCache\CacheInterface; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function intval; - class ProviderAccessToken implements RefreshableAccessTokenInterface { protected HttpClientInterface $httpClient; diff --git a/vendor/w7corp/easywechat/src/OpenWork/Server.php b/vendor/w7corp/easywechat/src/OpenWork/Server.php index db0ede39..8e05e24e 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/Server.php +++ b/vendor/w7corp/easywechat/src/OpenWork/Server.php @@ -15,21 +15,20 @@ use EasyWeChat\Kernel\ServerResponse; use EasyWeChat\Kernel\Traits\DecryptXmlMessage; use EasyWeChat\Kernel\Traits\InteractWithHandlers; use EasyWeChat\Kernel\Traits\RespondXmlMessage; +use function func_get_args; use Nyholm\Psr7\Response; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; -use function func_get_args; - class Server implements ServerInterface { - use DecryptXmlMessage; use InteractWithHandlers; use RespondXmlMessage; + use DecryptXmlMessage; protected ServerRequestInterface $request; - protected ?Closure $defaultSuiteTicketHandler = null; + protected Closure|null $defaultSuiteTicketHandler = null; /** * @throws \Throwable @@ -220,27 +219,6 @@ class Server implements ServerInterface return $this; } - public function handleResetPermanentCode(callable $handler): static - { - $this->with(function (Message $message, Closure $next) use ($handler): mixed { - return $message->InfoType === 'reset_permanent_code' ? $handler($message, $next) : $next($message); - }); - - return $this; - } - - public function handleChangeAppAdmin(callable $handler): static - { - $this->with(function (Message $message, Closure $next) use ($handler): mixed { - return $message->MsgType === 'event' && $message->Event === 'change_app_admin' ? $handler( - $message, - $next - ) : $next($message); - }); - - return $this; - } - protected function decryptRequestMessage(): Closure { $query = $this->request->getQueryParams(); diff --git a/vendor/w7corp/easywechat/src/OpenWork/SuiteAccessToken.php b/vendor/w7corp/easywechat/src/OpenWork/SuiteAccessToken.php index 4065ae86..11db7a17 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/SuiteAccessToken.php +++ b/vendor/w7corp/easywechat/src/OpenWork/SuiteAccessToken.php @@ -4,22 +4,20 @@ declare(strict_types=1); namespace EasyWeChat\OpenWork; -use const JSON_UNESCAPED_UNICODE; - +use function abs; use EasyWeChat\Kernel\Contracts\RefreshableAccessToken as RefreshableAccessTokenInterface; use EasyWeChat\Kernel\Exceptions\HttpException; use EasyWeChat\OpenWork\Contracts\SuiteTicket as SuiteTicketInterface; +use function intval; use JetBrains\PhpStorm\ArrayShape; +use function json_encode; +use const JSON_UNESCAPED_UNICODE; use Psr\SimpleCache\CacheInterface; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function abs; -use function intval; -use function json_encode; - class SuiteAccessToken implements RefreshableAccessTokenInterface { protected HttpClientInterface $httpClient; diff --git a/vendor/w7corp/easywechat/src/OpenWork/SuiteTicket.php b/vendor/w7corp/easywechat/src/OpenWork/SuiteTicket.php index 467b5b50..0c10c7f7 100644 --- a/vendor/w7corp/easywechat/src/OpenWork/SuiteTicket.php +++ b/vendor/w7corp/easywechat/src/OpenWork/SuiteTicket.php @@ -6,14 +6,13 @@ namespace EasyWeChat\OpenWork; use EasyWeChat\Kernel\Exceptions\RuntimeException; use EasyWeChat\OpenWork\Contracts\SuiteTicket as SuiteTicketInterface; +use function is_string; use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\InvalidArgumentException; +use function sprintf; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; -use function is_string; -use function sprintf; - class SuiteTicket implements SuiteTicketInterface { protected CacheInterface $cache; diff --git a/vendor/w7corp/easywechat/src/Pay/Application.php b/vendor/w7corp/easywechat/src/Pay/Application.php index 56388128..df6aff03 100644 --- a/vendor/w7corp/easywechat/src/Pay/Application.php +++ b/vendor/w7corp/easywechat/src/Pay/Application.php @@ -11,7 +11,6 @@ use EasyWeChat\Kernel\Support\PublicKey; use EasyWeChat\Kernel\Traits\InteractWithConfig; use EasyWeChat\Kernel\Traits\InteractWithHttpClient; use EasyWeChat\Kernel\Traits\InteractWithServerRequest; -use EasyWeChat\Pay\Contracts\Validator as ValidatorInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; class Application implements \EasyWeChat\Pay\Contracts\Application @@ -22,8 +21,6 @@ class Application implements \EasyWeChat\Pay\Contracts\Application protected ?ServerInterface $server = null; - protected ?ValidatorInterface $validator = null; - protected ?HttpClientInterface $client = null; protected ?Merchant $merchant = null; @@ -57,26 +54,6 @@ class Application implements \EasyWeChat\Pay\Contracts\Application return $this->merchant; } - /** - * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException - * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException - */ - public function getValidator(): ValidatorInterface - { - if (! $this->validator) { - $this->validator = new Validator($this->getMerchant()); - } - - return $this->validator; - } - - public function setValidator(ValidatorInterface $validator): static - { - $this->validator = $validator; - - return $this; - } - /** * @throws \ReflectionException * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException diff --git a/vendor/w7corp/easywechat/src/Pay/Client.php b/vendor/w7corp/easywechat/src/Pay/Client.php index 914658d8..f64bb21f 100644 --- a/vendor/w7corp/easywechat/src/Pay/Client.php +++ b/vendor/w7corp/easywechat/src/Pay/Client.php @@ -6,8 +6,6 @@ namespace EasyWeChat\Pay; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\InvalidConfigException; -use EasyWeChat\Kernel\Form\File; -use EasyWeChat\Kernel\Form\Form; use EasyWeChat\Kernel\HttpClient\HttpClientMethods; use EasyWeChat\Kernel\HttpClient\RequestUtil; use EasyWeChat\Kernel\HttpClient\RequestWithPresets; @@ -18,22 +16,20 @@ use EasyWeChat\Kernel\Support\UserAgent; use EasyWeChat\Kernel\Support\Xml; use EasyWeChat\Kernel\Traits\MockableHttpClient; use Exception; +use function is_array; +use function is_string; use Mockery; use Mockery\Mock; use Nyholm\Psr7\Uri; +use function str_starts_with; use Symfony\Component\HttpClient\DecoratorTrait; use Symfony\Component\HttpClient\HttpClient as SymfonyHttpClient; use Symfony\Component\HttpClient\HttpClientTrait; use Symfony\Component\HttpClient\MockHttpClient; -use Symfony\Component\Mime\Part\DataPart; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\ResponseInterface; -use function is_array; -use function is_string; -use function str_starts_with; - /** * @method ResponseInterface get(string $uri, array $options = []) * @method ResponseInterface post(string $uri, array $options = []) @@ -48,8 +44,8 @@ class Client implements HttpClientInterface use DecoratorTrait { DecoratorTrait::withOptions insteadof HttpClientTrait; } - use HttpClientMethods; use HttpClientTrait; + use HttpClientMethods; use MockableHttpClient; use RequestWithPresets; @@ -86,7 +82,7 @@ class Client implements HttpClientInterface $this->defaultOptions = array_merge(self::OPTIONS_DEFAULTS, $this->defaultOptions); if (! empty($defaultOptions)) { - $defaultOptions = RequestUtil::formatDefaultOptions($defaultOptions); + $defaultOptions = RequestUtil::formatDefaultOptions($this->defaultOptions); [, $this->defaultOptions] = self::prepareRequest(null, null, $defaultOptions, $this->defaultOptions); } @@ -101,20 +97,16 @@ class Client implements HttpClientInterface */ public function request(string $method, string $url, array $options = []): ResponseInterface { - /** @var array{headers?:array, xml?:array|string, body?:array|string} $options */ if (empty($options['headers'])) { $options['headers'] = []; } + /** @phpstan-ignore-next-line */ $options['headers']['User-Agent'] = UserAgent::create(); if ($this->isV3Request($url)) { - [, $_options] = $this->prepareRequest($method, $url, $options, $this->defaultOptions, true); - - // 部分签名算法需要使用到 body 中额外的部分,所以交由前置逻辑自行完成 - if (empty($options['headers']['Authorization'])) { - $options['headers']['Authorization'] = $this->createSignature($method, $url, $_options); - } + [, $options] = $this->prepareRequest($method, $url, $options, $this->defaultOptions, true); + $options['headers']['Authorization'] = $this->createSignature($method, $url, $options); } else { // v2 全部为 xml 请求 if (! empty($options['xml'])) { @@ -134,8 +126,9 @@ class Client implements HttpClientInterface $options['body'] = Xml::build($this->attachLegacySignature($options['body'])); } + /** @phpstan-ignore-next-line */ if (! isset($options['headers']['Content-Type']) && ! isset($options['headers']['content-type'])) { - $options['headers']['Content-Type'] = 'text/xml'; + $options['headers']['Content-Type'] = 'text/xml'; /** @phpstan-ignore-line */ } } @@ -144,11 +137,7 @@ class Client implements HttpClientInterface $options['headers'] = array_merge($this->prependHeaders, $options['headers'] ?? []); } - return new Response( - $this->client->request($method, $url, $options), - failureJudge: $this->isV3Request($url) ? null : fn (Response $response) => $response->toArray()['result_code'] === 'FAIL' || $response->toArray()['return_code'] === 'FAIL', - throw: $this->throw - ); + return new Response($this->client->request($method, $url, $options), throw: $this->throw); } protected function isV3Request(string $url): bool @@ -166,8 +155,6 @@ class Client implements HttpClientInterface /** * @param array $arguments - * - * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException */ public function __call(string $name, array $arguments): mixed { @@ -178,33 +165,6 @@ class Client implements HttpClientInterface return $this->client->$name(...$arguments); } - /** - * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface - * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException - */ - public function uploadMedia(string $uri, string $pathOrContents, ?array $meta = null, ?string $filename = null): ResponseInterface - { - $isFile = is_file($pathOrContents); - - $meta = self::jsonEncode($meta ?? [ - 'filename' => $isFile ? basename($pathOrContents) : $filename ?? 'file', - 'sha256' => $isFile ? hash_file('sha256', $pathOrContents) : hash('sha256', $pathOrContents), - ]); - - $form = Form::create([ - 'file' => File::from($pathOrContents), - 'meta' => new DataPart($meta, null, 'application/json'), - ]); - - $options = $signatureOptions = $form->toOptions(); - - $signatureOptions['body'] = $meta; - - $options['headers']['Authorization'] = $this->createSignature('POST', $uri, $signatureOptions); - - return $this->request('POST', $uri, $options); - } - /** * @param array $options * diff --git a/vendor/w7corp/easywechat/src/Pay/Contracts/ResponseValidator.php b/vendor/w7corp/easywechat/src/Pay/Contracts/ResponseValidator.php index 2444a006..a999f4d8 100644 --- a/vendor/w7corp/easywechat/src/Pay/Contracts/ResponseValidator.php +++ b/vendor/w7corp/easywechat/src/Pay/Contracts/ResponseValidator.php @@ -4,10 +4,13 @@ declare(strict_types=1); namespace EasyWeChat\Pay\Contracts; -use EasyWeChat\Kernel\HttpClient\Response; +use EasyWeChat\Kernel\Exceptions\BadResponseException; use Psr\Http\Message\ResponseInterface; interface ResponseValidator { - public function validate(ResponseInterface|Response $response): void; + /** + * @throws BadResponseException if the response is not successful. + */ + public function validate(ResponseInterface $response): void; } diff --git a/vendor/w7corp/easywechat/src/Pay/Contracts/Validator.php b/vendor/w7corp/easywechat/src/Pay/Contracts/Validator.php deleted file mode 100644 index e06eeea2..00000000 --- a/vendor/w7corp/easywechat/src/Pay/Contracts/Validator.php +++ /dev/null @@ -1,15 +0,0 @@ - hash_hmac('sha256', $message, $attributes['key']); } else { $signType = 'md5'; } - unset($params['sign_type']); - $sign = call_user_func_array($signType, [urldecode(http_build_query($attributes))]); if (! is_string($sign)) { diff --git a/vendor/w7corp/easywechat/src/Pay/Merchant.php b/vendor/w7corp/easywechat/src/Pay/Merchant.php index ef58ee2d..7f953623 100644 --- a/vendor/w7corp/easywechat/src/Pay/Merchant.php +++ b/vendor/w7corp/easywechat/src/Pay/Merchant.php @@ -4,13 +4,12 @@ declare(strict_types=1); namespace EasyWeChat\Pay; +use function array_is_list; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\InvalidConfigException; use EasyWeChat\Kernel\Support\PrivateKey; use EasyWeChat\Kernel\Support\PublicKey; use EasyWeChat\Pay\Contracts\Merchant as MerchantInterface; - -use function array_is_list; use function intval; use function is_string; diff --git a/vendor/w7corp/easywechat/src/Pay/Message.php b/vendor/w7corp/easywechat/src/Pay/Message.php index 055335e8..75089c06 100644 --- a/vendor/w7corp/easywechat/src/Pay/Message.php +++ b/vendor/w7corp/easywechat/src/Pay/Message.php @@ -2,11 +2,10 @@ namespace EasyWeChat\Pay; -use RuntimeException; - use function is_array; use function is_string; use function json_decode; +use RuntimeException; /** * @property string $trade_state diff --git a/vendor/w7corp/easywechat/src/Pay/ResponseValidator.php b/vendor/w7corp/easywechat/src/Pay/ResponseValidator.php index 7ceab6b3..8f1da6ff 100644 --- a/vendor/w7corp/easywechat/src/Pay/ResponseValidator.php +++ b/vendor/w7corp/easywechat/src/Pay/ResponseValidator.php @@ -4,13 +4,26 @@ declare(strict_types=1); namespace EasyWeChat\Pay; +use function base64_decode; use EasyWeChat\Kernel\Exceptions\BadResponseException; -use EasyWeChat\Kernel\HttpClient\Response as HttpClientResponse; +use EasyWeChat\Kernel\Exceptions\InvalidConfigException; use EasyWeChat\Pay\Contracts\Merchant as MerchantInterface; -use Psr\Http\Message\ResponseInterface as PsrResponse; +use const OPENSSL_ALGO_SHA256; +use Psr\Http\Message\ResponseInterface; +use function strval; class ResponseValidator implements \EasyWeChat\Pay\Contracts\ResponseValidator { + public const MAX_ALLOWED_CLOCK_OFFSET = 300; + + public const HEADER_TIMESTAMP = 'Wechatpay-Timestamp'; + + public const HEADER_NONCE = 'Wechatpay-Nonce'; + + public const HEADER_SERIAL = 'Wechatpay-Serial'; + + public const HEADER_SIGNATURE = 'Wechatpay-Signature'; + public function __construct(protected MerchantInterface $merchant) { } @@ -18,19 +31,48 @@ class ResponseValidator implements \EasyWeChat\Pay\Contracts\ResponseValidator /** * @throws \EasyWeChat\Kernel\Exceptions\BadResponseException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException - * @throws \EasyWeChat\Pay\Exceptions\InvalidSignatureException - * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface */ - public function validate(PsrResponse|HttpClientResponse $response): void + public function validate(ResponseInterface $response): void { - if ($response instanceof HttpClientResponse) { - $response = $response->toPsrResponse(); - } - if ($response->getStatusCode() !== 200) { throw new BadResponseException('Request Failed'); } - (new Validator($this->merchant))->validate($response); + foreach ([self::HEADER_SIGNATURE, self::HEADER_TIMESTAMP, self::HEADER_SERIAL, self::HEADER_NONCE] as $header) { + if (! $response->hasHeader($header)) { + throw new BadResponseException("Missing Header: {$header}"); + } + } + + [$timestamp] = $response->getHeader(self::HEADER_TIMESTAMP); + [$nonce] = $response->getHeader(self::HEADER_NONCE); + [$serial] = $response->getHeader(self::HEADER_SERIAL); + [$signature] = $response->getHeader(self::HEADER_SIGNATURE); + + $body = (string) $response->getBody(); + + $message = "{$timestamp}\n{$nonce}\n{$body}\n"; + + if (\time() - \intval($timestamp) > self::MAX_ALLOWED_CLOCK_OFFSET) { + throw new BadResponseException('Clock Offset Exceeded'); + } + + $publicKey = $this->merchant->getPlatformCert($serial); + + if (! $publicKey) { + throw new InvalidConfigException( + "No platform certs found for serial: {$serial}, + please download from wechat pay and set it in merchant config with key `certs`." + ); + } + + if (false === \openssl_verify( + $message, + base64_decode($signature), + strval($publicKey), + OPENSSL_ALGO_SHA256 + )) { + throw new BadResponseException('Invalid Signature'); + } } } diff --git a/vendor/w7corp/easywechat/src/Pay/Server.php b/vendor/w7corp/easywechat/src/Pay/Server.php index 4aacbe63..cc434afb 100644 --- a/vendor/w7corp/easywechat/src/Pay/Server.php +++ b/vendor/w7corp/easywechat/src/Pay/Server.php @@ -8,21 +8,18 @@ use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\RuntimeException; use EasyWeChat\Kernel\HttpClient\RequestUtil; use EasyWeChat\Kernel\ServerResponse; -use EasyWeChat\Kernel\Support\AesEcb; use EasyWeChat\Kernel\Support\AesGcm; -use EasyWeChat\Kernel\Support\Xml; use EasyWeChat\Kernel\Traits\InteractWithHandlers; use EasyWeChat\Pay\Contracts\Merchant as MerchantInterface; use Exception; -use Nyholm\Psr7\Response; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; -use Throwable; - use function is_array; use function json_decode; use function json_encode; +use Nyholm\Psr7\Response; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; use function strval; +use Throwable; /** * @link https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml @@ -114,51 +111,7 @@ class Server implements ServerInterface public function getRequestMessage(?ServerRequestInterface $request = null): \EasyWeChat\Kernel\Message|Message { $originContent = (string) ($request ?? $this->request)->getBody(); - - // 微信支付的回调数据回调,偶尔是 XML https://github.com/w7corp/easywechat/issues/2737 - // PS: 这帮傻逼,真的是该死啊 - $isXml = str_starts_with($originContent, 'decodeXmlMessage($originContent) : $this->decodeJsonMessage($originContent); - - return new Message($attributes, $originContent); - } - - /** - * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException - * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException - */ - protected function decodeXmlMessage(string $contents): array - { - $attributes = Xml::parse($contents); - - if (! is_array($attributes)) { - throw new RuntimeException('Invalid request body.'); - } - - if (! empty($attributes['req_info'])) { - $key = $this->merchant->getV2SecretKey(); - - if (empty($key)) { - throw new InvalidArgumentException('V2 secret key is required.'); - } - - $attributes = Xml::parse(AesEcb::decrypt($attributes['req_info'], md5($key), iv: '')); - } - - if (! is_array($attributes)) { - throw new RuntimeException('Failed to decrypt request message.'); - } - - return $attributes; - } - - /** - * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException - * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException - */ - protected function decodeJsonMessage(string $contents): array - { - $attributes = json_decode($contents, true); + $attributes = json_decode($originContent, true); if (! is_array($attributes)) { throw new RuntimeException('Invalid request body.'); @@ -182,7 +135,7 @@ class Server implements ServerInterface throw new RuntimeException('Failed to decrypt request message.'); } - return $attributes; + return new Message($attributes, $originContent); } /** diff --git a/vendor/w7corp/easywechat/src/Pay/Signature.php b/vendor/w7corp/easywechat/src/Pay/Signature.php index c44cec5b..73b4bc12 100644 --- a/vendor/w7corp/easywechat/src/Pay/Signature.php +++ b/vendor/w7corp/easywechat/src/Pay/Signature.php @@ -4,14 +4,13 @@ declare(strict_types=1); namespace EasyWeChat\Pay; +use function base64_encode; use EasyWeChat\Kernel\Support\Str; use EasyWeChat\Pay\Contracts\Merchant as MerchantInterface; use Exception; -use Nyholm\Psr7\Uri; - -use function base64_encode; use function http_build_query; use function ltrim; +use Nyholm\Psr7\Uri; use function openssl_sign; use function parse_str; use function strtoupper; @@ -34,7 +33,7 @@ class Signature $uri = new Uri($url); parse_str($uri->getQuery(), $query); - $uri = $uri->withQuery(http_build_query(array_merge($query, (array) ($options['query'] ?? [])))); + $uri = $uri->withQuery(http_build_query(array_merge($query, (array) $options['query']))); $body = ''; $query = $uri->getQuery(); diff --git a/vendor/w7corp/easywechat/src/Pay/URLSchemeBuilder.php b/vendor/w7corp/easywechat/src/Pay/URLSchemeBuilder.php index 23b85af7..8dd140eb 100644 --- a/vendor/w7corp/easywechat/src/Pay/URLSchemeBuilder.php +++ b/vendor/w7corp/easywechat/src/Pay/URLSchemeBuilder.php @@ -7,7 +7,6 @@ namespace EasyWeChat\Pay; use EasyWeChat\Kernel\Support\Str; use EasyWeChat\Pay\Contracts\Merchant as MerchantInterface; use Exception; - use function sprintf; class URLSchemeBuilder diff --git a/vendor/w7corp/easywechat/src/Pay/Utils.php b/vendor/w7corp/easywechat/src/Pay/Utils.php index ef8c1a20..8581a7d7 100644 --- a/vendor/w7corp/easywechat/src/Pay/Utils.php +++ b/vendor/w7corp/easywechat/src/Pay/Utils.php @@ -2,15 +2,14 @@ namespace EasyWeChat\Pay; +use function base64_encode; +use function call_user_func_array; use EasyWeChat\Kernel\Exceptions\InvalidConfigException; use EasyWeChat\Kernel\Support\Str; use EasyWeChat\Pay\Contracts\Merchant as MerchantInterface; use Exception; -use JetBrains\PhpStorm\ArrayShape; - -use function base64_encode; -use function call_user_func_array; use function http_build_query; +use JetBrains\PhpStorm\ArrayShape; use function openssl_sign; use function strtoupper; use function time; @@ -164,7 +163,7 @@ class Utils throw new InvalidConfigException('Missing v2 secret key.'); } - if ($params['signType'] === 'HMAC-SHA256') { + if ('HMAC-SHA256' === $params['signType']) { $method = function ($str) use ($secretKey) { return hash_hmac('sha256', $str, $secretKey); }; diff --git a/vendor/w7corp/easywechat/src/Pay/Validator.php b/vendor/w7corp/easywechat/src/Pay/Validator.php deleted file mode 100644 index 82d42377..00000000 --- a/vendor/w7corp/easywechat/src/Pay/Validator.php +++ /dev/null @@ -1,71 +0,0 @@ -hasHeader($header)) { - throw new InvalidSignatureException("Missing Header: {$header}"); - } - } - - [$timestamp] = $message->getHeader(self::HEADER_TIMESTAMP); - [$nonce] = $message->getHeader(self::HEADER_NONCE); - [$serial] = $message->getHeader(self::HEADER_SERIAL); - [$signature] = $message->getHeader(self::HEADER_SIGNATURE); - - $body = (string) $message->getBody(); - - $message = "{$timestamp}\n{$nonce}\n{$body}\n"; - - if (\time() - \intval($timestamp) > self::MAX_ALLOWED_CLOCK_OFFSET) { - throw new InvalidSignatureException('Clock Offset Exceeded'); - } - - $publicKey = $this->merchant->getPlatformCert($serial); - - if (! $publicKey) { - throw new InvalidConfigException( - "No platform certs found for serial: {$serial}, - please download from wechat pay and set it in merchant config with key `certs`." - ); - } - - if (\openssl_verify( - $message, - base64_decode($signature), - strval($publicKey), - OPENSSL_ALGO_SHA256 - ) === false) { - throw new InvalidSignatureException('Invalid Signature'); - } - } -} diff --git a/vendor/w7corp/easywechat/src/Work/AccessToken.php b/vendor/w7corp/easywechat/src/Work/AccessToken.php index 26597be4..ae507e36 100644 --- a/vendor/w7corp/easywechat/src/Work/AccessToken.php +++ b/vendor/w7corp/easywechat/src/Work/AccessToken.php @@ -4,13 +4,16 @@ declare(strict_types=1); namespace EasyWeChat\Work; -use const JSON_UNESCAPED_UNICODE; - use EasyWeChat\Kernel\Contracts\RefreshableAccessToken; use EasyWeChat\Kernel\Exceptions\HttpException; +use function intval; +use function is_string; use JetBrains\PhpStorm\ArrayShape; +use function json_encode; +use const JSON_UNESCAPED_UNICODE; use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\InvalidArgumentException; +use function sprintf; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\HttpClient\HttpClient; @@ -21,11 +24,6 @@ use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function intval; -use function is_string; -use function json_encode; -use function sprintf; - class AccessToken implements RefreshableAccessToken { protected HttpClientInterface $httpClient; @@ -56,6 +54,8 @@ class AccessToken implements RefreshableAccessToken } /** + * @return string + * * @throws HttpException * @throws InvalidArgumentException * @throws ClientExceptionInterface diff --git a/vendor/w7corp/easywechat/src/Work/Application.php b/vendor/w7corp/easywechat/src/Work/Application.php index d337228c..982c64f7 100644 --- a/vendor/w7corp/easywechat/src/Work/Application.php +++ b/vendor/w7corp/easywechat/src/Work/Application.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace EasyWeChat\Work; +use function array_merge; use EasyWeChat\Kernel\Contracts\AccessToken as AccessTokenInterface; use EasyWeChat\Kernel\Contracts\Server as ServerInterface; use EasyWeChat\Kernel\HttpClient\AccessTokenAwareClient; @@ -18,15 +19,13 @@ use EasyWeChat\Work\Contracts\Application as ApplicationInterface; use Overtrue\Socialite\Contracts\ProviderInterface as SocialiteProviderInterface; use Overtrue\Socialite\Providers\WeWork; -use function array_merge; - class Application implements ApplicationInterface { - use InteractWithCache; - use InteractWithClient; use InteractWithConfig; - use InteractWithHttpClient; + use InteractWithCache; use InteractWithServerRequest; + use InteractWithHttpClient; + use InteractWithClient; protected ?Encryptor $encryptor = null; @@ -141,22 +140,14 @@ class Application implements ApplicationInterface public function getOAuth(): SocialiteProviderInterface { - $provider = new WeWork( + return (new WeWork( [ 'client_id' => $this->getAccount()->getCorpId(), 'client_secret' => $this->getAccount()->getSecret(), 'redirect_url' => $this->config->get('oauth.redirect_url'), ] - ); - - $provider->withApiAccessToken($this->getAccessToken()->getToken()); - $provider->scopes((array) $this->config->get('oauth.scopes', ['snsapi_base'])); - - if ($this->config->has('agent_id') && \is_numeric($this->config->get('agent_id'))) { - $provider->withAgentId((int) $this->config->get('agent_id')); - } - - return $provider; + ))->withApiAccessToken($this->getAccessToken()->getToken()) + ->scopes((array) $this->config->get('oauth.scopes', ['snsapi_base'])); } public function getTicket(): JsApiTicket diff --git a/vendor/w7corp/easywechat/src/Work/JsApiTicket.php b/vendor/w7corp/easywechat/src/Work/JsApiTicket.php index 313cba7e..ac4d4ce8 100644 --- a/vendor/w7corp/easywechat/src/Work/JsApiTicket.php +++ b/vendor/w7corp/easywechat/src/Work/JsApiTicket.php @@ -5,9 +5,12 @@ declare(strict_types=1); namespace EasyWeChat\Work; use EasyWeChat\Kernel\Exceptions\HttpException; +use function intval; +use function is_string; use JetBrains\PhpStorm\ArrayShape; use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\InvalidArgumentException; +use function sprintf; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\HttpClient\HttpClient; @@ -18,10 +21,6 @@ use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function intval; -use function is_string; -use function sprintf; - class JsApiTicket { protected HttpClientInterface $httpClient; diff --git a/vendor/w7corp/easywechat/src/Work/Server.php b/vendor/w7corp/easywechat/src/Work/Server.php index ee9f29ef..f0a59b69 100644 --- a/vendor/w7corp/easywechat/src/Work/Server.php +++ b/vendor/w7corp/easywechat/src/Work/Server.php @@ -23,8 +23,8 @@ use Throwable; class Server implements ServerInterface { use DecryptXmlMessage; - use InteractWithHandlers; use RespondXmlMessage; + use InteractWithHandlers; protected ServerRequestInterface $request; @@ -148,7 +148,7 @@ class Server implements ServerInterface public function handlePartyCreated(callable $handler): static { $this->with(function (Message $message, Closure $next) use ($handler): mixed { - return $message->Event === 'change_contact' && $message->ChangeType === 'create_party' ? $handler( + return $message->InfoType === 'change_contact' && $message->ChangeType === 'create_party' ? $handler( $message, $next ) : $next($message); @@ -163,7 +163,7 @@ class Server implements ServerInterface public function handlePartyUpdated(callable $handler): static { $this->with(function (Message $message, Closure $next) use ($handler): mixed { - return $message->Event === 'change_contact' && $message->ChangeType === 'update_party' ? $handler( + return $message->InfoType === 'change_contact' && $message->ChangeType === 'update_party' ? $handler( $message, $next ) : $next($message); @@ -178,7 +178,7 @@ class Server implements ServerInterface public function handlePartyDeleted(callable $handler): static { $this->with(function (Message $message, Closure $next) use ($handler): mixed { - return $message->Event === 'change_contact' && $message->ChangeType === 'delete_party' ? $handler( + return $message->InfoType === 'change_contact' && $message->ChangeType === 'delete_party' ? $handler( $message, $next ) : $next($message); diff --git a/vendor/w7corp/easywechat/src/Work/Utils.php b/vendor/w7corp/easywechat/src/Work/Utils.php index 8de79e18..a784c641 100644 --- a/vendor/w7corp/easywechat/src/Work/Utils.php +++ b/vendor/w7corp/easywechat/src/Work/Utils.php @@ -11,7 +11,6 @@ use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; - use function time; class Utils diff --git a/vendor/webman/console/src/Commands/AppPluginCreateCommand.php b/vendor/webman/console/src/Commands/AppPluginCreateCommand.php index d1b25086..ca3f186e 100644 --- a/vendor/webman/console/src/Commands/AppPluginCreateCommand.php +++ b/vendor/webman/console/src/Commands/AppPluginCreateCommand.php @@ -67,7 +67,6 @@ class AppPluginCreateCommand extends Command $this->createViewFile("$base_path/plugin/$name/app/view/index/index.html"); $this->createConfigFiles("$base_path/plugin/$name/config", $name); $this->createApiFiles("$base_path/plugin/$name/api", $name); - $this->createInstallSqlFile("$base_path/plugin/$name/install.sql"); } /** @@ -172,17 +171,9 @@ EOF; namespace plugin\\$name\api; use plugin\admin\api\Menu; -use support\Db; -use Throwable; class Install { - - /** - * 数据库连接 - */ - protected static \$connection = 'plugin.admin.mysql'; - /** * 安装 * @@ -191,8 +182,6 @@ class Install */ public static function install(\$version) { - // 安装数据库 - static::installSql(); // 导入菜单 if(\$menus = static::getMenus()) { Menu::import(\$menus); @@ -211,8 +200,6 @@ class Install foreach (static::getMenus() as \$menu) { Menu::delete(\$menu['key']); } - // 卸载数据库 - static::uninstallSql(); } /** @@ -229,17 +216,10 @@ class Install if (isset(\$context['previous_menus'])) { static::removeUnnecessaryMenus(\$context['previous_menus']); } - // 安装数据库 - static::installSql(); // 导入新菜单 if (\$menus = static::getMenus()) { Menu::import(\$menus); } - // 执行更新操作 - \$update_file = __DIR__ . '/../update.php'; - if (is_file(\$update_file)) { - include \$update_file; - } } /** @@ -283,63 +263,6 @@ class Install Menu::delete(\$name); } } - - /** - * 安装SQL - * - * @return void - */ - protected static function installSql() - { - static::importSql(__DIR__ . '/../install.sql'); - } - - /** - * 卸载SQL - * - * @return void - */ - protected static function uninstallSql() { - // 如果卸载数据库文件存在责直接使用 - \$uninstallSqlFile = __DIR__ . '/../uninstall.sql'; - if (is_file(\$uninstallSqlFile)) { - static::importSql(\$uninstallSqlFile); - return; - } - // 否则根据install.sql生成卸载数据库文件uninstall.sql - \$installSqlFile = __DIR__ . '/../install.sql'; - if (!is_file(\$installSqlFile)) { - return; - } - \$installSql = file_get_contents(\$installSqlFile); - preg_match_all('/CREATE TABLE `(.+?)`/si', \$installSql, \$matches); - \$dropSql = ''; - foreach (\$matches[1] as \$table) { - \$dropSql .= "DROP TABLE IF EXISTS `\$table`;\\n"; - } - file_put_contents(\$uninstallSqlFile, \$dropSql); - static::importSql(\$uninstallSqlFile); - unlink(\$uninstallSqlFile); - } - - /** - * 导入数据库 - * - * @return void - */ - public static function importSql(\$mysqlDumpFile) - { - if (!\$mysqlDumpFile || !is_file(\$mysqlDumpFile)) { - return; - } - foreach (explode(';', file_get_contents(\$mysqlDumpFile)) as \$sql) { - if (\$sql = trim(\$sql)) { - try { - Db::connection(static::\$connection)->statement(\$sql); - } catch (Throwable \$e) {} - } - } - } } EOF; @@ -348,14 +271,6 @@ EOF; } - /** - * @return void - */ - protected function createInstallSqlFile($file) - { - file_put_contents($file, ''); - } - /** * @param $base * @param $name diff --git a/vendor/webman/console/src/Commands/AppPluginUpdateCommand.php b/vendor/webman/console/src/Commands/AppPluginUpdateCommand.php deleted file mode 100644 index a953a74c..00000000 --- a/vendor/webman/console/src/Commands/AppPluginUpdateCommand.php +++ /dev/null @@ -1,42 +0,0 @@ -addArgument('name', InputArgument::REQUIRED, 'App plugin name'); - } - - /** - * @param InputInterface $input - * @param OutputInterface $output - * @return int - */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $name = $input->getArgument('name'); - $output->writeln("Update App Plugin $name"); - $class = "\\plugin\\$name\\api\\Install"; - if (!method_exists($class, 'update')) { - throw new \RuntimeException("Method $class::update not exists"); - } - call_user_func([$class, 'update'], config("plugin.$name.app.version"), config("plugin.$name.app.version")); - return self::SUCCESS; - } - -} diff --git a/vendor/webman/console/src/Commands/MakeBootstrapCommand.php b/vendor/webman/console/src/Commands/MakeBootstrapCommand.php index edd23cc8..e41ced91 100644 --- a/vendor/webman/console/src/Commands/MakeBootstrapCommand.php +++ b/vendor/webman/console/src/Commands/MakeBootstrapCommand.php @@ -6,7 +6,6 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Question\ConfirmationQuestion; use Webman\Console\Util; @@ -42,7 +41,7 @@ class MakeBootstrapCommand extends Command $upper = $bootstrap_str === 'Bootstrap'; if (!($pos = strrpos($name, '/'))) { $name = ucfirst($name); - $file = app_path() . DIRECTORY_SEPARATOR . $bootstrap_str . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$bootstrap_str/$name.php"; $namespace = $upper ? 'App\Bootstrap' : 'app\bootstrap'; } else { if($real_name = Util::guessPath(app_path(), $name)) { @@ -55,18 +54,10 @@ class MakeBootstrapCommand extends Command } $path = "$bootstrap_str/" . substr($upper ? ucfirst($name) : $name, 0, $pos); $name = ucfirst(substr($name, $pos + 1)); - $file = app_path() . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$path/$name.php"; $namespace = str_replace('/', '\\', ($upper ? 'App/' : 'app/') . $path); } - if (is_file($file)) { - $helper = $this->getHelper('question'); - $question = new ConfirmationQuestion("$file already exists. Do you want to override it? (yes/no)", false); - if (!$helper->ask($input, $output, $question)) { - return Command::SUCCESS; - } - } - $this->createBootstrap($name, $namespace, $file); if ($enable) { $this->addConfig("$namespace\\$name", config_path() . '/bootstrap.php'); diff --git a/vendor/webman/console/src/Commands/MakeCommandCommand.php b/vendor/webman/console/src/Commands/MakeCommandCommand.php index 316d3b7b..b60fc34c 100644 --- a/vendor/webman/console/src/Commands/MakeCommandCommand.php +++ b/vendor/webman/console/src/Commands/MakeCommandCommand.php @@ -6,7 +6,6 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Question\ConfirmationQuestion; use Webman\Console\Util; @@ -43,18 +42,9 @@ class MakeCommandCommand extends Command foreach ($items as $item) { $name.=ucfirst($item); } - $file = app_path() . DIRECTORY_SEPARATOR . $command_str . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$command_str/$name.php"; $upper = $command_str === 'Command'; $namespace = $upper ? 'App\Command' : 'app\command'; - - if (is_file($file)) { - $helper = $this->getHelper('question'); - $question = new ConfirmationQuestion("$file already exists. Do you want to override it? (yes/no)", false); - if (!$helper->ask($input, $output, $question)) { - return Command::SUCCESS; - } - } - $this->createCommand($name, $namespace, $file, $command); return self::SUCCESS; diff --git a/vendor/webman/console/src/Commands/MakeControllerCommand.php b/vendor/webman/console/src/Commands/MakeControllerCommand.php index 8fc74a0c..3c78581d 100644 --- a/vendor/webman/console/src/Commands/MakeControllerCommand.php +++ b/vendor/webman/console/src/Commands/MakeControllerCommand.php @@ -6,7 +6,6 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Question\ConfirmationQuestion; use Webman\Console\Util; @@ -42,7 +41,7 @@ class MakeControllerCommand extends Command if (!($pos = strrpos($name, '/'))) { $name = ucfirst($name); $controller_str = Util::guessPath(app_path(), 'controller') ?: 'controller'; - $file = app_path() . DIRECTORY_SEPARATOR . $controller_str . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$controller_str/$name.php"; $namespace = $controller_str === 'Controller' ? 'App\Controller' : 'app\controller'; } else { $name_str = substr($name, 0, $pos); @@ -61,18 +60,9 @@ class MakeControllerCommand extends Command } $path = "$name_str/" . ($upper ? 'Controller' : 'controller'); $name = ucfirst(substr($name, $pos + 1)); - $file = app_path() . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$path/$name.php"; $namespace = str_replace('/', '\\', ($upper ? 'App/' : 'app/') . $path); } - - if (is_file($file)) { - $helper = $this->getHelper('question'); - $question = new ConfirmationQuestion("$file already exists. Do you want to override it? (yes/no)", false); - if (!$helper->ask($input, $output, $question)) { - return Command::SUCCESS; - } - } - $this->createController($name, $namespace, $file); return self::SUCCESS; diff --git a/vendor/webman/console/src/Commands/MakeMiddlewareCommand.php b/vendor/webman/console/src/Commands/MakeMiddlewareCommand.php index 98ba5cc3..55168673 100644 --- a/vendor/webman/console/src/Commands/MakeMiddlewareCommand.php +++ b/vendor/webman/console/src/Commands/MakeMiddlewareCommand.php @@ -6,7 +6,6 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Question\ConfirmationQuestion; use Webman\Console\Util; @@ -40,7 +39,7 @@ class MakeMiddlewareCommand extends Command $upper = $middleware_str === 'Middleware'; if (!($pos = strrpos($name, '/'))) { $name = ucfirst($name); - $file = app_path() . DIRECTORY_SEPARATOR . $middleware_str . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$middleware_str/$name.php"; $namespace = $upper ? 'App\Middleware' : 'app\middleware'; } else { if($real_name = Util::guessPath(app_path(), $name)) { @@ -53,18 +52,10 @@ class MakeMiddlewareCommand extends Command } $path = "$middleware_str/" . substr($upper ? ucfirst($name) : $name, 0, $pos); $name = ucfirst(substr($name, $pos + 1)); - $file = app_path() . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$path/$name.php"; $namespace = str_replace('/', '\\', ($upper ? 'App/' : 'app/') . $path); } - - if (is_file($file)) { - $helper = $this->getHelper('question'); - $question = new ConfirmationQuestion("$file already exists. Do you want to override it? (yes/no)", false); - if (!$helper->ask($input, $output, $question)) { - return Command::SUCCESS; - } - } - + $this->createMiddleware($name, $namespace, $file); return self::SUCCESS; @@ -93,9 +84,9 @@ use Webman\Http\Request; class $name implements MiddlewareInterface { - public function process(Request \$request, callable \$handler) : Response + public function process(Request \$request, callable \$next) : Response { - return \$handler(\$request); + return \$next(\$request); } } diff --git a/vendor/webman/console/src/Commands/MakeModelCommand.php b/vendor/webman/console/src/Commands/MakeModelCommand.php index deb3d1fa..a183dc39 100644 --- a/vendor/webman/console/src/Commands/MakeModelCommand.php +++ b/vendor/webman/console/src/Commands/MakeModelCommand.php @@ -9,7 +9,6 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Question\ConfirmationQuestion; use Webman\Console\Util; @@ -43,7 +42,7 @@ class MakeModelCommand extends Command if (!($pos = strrpos($name, '/'))) { $name = ucfirst($name); $model_str = Util::guessPath(app_path(), 'model') ?: 'model'; - $file = app_path() . DIRECTORY_SEPARATOR . $model_str . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$model_str/$name.php"; $namespace = $model_str === 'Model' ? 'App\Model' : 'app\model'; } else { $name_str = substr($name, 0, $pos); @@ -62,7 +61,7 @@ class MakeModelCommand extends Command } $path = "$name_str/" . ($upper ? 'Model' : 'model'); $name = ucfirst(substr($name, $pos + 1)); - $file = app_path() . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . "$name.php"; + $file = app_path() . "/$path/$name.php"; $namespace = str_replace('/', '\\', ($upper ? 'App/' : 'app/') . $path); } if (!$type) { @@ -76,15 +75,6 @@ class MakeModelCommand extends Command } $type = !$database && $thinkorm ? 'tp' : 'laravel'; } - - if (is_file($file)) { - $helper = $this->getHelper('question'); - $question = new ConfirmationQuestion("$file already exists. Do you want to override it? (yes/no)", false); - if (!$helper->ask($input, $output, $question)) { - return Command::SUCCESS; - } - } - if ($type == 'tp') { $this->createTpModel($name, $namespace, $file, $connection); } else { diff --git a/vendor/webman/push/src/config/plugin/webman/push/app.php b/vendor/webman/push/src/config/plugin/webman/push/app.php index cb31da74..1b002097 100644 --- a/vendor/webman/push/src/config/plugin/webman/push/app.php +++ b/vendor/webman/push/src/config/plugin/webman/push/app.php @@ -3,8 +3,8 @@ return [ 'enable' => true, 'websocket' => 'websocket://0.0.0.0:3131', 'api' => 'http://0.0.0.0:3232', - 'app_key' => 'a68188e3277a6e146417b6cdf6485eba', - 'app_secret' => '37714ed39225bc74375adc66fc704c60', + 'app_key' => '228bad5cd519172a923b524d0cd8aa27', + 'app_secret' => '792493920e9335ea9ebb3b1dccde7583', 'channel_hook' => 'http://127.0.0.1:8787/plugin/webman/push/hook', 'auth' => '/plugin/webman/push/auth' ]; \ No newline at end of file diff --git a/vendor/webman/push/src/push-uniapp.js b/vendor/webman/push/src/push-uniapp.js index c9c9e0ca..0a6e82c3 100644 --- a/vendor/webman/push/src/push-uniapp.js +++ b/vendor/webman/push/src/push-uniapp.js @@ -786,7 +786,7 @@ function __ajax(options){ options=options||{}; options.type=(options.type||'GET').toUpperCase(); options.dataType=options.dataType||'json'; - params=formatParams(options.data); + var params=formatParams(options.data); var xhr; if(window.XMLHttpRequest){ diff --git a/vendor/webman/push/src/push-vue.js b/vendor/webman/push/src/push-vue.js index b769e7da..cc5af65b 100644 --- a/vendor/webman/push/src/push-vue.js +++ b/vendor/webman/push/src/push-vue.js @@ -693,7 +693,7 @@ function __ajax(options) { options = options || {}; options.type = (options.type || 'GET').toUpperCase(); options.dataType = options.dataType || 'json'; - params = formatParams(options.data); + var params = formatParams(options.data); var xhr; if (window.XMLHttpRequest) { @@ -729,4 +729,4 @@ function formatParams(data) { arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name])); } return arr.join('&'); -} \ No newline at end of file +} diff --git a/vendor/webman/push/src/push.js b/vendor/webman/push/src/push.js index 92132ea7..92fb3790 100644 --- a/vendor/webman/push/src/push.js +++ b/vendor/webman/push/src/push.js @@ -707,7 +707,7 @@ function __ajax(options){ options=options||{}; options.type=(options.type||'GET').toUpperCase(); options.dataType=options.dataType||'json'; - params=formatParams(options.data); + var params=formatParams(options.data); var xhr; if(window.XMLHttpRequest){ diff --git a/vendor/webman/redis-queue/composer.json b/vendor/webman/redis-queue/composer.json index 39e3f0db..aa87cee8 100644 --- a/vendor/webman/redis-queue/composer.json +++ b/vendor/webman/redis-queue/composer.json @@ -2,7 +2,7 @@ "name": "webman/redis-queue", "description": "Redis message queue plugin for webman.", "require": { - "workerman/redis-queue": "^1.2" + "workerman/redis-queue": "^1.0" }, "autoload": { "psr-4": {"Webman\\RedisQueue\\": "./src"} diff --git a/vendor/webman/redis-queue/src/Process/Consumer.php b/vendor/webman/redis-queue/src/Process/Consumer.php index 653d64e4..1406ef39 100644 --- a/vendor/webman/redis-queue/src/Process/Consumer.php +++ b/vendor/webman/redis-queue/src/Process/Consumer.php @@ -1,5 +1,4 @@ connection ?? 'default'; $queue = $consumer->queue; - if (!$queue) { - echo "Consumer {$class} queue not exists\r\n"; - continue; - } $this->_consumers[$queue] = $consumer; $connection = Client::connection($connection_name); $connection->subscribe($queue, [$consumer, 'consume']); @@ -84,5 +79,6 @@ class Consumer } } } + } } diff --git a/vendor/yansongda/artful/CHANGELOG.md b/vendor/yansongda/artful/CHANGELOG.md index 879de2e6..695af808 100644 --- a/vendor/yansongda/artful/CHANGELOG.md +++ b/vendor/yansongda/artful/CHANGELOG.md @@ -1,3 +1,9 @@ +## v1.1.1 + +### chore + +- chore: 升级 `yansongda/supports` 版本以解决潜在的问题(#19) + ## v1.1.0 ### changed diff --git a/vendor/yansongda/artful/composer.json b/vendor/yansongda/artful/composer.json index 4223a86f..818a6d02 100644 --- a/vendor/yansongda/artful/composer.json +++ b/vendor/yansongda/artful/composer.json @@ -22,7 +22,7 @@ "psr/container": "^1.1 || ^2.0", "psr/http-client": "^1.0", "psr/http-message": "^1.1 || ^2.0", - "yansongda/supports": "~4.0.9", + "yansongda/supports": "~4.0.10", "guzzlehttp/psr7": "^2.6" }, "require-dev": { diff --git a/vendor/yansongda/supports/.php-cs-fixer.php b/vendor/yansongda/supports/.php-cs-fixer.php index 1d27b98f..c638d19f 100644 --- a/vendor/yansongda/supports/.php-cs-fixer.php +++ b/vendor/yansongda/supports/.php-cs-fixer.php @@ -1,11 +1,10 @@ exclude('tests') - ->exclude('vendor') - ->in(__DIR__); + ->in('src'); return (new PhpCsFixer\Config()) + ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) ->setUsingCache(false) ->setRiskyAllowed(true) ->setRules([ diff --git a/vendor/yansongda/supports/src/Arr.php b/vendor/yansongda/supports/src/Arr.php index 081c1ae5..a7a40223 100644 --- a/vendor/yansongda/supports/src/Arr.php +++ b/vendor/yansongda/supports/src/Arr.php @@ -94,7 +94,7 @@ class Arr return array_key_exists($key, $array); } - public static function first(array $array, callable $callback = null, mixed $default = null): mixed + public static function first(array $array, ?callable $callback = null, mixed $default = null): mixed { if (is_null($callback)) { if (empty($array)) { @@ -113,7 +113,7 @@ class Arr return $default; } - public static function last(array $array, callable $callback = null, mixed $default = null): mixed + public static function last(array $array, ?callable $callback = null, mixed $default = null): mixed { if (is_null($callback)) { return empty($array) ? $default : end($array); @@ -168,7 +168,7 @@ class Arr } } - public static function get(array|ArrayAccess $array, int|string $key = null, mixed $default = null): mixed + public static function get(array|ArrayAccess $array, null|int|string $key = null, mixed $default = null): mixed { if (!static::accessible($array)) { return $default; @@ -329,7 +329,7 @@ class Arr return $array; } - public static function shuffle(array $array, int $seed = null): array + public static function shuffle(array $array, ?int $seed = null): array { if (is_null($seed)) { shuffle($array); @@ -402,7 +402,9 @@ class Arr public static function wrapJson(string $json): ?array { - return json_decode($json, true); + $result = json_decode($json, true); + + return is_array($result) ? $result : null; } public static function wrapXml(string $xml): array diff --git a/vendor/yansongda/supports/src/Collection.php b/vendor/yansongda/supports/src/Collection.php index 167c3f45..2c3d3491 100644 --- a/vendor/yansongda/supports/src/Collection.php +++ b/vendor/yansongda/supports/src/Collection.php @@ -82,7 +82,7 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria return new static(Arr::except($this->items, $keys)); } - public function filter(callable $callback = null): self + public function filter(?callable $callback = null): self { if ($callback) { return new static(Arr::where($this->items, $callback)); @@ -223,7 +223,7 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria return new static($chunks); } - public function sort(callable $callback = null): self + public function sort(?callable $callback = null): self { $items = $this->items; $callback ? uasort($items, $callback) : asort($items);