Composer update
This commit is contained in:
242
composer.lock
generated
242
composer.lock
generated
@@ -9,30 +9,38 @@
|
|||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "composer/pcre",
|
"name": "composer/pcre",
|
||||||
"version": "3.1.3",
|
"version": "3.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/pcre.git",
|
"url": "https://github.com/composer/pcre.git",
|
||||||
"reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
|
"reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
|
"url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90",
|
||||||
"reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
|
"reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.4 || ^8.0"
|
"php": "^7.4 || ^8.0"
|
||||||
},
|
},
|
||||||
|
"conflict": {
|
||||||
|
"phpstan/phpstan": "<1.11.8"
|
||||||
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpstan/phpstan": "^1.3",
|
"phpstan/phpstan": "^1.11.8",
|
||||||
"phpstan/phpstan-strict-rules": "^1.1",
|
"phpstan/phpstan-strict-rules": "^1.1",
|
||||||
"symfony/phpunit-bridge": "^5"
|
"phpunit/phpunit": "^8 || ^9"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "3.x-dev"
|
"dev-main": "3.x-dev"
|
||||||
|
},
|
||||||
|
"phpstan": {
|
||||||
|
"includes": [
|
||||||
|
"extension.neon"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -60,7 +68,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/composer/pcre/issues",
|
"issues": "https://github.com/composer/pcre/issues",
|
||||||
"source": "https://github.com/composer/pcre/tree/3.1.3"
|
"source": "https://github.com/composer/pcre/tree/3.2.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -76,20 +84,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-03-19T10:26:25+00:00"
|
"time": "2024-07-25T09:36:02+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
"version": "3.4.0",
|
"version": "3.4.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/semver.git",
|
"url": "https://github.com/composer/semver.git",
|
||||||
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
|
"reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
|
"url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6",
|
||||||
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
|
"reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -141,7 +149,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"irc": "ircs://irc.libera.chat:6697/composer",
|
"irc": "ircs://irc.libera.chat:6697/composer",
|
||||||
"issues": "https://github.com/composer/semver/issues",
|
"issues": "https://github.com/composer/semver/issues",
|
||||||
"source": "https://github.com/composer/semver/tree/3.4.0"
|
"source": "https://github.com/composer/semver/tree/3.4.2"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -157,7 +165,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-08-31T09:50:34+00:00"
|
"time": "2024-07-12T11:35:52+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/xdebug-handler",
|
"name": "composer/xdebug-handler",
|
||||||
@@ -434,16 +442,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.11.1",
|
"version": "1.12.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
|
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
|
||||||
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
|
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -451,11 +459,12 @@
|
|||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"doctrine/collections": "<1.6.8",
|
"doctrine/collections": "<1.6.8",
|
||||||
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
|
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/collections": "^1.6.8",
|
"doctrine/collections": "^1.6.8",
|
||||||
"doctrine/common": "^2.13.3 || ^3.2.2",
|
"doctrine/common": "^2.13.3 || ^3.2.2",
|
||||||
|
"phpspec/prophecy": "^1.10",
|
||||||
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@@ -481,7 +490,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -489,7 +498,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-03-08T13:26:56+00:00"
|
"time": "2024-06-12T14:39:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "netresearch/jsonmapper",
|
"name": "netresearch/jsonmapper",
|
||||||
@@ -544,16 +553,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
"version": "v5.0.2",
|
"version": "v5.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||||
"reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13"
|
"reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13",
|
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1",
|
||||||
"reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13",
|
"reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -564,7 +573,7 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ircmaxell/php-yacc": "^0.0.7",
|
"ircmaxell/php-yacc": "^0.0.7",
|
||||||
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
|
"phpunit/phpunit": "^9.0"
|
||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
"bin/php-parse"
|
"bin/php-parse"
|
||||||
@@ -596,22 +605,22 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||||
"source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2"
|
"source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0"
|
||||||
},
|
},
|
||||||
"time": "2024-03-05T20:51:40+00:00"
|
"time": "2024-07-01T20:03:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phan/phan",
|
"name": "phan/phan",
|
||||||
"version": "5.4.3",
|
"version": "5.4.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phan/phan.git",
|
"url": "https://github.com/phan/phan.git",
|
||||||
"reference": "86a7acd99c1239b8867b49feca2398851212e7fe"
|
"reference": "a87bbadc95a5b57353f911fdbd227404f3b47c22"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phan/phan/zipball/86a7acd99c1239b8867b49feca2398851212e7fe",
|
"url": "https://api.github.com/repos/phan/phan/zipball/a87bbadc95a5b57353f911fdbd227404f3b47c22",
|
||||||
"reference": "86a7acd99c1239b8867b49feca2398851212e7fe",
|
"reference": "a87bbadc95a5b57353f911fdbd227404f3b47c22",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -676,9 +685,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phan/phan/issues",
|
"issues": "https://github.com/phan/phan/issues",
|
||||||
"source": "https://github.com/phan/phan/tree/5.4.3"
|
"source": "https://github.com/phan/phan/tree/5.4.4"
|
||||||
},
|
},
|
||||||
"time": "2023-12-26T17:57:35+00:00"
|
"time": "2024-07-25T20:34:20+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phar-io/manifest",
|
"name": "phar-io/manifest",
|
||||||
@@ -975,16 +984,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "1.29.0",
|
"version": "1.29.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc"
|
"reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4",
|
||||||
"reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc",
|
"reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1016,22 +1025,22 @@
|
|||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1"
|
||||||
},
|
},
|
||||||
"time": "2024-05-06T12:04:23+00:00"
|
"time": "2024-05-31T08:52:43+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.11.1",
|
"version": "1.11.9",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b"
|
"reference": "e370bcddadaede0c1716338b262346f40d296f82"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e524358f930e41a2b4cca1320e3b04fc26b39e0b",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e370bcddadaede0c1716338b262346f40d296f82",
|
||||||
"reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b",
|
"reference": "e370bcddadaede0c1716338b262346f40d296f82",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1076,7 +1085,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-05-15T08:00:59+00:00"
|
"time": "2024-08-01T16:25:18+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
@@ -1399,45 +1408,45 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "9.6.19",
|
"version": "9.6.20",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
|
"reference": "49d7820565836236411f5dc002d16dd689cde42f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f",
|
||||||
"reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
|
"reference": "49d7820565836236411f5dc002d16dd689cde42f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"doctrine/instantiator": "^1.3.1 || ^2",
|
"doctrine/instantiator": "^1.5.0 || ^2",
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-libxml": "*",
|
"ext-libxml": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"myclabs/deep-copy": "^1.10.1",
|
"myclabs/deep-copy": "^1.12.0",
|
||||||
"phar-io/manifest": "^2.0.3",
|
"phar-io/manifest": "^2.0.4",
|
||||||
"phar-io/version": "^3.0.2",
|
"phar-io/version": "^3.2.1",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpunit/php-code-coverage": "^9.2.28",
|
"phpunit/php-code-coverage": "^9.2.31",
|
||||||
"phpunit/php-file-iterator": "^3.0.5",
|
"phpunit/php-file-iterator": "^3.0.6",
|
||||||
"phpunit/php-invoker": "^3.1.1",
|
"phpunit/php-invoker": "^3.1.1",
|
||||||
"phpunit/php-text-template": "^2.0.3",
|
"phpunit/php-text-template": "^2.0.4",
|
||||||
"phpunit/php-timer": "^5.0.2",
|
"phpunit/php-timer": "^5.0.3",
|
||||||
"sebastian/cli-parser": "^1.0.1",
|
"sebastian/cli-parser": "^1.0.2",
|
||||||
"sebastian/code-unit": "^1.0.6",
|
"sebastian/code-unit": "^1.0.8",
|
||||||
"sebastian/comparator": "^4.0.8",
|
"sebastian/comparator": "^4.0.8",
|
||||||
"sebastian/diff": "^4.0.3",
|
"sebastian/diff": "^4.0.6",
|
||||||
"sebastian/environment": "^5.1.3",
|
"sebastian/environment": "^5.1.5",
|
||||||
"sebastian/exporter": "^4.0.5",
|
"sebastian/exporter": "^4.0.6",
|
||||||
"sebastian/global-state": "^5.0.1",
|
"sebastian/global-state": "^5.0.7",
|
||||||
"sebastian/object-enumerator": "^4.0.3",
|
"sebastian/object-enumerator": "^4.0.4",
|
||||||
"sebastian/resource-operations": "^3.0.3",
|
"sebastian/resource-operations": "^3.0.4",
|
||||||
"sebastian/type": "^3.2",
|
"sebastian/type": "^3.2.1",
|
||||||
"sebastian/version": "^3.0.2"
|
"sebastian/version": "^3.0.2"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@@ -1482,7 +1491,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1498,7 +1507,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-04-05T04:35:58+00:00"
|
"time": "2024-07-10T11:45:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/container",
|
"name": "psr/container",
|
||||||
@@ -1605,16 +1614,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sabre/event",
|
"name": "sabre/event",
|
||||||
"version": "5.1.4",
|
"version": "5.1.6",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sabre-io/event.git",
|
"url": "https://github.com/sabre-io/event.git",
|
||||||
"reference": "d7da22897125d34d7eddf7977758191c06a74497"
|
"reference": "e0e1ccbff1965083de9a6530182b8b70819e1347"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sabre-io/event/zipball/d7da22897125d34d7eddf7977758191c06a74497",
|
"url": "https://api.github.com/repos/sabre-io/event/zipball/e0e1ccbff1965083de9a6530182b8b70819e1347",
|
||||||
"reference": "d7da22897125d34d7eddf7977758191c06a74497",
|
"reference": "e0e1ccbff1965083de9a6530182b8b70819e1347",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1623,7 +1632,7 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "~2.17.1",
|
"friendsofphp/php-cs-fixer": "~2.17.1",
|
||||||
"phpstan/phpstan": "^0.12",
|
"phpstan/phpstan": "^0.12",
|
||||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
|
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1667,7 +1676,7 @@
|
|||||||
"issues": "https://github.com/sabre-io/event/issues",
|
"issues": "https://github.com/sabre-io/event/issues",
|
||||||
"source": "https://github.com/fruux/sabre-event"
|
"source": "https://github.com/fruux/sabre-event"
|
||||||
},
|
},
|
||||||
"time": "2021-11-04T06:51:17+00:00"
|
"time": "2024-07-26T05:09:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
@@ -2634,16 +2643,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v7.0.7",
|
"version": "v7.1.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "c981e0e9380ce9f146416bde3150c79197ce9986"
|
"reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986",
|
"url": "https://api.github.com/repos/symfony/console/zipball/cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
|
||||||
"reference": "c981e0e9380ce9f146416bde3150c79197ce9986",
|
"reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2707,7 +2716,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v7.0.7"
|
"source": "https://github.com/symfony/console/tree/v7.1.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2723,7 +2732,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-04-18T09:29:19+00:00"
|
"time": "2024-07-26T12:41:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
@@ -2794,16 +2803,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.29.0",
|
"version": "v1.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
|
"reference": "0424dff1c58f028c451efff2045f5d92410bd540"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540",
|
||||||
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
|
"reference": "0424dff1c58f028c451efff2045f5d92410bd540",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2853,7 +2862,7 @@
|
|||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
|
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2869,20 +2878,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-01-29T20:11:03+00:00"
|
"time": "2024-05-31T15:07:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-grapheme",
|
"name": "symfony/polyfill-intl-grapheme",
|
||||||
"version": "v1.29.0",
|
"version": "v1.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
||||||
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
|
"reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
|
||||||
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
|
"reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2931,7 +2940,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"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": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2947,20 +2956,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-01-29T20:11:03+00:00"
|
"time": "2024-05-31T15:07:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-normalizer",
|
"name": "symfony/polyfill-intl-normalizer",
|
||||||
"version": "v1.29.0",
|
"version": "v1.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||||
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
|
"reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb",
|
||||||
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
|
"reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3012,7 +3021,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
|
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3028,20 +3037,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-01-29T20:11:03+00:00"
|
"time": "2024-05-31T15:07:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
"version": "v1.29.0",
|
"version": "v1.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
|
"reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
|
||||||
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
|
"reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3092,7 +3101,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
|
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3108,20 +3117,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-01-29T20:11:03+00:00"
|
"time": "2024-06-19T12:30:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php80",
|
"name": "symfony/polyfill-php80",
|
||||||
"version": "v1.29.0",
|
"version": "v1.30.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||||
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
|
"reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
|
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
|
||||||
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
|
"reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3172,7 +3181,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
|
"source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3188,7 +3197,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-01-29T20:11:03+00:00"
|
"time": "2024-05-31T15:07:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/service-contracts",
|
"name": "symfony/service-contracts",
|
||||||
@@ -3275,16 +3284,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v7.0.7",
|
"version": "v7.1.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63"
|
"reference": "ea272a882be7f20cad58d5d78c215001617b7f07"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63",
|
"url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07",
|
||||||
"reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63",
|
"reference": "ea272a882be7f20cad58d5d78c215001617b7f07",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3298,6 +3307,7 @@
|
|||||||
"symfony/translation-contracts": "<2.5"
|
"symfony/translation-contracts": "<2.5"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"symfony/emoji": "^7.1",
|
||||||
"symfony/error-handler": "^6.4|^7.0",
|
"symfony/error-handler": "^6.4|^7.0",
|
||||||
"symfony/http-client": "^6.4|^7.0",
|
"symfony/http-client": "^6.4|^7.0",
|
||||||
"symfony/intl": "^6.4|^7.0",
|
"symfony/intl": "^6.4|^7.0",
|
||||||
@@ -3341,7 +3351,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v7.0.7"
|
"source": "https://github.com/symfony/string/tree/v7.1.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3357,7 +3367,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-04-18T09:29:19+00:00"
|
"time": "2024-07-22T10:25:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "theseer/tokenizer",
|
"name": "theseer/tokenizer",
|
||||||
|
|||||||
5
www/composer.lock
generated
5
www/composer.lock
generated
@@ -12,7 +12,7 @@
|
|||||||
"dist": {
|
"dist": {
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"url": "/storage/var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All",
|
"url": "/storage/var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All",
|
||||||
"reference": "1357b98883c6e4bcac163c5fb29e28c8f968a814"
|
"reference": "3eb122959045f8de10f9dd35e6632199021752b8"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.2",
|
"php": ">=8.2",
|
||||||
@@ -20,7 +20,8 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"egrajp/smarty-extended": "^4.3",
|
"egrajp/smarty-extended": "^4.3",
|
||||||
"gullevek/dotenv": "dev-master"
|
"gullevek/dotenv": "dev-master",
|
||||||
|
"phpunit/phpunit": "^9"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|||||||
5
www/vendor/composer/installed.json
vendored
5
www/vendor/composer/installed.json
vendored
@@ -7,7 +7,7 @@
|
|||||||
"dist": {
|
"dist": {
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"url": "/storage/var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All",
|
"url": "/storage/var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All",
|
||||||
"reference": "1357b98883c6e4bcac163c5fb29e28c8f968a814"
|
"reference": "3eb122959045f8de10f9dd35e6632199021752b8"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.2",
|
"php": ">=8.2",
|
||||||
@@ -15,7 +15,8 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"egrajp/smarty-extended": "^4.3",
|
"egrajp/smarty-extended": "^4.3",
|
||||||
"gullevek/dotenv": "dev-master"
|
"gullevek/dotenv": "dev-master",
|
||||||
|
"phpunit/phpunit": "^9"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
|
|||||||
2
www/vendor/composer/installed.php
vendored
2
www/vendor/composer/installed.php
vendored
@@ -13,7 +13,7 @@
|
|||||||
'egrajp/corelibs-composer-all' => array(
|
'egrajp/corelibs-composer-all' => array(
|
||||||
'pretty_version' => 'dev-development',
|
'pretty_version' => 'dev-development',
|
||||||
'version' => 'dev-development',
|
'version' => 'dev-development',
|
||||||
'reference' => '1357b98883c6e4bcac163c5fb29e28c8f968a814',
|
'reference' => '3eb122959045f8de10f9dd35e6632199021752b8',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../egrajp/corelibs-composer-all',
|
'install_path' => __DIR__ . '/../egrajp/corelibs-composer-all',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
vendor
|
vendor/
|
||||||
composer.lock
|
composer.lock
|
||||||
|
tools/
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<phive xmlns="https://phar.io/phive">
|
<phive xmlns="https://phar.io/phive">
|
||||||
<phar name="phpunit" version="^9.6" installed="9.6.19" location="./tools/phpunit" copy="false"/>
|
<phar name="phpunit" version="^9.6" installed="9.6.19" location="./tools/phpunit" copy="false"/>
|
||||||
<phar name="phpcs" version="^3.7.2" installed="3.9.2" location="./tools/phpcs" copy="false"/>
|
<phar name="phpcs" version="^3.7.2" installed="3.10.0" location="./tools/phpcs" copy="false"/>
|
||||||
<phar name="phpcbf" version="^3.7.2" installed="3.9.2" location="./tools/phpcbf" copy="false"/>
|
<phar name="phpcbf" version="^3.7.2" installed="3.10.0" location="./tools/phpcbf" copy="false"/>
|
||||||
<phar name="psalm" version="^5.15.0" installed="5.24.0" location="./tools/psalm" copy="false"/>
|
<phar name="psalm" version="^5.15.0" installed="5.24.0" location="./tools/psalm" copy="false"/>
|
||||||
<phar name="phpstan" version="^1.10.37" installed="1.11.1" location="./tools/phpstan" copy="false"/>
|
<phar name="phpstan" version="^1.10.37" installed="1.11.1" location="./tools/phpstan" copy="false"/>
|
||||||
<phar name="phan" version="^5.4.2" installed="5.4.3" location="./tools/phan" copy="false"/>
|
<phar name="phan" version="^5.4.2" installed="5.4.3" location="./tools/phan" copy="false"/>
|
||||||
|
|||||||
@@ -9,16 +9,41 @@ For local install only
|
|||||||
- Template\SmartyExtended
|
- Template\SmartyExtended
|
||||||
- Admin\EditBase
|
- Admin\EditBase
|
||||||
|
|
||||||
## Setup from central composer
|
## Publish to gitea or gitlab server
|
||||||
|
|
||||||
Setup from gitea internal servers
|
Currently there are only gitea and gitlab supported, github does not have support for composer packages
|
||||||
|
|
||||||
```sh
|
`publish\publish.sh go` will run the publish script
|
||||||
composer config repositories.git.egplusww.jp.Composer composer https://git.egplusww.jp/api/packages/Composer/composer
|
|
||||||
|
All the configuration is done in the `publish\.env.deploy` file
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# downlaod file name is "Repository name" "-" "version" where
|
||||||
|
# version is "vN.N.N"
|
||||||
|
GITEA_PUBLISH=1
|
||||||
|
GITEA_UPLOAD_FILENAME="Upload-File-Name";
|
||||||
|
GITEA_USER=gitea-user
|
||||||
|
GITEA_TOKEN=gitea-tokek
|
||||||
|
GITEA_URL_DL=https://[gitea.hostname]/[to/package/folder]/archive
|
||||||
|
GITEA_URL_PUSH=https://[gitea.hostname]/api/packages/[organization]/composer
|
||||||
|
|
||||||
|
GITLAB_PUBLISH=1
|
||||||
|
GITLAB_URL=gitlab URl to repository
|
||||||
|
GITLAB_DEPLOY_TOKEN=gitlab-token
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternative setup composer local zip file repot:
|
At the moment there is only one gitea or gitlab target setable
|
||||||
`composer config repositories.composer.egplusww.jp composer http://composer.egplusww.jp`
|
|
||||||
|
## Setup from central composer
|
||||||
|
|
||||||
|
Setup from gitea servers
|
||||||
|
|
||||||
|
[hostname] is the hostname for your gitea server (or wherever this is published)
|
||||||
|
[OrgName] is the organization name where the composer packages are hosted
|
||||||
|
|
||||||
|
```sh
|
||||||
|
composer config repositories.[hostname].Composer composer https://[hostname]/api/packages/[OrgName]/composer
|
||||||
|
```
|
||||||
|
|
||||||
## Install package
|
## Install package
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,8 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"egrajp/smarty-extended": "^4.3",
|
"egrajp/smarty-extended": "^4.3",
|
||||||
"gullevek/dotenv": "dev-master"
|
"gullevek/dotenv": "dev-master",
|
||||||
|
"phpunit/phpunit": "^9"
|
||||||
},
|
},
|
||||||
"repositories": {
|
"repositories": {
|
||||||
"git.egplusww.jp.Composer": {
|
"git.egplusww.jp.Composer": {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
includes:
|
includes:
|
||||||
- phpstan-conditional.php
|
- phpstan-conditional.php
|
||||||
parameters:
|
parameters:
|
||||||
tmpDir: /tmp/phpstan-corelibs-composer
|
tmpDir: %currentWorkingDirectory%/tmp/phpstan-corelibs-composer
|
||||||
level: 8 # max is now 9
|
level: 8 # max is now 9
|
||||||
checkMissingCallableSignature: true
|
checkMissingCallableSignature: true
|
||||||
treatPhpDocTypesAsCertain: false
|
treatPhpDocTypesAsCertain: false
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
9.12.2
|
9.13.2
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
BASE_FOLDER=$(dirname $(readlink -f $0))"/";
|
BASE_FOLDER=$(dirname "$(readlink -f "$0")")"/";
|
||||||
PACKAGE_DOWNLOAD="${BASE_FOLDER}package-download/";
|
PACKAGE_DOWNLOAD="${BASE_FOLDER}package-download/";
|
||||||
if [ ! -d "${PACKAGE_DOWNLOAD}" ]; then
|
if [ ! -d "${PACKAGE_DOWNLOAD}" ]; then
|
||||||
mkdir "${PACKAGE_DOWNLOAD}";
|
mkdir "${PACKAGE_DOWNLOAD}";
|
||||||
@@ -15,30 +15,35 @@ if [ -z "${VERSION}" ]; then
|
|||||||
fi;
|
fi;
|
||||||
# compare version, if different or newer, deploy
|
# compare version, if different or newer, deploy
|
||||||
if [ -f "${file_last_published}" ]; then
|
if [ -f "${file_last_published}" ]; then
|
||||||
LAST_PUBLISHED_VERSION=$(cat ${file_last_published});
|
LAST_PUBLISHED_VERSION=$(cat "${file_last_published}");
|
||||||
if $(dpkg --compare-versions "${VERSION}" le "${LAST_PUBLISHED_VERSION}"); then
|
if dpkg --compare-versions "${VERSION}" le "${LAST_PUBLISHED_VERSION}"; then
|
||||||
echo "git tag version ${VERSION} is not newer than previous published version ${LAST_PUBLISHED_VERSION}";
|
echo "git tag version ${VERSION} is not newer than previous published version ${LAST_PUBLISHED_VERSION}";
|
||||||
exit;
|
exit;
|
||||||
fi;
|
fi;
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
# read in the .env.deploy file and we must have
|
# read in the .env.deploy file and we must have
|
||||||
|
# for gitea
|
||||||
|
# GITEA_PUBLISH: must be set with a value to trigger publish run
|
||||||
# GITEA_UPLOAD_FILENAME
|
# GITEA_UPLOAD_FILENAME
|
||||||
# GITLAB_USER
|
|
||||||
# GITLAB_TOKEN
|
|
||||||
# GITLAB_URL
|
|
||||||
# GITEA_USER
|
# GITEA_USER
|
||||||
# GITEA_DEPLOY_TOKEN
|
# GITEA_DEPLOY_TOKEN
|
||||||
# GITEA_URL_DL
|
# GITEA_URL_DL
|
||||||
# GITEA_URL_PUSH
|
# GITEA_URL_PUSH
|
||||||
|
# for gitlab
|
||||||
|
# GITLAB_PUBLISH: must be set with a value to trigger publish run
|
||||||
|
# GITLAB_USER
|
||||||
|
# GITLAB_TOKEN
|
||||||
|
# GITLAB_URL
|
||||||
if [ ! -f "${BASE_FOLDER}.env.deploy" ]; then
|
if [ ! -f "${BASE_FOLDER}.env.deploy" ]; then
|
||||||
echo "Deploy enviroment file .env.deploy is missing";
|
echo "Deploy enviroment file .env.deploy is missing";
|
||||||
exit;
|
exit;
|
||||||
fi;
|
fi;
|
||||||
set -o allexport;
|
set -o allexport;
|
||||||
cd ${BASE_FOLDER};
|
cd "${BASE_FOLDER}" || exit;
|
||||||
|
# shellcheck source=.env.deploy
|
||||||
source .env.deploy;
|
source .env.deploy;
|
||||||
cd -;
|
cd - || exit;
|
||||||
set +o allexport;
|
set +o allexport;
|
||||||
|
|
||||||
if [ "${go_flag}" != "go" ]; then
|
if [ "${go_flag}" != "go" ]; then
|
||||||
@@ -50,37 +55,42 @@ fi;
|
|||||||
|
|
||||||
echo "[START]";
|
echo "[START]";
|
||||||
# gitea
|
# gitea
|
||||||
if [ ! -z "${GITEA_UPLOAD_FILENAME}" ] &&
|
# skip iof
|
||||||
[ ! -z "${GITEA_URL_DL}" ] && [ ! -z "${GITEA_URL_PUSH}" ] &&
|
if [ -n "${GITEA_PUBLISH}" ]; then
|
||||||
[ ! -z "${GITEA_USER}" ] && [ ! -z "${GITEA_TOKEN}" ]; then
|
if [ -n "${GITEA_UPLOAD_FILENAME}" ] &&
|
||||||
if [ ! -f "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" ]; then
|
[ -n "${GITEA_URL_DL}" ] && [ -n "${GITEA_URL_PUSH}" ] &&
|
||||||
curl -LJO \
|
[ -n "${GITEA_USER}" ] && [ -n "${GITEA_TOKEN}" ]; then
|
||||||
--output-dir "${PACKAGE_DOWNLOAD}" \
|
if [ ! -f "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" ]; then
|
||||||
${GITEA_URL_DL}/v${VERSION}.zip;
|
curl -LJO \
|
||||||
fi;
|
--output-dir "${PACKAGE_DOWNLOAD}" \
|
||||||
if [ ! -f "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" ]; then
|
"${GITEA_URL_DL}"/v"${VERSION}".zip;
|
||||||
echo "Version file does not exist for ${VERSION}";
|
fi;
|
||||||
|
if [ ! -f "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" ]; then
|
||||||
|
echo "Version file does not exist for ${VERSION}";
|
||||||
|
else
|
||||||
|
curl --user "${GITEA_USER}":"${GITEA_TOKEN}" \
|
||||||
|
--upload-file "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" \
|
||||||
|
"${GITEA_URL_PUSH}"?version="${VERSION}";
|
||||||
|
echo "${VERSION}" > "${file_last_published}";
|
||||||
|
fi;
|
||||||
else
|
else
|
||||||
curl --user ${GITEA_USER}:${GITEA_TOKEN} \
|
echo "Missing either GITEA_UPLOAD_FILENAME, GITEA_URL_DL, GITEA_URL_PUSH, GITEA_USER or GITEA_TOKEN environment variable";
|
||||||
--upload-file "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" \
|
|
||||||
${GITEA_URL_PUSH}?version=${VERSION};
|
|
||||||
echo "${VERSION}" > "${file_last_published}";
|
|
||||||
fi;
|
fi;
|
||||||
else
|
|
||||||
echo "Missing either GITEA_UPLOAD_FILENAME, GITEA_URL_DL, GITEA_URL_PUSH, GITEA_USER or GITEA_TOKEN environment variable";
|
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
# gitlab
|
# gitlab
|
||||||
if [ ! -z "${GITLAB_URL}" ] && [ ! -z "${GITLAB_DEPLOY_TOKEN}" ]; then
|
if [ -n "${GITLAB_PUBLISH}" ]; then
|
||||||
curl --data tag=v${VERSION} \
|
if [ -n "${GITLAB_URL}" ] && [ -n "${GITLAB_DEPLOY_TOKEN}" ]; then
|
||||||
--header "Deploy-Token: ${GITLAB_DEPLOY_TOKEN}" \
|
curl --data tag=v"${VERSION}" \
|
||||||
"${GITLAB_URL}";
|
--header "Deploy-Token: ${GITLAB_DEPLOY_TOKEN}" \
|
||||||
curl --data branch=master \
|
"${GITLAB_URL}";
|
||||||
--header "Deploy-Token: ${GITLAB_DEPLOY_TOKEN}" \
|
curl --data branch=master \
|
||||||
"${GITLAB_URL}";
|
--header "Deploy-Token: ${GITLAB_DEPLOY_TOKEN}" \
|
||||||
echo "${VERSION}" > "${file_last_published}";
|
"${GITLAB_URL}";
|
||||||
else
|
echo "${VERSION}" > "${file_last_published}";
|
||||||
echo "Missing GITLAB_DEPLOY_TOKEN environment variable";
|
else
|
||||||
|
echo "Missing GITLAB_URL or GITLAB_DEPLOY_TOKEN environment variable";
|
||||||
|
fi;
|
||||||
fi;
|
fi;
|
||||||
echo "";
|
echo "";
|
||||||
echo "[DONE]";
|
echo "[DONE]";
|
||||||
|
|||||||
@@ -16,16 +16,22 @@ class Html
|
|||||||
/**
|
/**
|
||||||
* full wrapper for html entities
|
* full wrapper for html entities
|
||||||
*
|
*
|
||||||
|
* uses default params as: ENT_QUOTES | ENT_HTML5
|
||||||
|
* switches from ENT_HTML401 to ENT_HTML5 as we assume all our pages have <!DOCTYPE html>
|
||||||
|
* removed: ENT_SUBSTITUTE -> wrong characters will be replaced with space
|
||||||
|
* encodes in UTF-8
|
||||||
|
* does not double encode
|
||||||
|
*
|
||||||
* @param mixed $string string to html encode
|
* @param mixed $string string to html encode
|
||||||
|
* @param int $flags [default: ENT_QUOTES | ENT_HTML5]
|
||||||
* @return mixed if string, encoded, else as is (eg null)
|
* @return mixed if string, encoded, else as is (eg null)
|
||||||
*/
|
*/
|
||||||
public static function htmlent(mixed $string): mixed
|
public static function htmlent(mixed $string, int $flags = ENT_QUOTES | ENT_HTML5): mixed
|
||||||
{
|
{
|
||||||
if (is_string($string)) {
|
if (is_string($string)) {
|
||||||
return htmlentities($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
return htmlentities($string, $flags, 'UTF-8', false);
|
||||||
} else {
|
|
||||||
return $string;
|
|
||||||
}
|
}
|
||||||
|
return $string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -54,14 +60,10 @@ class Html
|
|||||||
*/
|
*/
|
||||||
public static function checked(array|string $haystack, string $needle, int $type = 0): ?string
|
public static function checked(array|string $haystack, string $needle, int $type = 0): ?string
|
||||||
{
|
{
|
||||||
if (is_array($haystack)) {
|
if (is_array($haystack) && in_array($needle, $haystack)) {
|
||||||
if (in_array($needle, $haystack)) {
|
return $type ? 'checked' : 'selected';
|
||||||
return $type ? 'checked' : 'selected';
|
} elseif (!is_array($haystack) && $haystack == $needle) {
|
||||||
}
|
return $type ? 'checked' : 'selected';
|
||||||
} else {
|
|
||||||
if ($haystack == $needle) {
|
|
||||||
return $type ? 'checked' : 'selected';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1324,8 +1324,12 @@ class IO
|
|||||||
// /s for matching new line in . list
|
// /s for matching new line in . list
|
||||||
// [disabled, we don't used ^ or $] /m for multi line match
|
// [disabled, we don't used ^ or $] /m for multi line match
|
||||||
// Matches in 1:, must be array_filtered to remove empty, count with array_unique
|
// Matches in 1:, must be array_filtered to remove empty, count with array_unique
|
||||||
|
$query_split = '[(=,?-]|->|->>|#>|#>>|@>|<@|\?\|\?\&|\|\||#-';
|
||||||
preg_match_all(
|
preg_match_all(
|
||||||
'/(?:\'.*?\')?\s*(?:\?\?|<>|[(=,])\s*(?:\d+|(?:\'.*?\')|(\$[1-9]{1}(?:[0-9]{1,})?))/s',
|
'/'
|
||||||
|
. '(?:\'.*?\')?\s*(?:\?\?|<>|' . $query_split . ')\s*'
|
||||||
|
. '(?:\d+|(?:\'.*?\')|(\$[1-9]{1}(?:[0-9]{1,})?))'
|
||||||
|
. '/s',
|
||||||
$query,
|
$query,
|
||||||
$match
|
$match
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -39,9 +39,11 @@ class ConvertPlaceholder
|
|||||||
): array {
|
): array {
|
||||||
$convert_to = strtolower($convert_to);
|
$convert_to = strtolower($convert_to);
|
||||||
$matches = [];
|
$matches = [];
|
||||||
|
$query_split = '[(=,?-]|->|->>|#>|#>>|@>|<@|\?\|\?\&|\|\||#-';
|
||||||
$pattern = '/'
|
$pattern = '/'
|
||||||
// prefix string part, must match towards
|
// prefix string part, must match towards
|
||||||
. '(?:\'.*?\')?\s*(?:\?\?|[(=,])\s*'
|
// seperator for ( = , ? - [and json/jsonb in pg doc section 9.15]
|
||||||
|
. '(?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*'
|
||||||
// match for replace part
|
// match for replace part
|
||||||
. '(?:'
|
. '(?:'
|
||||||
// digit -> ignore
|
// digit -> ignore
|
||||||
@@ -96,7 +98,10 @@ class ConvertPlaceholder
|
|||||||
$type = 'named';
|
$type = 'named';
|
||||||
$matches_return = $named_matches;
|
$matches_return = $named_matches;
|
||||||
// only check for :named
|
// only check for :named
|
||||||
$pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(:\w+))/s';
|
$pattern_replace = '/'
|
||||||
|
. '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)'
|
||||||
|
. '(\d+|(?:\'.*?\')|(:\w+))'
|
||||||
|
. '/s';
|
||||||
// 0: full
|
// 0: full
|
||||||
// 1: pre part
|
// 1: pre part
|
||||||
// 2: keep part UNLESS '3' is set
|
// 2: keep part UNLESS '3' is set
|
||||||
@@ -134,7 +139,10 @@ class ConvertPlaceholder
|
|||||||
// order and data stays the same
|
// order and data stays the same
|
||||||
$params_new = $params;
|
$params_new = $params;
|
||||||
// only check for ?
|
// only check for ?
|
||||||
$pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(?:(?:\?\?)?\s*(\?{1})))/s';
|
$pattern_replace = '/'
|
||||||
|
. '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)'
|
||||||
|
. '(\d+|(?:\'.*?\')|(?:(?:\?\?)?\s*(\?{1})))'
|
||||||
|
. '/s';
|
||||||
// 0: full
|
// 0: full
|
||||||
// 1: pre part
|
// 1: pre part
|
||||||
// 2: keep part UNLESS '3' is set
|
// 2: keep part UNLESS '3' is set
|
||||||
@@ -163,7 +171,10 @@ class ConvertPlaceholder
|
|||||||
$type = 'numbered';
|
$type = 'numbered';
|
||||||
$matches_return = $numbered_matches;
|
$matches_return = $numbered_matches;
|
||||||
// only check for $n
|
// only check for $n
|
||||||
$pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(\$[1-9]{1}(?:[0-9]{1,})?))/s';
|
$pattern_replace = '/'
|
||||||
|
. '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)'
|
||||||
|
. '(\d+|(?:\'.*?\')|(\$[1-9]{1}(?:[0-9]{1,})?))'
|
||||||
|
. '/s';
|
||||||
// 0: full
|
// 0: full
|
||||||
// 1: pre part
|
// 1: pre part
|
||||||
// 2: keep part UNLESS '3' is set
|
// 2: keep part UNLESS '3' is set
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class CachedFileReader extends \CoreLibs\Language\Core\StringReader
|
|||||||
if (!is_resource($fd)) {
|
if (!is_resource($fd)) {
|
||||||
$this->error = 3; // Cannot read file, probably permissions
|
$this->error = 3; // Cannot read file, probably permissions
|
||||||
} else {
|
} else {
|
||||||
$this->fd_str = fread($fd, filesize($filename) ?: 0) ?: '';
|
$this->fd_str = fread($fd, filesize($filename) ?: 1) ?: '';
|
||||||
fclose($fd);
|
fclose($fd);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -21,66 +21,82 @@ use SodiumException;
|
|||||||
|
|
||||||
class SymmetricEncryption
|
class SymmetricEncryption
|
||||||
{
|
{
|
||||||
|
/** @var SymmetricEncryption self instance */
|
||||||
|
private static SymmetricEncryption $instance;
|
||||||
|
|
||||||
|
/** @var string bin hex key */
|
||||||
|
private string $key = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* init class
|
||||||
|
* if key not passed, key must be set with createKey
|
||||||
|
*
|
||||||
|
* @param string|null|null $key
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
string|null $key = null
|
||||||
|
) {
|
||||||
|
if ($key != null) {
|
||||||
|
$this->setKey($key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the singleton self object.
|
||||||
|
* For function wrapper use
|
||||||
|
*
|
||||||
|
* @return SymmetricEncryption object
|
||||||
|
*/
|
||||||
|
public static function getInstance(string|null $key = null): self
|
||||||
|
{
|
||||||
|
if (empty(self::$instance)) {
|
||||||
|
self::$instance = new self($key);
|
||||||
|
}
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************
|
||||||
|
* MARK: PRIVATE
|
||||||
|
* *************************************************************************/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create key and check validity
|
* create key and check validity
|
||||||
*
|
*
|
||||||
* @param string $key The key from which the binary key will be created
|
* @param string $key The key from which the binary key will be created
|
||||||
* @return string Binary key string
|
* @return string Binary key string
|
||||||
*/
|
*/
|
||||||
public static function createKey(string $key): string
|
private function createKey(string $key): string
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$key = CreateKey::hex2bin($key);
|
$key = CreateKey::hex2bin($key);
|
||||||
} catch (SodiumException $e) {
|
} catch (SodiumException $e) {
|
||||||
throw new \UnexpectedValueException('Invalid hex key');
|
throw new \UnexpectedValueException('Invalid hex key: ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
if (mb_strlen($key, '8bit') !== SODIUM_CRYPTO_SECRETBOX_KEYBYTES) {
|
if (mb_strlen($key, '8bit') !== SODIUM_CRYPTO_SECRETBOX_KEYBYTES) {
|
||||||
throw new \RangeException(
|
throw new \RangeException(
|
||||||
'Key is not the correct size (must be '
|
'Key is not the correct size (must be '
|
||||||
. 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES bytes long).'
|
. SODIUM_CRYPTO_SECRETBOX_KEYBYTES . ' bytes long).'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return $key;
|
return $key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encrypt a message
|
* Decryption call
|
||||||
*
|
*
|
||||||
* @param string $message Message to encrypt
|
* @param string $encrypted Text to decrypt
|
||||||
* @param string $key Encryption key (as hex string)
|
* @param ?string $key Mandatory encryption key, will throw exception if empty
|
||||||
* @return string
|
* @return string Plain text
|
||||||
* @throws \Exception
|
|
||||||
* @throws \RangeException
|
* @throws \RangeException
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
*/
|
*/
|
||||||
public static function encrypt(string $message, string $key): string
|
private function decryptData(string $encrypted, ?string $key): string
|
||||||
{
|
{
|
||||||
$key = self::createKey($key);
|
if (empty($key)) {
|
||||||
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
|
throw new \UnexpectedValueException('Key not set');
|
||||||
|
}
|
||||||
$cipher = base64_encode(
|
$key = $this->createKey($key);
|
||||||
$nonce
|
|
||||||
. sodium_crypto_secretbox(
|
|
||||||
$message,
|
|
||||||
$nonce,
|
|
||||||
$key
|
|
||||||
)
|
|
||||||
);
|
|
||||||
sodium_memzero($message);
|
|
||||||
sodium_memzero($key);
|
|
||||||
return $cipher;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrypt a message
|
|
||||||
*
|
|
||||||
* @param string $encrypted Message encrypted with safeEncrypt()
|
|
||||||
* @param string $key Encryption key (as hex string)
|
|
||||||
* @return string
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public static function decrypt(string $encrypted, string $key): string
|
|
||||||
{
|
|
||||||
$key = self::createKey($key);
|
|
||||||
$decoded = base64_decode($encrypted);
|
$decoded = base64_decode($encrypted);
|
||||||
$nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
|
$nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
|
||||||
$ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
|
$ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
|
||||||
@@ -93,7 +109,7 @@ class SymmetricEncryption
|
|||||||
$key
|
$key
|
||||||
);
|
);
|
||||||
} catch (SodiumException $e) {
|
} catch (SodiumException $e) {
|
||||||
throw new \UnexpectedValueException('Invalid ciphertext (too short)');
|
throw new \UnexpectedValueException('Decipher message failed: ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
if (!is_string($plain)) {
|
if (!is_string($plain)) {
|
||||||
throw new \UnexpectedValueException('Invalid Key');
|
throw new \UnexpectedValueException('Invalid Key');
|
||||||
@@ -102,6 +118,117 @@ class SymmetricEncryption
|
|||||||
sodium_memzero($key);
|
sodium_memzero($key);
|
||||||
return $plain;
|
return $plain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt a message
|
||||||
|
*
|
||||||
|
* @param string $message Message to encrypt
|
||||||
|
* @param ?string $key Mandatory encryption key, will throw exception if empty
|
||||||
|
* @return string
|
||||||
|
* @throws \Exception
|
||||||
|
* @throws \RangeException
|
||||||
|
*/
|
||||||
|
private function encryptData(string $message, ?string $key): string
|
||||||
|
{
|
||||||
|
if (empty($this->key) || $key === null) {
|
||||||
|
throw new \UnexpectedValueException('Key not set');
|
||||||
|
}
|
||||||
|
$key = $this->createKey($key);
|
||||||
|
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
|
||||||
|
try {
|
||||||
|
$cipher = base64_encode(
|
||||||
|
$nonce
|
||||||
|
. sodium_crypto_secretbox(
|
||||||
|
$message,
|
||||||
|
$nonce,
|
||||||
|
$key,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} catch (SodiumException $e) {
|
||||||
|
throw new \UnexpectedValueException("Create encrypted message failed: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
sodium_memzero($message);
|
||||||
|
sodium_memzero($key);
|
||||||
|
return $cipher;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************
|
||||||
|
* MARK: PUBLIC
|
||||||
|
* *************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set a new key for encryption
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setKey(string $key)
|
||||||
|
{
|
||||||
|
if (empty($key)) {
|
||||||
|
throw new \UnexpectedValueException('Key cannot be empty');
|
||||||
|
}
|
||||||
|
$this->key = $key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrypt a message
|
||||||
|
* static version
|
||||||
|
*
|
||||||
|
* @param string $encrypted Message encrypted with safeEncrypt()
|
||||||
|
* @param string $key Encryption key (as hex string)
|
||||||
|
* @return string
|
||||||
|
* @throws \Exception
|
||||||
|
* @throws \RangeException
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
|
*/
|
||||||
|
public static function decryptKey(string $encrypted, string $key): string
|
||||||
|
{
|
||||||
|
return self::getInstance()->decryptData($encrypted, $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrypt a message
|
||||||
|
*
|
||||||
|
* @param string $encrypted Message encrypted with safeEncrypt()
|
||||||
|
* @return string
|
||||||
|
* @throws \RangeException
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
|
* @throws \UnexpectedValueException
|
||||||
|
*/
|
||||||
|
public function decrypt(string $encrypted): string
|
||||||
|
{
|
||||||
|
return $this->decryptData($encrypted, $this->key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt a message
|
||||||
|
* static version
|
||||||
|
*
|
||||||
|
* @param string $message Message to encrypt
|
||||||
|
* @param string $key Encryption key (as hex string)
|
||||||
|
* @return string
|
||||||
|
* @throws \Exception
|
||||||
|
* @throws \RangeException
|
||||||
|
*/
|
||||||
|
public static function encryptKey(string $message, string $key): string
|
||||||
|
{
|
||||||
|
return self::getInstance()->encryptData($message, $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt a message
|
||||||
|
*
|
||||||
|
* @param string $message Message to encrypt
|
||||||
|
* @return string
|
||||||
|
* @throws \Exception
|
||||||
|
* @throws \RangeException
|
||||||
|
*/
|
||||||
|
public function encrypt(string $message): string
|
||||||
|
{
|
||||||
|
return $this->encryptData($message, $this->key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ class SmartyExtend extends \Smarty
|
|||||||
// call basic smarty
|
// call basic smarty
|
||||||
// or Smarty::__construct();
|
// or Smarty::__construct();
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
// iinit lang
|
// init lang
|
||||||
$this->l10n = $l10n;
|
$this->l10n = $l10n;
|
||||||
// parse and read, legacy stuff
|
// parse and read, legacy stuff
|
||||||
$locale = $this->l10n->getLocaleAsArray();
|
$locale = $this->l10n->getLocaleAsArray();
|
||||||
|
|||||||
@@ -46,12 +46,34 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
public function testEncryptDecryptSuccess(string $input, string $expected): void
|
public function testEncryptDecryptSuccess(string $input, string $expected): void
|
||||||
{
|
{
|
||||||
$key = CreateKey::generateRandomKey();
|
$key = CreateKey::generateRandomKey();
|
||||||
$encrypted = SymmetricEncryption::encrypt($input, $key);
|
|
||||||
$decrypted = SymmetricEncryption::decrypt($encrypted, $key);
|
// test class
|
||||||
|
$crypt = new SymmetricEncryption($key);
|
||||||
|
$encrypted = $crypt->encrypt($input);
|
||||||
|
$decrypted = $crypt->decrypt($encrypted);
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
$decrypted,
|
||||||
|
'Class call',
|
||||||
|
);
|
||||||
|
|
||||||
|
// test indirect
|
||||||
|
$encrypted = SymmetricEncryption::getInstance($key)->encrypt($input);
|
||||||
|
$decrypted = SymmetricEncryption::getInstance($key)->decrypt($encrypted);
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
$decrypted,
|
||||||
|
'Class Instance call',
|
||||||
|
);
|
||||||
|
|
||||||
|
// test static
|
||||||
|
$encrypted = SymmetricEncryption::encryptKey($input, $key);
|
||||||
|
$decrypted = SymmetricEncryption::decryptKey($encrypted, $key);
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected,
|
$expected,
|
||||||
$decrypted
|
$decrypted,
|
||||||
|
'Static call',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,10 +108,24 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
public function testEncryptFailed(string $input, string $exception_message): void
|
public function testEncryptFailed(string $input, string $exception_message): void
|
||||||
{
|
{
|
||||||
$key = CreateKey::generateRandomKey();
|
$key = CreateKey::generateRandomKey();
|
||||||
$encrypted = SymmetricEncryption::encrypt($input, $key);
|
|
||||||
$wrong_key = CreateKey::generateRandomKey();
|
$wrong_key = CreateKey::generateRandomKey();
|
||||||
|
|
||||||
|
// wrong key in class call
|
||||||
|
$crypt = new SymmetricEncryption($key);
|
||||||
|
$encrypted = $crypt->encrypt($input);
|
||||||
$this->expectExceptionMessage($exception_message);
|
$this->expectExceptionMessage($exception_message);
|
||||||
SymmetricEncryption::decrypt($encrypted, $wrong_key);
|
$crypt->setKey($key);
|
||||||
|
$crypt->decrypt($encrypted);
|
||||||
|
|
||||||
|
// class instance
|
||||||
|
$encrypted = SymmetricEncryption::getInstance($key)->encrypt($input);
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::getInstance($wrong_key)->decrypt($encrypted);
|
||||||
|
|
||||||
|
// class static
|
||||||
|
$encrypted = SymmetricEncryption::encryptKey($input, $key);
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::decryptKey($encrypted, $wrong_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,7 +143,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
'too short hex key' => [
|
'too short hex key' => [
|
||||||
'key' => '1cabd5cba9e042f12522f4ff2de5c31d233b',
|
'key' => '1cabd5cba9e042f12522f4ff2de5c31d233b',
|
||||||
'excpetion_message' => 'Key is not the correct size (must be '
|
'excpetion_message' => 'Key is not the correct size (must be '
|
||||||
. 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES bytes long).'
|
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -126,13 +161,33 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testWrongKey(string $key, string $exception_message): void
|
public function testWrongKey(string $key, string $exception_message): void
|
||||||
{
|
{
|
||||||
$this->expectExceptionMessage($exception_message);
|
|
||||||
SymmetricEncryption::encrypt('test', $key);
|
|
||||||
// we must encrypt valid thing first so we can fail with the wrong kjey
|
|
||||||
$enc_key = CreateKey::generateRandomKey();
|
$enc_key = CreateKey::generateRandomKey();
|
||||||
$encrypted = SymmetricEncryption::encrypt('test', $enc_key);
|
|
||||||
|
// class
|
||||||
|
$crypt = new SymmetricEncryption($key);
|
||||||
$this->expectExceptionMessage($exception_message);
|
$this->expectExceptionMessage($exception_message);
|
||||||
SymmetricEncryption::decrypt($encrypted, $key);
|
$crypt->encrypt('test');
|
||||||
|
$crypt->setKey($enc_key);
|
||||||
|
$encrypted = $crypt->encrypt('test');
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
$crypt->setKey($key);
|
||||||
|
$crypt->decrypt($encrypted);
|
||||||
|
|
||||||
|
// class instance
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::getInstance($key)->encrypt('test');
|
||||||
|
// we must encrypt valid thing first so we can fail with the wrong key
|
||||||
|
$encrypted = SymmetricEncryption::getInstance($enc_key)->encrypt('test');
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::getInstance($key)->decrypt($encrypted);
|
||||||
|
|
||||||
|
// class static
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::encryptKey('test', $key);
|
||||||
|
// we must encrypt valid thing first so we can fail with the wrong key
|
||||||
|
$encrypted = SymmetricEncryption::encryptKey('test', $enc_key);
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::decryptKey($encrypted, $key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -145,7 +200,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
return [
|
return [
|
||||||
'too short ciphertext' => [
|
'too short ciphertext' => [
|
||||||
'input' => 'short',
|
'input' => 'short',
|
||||||
'exception_message' => 'Invalid ciphertext (too short)'
|
'exception_message' => 'Decipher message failed: '
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -164,8 +219,18 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
public function testWrongCiphertext(string $input, string $exception_message): void
|
public function testWrongCiphertext(string $input, string $exception_message): void
|
||||||
{
|
{
|
||||||
$key = CreateKey::generateRandomKey();
|
$key = CreateKey::generateRandomKey();
|
||||||
|
// class
|
||||||
|
$crypt = new SymmetricEncryption($key);
|
||||||
$this->expectExceptionMessage($exception_message);
|
$this->expectExceptionMessage($exception_message);
|
||||||
SymmetricEncryption::decrypt($input, $key);
|
$crypt->decrypt($input);
|
||||||
|
|
||||||
|
// class instance
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::getInstance($key)->decrypt($input);
|
||||||
|
|
||||||
|
// class static
|
||||||
|
$this->expectExceptionMessage($exception_message);
|
||||||
|
SymmetricEncryption::decryptKey($input, $key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user