Compare commits
16 commits
chore/loca
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
77a06947db | ||
|
d73d3180b7 | ||
|
1eae77f27c | ||
|
0a52b31559 | ||
|
eb19768d6a | ||
|
a06956f164 | ||
|
ae629ccebd | ||
|
be214fbc94 | ||
|
8eb49cda0b | ||
|
50d181373a | ||
|
7d02c1a2a1 | ||
|
5c0bb8d1af | ||
|
5041f824df | ||
|
57bb266635 | ||
|
c613271c48 | ||
|
8d9e894af8 |
14 changed files with 182 additions and 163 deletions
2
.github/workflows/phpstan.yml
vendored
2
.github/workflows/phpstan.yml
vendored
|
@ -11,7 +11,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: php-actions/composer@v6
|
||||
- uses: php-actions/phpstan@v3
|
||||
with:
|
||||
|
|
2
.github/workflows/preview.yml
vendored
2
.github/workflows/preview.yml
vendored
|
@ -10,7 +10,7 @@ jobs:
|
|||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: php-actions/composer@v6
|
||||
with:
|
||||
dev: no
|
||||
|
|
2
.github/workflows/unittests.yml
vendored
2
.github/workflows/unittests.yml
vendored
|
@ -14,7 +14,7 @@ jobs:
|
|||
php_version: [8.0, 8.1, 8.2]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: php-actions/composer@v6
|
||||
- run: |
|
||||
cp ./tests/Includes/Config.yaml ./src/Config/Config.yaml
|
||||
|
|
124
composer.lock
generated
124
composer.lock
generated
|
@ -8,16 +8,16 @@
|
|||
"packages": [
|
||||
{
|
||||
"name": "antcms/antloader",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/AntCMS-org/AntLoader.git",
|
||||
"reference": "b0f3b484908ae438464e83e5098be815acf571c6"
|
||||
"reference": "ce5aeeb28544b85150382989d463b8dc71efec87"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/AntCMS-org/AntLoader/zipball/b0f3b484908ae438464e83e5098be815acf571c6",
|
||||
"reference": "b0f3b484908ae438464e83e5098be815acf571c6",
|
||||
"url": "https://api.github.com/repos/AntCMS-org/AntLoader/zipball/ce5aeeb28544b85150382989d463b8dc71efec87",
|
||||
"reference": "ce5aeeb28544b85150382989d463b8dc71efec87",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -47,9 +47,9 @@
|
|||
"description": "A small and simple autoloader for PHP applications",
|
||||
"support": {
|
||||
"issues": "https://github.com/AntCMS-org/AntLoader/issues",
|
||||
"source": "https://github.com/AntCMS-org/AntLoader/tree/2.0.1"
|
||||
"source": "https://github.com/AntCMS-org/AntLoader/tree/2.0.2"
|
||||
},
|
||||
"time": "2023-06-08T06:44:00+00:00"
|
||||
"time": "2023-10-03T13:13:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/ca-bundle",
|
||||
|
@ -129,22 +129,22 @@
|
|||
},
|
||||
{
|
||||
"name": "composer/class-map-generator",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/class-map-generator.git",
|
||||
"reference": "1e1cb2b791facb2dfe32932a7718cf2571187513"
|
||||
"reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/class-map-generator/zipball/1e1cb2b791facb2dfe32932a7718cf2571187513",
|
||||
"reference": "1e1cb2b791facb2dfe32932a7718cf2571187513",
|
||||
"url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9",
|
||||
"reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer/pcre": "^2 || ^3",
|
||||
"composer/pcre": "^2.1 || ^3.1",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"symfony/finder": "^4.4 || ^5.3 || ^6"
|
||||
"symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.6",
|
||||
|
@ -182,7 +182,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/class-map-generator/issues",
|
||||
"source": "https://github.com/composer/class-map-generator/tree/1.0.0"
|
||||
"source": "https://github.com/composer/class-map-generator/tree/1.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -198,7 +198,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-06-19T11:31:27+00:00"
|
||||
"time": "2023-06-30T13:58:57+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/pcre",
|
||||
|
@ -475,16 +475,16 @@
|
|||
},
|
||||
{
|
||||
"name": "league/commonmark",
|
||||
"version": "2.4.0",
|
||||
"version": "2.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/commonmark.git",
|
||||
"reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048"
|
||||
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048",
|
||||
"reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048",
|
||||
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
|
||||
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -577,7 +577,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-24T15:16:10+00:00"
|
||||
"time": "2023-08-30T16:55:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/config",
|
||||
|
@ -767,21 +767,21 @@
|
|||
},
|
||||
{
|
||||
"name": "nette/schema",
|
||||
"version": "v1.2.3",
|
||||
"version": "v1.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nette/schema.git",
|
||||
"reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f"
|
||||
"reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
|
||||
"reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
|
||||
"url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab",
|
||||
"reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"nette/utils": "^2.5.7 || ^3.1.5 || ^4.0",
|
||||
"php": ">=7.1 <8.3"
|
||||
"php": "7.1 - 8.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"nette/tester": "^2.3 || ^2.4",
|
||||
|
@ -823,26 +823,26 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nette/schema/issues",
|
||||
"source": "https://github.com/nette/schema/tree/v1.2.3"
|
||||
"source": "https://github.com/nette/schema/tree/v1.2.4"
|
||||
},
|
||||
"time": "2022-10-13T01:24:26+00:00"
|
||||
"time": "2023-08-05T18:56:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nette/utils",
|
||||
"version": "v4.0.0",
|
||||
"version": "v4.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nette/utils.git",
|
||||
"reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e"
|
||||
"reference": "9124157137da01b1f5a5a22d6486cb975f26db7e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e",
|
||||
"reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e",
|
||||
"url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e",
|
||||
"reference": "9124157137da01b1f5a5a22d6486cb975f26db7e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.0 <8.3"
|
||||
"php": ">=8.0 <8.4"
|
||||
},
|
||||
"conflict": {
|
||||
"nette/finder": "<3",
|
||||
|
@ -850,7 +850,7 @@
|
|||
},
|
||||
"require-dev": {
|
||||
"jetbrains/phpstorm-attributes": "dev-master",
|
||||
"nette/tester": "^2.4",
|
||||
"nette/tester": "^2.5",
|
||||
"phpstan/phpstan": "^1.0",
|
||||
"tracy/tracy": "^2.9"
|
||||
},
|
||||
|
@ -910,9 +910,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nette/utils/issues",
|
||||
"source": "https://github.com/nette/utils/tree/v4.0.0"
|
||||
"source": "https://github.com/nette/utils/tree/v4.0.1"
|
||||
},
|
||||
"time": "2023-02-02T10:41:53+00:00"
|
||||
"time": "2023-07-30T15:42:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nyholm/psr7",
|
||||
|
@ -1518,16 +1518,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
|
||||
"reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
|
||||
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
|
||||
"reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1542,7 +1542,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
"dev-main": "1.28-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
|
@ -1580,7 +1580,7 @@
|
|||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1596,20 +1596,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2023-01-26T09:26:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
|
||||
"reference": "42292d99c55abe617799667f454222c54c60e229"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
|
||||
"reference": "42292d99c55abe617799667f454222c54c60e229",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1624,7 +1624,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
"dev-main": "1.28-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
|
@ -1663,7 +1663,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1679,20 +1679,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2023-07-28T09:04:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
||||
"reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
|
||||
"reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1701,7 +1701,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
"dev-main": "1.28-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
|
@ -1746,7 +1746,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1762,7 +1762,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2023-01-26T09:26:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
|
@ -1840,16 +1840,16 @@
|
|||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.6.1",
|
||||
"version": "v3.7.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd"
|
||||
"reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd",
|
||||
"reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554",
|
||||
"reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1859,7 +1859,7 @@
|
|||
},
|
||||
"require-dev": {
|
||||
"psr/container": "^1.0|^2.0",
|
||||
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
|
||||
"symfony/phpunit-bridge": "^5.4.9|^6.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
|
@ -1895,7 +1895,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.6.1"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.7.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1907,7 +1907,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-06-08T12:52:13+00:00"
|
||||
"time": "2023-08-28T11:09:02+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
|
88
package-lock.json
generated
88
package-lock.json
generated
|
@ -6,9 +6,9 @@
|
|||
"": {
|
||||
"name": "antcms",
|
||||
"devDependencies": {
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@tailwindcss/typography": "^0.5.9",
|
||||
"tailwindcss": "^3.3.2"
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
"tailwindcss": "^3.3.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@alloc/quick-lru": {
|
||||
|
@ -113,9 +113,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@tailwindcss/forms": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz",
|
||||
"integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==",
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz",
|
||||
"integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"mini-svg-data-uri": "^1.2.3"
|
||||
|
@ -125,9 +125,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@tailwindcss/typography": {
|
||||
"version": "0.5.9",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
|
||||
"integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==",
|
||||
"version": "0.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
|
||||
"integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lodash.castarray": "^4.4.0",
|
||||
|
@ -289,9 +289,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
|
||||
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
|
@ -478,9 +478,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/jiti": {
|
||||
"version": "1.18.2",
|
||||
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
|
||||
"integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz",
|
||||
"integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"jiti": "bin/jiti.js"
|
||||
|
@ -679,9 +679,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.23",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
|
||||
"integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
|
||||
"version": "8.4.31",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
@ -957,9 +957,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz",
|
||||
"integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==",
|
||||
"version": "3.3.5",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz",
|
||||
"integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
|
@ -967,10 +967,10 @@
|
|||
"chokidar": "^3.5.3",
|
||||
"didyoumean": "^1.2.2",
|
||||
"dlv": "^1.1.3",
|
||||
"fast-glob": "^3.2.12",
|
||||
"fast-glob": "^3.3.0",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"jiti": "^1.18.2",
|
||||
"jiti": "^1.19.1",
|
||||
"lilconfig": "^2.1.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
|
@ -982,7 +982,6 @@
|
|||
"postcss-load-config": "^4.0.1",
|
||||
"postcss-nested": "^6.0.1",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"resolve": "^1.22.2",
|
||||
"sucrase": "^3.32.0"
|
||||
},
|
||||
|
@ -1149,18 +1148,18 @@
|
|||
}
|
||||
},
|
||||
"@tailwindcss/forms": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz",
|
||||
"integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==",
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz",
|
||||
"integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mini-svg-data-uri": "^1.2.3"
|
||||
}
|
||||
},
|
||||
"@tailwindcss/typography": {
|
||||
"version": "0.5.9",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
|
||||
"integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==",
|
||||
"version": "0.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
|
||||
"integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash.castarray": "^4.4.0",
|
||||
|
@ -1286,9 +1285,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
|
||||
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
|
@ -1434,9 +1433,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"jiti": {
|
||||
"version": "1.18.2",
|
||||
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
|
||||
"integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz",
|
||||
"integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
|
||||
"dev": true
|
||||
},
|
||||
"lilconfig": {
|
||||
|
@ -1581,9 +1580,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.23",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
|
||||
"integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
|
||||
"version": "8.4.31",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nanoid": "^3.3.6",
|
||||
|
@ -1736,9 +1735,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"tailwindcss": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz",
|
||||
"integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==",
|
||||
"version": "3.3.5",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz",
|
||||
"integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
|
@ -1746,10 +1745,10 @@
|
|||
"chokidar": "^3.5.3",
|
||||
"didyoumean": "^1.2.2",
|
||||
"dlv": "^1.1.3",
|
||||
"fast-glob": "^3.2.12",
|
||||
"fast-glob": "^3.3.0",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"jiti": "^1.18.2",
|
||||
"jiti": "^1.19.1",
|
||||
"lilconfig": "^2.1.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
|
@ -1761,7 +1760,6 @@
|
|||
"postcss-load-config": "^4.0.1",
|
||||
"postcss-nested": "^6.0.1",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"resolve": "^1.22.2",
|
||||
"sucrase": "^3.32.0"
|
||||
},
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
},
|
||||
"homepage": "https://github.com/BelleNottelling/AntCMS#readme",
|
||||
"devDependencies": {
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@tailwindcss/typography": "^0.5.9",
|
||||
"tailwindcss": "^3.3.2"
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
"tailwindcss": "^3.3.5"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,8 +81,8 @@ class AntAuth
|
|||
{
|
||||
setcookie("auth", "valid");
|
||||
|
||||
$title = AntConfig::currentConfig('siteInfo.siteTitle');
|
||||
header('WWW-Authenticate: Basic realm="' . $title . '"');
|
||||
$siteInfo = AntConfig::currentConfig('siteInfo');
|
||||
header('WWW-Authenticate: Basic realm="' . $siteInfo['siteTitle'] . '"');
|
||||
http_response_code(401);
|
||||
echo 'You must enter a valid username and password to access this page';
|
||||
exit;
|
||||
|
|
|
@ -23,7 +23,7 @@ class AntCMS
|
|||
*/
|
||||
public function renderPage(string $page)
|
||||
{
|
||||
$start_time = microtime(true);
|
||||
$start_time = hrtime(true);
|
||||
$content = $this->getPage($page);
|
||||
$themeConfig = Self::getThemeConfig();
|
||||
|
||||
|
@ -43,12 +43,10 @@ class AntCMS
|
|||
];
|
||||
|
||||
$pageTemplate = $this->antTwig->renderWithTiwg($pageTemplate, $params);
|
||||
|
||||
$end_time = microtime(true);
|
||||
$elapsed_time = round($end_time - $start_time, 4);
|
||||
$elapsed_time = (hrtime(true) - $start_time) / 1e+6;
|
||||
|
||||
if (AntConfig::currentConfig('debug')) {
|
||||
$pageTemplate = str_replace('<!--AntCMS-Debug-->', '<p>Took ' . $elapsed_time . ' seconds to render the page. </p>', $pageTemplate);
|
||||
$pageTemplate = str_replace('<!--AntCMS-Debug-->', '<p>Took ' . $elapsed_time . ' milliseconds to render the page. </p>', $pageTemplate);
|
||||
}
|
||||
|
||||
return $pageTemplate;
|
||||
|
@ -126,25 +124,27 @@ class AntCMS
|
|||
*/
|
||||
public static function getThemeTemplate(string $layout = 'default', string $theme = null)
|
||||
{
|
||||
$theme = $theme ?? AntConfig::currentConfig('activeTheme');
|
||||
$theme ??= AntConfig::currentConfig('activeTheme');
|
||||
|
||||
if (!is_dir(antThemePath . '/' . $theme)) {
|
||||
if (!is_dir(antThemePath . DIRECTORY_SEPARATOR . $theme)) {
|
||||
$theme = 'Default';
|
||||
}
|
||||
|
||||
$basePath = AntTools::repairFilePath(antThemePath . DIRECTORY_SEPARATOR . $theme);
|
||||
|
||||
if (strpos($layout, '_') !== false) {
|
||||
$layoutPrefix = explode('_', $layout)[0];
|
||||
$templatePath = AntTools::repairFilePath(antThemePath . '/' . $theme . '/' . 'Templates' . '/' . $layoutPrefix);
|
||||
$templatePath = $basePath . DIRECTORY_SEPARATOR . 'Templates' . DIRECTORY_SEPARATOR . $layoutPrefix;
|
||||
$defaultTemplates = AntTools::repairFilePath(antThemePath . '/Default/Templates' . '/' . $layoutPrefix);
|
||||
} else {
|
||||
$templatePath = AntTools::repairFilePath(antThemePath . '/' . $theme . '/' . 'Templates');
|
||||
$templatePath = $basePath . DIRECTORY_SEPARATOR . 'Templates';
|
||||
$defaultTemplates = AntTools::repairFilePath(antThemePath . '/Default/Templates');
|
||||
}
|
||||
|
||||
try {
|
||||
$template = @file_get_contents(AntTools::repairFilePath($templatePath . '/' . $layout . '.html.twig'));
|
||||
$template = @file_get_contents($templatePath . DIRECTORY_SEPARATOR . $layout . '.html.twig');
|
||||
if (empty($template)) {
|
||||
$template = file_get_contents(AntTools::repairFilePath($defaultTemplates . '/' . $layout . '.html.twig'));
|
||||
$template = file_get_contents($defaultTemplates . DIRECTORY_SEPARATOR . $layout . '.html.twig');
|
||||
}
|
||||
} catch (\Exception) {
|
||||
}
|
||||
|
|
|
@ -17,10 +17,10 @@ class AntCache
|
|||
/**
|
||||
* Creates a new cache object, sets the correct caching type. ('auto', 'filesystem', 'apcu', or 'none')
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(null|string $mode = null)
|
||||
{
|
||||
$config = AntConfig::currentConfig();
|
||||
$mode = $config['cacheMode'] ?? 'auto';
|
||||
$mode = $mode ?? AntConfig::currentConfig('cacheMode') ?? 'auto';
|
||||
|
||||
switch ($mode) {
|
||||
case 'none':
|
||||
$this->cacheType = self::noCache;
|
||||
|
@ -86,11 +86,9 @@ class AntCache
|
|||
return file_get_contents($cachePath);
|
||||
case self::apcuCache:
|
||||
$apcuKey = $this->cacheKeyApcu . $key;
|
||||
if (apcu_exists($apcuKey)) {
|
||||
return apcu_fetch($apcuKey);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
$success = false;
|
||||
$result = apcu_fetch($apcuKey, $success);
|
||||
return $success ? $result : false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -129,16 +127,20 @@ class AntCache
|
|||
*/
|
||||
public function createCacheKey(string $content, string $salt = 'cache')
|
||||
{
|
||||
/**
|
||||
* If the server is modern enough to have xxh128, use that. It is really fast and still produces long hashes
|
||||
* If not, use MD4 since it's still quite fast.
|
||||
* Source: https://php.watch/articles/php-hash-benchmark
|
||||
*/
|
||||
if (defined('HAS_XXH128')) {
|
||||
return hash('xxh128', $content . $salt);
|
||||
} else {
|
||||
return hash('md4', $content . $salt);
|
||||
}
|
||||
return hash(self::getHashAlgo(), $content . $salt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a unique cache key for a file and a salt value.
|
||||
* The salt is used to ensure that each cache key is unique to each component, even if multiple components are using the same source content but caching different results.
|
||||
*
|
||||
* @param string $filePath The file path to create a cache key for.
|
||||
* @param string $salt An optional salt value to use in the cache key generation. Default is 'cache'.
|
||||
* @return string The generated cache key.
|
||||
*/
|
||||
public function createCacheKeyFile(string $filePath, string $salt = 'cache')
|
||||
{
|
||||
return hash_file(self::getHashAlgo(), $filePath) . $salt;
|
||||
}
|
||||
|
||||
public static function clearCache(): void
|
||||
|
@ -162,4 +164,14 @@ class AntCache
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function getHashAlgo(): string
|
||||
{
|
||||
/**
|
||||
* If the server is modern enough to have xxh128, use that. It is really fast and still produces long hashes
|
||||
* If not, use MD4 since it's still quite fast.
|
||||
* Source: https://php.watch/articles/php-hash-benchmark
|
||||
*/
|
||||
return defined('HAS_XXH128') ? 'xxh128' : 'md4';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,7 +48,8 @@ class AntConfig
|
|||
*/
|
||||
public static function currentConfig(?string $key = null)
|
||||
{
|
||||
$config = AntYaml::parseFile(antConfigFile);
|
||||
// FS cache enabled to save ~10% of the time to deliver the file page.
|
||||
$config = AntYaml::parseFile(antConfigFile, true);
|
||||
if (is_null($key)) {
|
||||
return $config;
|
||||
} else {
|
||||
|
@ -57,7 +58,6 @@ class AntConfig
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array<mixed> $array
|
||||
* @param array<mixed> $keys
|
||||
|
@ -67,13 +67,11 @@ class AntConfig
|
|||
{
|
||||
foreach ($keys as $key) {
|
||||
if (isset($array[$key])) {
|
||||
$array = $array[$key];
|
||||
return $array[$key];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -52,21 +52,18 @@ class AntPages
|
|||
AntYaml::saveFile(antPagesList, $pageList);
|
||||
}
|
||||
|
||||
/** @return array<mixed> */
|
||||
public static function getPages()
|
||||
public static function getPages():array
|
||||
{
|
||||
return AntYaml::parseFile(antPagesList);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $currentPage optional - What page is the active page. Used for highlighting the active page in the navbar
|
||||
* @return string
|
||||
*/
|
||||
public static function generateNavigation(string $navTemplate = '', string $currentPage = '')
|
||||
public static function generateNavigation(string $navTemplate = '', string $currentPage = ''): string
|
||||
{
|
||||
$pages = AntPages::getPages();
|
||||
$antCache = new AntCache;
|
||||
$antTwig = new AntTwig();
|
||||
|
||||
$theme = AntConfig::currentConfig('activeTheme');
|
||||
$cacheKey = $antCache->createCacheKey(json_encode($pages), $theme . $currentPage);
|
||||
|
@ -74,7 +71,7 @@ class AntPages
|
|||
if ($antCache->isCached($cacheKey)) {
|
||||
$cachedContent = $antCache->getCache($cacheKey);
|
||||
|
||||
if ($cachedContent !== false && !empty($cachedContent)) {
|
||||
if (!empty($cachedContent)) {
|
||||
return $cachedContent;
|
||||
}
|
||||
}
|
||||
|
@ -91,6 +88,7 @@ class AntPages
|
|||
}
|
||||
}
|
||||
|
||||
$antTwig = new AntTwig();
|
||||
$navHTML = $antTwig->renderWithTiwg($navTemplate, array('pages' => $pages));
|
||||
|
||||
$antCache->setCache($cacheKey, $navHTML);
|
||||
|
|
|
@ -51,7 +51,7 @@ class AntRouting
|
|||
$isHttps = !empty($scheme) && (strcasecmp('on', $scheme) == 0 || strcasecmp('https', $scheme) == 0);
|
||||
|
||||
if (!$isHttps) {
|
||||
$url = 'https://' . AntTools::repairURL($this->baseUrl . '/' . $this->requestUri);
|
||||
$url = 'https://' . AntTools::repairURL($this->baseUrl . $this->requestUri);
|
||||
header('Location: ' . $url);
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ class AntTwig
|
|||
$twigCache = (AntConfig::currentConfig('enableCache') !== 'none') ? AntCachePath : false;
|
||||
$this->theme = $theme ?? AntConfig::currentConfig('activeTheme');
|
||||
|
||||
if (!is_dir(antThemePath . '/' . $this->theme)) {
|
||||
if (!is_dir(antThemePath . DIRECTORY_SEPARATOR . $this->theme)) {
|
||||
$this->theme = 'Default';
|
||||
}
|
||||
|
||||
|
|
|
@ -7,12 +7,25 @@ use Symfony\Component\Yaml\Yaml;
|
|||
|
||||
class AntYaml
|
||||
{
|
||||
/**
|
||||
* @return array<mixed>
|
||||
*/
|
||||
public static function parseFile(string $file)
|
||||
public static function parseFile(string $file, bool $fileCache = false): array
|
||||
{
|
||||
return Yaml::parseFile($file);
|
||||
if ($fileCache) {
|
||||
$antCache = new AntCache('filesystem');
|
||||
} else {
|
||||
$antCache = new AntCache();
|
||||
}
|
||||
|
||||
$cacheKey = $antCache->createCacheKeyFile($file);
|
||||
if ($antCache->isCached($cacheKey)) {
|
||||
$parsed = json_decode($antCache->getCache($cacheKey), true);
|
||||
}
|
||||
|
||||
if (empty($parsed)) {
|
||||
$parsed = Yaml::parseFile($file);
|
||||
$antCache->setCache($cacheKey, json_encode($parsed));
|
||||
}
|
||||
|
||||
return $parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -27,7 +40,7 @@ class AntYaml
|
|||
/**
|
||||
* @return array<mixed>|null
|
||||
*/
|
||||
public static function parseYaml(string $yaml)
|
||||
public static function parseYaml(string $yaml): ?array
|
||||
{
|
||||
try {
|
||||
return Yaml::parse($yaml);
|
||||
|
|
Loading…
Reference in a new issue