Merge pull request #200 from php-flasher/phpstan

Improve Type Safety and IDE Support with Enhanced PHPDoc Annotations and Stricter PHPStan Validations
This commit is contained in:
Younes ENNAJI
2024-10-13 21:42:41 +01:00
committed by GitHub
24 changed files with 1297 additions and 479 deletions
+4 -4
View File
@@ -41,15 +41,15 @@
"require-dev": {
"larastan/larastan": "^2.9.8",
"mockery/mockery": "^1.6.12",
"orchestra/testbench": "^9.5.0",
"overtrue/phplint": "^9.4.1",
"orchestra/testbench": "^9.5.2",
"overtrue/phplint": "^9.5.3",
"php-cs-fixer/shim": "^3.64.0",
"phpstan/phpstan": "^1.12.6",
"phpstan/phpstan-mockery": "^1.1.3",
"phpstan/phpstan-phpunit": "^1.4.0",
"phpstan/phpstan-symfony": "^1.4",
"phpstan/phpstan-symfony": "^1.4.10",
"phpunit/phpunit": "^10.5.26",
"rector/rector": "^1.2.6",
"rector/rector": "^1.2.7",
"rector/swiss-knife": "^1.0.0",
"spatie/ray": "^1.41.2",
"symplify/monorepo-builder": "^11.2.22"
Generated
+85 -87
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "560df60fbc195a8e0eb74495c0c487a8",
"content-hash": "56132bd0ea6cb15e87e676175b408184",
"packages": [
{
"name": "brick/math",
@@ -3162,31 +3162,31 @@
},
{
"name": "symfony/cache",
"version": "v6.4.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
"reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a"
"reference": "5e2376f726d61541b9617512e374808d12c1dc22"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a",
"reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a",
"url": "https://api.github.com/repos/symfony/cache/zipball/5e2376f726d61541b9617512e374808d12c1dc22",
"reference": "5e2376f726d61541b9617512e374808d12c1dc22",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"psr/cache": "^2.0|^3.0",
"psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3",
"symfony/var-exporter": "^6.3.6|^7.0"
"symfony/var-exporter": "^6.4|^7.0"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
"symfony/dependency-injection": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/var-dumper": "<5.4"
"doctrine/dbal": "<3.6",
"symfony/dependency-injection": "<6.4",
"symfony/http-kernel": "<6.4",
"symfony/var-dumper": "<6.4"
},
"provide": {
"psr/cache-implementation": "2.0|3.0",
@@ -3195,15 +3195,15 @@
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/dbal": "^2.13.1|^3|^4",
"doctrine/dbal": "^3.6|^4",
"predis/predis": "^1.1|^2.0",
"psr/simple-cache": "^1.0|^2.0|^3.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/filesystem": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/filesystem": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -3238,7 +3238,7 @@
"psr6"
],
"support": {
"source": "https://github.com/symfony/cache/tree/v6.4.0"
"source": "https://github.com/symfony/cache/tree/v7.0.0"
},
"funding": [
{
@@ -3254,7 +3254,7 @@
"type": "tidelift"
}
],
"time": "2023-11-24T19:28:07+00:00"
"time": "2023-11-25T15:40:35+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -3857,24 +3857,24 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v6.4.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6"
"reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6",
"reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c459b40ffe67c49af6fd392aac374c9edf8a027e",
"reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -3883,13 +3883,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
"symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -3917,7 +3917,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.0"
},
"funding": [
{
@@ -3933,7 +3933,7 @@
"type": "tidelift"
}
],
"time": "2023-07-27T06:52:43+00:00"
"time": "2023-07-27T16:29:09+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -7816,16 +7816,16 @@
},
{
"name": "orchestra/testbench",
"version": "v9.5.0",
"version": "v9.5.2",
"source": {
"type": "git",
"url": "https://github.com/orchestral/testbench.git",
"reference": "a040a69b5481e40d742c67c92a30e1b22b5968f1"
"reference": "bc404d840ffbb722bf0bbb042251ef83223482f9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/orchestral/testbench/zipball/a040a69b5481e40d742c67c92a30e1b22b5968f1",
"reference": "a040a69b5481e40d742c67c92a30e1b22b5968f1",
"url": "https://api.github.com/repos/orchestral/testbench/zipball/bc404d840ffbb722bf0bbb042251ef83223482f9",
"reference": "bc404d840ffbb722bf0bbb042251ef83223482f9",
"shasum": ""
},
"require": {
@@ -7833,7 +7833,7 @@
"fakerphp/faker": "^1.23",
"laravel/framework": "^11.11",
"mockery/mockery": "^1.6",
"orchestra/testbench-core": "^9.5",
"orchestra/testbench-core": "^9.5.3",
"orchestra/workbench": "^9.6",
"php": "^8.2",
"phpunit/phpunit": "^10.5 || ^11.0.1",
@@ -7865,22 +7865,22 @@
],
"support": {
"issues": "https://github.com/orchestral/testbench/issues",
"source": "https://github.com/orchestral/testbench/tree/v9.5.0"
"source": "https://github.com/orchestral/testbench/tree/v9.5.2"
},
"time": "2024-09-24T05:44:14+00:00"
"time": "2024-10-06T13:07:57+00:00"
},
{
"name": "orchestra/testbench-core",
"version": "v9.5.0",
"version": "v9.5.3",
"source": {
"type": "git",
"url": "https://github.com/orchestral/testbench-core.git",
"reference": "4880c3f840cac2b9c0a26d46e927d1994aabc69f"
"reference": "9a5754622881f601951427a94c04c50e448cbf09"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/orchestral/testbench-core/zipball/4880c3f840cac2b9c0a26d46e927d1994aabc69f",
"reference": "4880c3f840cac2b9c0a26d46e927d1994aabc69f",
"url": "https://api.github.com/repos/orchestral/testbench-core/zipball/9a5754622881f601951427a94c04c50e448cbf09",
"reference": "9a5754622881f601951427a94c04c50e448cbf09",
"shasum": ""
},
"require": {
@@ -7893,7 +7893,7 @@
"laravel/framework": "<11.11.0 || >=12.0.0",
"laravel/serializable-closure": "<1.3.0 || >=2.0.0",
"nunomaduro/collision": "<8.0.0 || >=9.0.0",
"phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.4.0"
"phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.5.0"
},
"require-dev": {
"fakerphp/faker": "^1.23",
@@ -7957,7 +7957,7 @@
"issues": "https://github.com/orchestral/testbench/issues",
"source": "https://github.com/orchestral/testbench-core"
},
"time": "2024-09-23T13:18:23+00:00"
"time": "2024-10-06T11:20:27+00:00"
},
{
"name": "orchestra/workbench",
@@ -8027,30 +8027,31 @@
},
{
"name": "overtrue/phplint",
"version": "9.4.1",
"version": "9.5.3",
"source": {
"type": "git",
"url": "https://github.com/overtrue/phplint.git",
"reference": "cec4a0dbb9d00077dafa2f0cd89f4ca532814276"
"reference": "584063a687abca041551e0b14c47fe9fc574b193"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/overtrue/phplint/zipball/cec4a0dbb9d00077dafa2f0cd89f4ca532814276",
"reference": "cec4a0dbb9d00077dafa2f0cd89f4ca532814276",
"url": "https://api.github.com/repos/overtrue/phplint/zipball/584063a687abca041551e0b14c47fe9fc574b193",
"reference": "584063a687abca041551e0b14c47fe9fc574b193",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.0",
"ext-dom": "*",
"ext-json": "*",
"ext-mbstring": "*",
"php": "^8.1",
"symfony/cache": "^6.4 || ^7.0",
"symfony/console": "^6.4 || ^7.0",
"symfony/event-dispatcher": "^6.4 || ^7.0",
"symfony/finder": "^6.4 || ^7.0",
"symfony/options-resolver": "^6.4 || ^7.0",
"symfony/process": "^6.4 || ^7.0",
"symfony/yaml": "^6.4 || ^7.0"
"php": "^8.2",
"symfony/cache": "^7.0",
"symfony/console": "^7.0",
"symfony/event-dispatcher": "^7.0",
"symfony/finder": "^7.0",
"symfony/options-resolver": "^7.0",
"symfony/process": "^7.0",
"symfony/yaml": "^7.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4",
@@ -8072,13 +8073,10 @@
"pre-commit": [
"composer style:fix",
"composer code:check"
],
"pre-push": [
"composer qa:check"
]
},
"branch-alias": {
"dev-main": "9.4.x-dev"
"dev-main": "9.5.x-dev"
}
},
"autoload": {
@@ -8110,7 +8108,7 @@
],
"support": {
"issues": "https://github.com/overtrue/phplint/issues",
"source": "https://github.com/overtrue/phplint/tree/9.4.1"
"source": "https://github.com/overtrue/phplint/tree/9.5.3"
},
"funding": [
{
@@ -8118,7 +8116,7 @@
"type": "github"
}
],
"time": "2024-07-05T14:16:33+00:00"
"time": "2024-10-11T07:13:25+00:00"
},
{
"name": "phar-io/manifest",
@@ -8533,22 +8531,22 @@
},
{
"name": "phpstan/phpstan-symfony",
"version": "1.4.0",
"version": "1.4.10",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-symfony.git",
"reference": "51183fefbaf4713aa81eddbd273dc59dd5e5ff71"
"reference": "f7d5782044bedf93aeb3f38e09c91148ee90e5a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/51183fefbaf4713aa81eddbd273dc59dd5e5ff71",
"reference": "51183fefbaf4713aa81eddbd273dc59dd5e5ff71",
"url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f7d5782044bedf93aeb3f38e09c91148ee90e5a1",
"reference": "f7d5782044bedf93aeb3f38e09c91148ee90e5a1",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"php": "^7.2 || ^8.0",
"phpstan/phpstan": "^1.11"
"phpstan/phpstan": "^1.12"
},
"conflict": {
"symfony/framework-bundle": "<3.0"
@@ -8599,9 +8597,9 @@
"description": "Symfony Framework extensions and rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-symfony/issues",
"source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.0"
"source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.10"
},
"time": "2024-04-20T06:38:35+00:00"
"time": "2024-09-26T18:14:50+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -9104,16 +9102,16 @@
},
{
"name": "rector/rector",
"version": "1.2.6",
"version": "1.2.7",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
"reference": "6ca85da28159dbd3bb36211c5104b7bc91278e99"
"reference": "5b33bdd871895276e2c18e5410a4a57df9233ee0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/6ca85da28159dbd3bb36211c5104b7bc91278e99",
"reference": "6ca85da28159dbd3bb36211c5104b7bc91278e99",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/5b33bdd871895276e2c18e5410a4a57df9233ee0",
"reference": "5b33bdd871895276e2c18e5410a4a57df9233ee0",
"shasum": ""
},
"require": {
@@ -9151,7 +9149,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/1.2.6"
"source": "https://github.com/rectorphp/rector/tree/1.2.7"
},
"funding": [
{
@@ -9159,7 +9157,7 @@
"type": "github"
}
],
"time": "2024-10-03T08:56:44+00:00"
"time": "2024-10-12T11:12:46+00:00"
},
{
"name": "rector/swiss-knife",
@@ -10399,20 +10397,20 @@
},
{
"name": "symfony/options-resolver",
"version": "v6.4.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "22301f0e7fdeaacc14318928612dee79be99860e"
"reference": "700ff4096e346f54cb628ea650767c8130f1001f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e",
"reference": "22301f0e7fdeaacc14318928612dee79be99860e",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f",
"reference": "700ff4096e346f54cb628ea650767c8130f1001f",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
@@ -10446,7 +10444,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.4.0"
"source": "https://github.com/symfony/options-resolver/tree/v7.0.0"
},
"funding": [
{
@@ -10462,7 +10460,7 @@
"type": "tidelift"
}
],
"time": "2023-08-08T10:16:24+00:00"
"time": "2023-08-08T10:20:21+00:00"
},
{
"name": "symfony/polyfill-iconv",
@@ -10967,13 +10965,13 @@
],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": [],
"stability-flags": {},
"prefer-stable": true,
"prefer-lowest": true,
"platform": {
"php": ">=8.2",
"ext-intl": "*"
},
"platform-dev": [],
"platform-dev": {},
"plugin-api-version": "2.6.0"
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"dist/main.css": "/dist/main.c51cfb93.css",
"dist/main.css": "/dist/main.61bfd6c6.css",
"dist/main.js": "/dist/main.911a168a.js",
"dist/455.3a7b4474.css": "/dist/455.3a7b4474.css",
"dist/455.095e6545.js": "/dist/455.095e6545.js",
+1 -1
View File
@@ -2,7 +2,7 @@
"entrypoints": {
"main": {
"css": [
"/dist/main.c51cfb93.css"
"/dist/main.61bfd6c6.css"
],
"js": [
"/dist/main.911a168a.js"
File diff suppressed because one or more lines are too long
+398 -322
View File
@@ -17,15 +17,15 @@
],
"devDependencies": {
"@antfu/eslint-config": "^2.27.3",
"@babel/core": "^7.25.7",
"@babel/preset-env": "^7.25.7",
"@babel/core": "^7.25.8",
"@babel/preset-env": "^7.25.8",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^25.0.8",
"@rollup/plugin-eslint": "^9.0.5",
"@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-typescript": "^11.1.6",
"@types/node": "^20.16.10",
"@types/node": "^20.16.11",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"all-contributors-cli": "^6.26.1",
@@ -49,10 +49,10 @@
"rollup-plugin-filesize": "^10.0.0",
"rollup-plugin-postcss": "^4.0.2",
"rollup-plugin-progress": "^1.1.2",
"sass": "^1.79.4",
"sass": "^1.79.5",
"ts-node": "^10.9.2",
"tslib": "^2.7.0",
"typescript": "^5.6.2"
"typescript": "^5.6.3"
}
},
"node_modules/@ampproject/remapping": {
@@ -408,9 +408,9 @@
}
},
"node_modules/@babel/compat-data": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz",
"integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz",
"integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -418,9 +418,9 @@
}
},
"node_modules/@babel/core": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz",
"integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz",
"integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -430,10 +430,10 @@
"@babel/helper-compilation-targets": "^7.25.7",
"@babel/helper-module-transforms": "^7.25.7",
"@babel/helpers": "^7.25.7",
"@babel/parser": "^7.25.7",
"@babel/parser": "^7.25.8",
"@babel/template": "^7.25.7",
"@babel/traverse": "^7.25.7",
"@babel/types": "^7.25.7",
"@babel/types": "^7.25.8",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -775,13 +775,13 @@
}
},
"node_modules/@babel/parser": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz",
"integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz",
"integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.25.7"
"@babel/types": "^7.25.8"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -887,74 +887,6 @@
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-class-properties": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-class-static-block": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
"integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.3"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz",
@@ -987,142 +919,6 @@
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-import-meta": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-numeric-separator": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-top-level-await": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-unicode-sets-regex": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
@@ -1157,15 +953,14 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.7.tgz",
"integrity": "sha512-4B6OhTrwYKHYYgcwErvZjbmH9X5TxQBsaBHdzEIB4l71gR5jh/tuHGlb9in47udL2+wVUcOz5XXhhfhVJwEpEg==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz",
"integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/helper-remap-async-to-generator": "^7.25.7",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/traverse": "^7.25.7"
},
"engines": {
@@ -1243,15 +1038,14 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.7.tgz",
"integrity": "sha512-rvUUtoVlkDWtDWxGAiiQj0aNktTPn3eFynBcMC2IhsXweehwgdI9ODe+XjWw515kEmv22sSOTp/rxIRuTiB7zg==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz",
"integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.25.7",
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1375,14 +1169,13 @@
}
},
"node_modules/@babel/plugin-transform-dynamic-import": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.7.tgz",
"integrity": "sha512-UvcLuual4h7/GfylKm2IAA3aph9rwvAM2XBA0uPKU3lca+Maai4jBjjEVUS568ld6kJcgbouuumCBhMd/Yz17w==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz",
"integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1409,14 +1202,13 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.7.tgz",
"integrity": "sha512-h3MDAP5l34NQkkNulsTNyjdaR+OiB0Im67VU//sFupouP8Q6m9Spy7l66DcaAQxtmCqGdanPByLsnwFttxKISQ==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz",
"integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1461,14 +1253,13 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.7.tgz",
"integrity": "sha512-Ot43PrL9TEAiCe8C/2erAjXMeVSnE/BLEx6eyrKLNFCCw5jvhTHKyHxdI1pA0kz5njZRYAnMO2KObGqOCRDYSA==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz",
"integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-json-strings": "^7.8.3"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1494,14 +1285,13 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.7.tgz",
"integrity": "sha512-iImzbA55BjiovLyG2bggWS+V+OLkaBorNvc/yJoeeDQGztknRnDdYfp2d/UPmunZYEnZi6Lg8QcTmNMHOB0lGA==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz",
"integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1631,14 +1421,13 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.7.tgz",
"integrity": "sha512-FbuJ63/4LEL32mIxrxwYaqjJxpbzxPVQj5a+Ebrc8JICV6YX8nE53jY+K0RZT3um56GoNWgkS2BQ/uLGTjtwfw==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz",
"integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1648,14 +1437,13 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.7.tgz",
"integrity": "sha512-8CbutzSSh4hmD+jJHIA8vdTNk15kAzOnFLVVgBSMGr28rt85ouT01/rezMecks9pkU939wDInImwCKv4ahU4IA==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz",
"integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1665,15 +1453,14 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.7.tgz",
"integrity": "sha512-1JdVKPhD7Y5PvgfFy0Mv2brdrolzpzSoUq2pr6xsR+m+3viGGeHEokFKsCgOkbeFOQxfB1Vt2F0cPJLRpFI4Zg==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz",
"integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-compilation-targets": "^7.25.7",
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.25.7"
},
"engines": {
@@ -1701,14 +1488,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.7.tgz",
"integrity": "sha512-m9obYBA39mDPN7lJzD5WkGGb0GO54PPLXsbcnj1Hyeu8mSRz7Gb4b1A6zxNX32ZuUySDK4G6it8SDFWD1nCnqg==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz",
"integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1718,15 +1504,14 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.7.tgz",
"integrity": "sha512-h39agClImgPWg4H8mYVAbD1qP9vClFbEjqoJmt87Zen8pjqK8FTPUwrOXAvqu5soytwxrLMd2fx2KSCp2CHcNg==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz",
"integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.7",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1769,16 +1554,15 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.7.tgz",
"integrity": "sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz",
"integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.25.7",
"@babel/helper-create-class-features-plugin": "^7.25.7",
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
"@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1985,13 +1769,13 @@
}
},
"node_modules/@babel/preset-env": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz",
"integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz",
"integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.25.7",
"@babel/compat-data": "^7.25.8",
"@babel/helper-compilation-targets": "^7.25.7",
"@babel/helper-plugin-utils": "^7.25.7",
"@babel/helper-validator-option": "^7.25.7",
@@ -2001,45 +1785,30 @@
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7",
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
"@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-import-assertions": "^7.25.7",
"@babel/plugin-syntax-import-attributes": "^7.25.7",
"@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
"@babel/plugin-syntax-numeric-separator": "^7.10.4",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
"@babel/plugin-transform-arrow-functions": "^7.25.7",
"@babel/plugin-transform-async-generator-functions": "^7.25.7",
"@babel/plugin-transform-async-generator-functions": "^7.25.8",
"@babel/plugin-transform-async-to-generator": "^7.25.7",
"@babel/plugin-transform-block-scoped-functions": "^7.25.7",
"@babel/plugin-transform-block-scoping": "^7.25.7",
"@babel/plugin-transform-class-properties": "^7.25.7",
"@babel/plugin-transform-class-static-block": "^7.25.7",
"@babel/plugin-transform-class-static-block": "^7.25.8",
"@babel/plugin-transform-classes": "^7.25.7",
"@babel/plugin-transform-computed-properties": "^7.25.7",
"@babel/plugin-transform-destructuring": "^7.25.7",
"@babel/plugin-transform-dotall-regex": "^7.25.7",
"@babel/plugin-transform-duplicate-keys": "^7.25.7",
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7",
"@babel/plugin-transform-dynamic-import": "^7.25.7",
"@babel/plugin-transform-dynamic-import": "^7.25.8",
"@babel/plugin-transform-exponentiation-operator": "^7.25.7",
"@babel/plugin-transform-export-namespace-from": "^7.25.7",
"@babel/plugin-transform-export-namespace-from": "^7.25.8",
"@babel/plugin-transform-for-of": "^7.25.7",
"@babel/plugin-transform-function-name": "^7.25.7",
"@babel/plugin-transform-json-strings": "^7.25.7",
"@babel/plugin-transform-json-strings": "^7.25.8",
"@babel/plugin-transform-literals": "^7.25.7",
"@babel/plugin-transform-logical-assignment-operators": "^7.25.7",
"@babel/plugin-transform-logical-assignment-operators": "^7.25.8",
"@babel/plugin-transform-member-expression-literals": "^7.25.7",
"@babel/plugin-transform-modules-amd": "^7.25.7",
"@babel/plugin-transform-modules-commonjs": "^7.25.7",
@@ -2047,15 +1816,15 @@
"@babel/plugin-transform-modules-umd": "^7.25.7",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7",
"@babel/plugin-transform-new-target": "^7.25.7",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7",
"@babel/plugin-transform-numeric-separator": "^7.25.7",
"@babel/plugin-transform-object-rest-spread": "^7.25.7",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8",
"@babel/plugin-transform-numeric-separator": "^7.25.8",
"@babel/plugin-transform-object-rest-spread": "^7.25.8",
"@babel/plugin-transform-object-super": "^7.25.7",
"@babel/plugin-transform-optional-catch-binding": "^7.25.7",
"@babel/plugin-transform-optional-chaining": "^7.25.7",
"@babel/plugin-transform-optional-catch-binding": "^7.25.8",
"@babel/plugin-transform-optional-chaining": "^7.25.8",
"@babel/plugin-transform-parameters": "^7.25.7",
"@babel/plugin-transform-private-methods": "^7.25.7",
"@babel/plugin-transform-private-property-in-object": "^7.25.7",
"@babel/plugin-transform-private-property-in-object": "^7.25.8",
"@babel/plugin-transform-property-literals": "^7.25.7",
"@babel/plugin-transform-regenerator": "^7.25.7",
"@babel/plugin-transform-reserved-words": "^7.25.7",
@@ -2155,9 +1924,9 @@
}
},
"node_modules/@babel/types": {
"version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz",
"integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==",
"version": "7.25.8",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz",
"integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2917,6 +2686,292 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/@parcel/watcher": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
"integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
"dev": true,
"license": "MIT",
"dependencies": {
"detect-libc": "^1.0.3",
"is-glob": "^4.0.3",
"micromatch": "^4.0.5",
"node-addon-api": "^7.0.0"
},
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"@parcel/watcher-android-arm64": "2.4.1",
"@parcel/watcher-darwin-arm64": "2.4.1",
"@parcel/watcher-darwin-x64": "2.4.1",
"@parcel/watcher-freebsd-x64": "2.4.1",
"@parcel/watcher-linux-arm-glibc": "2.4.1",
"@parcel/watcher-linux-arm64-glibc": "2.4.1",
"@parcel/watcher-linux-arm64-musl": "2.4.1",
"@parcel/watcher-linux-x64-glibc": "2.4.1",
"@parcel/watcher-linux-x64-musl": "2.4.1",
"@parcel/watcher-win32-arm64": "2.4.1",
"@parcel/watcher-win32-ia32": "2.4.1",
"@parcel/watcher-win32-x64": "2.4.1"
}
},
"node_modules/@parcel/watcher-android-arm64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
"integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-darwin-arm64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
"integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-darwin-x64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
"integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-freebsd-x64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
"integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-glibc": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
"integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm64-glibc": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
"integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm64-musl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
"integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-x64-glibc": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
"integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-x64-musl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
"integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-arm64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
"integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-ia32": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
"integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-x64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
"integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -3648,9 +3703,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "20.16.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz",
"integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==",
"version": "20.16.11",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz",
"integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5908,6 +5963,19 @@
"dev": true,
"license": "MIT"
},
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"detect-libc": "bin/detect-libc.js"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -10042,6 +10110,13 @@
"node": ">= 0.6"
}
},
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"dev": true,
"license": "MIT"
},
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -13511,12 +13586,13 @@
"license": "MIT"
},
"node_modules/sass": {
"version": "1.79.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz",
"integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==",
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz",
"integrity": "sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@parcel/watcher": "^2.4.1",
"chokidar": "^4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
@@ -14681,9 +14757,9 @@
}
},
"node_modules/typescript": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
"integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
+5 -5
View File
@@ -19,15 +19,15 @@
},
"devDependencies": {
"@antfu/eslint-config": "^2.27.3",
"@babel/core": "^7.25.7",
"@babel/preset-env": "^7.25.7",
"@babel/core": "^7.25.8",
"@babel/preset-env": "^7.25.8",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^25.0.8",
"@rollup/plugin-eslint": "^9.0.5",
"@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-typescript": "^11.1.6",
"@types/node": "^20.16.10",
"@types/node": "^20.16.11",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"all-contributors-cli": "^6.26.1",
@@ -51,9 +51,9 @@
"rollup-plugin-filesize": "^10.0.0",
"rollup-plugin-postcss": "^4.0.2",
"rollup-plugin-progress": "^1.1.2",
"sass": "^1.79.4",
"sass": "^1.79.5",
"ts-node": "^10.9.2",
"tslib": "^2.7.0",
"typescript": "^5.6.2"
"typescript": "^5.6.3"
}
}
+130 -13
View File
@@ -4,10 +4,110 @@ declare(strict_types=1);
namespace Flasher\Noty\Prime;
use Flasher\Prime\Notification\Envelope;
use Flasher\Prime\Notification\NotificationBuilder;
/**
* @phpstan-type NotificationType "success"|"info"|"warning"|"error"|"alert"|"information"
* @phpstan-type OptionsType array{
* layout?: "top"|"topLeft"|"topCenter"|"topRight"|"center"|"centerLeft"|"centerRight"|"bottom"|"bottomLeft"|"bottomCenter"|"bottomRight",
* theme?: "relax"|"mint"|"metroui",
* timeout?: false|int,
* progressBar?: bool,
* closeWith?: string[],
* animation?: array{
* open?: string|null,
* close?: string|null,
* },
* sounds?: array{
* sources?: string[],
* volume?: int,
* conditions?: string[],
* },
* docTitle?: array{
* conditions?: string[],
* },
* modal?: bool,
* id?: bool|string,
* force?: bool,
* queue?: string,
* killer?: bool|string,
* container?: false|string,
* buttons?: string[],
* visibilityControl?: bool,
* }
*/
final class NotyBuilder extends NotificationBuilder
{
/**
* @phpstan-param NotificationType $type
*/
public function type(string $type): static
{
return parent::type($type);
}
/**
* @param OptionsType $options
*/
public function success(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::success($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function error(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::error($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function info(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::info($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function warning(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::warning($message, $options, $title);
}
/**
* @phpstan-param NotificationType $type
* @phpstan-param OptionsType $options
*/
public function flash(?string $type = null, ?string $message = null, array $options = [], ?string $title = null): Envelope
{
return parent::flash($type, $message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function options(array $options, bool $append = true): static
{
return parent::options($options, $append);
}
/**
* @template T of OptionsType
* @template K of key-of<T>
*
* @phpstan-param K $name
* @phpstan-param T[K] $value
*/
public function option(string $name, mixed $value): static
{
return parent::option($name, $value);
}
/**
* This string can contain HTML too. But be careful and don't pass user inputs to this parameter.
*/
@@ -17,7 +117,7 @@ final class NotyBuilder extends NotificationBuilder
}
/**
* @param array<string, mixed> $options
* @param OptionsType $options
*/
public function alert(?string $message = null, ?string $title = null, array $options = []): self
{
@@ -39,7 +139,7 @@ final class NotyBuilder extends NotificationBuilder
}
/**
* @param "top"|"topLeft"|"topCenter"|"topRight"|"center"|"centerLeft"|"centerRight"|"bottom"|"bottomLeft"|"bottomCenter"|"bottomRight" $layout
* @phpstan-param OptionsType['layout'] $layout
*
* - ClassName generator uses this value noty_layout__${layout}
*/
@@ -51,7 +151,7 @@ final class NotyBuilder extends NotificationBuilder
}
/**
* @param "relax"|"mint"|"metroui" $theme
* @phpstan-param OptionsType['theme'] $theme
*
* ClassName generator uses this value noty_theme__${theme}
*/
@@ -65,7 +165,7 @@ final class NotyBuilder extends NotificationBuilder
/**
* false, 1000, 3000, 3500, etc. Delay for closing event in milliseconds (ms). Set 'false' for sticky notifications.
*/
public function timeout(bool|int $timeout): self
public function timeout(false|int $timeout): self
{
$this->option('timeout', $timeout);
@@ -95,35 +195,52 @@ final class NotyBuilder extends NotificationBuilder
}
/**
* @param "open"|"close" $animation
* @param "open"|"close" $option
* @param "noty_effects_open"|"noty_effects_close"|string $effect
*
* If string, assumed to be CSS class name. If null, no animation at all. If function, runs the function. (v3.0.1+)
* You can use animate.css class names or your custom css animations as well.
*/
public function animation(string $animation, string $effect): self
public function animation(string $option, string $effect): self
{
$this->option('animation.'.$animation, $effect);
/** @phpstan-var OptionsType['animation'] $animation */
$animation = $this->getEnvelope()->getOption('animation', []);
$animation[$option] = $effect;
$this->option('animation', $animation);
return $this;
}
/**
* @param "sources"|"volume"|"conditions" $option
* @phpstan-param "sources"|"volume"|"conditions" $option
* @phpstan-param ($option is "sources" ? string[] :
* ($option is "volume" ? int :
* ($option is "conditions" ? string[] :
* mixed))) $value
*/
public function sounds(string $option, mixed $value): self
{
$this->option('sounds.'.$option, $value);
/** @phpstan-var OptionsType['sounds'] $sounds */
$sounds = $this->getEnvelope()->getOption('sounds', []);
$sounds[$option] = $value;
$this->option('sounds', $sounds); // @phpstan-ignore-line
return $this;
}
/**
* @param "conditions"|string $option
* @phpstan-param "conditions"|string $option
* @phpstan-param ($option is "conditions" ? string[] : mixed) $value
*/
public function docTitle(string $option, string $docTitle): self
public function docTitle(string $option, mixed $value): self
{
$this->option('docTitle'.$option, $docTitle);
/** @phpstan-var OptionsType['docTitle'] $docTitle */
$docTitle = $this->getEnvelope()->getOption('docTitle', []);
$docTitle[$option] = $value;
$this->option('docTitle', $docTitle); // @phpstan-ignore-line
return $this;
}
@@ -176,7 +293,7 @@ final class NotyBuilder extends NotificationBuilder
/**
* Custom container selector string. Like '.my-custom-container'. Layout parameter will be ignored.
*/
public function container(bool|string $container): self
public function container(false|string $container): self
{
$this->option('container', $container);
+30 -4
View File
@@ -16,10 +16,36 @@ if (!\function_exists('Flasher\Noty\Prime\noty')) {
* When called with no arguments, it returns an instance of NotyInterface.
* When called with arguments, it creates a Noty notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Noty notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error"|"alert"|"information" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* layout?: "top"|"topLeft"|"topCenter"|"topRight"|"center"|"centerLeft"|"centerRight"|"bottom"|"bottomLeft"|"bottomCenter"|"bottomRight",
* theme?: "relax"|"mint"|"metroui",
* timeout?: false|int,
* progressBar?: bool,
* closeWith?: string[],
* animation?: array{
* open?: string|null,
* close?: string|null,
* },
* sounds?: array{
* sources?: string[],
* volume?: int,
* conditions?: string[],
* },
* docTitle?: array{
* conditions?: string[],
* },
* modal?: bool,
* id?: bool|string,
* force?: bool,
* queue?: string,
* killer?: bool|string,
* container?: false|string,
* buttons?: string[],
* visibilityControl?: bool,
* } $options additional options for the Noty notification
* @param string|null $title the title of the notification
*
* @return Envelope|NotyInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of NotyInterface when no arguments are provided.
+30 -4
View File
@@ -15,10 +15,36 @@ if (!function_exists('noty')) {
* When called with no arguments, it returns an instance of NotyInterface.
* When called with arguments, it creates a Noty notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Noty notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error"|"alert"|"information" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* layout?: "top"|"topLeft"|"topCenter"|"topRight"|"center"|"centerLeft"|"centerRight"|"bottom"|"bottomLeft"|"bottomCenter"|"bottomRight",
* theme?: "relax"|"mint"|"metroui",
* timeout?: false|int,
* progressBar?: bool,
* closeWith?: string[],
* animation?: array{
* open?: string|null,
* close?: string|null,
* },
* sounds?: array{
* sources?: string[],
* volume?: int,
* conditions?: string[],
* },
* docTitle?: array{
* conditions?: string[],
* },
* modal?: bool,
* id?: bool|string,
* force?: bool,
* queue?: string,
* killer?: bool|string,
* container?: false|string,
* buttons?: string[],
* visibilityControl?: bool,
* } $options additional options for the Noty notification
* @param string|null $title the title of the notification
*
* @return Envelope|NotyInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of NotyInterface when no arguments are provided.
+13
View File
@@ -6,6 +6,19 @@ namespace Flasher\Notyf\Prime;
use Flasher\Prime\Notification\NotificationBuilder;
/**
* @phpstan-type NotificationType "success"|"info"|"warning"|"error"
* @phpstan-type OptionsType array{
* duration?: int,
* ripple?: bool,
* position?: array{
* x: "left"|"center"|"right",
* y: "top"|"center"|"bottom",
* },
* dismissible?: bool,
* background?: string,
* }
*/
final class NotyfBuilder extends NotificationBuilder
{
/**
+13 -4
View File
@@ -16,10 +16,19 @@ if (!\function_exists('Flasher\Notyf\Prime\notyf')) {
* When called with no arguments, it returns an instance of NotyfInterface.
* When called with arguments, it creates a Notyf notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Notyf notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* duration?: int,
* ripple?: bool,
* position?: array{
* x: "left"|"center"|"right",
* y: "top"|"center"|"bottom",
* },
* dismissible?: bool,
* background?: string,
* } $options additional options for the Notyf notification
* @param string|null $title the title of the notification
*
* @return Envelope|NotyfInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of NotyfInterface when no arguments are provided.
+13 -4
View File
@@ -15,10 +15,19 @@ if (!function_exists('notyf')) {
* When called with no arguments, it returns an instance of NotyfInterface.
* When called with arguments, it creates a Notyf notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Notyf notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* duration?: int,
* ripple?: bool,
* position?: array{
* x: "left"|"center"|"right",
* y: "top"|"center"|"bottom",
* },
* dismissible?: bool,
* background?: string,
* } $options additional options for the Notyf notification
* @param string|null $title the title of the notification
*
* @return Envelope|NotyfInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of NotyfInterface when no arguments are provided.
+1
View File
@@ -20,3 +20,4 @@ expectedReturnValues(\Flasher\Prime\Notification\NotificationInterface::getType(
expectedArguments(\Flasher\Prime\Notification\NotificationBuilderInterface::handler(), 0, 'flasher', 'toastr', 'noty', 'notyf', 'sweetalert');
expectedArguments(\Flasher\Prime\FlasherInterface::render(), 0, 'html', 'json', 'array');
expectedArguments(\Flasher\Prime\Notification\FlasherBuilder::option(), 0, 'timeout', 'timeouts', 'fps', 'position', 'direction', 'rtl', 'style', 'escapeHtml');
+1 -1
View File
@@ -8,7 +8,7 @@ use Flasher\Prime\Factory\NotificationFactoryInterface;
use Flasher\Prime\Response\Presenter\ArrayPresenter;
/**
* @mixin \Flasher\Prime\Notification\FlasherBuilder
* @mixin \Flasher\Prime\Notification\NotificationBuilder
*
* @phpstan-import-type ArrayPresenterType from ArrayPresenter
*/
+4 -1
View File
@@ -103,7 +103,10 @@ final class Envelope implements NotificationInterface
*/
public function get(string $type): ?StampInterface
{
return $this->stamps[$type] ?? null; // @phpstan-ignore-line
/** @var T|null $stamp */
$stamp = $this->stamps[$type] ?? null;
return $stamp;
}
/**
+88
View File
@@ -4,8 +4,90 @@ declare(strict_types=1);
namespace Flasher\Prime\Notification;
/**
* @phpstan-type NotificationType "success"|"info"|"warning"|"error"
* @phpstan-type OptionsType array{
* timeout?: int,
* timeouts?: array<string, int>,
* fps?: int,
* position?: "top-right"|"top-left"|"top-center"|"bottom-right"|"bottom-left"|"bottom-center",
* direction?: "top"|"bottom",
* rtl?: bool,
* style?: array<string, mixed>,
* escapeHtml?: bool,
* }
*/
final class FlasherBuilder extends NotificationBuilder
{
/**
* @phpstan-param NotificationType $type
*/
public function type(string $type): static
{
return parent::type($type);
}
/**
* @param OptionsType $options
*/
public function success(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::success($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function error(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::error($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function info(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::info($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function warning(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::warning($message, $options, $title);
}
/**
* @phpstan-param NotificationType $type
* @phpstan-param OptionsType $options
*/
public function flash(?string $type = null, ?string $message = null, array $options = [], ?string $title = null): Envelope
{
return parent::flash($type, $message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function options(array $options, bool $append = true): static
{
return parent::options($options, $append);
}
/**
* @template T of OptionsType
* @template K of key-of<T>
*
* @phpstan-param K $name
* @phpstan-param T[K] $value
*/
public function option(string $name, mixed $value): static
{
return parent::option($name, $value);
}
public function timeout(int $milliseconds): self
{
$this->option('timeout', $milliseconds);
@@ -13,6 +95,9 @@ final class FlasherBuilder extends NotificationBuilder
return $this;
}
/**
* @param "top"|"bottom" $direction
*/
public function direction(string $direction): self
{
$this->option('direction', $direction);
@@ -20,6 +105,9 @@ final class FlasherBuilder extends NotificationBuilder
return $this;
}
/**
* @phpstan-param OptionsType['position'] $position
*/
public function position(string $position): self
{
$this->option('position', $position);
+149 -6
View File
@@ -7,8 +7,150 @@ namespace Flasher\SweetAlert\Prime;
use Flasher\Prime\Notification\Envelope;
use Flasher\Prime\Notification\NotificationBuilder;
/**
* @phpstan-type NotificationType "success"|"info"|"warning"|"error"|"question"
* @phpstan-type CustomClassType "container"|"popup"|"header"|"title"|"closeButton"|"icon"|"image"|"content"|"input"|"inputLabel"|"validationMessage"|"actions"|"confirmButton"|"denyButton"|"cancelButton"|"loader"|"footer"
* @phpstan-type OptionsType array{
* title?: string,
* titleText?: string,
* html?: string,
* text?: string,
* icon?: string,
* iconColor?: string,
* iconHtml?: string,
* showClass?: mixed,
* hideClass?: mixed,
* footer?: string,
* backdrop?: bool|string,
* toast?: bool,
* target?: string,
* input?: "text"|"email"|"password"|"number"|"tel"|"range"|"textarea"|"search"|"url"|"select"|"radio"|"checkbox"|"file"|"date"|"datetime-local"|"time"|"week"|"month",
* width?: string,
* padding?: string,
* background?: string,
* position?: "top"|"top-start"|"top-end"|"center"|"center-start"|"center-end"|"bottom"|"bottom-start"|"bottom-end",
* grow?: "column"|"fullscreen"|"row"|false,
* customClass?: array<CustomClassType, string>,
* timer?: int,
* timerProgressBar?: bool,
* heightAuto?: bool,
* allowOutsideClick?: bool|string,
* allowEscapeKey?: bool|string,
* allowEnterKey?: bool|string,
* stopKeydownPropagation?: bool,
* keydownListenerCapture?: bool,
* showConfirmButton?: bool,
* showDenyButton?: bool,
* showCancelButton?: bool,
* confirmButtonText?: string,
* denyButtonText?: string,
* cancelButtonText?: string,
* confirmButtonColor?: string,
* denyButtonColor?: string,
* cancelButtonColor?: string,
* confirmButtonAriaLabel?: string,
* denyButtonAriaLabel?: string,
* cancelButtonAriaLabel?: string,
* buttonsStyling?: bool,
* reverseButtons?: bool,
* focusConfirm?: bool,
* focusDeny?: bool,
* focusCancel?: bool,
* showCloseButton?: bool,
* closeButtonHtml?: string,
* closeButtonAriaLabel?: string,
* loaderHtml?: string,
* showLoaderOnConfirm?: bool,
* scrollbarPadding?: bool,
* preConfirm?: bool|string,
* preDeny?: string,
* returnInputValueOnDeny?: bool,
* animation?: bool,
* imageUrl?: string,
* imageWidth?: int,
* imageHeight?: int,
* imageAlt?: string,
* inputLabel?: string,
* inputPlaceholder?: string,
* inputValue?: string,
* inputOptions?: string,
* inputAutoTrim?: bool,
* inputAttributes?: string,
* inputValidator?: string,
* validationMessage?: string,
* }
*/
final class SweetAlertBuilder extends NotificationBuilder
{
/**
* @phpstan-param NotificationType $type
*/
public function type(string $type): static
{
return parent::type($type);
}
/**
* @param OptionsType $options
*/
public function success(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::success($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function error(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::error($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function info(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::info($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function warning(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::warning($message, $options, $title);
}
/**
* @phpstan-param NotificationType $type
* @phpstan-param OptionsType $options
*/
public function flash(?string $type = null, ?string $message = null, array $options = [], ?string $title = null): Envelope
{
return parent::flash($type, $message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function options(array $options, bool $append = true): static
{
return parent::options($options, $append);
}
/**
* @template T of OptionsType
* @template K of key-of<T>
*
* @phpstan-param K $name
* @phpstan-param T[K] $value
*/
public function option(string $name, mixed $value): static
{
return parent::option($name, $value);
}
/**
* Display a question typed alert message.
*
@@ -190,7 +332,7 @@ final class SweetAlertBuilder extends NotificationBuilder
}
/**
* @param "text"|"email"|"password"|"number"|"tel"|"range"|"textarea"|"search"|"url"|"select"|"radio"|"checkbox"|"file"|"date"|"datetime-local"|"time"|"week"|"month" $input
* @phpstan-param OptionsType['input'] $input
*
* Input field type, can be text, email, password, number, tel, range, textarea, select, radio, checkbox, file and
* url
@@ -233,7 +375,7 @@ final class SweetAlertBuilder extends NotificationBuilder
}
/**
* @param "top"|"top-start"|"top-end"|"center"|"center-start"|"center-end"|"bottom"|"bottom-start"|"bottom-end" $position
* @phpstan-param OptionsType['position'] $position
*
* Popup window position, can be 'top', 'top-start', 'top-end', 'center', 'center-start', 'center-end', 'bottom',
* 'bottom-start', or 'bottom-end'
@@ -246,12 +388,12 @@ final class SweetAlertBuilder extends NotificationBuilder
}
/**
* @param "row"|"column"|"fullscreen"|false $grow
* @phpstan-param "column"|"fullscreen"|"row"|false $grow
*
* Paired with window position, sets the direction the popup should grow in, can be set to 'row', 'column',
* 'fullscreen', or false
*/
public function grow(bool|string $grow): self
public function grow(string|false $grow): self
{
$this->option('grow', $grow);
@@ -259,14 +401,15 @@ final class SweetAlertBuilder extends NotificationBuilder
}
/**
* @param "container"|"popup"|"header"|"title"|"closeButton"|"icon"|"image"|"content"|"input"|"inputLabel"|"validationMessage"|"actions"|"confirmButton"|"denyButton"|"cancelButton"|"loader"|"footer" $customClass
* @phpstan-param CustomClassType $customClass
*
* A custom CSS class for the popup
*/
public function customClass(string $customClass, string $value): self
{
/** @var OptionsType['customClass'] $option */
$option = $this->getEnvelope()->getOption('customClass', []);
$option[$customClass] = $value; // @phpstan-ignore-line
$option[$customClass] = $value;
$this->option('customClass', $option);
+72 -4
View File
@@ -16,10 +16,78 @@ if (!\function_exists('Flasher\SweetAlert\Prime\sweetalert')) {
* When called with no arguments, it returns an instance of SweetAlertInterface.
* When called with arguments, it creates a Sweetalert notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Sweetalert notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error"|"question" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* title?: string,
* titleText?: string,
* html?: string,
* text?: string,
* icon?: string,
* iconColor?: string,
* iconHtml?: string,
* showClass?: mixed,
* hideClass?: mixed,
* footer?: string,
* backdrop?: bool|string,
* toast?: bool,
* target?: string,
* input?: "text"|"email"|"password"|"number"|"tel"|"range"|"textarea"|"search"|"url"|"select"|"radio"|"checkbox"|"file"|"date"|"datetime-local"|"time"|"week"|"month",
* width?: string,
* padding?: string,
* background?: string,
* position?: "top"|"top-start"|"top-end"|"center"|"center-start"|"center-end"|"bottom"|"bottom-start"|"bottom-end",
* grow?: "column"|"fullscreen"|"row"|false,
* customClass?: array<"container"|"popup"|"header"|"title"|"closeButton"|"icon"|"image"|"content"|"input"|"inputLabel"|"validationMessage"|"actions"|"confirmButton"|"denyButton"|"cancelButton"|"loader"|"footer", string>,
* timer?: int,
* timerProgressBar?: bool,
* heightAuto?: bool,
* allowOutsideClick?: bool|string,
* allowEscapeKey?: bool|string,
* allowEnterKey?: bool|string,
* stopKeydownPropagation?: bool,
* keydownListenerCapture?: bool,
* showConfirmButton?: bool,
* showDenyButton?: bool,
* showCancelButton?: bool,
* confirmButtonText?: string,
* denyButtonText?: string,
* cancelButtonText?: string,
* confirmButtonColor?: string,
* denyButtonColor?: string,
* cancelButtonColor?: string,
* confirmButtonAriaLabel?: string,
* denyButtonAriaLabel?: string,
* cancelButtonAriaLabel?: string,
* buttonsStyling?: bool,
* reverseButtons?: bool,
* focusConfirm?: bool,
* focusDeny?: bool,
* focusCancel?: bool,
* showCloseButton?: bool,
* closeButtonHtml?: string,
* closeButtonAriaLabel?: string,
* loaderHtml?: string,
* showLoaderOnConfirm?: bool,
* scrollbarPadding?: bool,
* preConfirm?: bool|string,
* preDeny?: string,
* returnInputValueOnDeny?: bool,
* animation?: bool,
* imageUrl?: string,
* imageWidth?: int,
* imageHeight?: int,
* imageAlt?: string,
* inputLabel?: string,
* inputPlaceholder?: string,
* inputValue?: string,
* inputOptions?: string,
* inputAutoTrim?: bool,
* inputAttributes?: string,
* inputValidator?: string,
* validationMessage?: string,
* } $options additional options for the Sweetalert notification
* @param string|null $title the title of the notification
*
* @return Envelope|SweetAlertInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of SweetAlertInterface when no arguments are provided.
+72 -4
View File
@@ -15,10 +15,78 @@ if (!function_exists('sweetalert')) {
* When called with no arguments, it returns an instance of SweetAlertInterface.
* When called with arguments, it creates a Sweetalert notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Sweetalert notification
* @param string|null $title the title of the notification
* @phpstan-param string|null $message the message content of the notification
* @phpstan-param "success"|"info"|"warning"|"error"|"question" $type The type of the notification (e.g., success, error, warning, info).
* @phpstan-param array{
* title?: string,
* titleText?: string,
* html?: string,
* text?: string,
* icon?: string,
* iconColor?: string,
* iconHtml?: string,
* showClass?: mixed,
* hideClass?: mixed,
* footer?: string,
* backdrop?: bool|string,
* toast?: bool,
* target?: string,
* input?: "text"|"email"|"password"|"number"|"tel"|"range"|"textarea"|"search"|"url"|"select"|"radio"|"checkbox"|"file"|"date"|"datetime-local"|"time"|"week"|"month",
* width?: string,
* padding?: string,
* background?: string,
* position?: "top"|"top-start"|"top-end"|"center"|"center-start"|"center-end"|"bottom"|"bottom-start"|"bottom-end",
* grow?: "column"|"fullscreen"|"row"|false,
* customClass?: array<"container"|"popup"|"header"|"title"|"closeButton"|"icon"|"image"|"content"|"input"|"inputLabel"|"validationMessage"|"actions"|"confirmButton"|"denyButton"|"cancelButton"|"loader"|"footer", string>,
* timer?: int,
* timerProgressBar?: bool,
* heightAuto?: bool,
* allowOutsideClick?: bool|string,
* allowEscapeKey?: bool|string,
* allowEnterKey?: bool|string,
* stopKeydownPropagation?: bool,
* keydownListenerCapture?: bool,
* showConfirmButton?: bool,
* showDenyButton?: bool,
* showCancelButton?: bool,
* confirmButtonText?: string,
* denyButtonText?: string,
* cancelButtonText?: string,
* confirmButtonColor?: string,
* denyButtonColor?: string,
* cancelButtonColor?: string,
* confirmButtonAriaLabel?: string,
* denyButtonAriaLabel?: string,
* cancelButtonAriaLabel?: string,
* buttonsStyling?: bool,
* reverseButtons?: bool,
* focusConfirm?: bool,
* focusDeny?: bool,
* focusCancel?: bool,
* showCloseButton?: bool,
* closeButtonHtml?: string,
* closeButtonAriaLabel?: string,
* loaderHtml?: string,
* showLoaderOnConfirm?: bool,
* scrollbarPadding?: bool,
* preConfirm?: bool|string,
* preDeny?: string,
* returnInputValueOnDeny?: bool,
* animation?: bool,
* imageUrl?: string,
* imageWidth?: int,
* imageHeight?: int,
* imageAlt?: string,
* inputLabel?: string,
* inputPlaceholder?: string,
* inputValue?: string,
* inputOptions?: string,
* inputAutoTrim?: bool,
* inputAttributes?: string,
* inputValidator?: string,
* validationMessage?: string,
* } $options additional options for the Sweetalert notification
* @phpstan-param string|null $title the title of the notification
*
* @return Envelope|SweetAlertInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of SweetAlertInterface when no arguments are provided.
+108 -1
View File
@@ -4,10 +4,117 @@ declare(strict_types=1);
namespace Flasher\Toastr\Prime;
use Flasher\Prime\Notification\Envelope;
use Flasher\Prime\Notification\NotificationBuilder;
/**
* @phpstan-type NotificationType "success"|"info"|"warning"|"error"
* @phpstan-type OptionsType array{
* closeButton?: bool,
* closeClass?: string,
* closeDuration?: int,
* closeEasing?: string,
* closeHtml?: string,
* closeMethod?: string,
* closeOnHover?: bool,
* containerId?: string,
* debug?: bool,
* escapeHtml?: bool,
* extendedTimeOut?: int,
* hideDuration?: int,
* hideEasing?: string,
* hideMethod?: string,
* iconClass?: string,
* messageClass?: string,
* newestOnTop?: bool,
* onHidden?: string,
* onShown?: string,
* positionClass?: "toast-top-right"|"toast-top-center"|"toast-bottom-center"|"toast-top-full-width"|"toast-bottom-full-width"|"toast-top-left"|"toast-bottom-right"|"toast-bottom-left",
* preventDuplicates?: bool,
* progressBar?: bool,
* progressClass?: string,
* rtl?: bool,
* showDuration?: int,
* showEasing?: string,
* showMethod?: string,
* tapToDismiss?: bool,
* target?: string,
* timeOut?: int,
* titleClass?: string,
* toastClass?: string,
* }
*/
final class ToastrBuilder extends NotificationBuilder
{
/**
* @phpstan-param NotificationType $type
*/
public function type(string $type): static
{
return parent::type($type);
}
/**
* @param OptionsType $options
*/
public function success(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::success($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function error(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::error($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function info(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::info($message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function warning(string $message, array $options = [], ?string $title = null): Envelope
{
return parent::warning($message, $options, $title);
}
/**
* @phpstan-param NotificationType $type
* @phpstan-param OptionsType $options
*/
public function flash(?string $type = null, ?string $message = null, array $options = [], ?string $title = null): Envelope
{
return parent::flash($type, $message, $options, $title);
}
/**
* @param OptionsType $options
*/
public function options(array $options, bool $append = true): static
{
return parent::options($options, $append);
}
/**
* @template T of OptionsType
* @template K of key-of<T>
*
* @phpstan-param K $name
* @phpstan-param T[K] $value
*/
public function option(string $name, mixed $value): static
{
return parent::option($name, $value);
}
/**
* Enable a close button.
*/
@@ -170,7 +277,7 @@ final class ToastrBuilder extends NotificationBuilder
}
/**
* @param "toast-top-right"|"toast-top-center"|"toast-bottom-center"|"toast-top-full-width"|"toast-bottom-full-width"|"toast-top-left"|"toast-bottom-right"|"toast-bottom-left" $positionClass
* @phpstan-param OptionsType['positionClass'] $positionClass
*/
public function positionClass(string $positionClass): self
{
+37 -4
View File
@@ -16,10 +16,43 @@ if (!\function_exists('Flasher\Toastr\Prime\toastr')) {
* When called with no arguments, it returns an instance of ToastrInterface.
* When called with arguments, it creates a Toastr notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Toastr notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* closeButton?: bool,
* closeClass?: string,
* closeDuration?: int,
* closeEasing?: string,
* closeHtml?: string,
* closeMethod?: string,
* closeOnHover?: bool,
* containerId?: string,
* debug?: bool,
* escapeHtml?: bool,
* extendedTimeOut?: int,
* hideDuration?: int,
* hideEasing?: string,
* hideMethod?: string,
* iconClass?: string,
* messageClass?: string,
* newestOnTop?: bool,
* onHidden?: string,
* onShown?: string,
* positionClass?: "toast-top-right"|"toast-top-center"|"toast-bottom-center"|"toast-top-full-width"|"toast-bottom-full-width"|"toast-top-left"|"toast-bottom-right"|"toast-bottom-left",
* preventDuplicates?: bool,
* progressBar?: bool,
* progressClass?: string,
* rtl?: bool,
* showDuration?: int,
* showEasing?: string,
* showMethod?: string,
* tapToDismiss?: bool,
* target?: string,
* timeOut?: int,
* titleClass?: string,
* toastClass?: string,
* } $options additional options for the Toastr notification
* @param string|null $title the title of the notification
*
* @return Envelope|ToastrInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of ToastrInterface when no arguments are provided.
+37 -4
View File
@@ -15,10 +15,43 @@ if (!function_exists('toastr')) {
* When called with no arguments, it returns an instance of ToastrInterface.
* When called with arguments, it creates a Toastr notification and returns an Envelope.
*
* @param string|null $message the message content of the notification
* @param string $type The type of the notification (e.g., success, error, warning, info).
* @param array<string, mixed> $options additional options for the Toastr notification
* @param string|null $title the title of the notification
* @param string|null $message the message content of the notification
* @param "success"|"info"|"warning"|"error" $type The type of the notification (e.g., success, error, warning, info).
* @param array{
* closeButton?: bool,
* closeClass?: string,
* closeDuration?: int,
* closeEasing?: string,
* closeHtml?: string,
* closeMethod?: string,
* closeOnHover?: bool,
* containerId?: string,
* debug?: bool,
* escapeHtml?: bool,
* extendedTimeOut?: int,
* hideDuration?: int,
* hideEasing?: string,
* hideMethod?: string,
* iconClass?: string,
* messageClass?: string,
* newestOnTop?: bool,
* onHidden?: string,
* onShown?: string,
* positionClass?: "toast-top-right"|"toast-top-center"|"toast-bottom-center"|"toast-top-full-width"|"toast-bottom-full-width"|"toast-top-left"|"toast-bottom-right"|"toast-bottom-left",
* preventDuplicates?: bool,
* progressBar?: bool,
* progressClass?: string,
* rtl?: bool,
* showDuration?: int,
* showEasing?: string,
* showMethod?: string,
* tapToDismiss?: bool,
* target?: string,
* timeOut?: int,
* titleClass?: string,
* toastClass?: string,
* } $options additional options for the Toastr notification
* @param string|null $title the title of the notification
*
* @return Envelope|ToastrInterface Returns an Envelope containing the notification details when arguments are provided.
* Returns an instance of ToastrInterface when no arguments are provided.
+4 -4
View File
@@ -99,17 +99,17 @@ final class NotyBuilderTest extends TestCase
$envelope = $this->notyBuilder->getEnvelope();
$options = $envelope->getNotification()->getOptions();
$this->assertSame(['animation.open' => 'fadeIn'], $options);
$this->assertSame(['animation' => ['open' => 'fadeIn']], $options);
}
public function testSounds(): void
{
$this->notyBuilder->sounds('sources', 'sound.mp3');
$this->notyBuilder->sounds('sources', ['sound.mp3']);
$envelope = $this->notyBuilder->getEnvelope();
$options = $envelope->getNotification()->getOptions();
$this->assertSame(['sounds.sources' => 'sound.mp3'], $options);
$this->assertSame(['sounds' => ['sources' => ['sound.mp3']]], $options);
}
public function testDocTitle(): void
@@ -119,7 +119,7 @@ final class NotyBuilderTest extends TestCase
$envelope = $this->notyBuilder->getEnvelope();
$options = $envelope->getNotification()->getOptions();
$this->assertSame(['docTitleSuccess' => 'Title Changed'], $options);
$this->assertSame(['docTitle' => ['Success' => 'Title Changed']], $options);
}
public function testModal(): void